import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray"; import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2"; import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; import { createVNode as _createVNode } from "vue"; import _regeneratorRuntime from "@babel/runtime/regenerator"; import { defineComponent, ref, watch } from 'vue'; import Scroll from './scroll'; import { Spin } from '../../../components'; var tableProps = function tableProps() { return { loading: { type: Boolean, default: undefined }, request: { type: Function, default: undefined }, bodyStyle: { type: Object, default: {} }, params: { type: Object, default: function _default() {} }, dataSource: { type: Array, default: function _default() { return []; } }, defaultParams: { type: Object, default: function _default() { return { pageIndex: 0, pageSize: 12 }; } } }; }; var JScrollTable = defineComponent({ name: 'JScrollTable', slots: ['prev'], props: tableProps(), setup: function setup(props, _ref) { var slots = _ref.slots, emit = _ref.emit, expose = _ref.expose; var _dataSource = ref([]); var pageIndex = ref(0); var pageSize = ref(6); var total = ref(0); var _loading = ref(true); var handleSearch = /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_params, isRest) { var _props$defaultParams, resp, obj, _resp$result, _resp$result2, _resp$result3, _resp$result4, _resp$result5, _resp$result6; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _loading.value = props.loading !== undefined ? props.loading : true; if (props.request) { _context.next = 5; break; } _dataSource.value = (props === null || props === void 0 ? void 0 : props.dataSource) || []; _context.next = 9; break; case 5: _context.next = 7; return props.request(_objectSpread(_objectSpread(_objectSpread({ pageIndex: 0, pageSize: 12 }, props.defaultParams), _params), {}, { terms: [].concat(_toConsumableArray(((_props$defaultParams = props.defaultParams) === null || _props$defaultParams === void 0 ? void 0 : _props$defaultParams.terms) || []), _toConsumableArray((_params === null || _params === void 0 ? void 0 : _params.terms) || [])) })); case 7: resp = _context.sent; if (resp.status === 200) { obj = Array.isArray(resp.result) ? resp.result[0] : resp.result; if (obj) { if (isRest) { _dataSource.value = _toConsumableArray(obj.data); pageIndex.value = ((_resp$result = resp.result) === null || _resp$result === void 0 ? void 0 : _resp$result.pageIndex) || 0; pageSize.value = ((_resp$result2 = resp.result) === null || _resp$result2 === void 0 ? void 0 : _resp$result2.pageSize) || 6; total.value = ((_resp$result3 = resp.result) === null || _resp$result3 === void 0 ? void 0 : _resp$result3.total) || 0; } else { _dataSource.value = [].concat(_toConsumableArray(_dataSource.value), _toConsumableArray(obj.data)); pageIndex.value = ((_resp$result4 = resp.result) === null || _resp$result4 === void 0 ? void 0 : _resp$result4.pageIndex) || 0; pageSize.value = ((_resp$result5 = resp.result) === null || _resp$result5 === void 0 ? void 0 : _resp$result5.pageSize) || 6; total.value = ((_resp$result6 = resp.result) === null || _resp$result6 === void 0 ? void 0 : _resp$result6.total) || 0; } } } else { _dataSource.value = []; } case 9: _loading.value = props.loading !== undefined ? props.loading : false; case 10: case "end": return _context.stop(); } }, _callee); })); return function handleSearch(_x, _x2) { return _ref2.apply(this, arguments); }; }(); watch(function () { return props.params; }, function (newValue) { handleSearch(newValue, true); }, { deep: true, immediate: true }); watch(function () { return props.dataSource; }, function () { if (props.dataSource && !props.request) { handleSearch(props.params); } }, { deep: true, immediate: true }); var onReachBottom = function onReachBottom(scrollTop) { if (total.value > _dataSource.value.length) { pageIndex.value += 1; handleSearch(_objectSpread(_objectSpread({}, props.params), {}, { pageIndex: pageIndex.value })); } }; /** * 刷新数据 * @param _params */ var reload = function reload(_params) { handleSearch(_objectSpread(_objectSpread({}, _params), {}, { pageSize: 12, pageIndex: 0 }), true); }; return function () { return _createVNode(Spin, { "spinning": _loading.value }, { default: function _default() { return [_createVNode(Scroll, _objectSpread(_objectSpread({}, props), {}, { "total": total.value, "dataSource": _dataSource.value, "onReachBottom": onReachBottom }), { default: function _default() { return [_objectSpread({}, slots)]; } })]; } }); }; } }); export default JScrollTable;