UNPKG

vxe-table-select-area

Version:

一个基于 vxe-table 的可区域选中复制、粘贴的组件

1,420 lines (1,417 loc) 49.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _xeUtils = _interopRequireDefault(require("xe-utils")); var _conf = _interopRequireDefault(require("../../v-x-e-table/src/conf")); var _vXETable = _interopRequireDefault(require("../../v-x-e-table")); var _body = _interopRequireDefault(require("./body")); var _header = _interopRequireDefault(require("../../header")); var _size = _interopRequireDefault(require("../../mixins/size")); var _utils = require("../../tools/utils"); var _resize = require("../../tools/resize"); var _event = require("../../tools/event"); var _vn = require("../../tools/vn"); var _methods = _interopRequireDefault(require("./methods")); var _log = require("../../tools/log"); var _index = _interopRequireDefault(require("../../loading/index")); var _index2 = _interopRequireDefault(require("../../select-area-editor/index")); var _constant = require("../../select-area/common/constant"); var _hooksManager = _interopRequireDefault(require("../../select-area/utils/hooks-manager")); 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 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); } /*** * 新增开始 */ // 新增结束 /** * 渲染浮固定列 * 分别渲染左边固定列和右边固定列 * 如果宽度足够情况下,则不需要渲染固定列 * @param {Function} h 创建 VNode 函数 * @param {Object} $xetable 表格实例 * @param {String} fixedType 固定列类型 */ function renderFixed(h, $xetable, fixedType) { var _e = $xetable._e, tableData = $xetable.tableData, tableColumn = $xetable.tableColumn, tableGroupColumn = $xetable.tableGroupColumn, vSize = $xetable.vSize, showHeader = $xetable.showHeader, showFooter = $xetable.showFooter, columnStore = $xetable.columnStore, footerTableData = $xetable.footerTableData; var fixedColumn = columnStore["".concat(fixedType, "List")]; return h('div', { "class": "vxe-table--fixed-".concat(fixedType, "-wrapper"), ref: "".concat(fixedType, "Container") }, [showHeader ? h(_header["default"], { props: { fixedType: fixedType, tableData: tableData, tableColumn: tableColumn, tableGroupColumn: tableGroupColumn, size: vSize, fixedColumn: fixedColumn }, ref: "".concat(fixedType, "Header") }) : _e(), h('vxe-table-body', { props: { fixedType: fixedType, tableData: tableData, tableColumn: tableColumn, fixedColumn: fixedColumn, size: vSize }, ref: "".concat(fixedType, "Body") }), showFooter ? h('vxe-table-footer', { props: { footerTableData: footerTableData, tableColumn: tableColumn, fixedColumn: fixedColumn, fixedType: fixedType, size: vSize }, ref: "".concat(fixedType, "Footer") }) : _e()]); } function renderEmptyContenet(h, _vm) { var $scopedSlots = _vm.$scopedSlots, emptyOpts = _vm.emptyOpts; var emptyContent = ''; var params = { $table: _vm }; if ($scopedSlots.empty) { emptyContent = $scopedSlots.empty.call(_vm, params, h); } else { var compConf = emptyOpts.name ? _vXETable["default"].renderer.get(emptyOpts.name) : null; var renderEmpty = compConf ? compConf.renderEmpty : null; if (renderEmpty) { emptyContent = (0, _vn.getSlotVNs)(renderEmpty.call(_vm, h, emptyOpts, params)); } else { emptyContent = (0, _utils.getFuncText)(_vm.emptyText) || _conf["default"].i18n('vxe.table.emptyText'); } } return emptyContent; } function handleUupdateResize(_vm) { var $el = _vm.$el; if ($el && $el.clientWidth && $el.clientHeight) { _vm.recalculate(); } } var _default2 = { name: 'VxeTable', mixins: [_size["default"]], props: { /** 基本属性 */ id: String, // 数据 data: Array, // 表格的高度 height: [Number, String], // 表格的最大高度 maxHeight: [Number, String], // 已废弃,被 column-config.resizable 替换 resizable: { type: Boolean, "default": function _default() { return _conf["default"].table.resizable; } }, // 是否带有斑马纹 stripe: { type: Boolean, "default": function _default() { return _conf["default"].table.stripe; } }, // 是否带有边框 border: { type: [Boolean, String], "default": function _default() { return _conf["default"].table.border; } }, // 是否圆角边框 round: { type: Boolean, "default": function _default() { return _conf["default"].table.round; } }, // 表格的尺寸 size: { type: String, "default": function _default() { return _conf["default"].table.size || _conf["default"].size; } }, // 列的宽度是否自撑开(可能会被废弃的参数,不要使用) fit: { type: Boolean, "default": function _default() { return _conf["default"].table.fit; } }, // 表格是否加载中 loading: Boolean, // 所有的列对其方式 align: { type: String, "default": function _default() { return _conf["default"].table.align; } }, // 所有的表头列的对齐方式 headerAlign: { type: String, "default": function _default() { return _conf["default"].table.headerAlign; } }, // 所有的表尾列的对齐方式 footerAlign: { type: String, "default": function _default() { return _conf["default"].table.footerAlign; } }, // 是否显示表头 showHeader: { type: Boolean, "default": function _default() { return _conf["default"].table.showHeader; } }, // 已废弃,被 row-config.isCurrent 替换 highlightCurrentRow: { type: Boolean, "default": function _default() { return _conf["default"].table.highlightCurrentRow; } }, // 已废弃,被 row-config.isHover 替换 highlightHoverRow: { type: Boolean, "default": function _default() { return _conf["default"].table.highlightHoverRow; } }, // 已废弃,被 column-config.isCurrent 替换 highlightCurrentColumn: { type: Boolean, "default": function _default() { return _conf["default"].table.highlightCurrentColumn; } }, // 已废弃,被 column-config.isHover 替换 highlightHoverColumn: { type: Boolean, "default": function _default() { return _conf["default"].table.highlightHoverColumn; } }, // 已废弃,直接删除 highlightCell: Boolean, // 是否显示表尾合计 showFooter: Boolean, // 表尾合计的计算方法 footerMethod: Function, // 给行附加 className rowClassName: [String, Function], // 给单元格附加 className cellClassName: [String, Function], // 给表头的行附加 className headerRowClassName: [String, Function], // 给表头的单元格附加 className headerCellClassName: [String, Function], // 给表尾的行附加 className footerRowClassName: [String, Function], // 给表尾的单元格附加 className footerCellClassName: [String, Function], // 给单元格附加样式 cellStyle: [Object, Function], // 给表头单元格附加样式 headerCellStyle: [Object, Function], // 给表尾单元格附加样式 footerCellStyle: [Object, Function], // 给行附加样式 rowStyle: [Object, Function], // 给表头行附加样式 headerRowStyle: [Object, Function], // 给表尾行附加样式 footerRowStyle: [Object, Function], // 合并指定单元格 mergeCells: Array, // 合并指定的表尾 mergeFooterItems: Array, // 自定义合并行或列的方法 spanMethod: Function, // 表尾合并行或列 footerSpanMethod: Function, // 设置所有内容过长时显示为省略号 showOverflow: { type: [Boolean, String], "default": function _default() { return _conf["default"].table.showOverflow; } }, // 设置表头所有内容过长时显示为省略号 showHeaderOverflow: { type: [Boolean, String], "default": function _default() { return _conf["default"].table.showHeaderOverflow; } }, // 设置表尾所有内容过长时显示为省略号 showFooterOverflow: { type: [Boolean, String], "default": function _default() { return _conf["default"].table.showFooterOverflow; } }, /** 高级属性 */ // (即将废弃)columnKey 已废弃,被 column-config.useKey 替换 columnKey: Boolean, // (即将废弃)rowKey 已废弃,被 row-config.useKey 替换 rowKey: Boolean, // (即将废弃)rowId 已废弃,被 row-config.keyField 替换 rowId: { type: String, "default": function _default() { return _conf["default"].table.rowId; } }, zIndex: Number, emptyText: { type: String, "default": function _default() { return _conf["default"].table.emptyText; } }, keepSource: { type: Boolean, "default": function _default() { return _conf["default"].table.keepSource; } }, // 是否自动监听父容器变化去更新响应式表格宽高 autoResize: { type: Boolean, "default": function _default() { return _conf["default"].table.autoResize; } }, // 是否自动根据状态属性去更新响应式表格宽高 syncResize: [Boolean, String, Number], // 响应式布局配置项 resizeConfig: Object, // 列配置信息 columnConfig: Object, // 行配置信息 rowConfig: Object, // 列调整配置项 resizableConfig: Object, // 序号配置项 seqConfig: Object, // 排序配置项 sortConfig: Object, // 筛选配置项 filterConfig: Object, // 单选框配置 radioConfig: Object, // 复选框配置项 checkboxConfig: Object, // tooltip 配置项 tooltipConfig: Object, // 导出配置项 exportConfig: [Boolean, Object], // 导入配置项 importConfig: [Boolean, Object], // 打印配置项 printConfig: Object, // 展开行配置项 expandConfig: Object, // 树形结构配置项 treeConfig: [Boolean, Object], // 快捷菜单配置项 menuConfig: [Boolean, Object], // 在 v4 中废弃 contextMenu contextMenu: [Boolean, Object], // 鼠标配置项 mouseConfig: Object, // 区域配置项 areaConfig: Object, // 按键配置项 keyboardConfig: Object, // 复制粘贴拦截 clipboardOption: Object, // 自动填充拦截 cellAutofillOption: Object, // 复制/粘贴配置项 clipConfig: Object, // 查找/替换配置项 fnrConfig: Object, // 编辑配置项 editConfig: [Boolean, Object], // 校验配置项 validConfig: Object, // 校验规则配置项 editRules: Object, // 加载中配置项 loadingConfig: Object, // 空内容渲染配置项 emptyRender: [Boolean, Object], // 自定义列配置项 customConfig: [Boolean, Object], // 横向虚拟滚动配置项 scrollX: Object, // 纵向虚拟滚动配置项 scrollY: Object, // (即将废弃)优化相关 animat: { type: Boolean, "default": function _default() { return _conf["default"].table.animat; } }, // (可能会被废弃的参数,不要使用) delayHover: { type: Number, "default": function _default() { return _conf["default"].table.delayHover; } }, // 额外的参数 params: Object }, components: { VxeTableBody: _body["default"] }, provide: function provide() { return { $xetable: this, xecolgroup: null }; }, inject: { $xegrid: { "default": null } }, data: function data() { return { tId: "".concat(_xeUtils["default"].uniqueId()), // 低性能的静态列 staticColumns: [], // 渲染的列分组 tableGroupColumn: [], // 可视区渲染的列 tableColumn: [], // 渲染中的数据 tableData: [], // 是否启用了横向 X 可视渲染方式加载 scrollXLoad: false, // 是否启用了纵向 Y 可视渲染方式加载 scrollYLoad: false, // 是否存在纵向滚动条 overflowY: true, // 是否存在横向滚动条 overflowX: false, // 纵向滚动条的宽度 scrollbarWidth: 0, // 横向滚动条的高度 scrollbarHeight: 0, // 行高 rowHeight: 0, // 表格父容器的高度 parentHeight: 0, // 是否使用分组表头 isGroup: false, isAllOverflow: false, // 复选框属性,是否全选 isAllSelected: false, // 复选框属性,有选中且非全选状态 isIndeterminate: false, // 复选框属性,已选中的行 selection: [], // 当前行 currentRow: null, // 单选框属性,选中列 currentColumn: null, // 单选框属性,选中行 selectRow: null, // 表尾合计数据 footerTableData: [], // 展开列信息 expandColumn: null, hasFixedColumn: false, // 树节点列信息 treeNodeColumn: null, // 已展开的行 rowExpandeds: [], // 懒加载中的展开行的列表 expandLazyLoadeds: [], // 已展开树节点 treeExpandeds: [], // 懒加载中的树节点的列表 treeLazyLoadeds: [], // 树节点不确定状态的列表 treeIndeterminates: [], // 合并单元格的对象集 mergeList: [], // 合并表尾数据的对象集 mergeFooterList: [], // 初始化标识 initStore: { filter: false, "import": false, "export": false }, // 当前选中的筛选列 filterStore: { isAllSelected: false, isIndeterminate: false, style: null, options: [], column: null, multiple: false, visible: false, maxHeight: null }, // 存放列相关的信息 columnStore: { leftList: [], centerList: [], rightList: [], resizeList: [], pxList: [], pxMinList: [], scaleList: [], scaleMinList: [], autoList: [] }, // 存放快捷菜单的信息 ctxMenuStore: { selected: null, visible: false, showChild: false, selectChild: null, list: [], style: null }, // 存放可编辑相关信息 editStore: { indexs: { columns: [] }, titles: { columns: [] }, // 选中源 selected: { row: null, column: null }, // 已复制源 copyed: { cut: false, rows: [], columns: [] }, // 激活 actived: { row: null, column: null }, insertList: [], insertMaps: {}, removeList: [], removeMaps: {} }, // 存放 tooltip 相关信息 tooltipStore: { row: null, column: null, visible: false, currOpts: null }, // 存放数据校验相关信息 validStore: { visible: false, row: null, column: null, content: '', rule: null, isArrow: false }, // 导入相关信息 importStore: { inited: false, file: null, type: '', modeList: [], typeList: [], filename: '', visible: false }, importParams: { mode: '', types: null, message: true }, // 导出相关信息 exportStore: { inited: false, name: '', modeList: [], typeList: [], columns: [], isPrint: false, hasFooter: false, hasTree: false, hasMerge: false, hasColgroup: false, visible: false }, exportParams: { filename: '', sheetName: '', mode: '', type: '', isColgroup: false, isMerge: false, isAllExpand: false, useStyle: false, original: false, message: true, isHeader: false, isFooter: false }, parentRendered: false }; }, computed: { validOpts: function validOpts() { return Object.assign({ message: 'default' }, _conf["default"].table.validConfig, this.validConfig); }, sXOpts: function sXOpts() { return Object.assign({}, _conf["default"].table.scrollX, this.scrollX); }, sYOpts: function sYOpts() { return Object.assign({}, _conf["default"].table.scrollY, this.scrollY); }, rowHeightMaps: function rowHeightMaps() { return { "default": 48, medium: 44, small: 40, mini: 36 }; }, columnOpts: function columnOpts() { return Object.assign({}, _conf["default"].table.columnConfig, this.columnConfig); }, rowOpts: function rowOpts() { return Object.assign({}, _conf["default"].table.rowConfig, this.rowConfig); }, resizeOpts: function resizeOpts() { return Object.assign({}, _conf["default"].table.resizeConfig, this.resizeConfig); }, resizableOpts: function resizableOpts() { return Object.assign({}, _conf["default"].table.resizableConfig, this.resizableConfig); }, seqOpts: function seqOpts() { return Object.assign({ startIndex: 0 }, _conf["default"].table.seqConfig, this.seqConfig); }, radioOpts: function radioOpts() { return Object.assign({}, _conf["default"].table.radioConfig, this.radioConfig); }, checkboxOpts: function checkboxOpts() { return Object.assign({}, _conf["default"].table.checkboxConfig, this.checkboxConfig); }, tooltipOpts: function tooltipOpts() { return Object.assign({}, _conf["default"].tooltip, _conf["default"].table.tooltipConfig, this.tooltipConfig); }, tipConfig: function tipConfig() { return _objectSpread(_objectSpread({}, this.tooltipOpts), this.tooltipStore.currOpts); }, validTipOpts: function validTipOpts() { return Object.assign({ isArrow: false }, this.tooltipOpts); }, editOpts: function editOpts() { return Object.assign({}, _conf["default"].table.editConfig, this.editConfig); }, sortOpts: function sortOpts() { return Object.assign({ orders: ['asc', 'desc', null] }, _conf["default"].table.sortConfig, this.sortConfig); }, filterOpts: function filterOpts() { return Object.assign({}, _conf["default"].table.filterConfig, this.filterConfig); }, mouseOpts: function mouseOpts() { return Object.assign({}, _conf["default"].table.mouseConfig, this.mouseConfig); }, areaOpts: function areaOpts() { return Object.assign({}, _conf["default"].table.areaConfig, this.areaConfig); }, keyboardOpts: function keyboardOpts() { return Object.assign({}, _conf["default"].table.keyboardConfig, this.keyboardConfig); }, clipOpts: function clipOpts() { return Object.assign({}, _conf["default"].table.clipConfig, this.clipConfig); }, fnrOpts: function fnrOpts() { return Object.assign({}, _conf["default"].table.fnrConfig, this.fnrConfig); }, hasTip: function hasTip() { return _vXETable["default"]._tooltip; }, headerCtxMenu: function headerCtxMenu() { var headerOpts = this.ctxMenuOpts.header; return headerOpts && headerOpts.options ? headerOpts.options : []; }, bodyCtxMenu: function bodyCtxMenu() { var bodyOpts = this.ctxMenuOpts.body; return bodyOpts && bodyOpts.options ? bodyOpts.options : []; }, footerCtxMenu: function footerCtxMenu() { var footerOpts = this.ctxMenuOpts.footer; return footerOpts && footerOpts.options ? footerOpts.options : []; }, isCtxMenu: function isCtxMenu() { return !!((this.contextMenu || this.menuConfig) && (0, _utils.isEnableConf)(this.ctxMenuOpts) && (this.headerCtxMenu.length || this.bodyCtxMenu.length || this.footerCtxMenu.length)); }, ctxMenuOpts: function ctxMenuOpts() { return Object.assign({}, _conf["default"].table.menuConfig, this.contextMenu, this.menuConfig); }, ctxMenuList: function ctxMenuList() { var rest = []; this.ctxMenuStore.list.forEach(function (list) { list.forEach(function (item) { rest.push(item); }); }); return rest; }, exportOpts: function exportOpts() { return Object.assign({}, _conf["default"].table.exportConfig, this.exportConfig); }, importOpts: function importOpts() { return Object.assign({}, _conf["default"].table.importConfig, this.importConfig); }, printOpts: function printOpts() { return Object.assign({}, _conf["default"].table.printConfig, this.printConfig); }, expandOpts: function expandOpts() { return Object.assign({}, _conf["default"].table.expandConfig, this.expandConfig); }, treeOpts: function treeOpts() { return Object.assign({}, _conf["default"].table.treeConfig, this.treeConfig); }, emptyOpts: function emptyOpts() { return Object.assign({}, _conf["default"].table.emptyRender, this.emptyRender); }, loadingOpts: function loadingOpts() { return Object.assign({}, _conf["default"].table.loadingConfig, this.loadingConfig); }, cellOffsetWidth: function cellOffsetWidth() { return this.border ? Math.max(2, Math.ceil(this.scrollbarWidth / this.tableColumn.length)) : 1; }, customOpts: function customOpts() { return Object.assign({}, _conf["default"].table.customConfig, this.customConfig); }, tableBorder: function tableBorder() { var border = this.border; if (border === true) { return 'full'; } if (border) { return border; } return 'default'; }, /** * 判断列全选的复选框是否禁用 */ isAllCheckboxDisabled: function isAllCheckboxDisabled() { var tableFullData = this.tableFullData, tableData = this.tableData, treeConfig = this.treeConfig, checkboxOpts = this.checkboxOpts; var strict = checkboxOpts.strict, checkMethod = checkboxOpts.checkMethod; if (strict) { if (tableData.length || tableFullData.length) { if (checkMethod) { if (treeConfig) { // 暂时不支持树形结构 } // 如果所有行都被禁用 return tableFullData.every(function (row) { return !checkMethod({ row: row }); }); } return false; } return true; } return false; } }, watch: { data: function data(value) { var _this = this; var inited = this.inited, initStatus = this.initStatus; this.loadTableData(value).then(function () { _this.inited = true; _this.initStatus = true; if (!initStatus) { _this.handleLoadDefaults(); } if (!inited) { _this.handleInitDefaults(); } var checkboxColumn = _this.tableFullColumn.find(function (column) { return column.type === 'checkbox'; }); if (checkboxColumn && _this.tableFullData.length > 300 && !_this.checkboxOpts.checkField) { (0, _log.warnLog)('vxe.error.checkProp', ['checkbox-config.checkField']); } if ((_this.scrollXLoad || _this.scrollYLoad) && _this.expandColumn) { (0, _log.warnLog)('vxe.error.scrollErrProp', ['column.type=expand']); } _this.recalculate(); }); }, staticColumns: function staticColumns(value) { this.handleColumn(value); }, tableColumn: function tableColumn() { this.analyColumnWidth(); }, showHeader: function showHeader() { var _this2 = this; this.$nextTick(function () { _this2.recalculate(true).then(function () { return _this2.refreshScroll(); }); }); }, showFooter: function showFooter() { var _this3 = this; this.$nextTick(function () { _this3.recalculate(true).then(function () { return _this3.refreshScroll(); }); }); }, height: function height() { var _this4 = this; this.$nextTick(function () { return _this4.recalculate(true); }); }, maxHeight: function maxHeight() { var _this5 = this; this.$nextTick(function () { return _this5.recalculate(true); }); }, syncResize: function syncResize(value) { var _this6 = this; if (value) { handleUupdateResize(this); this.$nextTick(function () { handleUupdateResize(_this6); setTimeout(function () { return handleUupdateResize(_this6); }); }); } }, mergeCells: function mergeCells(value) { var _this7 = this; this.clearMergeCells(); this.$nextTick(function () { return _this7.setMergeCells(value); }); }, mergeFooterItems: function mergeFooterItems(value) { var _this8 = this; this.clearMergeFooterItems(); this.$nextTick(function () { return _this8.setMergeFooterItems(value); }); } }, created: function created() { var _this9 = this; var _Object$assign = Object.assign(this, { tZindex: 0, elemStore: {}, // 存放横向 X 虚拟滚动相关的信息 scrollXStore: {}, // 存放纵向 Y 虚拟滚动相关信息 scrollYStore: {}, // 表格宽度 tableWidth: 0, // 表格高度 tableHeight: 0, // 表头高度 headerHeight: 0, // 表尾高度 footerHeight: 0, // 当前 hover 行 // hoverRow: null, // 最后滚动位置 lastScrollLeft: 0, lastScrollTop: 0, // 单选框属性,已选中保留的行 radioReserveRow: null, // 复选框属性,已选中保留的行 checkboxReserveRowMap: {}, // 行数据,已展开保留的行 rowExpandedReserveRowMap: {}, // 树结构数据,已展开保留的行 treeExpandedReserveRowMap: {}, // 完整数据、条件处理后 tableFullData: [], afterFullData: [], // 收集的列配置(带分组) collectColumn: [], // 完整所有列(不带分组) tableFullColumn: [], // 渲染所有列 visibleColumn: [], // 缓存数据集 fullAllDataRowMap: new Map(), fullAllDataRowIdData: {}, fullDataRowMap: new Map(), fullDataRowIdData: {}, fullColumnMap: new Map(), fullColumnIdData: {}, fullColumnFieldData: {} }), scrollXStore = _Object$assign.scrollXStore, sYOpts = _Object$assign.sYOpts, scrollYStore = _Object$assign.scrollYStore, data = _Object$assign.data, editOpts = _Object$assign.editOpts, treeOpts = _Object$assign.treeOpts, treeConfig = _Object$assign.treeConfig, showOverflow = _Object$assign.showOverflow, rowOpts = _Object$assign.rowOpts; if (process.env.NODE_ENV === 'development') { // if (this.rowId) { // warnLog('vxe.error.delProp', ['row-id', 'row-config.keyField']) // } // if (this.rowKey) { // warnLog('vxe.error.delProp', ['row-id', 'row-config.useKey']) // } // if (this.columnKey) { // warnLog('vxe.error.delProp', ['row-id', 'column-config.useKey']) // } if (!(this.rowId || rowOpts.keyField) && (this.checkboxOpts.reserve || this.checkboxOpts.checkRowKeys || this.radioOpts.reserve || this.radioOpts.checkRowKey || this.expandOpts.expandRowKeys || this.treeOpts.expandRowKeys)) { (0, _log.warnLog)('vxe.error.reqProp', ['row-config.keyField']); } if (this.editConfig && editOpts.showStatus && !this.keepSource) { (0, _log.warnLog)('vxe.error.reqProp', ['keep-source']); } if (treeConfig && treeOpts.line && (!(this.rowKey || rowOpts.useKey) || !showOverflow)) { (0, _log.warnLog)('vxe.error.reqProp', ['row-config.useKey | show-overflow']); } if (this.showFooter && !this.footerMethod) { (0, _log.warnLog)('vxe.error.reqProp', ['footer-method']); } if (treeConfig && this.stripe) { (0, _log.warnLog)('vxe.error.noTree', ['stripe']); } if (this.tooltipOpts.enabled) { (0, _log.warnLog)('vxe.error.delProp', ['tooltip-config.enabled', 'tooltip-config.showAll']); } // if (this.highlightCurrentRow) { // warnLog('vxe.error.delProp', ['highlight-current-row', 'row-config.isCurrent']) // } // if (this.highlightHoverRow) { // warnLog('vxe.error.delProp', ['highlight-hover-row', 'row-config.isHover']) // } // if (this.highlightCurrentColumn) { // warnLog('vxe.error.delProp', ['highlight-current-column', 'column-config.isCurrent']) // } // if (this.highlightHoverColumn) { // warnLog('vxe.error.delProp', ['highlight-hover-column', 'column-config.isHover']) // } // 检查导入导出类型,如果自定义导入导出方法,则不校验类型 var exportConfig = this.exportConfig, exportOpts = this.exportOpts, importConfig = this.importConfig, importOpts = this.importOpts; if (importConfig && importOpts.types && !importOpts.importMethod && !_xeUtils["default"].includeArrays(_vXETable["default"].config.importTypes, importOpts.types)) { (0, _log.warnLog)('vxe.error.errProp', ["export-config.types=".concat(importOpts.types.join(',')), importOpts.types.filter(function (type) { return _xeUtils["default"].includes(_vXETable["default"].config.importTypes, type); }).join(',') || _vXETable["default"].config.importTypes.join(',')]); } if (exportConfig && exportOpts.types && !exportOpts.exportMethod && !_xeUtils["default"].includeArrays(_vXETable["default"].config.exportTypes, exportOpts.types)) { (0, _log.warnLog)('vxe.error.errProp', ["export-config.types=".concat(exportOpts.types.join(',')), exportOpts.types.filter(function (type) { return _xeUtils["default"].includes(_vXETable["default"].config.exportTypes, type); }).join(',') || _vXETable["default"].config.exportTypes.join(',')]); } } if (process.env.NODE_ENV === 'development') { var customOpts = this.customOpts; if (!this.id && this.customConfig && (customOpts.storage === true || customOpts.storage && customOpts.storage.resizable || customOpts.storage && customOpts.storage.visible)) { (0, _log.errLog)('vxe.error.reqProp', ['id']); } if (this.treeConfig && this.checkboxOpts.range) { (0, _log.errLog)('vxe.error.noTree', ['checkbox-config.range']); } if (this.rowOpts.height && !this.showOverflow) { (0, _log.warnLog)('vxe.error.notProp', ['table.show-overflow']); } if (!this.handleUpdateCellAreas) { if (this.clipConfig) { (0, _log.warnLog)('vxe.error.notProp', ['clip-config']); } if (this.fnrConfig) { (0, _log.warnLog)('vxe.error.notProp', ['fnr-config']); } if (this.mouseOpts.area) { // errLog('vxe.error.notProp', ['mouse-config.area']) // return } } if (this.mouseOpts.area && this.mouseOpts.selected) { (0, _log.warnLog)('vxe.error.errConflicts', ['mouse-config.area', 'mouse-config.selected']); } if (this.mouseOpts.area && this.checkboxOpts.range) { (0, _log.warnLog)('vxe.error.errConflicts', ['mouse-config.area', 'checkbox-config.range']); } if (this.treeConfig && this.mouseOpts.area) { (0, _log.errLog)('vxe.error.noTree', ['mouse-config.area']); } } // v4 中只支持对象类型 if (process.env.NODE_ENV === 'development') { // 在 v3.0 中废弃 context-menu if (this.contextMenu) { (0, _log.warnLog)('vxe.error.delProp', ['context-menu', 'menu-config']); if (!_xeUtils["default"].isObject(this.contextMenu)) { (0, _log.warnLog)('vxe.error.errProp', ["table.context-menu=".concat(this.contextMenu), 'table.context-menu={}']); } } if (this.menuConfig && !_xeUtils["default"].isObject(this.menuConfig)) { (0, _log.warnLog)('vxe.error.errProp', ["table.menu-config=".concat(this.menuConfig), 'table.menu-config={}']); } if (this.exportConfig && !_xeUtils["default"].isObject(this.exportConfig)) { (0, _log.warnLog)('vxe.error.errProp', ["table.export-config=".concat(this.exportConfig), 'table.export-config={}']); } if (this.importConfig && !_xeUtils["default"].isObject(this.importConfig)) { (0, _log.warnLog)('vxe.error.errProp', ["table.import-config=".concat(this.importConfig), 'table.import-config={}']); } if (this.printConfig && !_xeUtils["default"].isObject(this.printConfig)) { (0, _log.warnLog)('vxe.error.errProp', ["table.print-config=".concat(this.printConfig), 'table.print-config={}']); } if (this.treeConfig && !_xeUtils["default"].isObject(this.treeConfig)) { (0, _log.warnLog)('vxe.error.errProp', ["table.tree-config=".concat(this.treeConfig), 'table.tree-config={}']); } if (this.customConfig && !_xeUtils["default"].isObject(this.customConfig)) { (0, _log.warnLog)('vxe.error.errProp', ["table.custom-config=".concat(this.customConfig), 'table.custom-config={}']); } if (this.editConfig && !_xeUtils["default"].isObject(this.editConfig)) { (0, _log.warnLog)('vxe.error.errProp', ["table.edit-config=".concat(this.editConfig), 'table.edit-config={}']); } if (this.emptyRender && !_xeUtils["default"].isObject(this.emptyRender)) { (0, _log.warnLog)('vxe.error.errProp', ["table.empty-render=".concat(this.emptyRender), 'table.empty-render={}']); } // if (this.editConfig && this.editConfig.activeMethod) { // warnLog('vxe.error.delProp', ['table.edit-config.activeMethod', 'table.edit-config.beforeEditMethod']) // } } // 检查是否有安装需要的模块 if (process.env.NODE_ENV === 'development') { if (this.editConfig && !this._insert) { (0, _log.errLog)('vxe.error.reqModule', ['Edit']); } if (this.editRules && !this._validate) { (0, _log.errLog)('vxe.error.reqModule', ['Validator']); } if ((this.checkboxOpts.range || this.keyboardConfig || this.mouseConfig) && !this.triggerCellMousedownEvent) { (0, _log.errLog)('vxe.error.reqModule', ['Keyboard']); } if ((this.printConfig || this.importConfig || this.exportConfig) && !this._exportData) { (0, _log.errLog)('vxe.error.reqModule', ['Export']); } } Object.assign(scrollYStore, { startIndex: 0, endIndex: 1, visibleSize: 0, adaptive: sYOpts.adaptive !== false }); Object.assign(scrollXStore, { startIndex: 0, endIndex: 1, visibleSize: 0 }); this.loadTableData(data).then(function () { if (data && data.length) { _this9.inited = true; _this9.initStatus = true; _this9.handleLoadDefaults(); _this9.handleInitDefaults(); } _this9.updateStyle(); }); _event.GlobalEvent.on(this, 'paste', this.handleGlobalPasteEvent); _event.GlobalEvent.on(this, 'copy', this.handleGlobalCopyEvent); _event.GlobalEvent.on(this, 'cut', this.handleGlobalCutEvent); _event.GlobalEvent.on(this, 'mousedown', this.handleGlobalMousedownEvent); _event.GlobalEvent.on(this, 'blur', this.handleGlobalBlurEvent); _event.GlobalEvent.on(this, 'mousewheel', this.handleGlobalMousewheelEvent); _event.GlobalEvent.on(this, 'keydown', this.handleGlobalKeydownEvent); _event.GlobalEvent.on(this, 'resize', this.handleGlobalResizeEvent); _event.GlobalEvent.on(this, 'contextmenu', this.handleGlobalContextmenuEvent); this.preventEvent(null, 'created'); }, mounted: function mounted() { var _this10 = this; if (process.env.NODE_ENV === 'development') { var $listeners = this.$listeners; if (!this.menuConfig && ($listeners['menu-click'] || $listeners['cell-menu'] || $listeners['header-cell-menu'] || $listeners['footer-cell-menu'])) { (0, _log.warnLog)('vxe.error.reqProp', ['menu-config']); } if (!this.tooltipConfig && ($listeners['cell-mouseenter'] || $listeners['cell-mouseleave'])) { (0, _log.warnLog)('vxe.error.reqProp', ['tooltip-config']); } } if (this.autoResize) { var resizeObserver = (0, _resize.createResizeEvent)(this.resizeOpts.refreshDelay ? _xeUtils["default"].throttle(function () { _this10.recalculate(true); }, this.resizeOpts.refreshDelay, { leading: true, trailing: true }) : function () { _this10.recalculate(true); }); resizeObserver.observe(this.$el); resizeObserver.observe(this.getParentElem()); this.$resize = resizeObserver; } this.preventEvent(null, 'mounted'); }, activated: function activated() { var _this11 = this; this.recalculate().then(function () { return _this11.refreshScroll(); }); this.preventEvent(null, 'activated'); }, deactivated: function deactivated() { this.preventEvent(null, 'deactivated'); }, beforeDestroy: function beforeDestroy() { if (this.$resize) { this.$resize.disconnect(); } this.closeFilter(); this.closeMenu(); this.preventEvent(null, 'beforeDestroy'); }, destroyed: function destroyed() { _event.GlobalEvent.off(this, 'paste'); _event.GlobalEvent.off(this, 'copy'); _event.GlobalEvent.off(this, 'cut'); _event.GlobalEvent.off(this, 'mousedown'); _event.GlobalEvent.off(this, 'blur'); _event.GlobalEvent.off(this, 'mousewheel'); _event.GlobalEvent.off(this, 'keydown'); _event.GlobalEvent.off(this, 'resize'); _event.GlobalEvent.off(this, 'contextmenu'); this.preventEvent(null, 'destroyed'); }, render: function render(h) { var _this12 = this, _on; var _e = this._e, $scopedSlots = this.$scopedSlots, tId = this.tId, tableData = this.tableData, tableColumn = this.tableColumn, tableGroupColumn = this.tableGroupColumn, isGroup = this.isGroup, loading = this.loading, stripe = this.stripe, showHeader = this.showHeader, height = this.height, tableBorder = this.tableBorder, treeOpts = this.treeOpts, treeConfig = this.treeConfig, mouseConfig = this.mouseConfig, mouseOpts = this.mouseOpts, vSize = this.vSize, validOpts = this.validOpts, showFooter = this.showFooter, overflowX = this.overflowX, overflowY = this.overflowY, scrollXLoad = this.scrollXLoad, scrollYLoad = this.scrollYLoad, scrollbarHeight = this.scrollbarHeight, highlightCell = this.highlightCell, highlightHoverRow = this.highlightHoverRow, highlightHoverColumn = this.highlightHoverColumn, editConfig = this.editConfig, validTipOpts = this.validTipOpts, initStore = this.initStore, columnStore = this.columnStore, filterStore = this.filterStore, ctxMenuStore = this.ctxMenuStore, ctxMenuOpts = this.ctxMenuOpts, footerTableData = this.footerTableData, hasTip = this.hasTip, columnOpts = this.columnOpts, rowOpts = this.rowOpts, loadingOpts = this.loadingOpts; var leftList = columnStore.leftList, rightList = columnStore.rightList; /*** * 新增开始 */ var editInputProps = { ref: this.editInputRef, props: { hooks: new _hooksManager["default"](), parentRendered: true, inputStartValue: this.editorInputStartValue, tableData: this.tableData, cellSelectionData: this.cellSelectionData, colgroups: this.colgroups, editingCell: this.editingCell, isCellEditing: this.isCellEditing, allRowKeys: this.colgroups, hasXScrollBar: this.hasXScrollBar, hasYScrollBar: this.hasYScrollBar, hasRightFixedColumn: this.hasRightFixedColumn, scrollBarWidth: this.getScrollBarWidth() }, on: (_on = {}, _defineProperty(_on, _constant.EMIT_EVENTS.EDIT_INPUT_VALUE_CHANGE, function (value) { _this12.updateEditingCellValue(value); }), _defineProperty(_on, _constant.EMIT_EVENTS.EDIT_INPUT_COPY, function (e) { // console.log(68000000,this) _this12.editorCopy(e); }), _defineProperty(_on, _constant.EMIT_EVENTS.EDIT_INPUT_PASTE, function (e) { _this12.editorPaste(e); }), _defineProperty(_on, _constant.EMIT_EVENTS.EDIT_INPUT_CUT, function (e) { _this12.editorCut(e); }), _on) }; // 新增结束 return h('div', { "class": ['vxe-table', 'vxe-table--render-default', "tid_".concat(tId), vSize ? "size--".concat(vSize) : '', "border--".concat(tableBorder), { 'vxe-editable': !!editConfig, 'cell--highlight': highlightCell, 'cell--selected': mouseConfig && mouseOpts.selected, 'cell--area': mouseConfig && mouseOpts.area, 'row--highlight': rowOpts.isHover || highlightHoverRow, 'column--highlight': columnOpts.isHover || highlightHoverColumn, 'is--header': showHeader, 'is--footer': showFooter, 'is--group': isGroup, 'is--tree-line': treeConfig && treeOpts.line, 'is--fixed-left': leftList.length, 'is--fixed-right': rightList.length, 'is--animat': !!this.animat, 'is--round': this.round, 'is--stripe': !treeConfig && stripe, 'is--loading': loading, 'is--empty': !loading && !tableData.length, 'is--scroll-y': overflowY, 'is--scroll-x': overflowX, 'is--virtual-x': scrollXLoad, 'is--virtual-y': scrollYLoad }], on: { keydown: this.keydownEvent } }, [ /** * 隐藏列 */ h('div', { "class": 'vxe-table-slots', ref: 'hideColumn' }, this.$slots["default"]), h('div', { "class": 'vxe-table--render-wrapper' }, [h('div', { "class": 'vxe-table--main-wrapper' }, [ /** * 表头 */ showHeader ? h(_header["default"], { ref: 'tableHeader', props: { tableData: tableData, tableColumn: tableColumn, tableGroupColumn: tableGroupColumn, size: vSize } }) : _e(), /** * 表体 */ h('vxe-table-body', { ref: 'tableBody', props: { tableData: tableData, tableColumn: tableColumn, size: vSize } }), // 区域选中 /*** * 新增开始 */ h(_index2["default"], _objectSpread({}, editInputProps)), // 新增结束 /** * 表尾 */ showFooter ? h('vxe-table-footer', { ref: 'tableFooter', props: { footerTableData: footerTableData, tableColumn: tableColumn, size: vSize } }) : _e()]), h('div', { "class": 'vxe-table--fixed-wrapper' }, [ /** * 左侧固定区域 */ leftList && leftList.length && overflowX ? renderFixed(h, this, 'left') : _e(), /** * 右侧固定区域 */ rightList && rightList.length && overflowX ? renderFixed(h, this, 'right') : _e()])]), /** * 空数据 */ h('div', { ref: 'emptyPlaceholder', "class": 'vxe-table--empty-placeholder' }, [h('div', { "class": 'vxe-table--empty-content' }, renderEmptyContenet(h, this))]), /** * 边框线 */ h('div', { "class": 'vxe-table--border-line' }), /** * 列宽线 */ h('div', { "class": 'vxe-table--resizable-bar', style: overflowX ? { 'padding-bottom': "".concat(scrollbarHeight, "px") } : null, ref: 'resizeBar' }), /** * 加载中 */ h(_index["default"], { "class": 'vxe-table--loading', props: { value: loading, icon: loadingOpts.icon, text: loadingOpts.text } }, this.callSlot($scopedSlots.loading, {})), /** * 筛选 */ initStore.filter ? h('vxe-table-filter', { ref: 'filterWrapper', props: { filterStore: filterStore } }) : _e(), /** * 导入 */ initStore["import"] && this.importConfig ? h('vxe-import-panel', { props: { defaultOptions: this.importParams, storeData: this.importStore } }) : _e(), /** * 导出/打印 */ initStore["export"] && (this.exportConfig || this.printConfig) ? h('vxe-export-panel', { props: { defaultOptions: this.exportParams, storeData: this.exportStore } }) : _e(), /** * 快捷菜单 */ ctxMenuStore.visible && this.isCtxMenu ? h('vxe-table-context-menu', { ref: 'ctxWrapper', props: { ctxMenuStore: ctxMenuStore, ctxMenuOpts: ctxMenuOpts } }) : _e(), /** * 通用提示 */ hasTip ? h('vxe-tooltip', { ref: 'commTip', props: { isArrow: false, enterable: false } }) : _e(), /** * 工具提示 */ hasTip ? h('vxe-tooltip', { ref: 'tooltip', props: this.tipConfig }) : _e(), /** * 校验提示 */ hasTip && this.editRules && validOpts.showMessage && (validOpts.message === 'default' ? !height : validOpts.message === 'tooltip') ? h('vxe-tooltip', { ref: 'validTip', "class": 'vxe-table--valid-error', props: validOpts.message === 'tooltip' || tableData.length === 1 ? validTipOpts : null }) : _e()]); }, methods: _methods["default"] }; exports["default"] = _default2;