UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

699 lines 115 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FormTableRenderer = void 0; var tslib_1 = require("tslib"); var react_1 = tslib_1.__importStar(require("react")); var Item_1 = require("./Item"); var Button_1 = (0, tslib_1.__importDefault)(require("../../components/Button")); var helper_1 = require("../../utils/helper"); var api_1 = require("../../utils/api"); var tpl_builtin_1 = require("../../utils/tpl-builtin"); var findIndex_1 = (0, tslib_1.__importDefault)(require("lodash/findIndex")); var SimpleMap_1 = require("../../utils/SimpleMap"); var icons_1 = require("../../components/icons"); var find_1 = (0, tslib_1.__importDefault)(require("lodash/find")); var Scoped_1 = require("../../Scoped"); var crud_1 = require("../../store/crud"); var popconfirm_1 = (0, tslib_1.__importDefault)(require("antd/lib/popconfirm")); var cloneDeep_1 = (0, tslib_1.__importDefault)(require("lodash/cloneDeep")); var immutable_1 = require("immutable"); var debounce_1 = (0, tslib_1.__importDefault)(require("lodash/debounce")); var antd_1 = require("antd"); var throttle_1 = (0, tslib_1.__importDefault)(require("lodash/throttle")); var react_dom_1 = require("react-dom"); var utils_1 = require("../../utils/utils"); var ActionPopup_1 = (0, tslib_1.__importDefault)(require("../../components/Lion/ActionPopup")); var ActionSheet_1 = (0, tslib_1.__importDefault)(require("../../components/Lion/ActionSheet")); var tools_1 = require("../../utils/shell/tools"); var shell_1 = require("../../utils/shell"); var rc_virtual_list_1 = (0, tslib_1.__importDefault)(require("rc-virtual-list")); var sub_1 = require("../../utils/sub"); var DownOutlined_1 = (0, tslib_1.__importDefault)(require("@ant-design/icons/lib/icons/DownOutlined")); var dateTypeList = ['input-date', 'input-datetime', 'input-time', 'input-month', 'input-quarter', 'input-year']; var FormTable = /** @class */ (function (_super) { (0, tslib_1.__extends)(FormTable, _super); function FormTable(props) { var _a; var _this = _super.call(this, props) || this; _this.entityId = 1; _this.subForms = {}; _this.rowPrinstine = []; _this.editting = {}; //是否点击的是工具栏的新增 _this.isSelfAdd = false; _this.originTableData = []; _this.getValuesByApi = function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var _a, reloadApi, env, data, payLoad; return (0, tslib_1.__generator)(this, function (_b) { switch (_b.label) { case 0: _a = this.props, reloadApi = _a.reloadApi, env = _a.env, data = _a.data; if (!reloadApi) return [2 /*return*/, []]; return [4 /*yield*/, env.fetcher(reloadApi, data)]; case 1: payLoad = _b.sent(); if (payLoad.ok) { return [2 /*return*/, payLoad.data || []]; } else { antd_1.message.error(payLoad.msg); return [2 /*return*/, []]; } return [2 /*return*/]; } }); }); }; _this.getValue = function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var _a, needConfirm, columns, storeData, addNeedApi, addable, scaffold, env, store, value, payLoad; return (0, tslib_1.__generator)(this, function (_b) { switch (_b.label) { case 0: _a = this.props, needConfirm = _a.needConfirm, columns = _a.columns, storeData = _a.storeData, addNeedApi = _a.addNeedApi, addable = _a.addable, scaffold = _a.scaffold, env = _a.env, store = _a.store; value = { __isPlaceholder: true }; if (Array.isArray(columns)) { columns.forEach(function (column) { var _a, _b; if ((typeof column.value !== 'undefined' || typeof ((_a = column === null || column === void 0 ? void 0 : column.quickEdit) === null || _a === void 0 ? void 0 : _a.value) !== 'undefined') && typeof column.name === 'string') { (0, helper_1.setVariable)(value, column.name, column.value || ((_b = column === null || column === void 0 ? void 0 : column.quickEdit) === null || _b === void 0 ? void 0 : _b.value)); } // Jay // 新建行时每列的值为null else if (typeof column.name === 'string') { value[column.name] = null; } }); } //新增的时候获取不到主表的值 if (storeData) { Object.keys(value).forEach(function (key) { if (storeData.hasOwnProperty(key) && storeData[key]) { value[key] = storeData[key]; } }); } value = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, value), scaffold); if (!(addable && addNeedApi)) return [3 /*break*/, 2]; return [4 /*yield*/, env.fetcher(addNeedApi, storeData || store.data)]; case 1: payLoad = _b.sent(); if (payLoad.ok && payLoad.data) { value = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, value), payLoad.data); } _b.label = 2; case 2: if (needConfirm === false) { delete value.__isPlaceholder; } return [2 /*return*/, value]; } }); }); }; //当配有addApi时,vertical模式下,需要实时保存,记录当前新增的行 _this.dealAddRows = function () { var _a = _this.props, addApi = _a.addApi, tableLayout = _a.tableLayout; var items = _this.state.items; if (addApi && tableLayout === 'vertical') { _this.setState({ newAddRow: items.length - 1 }); } }; _this.removeItemQuick = function (index) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var _a, data, deleteApi, env, __, reloadApi, newValue, delItem, ctx, result, reloadData, rows_1, newItems_1; var _this = this; var _b; return (0, tslib_1.__generator)(this, function (_c) { switch (_c.label) { case 0: _a = this.props, data = _a.data, deleteApi = _a.deleteApi, env = _a.env, __ = _a.translate, reloadApi = _a.reloadApi; newValue = this.state.items.concat(); delItem = newValue[index]; if (!delItem) return [2 /*return*/]; ctx = (0, helper_1.createObject)(data, delItem); delete ctx.isOrigin; delete ctx.isUpdate; delete ctx.isAdd; return [4 /*yield*/, env.fetcher(deleteApi, ctx)]; case 1: result = _c.sent(); if (!result.ok) return [3 /*break*/, 3]; newValue.splice(index, 1); return [4 /*yield*/, env.fetcher(reloadApi, data)]; case 2: reloadData = _c.sent(); if (reloadData.ok) { rows_1 = (_b = reloadData.data) === null || _b === void 0 ? void 0 : _b.map(function (item) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, item), { isOrigin: true, isAdd: false, isUpdate: false })); }); this.setState({ items: rows_1 }, function () { _this.handleInputChange(rows_1); _this.handleStoreChange(rows_1); }); env.notify('success', '操作成功'); } else { newItems_1 = newValue.map(function (item) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, item), { isOrigin: true, isAdd: false, isUpdate: false })); }); this.setState({ items: newItems_1 }, function () { _this.handleInputChange(newItems_1); _this.handleStoreChange(newItems_1); }); env.notify('error', reloadData.msg); } _c.label = 3; case 3: if (!result.ok) { env.notify('error', result.msg); return [2 /*return*/]; } return [2 /*return*/]; } }); }); }; _this.handleCloseFiled = function () { if (_this.hasEdit) { return antd_1.Modal.confirm({ content: '新的修改没有保存,确认要离开?', okText: '确定', okType: 'primary', cancelText: '取消', className: 'ant-modal-adaptation-style', zIndex: 1011, onOk: function () { _this.setState({ addData: {}, addVisible: false }); } }); } return _this.setState({ addData: {}, addVisible: false }); }; _this.handleComfirm = function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var _a, addApi, data, env, reloadApi, _b, items, addData, res, ctx, payLoad, reloadData, rows_2, newItems_2, newData, newItems_3; var _this = this; return (0, tslib_1.__generator)(this, function (_c) { switch (_c.label) { case 0: _a = this.props, addApi = _a.addApi, data = _a.data, env = _a.env, reloadApi = _a.reloadApi; _b = this.state, items = _b.items, addData = _b.addData; return [4 /*yield*/, this.addForm.validate()]; case 1: res = _c.sent(); if (!res) return [3 /*break*/, 9]; if (!addApi) return [3 /*break*/, 8]; this.setState({ addLoading: true }); ctx = (0, helper_1.createObject)(data, addData); return [4 /*yield*/, env.fetcher(addApi, ctx)]; case 2: payLoad = _c.sent(); if (!payLoad.ok) return [3 /*break*/, 6]; if (!reloadApi) return [3 /*break*/, 4]; return [4 /*yield*/, env.fetcher(reloadApi, data)]; case 3: reloadData = _c.sent(); if (reloadData.ok) { rows_2 = reloadData.data.map(function (item) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, item), { isOrigin: true, isAdd: false, isUpdate: false })); }); this.setState({ addVisible: false, addData: {}, items: rows_2 }, function () { _this.handleInputChange(rows_2); _this.handleStoreChange(rows_2); }); } else { antd_1.message.error(payLoad.msg); } return [3 /*break*/, 5]; case 4: newItems_2 = Array.isArray(items) ? (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], items, true), [addData], false) : [addData]; this.setState({ items: newItems_2, addVisible: false, addData: {} }, function () { _this.handleInputChange(newItems_2); _this.handleStoreChange(newItems_2); }); antd_1.message.success(payLoad.msg || '操作成功!'); _c.label = 5; case 5: return [3 /*break*/, 7]; case 6: antd_1.message.error(payLoad.msg); _c.label = 7; case 7: this.setState({ addLoading: false }); return [3 /*break*/, 9]; case 8: newData = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, addData), { isAdd: true }); newItems_3 = Array.isArray(items) ? (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], items, true), [newData], false) : [newData]; this.setState({ items: newItems_3, addVisible: false, addData: {} }, function () { _this.handleInputChange(newItems_3); _this.handleStoreChange(newItems_3); }); _c.label = 9; case 9: return [2 /*return*/]; } }); }); }; _this.hasEdit = false; _this.renderNewForm = function () { var _a = _this.props, store = _a.store, render = _a.render, storeData = _a.storeData; var _b = _this.state, columns = _b.columns, addData = _b.addData; var ctx = (0, helper_1.createObject)(storeData, addData); var formItems = columns.map(function (item) { var _a, _b; var ishidden = false; if (item.hiddenOn) { ishidden = !(0, helper_1.isVisible)({ hiddenOn: item.hiddenOn }, ctx); } return (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, item), (item.quickEdit || {})), { type: (0, utils_1.exchangeType)(((_a = item.quickEdit) === null || _a === void 0 ? void 0 : _a.type) || item.type), staticShow: item.type === 'number' ? (item.quickEdit ? false : true) : undefined, isFieldTable: true, defaultOpen: false, hiddenOn: ishidden ? 'true' : (item.columnHiddenOn || ((_b = item.quickEdit) === null || _b === void 0 ? void 0 : _b.columnHiddenOn)) }); }); var formSchema = { type: "form", wrapWithPanel: false, mode: 'horizontal', body: formItems }; return render('', formSchema, { data: ctx, store: store, getFormInstance: function (form) { _this.addForm = form; }, popOverContainer: _this.props.env.getModalContainer, onChange: function (value, name, submit, changePristine) { _this.setState({ addData: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, addData), _this.moneyParser(name, formItems, 'line')) }); _this.hasEdit = true; } }); }; _this.editFooter = function () { return (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(antd_1.Button, { onClick: _this.handleCloseFiled, loading: _this.state.addLoading }, "\u53D6\u6D88"), react_1.default.createElement(antd_1.Button, { type: 'primary', onClick: _this.handleComfirm, loading: _this.state.addLoading }, "\u786E\u5B9A"))); }; _this.updateForm = function (items, diff, rowIndexes, isNew, hasBlur, needReload) { if (isNew === void 0) { isNew = false; } if (hasBlur === void 0) { hasBlur = false; } if (needReload === void 0) { needReload = false; } return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var _a, tableLayout, updateApi, env, data, reloadApi, updateIndex, res, origin, newData, ctx, payLoad, reloadData, rows_3; var _this = this; var _b; return (0, tslib_1.__generator)(this, function (_c) { switch (_c.label) { case 0: _a = this.props, tableLayout = _a.tableLayout, updateApi = _a.updateApi, env = _a.env, data = _a.data, reloadApi = _a.reloadApi; this.setState({ items: items }, function () { _this.handleInputChange(items); _this.handleStoreChange(items); }); if (!(!isNew && updateApi && this.state.newAddRow === -1 && tableLayout === 'vertical' && !hasBlur)) return [3 /*break*/, 4]; updateIndex = Number(rowIndexes); return [4 /*yield*/, ((_b = this.formGroup.get(updateIndex)) === null || _b === void 0 ? void 0 : _b.validate())]; case 1: res = _c.sent(); if (!res) return [3 /*break*/, 4]; origin = (0, helper_1.getTree)(items, updateIndex); newData = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, origin), diff); ctx = (0, helper_1.createObject)(data, newData); return [4 /*yield*/, env.fetcher(updateApi, ctx)]; case 2: payLoad = _c.sent(); if (!payLoad.ok) { antd_1.message.error(payLoad.msg); } if (!reloadApi) return [3 /*break*/, 4]; return [4 /*yield*/, env.fetcher(reloadApi, data)]; case 3: reloadData = _c.sent(); if (reloadData.ok) { rows_3 = reloadData.data.map(function (item) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, item), { isOrigin: true, isAdd: false, isUpdate: false })); }); this.setState({ items: rows_3 }, function () { _this.handleInputChange(rows_3); _this.handleStoreChange(rows_3); }); this.items = rows_3; } else { antd_1.message.error(reloadData.msg); } _c.label = 4; case 4: return [2 /*return*/]; } }); }); }; _this.handleBlur = function (index) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var _a, tableLayout, updateApi, data, env, reloadApi, res, origin, ctx, payLoad, reloadData, rows_4; var _this = this; var _b; return (0, tslib_1.__generator)(this, function (_c) { switch (_c.label) { case 0: _a = this.props, tableLayout = _a.tableLayout, updateApi = _a.updateApi, data = _a.data, env = _a.env, reloadApi = _a.reloadApi; if (!(updateApi && this.state.newAddRow === -1 && tableLayout === 'vertical')) return [3 /*break*/, 4]; return [4 /*yield*/, ((_b = this.formGroup.get(index)) === null || _b === void 0 ? void 0 : _b.validate())]; case 1: res = _c.sent(); if (!res) return [3 /*break*/, 4]; origin = (0, helper_1.getTree)(this.state.items, index); ctx = (0, helper_1.createObject)(data, origin); return [4 /*yield*/, env.fetcher(updateApi, ctx)]; case 2: payLoad = _c.sent(); if (!payLoad.ok) { antd_1.message.error(payLoad.msg); } if (!reloadApi) return [3 /*break*/, 4]; return [4 /*yield*/, env.fetcher(reloadApi, data)]; case 3: reloadData = _c.sent(); if (reloadData.ok) { rows_4 = reloadData.data.map(function (item) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, item), { isOrigin: true, isAdd: false, isUpdate: false })); }); this.setState({ items: rows_4 }, function () { _this.handleInputChange(rows_4); _this.handleStoreChange(rows_4); }); } else { antd_1.message.error(reloadData.msg); } _c.label = 4; case 4: return [2 /*return*/]; } }); }); }; _this.handleDiscard = function () { _this.setState({ operationType: 'delete' }, function () { return _this.removeItem(_this.state.items.length - 1); }); }; _this.reload = function (subPath, query, ctx) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var _a, reloadApi, env, data, reloadData, rows_5; var _this = this; return (0, tslib_1.__generator)(this, function (_b) { switch (_b.label) { case 0: _a = this.props, reloadApi = _a.reloadApi, env = _a.env, data = _a.data; if (!reloadApi) return [3 /*break*/, 2]; return [4 /*yield*/, env.fetcher(reloadApi, data)]; case 1: reloadData = _b.sent(); if (reloadData.ok) { rows_5 = reloadData.data.map(function (item) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, item), { isOrigin: true, isAdd: false, isUpdate: false })); }); this.setState({ items: rows_5 }, function () { _this.handleInputChange(rows_5); _this.handleStoreChange(rows_5); }); } else { antd_1.message.error(reloadData.msg); } _b.label = 2; case 2: return [2 /*return*/]; } }); }); }; _this.handleSaveOrder = function (targetIndex) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var _a, addApi, env, data, reloadApi, items, res, ctx, payLoad, reloadData, rows_6; var _this = this; var _b; return (0, tslib_1.__generator)(this, function (_c) { switch (_c.label) { case 0: _a = this.props, addApi = _a.addApi, env = _a.env, data = _a.data, reloadApi = _a.reloadApi; items = this.state.items; return [4 /*yield*/, ((_b = this.formGroup.get(targetIndex)) === null || _b === void 0 ? void 0 : _b.validate())]; case 1: res = _c.sent(); if (!res) return [3 /*break*/, 8]; if (!addApi) return [3 /*break*/, 8]; this.setState({ addLoading: true }); ctx = (0, helper_1.createObject)(data, items[items.length - 1]); return [4 /*yield*/, env.fetcher(addApi, ctx)]; case 2: payLoad = _c.sent(); if (!payLoad.ok) return [3 /*break*/, 6]; this.setState({ newAddRow: -1 }); if (!reloadApi) return [3 /*break*/, 4]; return [4 /*yield*/, env.fetcher(reloadApi, data)]; case 3: reloadData = _c.sent(); if (reloadData.ok) { rows_6 = reloadData.data.map(function (item) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, item), { isOrigin: true, isAdd: false, isUpdate: false })); }); this.setState({ items: rows_6 }, function () { _this.handleInputChange(rows_6); _this.handleStoreChange(rows_6); }); } else { antd_1.message.error(payLoad.msg); } return [3 /*break*/, 5]; case 4: antd_1.message.success(payLoad.msg || '操作成功!'); _c.label = 5; case 5: return [3 /*break*/, 7]; case 6: antd_1.message.error(payLoad.msg); _c.label = 7; case 7: this.setState({ addLoading: false }); _c.label = 8; case 8: return [2 /*return*/]; } }); }); }; _this.genExtra = function (delIndex) { var _a = _this.props, ns = _a.classPrefix, __ = _a.translate, env = _a.env, needConfirm = _a.needConfirm, prinstine = _a.prinstine, removable = _a.removable, disabled = _a.disabled, addable = _a.addable, showAddBtn = _a.showAddBtn, deleteApi = _a.deleteApi, reloadApi = _a.reloadApi; var newAddRow = _this.state.newAddRow; var initData = prinstine || _this.originTableData; if (newAddRow === delIndex) return null; return (react_1.default.createElement("div", null, addable && showAddBtn !== false && react_1.default.createElement(Button_1.default, { disabled: disabled || newAddRow !== -1, size: "sm", level: 'link', onClick: function () { return _this.throttleAddItem(_this.state.items.length); } }, _this.props.addBtnLabel ? (react_1.default.createElement("span", null, _this.props.addBtnLabel)) : __('Combo.add')), needConfirm !== false ? null : react_1.default.createElement(popconfirm_1.default, { title: __('Table.deleteRow'), okText: __('confirm'), cancelText: __('cancel'), onConfirm: function (e) { e === null || e === void 0 ? void 0 : e.stopPropagation(); _this.setState({ operationType: 'delete' }, function () { return deleteApi && reloadApi ? _this.removeItemQuick(delIndex) : _this.removeItem(delIndex); }); } }, react_1.default.createElement(Button_1.default, { classPrefix: ns, size: "sm", level: "link", disabled: !removable && delIndex <= initData.length - 1 || newAddRow !== -1, tooltipContainer: (env === null || env === void 0 ? void 0 : env.getTopModalContainer) || undefined }, _this.props.deleteBtnLabel ? (react_1.default.createElement("span", null, _this.props.deleteBtnLabel)) : __('delete'))))); }; _this.genExtraisModle = function (delIndex, addBtnLabel) { var _a = _this.props, ns = _a.classPrefix, __ = _a.translate, env = _a.env, needConfirm = _a.needConfirm, prinstine = _a.prinstine, removable = _a.removable, disabled = _a.disabled, addable = _a.addable, showAddBtn = _a.showAddBtn, cx = _a.classnames, deleteApi = _a.deleteApi, reloadApi = _a.reloadApi; var _b = _this.state, newAddRow = _b.newAddRow, items = _b.items; var initData = prinstine || _this.originTableData; if (newAddRow === delIndex) return null; return (addBtnLabel ? react_1.default.createElement(react_1.default.Fragment, null, addable && !(disabled || newAddRow !== -1) && ((items === null || items === void 0 ? void 0 : items.length) - 1) == delIndex && showAddBtn !== false && react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(Button_1.default, { type: "button", className: cx('AddBtnLabel'), onClick: function () { return _this.throttleAddItem(_this.state.items.length); } }, _this.props.addBtnLabel ? (react_1.default.createElement("span", null, _this.props.addBtnLabel)) : __('Combo.add')), _this.renderMobileActions())) : react_1.default.createElement(react_1.default.Fragment, null, needConfirm !== false ? null : react_1.default.createElement(ActionPopup_1.default, { props: _this.props, disabled: !removable && delIndex <= initData.length - 1 || newAddRow !== -1, onConfirm: function (e) { e === null || e === void 0 ? void 0 : e.stopPropagation(); _this.setState({ operationType: 'delete' }, function () { return deleteApi && reloadApi ? _this.removeItemQuick(delIndex) : _this.removeItem(delIndex); }); } }))); }; // 将数字还原 _this.parser = function (value, prefix, suffix, kilobitSeparator) { if (value && typeof value == 'string') { prefix && (value = value.replace(prefix, '')); suffix && (value = value.replace(suffix, '')); kilobitSeparator && (value = value.replace(/,/g, '')); } return value; }; //金额类型格式转化,去掉千分位,前后缀等 _this.moneyParser = function (obj, formItems, mode) { var newObj = (0, tslib_1.__assign)({}, obj); Object.entries(obj).forEach(function (_a) { var k = _a[0], v = _a[1]; var formItem = mode === 'property' ? formItems.find(function (item) { var _a, _b; return ((_a = item.content) === null || _a === void 0 ? void 0 : _a.type) === 'input-number' && ((_b = item.content) === null || _b === void 0 ? void 0 : _b.name) === k; }) : formItems.find(function (item) { return item.type === 'input-number' && item.name === k; }); if (formItem) { if (typeof v == 'string' || v == undefined) { newObj[k] = v; } else { var kilobitSeparator = formItem.kilobitSeparator, prefix = formItem.prefix, suffix = formItem.suffix, precision = formItem.precision; var fixedValue = null; if (precision == 0 || precision) { fixedValue = v.toFixed(Number(precision)); } newObj[k] = Number(_this.parser((precision == 0 || precision) ? fixedValue : v, prefix, suffix, kilobitSeparator)); } } }); return newObj; }; //标题 _this.renderLabel = function () { var _a = _this.props, label = _a.label, labelName = _a.labelName; var fieldTitle = (label || labelName || ''); var labelTag = _this.props.required || fieldTitle.includes('</font>') ? react_1.default.createElement("span", { style: { color: 'red', fontSize: (0, helper_1.isMobile)() ? '12px' : '14px' } }, "*") : null; var labelContent = fieldTitle.replace("<font color='red'>*</font>", '') || ''; return { labelTag: labelTag, labelContent: labelContent }; }; _this.formGroup = new Map(); _this.changeValues = ''; _this.tiledItemRef = (0, react_1.createRef)(); _this.renderPropertyMode = function () { var _a; var _b = _this.props, span = _b.span, render = _b.render, __ = _b.translate, store = _b.store, storeData = _b.storeData, editable = _b.editable, cx = _b.classnames, reloadApi = _b.reloadApi, primaryField = _b.primaryField; var _c = _this.state, columns = _c.columns, items = _c.items, newAddRow = _c.newAddRow; var formItems = columns.map(function (item) { var _a, _b, _c, _d; var ishidden = false; if (item.hiddenOn) { ishidden = !(0, helper_1.isVisible)({ hiddenOn: item.hiddenOn }, storeData); } return (0, tslib_1.__assign)((0, tslib_1.__assign)({ content: (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, item), (item.quickEdit || {})), { type: ((_a = item.quickEdit) === null || _a === void 0 ? void 0 : _a.type) || (!item.quickEdit && item.type === 'mapping' ? 'static-mapping' : '') || (!item.quickEdit && ((_b = item.type) === null || _b === void 0 ? void 0 : _b.includes('date')) ? 'static-' + item.type : '') || item.type || 'static', label: null, inheritWidth: true, isFieldTable: true, updateImmediately: true, labelRemark: null, remark: null, defaultOpen: false, classNameExpr: undefined }) }, item), { inheritWidth: true, hiddenOn: ishidden ? 'true' : (item.columnHiddenOn || ((_c = item.quickEdit) === null || _c === void 0 ? void 0 : _c.columnHiddenOn)), span: item.colSpan, label: item.required ? (((_d = item.label) === null || _d === void 0 ? void 0 : _d.includes('*')) ? item.label : "<font color='red'>*</font>" + item.label) : item.label, classNameExpr: item.classNameExpr || _this.props.rowClassNameExpr }); }); var formSchema = { type: "form", wrapWithPanel: false, mode: 'horizontal', store: store, name: 'property-form', body: { type: "property", items: formItems, column: span } }; var _d = _this.renderLabel(), labelTag = _d.labelTag, labelContent = _d.labelContent; var ItemRender = function (item, index) { var _a; return react_1.default.createElement("div", { className: 'tiled-item', key: index + '' }, react_1.default.createElement("div", { className: "tiled-item-title " + (newAddRow === index ? 'isAdding' : ''), style: { display: 'flex' } }, react_1.default.createElement("div", { className: 'tiled-item-title-left' }, react_1.default.createElement("span", { style: { color: 'var(--saas-font-size-black)' } }, labelTag, labelContent + (index === 0 && items.length === 1 ? '' : (index + 1)), !(0, helper_1.isMobile)() && _this.props.fieldTableRemark && render('label-remark', { type: 'remark', icon: '#icon-tooltool_help', tooltip: _this.props.fieldTableRemark, container: _this.props.popOverContainer ? _this.props.popOverContainer : (_a = _this.props.env) === null || _a === void 0 ? void 0 : _a.getTopModalContainer }), react_1.default.createElement(DownOutlined_1.default, { rotate: _this.state.foldIds.includes(index) ? -90 : 0, onClick: function () { _this.setState(function (pre) { return ({ foldIds: pre.foldIds.includes(index) ? pre.foldIds.filter(function (idx) { return idx != index; }) : pre.foldIds.concat(index) }); }); } })), newAddRow === index && react_1.default.createElement("span", { style: { marginLeft: 32 } }, __('Table.moved', { moved: 1 }), react_1.default.createElement("button", { type: "button", className: cx('Button Button--xs Button--success m-l-sm'), onClick: function () { return _this.handleSaveOrder(index); } }, react_1.default.createElement(icons_1.Icon, { icon: "check", className: "icon m-r-xs", loading: _this.state.addLoading }), __('Form.submit')), react_1.default.createElement("button", { type: "button", className: cx('Button Button--xs Button--danger m-l-sm'), onClick: _this.handleDiscard }, react_1.default.createElement(icons_1.Icon, { icon: "close", className: "icon m-r-xs" }), __('Table.discard')))), _this.genExtra(index)), render('', newAddRow !== -1 ? (newAddRow === index ? formSchema : (0, tslib_1.__assign)((0, tslib_1.__assign)({}, formSchema), { body: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, formSchema.body), { items: formSchema.body.items.map(function (formIns) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, formIns), { content: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, formIns.content), { disabled: true }) })); }) }) })) : formSchema, { className: _this.state.foldIds.includes(index) ? 'fieldBodyFold' : undefined, data: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, storeData), item), store: store, onBlur: _this.props.updateApi ? function () { return _this.handleBlur(index); } : undefined, getFormInstance: function (form) { _this.formGroup.set(index, form); }, onChange: function (value, name, submit, changePristine) { var _a, _b, _c, _d, _e, _f; // 线上失焦的时候也会触发onChange, 所以要处理一下,这次的值等于上次的值就不触发了 if (_this.props.addApi) { //是否是输入框,带有失焦事件,在失焦时进行实时提交,替他则值改变时提交 var hasBlur = formItems.find(function (fItem) { var _a, _b; return ((_a = fItem.content) === null || _a === void 0 ? void 0 : _a.type.includes('input')) && !dateTypeList.includes(fItem.type) && fItem.name === ((_b = Object.keys(name)) === null || _b === void 0 ? void 0 : _b[0]); }); if (JSON.stringify(name) !== _this.changeValues) { _this.handleTableSave(((_a = storeData === null || storeData === void 0 ? void 0 : storeData[_this.props.name]) === null || _a === void 0 ? void 0 : _a[index]) || ((_c = (_b = store.data) === null || _b === void 0 ? void 0 : _b[_this.props.name]) === null || _c === void 0 ? void 0 : _c[index]), _this.moneyParser(name, formItems, 'property'), String(index), false, !!hasBlur, !!reloadApi); } _this.changeValues = JSON.stringify(name); } else { _this.handleTableSave(((_d = storeData === null || storeData === void 0 ? void 0 : storeData[_this.props.name]) === null || _d === void 0 ? void 0 : _d[index]) || ((_f = (_e = store.data) === null || _e === void 0 ? void 0 : _e[_this.props.name]) === null || _f === void 0 ? void 0 : _f[index]), _this.moneyParser(name, formItems, 'property'), String(index)); } } })); }; return react_1.default.createElement("div", { className: "property-tiled " + (items.length > 25 ? 'virtual-tiled-table' : ''), ref: _this.tiledItemRef }, items.length ? (items.length > 25 ? react_1.default.createElement(antd_1.List, { className: 'table-vertical-virtual-list' }, react_1.default.createElement(rc_virtual_list_1.default, { data: items, height: _this.state.containerHeight, itemHeight: _this.state.itemHeight, itemKey: primaryField || '' }, function (item, index) { return react_1.default.createElement(antd_1.List.Item, { key: (item[primaryField !== null && primaryField !== void 0 ? primaryField : ''] || '') + index }, react_1.default.createElement("div", { className: 'virtual-list-row-item' }, ItemRender(item, index))); })) : items.map(function (item, index) { return ItemRender(item, index); })) : (react_1.default.createElement("div", { className: 'empty-container' }, react_1.default.createElement("div", { className: 'empty-title' }, labelTag, labelContent, !(0, helper_1.isMobile)() && _this.props.fieldTableRemark && render('label-remark', { type: 'remark', icon: '#icon-tooltool_help', tooltip: _this.props.fieldTableRemark, container: _this.props.popOverContainer ? _this.props.popOverContainer : (_a = _this.props.env) === null || _a === void 0 ? void 0 : _a.getTopModalContainer })), !editable && react_1.default.createElement("div", { className: 'empty-content' }, react_1.default.createElement(antd_1.Empty, { style: { position: 'sticky', display: 'flex', flexDirection: 'column', justifyContent: 'center', left: 0, margin: '-8px', overflow: 'hidden', width: '100%', height: '130px' }, description: __('placeholder.noData') }))))); }; _this.renderLineMode = function () { var _a; var _b = _this.props, render = _b.render, label = _b.label, labelName = _b.labelName, __ = _b.translate, store = _b.store, storeData = _b.storeData, editable = _b.editable, reloadApi = _b.reloadApi, primaryField = _b.primaryField; var _c = _this.state, columns = _c.columns, items = _c.items, newAddRow = _c.newAddRow; var formItems = columns.map(function (item) { var _a, _b; var ishidden = false; if (item.hiddenOn) { ishidden = !(0, helper_1.isVisible)({ hiddenOn: item.hiddenOn }, storeData); } return (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, item), (item.quickEdit || {})), { type: (0, utils_1.exchangeType)(((_a = item.quickEdit) === null || _a === void 0 ? void 0 : _a.type) || item.type), staticShow: item.type === 'number' ? (item.quickEdit ? false : true) : undefined, isFieldTable: true, updateImmediately: true, defaultOpen: false, hiddenOn: ishidden ? 'true' : (item.columnHiddenOn || ((_b = item.quickEdit) === null || _b === void 0 ? void 0 : _b.columnHiddenOn)), remark: null }); }); var formSchema = { type: "form", wrapWithPanel: false, mode: 'horizontal', store: store, body: formItems }; var _d = _this.renderLabel(), labelContent = _d.labelContent, labelTag = _d.labelTag; var fieldTitle = (label || labelName || ''); fieldTitle = fieldTitle.includes('</font>') ? fieldTitle.replace("<font color='red'>*</font>", '') : fieldTitle; var ItemRender = function (item, index) { return react_1.default.createElement("div", { className: 'tiled-item', key: index + '' }, react_1.default.createElement("div", { className: 'tiled-item-titlename', style: { height: "32px", fontSize: '14px', lineHeight: '32px' } }, react_1.default.createElement("span", { className: 'tiled-item-titlename-fieldTitle' }, labelTag, labelContent + (index === 0 && items.length === 1 ? '' : (index + 1))), _this.genExtraisModle(index)), render('', newAddRow !== -1 ? (newAddRow === index ? formSchema : (0, tslib_1.__assign)((0, tslib_1.__assign)({}, formSchema), { body: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, formSchema), { body: formSchema.body.map(function (formIns) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, formIns), { disabled: true })); }) }) })) : formSchema, { data: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, storeData), item), store: store, onBlur: _this.props.updateApi ? function () { return _this.handleBlur(index); } : undefined, getFormInstance: function (form) { _this.formGroup.set(index, form); }, onChange: function (value, name, submit, changePristine) { var _a, _b, _c, _d, _e, _f; if (_this.props.updateApi) { //是否是输入框,带有失焦事件,在失焦时进行实时提交,替他则值改变时提交 var hasBlur = formItems.find(function (fItem) { var _a; return fItem.type.includes('input') && !dateTypeList.includes(fItem.type) && fItem.name === ((_a = Object.keys(name)) === null || _a === void 0 ? void 0 : _a[0]); }); if (JSON.stringify(name) !== _this.changeValues) { _this.handleTableSave(((_a = storeData === null || storeData === void 0 ? void 0 : storeData[_this.props.name]) === null || _a === void 0 ? void 0 : _a[index]) || ((_c = (_b = store.data) === null || _b === void 0 ? void 0 : _b[_this.props.name]) === null || _c === void 0 ? void 0 : _c[index]), _this.moneyParser(name, formItems, 'line'), String(index), false, !!hasBlur, !!reloadApi); } _this.changeValues = JSON.stringify(name); } else { _this.handleTableSave(((_d = storeData === null || storeData === void 0 ? void 0 : storeData[_this.props.name]) === null || _d === void 0 ? void 0 : _d[index]) || ((_f = (_e = store.data) === null || _e === void 0 ? void 0 : _e[_this.props.name]) === null || _f === void 0 ? void 0 : _f[index]), _this.moneyParser(name, formItems, 'line'), String(index)); } } }), react_1.default.createElement("div", { className: "tiled-item-title " + (newAddRow === index ? 'isAdding' : '') }, react_1.default.createElement("div", { className: 'tiled-item-title-left' }, newAddRow === index ? react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(Button_1.default, { level: "danger", type: "button", onClick: _this.handleDiscard }, __('Table.discard')), react_1.default.createElement(Button_1.default, { level: "info", type: "button", onClick: function () { return _this.handleSaveOrder(index); } }, __('Form.submit'))) : react_1.default.createElement(react_1.default.Fragment, null, _this.genExtraisModle(index, true))))); }; return react_1.default.createElement("div", { className: "line-tiled " + (items.length > 25 ? 'virtual-tiled-table' : ''), ref: _this.tiledItemRef }, items.length ? (items.length > 10 ? react_1.default.createElement(antd_1.List, { className: 'table-vertical-virtual-list' }, react_1.default.createElement(rc_virtual_list_1.default, { data: items, height: _this.state.containerHeight, itemHeight: _this.state.itemHeight, itemKey: primaryField || '' }, function (item, index) { return react_1.default.createElement(antd_1.List.Item, { key: (item[primaryField !== null && primaryField !== void 0 ? primaryField : ''] || '') + index }, react_1.default.createElement("div", { className: 'virtual-list-row-item' }, ItemRender(item, index))); })) : items.map(function (item, index) { return ItemRender(item, index); })) : (react_1.default.createElement("div", { className: 'empty-container' }, reac