UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

720 lines 348 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CRUDRenderer = void 0; var tslib_1 = require("tslib"); var react_1 = (0, tslib_1.__importDefault)(require("react")); var factory_1 = require("../factory"); var crud_1 = require("../store/crud"); var helper_1 = require("../utils/helper"); var Scoped_1 = require("../Scoped"); var Button_1 = (0, tslib_1.__importDefault)(require("../components/Button")); var filter_schema_1 = (0, tslib_1.__importDefault)(require("../utils/filter-schema")); var pick_1 = (0, tslib_1.__importDefault)(require("lodash/pick")); var isEqual_1 = (0, tslib_1.__importDefault)(require("lodash/isEqual")); var react_dom_1 = require("react-dom"); var tpl_1 = require("../utils/tpl"); var api_1 = require("../utils/api"); var omit_1 = (0, tslib_1.__importDefault)(require("lodash/omit")); var findIndex_1 = (0, tslib_1.__importDefault)(require("lodash/findIndex")); var Html_1 = (0, tslib_1.__importDefault)(require("../components/Html")); var components_1 = require("../components"); var icons_1 = require("../components/icons"); var Table_1 = require("./Table"); var tpl_builtin_1 = require("../utils/tpl-builtin"); // Jay var LabelPrint_1 = require("./Lion/LabelPrint"); var print_1 = require("../utils/print"); var LodopFuncs_1 = require("../utils/print/LodopFuncs"); var ExpressPrint_1 = require("./Lion/ExpressPrint/ExpressPrint"); var antd_1 = require("antd"); var ActionSheet_1 = (0, tslib_1.__importDefault)(require("../components/Lion/ActionSheet")); var utils_1 = require("./Lion/utils/utils"); var util_1 = require("../utils/print/util"); var locale_1 = require("../locale"); var shell_1 = require("../utils/shell"); var utils_2 = require("../utils/utils"); var ScanOutlined_1 = (0, tslib_1.__importDefault)(require("@ant-design/icons/lib/icons/ScanOutlined")); var gzip_1 = require("../utils/gzip"); var tools_1 = require("../utils/shell/tools"); var LoadingOutlined_1 = (0, tslib_1.__importDefault)(require("@ant-design/icons/lib/icons/LoadingOutlined")); var BatchOperation_1 = require("../components/Lion/BatchOperation"); var VirtualTable_1 = (0, tslib_1.__importDefault)(require("../components/VirtualTable")); var cloneDeep_1 = (0, tslib_1.__importDefault)(require("lodash/cloneDeep")); var LionCopyItem_1 = (0, tslib_1.__importDefault)(require("./Lion/components/LionCopyItem")); var sub_1 = require("../utils/sub"); var Workflow_1 = (0, tslib_1.__importDefault)(require("../components/Mobileprocess/Workflow")); var shell_2 = require("../utils/shell/shell"); var lodash_1 = require("lodash"); var SecondFilterDrawer_1 = require("../components/table/SecondFilter/SecondFilterDrawer"); var antdCompoentsProxy_1 = require("../components/antdCompoentsProxy"); var storage_1 = require("../utils/storage"); var DefaultListPopup_1 = (0, tslib_1.__importDefault)(require("../components/Lion/DefaultListPopup")); var icons_2 = require("@ant-design/icons"); var FingerprintModal_1 = (0, tslib_1.__importDefault)(require("../components/Lion/FingerprintModal")); var xlsx_1 = require("../utils/xlsx"); var AiTool_1 = (0, tslib_1.__importDefault)(require("./Table/AiTool")); // import modalStore from '../components/DragModal/modalStore'; var mobx_react_1 = require("mobx-react"); var tableCtxMenuStore_1 = (0, tslib_1.__importDefault)(require("./Table/tableCtxMenuStore")); var commonTableFunction_1 = require("../store/utils/commonTableFunction"); var RfidUtil_1 = require("../utils/RfidUtil"); var DateRangePicker_1 = require("../components/DateRangePicker"); var DatePicker_1 = require("../components/DatePicker"); var moment_1 = (0, tslib_1.__importDefault)(require("moment")); var OverflowWrapper_1 = (0, tslib_1.__importDefault)(require("../components/OverflowWrapper")); // 不做处理的按钮类型 var specialButtonType = ['rfid-action']; var CRUD = /** @class */ (function (_super) { (0, tslib_1.__extends)(CRUD, _super); function CRUD(props) { var _a, _b, _c; var _this = _super.call(this, props) || this; _this.sort = false; _this.saveData = new Map(); _this.startX = 0; _this.startY = 0; //离线的原始数据,用于重置按钮 _this.originOfflineData = []; _this.offlineForm = react_1.default.createRef(); _this.hash = ''; _this.filterDrawerOpened = false; _this.crudRef = react_1.default.createRef(); _this.fingerprintModalData = undefined; _this.hasToolBars = false; //是否有工具栏判断 _this.getInitParam = function () { var _a; var __ = _this.props.translate; var filterParam = {}; (_a = _this.props.filter) === null || _a === void 0 ? void 0 : _a.body.forEach(function (item) { var _a, _b, _c; var _d; if (!(0, lodash_1.isNil)(item.value)) { var key = (_d = item.name.split('.')) === null || _d === void 0 ? void 0 : _d[1]; var delimiter = item.delimiter || ','; var format_1 = item.inputFormat || item.format; if (['input-date-range', 'input-datetime-range', 'input-time-range'].includes(item.type)) { var itemValue = item.value.includes(delimiter) ? item.value.split(delimiter) .map(function (val) { return (0, tpl_builtin_1.filterDate)(val, undefined, format_1).format(format_1); }).join(delimiter) : item.value; if (DateRangePicker_1.availableRanges[item.value]) { var range = DateRangePicker_1.availableRanges[item.value]; var now = (0, moment_1.default)(); var startDate = range.startDate(now.clone()).format(format_1); var endDate = range.endDate(now.clone()).format(format_1); itemValue = [startDate, endDate].join(delimiter); } else { // 通过正则尝试匹配 for (var i = 0, len = DateRangePicker_1.advancedRanges.length; i < len; i++) { var value = DateRangePicker_1.advancedRanges[i]; var m = value.regexp.exec(item.value); if (m) { var range = value.resolve.apply(item.value, (0, tslib_1.__spreadArray)([__], m, true)); var now = (0, moment_1.default)(); var startDate = range.startDate(now.clone()).format(format_1); var endDate = range.endDate(now.clone()).format(format_1); itemValue = [startDate, endDate].join(delimiter); } } } filterParam = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, filterParam), (_a = {}, _a[key] = itemValue, _a)); } else if (['input-date', 'input-datetime', 'input-time', 'input-month', 'input-quarter', 'input-year'].includes(item.type)) { //实现时间点的解析 var itemValue = item.value.includes(delimiter) ? item.value : (0, tpl_builtin_1.filterDate)(item.value, undefined, format_1).format(format_1); if (DatePicker_1.availableShortcuts[item.value]) { var value = DatePicker_1.availableShortcuts[item.value]; var now = (0, moment_1.default)(); itemValue = value.date(now).format(format_1); } else { for (var i = 0, len = DatePicker_1.advancedShortcuts.length; i < len; i++) { var value = DatePicker_1.advancedShortcuts[i]; var m = value.regexp.exec(item.value); if (m) { var range = value.resolve.apply(item.value, (0, tslib_1.__spreadArray)([__], m, true)); var now = (0, moment_1.default)(); itemValue = range.date(now).format(format_1); } } } filterParam = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, filterParam), (_b = {}, _b[key] = itemValue, _b)); } else { filterParam = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, filterParam), (_c = {}, _c[key] = item.value, _c)); } } }); return filterParam; }; _this.filterData = {}; // 判断条件是否是个合法空值 如果是 空 的情况 默认是true 如果不是 则判断 是不是 undefined null '' _this.advancefilterValueIsLegalEmptyValue = function (item) { return item.op !== 10 && ((0, lodash_1.isNil)(item.values) || item.values === ''); }; _this.calcToolActionsMaxCount = function () { var toolActionsElement = _this.toolActionsRef.current; if (toolActionsElement) { var width = 0; for (var i = 0; i < toolActionsElement.children.length; i++) { var element = toolActionsElement.children.item(i); width += element.clientWidth + 12; if (width > toolActionsElement.clientWidth - 70) { _this.setState({ toolChildMaxCount: i }); break; } } } }; // 处理高级查询条件 sub 和 普通的 _this.dealAdvacedCondition = function (advacedArr) { return (advacedArr === null || advacedArr === void 0 ? void 0 : advacedArr.filter(function (item) { if (_this.advancefilterValueIsLegalEmptyValue(item)) { return false; } return true; })) || []; }; //记录当前选中行,以便再数据更新时向目标组件传送选中行的数据 _this.currentSelectedRow = 0; _this.changeSelectedRow = function (index) { if (index === void 0) { index = 0; } _this.currentSelectedRow = index; }; //获取全量数据,用于统计 _this.getAllData = function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var _a, api, env, allData, params, optionsParam, paramsData, res; var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; return (0, tslib_1.__generator)(this, function (_p) { switch (_p.label) { case 0: _a = this.props, api = _a.api, env = _a.env; allData = {}; if (!api) return [3 /*break*/, 2]; params = {}; if (Object.keys(this.state.filtercont || {}).length) { params = { advancedFilter: this.dealAdvacedCondition((_b = this.state.filtercont) === null || _b === void 0 ? void 0 : _b.advancedFilter), advancedFilterSub: this.dealAdvacedCondition((_c = this.state.filtercont) === null || _c === void 0 ? void 0 : _c.advancedFilterSub), advancedHeader: (_d = this.state.filtercont) === null || _d === void 0 ? void 0 : _d.advancedHeader, optionsParam: (_e = this.state.filtercont) === null || _e === void 0 ? void 0 : _e.optionsParam, filterParam: (_f = this.state.filtercont) === null || _f === void 0 ? void 0 : _f.filterParam }; if ((_g = this.state.filtercont) === null || _g === void 0 ? void 0 : _g.filterOptionData) { optionsParam = ((_h = this.state.filtercont) === null || _h === void 0 ? void 0 : _h.filterOptionData).optionsParam; params = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, params), optionsParam); } } paramsData = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, params), { index: 1, filterParam: (_j = this.props.store.query) === null || _j === void 0 ? void 0 : _j.filterParam, topN: ((_l = (_k = this.state.filtercont) === null || _k === void 0 ? void 0 : _k.limitParam) === null || _l === void 0 ? void 0 : _l.limitStatus) ? (_o = (_m = this.state.filtercont) === null || _m === void 0 ? void 0 : _m.limitParam) === null || _o === void 0 ? void 0 : _o.topN : undefined }); return [4 /*yield*/, env.fetcher(api, (0, helper_1.createObject)(this.props.data, paramsData))]; case 1: res = _p.sent(); if (res.ok && res.data) { allData = res.data; } else { allData = null; antd_1.message.error(res.msg); } return [2 /*return*/, allData]; case 2: return [2 /*return*/, allData]; } }); }); }; _this.dealCellValue = function (originValue, columnName) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; var columns = _this.props.columns; var keepFormat = _this.state.keepDataFormat === '1'; var value = originValue; var column = columns.find(function (column) { return column.name === columnName; }); var prefix = (_c = (_a = column.prefix) !== null && _a !== void 0 ? _a : (_b = column === null || column === void 0 ? void 0 : column.pristine) === null || _b === void 0 ? void 0 : _b.prefix) !== null && _c !== void 0 ? _c : ''; var suffix = (_f = (_d = column.suffix) !== null && _d !== void 0 ? _d : (_e = column === null || column === void 0 ? void 0 : column.pristine) === null || _e === void 0 ? void 0 : _e.suffix) !== null && _f !== void 0 ? _f : ''; if ((column === null || column === void 0 ? void 0 : column.type) === 'mapping') { value = (_h = (_g = column === null || column === void 0 ? void 0 : column.map) === null || _g === void 0 ? void 0 : _g[originValue]) !== null && _h !== void 0 ? _h : (originValue !== null && originValue !== void 0 ? originValue : ''); } else if ((column === null || column === void 0 ? void 0 : column.type) === 'number' && keepFormat) { var kilobitSeparator = (_l = (_j = column.kilobitSeparator) !== null && _j !== void 0 ? _j : (_k = column === null || column === void 0 ? void 0 : column.pristine) === null || _k === void 0 ? void 0 : _k.kilobitSeparator) !== null && _l !== void 0 ? _l : false; var precision = (_m = column.precision) !== null && _m !== void 0 ? _m : (_o = column === null || column === void 0 ? void 0 : column.pristine) === null || _o === void 0 ? void 0 : _o.precision; if (kilobitSeparator && originValue != null) { value = (0, helper_1.numberFormatter)(originValue, precision); } } else if ((column === null || column === void 0 ? void 0 : column.type) === 'number' && !keepFormat) { value = (0, lodash_1.isNil)(originValue) ? originValue : value / 100; } if (value != null) { return typeof value == 'object' ? '[文件]' : "" + (keepFormat ? prefix : '') + (typeof value == 'string' ? value.replaceAll('\n', '').replaceAll('\r', '') : value) + (keepFormat ? suffix : ''); } return ''; }; //导出统计数据 _this.handleExportStatic = function () { var _a, _b, _c, _d; var _e = _this.props, columns = _e.columns, data = _e.data; var staticExportRange = _this.state.staticExportRange; var selItems = []; if (staticExportRange === '1') { selItems = _this.getTableSelectedRowsData(); if (!selItems || selItems.length == 0) { antd_1.message.warn('选中数据为空'); return; } } var cols = columns.map(function (item) { return item.label; }); var excelData = (staticExportRange === '0' ? (_b = (_a = _this.tableStore) === null || _a === void 0 ? void 0 : _a.rows.map(function (row) { return row.data; })) !== null && _b !== void 0 ? _b : [] : staticExportRange === '1' ? selItems : data.itemsRaw).map(function (row) { return columns.map(function (item) { return _this.dealCellValue(row[item.name], item.name); }); }); (0, xlsx_1.exportXLSX)(cols, excelData, (((_d = (_c = _this.props.aliasTitle) === null || _c === void 0 ? void 0 : _c.trim) === null || _d === void 0 ? void 0 : _d.call(_c)) || '统计') + ".xlsx"); }; _this.handleExportCross = function () { var _a, _b, _c; var staticExportRange = _this.state.staticExportRange; var tableHeadRows = _this.tableStore.tableHeadRows.map(function (row) { return row.filter(function (item) { return item.name != 'SF_CHECK' && item.name != 'SF_PSEUDO'; }); }); var columns = _this.tableStore.filteredColumns.filter(function (item) { return item.type !== '__checkme' && item.type != '__pseudoColumn'; }); var excelData = (0, lodash_1.flatMap)((_a = _this.tableStore.rows) !== null && _a !== void 0 ? _a : [], function (row) { if (staticExportRange == '1') { return row.checked ? row.data : []; } return row.data; }); (0, xlsx_1.exportXLSXFromCross)(tableHeadRows, columns, excelData, (((_c = (_b = _this.props.aliasTitle) === null || _b === void 0 ? void 0 : _b.trim) === null || _c === void 0 ? void 0 : _c.call(_b)) || '交叉制表') + ".xlsx", _this.state.keepDataFormat === '1'); }; // 判断元素是否在小型弹窗里 _this.inSmallDialog = function () { var _a, _b, _c; return !!((_c = (_b = (_a = _this.crudRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.closest('div[role="dialog"]')) === null || _c === void 0 ? void 0 : _c.className.includes('Modal--sm')); }; _this.markSort = function () { _this.sort = true; }; /** * * @param keepDataFormat 保留格式 * @param isTemplate 导出方式 */ _this.handleExportDefault = function (keepDataFormat, exportType, exportRangeAll, exportFields) { var _a, _b, _c, _d, _e; var tableHeadRows = _this.tableStore.tableHeadRows.map(function (row) { return row.filter(function (item) { return item.column.type !== 'lion-upload' && item.name != 'SF_CHECK' && item.name != 'SF_PSEUDO' && item.name !== 'operation'; }); }); var columns = _this.tableStore.filteredColumns.filter(function (item) { return item.type !== 'lion-upload' && item.type !== '__checkme' && item.type != '__pseudoColumn' && item.name !== 'operation'; }); if (exportType === 'template' && (exportFields === null || exportFields === void 0 ? void 0 : exportFields.length)) { var exportCols_1 = []; var cols_1 = (_a = _this.tableStore) === null || _a === void 0 ? void 0 : _a.columns; exportFields.forEach(function (item) { var targetItem = cols_1 === null || cols_1 === void 0 ? void 0 : cols_1.find(function (col) { return col.name === item; }); if (targetItem) exportCols_1.push(targetItem); }); tableHeadRows = (0, commonTableFunction_1.getHeadRows)(exportCols_1).map(function (row) { return row.filter(function (item) { return item.column.type !== 'lion-upload' && item.name != 'SF_CHECK' && item.name != 'SF_PSEUDO' && item.name !== 'operation' && item.name && exportFields.includes(item.name); }); }); columns = exportCols_1.filter(function (item) { return item.type !== 'lion-upload' && item.type !== '__checkme' && item.type != '__pseudoColumn' && item.name !== 'operation' && item.name && exportFields.includes(item.name); }); } var excelData = (_c = (_b = _this.tableStore) === null || _b === void 0 ? void 0 : _b.rows.filter(function (row) { return exportRangeAll || row.checked; }).map(function (row) { return row.data; })) !== null && _c !== void 0 ? _c : []; (0, xlsx_1.exportXLSXFromCross)(tableHeadRows, columns, excelData, (((_e = (_d = _this.props.aliasTitle) === null || _d === void 0 ? void 0 : _d.trim) === null || _e === void 0 ? void 0 : _e.call(_d)) || '导出') + ".xlsx", keepDataFormat); }; _this.handleJump = function (body) { var _a; if (body.redirectType === '2') { _this.props.env.fetcher(body.linkUrl, body.bodydata).then(function (res) { if (res.ok && res.data != null) { _this.setState({ flowModalProps: { flowDetail: res.data }, flowModalVisible: true }); } else { antd_1.message.error(res.msg); } }); return; } var types = (0, helper_1.isMobile)() ? 'drawer' : 'dialog'; var action = { type: "action", actionType: types, close: true }; action[types] = { showLoading: (0, helper_1.isMobile)(), title: body.linkTitle, type: types, size: (_a = body.linkSize) !== null && _a !== void 0 ? _a : 'lg', bodyClassName: "overflow-y-auto max-h-nestSide-" + types, className: "h-full", actions: [], overlay: (0, helper_1.isMobile)() ? false : true, body: { schemaApi: { "method": "get", "url": body.linkUrl }, type: "service" } }; _this.handleAction(_this.props.e, action, body.bodydata); }; // 表格数据获取统一规范一下 _this.getTableRowsData = function () { var _a; return ((_a = _this.tableStore) === null || _a === void 0 ? void 0 : _a.rows.map(function (row) { return row.data; })) || _this.props.store.data.items || []; }; _this.getTableSelectedRowsData = function () { var _a; return ((_a = _this.tableStore) === null || _a === void 0 ? void 0 : _a.selectedRows.map(function (row) { return row.data; })) || _this.props.store.selectedItems.concat() || []; }; // 上拉加载更多数据 _this.lionPullRequest = function (values, init) { return new Promise(function (resolve, reject) { var _a; var _b, _c; var _d = _this.props, defaultParams = _d.defaultParams, data = _d.data, store = _d.store; var _e = _this.props, syncLocation = _e.syncLocation, pageField = _e.pageField, perPageField = _e.perPageField; values = syncLocation ? (0, helper_1.qsparse)((0, helper_1.qsstringify)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, defaultParams), values), store.query), undefined, true)) : values; store.changePage(init ? store.page : store.page + 1, (0, helper_1.isMobile)() ? (((_c = (_b = _this.props) === null || _b === void 0 ? void 0 : _b.perPage) !== null && _c !== void 0 ? _c : 10) < 20 ? 20 : _this.props.perPage) : _this.props.perPage); store.updateQuery((0, tslib_1.__assign)((0, tslib_1.__assign)({}, values), (_a = {}, _a[pageField || 'page'] = store.page, _a)), undefined, pageField, perPageField); _this.search({ page: store.page, loadDataMode: 'load-more' }, undefined, false, undefined, resolve, reject); store.setPristineQuery(); }); }; _this.handleLoadMore = function () { // if (!this.props.loadDataOnce) { _this.search({ page: _this.props.store.page + 1, loadDataMode: 'load-more' }); // } }; //移动端刷新或查询时需要滚动到顶部,不然会逐页请求数据 _this.handleScrollToTop = function () { if ((0, helper_1.isMobile)()) { var classPrefix = _this.props.classPrefix; var crud = (0, react_dom_1.findDOMNode)(_this); var container = crud.querySelector("." + classPrefix + "Table-content"); if (container) { container.scrollTo({ top: 0 }); } var Listitems = crud.querySelector("." + classPrefix + "List-items"); if (Listitems) { Listitems.scrollTo({ top: 0 }); } } }; //刷新数据,带查询条件 _this.handleResetData = function () { _this.handleScrollToTop(); _this.search({ page: 1 }); }; _this.handleSelectStructure = function (select) { var newArray = []; var pushChildren = function (item, newArray) { newArray.push(item); if (item.children && item.children.length > 0) { item.children.forEach(function (child) { pushChildren(child, newArray); }); } }; select.forEach(function (item) { pushChildren(item, newArray); }); return newArray; }; _this.handleOptions = function (body) { var columns = _this.props.columns; var optionsParam = (0, cloneDeep_1.default)(body); var compare1 = columns.map(function (item) { return item.name; }); var compare2 = optionsParam === null || optionsParam === void 0 ? void 0 : optionsParam.showFields; if (compare1 && compare2 && (0, isEqual_1.default)(compare1, compare2)) { optionsParam.showFields = []; } return optionsParam; }; _this.bulkActionRender = function (btn, index) { var _a, _b, _c, _d; var _e = _this.props, render = _e.render, store = _e.store, fullDataApi = _e.fullDataApi, primaryField = _e.primaryField; var ctx = store.mergedData; var selectedItems = _this.getTableSelectedRowsData(); var unSelectedItems = store.unSelectedItems; var ids = selectedItems.map(function (item) { return item.hasOwnProperty(primaryField) ? item[primaryField] : null; }).filter(function (item) { return item; }).join(','); return render("bulk-action/" + index, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, (0, omit_1.default)(btn, ['visibleOn', 'hiddenOn', 'disabledOn'])), { type: specialButtonType.includes(btn.type) ? btn.type : 'button', ignoreConfirm: true, hidden: false }), { key: "bulk-" + index, data: (0, helper_1.extendObject)(store.data, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, ctx), { ids: ids })), filterData: _this.state.filterData, fullDataApi: fullDataApi, disabled: btn.disabled || (btn.requireSelected !== false ? ((0, helper_1.isMobile)() && (0, lodash_1.isObject)((_b = (_a = btn) === null || _a === void 0 ? void 0 : _a.api) === null || _b === void 0 ? void 0 : _b.data) && Object.keys((_d = (_c = btn) === null || _c === void 0 ? void 0 : _c.api) === null || _d === void 0 ? void 0 : _d.data).includes('SELECTION_IDS') && selectedItems.length > 0 ? false : !selectedItems.length) : false), onAction: function (e, action) { return _this.handleBulkAction(selectedItems.concat(), unSelectedItems.concat(), e, action, btn); } }); }; _this.exchangeMode = function () { var _a = _this.props, listItem = _a.listItem, card = _a.card, cross = _a.cross; var modes = _this.state.modes; if (card && listItem && cross) { return; } if (modes == 'table' || modes == undefined) { _this.setState({ modes: listItem ? 'list' : cross ? 'cross' : 'cards' }, _this.handleFakeAnimation); } else { _this.setState({ modes: 'table' }, _this.handleFakeAnimation); } }; //函数防抖,3s内只触发第一次 _this.debounceChangeMode = (0, lodash_1.debounce)(_this.exchangeMode.bind(_this), 3000, { leading: true, trailing: false }); _this.handleFakeAnimation = (0, lodash_1.debounce)(function () { // // 加载假动画 在线上没问题amis上有问题 setTimeout(function () { var _a, _b, _c; (_c = (_b = (_a = _this.control) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.setLoading) === null || _c === void 0 ? void 0 : _c.call(_b, true); }, 0); setTimeout(function () { var _a, _b, _c; (_c = (_b = (_a = _this.control) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.setLoading) === null || _c === void 0 ? void 0 : _c.call(_b, false); }, 1000); }, 1000); _this.toolBarAction = function () { _this.reload(undefined, undefined, undefined); }; _this.renderReload = function (toolbar, index) { var _a = _this.props, render = _a.render, __ = _a.translate; if (toolbar.isToolBar && (0, helper_1.isMobile)()) { return (react_1.default.createElement("div", { className: 'toolbar-item', onClick: function () { return _this.toolBarAction(); } }, react_1.default.createElement("div", { className: 'toolbar-item-icon' }, react_1.default.createElement(icons_1.Icon, { icon: toolbar.icon })), react_1.default.createElement("div", { className: 'toolbar-item-name' }, __('reload')))); } else { var reloadButton = { label: '', icon: toolbar.icon, tooltip: __('reload'), tooltipPlacement: 'top', type: 'button' }; if (typeof toolbar === 'object') { reloadButton = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, reloadButton), (0, omit_1.default)(toolbar, ['type', 'align'])); } return render("toolbar/" + index, reloadButton, { onAction: _this.toolBarAction }); } }; _this.filtBoolean = function () { var _a, _b, _c, _d; var filt = _this.state.filtercont; return ((_b = (_a = _this.tableStore) === null || _a === void 0 ? void 0 : _a.filterColumns) === null || _b === void 0 ? void 0 : _b.size) > 0 || (filt && Object.keys(filt || {}).length && (((_c = filt === null || filt === void 0 ? void 0 : filt.advancedFilter) === null || _c === void 0 ? void 0 : _c.length) || ((_d = filt === null || filt === void 0 ? void 0 : filt.advancedFilterSub) === null || _d === void 0 ? void 0 : _d.length) || Object.keys((filt === null || filt === void 0 ? void 0 : filt.advancedHeader) || {}).length) ? true : false); }; // 展示头部判断 _this.headerCanShow = function () { var _a = _this.props, header = _a.header, filter = _a.filter; return !!header || !!filter || _this.filtBoolean(); }; // Jay _this.getTableStore = function (store) { _this.tableStore = store; }; _this.handleAdvanceSearch = function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var res, confirmData, key, _a, filter_1, _b, body, filterParam_1, filterNameArr, isFilterPause, queryParams, optionsParam, rawShowFields, itemCount, itemSumCount, showFields_1, sortFields, groupByFields, allInclude, _c, advancedFilterVisible, filterExist; var _this = this; var _d, _e, _f; return (0, tslib_1.__generator)(this, function (_g) { switch (_g.label) { case 0: return [4 /*yield*/, this.advanceFilterForm.validate()]; case 1: res = _g.sent(); confirmData = (_d = this.advanceFilterForm) === null || _d === void 0 ? void 0 : _d.confirmAdvancedFilter(); // 移动端的确认逻辑与PC端区别开 if ((0, helper_1.isMobile)()) { //删除filterParam值为空字符串的属性 if (confirmData.filterParam) { for (key in confirmData.filterParam) { if (Object.prototype.hasOwnProperty.call(confirmData.filterParam, key)) { if (confirmData.filterParam[key] === '') { delete confirmData.filterParam[key]; } } } } // 如果校验没有通过,查看是快速查询还是高级查询没有通过校验,与底下的逻辑区分开 if (!res) { _a = this.props.filter, filter_1 = _a === void 0 ? {} : _a; _b = filter_1.body, body = _b === void 0 ? [] : _b; filterParam_1 = confirmData.filterParam; filterNameArr = body.filter(function (bodyItem) { return bodyItem === null || bodyItem === void 0 ? void 0 : bodyItem.required; }).map(function (item) { var _a, _b; return (_b = (_a = item === null || item === void 0 ? void 0 : item.name) === null || _a === void 0 ? void 0 : _a.split('.')) === null || _b === void 0 ? void 0 : _b.pop(); }); isFilterPause = filterNameArr.some(function (name) { return (0, lodash_1.isNil)(filterParam_1[name]) || !filterParam_1[name].length; }); // filterParamStatus = !isFilterPause; // 如果是高级查询模式下,直接return if (this.state.advancedFilterAction) { return [2 /*return*/]; } else { if (isFilterPause) return [2 /*return*/]; } } } else { if (!res) return [2 /*return*/]; } this.handleScrollToTop(); queryParams = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, confirmData), { page: 1 }); optionsParam = (_e = queryParams === null || queryParams === void 0 ? void 0 : queryParams.filterOptionData) === null || _e === void 0 ? void 0 : _e.rawOptionsParams; rawShowFields = (_f = queryParams === null || queryParams === void 0 ? void 0 : queryParams.filterOptionData) === null || _f === void 0 ? void 0 : _f.rawShowFields; if (queryParams === null || queryParams === void 0 ? void 0 : queryParams.limitParam.limitStatus) { queryParams = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, queryParams), { topN: queryParams.limitParam.topN }); } else { queryParams = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, queryParams), { topN: undefined }); } if (this.advancedMode == 'normal' || this.advancedMode == 'popup-normal') { itemCount = optionsParam.itemCount, itemSumCount = optionsParam.itemSumCount, showFields_1 = optionsParam.showFields, sortFields = optionsParam.sortFields, groupByFields = optionsParam.groupByFields; if (!itemCount && !itemSumCount) { if (rawShowFields.length == 0) { antd_1.message.warning('显示字段不能为空'); return [2 /*return*/]; } } if (sortFields.length > 0 && groupByFields.length > 0) { allInclude = sortFields.every(function (sortField) { return showFields_1.some(function (showField) { return sortField.includes(showField); }); }); if (!allInclude) { antd_1.message.warning('同时使用排序和分组时,排序字段必须出现在显示字段中'); return [2 /*return*/]; } } } _c = this.state, advancedFilterVisible = _c.advancedFilterVisible, filterExist = _c.filterExist; if ((0, helper_1.isMobile)() && advancedFilterVisible && filterExist) { this.setState({ filterExist: false }); } this.props.store.updateQuery(queryParams); this.setState({ filtercont: queryParams }, function () { var _a, _b, _c, _d; _this.handlefilters(); _this.search(undefined, undefined, undefined, true, function (res) { if (optionsParam === null || optionsParam === void 0 ? void 0 : optionsParam.itemCount) { if (res.status === 0) { var count = res.data.items[0]['ITEM_NUMBER']; if (count) { antd_1.Modal.info({ icon: null, title: '提示', content: "\u9879\u6570: " + count, okText: '确定' }); } } } }, undefined, undefined, queryParams); _this.filterDrawerOpened = false; (_b = (_a = _this.tableStore) === null || _a === void 0 ? void 0 : _a.filterColumns) === null || _b === void 0 ? void 0 : _b.clear(); (_d = (_c = _this.tableStore) === null || _c === void 0 ? void 0 : _c.orderColumns) === null || _d === void 0 ? void 0 : _d.clear(); _this.setState({ showColumnsFilter: false }); }); this.hideAdvancedFilter(); return [2 /*return*/]; } }); }); }; _this.renderAdvancedFilterAction = (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("span", { style: { display: 'inline-block', marginRight: 10 } }, react_1.default.createElement(Button_1.default, { onClick: function (e) { var _a; (_a = _this.advanceFilterForm) === null || _a === void 0 ? void 0 : _a.resetIsModleFilter(e); } }, _this.props.translate('reset'))), react_1.default.createElement(Button_1.default, { level: "primary", onClick: function () { _this.handleAdvanceSearch(); } }, _this.props.translate('confirm')))); _this.renderAdvancedModalFooter = function () { var _a = _this.state, defaultList = _a.defaultList, templateSwitch = _a.templateSwitch, filtertpl = _a.filtertpl; return react_1.default.createElement("div", { className: 'defaultModal-footer' }, !(0, helper_1.isMobile)() && react_1.default.createElement("div", { className: 'defaultModal-footer-left' }, react_1.default.createElement(Button_1.default, { level: "primary", disabled: templateSwitch, onClick: function () { _this.setState({ templateSwitch: true, multipleDefault: '', defaultTempKey: '' }); } }, "+ \u65B0\u589E\u9ED8\u8BA4"), templateSwitch ? react_1.default.createElement("div", { className: 'template-name' }, react_1.default.createElement(antd_1.Input, { placeholder: "\u8BF7\u8F93\u5165\u6A21\u7248\u540D\u79F0", onChange: function (e) { var _a; return _this.setState({ multipleDefault: (_a = e.target.value) !== null && _a !== void 0 ? _a : '' }); } }), react_1.default.createElement(Button_1.default, { onClick: function () { _this.defaultOnOk(); _this.setState({ templateSwitch: false }); } }, react_1.default.createElement(icons_2.CheckOutlined, null)), react_1.default.createElement(Button_1.default, { onClick: function () { var _a, _b; _this.setState({ templateSwitch: false, multipleDefault: (_a = defaultList === null || defaultList === void 0 ? void 0 : defaultList[0]) === null || _a === void 0 ? void 0 : _a.tempName, defaultTempKey: (_b = defaultList === null || defaultList === void 0 ? void 0 : defaultList[0]) === null || _b === void 0 ? void 0 : _b.tempKey }); } }, react_1.default.createElement(icons_2.CloseOutlined, null))) : react_1.default.createElement("div", null, defaultList.length > 0 && react_1.default.createElement(antd_1.Select // allowClear={true} , { // allowClear={true} className: 'defaultModal-select-content', dropdownClassName: "dropdown-select-style", bordered: true, placeholder: '\u5168\u90E8', style: { textAlign: 'left' }, getPopupContainer: _this.props.env.getModalContainer, defaultActiveFirstOption: true, suffixIcon: react_1.default.createElement(icons_1.Icon, { symbol: true, icon: '#icon-tooltool_down', className: "icon" }), // defaultValue={defaultList.length > 0 ? defaultList[0].tempName : ''} value: defaultList.length > 0 ? defaultList[0].tempKey : '', onSelect: function (value) { var item = defaultList.find(function (item) { return item.tempKey == value; }); _this.defaultTemplate(item.tempKey, item.tempName); _this.defaultOnOk(item.tempName, item.tempKey); }, onChange: function (value) { if (defaultList[0].tempKey == value) return; var item = defaultList.find(function (item) { return item.tempKey == value; }); _this.defaultAdvancedQuery(2, { tempName: item.tempName, tempKey: item.tempKey }); } }, defaultList.map(function (item) { return (react_1.default.createElement(antd_1.Select.Option, { value: item.tempKey, key: item.tempKey, className: 'defaultModal-select-content-option' }, react_1.default.createElement("div", { className: 'defaultModal-select-content-option-tempName' }, item.tempName), react_1.default.createElement("div", { className: 'defaultModal-select-content-option-click', onClick: function (e) { return e.stopPropagation(); } }, react_1.default.createElement(icons_2.EditOutlined, { onClick: function (e) { return _this.defaultModify(e, item.tempKey, item.tempName); } }), react_1.default.createElement("div", null, react_1.default.createElement(antd_1.Popconfirm, { title: "\u786E\u5B9A\u8981\u5220\u9664\u5417?", onConfirm: function () { return _this.defaultDelete(item.tempKey); }, okText: _this.props.translate('confirm'), cancelText: _this.props.translate('cancel') }, react_1.default.createElement(icons_2.DeleteOutlined, null)))))); })))), react_1.default.createElement("div", { className: 'defaultModal-footer-right' }, _this.props.advancedFilterApi && react_1.default.createElement(react_1.default.Fragment, null, // 2025-02 更新逻辑为 有默认模版列表则显示设置默认按钮 (defaultList === null || defaultList === void 0 ? void 0 : defaultList.length) ? (react_1.default.createElement("span", { style: { display: 'inline-block', marginRight: 10 } }, react_1.default.createElement(Button_1.default, { disabled: templateSwitch, level: "primary", onClick: function () { (0, helper_1.isMobile)() && _this.setState({ defaultVisible: true }); !(0, helper_1.isMobile)() && defaultList.length > 0 && _this.defaultOnOk(false, false, true); // this.defaultAdvancedQuery(2) } }, _this.props.translate('default')))) : null, (0, helper_1.isMobile)() && (react_1.default.createElement("span", { style: { display: 'inline-block', marginRight: 10 } }, react_1.default.createElement(Button_1.default, { className: 'default-select', onClick: function () { // this.defaultAdvancedQuery(1) defaultList.length > 0 && _this.setState({ selectTmpShow: true }); } }, react_1.default.createElement("div", { className: "text" }, " ", _this.state.multipleDefault || _this.props.translate('application'), " "), react_1.default.createElement(icons_2.DownOutlined, null))))), react_1.default.createElement("span", { style: { display: 'inline-block', marginRight: 10 } }, react_1.default.createElement(Button_1.default, { onClick: function () { var _a, _b; (_a = _this.advanceFilterForm) === null || _a === void 0 ? void 0 : _a.resetAdvancedOptionsFilter(); (_b = _this.advanceFilterForm) === null || _b === void 0 ? void 0 : _b.resetAdvancedFilter(); } }, _this.props.translate('reset'))), react_1.default.createElement(Button_1.default, { level: "primary", onClick: _this.handleAdvanceSearch }, _this.props.translate('confirm')))); }; _this.handleTableRotate = function () { var tableRotate = _this.state.tableRotate; var classPrefix = _this.props.classPrefix; _this.setState({ tableRotate: !tableRotate, toolChildMaxCount: undefined }, function () { _this.calcToolActionsMaxCount(); if (tools_1.tools.isIOS) { var crud = (0, react_dom_1.findDOMNode)(_this); var container_1 = crud.querySelector("." + classPrefix + "Table-content"); setTimeout(function () { var origin = container_1.scrollLeft; container_1.scrollTo({ left: origin + 1 }); }, 800); } }); }; _this.clearSelectedItems = function () { _this.props.store.setSelectedItems([]); }; _this.getQueryStatus = function () { return _this.state.queryStatus; }; _this.handleAdvanced = function () { var _a = _this.props, render = _a.render, __ = _a.translate, advancedFilter = _a.advancedFilte