@wufengteam/wform
Version:
@wufengteam/wform
936 lines (934 loc) • 81.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _antd = require("antd");
var _icons = require("@ant-design/icons");
var _moment = _interopRequireDefault(require("moment"));
var _proTable = require("@ant-design/pro-table");
var _FormContext = require("@lingxiteam/pcfactory/lib/utils/formUtils/FormContext");
var _lodash = _interopRequireDefault(require("lodash.clonedeep"));
var _lodash2 = _interopRequireDefault(require("lodash.isequal"));
var _utils = require("../../utils");
var _tool = require("../../utils/tool");
var _index = _interopRequireDefault(require("../../components/FieldItemPc/index"));
var _ControlComVsible = _interopRequireDefault(require("../../components/ControlComVsible"));
var _DataLinkagePc = _interopRequireDefault(require("../../DataLinkage/DataLinkagePc"));
var _Location = _interopRequireDefault(require("../../Location"));
var _Autograph = _interopRequireDefault(require("../../Autograph"));
var _AddDepartmentPC = _interopRequireDefault(require("../../AddDepartment/AddDepartmentPC"));
var _AddMemberPc = _interopRequireDefault(require("../../AddMember/AddMemberPc"));
var _Address = _interopRequireDefault(require("../../Address"));
var _ExportTemplate = _interopRequireDefault(require("./ExportTemplate"));
var _ImportData = _interopRequireDefault(require("./ImportData"));
var _ExportData = _interopRequireDefault(require("./ExportData"));
var _Text = _interopRequireDefault(require("./Text"));
var _Input = _interopRequireDefault(require("./Input"));
var _InputNumber = _interopRequireDefault(require("./InputNumber"));
var _Password = _interopRequireDefault(require("./Password"));
var _TextArea = _interopRequireDefault(require("./TextArea"));
var _ImgUploadShow = _interopRequireDefault(require("./ImgUploadShow"));
require("./index.css");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
function adopt(value) {
return value instanceof P ? value : new P(function (resolve) {
resolve(value);
});
}
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator["throw"](value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __rest = void 0 && (void 0).__rest || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
/* eslint-disable no-shadow */
/* eslint-disable no-console */ // import debounce from 'lodash.debounce';
function transformObject(input) {
return Object.entries(input).reduce(function (acc, _ref) {
var _ref2 = _slicedToArray(_ref, 2),
key = _ref2[0],
value = _ref2[1];
// 去掉 "root." 前缀
var newKey = key.replace('root.', '');
acc[newKey] = value;
return acc;
}, {});
}
function isObject(variable) {
return _typeof(variable) === 'object' && variable !== null;
}
function notEmptyObject(obj) {
return Object.keys(obj).length > 0;
}
var wformCompMap = {
DataLinkage: _DataLinkagePc.default,
Autograph: _Autograph.default,
Location: _Location.default,
AddMember: _AddMemberPc.default,
AddDepartment: _AddDepartmentPC.default,
Address: _Address.default
};
var SubForm = function SubForm(props) {
var value = props.value,
_onChange = props.onChange,
appId = props.appId,
pageId = props.pageId,
compId = props.compId,
_props$subFormFields = props.subFormFields,
subFormFields = _props$subFormFields === void 0 ? [] : _props$subFormFields,
disabled = props.disabled,
_props$isAddData = props.isAddData,
isAddData = _props$isAddData === void 0 ? true : _props$isAddData,
_props$isExportTempla = props.isExportTemplate,
isExportTemplate = _props$isExportTempla === void 0 ? true : _props$isExportTempla,
_props$isImportData = props.isImportData,
isImportData = _props$isImportData === void 0 ? true : _props$isImportData,
_props$isExportData = props.isExportData,
isExportData = _props$isExportData === void 0 ? true : _props$isExportData,
_props$isDelData = props.isDelData,
isDelData = _props$isDelData === void 0 ? true : _props$isDelData,
getEngineApis = props.getEngineApis,
$$componentItem = props.$$componentItem,
dataLinkDsl = props.dataLinkDsl,
activeKey = props.activeKey,
defaultValue = props.defaultValue;
var _ref3 = (getEngineApis === null || getEngineApis === void 0 ? void 0 : getEngineApis()) || {},
_ref3$customEngineApi = _ref3.customEngineApi,
customEngineApi = _ref3$customEngineApi === void 0 ? {} : _ref3$customEngineApi,
sandBoxSafeRun = _ref3.sandBoxSafeRun;
/**
* 子表单字段关系map
*/
var _useState = (0, _react.useState)(function () {
var result = {};
subFormFields.forEach(function (item) {
var _a, _b;
var _ref4 = item.props || {},
fieldName = _ref4.fieldName,
defaultValue = _ref4.value;
var functors = ((_b = (_a = item === null || item === void 0 ? void 0 : item.functors) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.value) || defaultValue;
var pattern = /%/g;
try {
result[fieldName] = functors === null || functors === void 0 ? void 0 : functors.replace(pattern, '');
} catch (error) {
result[fieldName] = functors || '';
}
});
return result;
}),
_useState2 = _slicedToArray(_useState, 1),
functorsMap = _useState2[0];
/**
* 是否含有关联数据组件
*/
var isHasDataLinkage = subFormFields.find(function (item) {
return (item === null || item === void 0 ? void 0 : item.type) === 'DataLinkage';
});
/**
* 子表单form实例
*/
var editorFormRef = (0, _react.useRef)();
/**
* 子表格内部方法
*/
var actionRef = (0, _react.useRef)();
/**
* 子表单数据集合
*/
var _useState3 = (0, _react.useState)([]),
_useState4 = _slicedToArray(_useState3, 2),
subFormDatas = _useState4[0],
setSubFormDatas = _useState4[1];
/**
* 当前正在编辑的表格行rowKey集合
*/
var _useState5 = (0, _react.useState)([]),
_useState6 = _slicedToArray(_useState5, 2),
editableKeys = _useState6[0],
setEditableRowKeys = _useState6[1];
/**
* 当前选中的表格行rowKey集合
*/
var _useState7 = (0, _react.useState)([]),
_useState8 = _slicedToArray(_useState7, 2),
selectedRowKeys = _useState8[0],
setSelectedRowKeys = _useState8[1];
/**
* 表格列的配置数据
*/
var _useState9 = (0, _react.useState)([]),
_useState10 = _slicedToArray(_useState9, 2),
columns = _useState10[0],
setColumns = _useState10[1];
/**
* 添加子表数据给关联数据组件使用
*/
var addSubFormData = function addSubFormData(data) {
if (data && Array.isArray(data)) {
// console.log('子表数据', data);
var result = data.map(function (item) {
var getValue = function getValue(key) {
return item[key];
};
var rowData = {};
Object.keys(item).forEach(function (key) {
// if (key.startsWith('MultipleSelect')) {
// if (!item[key]) {
// rowData[key] = [];
// }
// }
if (functorsMap[key]) {
rowData[key] = sandBoxSafeRun === null || sandBoxSafeRun === void 0 ? void 0 : sandBoxSafeRun(functorsMap[key], {
getValue: getValue
});
} else {
rowData[key] = item[key];
}
});
return rowData;
});
// console.log('处理后的子表数据', result);
setSubFormDatas(result);
activateTableEdit(result);
_onChange === null || _onChange === void 0 ? void 0 : _onChange(correctDataType(data));
}
};
var _useState11 = (0, _react.useState)('blur'),
_useState12 = _slicedToArray(_useState11, 2),
focusState = _useState12[0],
setFocusState = _useState12[1];
var subFormDatas2 = (0, _react.useRef)();
var onFocusStateChange = function onFocusStateChange(e) {
setFocusState(e);
if (e === 'blur') {
var ad = subFormDatas2.current;
if (ad) {
setSubFormDatas(ad);
_onChange === null || _onChange === void 0 ? void 0 : _onChange(correctDataType(ad));
}
}
};
/**
* 根据子表单字段信息生成对应的表单列定义column
*/
var generateColumn = function generateColumn(item, activeKey) {
var _a, _b;
var type = item.type;
var _ref5 = item.props || {},
name = _ref5.name,
fieldName = _ref5.fieldName,
required = _ref5.required,
basicStatus = _ref5.basicStatus,
_ref5$hideInTable = _ref5.hideInTable,
hideInTable = _ref5$hideInTable === void 0 ? basicStatus === 2 : _ref5$hideInTable;
// if (basicStatus === 2) return [];
var config = {
title: required ? ( /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
title: name
}, /*#__PURE__*/_react.default.createElement("span", {
style: {
color: 'red',
marginRight: '5px'
}
}, "*"), name)) : ( /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
title: name
}, name)),
dataIndex: fieldName,
width: 150,
hideInTable: hideInTable
// editable: false,
};
config.formItemProps = function (_form, _ref6) {
var rowIndex = _ref6.rowIndex;
var rules = [];
if (['Input', 'TextArea', 'Password', 'InputMail', 'InputPhone', 'InputNumber'].includes(type)) {
return {
rules: rules,
rowIndex: rowIndex
// trigger: 'onBlur',
};
}
return {
rules: rules,
rowIndex: rowIndex
};
};
var compProps = Object.assign({}, item.props);
if (disabled || basicStatus === 3) {
compProps.disabled = true;
}
// 当自定义编辑组件是下拉复选和下拉单选时
if (['Select', 'MultipleSelect', 'Radio', 'CheckboxGroup'].includes(type)) {
// 设置编辑控件的选项值
compProps.dataSource = ((_a = compProps.staticData) === null || _a === void 0 ? void 0 : _a.data) || [];
}
if (['Cascader'].includes(type)) {
// 设置编辑控件的选项值
compProps.dataSource = (compProps === null || compProps === void 0 ? void 0 : compProps.options) || ((_b = compProps.staticData) === null || _b === void 0 ? void 0 : _b.data) || [];
}
// 当自定义编辑组件是下拉复选时
if (['MultipleSelect', 'CheckboxGroup'].includes(type)) {
// 给编辑控件添加mode属性,并设值multiple
compProps.mode = 'multiple';
}
// 当自定义编辑组件是关联数据组件时
if (type === 'DataLinkage') {
config.title = '';
config.width = 30;
var Comp = wformCompMap[type];
config.renderFormItem = function (renderFormItem) {
var _ref7 = renderFormItem || {},
index = _ref7.index;
return Comp ? ( /*#__PURE__*/_react.default.createElement(Comp, Object.assign({
subFormDatas: subFormDatas,
subFormStartIndex: index,
addSubFormData: addSubFormData
}, compProps, {
getEngineApis: getEngineApis,
visible: true,
"$$componentItem": $$componentItem
}))) : ( /*#__PURE__*/_react.default.createElement("div", null));
};
} else {
var _Comp = customEngineApi[type] || wformCompMap[type];
config.renderFormItem = function () {
if (['Input', 'InputMail', 'InputPhone'].includes(type)) {
return /*#__PURE__*/_react.default.createElement(_Input.default, Object.assign({
onFocusStateChange: onFocusStateChange
}, compProps));
}
if (type === 'Password') {
return /*#__PURE__*/_react.default.createElement(_Password.default, Object.assign({
onFocusStateChange: onFocusStateChange
}, compProps));
}
if (type === 'TextArea') {
return /*#__PURE__*/_react.default.createElement(_TextArea.default, Object.assign({
onFocusStateChange: onFocusStateChange
}, compProps));
}
if (type === 'InputNumber') {
return /*#__PURE__*/_react.default.createElement(_InputNumber.default, Object.assign({
onFocusStateChange: onFocusStateChange
}, compProps));
}
if (['ImgUpload', 'VideoUpload', 'StdUpload'].includes(type)) {
if (typeof compProps.singleFileMaxSize === 'number') {
// @ts-ignore
compProps.singleFileMaxSize += 'MB';
}
if (typeof compProps.singleFileMinSize === 'number') {
// @ts-ignore
compProps.singleFileMinSize += 'MB';
}
}
if (type === 'Location') {
// @ts-ignore
compProps.activeKey = activeKey;
}
return _Comp ? /*#__PURE__*/_react.default.createElement(_Comp, Object.assign({}, compProps, {
getEngineApis: getEngineApis,
visible: true,
"$$componentItem": $$componentItem
})) : /*#__PURE__*/_react.default.createElement("div", null);
};
}
if (['RangePicker', 'Autograph'].includes(type)) {
config.width = 300;
}
if (type === 'TimePicker') {
config.width = 200;
}
if (type === 'DataLinkage') {
var _item$props = item.props,
_item$props$previewFi = _item$props.previewFields,
previewFields = _item$props$previewFi === void 0 ? [] : _item$props$previewFi,
bindForm = _item$props.bindForm;
if (Array.isArray(previewFields) && previewFields.length > 0) {
var previewColumn = [config];
previewFields.forEach(function (field) {
var _ref8 = field || {},
attrName = _ref8.attrName,
attrCode = _ref8.attrCode;
if (attrCode.startsWith('ImgUpload_')) {
previewColumn.push({
title: required ? ( /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("span", {
style: {
color: 'red',
marginRight: '5px'
}
}, "*"), attrName)) : attrName,
dataIndex: attrCode,
width: 150,
renderFormItem: function renderFormItem() {
return /*#__PURE__*/_react.default.createElement(_ImgUploadShow.default, null);
},
hideInTable: hideInTable
});
} else {
previewColumn.push({
title: required ? ( /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
title: attrName
}, /*#__PURE__*/_react.default.createElement("span", {
style: {
color: 'red',
marginRight: '5px'
}
}, "*"), attrName)) : ( /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
title: attrName
}, attrName)),
dataIndex: attrCode,
ellipsis: true,
width: 200,
renderFormItem: function renderFormItem() {
return /*#__PURE__*/_react.default.createElement(_Text.default, {
dsl: dataLinkDsl,
attrCode: attrCode,
appId: bindForm === null || bindForm === void 0 ? void 0 : bindForm.appId,
getEngineApis: getEngineApis
});
},
hideInTable: hideInTable
});
}
});
return previewColumn;
}
}
return [config];
};
// 监听子表单字段数据变化重新构造表格列配置
(0, _react.useEffect)(function () {
// console.log('subFormFields', subFormFields);
var column = [];
var result = subFormFields.map(function (item) {
return generateColumn(item, activeKey);
});
result.forEach(function (item) {
column = [].concat(_toConsumableArray(column), _toConsumableArray(item));
});
setColumns(column);
}, [JSON.stringify(subFormFields), disabled, JSON.stringify(subFormDatas), JSON.stringify(dataLinkDsl), activeKey]);
// 解决初始化时value前几次会为undefined的问题
(0, _react.useEffect)(function () {
// console.log('子表数据4', value);
if (value && Array.isArray(value)) {
subFormDatas2.current = value;
if (!(0, _lodash2.default)(value, subFormDatas)) {
setSubFormDatas(value);
activateTableEdit(value);
}
}
}, [value]);
(0, _react.useEffect)(function () {
// console.log('子表数据默认值', defaultValue);
if (Array.isArray(defaultValue) && defaultValue.length) {
subFormDatas2.current = defaultValue;
if (!(0, _lodash2.default)(defaultValue, subFormDatas)) {
completeData(defaultValue);
setSubFormDatas(defaultValue);
activateTableEdit(defaultValue);
_onChange === null || _onChange === void 0 ? void 0 : _onChange(defaultValue);
}
}
}, [defaultValue]);
/**
* 补全子表单数据
*/
var completeData = function completeData(data) {
if (data && Array.isArray(data) && data.length > 0) {
var lastData = data[data.length - 1];
if (Object.keys(lastData).includes('map_row_parentKey')) {
delete lastData.map_row_parentKey;
columns.forEach(function (item) {
var key = item.dataIndex;
lastData[key] = undefined;
});
}
}
};
/**
* 根据子表单数据激活编辑行
*/
var activateTableEdit = function activateTableEdit(data) {
var ids = data.map(function (item) {
return item.id;
});
setEditableRowKeys(ids);
};
/**
* 更正子表单数据类型
*/
var correctDataType = function correctDataType(data) {
if (data && Array.isArray(data) && data.length > 0) {
var result = (0, _lodash.default)(data);
result.forEach(function (item) {
Object.keys(item).forEach(function (key) {
if (key.startsWith('InputNumber_')) {
item[key] = item[key] ? Number(item[key]) : item[key];
}
});
});
return result;
}
return data;
};
// /**
// * 设置行数据
// */
// const setSubFormRowData = debounce((id, data) => {
// editorFormRef?.current?.setRowData?.(id, data);
// }, 500);
return (
/*#__PURE__*/
// @ts-ignore
_react.default.createElement(_FormContext.FormProvider, {
value: {}
}, /*#__PURE__*/_react.default.createElement(_proTable.EditableProTable, {
className: "".concat(_utils.prefix, "-editable-table"),
rowKey: "id",
editableFormRef: editorFormRef,
actionRef: actionRef,
recordCreatorProps: false,
loading: false,
scroll: {
x: 960,
y: 300
},
value: subFormDatas,
controlled: true,
onChange: function onChange(data) {
completeData(data);
// console.log('子表数据1', data);
subFormDatas2.current = data;
var ids = data.map(function (item) {
return item.id;
});
setEditableRowKeys(ids);
var selectedRowKeysVal = selectedRowKeys.filter(function (item) {
return ids.includes(item);
});
setSelectedRowKeys(selectedRowKeysVal);
if (focusState === 'blur' && data) {
setSubFormDatas(data);
_onChange === null || _onChange === void 0 ? void 0 : _onChange(correctDataType(data));
}
},
// 表格行多选配置
rowSelection: disabled ? false : {
type: 'checkbox',
selectedRowKeys: selectedRowKeys,
onChange: function onChange(selectedRows) {
setSelectedRowKeys(selectedRows);
}
},
columns: disabled ? columns : columns.concat([{
title: '操作',
valueType: 'option',
width: 100,
render: function render() {
return null;
}
}]),
editable: {
type: 'multiple',
editableKeys: editableKeys,
actionRender: function actionRender(_row, _config, defaultDoms) {
return [defaultDoms.delete];
},
onValuesChange: function onValuesChange(record, recordList) {
var _a, _b;
var rowData;
if (!record && recordList.length > 0) {
completeData(recordList);
rowData = recordList[recordList.length - 1];
} else {
rowData = record;
}
if (!rowData) return;
var oldRowData = subFormDatas.find(function (item) {
return item.id === rowData.id;
});
var ignoreFieldKeys = [];
if (oldRowData) {
Object.keys(oldRowData).forEach(function (key) {
if (oldRowData[key] !== rowData[key]) {
ignoreFieldKeys.push(key);
}
});
}
var getValue = function getValue(key) {
return rowData[key];
};
// 如果没有计算规则就不执行数据更新
var isUpdate = false;
Object.keys(rowData).forEach(function (key) {
if (functorsMap[key] && !ignoreFieldKeys.includes(key)) {
isUpdate = true;
if ((0, _tool.isString)(functorsMap[key]) && functorsMap[key].includes('getValue')) {
rowData[key] = sandBoxSafeRun === null || sandBoxSafeRun === void 0 ? void 0 : sandBoxSafeRun(functorsMap[key], {
getValue: getValue
});
} else {
rowData[key] = rowData[key] || rowData[key] === 0 ? rowData[key] : sandBoxSafeRun === null || sandBoxSafeRun === void 0 ? void 0 : sandBoxSafeRun(functorsMap[key], {
getValue: getValue
});
}
}
});
if ((rowData === null || rowData === void 0 ? void 0 : rowData.id) && isUpdate) {
if (focusState === 'blur') {
(_b = (_a = editorFormRef === null || editorFormRef === void 0 ? void 0 : editorFormRef.current) === null || _a === void 0 ? void 0 : _a.setRowData) === null || _b === void 0 ? void 0 : _b.call(_a, rowData.id, rowData);
}
}
},
onChange: setEditableRowKeys
}
}), /*#__PURE__*/_react.default.createElement(_antd.Space, {
style: {
paddingTop: '8px',
paddingBottom: '12px'
},
hidden: disabled || !(isAddData || isExportTemplate && !isHasDataLinkage || isImportData && !isHasDataLinkage || isExportData || isDelData)
}, /*#__PURE__*/_react.default.createElement(_ControlComVsible.default, {
visible: isAddData
}, /*#__PURE__*/_react.default.createElement(_antd.Button, {
type: "primary",
onClick: function onClick() {
var _a, _b, _c, _d;
var id = (Math.random() * 1000000).toFixed(0);
(_b = (_a = actionRef.current) === null || _a === void 0 ? void 0 : _a.addEditRecord) === null || _b === void 0 ? void 0 : _b.call(_a, {
id: id
}, {
newRecordType: 'dataSource'
});
(_d = (_c = actionRef.current) === null || _c === void 0 ? void 0 : _c.startEditable) === null || _d === void 0 ? void 0 : _d.call(_c, id);
},
icon: /*#__PURE__*/_react.default.createElement(_icons.PlusOutlined, null)
}, "\u6DFB\u52A0\u4E00\u884C")), /*#__PURE__*/_react.default.createElement(_ControlComVsible.default, {
visible: isExportTemplate && !isHasDataLinkage
}, /*#__PURE__*/_react.default.createElement(_ExportTemplate.default, {
subFormFields: subFormFields,
pageId: pageId,
customEngineApi: customEngineApi
})), /*#__PURE__*/_react.default.createElement(_ControlComVsible.default, {
visible: isImportData && !isHasDataLinkage
}, /*#__PURE__*/_react.default.createElement(_ImportData.default, {
subFormFields: subFormFields,
pageId: pageId,
appId: appId,
customEngineApi: customEngineApi,
onSuccess: function onSuccess(data) {
// console.log('导入数据解析结果', data);
setSubFormDatas(function (pre) {
return [].concat(_toConsumableArray(pre || []), _toConsumableArray(data));
});
activateTableEdit([].concat(_toConsumableArray(subFormDatas || []), _toConsumableArray(data)));
_onChange === null || _onChange === void 0 ? void 0 : _onChange(correctDataType([].concat(_toConsumableArray(subFormDatas || []), _toConsumableArray(data))));
}
})), /*#__PURE__*/_react.default.createElement(_ControlComVsible.default, {
visible: isExportData
}, /*#__PURE__*/_react.default.createElement(_ExportData.default, {
subFormFields: subFormFields,
appId: appId,
compId: compId,
data: subFormDatas,
customEngineApi: customEngineApi
})), /*#__PURE__*/_react.default.createElement(_ControlComVsible.default, {
visible: isDelData
}, /*#__PURE__*/_react.default.createElement(_antd.Button, {
danger: true,
onClick: function onClick() {
var _a;
var data = (_a = subFormDatas === null || subFormDatas === void 0 ? void 0 : subFormDatas.filter) === null || _a === void 0 ? void 0 : _a.call(subFormDatas, function (item) {
return !selectedRowKeys.includes(item.id);
});
setSelectedRowKeys([]);
setSubFormDatas(data);
activateTableEdit(data);
_onChange === null || _onChange === void 0 ? void 0 : _onChange(correctDataType(data));
}
}, "\u5220\u9664"))))
);
};
var SubFormPc = function SubFormPc(props) {
var _a;
var _props$rules = props.rules,
externalRules = _props$rules === void 0 ? [] : _props$rules,
subFormFields = props.subFormFields,
labelName = props.name,
other = __rest(props, ["rules", "subFormFields", "name"]);
var _useState13 = (0, _react.useState)(subFormFields),
_useState14 = _slicedToArray(_useState13, 2),
innerSubFormFields = _useState14[0],
setInnerSubFormFields = _useState14[1];
var _ref9 = ((_a = props === null || props === void 0 ? void 0 : props.getEngineApis) === null || _a === void 0 ? void 0 : _a.call(props)) || {},
_ref9$customEngineApi = _ref9.customEngineApi,
customEngineApi = _ref9$customEngineApi === void 0 ? {} : _ref9$customEngineApi;
var isSubFormField = (0, _react.useCallback)(function (fieldList) {
if (Array.isArray(fieldList) && Array.isArray(subFormFields)) {
// eslint-disable-next-line no-plusplus
for (var i = 0; i < subFormFields.length; i++) {
if (fieldList.includes(subFormFields[i].props.fieldName)) {
return true;
}
}
return false;
}
return false;
}, [JSON.stringify(subFormFields)]);
var _useState15 = (0, _react.useState)({}),
_useState16 = _slicedToArray(_useState15, 2),
dataLinkDsl = _useState16[0],
setDataLinkDsl = _useState16[1];
(0, _react.useEffect)(function () {
(function () {
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
var _a, _b, dataLinkageComp, _ref10, bindForm, bindFormPageId, res;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
dataLinkageComp = subFormFields.find(function (item) {
return item.type === 'DataLinkage';
});
if (!dataLinkageComp) {
_context.next = 11;
break;
}
_ref10 = dataLinkageComp.props || {}, bindForm = _ref10.bindForm; // 获取关联表单的DSL
_context.next = 5;
return (_a = customEngineApi.getPageInstIdApi) === null || _a === void 0 ? void 0 : _a.call(customEngineApi, {
appId: bindForm === null || bindForm === void 0 ? void 0 : bindForm.appId,
catalogItemId: bindForm === null || bindForm === void 0 ? void 0 : bindForm.catalogItemId
});
case 5:
bindFormPageId = _context.sent;
if (!(bindFormPageId && (0, _tool.isString)(bindFormPageId))) {
_context.next = 11;
break;
}
_context.next = 9;
return (_b = customEngineApi.getPageVersionById) === null || _b === void 0 ? void 0 : _b.call(customEngineApi, {
appId: bindForm === null || bindForm === void 0 ? void 0 : bindForm.appId,
pageId: bindFormPageId
});
case 9:
res = _context.sent;
setDataLinkDsl((res === null || res === void 0 ? void 0 : res.attrMappingJson) || '');
case 11:
case "end":
return _context.stop();
}
}, _callee);
}));
})();
}, [subFormFields]);
var _useState17 = (0, _react.useState)(),
_useState18 = _slicedToArray(_useState17, 2),
defaultValue = _useState18[0],
_setDefaultValue = _useState18[1];
(0, _react.useImperativeHandle)(props.forwardedRef, function () {
return {
getDataStatisticsRules: function getDataStatisticsRules() {
return props.dataStatisticsRules;
},
getSubFormFields: function getSubFormFields() {
if (Array.isArray(subFormFields)) {
return subFormFields.map(function (item) {
return item.props.fieldName;
});
}
return [];
},
setSubFormFieldDisabled: function setSubFormFieldDisabled(fieldList) {
if (!isSubFormField(fieldList)) return;
setInnerSubFormFields(function (oldVal) {
if (Array.isArray(oldVal) && Array.isArray(fieldList)) {
return oldVal.map(function (item) {
return Object.assign(Object.assign({}, item), {
props: Object.assign(Object.assign({}, item.props), {
basicStatus: fieldList.includes(item.props.fieldName) ? 3 : item.props.basicStatus
})
});
});
}
return oldVal;
});
},
setSubFormFieldEditable: function setSubFormFieldEditable(fieldList) {
if (!isSubFormField(fieldList)) return;
setInnerSubFormFields(function (oldVal) {
if (Array.isArray(oldVal) && Array.isArray(fieldList)) {
return oldVal.map(function (item) {
return Object.assign(Object.assign({}, item), {
props: Object.assign(Object.assign({}, item.props), {
basicStatus: fieldList.includes(item.props.fieldName) ? 1 : item.props.basicStatus
})
});
});
}
return oldVal;
});
},
setSubFormFieldHidden: function setSubFormFieldHidden(fieldList) {
if (!isSubFormField(fieldList)) return;
setInnerSubFormFields(function (oldVal) {
if (Array.isArray(oldVal) && Array.isArray(fieldList)) {
return oldVal.map(function (item) {
return Object.assign(Object.assign({}, item), {
props: Object.assign(Object.assign({}, item.props), {
hideInTable: fieldList.includes(item.props.fieldName) ? true : item.props.basicStatus === 2
})
});
});
}
return oldVal;
});
},
setSubFormFieldShow: function setSubFormFieldShow(fieldList) {
if (!isSubFormField(fieldList)) return;
setInnerSubFormFields(function (oldVal) {
if (Array.isArray(oldVal) && Array.isArray(fieldList)) {
return oldVal.map(function (item) {
return Object.assign(Object.assign({}, item), {
props: Object.assign(Object.assign({}, item.props), {
hideInTable: fieldList.includes(item.props.fieldName) ? false : item.props.basicStatus === 2
})
});
});
}
return oldVal;
});
},
setSubFormFieldRequired: function setSubFormFieldRequired(fieldList) {
if (!isSubFormField(fieldList)) return;
setInnerSubFormFields(function (oldVal) {
if (Array.isArray(oldVal) && Array.isArray(fieldList)) {
return oldVal.map(function (item) {
return Object.assign(Object.assign({}, item), {
props: Object.assign(Object.assign({}, item.props), {
required: fieldList.includes(item.props.fieldName) ? true : item.props.required
})
});
});
}
return oldVal;
});
},
setSubFormFieldNoRequired: function setSubFormFieldNoRequired(fieldList) {
if (!isSubFormField(fieldList)) return;
setInnerSubFormFields(function (oldVal) {
if (Array.isArray(oldVal) && Array.isArray(fieldList)) {
return oldVal.map(function (item) {
return Object.assign(Object.assign({}, item), {
props: Object.assign(Object.assign({}, item.props), {
required: fieldList.includes(item.props.fieldName) ? false : item.props.required
})
});
});
}
return oldVal;
});
},
getsubFormFillOtherFormRule: function getsubFormFillOtherFormRule() {
return props.subFormFillOtherFormRule;
},
setDefaultValue: function setDefaultValue() {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
if (props && props.defaultValueType === 'otherFormData') {
var getEngineApis = props.getEngineApis,
otherForm = props.otherForm,
subFormFillOtherFormRule = props.subFormFillOtherFormRule,
subFormFilterAttrOtherFormRule = props.subFormFilterAttrOtherFormRule;
var getOtherFormData = (_a = getEngineApis === null || getEngineApis === void 0 ? void 0 : getEngineApis()) === null || _a === void 0 ? void 0 : _a.customEngineApi.getOtherFormData;
if (getOtherFormData && Array.isArray(subFormFilterAttrOtherFormRule) && subFormFilterAttrOtherFormRule) {
var params = {
busiObjectId: otherForm === null || otherForm === void 0 ? void 0 : otherForm.busiObjectId,
appId: otherForm === null || otherForm === void 0 ? void 0 : otherForm.appId
};
if (Array.isArray(subFormFilterAttrOtherFormRule) && subFormFilterAttrOtherFormRule.length > 0) {
params.queryLogic = (_b = subFormFilterAttrOtherFormRule[0]) === null || _b === void 0 ? void 0 : _b.queryLogic;
params.conditions = subFormFilterAttrOtherFormRule;
}
getOtherFormData(params).then(function (res) {
if (Array.isArray(res) && res.length > 0) {
var ruleResult = {};
subFormFillOtherFormRule.forEach(function (item) {
var _a, _b;
ruleResult[((_a = item === null || item === void 0 ? void 0 : item.fieldInfo) === null || _a === void 0 ? void 0 : _a.name) || 1] = (_b = item === null || item === void 0 ? void 0 : item.fillFieldInfo) === null || _b === void 0 ? void 0 : _b.name;
});
var result = res.map(function (item) {
var newItem = {};
Object.keys(ruleResult).forEach(function (key) {
var val = item[key];
try {
val = JSON.parse(item[key]);
} catch (error) {
val = item[key];
}
newItem[ruleResult[key]] = val;
newItem.id = (Math.random() * 1000000).toFixed(0);
});
return newItem;
});
// @ts-ignore
_setDefaultValue(result);
}
});
}
} else if (props && props.defaultValueType === 'apiFormData') {
var _getEngineApis = props.getEngineApis,
apiObject = props.apiObject,
apiParams = props.apiParams,
apiRespond = props.apiRespond,
$$componentItem = props.$$componentItem;
var _customEngineApi = (_c = _getEngineApis === null || _getEngineApis === void 0 ? void 0 : _getEngineApis()) === null || _c === void 0 ? void 0 : _c.customEngineApi;
var serviceParams = {};
if (apiParams && (apiParams === null || apiParams === void 0 ? void 0 : apiParams.params) && ((_d = apiParams === null || apiParams === void 0 ? void 0 : apiParams.params) === null || _d === void 0 ? void 0 : _d.root) && Array.isArray((_e = apiParams === null || apiParams === void 0 ? void 0 : apiParams.params) === null || _e === void 0 ? void 0 : _e.root) && ((_f = apiParams.params) === null || _f === void 0 ? void 0 : _f.root.length) > 0) {
apiParams.params.root.forEach(function (param) {
serviceParams[param.dataKey] = param.dataValue;
});
}
if (apiObject.tabKey === '11') {
(_g = _customEngineApi === null || _customEngineApi === void 0 ? void 0 : _customEngineApi.callSqlService) === null || _g === void 0 ? void 0 : _g.call(_customEngineApi, {
appId: window.appId,