UNPKG

mt-ui-components-vue3

Version:

玛果添实UI组件库(Vue3)

847 lines (846 loc) 38 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _vue = require("vue"); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _table = _interopRequireWildcard(require("ant-design-vue/lib/table")); var _components = require("../components"); var _Boolean = _interopRequireDefault(require("../Select/Boolean.js")); var _components2 = require("./components"); var _sortablejs = _interopRequireDefault(require("sortablejs")); var _core = require("@vueuse/core"); var _lodashEs = require("lodash"); var _util = require("./util"); var _index2 = require("./index"); require("../Search/typing"); require("../ProTable/src/proTableTypes"); var _useConfigInject2 = _interopRequireDefault(require("ant-design-vue/es/config-provider/hooks/useConfigInject")); var _index3 = _interopRequireDefault(require("./style/index.style")); var _classNames2 = _interopRequireDefault(require("ant-design-vue/es/_util/classNames")); 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; } var dataTableProps = function dataTableProps() { return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _table.tableProps)()), {}, { serial: Boolean, children: Boolean, controlSource: Array, draggable: { type: Boolean, default: true }, extra: Object, height: { type: Number, default: 200 }, showSearch: { type: Boolean, default: true }, showTool: { type: [Boolean, Object], default: true }, searchKey: { type: String, default: 'name' }, sortKey: { type: String, default: 'id' }, searchProps: { type: Object, default: function _default() { return {}; } } }); }; var DataTable = (0, _vue.defineComponent)({ name: 'DataTable', slots: ['expand'], props: dataTableProps(), emits: ['change', 'update:dataSource', 'editStatus'], setup: function setup(props, _ref) { var emit = _ref.emit, slots = _ref.slots, expose = _ref.expose; var draggableClassName = 'draggable-item'; var _getCurrentInstance = (0, _vue.getCurrentInstance)(), proxy = _getCurrentInstance.proxy; var selectedKey = (0, _vue.ref)(); // 选中标识 var editKey = (0, _vue.ref)(); // 编辑标识 var draggableRef = (0, _vue.ref)(null); var formRef = (0, _vue.ref)(); var formRowValidate = (0, _vue.ref)(true); // 行校验,用于上下左右操作控制 var formErr = (0, _vue.ref)({}); var updateStatus = (0, _vue.ref)(new Set()); var countNumber = (0, _vue.ref)(0); var maxLength = 30; var editKeys = (0, _vue.ref)({}); var _fullRef = (0, _vue.ref)(); if (props.showTool) { (0, _vue.provide)(_index2.FULL_CODE, _fullRef); } var _useFullscreen = (0, _core.useFullscreen)(_fullRef), isFullscreen = _useFullscreen.isFullscreen, enter = _useFullscreen.enter, exit = _useFullscreen.exit, toggle = _useFullscreen.toggle; var formErrorCache = (0, _vue.ref)({}); var inputFocus = (0, _vue.ref)(false); var showResult = (0, _vue.reactive)({ msg: 0, visible: false }); // 表单值 var formData = (0, _vue.reactive)({ table: [], search: [] }); var virtualData = (0, _vue.computed)(function () { var _formData$table, _formData$table$slice; return ((_formData$table = formData.table) === null || _formData$table === void 0 ? void 0 : (_formData$table$slice = _formData$table.slice) === null || _formData$table$slice === void 0 ? void 0 : _formData$table$slice.call(_formData$table, 0, (countNumber.value + 1) * maxLength)) || []; }); var sortTable = (0, _vue.ref)(); var showToolLeft = (0, _vue.computed)(function () { return (0, _lodashEs.isBoolean)(props.showTool) ? props.showTool : props.showTool.left !== false; }); (0, _util.useDirection)(function (code) { if (selectedKey.value && formRowValidate.value && !inputFocus.value) { var columnKeys = newColumns.value.map(function (item) { return item.dataIndex; }).filter(function (key) { return key !== 'action'; }); var _maxLength = formData.table.length - 1; var _selectedKey$value$sp = selectedKey.value.split('_'), _selectedKey$value$sp2 = (0, _slicedToArray2.default)(_selectedKey$value$sp, 3), id = _selectedKey$value$sp2[0], index = _selectedKey$value$sp2[1], dataIndex = _selectedKey$value$sp2[2]; var _dataIndex = columnKeys.findIndex(function (key) { return key === dataIndex; }) || 1; var newDataIndex = _dataIndex; var newIndex = Number(index); switch (code) { case 'left': if (_dataIndex > 1) { newDataIndex--; } break; case 'right': if (_dataIndex < columnKeys.length - 1) { newDataIndex++; } break; case 'down': if (index < _maxLength) { newIndex++; } break; case 'up': if (index > 0) { newIndex--; } break; } selectedKey.value = "td_".concat(newIndex, "_").concat(columnKeys[newDataIndex]); } }); var sortTables = function sortTables(data) { var sortKey = props.sortKey; return data.sort(function (a, b) { if (a[sortKey] > b[sortKey]) { return 1; } else if (a[sortKey] < b[sortKey]) { return -1; } else { return 0; } }); }; var search = function search(e) { var includeArr = []; var filterArr = []; selectedKey.value = ''; editKey.value = ''; if (e) { formData.table.forEach(function (item) { var _item$props$searchKey; if ((_item$props$searchKey = item[props.searchKey]) !== null && _item$props$searchKey !== void 0 && _item$props$searchKey.includes(e)) { includeArr.push(item); } else { filterArr.push(item); } }); formData.table = [].concat(includeArr, filterArr).map(function (item, index) { return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, { index: index + 1 }); }); showResult.msg = includeArr.length; showResult.visible = true; } else { showResult.msg = 0; showResult.visible = false; formData.table = sortTables(formData.table); } }; var cleanEditStatus = function cleanEditStatus() { editKeys.value = {}; updateStatus.value.clear(); }; var getData = function getData() { var quit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; return new Promise(function (resolve, reject) { formRef.value.validate().then(function () { var newData = (0, _util.cleanUUIDbyData)(formData.table); formErr.value = {}; resolve(newData); // 退出编辑模式 if (quit) { editKey.value = ''; } }).catch(function (err) { reject(err); }); }); }; var getList = function getList() { return formData.table; }; /** * 单个选中 * @param key */ var rowClick = /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(key) { return _regenerator.default.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: if (!(Object.keys(formErr.value).length && !formErr.value[key])) { _context.next = 2; break; } return _context.abrupt("return"); case 2: if (key !== editKey.value) { editKey.value = ''; } selectedKey.value = key; case 4: case "end": return _context.stop(); } }, _callee); })); return function rowClick(_x) { return _ref2.apply(this, arguments); }; }(); /** * 双击修改 * @param key */ var editClick = function editClick(key) { if (Object.keys(formErr.value).length && !formErr.value[key]) return; if (key === selectedKey.value) { editKey.value = key; editKeys.value[key] = true; } }; /** * 初始化拖拽 */ var sortTableHandle = function sortTableHandle() { var _draggableRef$value; if (sortTable.value) { var _sortTable$value; (_sortTable$value = sortTable.value) === null || _sortTable$value === void 0 ? void 0 : _sortTable$value.destroy(); } var ele = (_draggableRef$value = draggableRef.value) === null || _draggableRef$value === void 0 ? void 0 : _draggableRef$value.querySelector('tbody'); if (!ele) return; sortTable.value = new _sortablejs.default(ele, { draggable: '.ant-table-row', animation: 200, ghostClass: 'draggable-ghost', sort: true, onEnd: function onEnd(_ref3) { var _oldTarget$querySelec, _newTarget$querySelec; var oldIndex = _ref3.oldIndex, newIndex = _ref3.newIndex, to = _ref3.to, from = _ref3.from; // 获取真正的index var oldTarget = draggableRef.value.querySelector('.ant-table-tbody').querySelectorAll('.ant-table-row')[oldIndex - 1]; var newTarget = draggableRef.value.querySelector('.ant-table-tbody').querySelectorAll('.ant-table-row')[newIndex - 1]; var oldTargetPositions = (0, _util.getElData)((_oldTarget$querySelec = oldTarget.querySelectorAll('.j-row-click')) === null || _oldTarget$querySelec === void 0 ? void 0 : _oldTarget$querySelec[1]); var newTargetPositions = (0, _util.getElData)((_newTarget$querySelec = newTarget.querySelectorAll('.j-row-click')) === null || _newTarget$querySelec === void 0 ? void 0 : _newTarget$querySelec[1]); var _oldIndex = oldTargetPositions[1]; var _newIndex = newTargetPositions[1]; var curr = formData.table.splice(_oldIndex - 1, 1)[0]; formData.table.splice(_newIndex - 1, 0, curr); var _sort = [_oldIndex, _newIndex].sort(function (a, b) { return a - b; }), _sort2 = (0, _slicedToArray2.default)(_sort, 2), min = _sort2[0], max = _sort2[1]; for (var i = min; i <= max; i++) { formData.table[i - 1].index = i; } // 判断当前拖拽中是否有选中 if (selectedKey.value) { var _selectedKey$value$sp3 = selectedKey.value.split('_'), _selectedKey$value$sp4 = (0, _slicedToArray2.default)(_selectedKey$value$sp3, 3), td = _selectedKey$value$sp4[0], index = _selectedKey$value$sp4[1], dataIndex = _selectedKey$value$sp4[2]; if (index >= min && index <= max) { // 是否在拖拽范围内 var numIndex = Number(index); var _index = _newIndex; if (numIndex < _oldIndex) { _index = numIndex + 1; } else if (numIndex > _oldIndex) { _index = numIndex - 1; } selectedKey.value = [td, _index, dataIndex].join('_'); if (editKey.value) { editKey.value = [td, _index, dataIndex].join('_'); } } } } }); return sortTable; }; /** * 对比数据是否修改 * @param record * @param index * @param dataIndex * @param type */ var controlData = function controlData(record, index, dataIndex, type) { var _props$dataSource$ind; var item = props.columns.find(function (a) { return a.dataIndex === dataIndex; }); var key = "td_".concat(index, "_").concat(dataIndex); if (item !== null && item !== void 0 && item.control) { var _isControl = item.control(record, props.dataSource[index]); if (_isControl) { updateStatus.value.add(key); } else { updateStatus.value.delete(key); } return _isControl; } if (!type || !record) { return false; } var oldData = (_props$dataSource$ind = props.dataSource[index]) === null || _props$dataSource$ind === void 0 ? void 0 : _props$dataSource$ind[dataIndex]; var isControl = oldData ? JSON.stringify(oldData) !== JSON.stringify(record[dataIndex]) : true; if (isControl) { updateStatus.value.add(key); } else { updateStatus.value.delete(key); } // 该数据是否支持编辑 return isControl; }; // 重组columns var newColumns = (0, _vue.computed)(function () { var hasSerial = 'serial' in props && props.serial !== false; var serialItem = { dataIndex: 'index', title: '序号', width: 60 }; var propsColumns = (0, _lodashEs.cloneDeep)(props.columns); var _columns = propsColumns.map(function (item) { var _item$form; if ((_item$form = item.form) !== null && _item$form !== void 0 && _item$form.rules) { var index = item.form.rules.findIndex(function (item) { return item.callback && (0, _lodashEs.isFunction)(item.callback); }); if (index >= 0) { var callback = item.form.rules[index].callback; item.form.rules[index] = { validator: function validator(rule, value) { return callback(rule, value, formData.table); } }; } } item.customCell = function (record, rowIndex, column) { return { onClick: function onClick(e) { e.stopPropagation(); rowClick(!['index', 'action'].includes(column.dataIndex) ? "td_".concat(rowIndex, "_").concat(column.dataIndex) : ''); }, onDblclick: function onDblclick(e) { e.stopPropagation(); var isEdit = item.doubleClick ? item.doubleClick(record, rowIndex, column.dataIndex) : true; if (isEdit) { editClick(column.type ? "td_".concat(rowIndex, "_").concat(column.dataIndex) : ''); } } }; }; return (0, _objectSpread2.default)({}, item); }); return hasSerial ? [serialItem].concat((0, _toConsumableArray2.default)(_columns)) : _columns; }); var addEditor = function addEditor(index, dataIndex) { var key = "td_".concat(index, "_").concat(dataIndex); editKeys.value[key] = true; }; var addEditorAll = function addEditorAll(index) { var _iterator = (0, _createForOfIteratorHelper2.default)(props.columns), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var item = _step.value; addEditor(index, item.dataIndex); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } }; var addItem = /*#__PURE__*/function () { var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_data, index) { var vail, data, editIndex; return _regenerator.default.wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: if (!_data) { _context2.next = 9; break; } _context2.next = 3; return getData(); case 3: vail = _context2.sent; data = (0, _toConsumableArray2.default)(formData.table); editIndex = index + 1; if (index !== undefined) { data.splice(index + 1, 0, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _data), {}, { _sortIndex: index + 1, _uuid: (0, _util.getUUID)() })); } else { data.push((0, _objectSpread2.default)((0, _objectSpread2.default)({}, _data), {}, { _sortIndex: index, _uuid: (0, _util.getUUID)() })); editIndex = data.length - 1; } formData.table = data; //新增项进入编辑模式 newColumns.value.forEach(function (item, _index) { var _key = "td_".concat(editIndex, "_").concat(item.dataIndex); editKeys.value[_key] = true; if (_index === 0) { editKey.value = _key; } }); case 9: return _context2.abrupt("return", (0, _util.cleanUUIDbyData)(formData.table)); case 10: case "end": return _context2.stop(); } }, _callee2); })); return function addItem(_x2, _x3) { return _ref4.apply(this, arguments); }; }(); var removeEditKeysByIndex = function removeEditKeysByIndex(editIndex) { newColumns.value.forEach(function (item, _index) { var _key = "td_".concat(editIndex, "_").concat(item.dataIndex); delete editKeys.value[_key]; delete formErr.value[_key]; }); }; var removeItem = function removeItem(index) { if (index >= 0) { var data = (0, _toConsumableArray2.default)(formData.table); data.splice(index, 1); formData.table = data; removeEditKeysByIndex(index); updateStatus.value.add('delete_' + index); } return (0, _util.cleanUUIDbyData)(formData.table); }; var initItems = function initItems() { var _formRef$value; formData.table = sortTables((0, _util.setUUIDbyDataSource)(props.dataSource)); (_formRef$value = formRef.value) === null || _formRef$value === void 0 ? void 0 : _formRef$value.clearValidate(); countNumber.value = 0; return (0, _util.cleanUUIDbyData)(formData.table); }; var stringify = function stringify(data) { return data ? JSON.stringify(data) : ''; }; var firstValidate = (0, _lodashEs.debounce)(function () { var key = Object.keys(formErrorCache.value)[0]; if (key) { var errorNode = draggableRef.value.querySelector(".".concat(key)); var bodyNode = draggableRef.value.querySelector(".ant-table-body"); if (errorNode) { var index = Number(key.split('_')[1]); bodyNode.scrollTop = errorNode.getBoundingClientRect().height * index; } var errorMsg = formErrorCache.value[key].errorMsg; formErr.value[key] = errorMsg; if (!editKey.value) { editKey.value = key; } else { // 处于编辑模式,并且编辑项在校验错误项中 editKey.value = formErrorCache.value[editKey.value] ? editKey.value : key; } updateStatus.value.add(editKey.value); } formErrorCache.value = {}; }, 10); var handlePlacement = function handlePlacement(index, placement) { if (placement) { return index > 1 ? 'top' + placement : 'bottom' + placement; } return index > 1 ? 'top' : 'bottom'; }; var validate = function validate(name, status, errorMsg) { var key = "td_".concat(name[1], "_").concat(name[2]); if (!status) { formErrorCache.value[key] = { errorMsg: errorMsg[0], status: status }; } else { delete formErr.value[key]; } firstValidate(); }; (0, _vue.onMounted)(function () { (0, _vue.nextTick)(function () { var bodyNode = draggableRef.value.querySelector('.ant-table-body'); bodyNode.style.minHeight = '200px'; (0, _core.useInfiniteScroll)(draggableRef.value.querySelector('.ant-table-body'), function () { // 滑动到底部 if (countNumber.value * maxLength <= formData.table.length && formData.table[(countNumber.value + 1) * maxLength + 1]) { // 有多余数据时,进行添加 countNumber.value++; } }, { distance: 10 }); }); }); (0, _vue.watch)(function () { return JSON.stringify(props.dataSource); }, function () { formData.table = (0, _util.setUUIDbyDataSource)(props.dataSource); }, { immediate: true }); (0, _vue.watch)(function () { return formData.table; }, function () { // updateRevoke(formData.table); var data = (0, _util.cleanUUIDbyData)(formData.table); emit('change', data); emit('update:dataSource', data); }, { deep: true }); (0, _vue.watch)(function () { return JSON.stringify((0, _toConsumableArray2.default)(updateStatus.value.values())); }, function () { emit('editStatus', !!(0, _toConsumableArray2.default)(updateStatus.value.values()).length); }); (0, _vue.watch)(function () { return isFullscreen.value; }, function () { if (!isFullscreen.value) { proxy.$forceUpdate(); } }); expose({ getData: getData, getList: getList, addItem: addItem, removeItem: removeItem, initItems: initItems, addEditor: addEditor, addEditorAll: addEditorAll, cleanEditStatus: cleanEditStatus, fullRef: function fullRef() { return _fullRef.value; } }); var _useConfigInject = (0, _useConfigInject2.default)('data-table', props), prefixCls = _useConfigInject.prefixCls; var _useStyle = (0, _index3.default)(prefixCls), _useStyle2 = (0, _slicedToArray2.default)(_useStyle, 2), wrapSSR = _useStyle2[0], hashId = _useStyle2[1]; var prefixClsValue = prefixCls.value; var rootCls = (0, _classNames2.default)(prefixClsValue, (0, _defineProperty2.default)({}, hashId.value, true)); return function () { return wrapSSR((0, _vue.createVNode)("div", { "ref": _fullRef, "class": "".concat(rootCls, " ").concat(isFullscreen ? 'j-data-table-fullscreen' : '') }, [props.showTool !== false && (0, _vue.createVNode)("div", { "class": "j-data-table-tool" }, [showToolLeft && (0, _vue.createVNode)("div", { "class": "j-data-table-tool-left" }, [props.showSearch && (0, _vue.createVNode)("div", { "class": "j-data-table-search" }, [(0, _vue.createVNode)(_components.InputSearch, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props.searchProps), {}, { "allow-clear": true, "style": "width: 220px", "onSearch": search }), null)]), (0, _vue.createVNode)("div", { "class": "j-data-table-full" }, [(0, _vue.createVNode)(_components.AIcon, { "type": isFullscreen ? 'FullscreenExitOutlined' : 'FullscreenOutlined', "onClick": toggle }, null)]), showResult.visible && (0, _vue.createVNode)("div", { "class": "j-data-table-search-result" }, [(0, _vue.createTextVNode)("\u5DF2\u67E5\u8BE2\u5230"), (0, _vue.createVNode)("span", null, [showResult.msg]), (0, _vue.createTextVNode)(" \u6761\u76F8\u5173\u6570\u636E")])]), (0, _vue.createVNode)("div", { "class": "j-data-table-expand" }, [slots.expand && slots.expand()])]), (0, _vue.createVNode)("div", { "class": "j-data-table-body" }, [(0, _vue.createVNode)(_components.Form, { "ref": formRef, "layout": "horizontal", "model": formData, "scroll-to-first-error": true, "onValidate": validate }, { default: function _default() { return [(0, _vue.createVNode)("div", { "ref": draggableRef, "class": "draggable-body" }, [(0, _vue.createVNode)(_table.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, { "columns": newColumns.value, "pagination": false, "data-source": virtualData.value, "row-key": props.rowKey || '_uuid', "scroll": props.height ? { y: !isFullscreen.value ? props.height < 200 ? 200 : props.height : "calc(100vh - 160px)" } : undefined }), { headerCell: function headerCell(dt) { var _column$form; var column = dt.column, title = dt.title; return (0, _vue.createVNode)("span", { "class": "\n j-data-table-header\n ".concat((_column$form = column.form) !== null && _column$form !== void 0 && _column$form.required ? 'required' : '', "\n ") }, [slots.headerCell ? slots.headerCell({ column: column }) : column.title]); }, bodyCell: function bodyCell(dt) { var _column$form2, _column$form3, _column$form4, _column$form5, _column$form6; var column = dt.column, record = dt.record, index = dt.index; // 判断是否已修改 var isEditDiv = (editKeys["td_".concat(index, "_").concat(column.dataIndex)] || column.control) && controlData(record, record._sortIndex, column.dataIndex, column.type) ? (0, _vue.createVNode)("div", { "class": "j-row-update" }, null) : ''; var columnTypeElement = function columnTypeElement(columnType) { var _newColumns$value$fin, _column$components, _column$components2; var el = (0, _vue.createVNode)(_vue.Fragment, null, null); switch (columnType) { case "text": el = (0, _vue.createVNode)(_components.Input, { "value": formData.table[index][column.dataIndex], "onUpdate:value": function onUpdateValue($event) { return formData.table[index][column.dataIndex] = $event; }, "placeholder": "\u8BF7\u8F93\u5165".concat(column.title), "style": "width: 100%", "onFocus": function onFocus() { return inputFocus.value = true; }, "onBlur": function onBlur() { return inputFocus.value = false; } }, null); break; case 'number': el = (0, _vue.createVNode)(_components.InputNumber, { "value": formData.table[index][column.dataIndex], "onUpdate:value": function onUpdateValue($event) { return formData.table[index][column.dataIndex] = $event; }, "style": "width: 100%", "placeholder": "\u8BF7\u8F93\u5165".concat(column.title), "onFocus": function onFocus() { return inputFocus.value = true; }, "onBlur": function onBlur() { return inputFocus.value = false; } }, null); break; case 'TypeSelect': el = (0, _vue.createVNode)(_components2.DataTableTypeSelect, { "value": formData.table[index][(_newColumns$value$fin = newColumns.value.find(function (item) { return item.type === 'TypeSelect'; })) === null || _newColumns$value$fin === void 0 ? void 0 : _newColumns$value$fin.dataIndex], "onUpdate:value": function onUpdateValue($event) { return formData.table[index][(_newColumns$value$fin = newColumns.value.find(function (item) { return item.type === 'TypeSelect'; })) === null || _newColumns$value$fin === void 0 ? void 0 : _newColumns$value$fin.dataIndex] = $event; }, "placeholder": "\u8BF7\u9009\u62E9".concat(column.title) }, null); break; case 'select': el = (0, _vue.createVNode)(_components.Select, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (_column$components = column.components) === null || _column$components === void 0 ? void 0 : _column$components.props), {}, { "value": formData.table[index][column.dataIndex], "onUpdate:value": function onUpdateValue($event) { return formData.table[index][column.dataIndex] = $event; }, "style": "width: 100%", "options": column.options, "placeholder": "\u8BF7\u9009\u62E9".concat(column.title) }), null); break; case 'booleanSelect': el = (0, _vue.createVNode)(_Boolean.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (_column$components2 = column.components) === null || _column$components2 === void 0 ? void 0 : _column$components2.props), {}, { "value": formData.table[index][column.dataIndex], "onUpdate:value": function onUpdateValue($event) { return formData.table[index][column.dataIndex] = $event; }, "style": "width: 100%", "placeholder": "\u8BF7\u9009\u62E9".concat(column.title) }), null); break; case 'components': el = column.components.name ? (0, _vue.createVNode)((0, _vue.resolveComponent)("component"), (0, _objectSpread2.default)((0, _objectSpread2.default)({}, column.components.props), {}, { "is": column.components.name, "value": formData.table[index], "onUpdate:value": function onUpdateValue($event) { return formData.table[index] = $event; }, "columns": newColumns.value, "extra": props.extra, "record": record, "onFocus": function onFocus() { return inputFocus.value = true; }, "onBlur": function onBlur() { return inputFocus.value = false; } }), null) : (0, _vue.createVNode)(_vue.Fragment, null, null); break; } }; var noIndexColumn = (0, _vue.createVNode)("div", { "class": [draggableClassName, column.dataIndex !== 'action' ? 'j-row-click' : '', editKey.value === "td_".concat(index, "_").concat(column.dataIndex) && column.type ? 'j-data-table--edit' : ''], "data-index": column.type ? index : undefined, "data-name": column.dataIndex }, [!((_column$form2 = column.form) !== null && _column$form2 !== void 0 && _column$form2.isVerify) && !editKeys.value["td_".concat(index, "_").concat(column.dataIndex)] ? slots[column.dataIndex] ? slots[column.dataIndex]({ data: { record: record, index: index } }) : (0, _vue.createVNode)(_components.Ellipsis, null, { default: function _default() { return [record[column.dataIndex]]; } }) : !column.type && column.form ? (0, _vue.createVNode)(_components.FormItem, { "name": ['table', index].concat(((_column$form3 = column.form) === null || _column$form3 === void 0 ? void 0 : _column$form3.name) || column.dataIndex), "rules": (_column$form4 = column.form) === null || _column$form4 === void 0 ? void 0 : _column$form4.rules, "validate-first": true }, { default: function _default() { return [slots[column.dataIndex] ? slots[column.dataIndex]({ data: { record: record, index: index } }) : '']; } }) : (0, _vue.createVNode)(_components.FormItem, { "name": ['table', index].concat(((_column$form5 = column.form) === null || _column$form5 === void 0 ? void 0 : _column$form5.name) || column.dataIndex), "rules": (_column$form6 = column.form) === null || _column$form6 === void 0 ? void 0 : _column$form6.rules, "validate-first": true }, { default: function _default() { return [editKey.value !== "td_".concat(index, "_").concat(column.dataIndex) ? slots[column.dataIndex] ? slots[column.dataIndex]({ data: { record: record, index: index } }) : (0, _vue.createVNode)(_components.Ellipsis, null, { default: function _default() { return [record[column.dataIndex]]; } }) : column.type === 'text' ? (0, _vue.createVNode)(_components.Input, { "value": formData.table[index][column.dataIndex], "onUpdate:value": function onUpdateValue($event) { return formData.table[index][column.dataIndex] = $event; }, "placeholder": "\u8BF7\u8F93\u5165".concat(column.title), "style": "width: 100%", "onFocus": function onFocus() { return inputFocus.value = true; }, "onBlur": function onBlur() { return inputFocus.value = false; } }, null) : columnTypeElement(column.type)]; } })]); return (0, _vue.createVNode)("div", null, [isEditDiv, (0, _vue.createVNode)(_components2.FormError, { "id": "td_".concat(index, "_").concat(column.dataIndex), "index": index, "visible": !!formErr["td_".concat(index, "_").concat(column.dataIndex)], "content": formErr["td_".concat(index, "_").concat(column.dataIndex)], "is-edit": formErr["td_".concat(index, "_").concat(column.dataIndex)], "selected": selectedKey.value === "td_".concat(index, "_").concat(column.dataIndex), "name": column.type ? column.dataIndex : undefined, "get-popup-container": function getPopupContainer(e) { return e.parentNode; }, "placement": handlePlacement(index, column.placement) }, null), column.dataIndex === 'index' ? (0, _vue.createVNode)("div", { "class": draggableClassName }, [index + 1]) : noIndexColumn]); }, emptyText: function emptyText() { return (0, _vue.createVNode)("div", { "class": "j-data-table-empty" }, [(0, _vue.createVNode)(_components.Empty, null, null)]); } })])]; } })])])); }; } }); var _default2 = DataTable; exports.default = _default2;