mt-ui-components-vue3
Version:
玛果添实UI组件库(Vue3)
166 lines • 6.03 kB
JavaScript
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;