vxe-table-select-area
Version:
一个基于 vxe-table 的可区域选中复制、粘贴的组件
1,243 lines (1,242 loc) • 47.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _table = _interopRequireDefault(require("../../table"));
var _xeUtils = _interopRequireDefault(require("xe-utils"));
var _conf = _interopRequireDefault(require("../../v-x-e-table/src/conf"));
var _size = _interopRequireDefault(require("../../mixins/size"));
var _vXETable = _interopRequireDefault(require("../../v-x-e-table"));
var _utils = _interopRequireWildcard(require("../../tools/utils"));
var _dom = _interopRequireWildcard(require("../../tools/dom"));
var _event = require("../../tools/event");
var _log = require("../../tools/log");
var _vn = require("../../tools/vn");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var methods = {};
var propKeys = Object.keys(_table["default"].props);
function renderDefaultForm(h, _vm) {
var $scopedSlots = _vm.$scopedSlots,
proxyConfig = _vm.proxyConfig,
proxyOpts = _vm.proxyOpts,
formData = _vm.formData,
formConfig = _vm.formConfig,
formOpts = _vm.formOpts;
if ((0, _utils.isEnableConf)(formConfig) && formOpts.items && formOpts.items.length) {
var formSlots = {};
if (!formOpts.inited) {
formOpts.inited = true;
var beforeItem = proxyOpts.beforeItem;
if (proxyOpts && beforeItem) {
formOpts.items.forEach(function (item) {
beforeItem.call(_vm, {
$grid: _vm,
item: item
});
});
}
}
// 处理插槽
formOpts.items.forEach(function (item) {
_xeUtils["default"].each(item.slots, function (func) {
if (!_xeUtils["default"].isFunction(func)) {
if ($scopedSlots[func]) {
formSlots[func] = $scopedSlots[func];
}
}
});
});
return [h('vxe-form', {
props: Object.assign({}, formOpts, {
data: proxyConfig && proxyOpts.form ? formData : formOpts.data
}),
on: {
submit: _vm.submitEvent,
reset: _vm.resetEvent,
collapse: _vm.collapseEvent,
'submit-invalid': _vm.submitInvalidEvent
},
scopedSlots: formSlots
})];
}
return [];
}
function getFuncSlot(_vm, optSlots, slotKey) {
var $scopedSlots = _vm.$scopedSlots;
var funcSlot = optSlots[slotKey];
if (funcSlot) {
if (_xeUtils["default"].isString(funcSlot)) {
if ($scopedSlots[funcSlot]) {
return $scopedSlots[funcSlot];
} else {
if (process.env.NODE_ENV === 'development') {
(0, _log.errLog)('vxe.error.notSlot', [funcSlot]);
}
}
} else {
return funcSlot;
}
}
return null;
}
function getToolbarSlots(_vm) {
var $scopedSlots = _vm.$scopedSlots,
toolbarOpts = _vm.toolbarOpts;
var toolbarOptSlots = toolbarOpts.slots;
var buttonsSlot;
var toolsSlot;
var slots = {};
if (process.env.NODE_ENV === 'development') {
if ($scopedSlots.buttons && (!toolbarOptSlots || toolbarOptSlots.buttons !== 'buttons')) {
(0, _log.warnLog)('vxe.error.reqProp', ['toolbar-config.slots.buttons']);
}
if ($scopedSlots.tools && (!toolbarOptSlots || toolbarOptSlots.tools !== 'tools')) {
(0, _log.warnLog)('vxe.error.reqProp', ['toolbar-config.slots.tools']);
}
}
if (toolbarOptSlots) {
buttonsSlot = getFuncSlot(_vm, toolbarOptSlots, 'buttons');
toolsSlot = getFuncSlot(_vm, toolbarOptSlots, 'tools');
if (buttonsSlot) {
slots.buttons = buttonsSlot;
}
if (toolsSlot) {
slots.tools = toolsSlot;
}
}
return slots;
}
function getPagerSlots(_vm) {
var pagerOpts = _vm.pagerOpts;
var pagerOptSlots = pagerOpts.slots;
var slots = {};
var leftSlot;
var rightSlot;
if (pagerOptSlots) {
leftSlot = getFuncSlot(_vm, pagerOptSlots, 'left');
rightSlot = getFuncSlot(_vm, pagerOptSlots, 'right');
if (leftSlot) {
slots.left = leftSlot;
}
if (rightSlot) {
slots.right = rightSlot;
}
}
return slots;
}
function getTableOns(_vm) {
var $listeners = _vm.$listeners,
proxyConfig = _vm.proxyConfig,
proxyOpts = _vm.proxyOpts;
var ons = {};
_xeUtils["default"].each($listeners, function (cb, type) {
ons[type] = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_vm.$emit.apply(_vm, [type].concat(args));
};
});
if (proxyConfig) {
if (proxyOpts.sort) {
ons['sort-change'] = _vm.sortChangeEvent;
}
if (proxyOpts.filter) {
ons['filter-change'] = _vm.filterChangeEvent;
}
}
return ons;
}
Object.keys(_table["default"].methods).forEach(function (name) {
methods[name] = function () {
var _this$$refs$xTable;
return this.$refs.xTable && (_this$$refs$xTable = this.$refs.xTable)[name].apply(_this$$refs$xTable, arguments);
};
});
var _default2 = {
name: 'VxeGrid',
mixins: [_size["default"]],
props: _objectSpread(_objectSpread({}, _table["default"].props), {}, {
columns: Array,
pagerConfig: [Boolean, Object],
proxyConfig: Object,
toolbar: [Boolean, Object],
toolbarConfig: [Boolean, Object],
formConfig: [Boolean, Object],
zoomConfig: Object,
size: {
type: String,
"default": function _default() {
return _conf["default"].grid.size || _conf["default"].size;
}
}
}),
provide: function provide() {
return {
$xegrid: this
};
},
data: function data() {
return {
tableLoading: false,
isZMax: false,
tableData: [],
pendingRecords: [],
filterData: [],
formData: {},
sortData: [],
tZindex: 0,
tablePage: {
total: 0,
pageSize: _conf["default"].pager.pageSize || 10,
currentPage: 1
}
};
},
computed: {
isMsg: function isMsg() {
return this.proxyOpts.message !== false;
},
proxyOpts: function proxyOpts() {
return Object.assign({}, _conf["default"].grid.proxyConfig, this.proxyConfig);
},
pagerOpts: function pagerOpts() {
return Object.assign({}, _conf["default"].grid.pagerConfig, this.pagerConfig);
},
formOpts: function formOpts() {
return Object.assign({}, _conf["default"].grid.formConfig, this.formConfig);
},
toolbarOpts: function toolbarOpts() {
return Object.assign({}, _conf["default"].grid.toolbarConfig, this.toolbarConfig || this.toolbar);
},
zoomOpts: function zoomOpts() {
return Object.assign({}, _conf["default"].grid.zoomConfig, this.zoomConfig);
},
renderStyle: function renderStyle() {
return this.isZMax ? {
zIndex: this.tZindex
} : null;
},
tableExtendProps: function tableExtendProps() {
var _this = this;
var rest = {};
propKeys.forEach(function (key) {
rest[key] = _this[key];
});
return rest;
},
tableProps: function tableProps() {
var isZMax = this.isZMax,
seqConfig = this.seqConfig,
pagerConfig = this.pagerConfig,
loading = this.loading,
editConfig = this.editConfig,
proxyConfig = this.proxyConfig,
proxyOpts = this.proxyOpts,
tableExtendProps = this.tableExtendProps,
tableLoading = this.tableLoading,
tablePage = this.tablePage,
tableData = this.tableData;
var tableProps = Object.assign({}, tableExtendProps);
if (isZMax) {
if (tableExtendProps.maxHeight) {
tableProps.maxHeight = 'auto';
} else {
tableProps.height = 'auto';
}
}
if (proxyConfig) {
tableProps.loading = loading || tableLoading;
tableProps.data = tableData;
tableProps.rowClassName = this.handleRowClassName;
if (proxyOpts.seq && (0, _utils.isEnableConf)(pagerConfig)) {
tableProps.seqConfig = Object.assign({}, seqConfig, {
startIndex: (tablePage.currentPage - 1) * tablePage.pageSize
});
}
}
if (editConfig) {
tableProps.editConfig = Object.assign({}, editConfig, {
beforeEditMethod: this.handleBeforeEditMethod
});
}
return tableProps;
}
},
watch: {
columns: function columns(value) {
var _this2 = this;
this.$nextTick(function () {
return _this2.loadColumn(value);
});
},
toolbar: function toolbar(value) {
if (value) {
this.initToolbar();
}
},
toolbarConfig: function toolbarConfig(value) {
if (value) {
this.initToolbar();
}
},
proxyConfig: function proxyConfig() {
this.initProxy();
},
pagerConfig: function pagerConfig() {
this.initPages();
}
},
created: function created() {
var data = this.data,
formOpts = this.formOpts,
proxyOpts = this.proxyOpts,
proxyConfig = this.proxyConfig;
if (proxyConfig && (data || proxyOpts.form && formOpts.data)) {
(0, _log.errLog)('vxe.error.errConflicts', ['grid.data', 'grid.proxy-config']);
}
if (process.env.NODE_ENV === 'development') {
if (this.toolbar) {
(0, _log.warnLog)('vxe.error.delProp', ['grid.toolbar', 'grid.toolbar-config']);
}
if (this.toolbarConfig && !_xeUtils["default"].isObject(this.toolbarConfig)) {
(0, _log.warnLog)('vxe.error.errProp', ["grid.toolbar-config=".concat(this.toolbarConfig), 'grid.toolbar-config={}']);
}
}
this.initPages();
_event.GlobalEvent.on(this, 'keydown', this.handleGlobalKeydownEvent);
},
mounted: function mounted() {
if (this.columns && this.columns.length) {
this.loadColumn(this.columns);
}
this.initToolbar();
this.initProxy();
},
destroyed: function destroyed() {
_event.GlobalEvent.off(this, 'keydown');
},
render: function render(h) {
var _ref;
var $scopedSlots = this.$scopedSlots,
vSize = this.vSize,
isZMax = this.isZMax;
var hasForm = !!($scopedSlots.form || (0, _utils.isEnableConf)(this.formConfig));
var hasToolbar = !!($scopedSlots.toolbar || (0, _utils.isEnableConf)(this.toolbarConfig) || this.toolbar);
var hasPager = !!($scopedSlots.pager || (0, _utils.isEnableConf)(this.pagerConfig));
return h('div', {
"class": ['vxe-grid', (_ref = {}, _defineProperty(_ref, "size--".concat(vSize), vSize), _defineProperty(_ref, 'is--animat', !!this.animat), _defineProperty(_ref, 'is--round', this.round), _defineProperty(_ref, 'is--maximize', isZMax), _defineProperty(_ref, 'is--loading', this.loading || this.tableLoading), _ref)],
style: this.renderStyle
}, [
/**
* 渲染表单
*/
hasForm ? h('div', {
ref: 'formWrapper',
"class": 'vxe-grid--form-wrapper'
}, $scopedSlots.form ? $scopedSlots.form.call(this, {
$grid: this
}, h) : renderDefaultForm(h, this)) : null,
/**
* 渲染工具栏
*/
hasToolbar ? h('div', {
ref: 'toolbarWrapper',
"class": 'vxe-grid--toolbar-wrapper'
}, $scopedSlots.toolbar ? $scopedSlots.toolbar.call(this, {
$grid: this
}, h) : [h('vxe-toolbar', {
props: this.toolbarOpts,
ref: 'xToolbar',
scopedSlots: getToolbarSlots(this)
})]) : null,
/**
* 渲染表格顶部区域
*/
$scopedSlots.top ? h('div', {
ref: 'topWrapper',
"class": 'vxe-grid--top-wrapper'
}, $scopedSlots.top.call(this, {
$grid: this
}, h)) : null,
/**
* 渲染表格
*/
h('vxe-table', {
props: this.tableProps,
on: getTableOns(this),
scopedSlots: $scopedSlots,
ref: 'xTable'
}),
/**
* 渲染表格底部区域
*/
$scopedSlots.bottom ? h('div', {
ref: 'bottomWrapper',
"class": 'vxe-grid--bottom-wrapper'
}, $scopedSlots.bottom.call(this, {
$grid: this
}, h)) : null,
/**
* 渲染分页
*/
hasPager ? h('div', {
ref: 'pagerWrapper',
"class": 'vxe-grid--pager-wrapper'
}, $scopedSlots.pager ? $scopedSlots.pager.call(this, {
$grid: this
}, h) : [h('vxe-pager', {
props: _objectSpread(_objectSpread({}, this.pagerOpts), this.proxyConfig ? this.tablePage : {}),
on: {
'page-change': this.pageChangeEvent
},
scopedSlots: getPagerSlots(this)
})]) : null]);
},
methods: _objectSpread(_objectSpread({}, methods), {}, {
callSlot: function callSlot(slotFunc, params, h, vNodes) {
if (slotFunc) {
var $scopedSlots = this.$scopedSlots;
if (_xeUtils["default"].isString(slotFunc)) {
slotFunc = $scopedSlots[slotFunc] || null;
}
if (_xeUtils["default"].isFunction(slotFunc)) {
return (0, _vn.getSlotVNs)(slotFunc.call(this, params, h, vNodes));
}
}
return [];
},
getParentHeight: function getParentHeight() {
var $el = this.$el,
isZMax = this.isZMax;
return (isZMax ? _dom["default"].getDomNode().visibleHeight : _xeUtils["default"].toNumber(getComputedStyle($el.parentNode).height)) - this.getExcludeHeight();
},
/**
* 获取需要排除的高度
*/
getExcludeHeight: function getExcludeHeight() {
var $refs = this.$refs,
$el = this.$el,
isZMax = this.isZMax,
height = this.height;
var formWrapper = $refs.formWrapper,
toolbarWrapper = $refs.toolbarWrapper,
topWrapper = $refs.topWrapper,
bottomWrapper = $refs.bottomWrapper,
pagerWrapper = $refs.pagerWrapper;
var parentPaddingSize = isZMax || height !== 'auto' ? 0 : (0, _dom.getPaddingTopBottomSize)($el.parentNode);
return parentPaddingSize + (0, _dom.getPaddingTopBottomSize)($el) + (0, _dom.getOffsetHeight)(formWrapper) + (0, _dom.getOffsetHeight)(toolbarWrapper) + (0, _dom.getOffsetHeight)(topWrapper) + (0, _dom.getOffsetHeight)(bottomWrapper) + (0, _dom.getOffsetHeight)(pagerWrapper);
},
handleRowClassName: function handleRowClassName(params) {
var rowClassName = this.rowClassName;
var clss = [];
if (this.pendingRecords.some(function (item) {
return item === params.row;
})) {
clss.push('row--pending');
}
clss.push(rowClassName ? _xeUtils["default"].isFunction(rowClassName) ? rowClassName(params) : rowClassName : '');
return clss;
},
handleBeforeEditMethod: function handleBeforeEditMethod(params) {
var editConfig = this.editConfig;
var beforeEditMethod = editConfig ? editConfig.beforeEditMethod || editConfig.activeMethod : null;
if (this.pendingRecords.indexOf(params.row) === -1) {
return !beforeEditMethod || beforeEditMethod(_objectSpread(_objectSpread({}, params), {}, {
$grid: this
}));
}
return false;
},
initToolbar: function initToolbar() {
var _this3 = this;
this.$nextTick(function () {
var _this3$$refs = _this3.$refs,
xTable = _this3$$refs.xTable,
xToolbar = _this3$$refs.xToolbar;
if (xTable && xToolbar) {
xTable.connect(xToolbar);
}
});
},
initPages: function initPages() {
var tablePage = this.tablePage,
pagerConfig = this.pagerConfig,
pagerOpts = this.pagerOpts;
var currentPage = pagerOpts.currentPage,
pageSize = pagerOpts.pageSize;
if (pagerConfig) {
if (currentPage) {
tablePage.currentPage = currentPage;
}
if (pageSize) {
tablePage.pageSize = pageSize;
}
}
},
initProxy: function initProxy() {
var _this4 = this;
var proxyInited = this.proxyInited,
proxyConfig = this.proxyConfig,
proxyOpts = this.proxyOpts,
formConfig = this.formConfig,
formOpts = this.formOpts;
if (proxyConfig) {
if ((0, _utils.isEnableConf)(formConfig) && proxyOpts.form && formOpts.items) {
var formData = {};
formOpts.items.forEach(function (item) {
var field = item.field,
itemRender = item.itemRender;
if (field) {
var itemValue = null;
if (itemRender) {
var defaultValue = itemRender.defaultValue;
if (_xeUtils["default"].isFunction(defaultValue)) {
itemValue = defaultValue({
item: item
});
} else if (!_xeUtils["default"].isUndefined(defaultValue)) {
itemValue = defaultValue;
}
}
formData[field] = itemValue;
}
});
this.formData = formData;
}
if (!proxyInited && proxyOpts.autoLoad !== false) {
this.proxyInited = true;
this.$nextTick().then(function () {
return _this4.commitProxy('_init');
}).then(function (rest) {
_this4.$emit('proxy-query', _objectSpread(_objectSpread({}, rest), {}, {
isInited: true,
$grid: _this4,
$event: new Event('init')
}));
});
}
}
},
handleGlobalKeydownEvent: function handleGlobalKeydownEvent(evnt) {
var isEsc = evnt.keyCode === 27;
if (isEsc && this.isZMax && this.zoomOpts.escRestore !== false) {
this.triggerZoomEvent(evnt);
}
},
/**
* 提交指令,支持 code 或 button
* @param {String/Object} code 字符串或对象
*/
commitProxy: function commitProxy(proxyTarget) {
var _this5 = this;
var $refs = this.$refs,
toolbar = this.toolbar,
toolbarConfig = this.toolbarConfig,
toolbarOpts = this.toolbarOpts,
proxyOpts = this.proxyOpts,
tablePage = this.tablePage,
pagerConfig = this.pagerConfig,
editRules = this.editRules,
formData = this.formData,
isMsg = this.isMsg;
var beforeQuery = proxyOpts.beforeQuery,
afterQuery = proxyOpts.afterQuery,
beforeDelete = proxyOpts.beforeDelete,
afterDelete = proxyOpts.afterDelete,
beforeSave = proxyOpts.beforeSave,
afterSave = proxyOpts.afterSave,
_proxyOpts$ajax = proxyOpts.ajax,
ajax = _proxyOpts$ajax === void 0 ? {} : _proxyOpts$ajax,
_proxyOpts$props = proxyOpts.props,
proxyProps = _proxyOpts$props === void 0 ? {} : _proxyOpts$props;
var $xetable = $refs.xTable;
var button;
var code;
if (_xeUtils["default"].isString(proxyTarget)) {
var matchObj = toolbarConfig || toolbar ? _xeUtils["default"].findTree(toolbarOpts.buttons, function (item) {
return item.code === proxyTarget;
}, {
children: 'dropdowns'
}) : null;
code = proxyTarget;
button = matchObj ? matchObj.item : null;
} else {
button = proxyTarget;
code = button.code;
}
var btnParams = button ? button.params : null;
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
switch (code) {
case 'insert':
return this.insert();
case 'insert_actived':
return this.insert().then(function (_ref2) {
var row = _ref2.row;
return _this5.setActiveRow(row);
});
case 'mark_cancel':
this.triggerPendingEvent(code);
break;
case 'remove':
return this.handleDeleteRow(code, 'vxe.grid.removeSelectRecord', function () {
return _this5.removeCheckboxRow();
});
case 'import':
this.importData(btnParams);
break;
case 'open_import':
this.openImport(btnParams);
break;
case 'export':
this.exportData(btnParams);
break;
case 'open_export':
this.openExport(btnParams);
break;
case 'reset_custom':
this.resetColumn(true);
break;
case '_init':
case 'reload':
case 'query':
{
var ajaxMethods = ajax.query;
if (ajaxMethods) {
var isInited = code === '_init';
var isReload = code === 'reload';
var sortList = [];
var filterList = [];
var pageParams = {};
if (pagerConfig) {
if (isInited || isReload) {
tablePage.currentPage = 1;
}
if ((0, _utils.isEnableConf)(pagerConfig)) {
pageParams = _objectSpread({}, tablePage);
}
}
if (isInited) {
var sortOpts = $xetable.sortOpts;
var defaultSort = sortOpts.defaultSort;
// 如果使用默认排序
if (defaultSort) {
if (!_xeUtils["default"].isArray(defaultSort)) {
defaultSort = [defaultSort];
}
sortList = defaultSort.map(function (item) {
return {
field: item.field,
property: item.field,
order: item.order
};
});
}
filterList = $xetable.getCheckedFilters();
} else {
if (isReload) {
this.pendingRecords = [];
$xetable.clearAll();
} else {
sortList = $xetable.getSortColumns();
filterList = $xetable.getCheckedFilters();
}
}
var params = {
code: code,
button: button,
isInited: isInited,
isReload: isReload,
$grid: this,
page: pageParams,
sort: sortList.length ? sortList[0] : {},
sorts: sortList,
filters: filterList,
form: formData,
options: ajaxMethods
};
this.sortData = sortList;
this.filterData = filterList;
this.tableLoading = true;
var applyArgs = [params].concat(args);
return Promise.resolve((beforeQuery || ajaxMethods).apply(void 0, _toConsumableArray(applyArgs))).then(function (rest) {
_this5.tableLoading = false;
if (rest) {
if ((0, _utils.isEnableConf)(pagerConfig)) {
var total = _xeUtils["default"].get(rest, proxyProps.total || 'page.total') || 0;
tablePage.total = _xeUtils["default"].toNumber(total);
_this5.tableData = _xeUtils["default"].get(rest, proxyProps.result || 'result') || [];
// 检验当前页码,不能超出当前最大页数
var pageCount = Math.max(Math.ceil(total / tablePage.pageSize), 1);
if (tablePage.currentPage > pageCount) {
tablePage.currentPage = pageCount;
}
} else {
_this5.tableData = (proxyProps.list ? _xeUtils["default"].get(rest, proxyProps.list) : rest) || [];
}
} else {
_this5.tableData = [];
}
if (afterQuery) {
afterQuery.apply(void 0, _toConsumableArray(applyArgs));
}
return {
status: true
};
})["catch"](function () {
_this5.tableLoading = false;
return {
status: false
};
});
} else {
if (process.env.NODE_ENV === 'development') {
(0, _log.errLog)('vxe.error.notFunc', ['proxy-config.ajax.query']);
}
}
break;
}
case 'delete':
{
var _ajaxMethods = ajax["delete"];
if (_ajaxMethods) {
var selectRecords = $xetable.getCheckboxRecords();
var removeRecords = selectRecords.filter(function (row) {
return !$xetable.isInsertByRow(row);
});
var body = {
removeRecords: removeRecords
};
var _applyArgs = [{
$grid: this,
code: code,
button: button,
body: body,
options: _ajaxMethods
}].concat(args);
if (selectRecords.length) {
return this.handleDeleteRow(code, 'vxe.grid.deleteSelectRecord', function () {
if (!removeRecords.length) {
return $xetable.remove(selectRecords);
}
_this5.tableLoading = true;
return Promise.resolve((beforeDelete || _ajaxMethods).apply(void 0, _toConsumableArray(_applyArgs))).then(function (rest) {
_this5.tableLoading = false;
_this5.pendingRecords = _this5.pendingRecords.filter(function (row) {
return removeRecords.indexOf(row) === -1;
});
if (isMsg) {
// 检测弹窗模块
if (process.env.NODE_ENV === 'development') {
if (!_vXETable["default"].modal) {
(0, _log.errLog)('vxe.error.reqModule', ['Modal']);
}
}
_vXETable["default"].modal.message({
content: _this5.getRespMsg(rest, 'vxe.grid.delSuccess'),
status: 'success'
});
}
if (afterDelete) {
afterDelete.apply(void 0, _toConsumableArray(_applyArgs));
} else {
_this5.commitProxy('query');
}
return {
status: true
};
})["catch"](function (rest) {
_this5.tableLoading = false;
if (isMsg) {
// 检测弹窗模块
if (process.env.NODE_ENV === 'development') {
if (!_vXETable["default"].modal) {
(0, _log.errLog)('vxe.error.reqModule', ['Modal']);
}
}
_vXETable["default"].modal.message({
id: code,
content: _this5.getRespMsg(rest, 'vxe.grid.operError'),
status: 'error'
});
}
return {
status: false
};
});
});
} else {
if (isMsg) {
// 检测弹窗模块
if (process.env.NODE_ENV === 'development') {
if (!_vXETable["default"].modal) {
(0, _log.errLog)('vxe.error.reqModule', ['Modal']);
}
}
_vXETable["default"].modal.message({
id: code,
content: _conf["default"].i18n('vxe.grid.selectOneRecord'),
status: 'warning'
});
}
}
} else {
if (process.env.NODE_ENV === 'development') {
(0, _log.errLog)('vxe.error.notFunc', ['proxy-config.ajax.delete']);
}
}
break;
}
case 'save':
{
var _ajaxMethods2 = ajax.save;
if (_ajaxMethods2) {
var _body = Object.assign({
pendingRecords: this.pendingRecords
}, this.getRecordset());
var insertRecords = _body.insertRecords,
_removeRecords = _body.removeRecords,
updateRecords = _body.updateRecords,
pendingRecords = _body.pendingRecords;
var _applyArgs2 = [{
$grid: this,
code: code,
button: button,
body: _body,
options: _ajaxMethods2
}].concat(args);
// 排除掉新增且标记为删除的数据
if (insertRecords.length) {
_body.pendingRecords = pendingRecords.filter(function (row) {
return insertRecords.indexOf(row) === -1;
});
}
// 排除已标记为删除的数据
if (pendingRecords.length) {
_body.insertRecords = insertRecords.filter(function (row) {
return pendingRecords.indexOf(row) === -1;
});
}
var restPromise = Promise.resolve();
if (editRules) {
// 只校验新增和修改的数据
restPromise = this.validate(_body.insertRecords.concat(updateRecords));
}
return restPromise.then(function (errMap) {
if (errMap) {
// 如果校验不通过
return;
}
if (_body.insertRecords.length || _removeRecords.length || updateRecords.length || _body.pendingRecords.length) {
_this5.tableLoading = true;
return Promise.resolve((beforeSave || _ajaxMethods2).apply(void 0, _toConsumableArray(_applyArgs2))).then(function (rest) {
_this5.tableLoading = false;
_this5.pendingRecords = [];
if (isMsg) {
// 检测弹窗模块
if (process.env.NODE_ENV === 'development') {
if (!_vXETable["default"].modal) {
(0, _log.errLog)('vxe.error.reqModule', ['Modal']);
}
}
_vXETable["default"].modal.message({
content: _this5.getRespMsg(rest, 'vxe.grid.saveSuccess'),
status: 'success'
});
}
if (afterSave) {
afterSave.apply(void 0, _toConsumableArray(_applyArgs2));
} else {
_this5.commitProxy('query');
}
return {
status: true
};
})["catch"](function (rest) {
_this5.tableLoading = false;
if (isMsg) {
// 检测弹窗模块
if (process.env.NODE_ENV === 'development') {
if (!_vXETable["default"].modal) {
(0, _log.errLog)('vxe.error.reqModule', ['Modal']);
}
}
_vXETable["default"].modal.message({
id: code,
content: _this5.getRespMsg(rest, 'vxe.grid.operError'),
status: 'error'
});
}
return {
status: false
};
});
} else {
if (isMsg) {
// 检测弹窗模块
if (process.env.NODE_ENV === 'development') {
if (!_vXETable["default"].modal) {
(0, _log.errLog)('vxe.error.reqModule', ['Modal']);
}
}
_vXETable["default"].modal.message({
id: code,
content: _conf["default"].i18n('vxe.grid.dataUnchanged'),
status: 'info'
});
}
}
});
} else {
if (process.env.NODE_ENV === 'development') {
(0, _log.errLog)('vxe.error.notFunc', ['proxy-config.ajax.save']);
}
}
break;
}
default:
{
var btnMethod = _vXETable["default"].commands.get(code);
if (btnMethod) {
btnMethod.apply(void 0, [{
code: code,
button: button,
$grid: this,
$table: $xetable
}].concat(args));
}
}
}
return this.$nextTick();
},
getRespMsg: function getRespMsg(rest, defaultMsg) {
var _this$proxyOpts$props = this.proxyOpts.props,
proxyProps = _this$proxyOpts$props === void 0 ? {} : _this$proxyOpts$props;
var msg;
if (rest && proxyProps.message) {
msg = _xeUtils["default"].get(rest, proxyProps.message);
}
return msg || _conf["default"].i18n(defaultMsg);
},
handleDeleteRow: function handleDeleteRow(code, alertKey, callback) {
var selectRecords = this.getCheckboxRecords();
if (this.isMsg) {
if (selectRecords.length) {
return _vXETable["default"].modal.confirm({
id: "cfm_".concat(code),
content: _conf["default"].i18n(alertKey),
escClosable: true
}).then(function (type) {
if (type === 'confirm') {
return callback();
}
});
} else {
// 检测弹窗模块
if (process.env.NODE_ENV === 'development') {
if (!_vXETable["default"].modal) {
(0, _log.errLog)('vxe.error.reqModule', ['Modal']);
}
}
_vXETable["default"].modal.message({
id: "msg_".concat(code),
content: _conf["default"].i18n('vxe.grid.selectOneRecord'),
status: 'warning'
});
}
} else {
if (selectRecords.length) {
callback();
}
}
return Promise.resolve();
},
getFormItems: function getFormItems(itemIndex) {
var formConfig = this.formConfig,
formOpts = this.formOpts;
var itemList = [];
_xeUtils["default"].eachTree((0, _utils.isEnableConf)(formConfig) && formOpts.items ? formOpts.items : [], function (item) {
itemList.push(item);
}, {
children: 'children'
});
return _xeUtils["default"].isUndefined(itemIndex) ? itemList : itemList[itemIndex];
},
getPendingRecords: function getPendingRecords() {
return this.pendingRecords;
},
triggerToolbarCommitEvent: function triggerToolbarCommitEvent(params, evnt) {
var _this6 = this;
var code = params.code;
return this.commitProxy(params, evnt).then(function (rest) {
if (code && rest && rest.status && ['query', 'reload', 'delete', 'save'].includes(code)) {
_this6.$emit(code === 'delete' || code === 'save' ? "proxy-".concat(code) : 'proxy-query', _objectSpread(_objectSpread({}, rest), {}, {
isReload: code === 'reload',
$grid: _this6,
$event: evnt
}));
}
});
},
triggerToolbarBtnEvent: function triggerToolbarBtnEvent(button, evnt) {
this.triggerToolbarCommitEvent(button, evnt);
this.$emit('toolbar-button-click', {
code: button.code,
button: button,
$grid: this,
$event: evnt
});
},
triggerToolbarTolEvent: function triggerToolbarTolEvent(tool, evnt) {
this.triggerToolbarCommitEvent(tool, evnt);
this.$emit('toolbar-tool-click', {
code: tool.code,
tool: tool,
$grid: this,
$event: evnt
});
},
triggerPendingEvent: function triggerPendingEvent(code) {
var pendingRecords = this.pendingRecords,
isMsg = this.isMsg;
var selectRecords = this.getCheckboxRecords();
if (selectRecords.length) {
var plus = [];
var minus = [];
selectRecords.forEach(function (data) {
if (pendingRecords.some(function (item) {
return data === item;
})) {
minus.push(data);
} else {
plus.push(data);
}
});
if (minus.length) {
this.pendingRecords = pendingRecords.filter(function (item) {
return minus.indexOf(item) === -1;
}).concat(plus);
} else if (plus.length) {
this.pendingRecords = pendingRecords.concat(plus);
}
this.clearCheckboxRow();
} else {
if (isMsg) {
// 检测弹窗模块
if (process.env.NODE_ENV === 'development') {
if (!_vXETable["default"].modal) {
(0, _log.errLog)('vxe.error.reqModule', ['Modal']);
}
}
_vXETable["default"].modal.message({
id: code,
content: _conf["default"].i18n('vxe.grid.selectOneRecord'),
status: 'warning'
});
}
}
},
pageChangeEvent: function pageChangeEvent(params) {
var _this7 = this;
var proxyConfig = this.proxyConfig,
tablePage = this.tablePage;
var currentPage = params.currentPage,
pageSize = params.pageSize;
tablePage.currentPage = currentPage;
tablePage.pageSize = pageSize;
this.$emit('page-change', Object.assign({
$grid: this
}, params));
if (proxyConfig) {
this.commitProxy('query').then(function (rest) {
_this7.$emit('proxy-query', _objectSpread(_objectSpread({}, rest), {}, {
$grid: _this7,
$event: params.$event
}));
});
}
},
sortChangeEvent: function sortChangeEvent(params) {
var _this8 = this;
var $table = params.$table,
column = params.column,
sortList = params.sortList;
var isRemote = _xeUtils["default"].isBoolean(column.remoteSort) ? column.remoteSort : $table.sortOpts.remote;
// 如果是服务端排序
if (isRemote) {
this.sortData = sortList;
if (this.proxyConfig) {
this.tablePage.currentPage = 1;
this.commitProxy('query').then(function (rest) {
_this8.$emit('proxy-query', _objectSpread(_objectSpread({}, rest), {}, {
$grid: _this8,
$event: params.$event
}));
});
}
}
this.$emit('sort-change', Object.assign({
$grid: this
}, params));
},
filterChangeEvent: function filterChangeEvent(params) {
var _this9 = this;
var $table = params.$table,
filterList = params.filterList;
// 如果是服务端过滤
if ($table.filterOpts.remote) {
this.filterData = filterList;
if (this.proxyConfig) {
this.tablePage.currentPage = 1;
this.commitProxy('query').then(function (rest) {
_this9.$emit('proxy-query', _objectSpread(_objectSpread({}, rest), {}, {
$grid: _this9,
$event: params.$event
}));
});
}
}
this.$emit('filter-change', Object.assign({
$grid: this
}, params));
},
submitEvent: function submitEvent(params) {
var _this10 = this;
var proxyConfig = this.proxyConfig;
if (proxyConfig) {
this.commitProxy('reload').then(function (rest) {
_this10.$emit('proxy-query', _objectSpread(_objectSpread({}, rest), {}, {
isReload: true,
$grid: _this10,
$event: params.$event
}));
});
}
this.$emit('form-submit', Object.assign({
$grid: this
}, params));
},
resetEvent: function resetEvent(params) {
var _this11 = this;
var proxyConfig = this.proxyConfig;
if (proxyConfig) {
this.commitProxy('reload').then(function (rest) {
_this11.$emit('proxy-query', _objectSpread(_objectSpread({}, rest), {}, {
isReload: true,
$grid: _this11,
$event: params.$event
}));
});
}
this.$emit('form-reset', Object.assign({
$grid: this
}, params));
},
submitInvalidEvent: function submitInvalidEvent(params) {
this.$emit('form-submit-invalid', Object.assign({
$grid: this
}, params));
},
collapseEvent: function collapseEvent(params) {
var _this12 = this;
this.$nextTick(function () {
return _this12.recalculate(true);
});
this.$emit('form-toggle-collapse', Object.assign({
$grid: this
}, params));
this.$emit('form-collapse', Object.assign({
$grid: this
}, params));
},
triggerZoomEvent: function triggerZoomEvent(evnt) {
this.zoom();
this.$emit('zoom', {
$grid: this,
type: this.isZMax ? 'max' : 'revert',
$event: evnt
});
},
zoom: function zoom() {
return this[this.isZMax ? 'revert' : 'maximize']();
},
isMaximized: function isMaximized() {
return this.isZMax;
},
maximize: function maximize() {
return this.handleZoom(true);
},
revert: function revert() {
return this.handleZoom();
},
handleZoom: function handleZoom(isMax) {
var _this13 = this;
var isZMax = this.isZMax;
if (isMax ? !isZMax : isZMax) {
this.isZMax = !isZMax;
if (this.tZindex < _utils["default"].getLastZIndex()) {
this.tZindex = _utils["default"].nextZIndex();
}
}
return this.$nextTick().then(function () {
return _this13.recalculate(true);
}).then(function () {
return _this13.isZMax;
});
},
getProxyInfo: function getProxyInfo() {
var sortData = this.sortData,
proxyConfig = this.proxyConfig;
if (proxyConfig) {
return {
data: this.tableData,
filter: this.filterData,
form: this.formData,
sort: sortData.length ? sortData[0] : {},
sorts: sortData,
pager: this.tablePage,
pendingRecords: this.pendingRecords
};
}
return null;
}
}, process.env.NODE_ENV === 'development' ? {
loadColumn: function loadColumn(columns) {
var $scopedSlots = this.$scopedSlots;
_xeUtils["default"].eachTree(columns, function (column) {
if (column.slots) {
_xeUtils["default"].each(column.slots, function (func) {
if (!_xeUtils["default"].isFunction(func)) {
if (!$scopedSlots[func]) {
(0, _log.errLog)('vxe.error.notSlot', [func]);
}
}
});
}
});
return this.$refs.xTable.loadColumn(columns);
},
reloadColumn: function reloadColumn(columns) {
this.clearAll();
return this.loadColumn(columns);
}
} : null)
};
exports["default"] = _default2;