UNPKG

vxe-table-plugin-element

Version:

基于 vxe-table 的表格适配插件,用于兼容 element-ui 组件库

808 lines (807 loc) 36.1 kB
(function (global, factory) { if (typeof define === "function" && define.amd) { define("vxe-table-plugin-element", ["exports", "vue", "xe-utils", "dayjs"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("vue"), require("xe-utils"), require("dayjs")); } else { var mod = { exports: {} }; factory(mod.exports, global.Vue, global.XEUtils, global.dayjs); global.VXETablePluginElement = mod.exports; } })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _vue, _xeUtils, _dayjs) { "use strict"; Object.defineProperty(_exports, "__esModule", { value: true }); _exports["default"] = _exports.VXETablePluginElement = void 0; _xeUtils = _interopRequireDefault(_xeUtils); _dayjs = _interopRequireDefault(_dayjs); function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var vxetable; function isEmptyValue(cellValue) { return cellValue === null || cellValue === undefined || cellValue === ''; } function getOnName(type) { return 'on' + type.substring(0, 1).toLocaleUpperCase() + type.substring(1); } function getModelProp(renderOpts) { return 'modelValue'; } function getModelEvent(renderOpts) { return 'update:modelValue'; } function getChangeEvent(renderOpts) { var type = 'change'; switch (renderOpts.name) { case 'ElAutocomplete': type = 'select'; break; case 'ElInput': case 'ElInputNumber': type = 'input'; break; } return type; } function toDayStringDate(value, format) { return (0, _dayjs["default"])(value, format).date; } function toDayDateString(date, format) { return (0, _dayjs["default"])(date).format(format); } function parseDate(value, props) { return value && props.valueFormat ? toDayStringDate(value, props.valueFormat) : value; } function getFormatDate(value, props, defaultFormat) { return value ? toDayDateString(parseDate(value, props), props.format || defaultFormat) : value; } function getFormatDates(values, props, separator, defaultFormat) { return _xeUtils["default"].map(values, function (date) { return getFormatDate(date, props, defaultFormat); }).join(separator); } function equalDaterange(cellValue, data, props, defaultFormat) { cellValue = getFormatDate(cellValue, props, defaultFormat); return cellValue >= getFormatDate(data[0], props, defaultFormat) && cellValue <= getFormatDate(data[1], props, defaultFormat); } function getCellEditFilterProps(renderOpts, params, value, defaultProps) { return _xeUtils["default"].assign({}, defaultProps, renderOpts.props, _defineProperty({}, getModelProp(renderOpts), value)); } function getItemProps(renderOpts, params, value, defaultProps) { return _xeUtils["default"].assign({}, defaultProps, renderOpts.props, _defineProperty({}, getModelProp(renderOpts), value)); } function formatText(cellValue) { return '' + (isEmptyValue(cellValue) ? '' : cellValue); } function getCellLabelVNs(renderOpts, params, cellLabel) { var placeholder = renderOpts.placeholder; return [(0, _vue.h)('span', { "class": 'vxe-cell--label' }, placeholder && isEmptyValue(cellLabel) ? [(0, _vue.h)('span', { "class": 'vxe-cell--placeholder' }, formatText(vxetable._t(placeholder)))] : formatText(cellLabel))]; } function getOns(renderOpts, params, inputFunc, changeFunc) { var events = renderOpts.events; var modelEvent = getModelEvent(renderOpts); var changeEvent = getChangeEvent(renderOpts); var isSameEvent = changeEvent === modelEvent; var ons = {}; _xeUtils["default"].objectEach(events, function (func, key) { ons[getOnName(key)] = function () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } func.apply(void 0, [params].concat(args)); }; }); if (inputFunc) { ons[getOnName(modelEvent)] = function (targetEvnt) { inputFunc(targetEvnt); if (events && events[modelEvent]) { events[modelEvent](params, targetEvnt); } if (isSameEvent && changeFunc) { changeFunc(targetEvnt); } }; } if (!isSameEvent && changeFunc) { ons[getOnName(changeEvent)] = function () { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } changeFunc.apply(void 0, args); if (events && events[changeEvent]) { events[changeEvent].apply(events, [params].concat(args)); } }; } return ons; } function getEditOns(renderOpts, params) { var $table = params.$table, row = params.row, column = params.column; return getOns(renderOpts, params, function (value) { // 处理 model 值双向绑定 _xeUtils["default"].set(row, column.field, value); }, function () { // 处理 change 事件相关逻辑 $table.updateStatus(params); }); } function getFilterOns(renderOpts, params, option, changeFunc) { return getOns(renderOpts, params, function (value) { // 处理 model 值双向绑定 option.data = value; }, changeFunc); } function getItemOns(renderOpts, params) { var $form = params.$form, data = params.data, field = params.field; return getOns(renderOpts, params, function (value) { // 处理 model 值双向绑定 _xeUtils["default"].set(data, field, value); }, function () { // 处理 change 事件相关逻辑 $form.updateStatus(params); }); } function matchCascaderData(index, list, values, labels) { var val = values[index]; if (list && values.length > index) { _xeUtils["default"].each(list, function (item) { if (item.value === val) { labels.push(item.label); matchCascaderData(++index, item.children, values, labels); } }); } } function getSelectCellValue(renderOpts, params) { var _renderOpts$options = renderOpts.options, options = _renderOpts$options === void 0 ? [] : _renderOpts$options, optionGroups = renderOpts.optionGroups, _renderOpts$props = renderOpts.props, props = _renderOpts$props === void 0 ? {} : _renderOpts$props, _renderOpts$optionPro = renderOpts.optionProps, optionProps = _renderOpts$optionPro === void 0 ? {} : _renderOpts$optionPro, _renderOpts$optionGro = renderOpts.optionGroupProps, optionGroupProps = _renderOpts$optionGro === void 0 ? {} : _renderOpts$optionGro; var $table = params.$table, rowid = params.rowid, row = params.row, column = params.column; var filterable = props.filterable, multiple = props.multiple; var labelProp = optionProps.label || 'label'; var valueProp = optionProps.value || 'value'; var groupOptions = optionGroupProps.options || 'options'; var cellValue = _xeUtils["default"].get(row, column.field); var colid = column.id; var cellData; if (filterable) { var internalData = $table.internalData; var fullAllDataRowIdData = internalData.fullAllDataRowIdData; var rest = fullAllDataRowIdData[rowid]; if (rest) { cellData = rest.cellData; if (!cellData) { cellData = rest.cellData = {}; } } if (rest && cellData[colid] && cellData[colid].value === cellValue) { return cellData[colid].label; } } if (!isEmptyValue(cellValue)) { var selectlabel = _xeUtils["default"].map(multiple ? cellValue : [cellValue], optionGroups ? function (value) { var selectItem; for (var index = 0; index < optionGroups.length; index++) { selectItem = _xeUtils["default"].find(optionGroups[index][groupOptions], function (item) { return item[valueProp] === value; }); if (selectItem) { break; } } return selectItem ? selectItem[labelProp] : value; } : function (value) { var selectItem = _xeUtils["default"].find(options, function (item) { return item[valueProp] === value; }); return selectItem ? selectItem[labelProp] : value; }).join(', '); if (cellData && options && options.length) { cellData[colid] = { value: cellValue, label: selectlabel }; } return selectlabel; } return ''; } function getCascaderCellValue(renderOpts, params) { var _renderOpts$props2 = renderOpts.props, props = _renderOpts$props2 === void 0 ? {} : _renderOpts$props2; var row = params.row, column = params.column; var cellValue = _xeUtils["default"].get(row, column.field); var values = cellValue || []; var labels = []; matchCascaderData(0, props.options, values, labels); return (props.showAllLevels === false ? labels.slice(labels.length - 1, labels.length) : labels).join(" ".concat(props.separator || '/', " ")); } function getDatePickerCellValue(renderOpts, params) { var _renderOpts$props3 = renderOpts.props, props = _renderOpts$props3 === void 0 ? {} : _renderOpts$props3; var row = params.row, column = params.column; var _props$rangeSeparator = props.rangeSeparator, rangeSeparator = _props$rangeSeparator === void 0 ? '-' : _props$rangeSeparator; var cellValue = _xeUtils["default"].get(row, column.field); switch (props.type) { case 'week': cellValue = getFormatDate(cellValue, props, 'YYYYwWW'); break; case 'month': cellValue = getFormatDate(cellValue, props, 'YYYY-MM'); break; case 'year': cellValue = getFormatDate(cellValue, props, 'YYYY'); break; case 'dates': cellValue = getFormatDates(cellValue, props, ', ', 'YYYY-MM-DD'); break; case 'daterange': cellValue = getFormatDates(cellValue, props, " ".concat(rangeSeparator, " "), 'YYYY-MM-DD'); break; case 'datetimerange': cellValue = getFormatDates(cellValue, props, " ".concat(rangeSeparator, " "), 'YYYY-MM-DD HH:ss:mm'); break; case 'monthrange': cellValue = getFormatDates(cellValue, props, " ".concat(rangeSeparator, " "), 'YYYY-MM'); break; default: cellValue = getFormatDate(cellValue, props, 'YYYY-MM-DD'); } return cellValue; } function getTimePickerCellValue(renderOpts, params) { var _renderOpts$props4 = renderOpts.props, props = _renderOpts$props4 === void 0 ? {} : _renderOpts$props4; var row = params.row, column = params.column; var isRange = props.isRange, _props$format = props.format, format = _props$format === void 0 ? 'hh:mm:ss' : _props$format, _props$rangeSeparator2 = props.rangeSeparator, rangeSeparator = _props$rangeSeparator2 === void 0 ? '-' : _props$rangeSeparator2; var cellValue = _xeUtils["default"].get(row, column.field); if (cellValue && isRange) { cellValue = _xeUtils["default"].map(cellValue, function (date) { return toDayDateString(parseDate(date, props), format); }).join(" ".concat(rangeSeparator, " ")); } return toDayDateString(parseDate(cellValue, props), format); } function createEditRender(defaultProps) { return function (renderOpts, params) { var row = params.row, column = params.column; var name = renderOpts.name, attrs = renderOpts.attrs; var cellValue = _xeUtils["default"].get(row, column.field); return [(0, _vue.h)((0, _vue.resolveComponent)(name), _objectSpread(_objectSpread(_objectSpread({}, attrs), getCellEditFilterProps(renderOpts, params, cellValue, defaultProps)), getEditOns(renderOpts, params)))]; }; } function defaultButtonEditRender(renderOpts, params) { var attrs = renderOpts.attrs; return [(0, _vue.h)((0, _vue.resolveComponent)('el-button'), _objectSpread(_objectSpread(_objectSpread({}, attrs), getCellEditFilterProps(renderOpts, params, null)), getOns(renderOpts, params)), cellText(renderOpts.content))]; } function defaultButtonsEditRender(renderOpts, params) { var children = renderOpts.children; if (children) { return children.map(function (childRenderOpts) { return defaultButtonEditRender(childRenderOpts, params)[0]; }); } return []; } function createFilterRender(defaultProps) { return function (renderOpts, params) { var column = params.column; var name = renderOpts.name, attrs = renderOpts.attrs; return [(0, _vue.h)('div', { "class": 'vxe-table--filter-element-wrapper' }, column.filters.map(function (option, oIndex) { var optionValue = option.data; return (0, _vue.h)((0, _vue.resolveComponent)(name), _objectSpread(_objectSpread(_objectSpread({ key: oIndex }, attrs), getCellEditFilterProps(renderOpts, params, optionValue, defaultProps)), getFilterOns(renderOpts, params, option, function () { // 处理 change 事件相关逻辑 handleConfirmFilter(params, !!option.data, option); }))); }))]; }; } function handleConfirmFilter(params, checked, option) { var $panel = params.$panel; $panel.changeOption(null, checked, option); } /** * 模糊匹配 * @param params */ function defaultFuzzyFilterMethod(params) { var option = params.option, row = params.row, column = params.column; var data = option.data; var cellValue = _xeUtils["default"].get(row, column.field); return _xeUtils["default"].toValueString(cellValue).indexOf(data) > -1; } /** * 精确匹配 * @param params */ function defaultExactFilterMethod(params) { var option = params.option, row = params.row, column = params.column; var data = option.data; var cellValue = _xeUtils["default"].get(row, column.field); /* eslint-disable eqeqeq */ return cellValue === data; } function renderOptions(options, optionProps) { var labelProp = optionProps.label || 'label'; var valueProp = optionProps.value || 'value'; return _xeUtils["default"].map(options, function (item, oIndex) { return (0, _vue.h)((0, _vue.resolveComponent)('el-option'), { key: oIndex, value: item[valueProp], label: item[labelProp], disabled: item.disabled }); }); } function cellText(cellValue) { return [formatText(cellValue)]; } function createFormItemRender(defaultProps) { return function (renderOpts, params) { var data = params.data, field = params.field; var name = renderOpts.name; var attrs = renderOpts.attrs; var itemValue = _xeUtils["default"].get(data, field); return [(0, _vue.h)((0, _vue.resolveComponent)(name), _objectSpread(_objectSpread(_objectSpread({}, attrs), getItemProps(renderOpts, params, itemValue, defaultProps)), getItemOns(renderOpts, params)))]; }; } function defaultButtonItemRender(renderOpts, params) { var attrs = renderOpts.attrs; var props = getItemProps(renderOpts, params, null); return [(0, _vue.h)((0, _vue.resolveComponent)('el-button'), _objectSpread(_objectSpread(_objectSpread({}, attrs), props), getOns(renderOpts, params)), { "default": function _default() { return cellText(renderOpts.content || props.content); } })]; } function defaultButtonsItemRender(renderOpts, params) { var children = renderOpts.children; if (children) { return children.map(function (childRenderOpts) { return defaultButtonItemRender(childRenderOpts, params)[0]; }); } return []; } function createExportMethod(getExportCellValue) { return function (params) { var row = params.row, column = params.column, options = params.options; return options && options.original ? _xeUtils["default"].get(row, column.field) : getExportCellValue(column.editRender || column.cellRender, params); }; } function createFormItemRadioAndCheckboxRender() { return function (renderOpts, params) { var name = renderOpts.name, _renderOpts$options2 = renderOpts.options, options = _renderOpts$options2 === void 0 ? [] : _renderOpts$options2, _renderOpts$optionPro2 = renderOpts.optionProps, optionProps = _renderOpts$optionPro2 === void 0 ? {} : _renderOpts$optionPro2, attrs = renderOpts.attrs; var data = params.data, field = params.field; var labelProp = optionProps.label || 'label'; var valueProp = optionProps.value || 'value'; var itemValue = _xeUtils["default"].get(data, field); return [(0, _vue.h)((0, _vue.resolveComponent)("".concat(name, "Group")), _objectSpread(_objectSpread(_objectSpread({}, attrs), getItemProps(renderOpts, params, itemValue)), getItemOns(renderOpts, params)), { "default": function _default() { return options.map(function (option, oIndex) { return (0, _vue.h)((0, _vue.resolveComponent)(name), { key: oIndex, label: option[valueProp], disabled: option.disabled }, { "default": function _default() { return cellText(option[labelProp]); } }); }); } })]; }; } /** * 检查触发源是否属于目标节点 */ function getEventTargetNode(evnt, container, className) { var targetElem; var target = evnt.target; while (target && target.nodeType && target !== document) { if (className && target.className && target.className.split && target.className.split(' ').indexOf(className) > -1) { targetElem = target; } else if (target === container) { return { flag: className ? !!targetElem : true, container: container, targetElem: targetElem }; } target = target.parentNode; } return { flag: false }; } /** * 事件兼容性处理 */ function handleClearEvent(params) { var $event = params.$event; var bodyElem = document.body; if ( // 远程搜索 getEventTargetNode($event, bodyElem, 'el-autocomplete-suggestion').flag || // 下拉框 getEventTargetNode($event, bodyElem, 'el-select-dropdown').flag || // 级联 getEventTargetNode($event, bodyElem, 'el-cascader__dropdown').flag || getEventTargetNode($event, bodyElem, 'el-cascader-menus').flag || // 日期 getEventTargetNode($event, bodyElem, 'el-time-panel').flag || getEventTargetNode($event, bodyElem, 'el-picker-panel').flag || // 颜色 getEventTargetNode($event, bodyElem, 'el-color-dropdown').flag) { return false; } } /** * 基于 vxe-table 的表格适配插件,用于兼容 element-ui 组件库 */ var VXETablePluginElement = _exports.VXETablePluginElement = { install: function install(vxetable) { // 检查版本 if (!/^(4)\./.test(vxetable.version) && !/v4/i.test(vxetable.v)) { console.error('[vxe-table-plugin-element 4.x] Version vxe-table 4.x is required'); } vxetable.renderer.mixin({ ElAutocomplete: { autofocus: 'input.el-input__inner', renderDefault: createEditRender(), renderEdit: createEditRender(), renderFilter: createFilterRender(), defaultFilterMethod: defaultExactFilterMethod, renderItemContent: createFormItemRender() }, ElInput: { autofocus: 'input.el-input__inner', renderDefault: createEditRender(), renderEdit: createEditRender(), renderFilter: createFilterRender(), defaultFilterMethod: defaultFuzzyFilterMethod, renderItemContent: createFormItemRender() }, ElInputNumber: { autofocus: 'input.el-input__inner', renderDefault: createEditRender(), renderEdit: createEditRender(), renderFilter: createFilterRender(), defaultFilterMethod: defaultFuzzyFilterMethod, renderItemContent: createFormItemRender() }, ElSelect: { renderEdit: function renderEdit(renderOpts, params) { var _renderOpts$options3 = renderOpts.options, options = _renderOpts$options3 === void 0 ? [] : _renderOpts$options3, optionGroups = renderOpts.optionGroups, _renderOpts$optionPro3 = renderOpts.optionProps, optionProps = _renderOpts$optionPro3 === void 0 ? {} : _renderOpts$optionPro3, _renderOpts$optionGro2 = renderOpts.optionGroupProps, optionGroupProps = _renderOpts$optionGro2 === void 0 ? {} : _renderOpts$optionGro2; var row = params.row, column = params.column; var attrs = renderOpts.attrs; var cellValue = _xeUtils["default"].get(row, column.field); var props = getCellEditFilterProps(renderOpts, params, cellValue); var ons = getEditOns(renderOpts, params); if (optionGroups) { var groupOptions = optionGroupProps.options || 'options'; var groupLabel = optionGroupProps.label || 'label'; return [(0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({}, attrs), props), ons), { "default": function _default() { return _xeUtils["default"].map(optionGroups, function (group, gIndex) { return (0, _vue.h)((0, _vue.resolveComponent)('el-option-group'), { key: gIndex, label: group[groupLabel] }, { "default": function _default() { return renderOptions(group[groupOptions], optionProps); } }); }); } })]; } return [(0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({}, props), attrs), ons), { "default": function _default() { return renderOptions(options, optionProps); } })]; }, renderCell: function renderCell(renderOpts, params) { return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params)); }, renderFilter: function renderFilter(renderOpts, params) { var _renderOpts$options4 = renderOpts.options, options = _renderOpts$options4 === void 0 ? [] : _renderOpts$options4, optionGroups = renderOpts.optionGroups, _renderOpts$optionPro4 = renderOpts.optionProps, optionProps = _renderOpts$optionPro4 === void 0 ? {} : _renderOpts$optionPro4, _renderOpts$optionGro3 = renderOpts.optionGroupProps, optionGroupProps = _renderOpts$optionGro3 === void 0 ? {} : _renderOpts$optionGro3; var groupOptions = optionGroupProps.options || 'options'; var groupLabel = optionGroupProps.label || 'label'; var column = params.column; var attrs = renderOpts.attrs; return [(0, _vue.h)('div', { "class": 'vxe-table--filter-element-wrapper' }, optionGroups ? column.filters.map(function (option, oIndex) { var optionValue = option.data; var props = getCellEditFilterProps(renderOpts, params, optionValue); return (0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({ key: oIndex }, attrs), props), getFilterOns(renderOpts, params, option, function () { // 处理 change 事件相关逻辑 handleConfirmFilter(params, props.multiple ? option.data && option.data.length > 0 : !_xeUtils["default"].eqNull(option.data), option); })), { "default": function _default() { return _xeUtils["default"].map(optionGroups, function (group, gIndex) { return (0, _vue.h)((0, _vue.resolveComponent)('el-option-group'), { key: gIndex, label: group[groupLabel] }, { "default": function _default() { return renderOptions(group[groupOptions], optionProps); } }); }); } }); }) : column.filters.map(function (option, oIndex) { var optionValue = option.data; var props = getCellEditFilterProps(renderOpts, params, optionValue); return (0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({ key: oIndex }, attrs), props), getFilterOns(renderOpts, params, option, function () { // 处理 change 事件相关逻辑 handleConfirmFilter(params, props.multiple ? option.data && option.data.length > 0 : !_xeUtils["default"].eqNull(option.data), option); })), { "default": function _default() { return renderOptions(options, optionProps); } }); }))]; }, defaultFilterMethod: function defaultFilterMethod(params) { var option = params.option, row = params.row, column = params.column; var data = option.data; var field = column.field, renderOpts = column.filterRender; var _renderOpts$props5 = renderOpts.props, props = _renderOpts$props5 === void 0 ? {} : _renderOpts$props5; var cellValue = _xeUtils["default"].get(row, field); if (props.multiple) { if (_xeUtils["default"].isArray(cellValue)) { return _xeUtils["default"].includeArrays(cellValue, data); } return data.indexOf(cellValue) > -1; } /* eslint-disable eqeqeq */ return cellValue == data; }, renderItemContent: function renderItemContent(renderOpts, params) { var _renderOpts$options5 = renderOpts.options, options = _renderOpts$options5 === void 0 ? [] : _renderOpts$options5, optionGroups = renderOpts.optionGroups, _renderOpts$optionPro5 = renderOpts.optionProps, optionProps = _renderOpts$optionPro5 === void 0 ? {} : _renderOpts$optionPro5, _renderOpts$optionGro4 = renderOpts.optionGroupProps, optionGroupProps = _renderOpts$optionGro4 === void 0 ? {} : _renderOpts$optionGro4; var data = params.data, field = params.field; var attrs = renderOpts.attrs; var itemValue = _xeUtils["default"].get(data, field); var props = getItemProps(renderOpts, params, itemValue); var ons = getItemOns(renderOpts, params); if (optionGroups) { var groupOptions = optionGroupProps.options || 'options'; var groupLabel = optionGroupProps.label || 'label'; return [(0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({}, attrs), props), ons), { "default": function _default() { return _xeUtils["default"].map(optionGroups, function (group, gIndex) { return (0, _vue.h)((0, _vue.resolveComponent)('el-option-group'), { label: group[groupLabel], key: gIndex }, { "default": function _default() { return renderOptions(group[groupOptions], optionProps); } }); }); } })]; } return [(0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({}, attrs), props), ons), { "default": function _default() { return renderOptions(options, optionProps); } })]; }, exportMethod: createExportMethod(getSelectCellValue) }, ElCascader: { renderEdit: createEditRender(), renderCell: function renderCell(renderOpts, params) { return getCellLabelVNs(renderOpts, params, getCascaderCellValue(renderOpts, params)); }, renderItemContent: createFormItemRender(), exportMethod: createExportMethod(getCascaderCellValue) }, ElDatePicker: { renderEdit: createEditRender(), renderCell: function renderCell(renderOpts, params) { return getCellLabelVNs(renderOpts, params, getDatePickerCellValue(renderOpts, params)); }, renderFilter: function renderFilter(renderOpts, params) { var column = params.column; var name = renderOpts.name, attrs = renderOpts.attrs; return [(0, _vue.h)('div', { "class": 'vxe-table--filter-element-wrapper' }, column.filters.map(function (option, oIndex) { var optionValue = option.data; return (0, _vue.h)((0, _vue.resolveComponent)(name), _objectSpread(_objectSpread(_objectSpread({ key: oIndex }, attrs), getCellEditFilterProps(renderOpts, params, optionValue)), getFilterOns(renderOpts, params, option, function () { // 处理 change 事件相关逻辑 handleConfirmFilter(params, !!option.data, option); }))); }))]; }, defaultFilterMethod: function defaultFilterMethod(params) { var option = params.option, row = params.row, column = params.column; var data = option.data; var renderOpts = column.filterRender; var _renderOpts$props6 = renderOpts.props, props = _renderOpts$props6 === void 0 ? {} : _renderOpts$props6; var cellValue = _xeUtils["default"].get(row, column.field); if (data) { switch (props.type) { case 'daterange': return equalDaterange(cellValue, data, props, 'YYYY-MM-DD'); case 'datetimerange': return equalDaterange(cellValue, data, props, 'YYYY-MM-DD HH:ss:mm'); case 'monthrange': return equalDaterange(cellValue, data, props, 'YYYY-MM'); default: return cellValue === data; } } return false; }, renderItemContent: createFormItemRender(), exportMethod: createExportMethod(getDatePickerCellValue) }, ElTimePicker: { renderEdit: createEditRender(), renderCell: function renderCell(renderOpts, params) { return getCellLabelVNs(renderOpts, params, getTimePickerCellValue(renderOpts, params)); }, renderItemContent: createFormItemRender(), exportMethod: createExportMethod(getTimePickerCellValue) }, ElTimeSelect: { renderEdit: createEditRender(), renderItemContent: createFormItemRender() }, ElRate: { renderDefault: createEditRender(), renderEdit: createEditRender(), renderFilter: createFilterRender(), defaultFilterMethod: defaultExactFilterMethod, renderItemContent: createFormItemRender() }, ElSwitch: { renderDefault: createEditRender(), renderEdit: createEditRender(), renderFilter: function renderFilter(renderOpts, params) { var column = params.column; var name = renderOpts.name, attrs = renderOpts.attrs; return [(0, _vue.h)('div', { "class": 'vxe-table--filter-element-wrapper' }, column.filters.map(function (option, oIndex) { var optionValue = option.data; return (0, _vue.h)((0, _vue.resolveComponent)(name), _objectSpread(_objectSpread(_objectSpread({ key: oIndex }, attrs), getCellEditFilterProps(renderOpts, params, optionValue)), getFilterOns(renderOpts, params, option, function () { // 处理 change 事件相关逻辑 handleConfirmFilter(params, _xeUtils["default"].isBoolean(option.data), option); }))); }))]; }, defaultFilterMethod: defaultExactFilterMethod, renderItemContent: createFormItemRender() }, ElSlider: { renderDefault: createEditRender(), renderEdit: createEditRender(), renderFilter: createFilterRender(), defaultFilterMethod: defaultExactFilterMethod, renderItemContent: createFormItemRender() }, ElRadio: { renderItemContent: createFormItemRadioAndCheckboxRender() }, ElCheckbox: { renderItemContent: createFormItemRadioAndCheckboxRender() }, ElButton: { renderDefault: defaultButtonEditRender, renderItemContent: defaultButtonItemRender }, ElButtons: { renderDefault: defaultButtonsEditRender, renderItemContent: defaultButtonsItemRender } }); vxetable.interceptor.add('event.clearFilter', handleClearEvent); vxetable.interceptor.add('event.clearEdit', handleClearEvent); vxetable.interceptor.add('event.clearAreas', handleClearEvent); // 兼容老版本 vxetable.interceptor.add('event.clearActived', handleClearEvent); } }; if (typeof window !== 'undefined' && window.VXETable && window.VXETable.use) { window.VXETable.use(VXETablePluginElement); } var _default2 = _exports["default"] = VXETablePluginElement; });