UNPKG

@wufengteam/wform

Version:

@wufengteam/wform

162 lines (160 loc) 6.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.subFormDataBackfill = exports.getLinkDataId = exports.WFORMCOMPTYPE = void 0; var _lodash = _interopRequireDefault(require("lodash.clonedeep")); var _tool = require("../utils/tool"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* eslint-disable no-console */ /** * 获取子表单中的关联数据组件所关联数据Id */ var getLinkDataId = exports.getLinkDataId = function getLinkDataId(data) { if ((0, _tool.isPlainObject)(data)) { var dataLinkageKey = Object.keys(data).find(function (key) { return key.startsWith('DataLinkage_'); }); if (dataLinkageKey) { return data[dataLinkageKey]; } return undefined; } return undefined; }; /** * 获取选择数据时类型,单选或多选 * @returns 是否多选 */ var getIsMultipleSelect = function getIsMultipleSelect(subFormDataList, subFormStartIndex) { if (subFormDataList && Array.isArray(subFormDataList) && subFormDataList.length > 0) { var item = subFormDataList[subFormStartIndex || 0]; // getLinkDataId(item)返回值为undefined时表示关联数据未选择数据 return getLinkDataId(item) === undefined; } return true; }; /** * 根据数据填充规则填充数据 */ var dataLinkageRule = function dataLinkageRule(dataLinkageRuleInfo, sourceData, targetData) { dataLinkageRuleInfo === null || dataLinkageRuleInfo === void 0 ? void 0 : dataLinkageRuleInfo.forEach(function (rule) { var _a; var _ref = rule || {}, fieldInfo = _ref.fieldInfo, fillFieldInfo = _ref.fillFieldInfo; var _ref2 = fieldInfo || {}, name = _ref2.name, compType = _ref2.compType; var _ref3 = fillFieldInfo || {}, fillName = _ref3.name, fillCompType = _ref3.compType; if (name && fillName) { if (compType === 'Location' && ['Input', 'TextArea'].includes(fillCompType)) { targetData[fillName] = (_a = sourceData[name]) === null || _a === void 0 ? void 0 : _a.name; } else if (compType === 'AddMember' && ['Input', 'TextArea'].includes(fillCompType)) { var sourceValue = sourceData[name]; if (sourceValue && Array.isArray(sourceValue) && sourceValue.length > 0) { var fillValue = sourceValue.map(function (val) { return val === null || val === void 0 ? void 0 : val.staffName; }); targetData[fillName] = fillValue === null || fillValue === void 0 ? void 0 : fillValue.join('、'); } } else if (compType === 'AddDepartment' && ['Input', 'TextArea'].includes(fillCompType)) { var _sourceValue = sourceData[name]; if (_sourceValue && Array.isArray(_sourceValue) && _sourceValue.length > 0) { var _fillValue = _sourceValue.map(function (val) { return val === null || val === void 0 ? void 0 : val.orgName; }); targetData[fillName] = _fillValue === null || _fillValue === void 0 ? void 0 : _fillValue.join('、'); } } else { targetData[fillName] = sourceData[name]; } } }); }; /** * 子表单数据回填 * @returns 返回回填的数据列表 */ var subFormDataBackfill = exports.subFormDataBackfill = function subFormDataBackfill(subFormDataList, subFormStartIndex, formDataSourceList, dataLinkageRuleInfo) { var subFormDataListCopy = (0, _lodash.default)(subFormDataList); // 关联数据可以多选的逻辑 if (getIsMultipleSelect(subFormDataList, subFormStartIndex)) { var _startIndex = subFormStartIndex || 0; formDataSourceList.forEach(function (item) { var id = (Math.random() * 1000000).toFixed(0); if (_startIndex === subFormStartIndex) { if (getLinkDataId(subFormDataListCopy[_startIndex]) === undefined) { // 无关联数据 var _subFormDataItem = subFormDataListCopy[_startIndex] || {}; Object.keys(_subFormDataItem).forEach(function (key) { if (key.startsWith('DataLinkage')) { _subFormDataItem[key] = item.obj_id; } if (_subFormDataItem[key] === undefined) { _subFormDataItem[key] = item[key]; } // 解决低代码复选组组件为undefined时候展示有问题 // if (key.startsWith('MultipleSelect')) { // subFormDataItem[key] = item[key]; // } }); dataLinkageRule(dataLinkageRuleInfo, item, _subFormDataItem); } else { // 有关联数据,则从下一个插入 var _subFormDataItem2 = (0, _lodash.default)(subFormDataListCopy[_startIndex]) || {}; Object.keys(_subFormDataItem2).forEach(function (key) { if (key.startsWith('DataLinkage')) { _subFormDataItem2[key] = item.obj_id; } if (_subFormDataItem2[key] === undefined) { _subFormDataItem2[key] = item[key]; } // 解决低代码复选组组件为undefined时候展示有问题 // if (key.startsWith('MultipleSelect')) { // subFormDataItem[key] = item[key]; // } _subFormDataItem2.id = id; }); dataLinkageRule(dataLinkageRuleInfo, item, _subFormDataItem2); subFormDataListCopy.splice(_startIndex + 1, 0, Object.assign({}, _subFormDataItem2)); } } else { // 多选,生成下一个数据,从上一个数据拷贝 var _subFormDataItem3 = (0, _lodash.default)(subFormDataListCopy[_startIndex - 1]) || {}; Object.keys(_subFormDataItem3).forEach(function (key) { if (key.startsWith('DataLinkage')) { _subFormDataItem3[key] = item.obj_id; } else { _subFormDataItem3.id = id; _subFormDataItem3[key] = item[key]; } }); dataLinkageRule(dataLinkageRuleInfo, item, _subFormDataItem3); subFormDataListCopy.splice(_startIndex, 0, Object.assign({}, _subFormDataItem3)); } _startIndex += 1; }); return subFormDataListCopy; } // 子表单选择数据单选 替换数据 var startIndex = subFormStartIndex || 0; var subFormDataItem = subFormDataListCopy[startIndex] || {}; formDataSourceList.forEach(function (item) { var itemKeys = Object.keys(item); Object.keys(subFormDataItem).forEach(function (key) { if (key !== 'id' && itemKeys.includes(key)) { subFormDataItem[key] = item[key]; } // 修复子表单中选择关联数据无法正确回填 if (key.startsWith('DataLinkage') && item.obj_id) { subFormDataItem[key] = item.obj_id; } }); dataLinkageRule(dataLinkageRuleInfo, item, subFormDataItem); }); return subFormDataListCopy; }; var WFORMCOMPTYPE = exports.WFORMCOMPTYPE = ['Address', 'Location', 'Autograph', 'AddMember', 'AddDepartment', 'InputPhone', 'InputMail', 'VideoUpload', 'ImgUpload'];