fastlion-amis
Version:
一种MIS页面生成工具
699 lines • 115 kB
JavaScript
"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