{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\eipControl\\EipHotTable.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\eipControl\\EipHotTable.vue","mtime":1667327529247},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\babel.config.js","mtime":1667327525434},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["import \"core-js/modules/es7.object.get-own-property-descriptors\";\nimport _typeof from \"D:/jenkins/workspace/xq-web-fvue/node_modules/@babel/runtime/helpers/esm/typeof.js\";\nimport \"core-js/modules/es6.number.parse-int\";\nimport \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.regexp.match\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.string.bold\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/web.dom.iterable\";\nimport _toConsumableArray from \"D:/jenkins/workspace/xq-web-fvue/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _defineProperty from \"D:/jenkins/workspace/xq-web-fvue/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n//\n//\n//\n//\n//\n//\nimport utils from \"@/utils.js\";\nimport FormMath from \"@/math.js\";\nimport { HotTable } from \"@handsontable/vue\";\nimport SubDataDetail from \"@/components/flow/SubDataDetail.vue\";\nimport \"handsontable/dist/handsontable.full.css\";\nimport Handsontable from \"handsontable\";\nimport \"handsontable/languages/zh-CN\";\nexport default {\n name: \"eip-hot-table\",\n props: {\n options: String,\n initconf: String,\n permission: Object,\n isInitTemplateData: String,\n initFillDataType: String,\n addInitTemplateData: String,\n //允许添加初始化数据\n initSumRow: String,\n //初始化统计行\n name: String\n },\n components: {\n HotTable: HotTable,\n SubDataDetail: SubDataDetail\n },\n data: function data() {\n var _hotSettings;\n\n return {\n root: 'hot-table',\n myRenderer: this.rendererMe,\n subTablePath: '',\n formFields: [],\n formId: '',\n hotSettings: (_hotSettings = {\n data: [//数据可以是二维数组,也可以是数组对象\n []],\n className: \"htCenter htMiddle\",\n //单元格文字对齐方式(htLeft,htRight,htCenter)\n currentRowClassName: \"my-selectRow\",\n //给选中行添加自定义class类名\n currentColClassName: \"my-selectCol\",\n //给选中列添加自定义class类名\n autoWrapRow: true,\n //文字是否自动换行(当没有设置colWidths时生效)\n fixedColumnsLeft: 1,\n //固定左边列数\n fixedRowsTop: 0,\n //固定上边列数\n // fillHandle: true, //是否开启拖拽复制操作(true,false,'horizontal'水平复制,'vertical'垂直复制)\n autoRowSize: false,\n autoColumnSize: true,\n // highlightedRows:[],\n // readOnly:true,\n // comments: true,\n width: \"100%\",\n height: \"80vh\",\n stretchH: 'all',\n language: \"zh-CN\",\n colHeaders: true,\n //['A', 'B', 'C'], //是否展示列表头,默认是A,B,C等字母,可以['列1','列2']进行自定义展示\n rowHeaders: true,\n //是否展示行表头,默认是1,2,3等数据,可以['行1','行2']进行自定义展示\n contextMenu: {\n items: {}\n },\n licenseKey: \"non-commercial-and-evaluation\",\n mergeCells: true,\n //contextMenu: true,\n wordWrap: true,\n //自动换行\n // mergeCells: true,\n // manualColumnFreeze: true, //手动固定列 ?\n // manualColumnMove: true, //手动移动列\n // manualRowMove: true, //手动移动行\n manualColumnResize: true,\n //手工更改列距\n manualRowResize: true,\n //手动更改行距\n // comments: true, //添加注释 \n // customBorders:[],//添加边框\n columnSorting: false,\n // stretchH: 'all',//根据宽度横向扩展,last:只扩展最后一列,none:默认不扩展\n // fillHandle: true, //选中拖拽复制 possible values: true, false, \"horizontal\", \"vertical\"\n // fixedColumnsLeft: 1,//固定左边列数\n // fixedRowsTop: 0,//固定上边列数\n // beforeRemoveRow: this.beforeRemoveRowMe,\n afterCreateRow: this.afterCreateRowMe,\n afterChange: this.afterChangeMe,\n afterSelectionEnd: this.afterSelectionEndMe,\n renderer: this.rendererMe,\n cells: this.cellsMe,\n afterLoadData: this.afterLoadDataMe\n }, _defineProperty(_hotSettings, \"mergeCells\", [//合并\n // {row: 1, col: 1, rowspan: 3, colspan: 3}, //指定合并,从(1,1)开始行3列3合并成一格\n // {row: 3, col: 4, rowspan: 2, colspan: 2}\n ]), _defineProperty(_hotSettings, \"columns\", []), _defineProperty(_hotSettings, \"hiddenColumns\", {\n copyPasteEnabled: true,\n indicators: true,\n columns: []\n }), _defineProperty(_hotSettings, \"nestedHeaders\", null), _defineProperty(_hotSettings, \"formulas\", false), _hotSettings),\n mathExpMap: {},\n rowMathExpMap: {},\n mathExpItemMap: {},\n initCustDialogConf: {},\n customDialog: {},\n fillOrg: {},\n readOnlyColumnMap: {},\n cellStyleMap: {},\n //列样式\n mathRowCellMap: {},\n //计算单元格\n allMathExpList: {},\n //所有与计算相关的列\n crossMappings: {},\n //跨表取数设置\n crossMappingSubTables: [],\n //被取数的子表\n mainFieldMathMap: {},\n //涉及主表计算公式\n initRowData: {},\n allRowMathMap: {},\n //跨行运算公式\n firstSumMap: {},\n //首行汇总\n instId: '',\n //流程实例ID\n defId: '',\n //流程定义ID\n initDataBack: [],\n //初始化数据备份\n initSumRowField: '',\n //统计行标签字段\n initSumRowValue: '',\n //统计行标签字段值\n crossMappingFields: {},\n //跨表取数单元格\n mergeCellField: '',\n //合并单元格列\n readOnlyRowsMap: {},\n //单元格只读设置\n cellCalcs: [],\n //单元格计算公式\n requiredRowsMap: {},\n //必填设置,提交时校验\n fieldNameMap: {}\n };\n },\n computed: {\n hotInstance: function hotInstance() {\n return this.$refs.hottable.hotInstance;\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n var formInst = utils.getOnlineFormInstance(this);\n\n if (formInst && formInst.$parent) {\n var columnSort = true;\n\n if (formInst.$parent.instId) {\n this.instId = formInst.$parent.instId;\n columnSort = false;\n }\n\n if (formInst.$parent.defId) {\n this.defId = formInst.$parent.defId;\n columnSort = false;\n } //流程中不允许排序,在基础数据维护中允许排序\n\n\n this.hotSettings.columnSorting = columnSort;\n }\n\n if (this.options) {\n (function () {\n var optionsJon = JSON.parse(_this2.options);\n _this2.subTablePath = optionsJon.subTablePath;\n var relations = optionsJon.colHeadersRelations;\n var isMathExp = false; //是否包含计算公式\n\n var _this = _this2;\n\n if (optionsJon.initSumRowField) {\n _this2.initSumRowField = optionsJon.initSumRowField;\n }\n\n if (optionsJon.initSumRowValue) {\n _this2.initSumRowValue = optionsJon.initSumRowValue;\n } //设置控件高度\n\n\n if (optionsJon.height) {\n _this2.hotSettings.height = optionsJon.height + 'vh';\n } //收集单元格计算公式\n\n\n if (optionsJon.cellCalcs && optionsJon.cellCalcs.length > 0) {\n _this2.cellCalcs = _toConsumableArray(optionsJon.cellCalcs); //计算单元格只读\n\n _this2.cellCalcs.forEach(function (cellCalc) {\n var fieldName = cellCalc.cellField.split('.')[2];\n _this.readOnlyRowsMap[fieldName + '_' + (cellCalc.rowIndex - 1)] = true;\n });\n } //收集表头、列合并单元格、计算公式、字段权限等\n\n\n if (relations && relations.length > 0) {\n var hotFieldPermission = _this2.permission ? _this2.permission['fields'][optionsJon.boSubEntity] : [];\n var headers = [];\n var columns = [];\n var dataList = [[]];\n\n var _loop = function _loop(index) {\n var relation = relations[index];\n _this2.fieldNameMap[relation.name] = relation.desc;\n headers.push(relation.desc);\n _this.initRowData[relation.name] = '';\n var column = relation.column;\n column.className = 'htLeft';\n\n if (column.type == 'dropdown' && Array.isArray(column.source) && column.source.length > 0) {\n var sourceArray = [];\n column.source.forEach(function (item) {\n if (item.value != '' && item.value != 'undefined') {\n sourceArray.push(item.value);\n }\n });\n column.source = sourceArray;\n } //收集计算公式\n\n\n if (column.mathExp) {\n _this2.initMathMap(column);\n\n isMathExp = true;\n }\n\n if (column.rowMathExp && Array.isArray(column.rowMathExp) && column.rowMathExp.length > 0) {\n _this2.initRowMathMap(column);\n\n isMathExp = true;\n } //收集合并列\n\n\n if (column.mergeCell === true) {\n var cellField = {\n field: column.data,\n index: index\n };\n\n if (!_this2.mergeCellField) {\n _this2.mergeCellField = _objectSpread({}, cellField);\n } else {\n _this2.addCellFieldChildren(_this2.mergeCellField, cellField);\n }\n } //应用流程表单权限\n\n\n if (hotFieldPermission[column.data] == 'r') {\n column.readOnly = true;\n } else if (hotFieldPermission[column.data] == 'n') {\n _this2.hotSettings.hiddenColumns.columns.push(index);\n } else if (hotFieldPermission[column.data] == 'b') {\n column.required = true;\n _this2.requiredRowsMap[column.data] = true;\n } //收集只读\n\n\n if (column.readOnly) {\n _this2.readOnlyColumnMap[index] = {\n field: column.data,\n desc: relation.desc\n };\n } else if (column.readOnlyRows) {\n //单元格只读\n var readOnlyRows = column.readOnlyRows.split(',');\n readOnlyRows.forEach(function (rowIndex) {\n _this.readOnlyRowsMap[column.data + '_' + (rowIndex - 1)] = true;\n });\n } //收集必填\n\n\n if (column.required) {\n _this2.requiredRowsMap[column.data] = {\n all: true\n };\n } else if (column.requiredRows) {\n //单元格必填\n var requiredRows = column.requiredRows.split(',');\n _this.requiredRowsMap[column.data] = {\n all: false,\n rows: requiredRows\n };\n } //收集列样式\n\n\n _this2.handCellStyle(column); //收集首行汇总\n\n\n if (relation.isSum == true) {\n _this2.firstSumMap[relation.name] = true;\n }\n\n columns.push(column);\n };\n\n for (var index = 0; index < relations.length; index++) {\n _loop(index);\n } //收集跨表取数设置\n\n\n var crossMapping = optionsJon.crossMapping;\n\n if (crossMapping && Array.isArray(crossMapping) && crossMapping.length > 0) {\n var subTableMap = {};\n crossMapping.forEach(function (crossMap) {\n var cfromFields = crossMap.fromFields;\n\n if (crossMap.toField && cfromFields && Array.isArray(cfromFields) && cfromFields.length > 0) {\n //收集跨表取数字段及位置(设置只读)\n var crossField = crossMap.toField.split('.')[2];\n\n if (!_this.crossMappingFields[crossField]) {\n _this.crossMappingFields[crossField] = {};\n }\n\n _this.crossMappingFields[crossField][crossMap.toIndex - 1] = true;\n var subTableName = '';\n\n for (var k = 0; k < cfromFields.length; k++) {\n var mfromFields = cfromFields[k].fromField.split('.');\n var subPath = mfromFields[0] + '.' + mfromFields[1];\n\n if (!_this.crossMappings[mfromFields[1]]) {\n _this.crossMappings[mfromFields[1]] = [];\n }\n\n if (!subTableMap[subPath]) {\n _this.crossMappingSubTables.push(subPath);\n\n subTableMap[subPath] = true;\n }\n\n subTableName = mfromFields[1];\n }\n\n _this.crossMappings[subTableName].push(crossMap);\n }\n });\n } //收集主表计算设置\n\n\n _this2.initMainMathMap(optionsJon.mainTableCalcs); //收集所有计算公式相关单元格信息\n\n\n _this2.initAllMathField(); //初始化嵌套表头\n\n\n _this2.initNestedHeaders(optionsJon, relations);\n\n _this2.hotSettings.colHeaders = headers;\n _this2.hotSettings.columns = columns;\n _this2.hotSettings.data = dataList;\n _this2.hotSettings.mergeCells = _this2.buildMergeCell(dataList);\n } //处理新增和删除权限\n\n\n _this2.handlerMenu(optionsJon, isMathExp); //获取子表字段属性\n // this.initFormFields();\n\n })();\n }\n\n if (this.initconf) {\n var initConfJson = JSON.parse(this.initconf);\n\n if (initConfJson) {\n this.initCustDialogConf = initConfJson;\n\n if (initConfJson.orgConfig && (initConfJson.orgConfig.id || initConfJson.orgConfig.name || initConfJson.orgConfig.code || initConfJson.orgConfig.instId)) {\n //初始化部门填制单位\n this.initFillOrg();\n }\n }\n }\n },\n methods: {\n addCellFieldChildren: function addCellFieldChildren(field, children) {\n if (field.children) {\n return this.addCellFieldChildren(field.children, children);\n } else {\n field.children = children;\n }\n },\n initFillOrg: function initFillOrg() {\n var custDialog = this.initCustDialogConf;\n var currentUser = JSON.parse(sessionStorage.getItem(\"currentUser\"));\n\n if (custDialog && custDialog.orgConfig && (custDialog.orgConfig.id || custDialog.orgConfig.name || custDialog.orgConfig.code || custDialog.orgConfig.instId) && !this.fillOrg.id) {\n if (!localStorage.getItem(\"curFillOrg_\" + currentUser.account)) {\n var _this = this;\n\n _this.$http.get('${uc}/api/org/v1/org/getFillOrg').then(function (resp) {\n var rep = resp.data;\n\n if (rep.state) {\n _this.fillOrg = rep.value;\n localStorage.setItem(\"curFillOrg_\" + currentUser.account, JSON.stringify(rep.value));\n } else {\n _this.$message({\n message: rep.message,\n type: \"warning\"\n });\n }\n }, function (error) {\n _this.closeLoading(loading);\n\n _this.$message({\n message: \"获取当前用户填制单位失败!\",\n type: \"warning\"\n });\n });\n } else {\n this.fillOrg = JSON.parse(localStorage.getItem(\"curFillOrg_\" + currentUser.account));\n }\n }\n },\n initMathMap: function initMathMap(column) {\n //收集行内计算公式\n if (column.mathExp) {\n //收集计算单元格\n this.mathRowCellMap[column.data] = {};\n this.mathRowCellMap[column.data][-1] = true;\n this.mathExpMap[column.data] = column.mathExp;\n this.mathExpItemMap[column.data] = {};\n this.mathExpItemMap[column.data][column.data] = column.mathExp;\n var fields = this.parseFuncexpField(column.mathExp);\n\n if (fields) {\n var _this = this;\n\n fields.forEach(function (field) {\n var fieldArray = field.split('.');\n var na = fieldArray[1];\n var sa = fieldArray[3];\n\n if (!_this.mathExpItemMap[na]) {\n _this.mathExpItemMap[na] = {};\n }\n\n _this.mathExpItemMap[na][column.data] = column.mathExp;\n\n if (!_this.mathExpItemMap[sa]) {\n _this.mathExpItemMap[sa] = {};\n }\n\n _this.mathExpItemMap[sa][column.data] = column.mathExp;\n });\n }\n }\n },\n initRowMathMap: function initRowMathMap(column) {\n //收集跨行计算公式\n if (column.rowMathExp) {\n var rowMathExp = column.rowMathExp;\n this.allRowMathMap[column.data] = rowMathExp;\n\n if (!this.mathRowCellMap[column.data]) {\n this.mathRowCellMap[column.data] = {};\n }\n\n var _this = this;\n\n rowMathExp.forEach(function (item) {\n //收集计算单元格\n _this.mathRowCellMap[column.data][item.sn - 1] = true;\n var statFun = item.mathExp;\n var myregexp = /\\[(.*?)\\]/g;\n var match = myregexp.exec(statFun);\n var arrs = [];\n\n while (match != null) {\n var idx = match[1];\n var idexVal = idx.indexOf(':') == -1 ? _this.toNumber(idx) : idx;\n var has = false;\n\n for (var i = 0, v; v = arrs[i++];) {\n if (v == idexVal) has = true;\n }\n\n if (!has) {\n arrs.push(idexVal);\n\n if (!_this.rowMathExpMap[column.data]) {\n _this.rowMathExpMap[column.data] = {};\n _this.rowMathExpMap[column.data][idexVal] = [];\n }\n\n if (!_this.rowMathExpMap[column.data][idexVal]) {\n _this.rowMathExpMap[column.data][idexVal] = [];\n }\n\n _this.rowMathExpMap[column.data][idexVal].push(item);\n }\n\n match = myregexp.exec(statFun);\n }\n });\n }\n },\n initMainMathMap: function initMainMathMap(mainTableCalcs) {\n //收集主表计算公式\n if (mainTableCalcs && Array.isArray(mainTableCalcs) && mainTableCalcs.length > 0) {\n var mainFieldMathMap = {};\n mainTableCalcs.forEach(function (calc) {\n if (calc.sumField && calc.mainField) {\n var sumFieldPath = calc.sumField.split(\".\");\n mainFieldMathMap[sumFieldPath[2]] = calc;\n }\n });\n this.mainFieldMathMap = mainFieldMathMap;\n }\n },\n initAllMathField: function initAllMathField() {\n var _this = this;\n\n var rowMathMap = _this.rowMathExpMap;\n var mathMap = _this.mathExpMap;\n var mathExpItemMap = _this.mathExpItemMap;\n var rowExecArray = [];\n\n if (rowMathMap) {\n for (var key in rowMathMap) {\n if (rowMathMap.hasOwnProperty(key)) {\n var rowMath = rowMathMap[key];\n var rowItem = {\n name: key,\n isAll: false,\n index: []\n };\n\n for (var idx in rowMath) {\n if (rowMath.hasOwnProperty(idx)) {\n if (idx.indexOf(':') != -1) {\n var fArray = idx.split(\":\");\n\n if (fArray.length == 2) {\n var a = _this.toNumber(fArray[0]);\n\n var b = _this.toNumber(fArray[1]);\n\n for (var i = a; i <= b; i++) {\n rowItem.index.push(i);\n }\n }\n } else {\n rowItem.index.push(_this.toNumber(_this.toNumber(idx)));\n }\n }\n }\n\n rowExecArray.push(rowItem);\n }\n }\n }\n\n if (mathMap) {\n for (var ma in mathMap) {\n if (mathMap.hasOwnProperty(ma)) {\n rowExecArray.push({\n name: ma,\n isAll: true\n });\n }\n }\n }\n\n if (rowExecArray && rowExecArray.length > 0) {\n _this.allMathExpList = rowExecArray;\n }\n },\n //初始化嵌套表头\n initNestedHeaders: function initNestedHeaders(options, headers) {\n var _this = this;\n\n var getRowLable = function getRowLable(cell) {\n var start = cell.startField;\n var end = cell.endField;\n var colspan = 0;\n var isEnd = false;\n\n for (var i = 0; i < headers.length; i++) {\n if (!isEnd) {\n if (start == headers[i].name) {\n colspan++;\n } else if (end == headers[i].name) {\n colspan++;\n isEnd = true;\n } else if (colspan > 0) {\n colspan++;\n }\n }\n }\n\n return {\n label: cell.name,\n colspan: colspan\n };\n };\n\n var getIsInNested = function getIsInNested(name, itemHeaders) {\n var rowLable = null;\n itemHeaders.forEach(function (cell) {\n if (!rowLable && name == cell.startField) {\n rowLable = getRowLable(cell);\n }\n });\n return rowLable;\n };\n\n if (options && typeof options.nestedHeaders != 'undefined' && options.nestedHeaders) {\n var myNestedHeaders = [];\n options.nestedHeaders.forEach(function (row) {\n var nestedHeader = [];\n\n for (var i = 0; i < headers.length; i++) {\n var rowLable = getIsInNested(headers[i].name, row.headers);\n\n if (!rowLable) {\n nestedHeader.push(headers[i].desc);\n } else {\n nestedHeader.push(rowLable);\n i = i + rowLable.colspan - 1;\n }\n }\n\n if (JSON.stringify(nestedHeader) !== JSON.stringify(headers)) {\n myNestedHeaders.push(nestedHeader);\n }\n });\n\n if (myNestedHeaders.length > 0) {\n var headerArray = [];\n headers.forEach(function (myHeader) {\n headerArray.push(myHeader.desc);\n });\n myNestedHeaders.push(headerArray);\n this.hotSettings.nestedHeaders = myNestedHeaders;\n }\n }\n },\n initFormFields: function initFormFields() {\n var formInst = utils.getOnlineFormInstance(this);\n this.formId = formInst.$refs[\"onlineForm\"].$parent.$parent.formId;\n\n if (this.formId && typeof this.formId != 'undefined') {\n var paths = this.subTablePath.split('.');\n var entName = paths[1].split('sub_')[1];\n\n var _this = this;\n\n this.$http.get('${form}/form/form/v1/getFormFields?formId=' + this.formId + '&entName=' + entName).then(function (resp) {\n if (resp.data) {\n _this.formFields = resp.data;\n }\n }, function (error) {});\n }\n },\n handlerMenu: function handlerMenu(optionsJon, isMathExp) {\n if (this.permission && this.permission['table']) {\n var tabPermission = this.permission['table'][optionsJon.boSubEntity];\n\n var __this = this; // this.hotSettings.contextMenu.items[\"row_detail\"] = {name:'明细',callback:function(){\n // let cell = this.getSelected()[0];\n // const index = cell[0];\n // const curData = __this.getHotTableData();\n // __this.$refs['subDataDetail'].handleOpen(curData[index],__this.formFields);\n // },\n // };\n\n\n if (tabPermission && tabPermission.add == true) {\n this.hotSettings.contextMenu.items[\"row_above\"] = {\n name: '上方插入一行'\n };\n this.hotSettings.contextMenu.items[\"row_below\"] = {\n name: '下方插入一行'\n };\n this.hotSettings.contextMenu.items[\"row_up\"] = {\n name: '上移',\n callback: function callback() {\n var cell = this.getSelected()[0];\n var index = cell[0];\n\n if (index === 0) {\n __this.$message({\n message: \"已经是列表中第一位\",\n type: \"warning\"\n });\n } else {\n var dataList = __this.hotSettings.data;\n var t = dataList[index - 1];\n dataList[index - 1] = dataList[index];\n dataList[index] = t;\n __this.hotSettings.data = [];\n __this.hotSettings.data = dataList;\n }\n }\n };\n this.hotSettings.contextMenu.items[\"row_down\"] = {\n name: '下移',\n callback: function callback() {\n var cell = this.getSelected()[0];\n var index = cell[0];\n var dataList = __this.hotSettings.data;\n\n if (index === dataList.length - 1) {\n __this.$message({\n message: \"已经是列表中最后一位\",\n type: \"warning\"\n });\n } else {\n var t = dataList[index + 1];\n dataList[index + 1] = dataList[index];\n dataList[index] = t;\n __this.hotSettings.data = [];\n __this.hotSettings.data = dataList;\n }\n }\n };\n\n if (tabPermission && tabPermission.del == true) {\n this.hotSettings.contextMenu.items[\"remove_row\"] = {\n name: '删除行'\n };\n }\n }\n }\n },\n handCellStyle: function handCellStyle(column) {\n if (column.style) {\n var cstyle = '';\n\n if (column.style.diyStyle) {\n cstyle = column.style.diyStyle;\n } else {\n if (column.style.background) {\n cstyle = 'background-color:' + column.style.background + ';';\n }\n\n if (column.style.bold) {\n cstyle = cstyle + 'font-weight: bold;';\n }\n\n if (column.style.size) {\n cstyle = cstyle + 'font-size:' + column.style.size + 'px;';\n }\n\n if (column.style.color) {\n cstyle = cstyle + 'color:' + column.style.color + ';';\n }\n }\n\n if (cstyle) {\n this.cellStyleMap[column.data] = cstyle;\n }\n }\n },\n cellsMe: function cellsMe(row, col, prop) {\n var cellProperties = {\n renderer: this.rendererMe\n }; //计算公式单元格设置只读\n\n if (this.mathRowCellMap[prop] && (this.mathRowCellMap[prop][-1] === true || this.mathRowCellMap[prop][row] === true)) {\n cellProperties['readOnly'] = true;\n } else if (this.crossMappingFields[prop] && this.crossMappingFields[prop][row] === true) {\n cellProperties['readOnly'] = true;\n } else if (this.firstSumMap[prop] && row == 0) {\n cellProperties['readOnly'] = true;\n } else if (this.readOnlyRowsMap[prop + '_' + row] === true) {\n cellProperties['readOnly'] = true;\n }\n\n return cellProperties;\n },\n afterLoadDataMe: function afterLoadDataMe() {// if(this.isInitTemplateData!=='true' && this.hotSettings.data && this.hotSettings.data.length==1 && \n // Array.isArray(this.hotSettings.data[0])){\n // this.hotSettings.data[0] = {...this.initRowData};\n // }\n //this.hotInstance.render();\n },\n rendererMe: function rendererMe(instance, td, row, col, prop, value, cellProperties) {\n Handsontable.renderers.TextRenderer.apply(this, arguments);\n\n if (this.cellStyleMap[prop]) {\n td.style = this.cellStyleMap[prop];\n }\n\n td.style.lineHeight = '22px';\n\n if (this.mathRowCellMap[prop] && (this.mathRowCellMap[prop][-1] === true || this.mathRowCellMap[prop][row] === true)) {\n cellProperties['readOnly'] = true;\n td.style.background = '#F5F7FA';\n } else if (this.crossMappingFields[prop] && this.crossMappingFields[prop][row] === true) {\n cellProperties['readOnly'] = true;\n td.style.background = '#F5F7FA';\n } else if (this.firstSumMap[prop] && row == 0) {\n cellProperties['readOnly'] = true;\n td.style.background = '#F5F7FA';\n } else if (this.readOnlyRowsMap[prop + '_' + row] === true) {\n cellProperties['readOnly'] = true;\n td.style.background = '#F5F7FA';\n }\n },\n buildMergeCell: function buildMergeCell(dataList) {\n if (!dataList) {\n dataList = this.getHotTableData();\n }\n\n if (dataList && dataList.length == 1 && Object.keys(dataList[0]).length == 0) {\n return;\n }\n\n var mergeCells = [];\n var mergef = {\n row: 0,\n col: 0,\n rowspan: dataList.length,\n colspan: 1\n };\n this.getChildrenMergeCell(mergeCells, dataList, mergef, this.mergeCellField);\n this.mergeCells = mergeCells;\n return mergeCells;\n },\n getChildrenMergeCell: function getChildrenMergeCell(mergeCells, dataList, merge, field) {\n var mfield = field;\n var mergeMap = {};\n var indexMap = {};\n\n for (var i = merge.row; i < merge.row + merge.rowspan; i++) {\n var item = dataList[i];\n indexMap[mfield.field] = mfield.index;\n\n if (!mergeMap[mfield.field]) {\n mergeMap[mfield.field] = {\n value: item[mfield.field],\n size: 1,\n startRow: i\n };\n } else {\n var omfield = mergeMap[mfield.field];\n\n if (omfield.value == null || omfield.value == 'null' || omfield.value == 'undefined' || omfield.value === '' || omfield.value != item[mfield.field]) {\n if (omfield.size > 1) {\n var mergef = {\n row: omfield.startRow,\n col: mfield.index,\n rowspan: omfield.size,\n colspan: 1\n };\n mergeCells.push(_objectSpread({}, mergef));\n\n if (mfield.children) {\n this.getChildrenMergeCell(mergeCells, dataList, mergef, mfield.children);\n }\n }\n\n delete mergeMap[mfield.field];\n mergeMap[mfield.field] = {\n value: item[mfield.field],\n size: 1,\n startRow: i\n };\n } else {\n omfield.size++;\n mergeMap[mfield.field] = omfield;\n }\n }\n }\n\n for (var key in mergeMap) {\n if (mergeMap.hasOwnProperty(key)) {\n var _merge = mergeMap[key];\n\n if (_merge.size > 1) {\n var _mergef = {\n row: _merge.startRow,\n col: indexMap[key],\n rowspan: _merge.size,\n colspan: 1\n };\n mergeCells.push(_objectSpread({}, _mergef));\n\n if (mfield.children) {\n this.getChildrenMergeCell(mergeCells, dataList, _mergef, mfield.children);\n }\n }\n }\n }\n },\n beforeRemoveRowMe: function beforeRemoveRowMe(changes, source) {// 数据改变时触发此方法\n },\n // 添加行\n afterCreateRowMe: function afterCreateRowMe(changes) {\n this.hotSettings.data[changes] = _objectSpread({}, this.initRowData);\n\n if (Array.isArray(this.hotSettings.data[0])) {\n this.hotSettings.data[0] = _objectSpread({}, this.initRowData);\n this.hotSettings.data[0] = this.fillOrgDataField(this.hotSettings.data[0]);\n }\n\n this.hotSettings.data[changes] = this.fillOrgDataField(this.hotSettings.data[changes]);\n },\n // 新增行时,动态改变值\n afterChangeMe: function afterChangeMe(changes, source) {\n if (source == 'edit' || source == 'Autofill.fill') {\n //执行计算公式\n //this.execMathExpSingle(changes);\n //this.execMathExpAll(changes);\n this.execInCellMathExp(null, changes);\n } else if (source == 'CopyPaste.paste' && changes && changes.length > 0) {\n var hotData = this.getBackMergeData();\n var isChange = false;\n\n if (hotData) {\n changes.forEach(function (change) {\n var changeIndex = change[0];\n var changeField = change[1];\n var changeValue = change[3];\n\n if (changeValue === ' ') {\n hotData[changeIndex][changeField] = '';\n isChange = true;\n }\n });\n\n if (isChange) {\n this.hotSettings.data = [];\n this.hotSettings.data = hotData;\n }\n\n try {\n this.execCrossMapping(); //执行跨表取数\n\n this.execCellMathExp(hotData); //执行计算公式 \n } catch (error) {\n console.log(error);\n }\n }\n }\n },\n execMathExpAll: function execMathExpAll(changes) {\n if (changes && changes.length > 0) {\n var _this = this;\n\n var isChange = false;\n var hotData = this.getBackMergeData();\n var fsumMap = this.firstSumMap;\n var changeFields = {};\n changes.forEach(function (change) {\n //执行跨行计算公式\n var changeIndex = change[0];\n var changeField = change[1];\n changeFields[changeField] = true; //执行行内计算公式\n\n var exeMathResult = _this.exeAllMathExp(hotData, _this, changeIndex, isChange);\n\n hotData = exeMathResult.data;\n\n if (exeMathResult.isChange) {\n isChange = exeMathResult.isChange;\n }\n }); //执行跨行计算公式\n\n var exeRowResult = _this.exeAllRowMathExp(hotData, _this, isChange);\n\n hotData = exeRowResult.data;\n\n if (exeRowResult.isChange) {\n isChange = exeRowResult.isChange;\n } //执行单元格计算公式\n\n\n var exeCellResult = _this.exeCellMathExp(hotData, _this, isChange);\n\n hotData = exeCellResult.data;\n\n if (exeCellResult.isChange) {\n isChange = exeCellResult.isChange;\n } //执行首行汇总\n\n\n if ('{}' != JSON.stringify(fsumMap)) {\n for (var sumKey in fsumMap) {\n if (fsumMap.hasOwnProperty(sumKey)) {\n var tempResult = _this.exeFirstRowSum(hotData, sumKey, _this, isChange, fsumMap);\n\n hotData = tempResult.data;\n\n if (tempResult.isChange) {\n isChange = tempResult.isChange;\n }\n }\n }\n } //执行主表统计公式\n\n\n for (var cField in changeFields) {\n if (changeFields.hasOwnProperty(cField)) {\n _this.exeMainFieldMathExp(hotData, cField, _this);\n }\n }\n\n if (isChange) {\n this.hotSettings.data = [];\n this.hotSettings.data = hotData;\n }\n\n if (this.mergeCells && this.mergeCells.length > 0) {\n this.hotSettings.mergeCells = this.buildMergeCell(hotData);\n }\n }\n },\n exeAllMathExp: function exeAllMathExp(hotData, _this, fieldIndex, isChange) {\n //执行所有行内运算\n if (_this.mathExpMap) {\n for (var fieldName in _this.mathExpMap) {\n //如果行内运算对应单元格包含跨行运算,则以跨行运算为主,不进行行内运算\n if (_this.mathExpMap.hasOwnProperty(fieldName) && !this.isInRowMath(fieldName, fieldIndex)) {\n var curexp = _this.mathExpMap[fieldName];\n var curvalue = this.calcExpValue(curexp, hotData, fieldIndex);\n\n if (hotData[fieldIndex]) {\n hotData[fieldIndex][fieldName] = curvalue;\n isChange = true;\n }\n }\n }\n\n return {\n data: hotData,\n isChange: isChange\n };\n }\n },\n //判断行内运算的单元格是否包含跨行运算\n isInRowMath: function isInRowMath(field, fieldIndex) {\n var isIn = false;\n\n if (this.allRowMathMap && this.allRowMathMap[field]) {\n var rowMaths = this.allRowMathMap[field];\n\n if (rowMaths && rowMaths.length > 0) {\n rowMaths.forEach(function (mathItem) {\n if (mathItem.sn - 1 == fieldIndex) {\n isIn = true;\n return true;\n }\n });\n }\n }\n\n return isIn;\n },\n exeAllRowMathExp: function exeAllRowMathExp(hotData, _this, isChange) {\n //执行所有跨行运算\n if (_this.allRowMathMap) {\n var _loop2 = function _loop2(fieldName) {\n if (_this.allRowMathMap.hasOwnProperty(fieldName)) {\n var frowMaths = _this.allRowMathMap[fieldName];\n\n if (frowMaths && frowMaths.length > 0) {\n frowMaths.forEach(function (mathItem) {\n if (hotData[mathItem.sn - 1]) {\n var value = _this.calcRowsExpValue(mathItem.mathExp, hotData, fieldName);\n\n hotData[mathItem.sn - 1][fieldName] = value;\n isChange = true;\n }\n });\n }\n }\n };\n\n for (var fieldName in _this.allRowMathMap) {\n _loop2(fieldName);\n }\n }\n\n return {\n data: hotData,\n isChange: isChange\n };\n },\n exeCellMathExp: function exeCellMathExp(hotData, _this, isChange) {\n //执行所有单元格计算公式\n if (_this.cellCalcs && _this.cellCalcs.length > 0) {\n var formInst = utils.getOnlineFormInstance(this);\n\n _this.cellCalcs.forEach(function (item) {\n var fieldName = item.cellField.split('.')[2];\n\n if (hotData[item.rowIndex - 1]) {\n var value = _this.calcCellExpValue(item.mathExp, hotData, formInst);\n\n hotData[item.rowIndex - 1][fieldName] = value;\n isChange = true;\n }\n });\n }\n\n return {\n data: hotData,\n isChange: isChange\n };\n },\n exeFirstRowSum: function exeFirstRowSum(hotData, fieldName, _this, isChange, fsumMap) {\n if (hotData && hotData.length > 0) {\n if (fsumMap[fieldName] === true) {\n var exeValue = _this.sumCol(hotData, fieldName, true, _this);\n\n hotData[0][fieldName] = this.tofixed(exeValue, 2);\n isChange = true;\n }\n }\n\n return {\n data: hotData,\n isChange: isChange\n };\n },\n sumCol: function sumCol(data, field, outFirst, _this) {\n //汇总某列数据,\n var sum = 0;\n\n if (data && data.length > 0) {\n for (var index = 0; index < data.length; index++) {\n if (!(outFirst && index == 0)) {\n var el = data[index];\n sum += _this.toNumber(el[field]);\n }\n }\n }\n\n return sum;\n },\n //执行跨行计算公式\n exeRowMathExp: function exeRowMathExp(hotData, fieldIndex, fieldName, _this, isChange, isRepeat) {\n //const fieldIndex = ffieldIndex+1;//_this.rowMathExpMap[column.data]\n //执行当前字段涉及的计算公式(为了保证执行顺序,先执行当前编辑字段相关计算公式)\n for (var rme in _this.rowMathExpMap) {\n if (_this.rowMathExpMap.hasOwnProperty(rme)) {\n var frowMaths = _this.rowMathExpMap[rme];\n var expArray = [];\n\n if (frowMaths) {\n if (frowMaths[fieldIndex]) {\n expArray.push(fieldIndex);\n }\n\n for (var fm in frowMaths) {\n if (frowMaths.hasOwnProperty(fm)) {\n if (fm.indexOf(\":\") != -1) {\n var fArray = fm.split(\":\");\n\n if (fArray.length == 2) {\n var a = _this.toNumber(fArray[0]);\n\n var b = _this.toNumber(fArray[1]);\n\n if (fieldIndex >= a && fieldIndex <= b) {\n expArray.push(fm);\n }\n }\n }\n }\n }\n }\n\n if (expArray.length > 0) {\n //先执行直接关联的单元格计算\n expArray.forEach(function (expKey) {\n var expItems = _this.rowMathExpMap[fieldName][expKey];\n expItems.forEach(function (eItem) {\n var value = _this.calcRowsExpValue(eItem.mathExp, hotData, fieldName);\n\n if (hotData[eItem.sn - 1]) {\n hotData[eItem.sn - 1][fieldName] = value;\n isChange = true;\n }\n });\n });\n }\n }\n }\n\n return {\n data: hotData,\n isChange: isChange\n };\n },\n //执行行内计算公式\n exeMathExp: function exeMathExp(hotData, fieldIndex, fieldName, _this, isChange, isRepeat) {\n //执行当前字段涉及的计算公式(为了保证执行顺序,先执行当前编辑字段相关计算公式)\n var curExpMap = _this.mathExpItemMap[fieldName];\n\n if (curExpMap) {\n for (var curkey in curExpMap) {\n if (curExpMap.hasOwnProperty(curkey)) {\n var curexp = curExpMap[curkey];\n var curvalue = this.calcExpValue(curexp, hotData, fieldIndex);\n\n if (hotData[fieldIndex]) {\n hotData[fieldIndex][curkey] = curvalue;\n isChange = true; //执行主表统计公式\n\n _this.exeMainFieldMathExp(hotData, curkey, _this);\n }\n }\n } //执行其他字段涉及的计算公式(防止有关联计算)\n\n\n for (var itemKey in _this.mathExpItemMap) {\n if (_this.mathExpItemMap.hasOwnProperty(itemKey) && fieldName != itemKey) {\n var expMap = _this.mathExpItemMap[itemKey];\n\n for (var key in expMap) {\n if (expMap.hasOwnProperty(key)) {\n var exp = expMap[key];\n var value = this.calcExpValue(exp, hotData, fieldIndex);\n\n if (hotData[fieldIndex]) {\n hotData[fieldIndex][key] = value;\n isChange = true; //执行主表统计公式\n\n _this.exeMainFieldMathExp(hotData, key, _this);\n }\n }\n }\n }\n }\n }\n\n if (isRepeat) {\n return _this.exeMathExp(hotData, fieldIndex, fieldName, _this, isChange, false);\n } else {\n return {\n data: hotData,\n isChange: isChange\n };\n }\n },\n //执行主表字段统计公式\n exeMainFieldMathExp: function exeMainFieldMathExp(hotData, fieldName, _this) {\n var calc = this.mainFieldMathMap[fieldName];\n\n if (calc) {\n var sumValue = 0;\n\n var _this3 = this;\n\n if (calc.mainField && hotData && hotData.length > 0) {\n hotData.forEach(function (item) {\n sumValue += _this3.toNumber(item[fieldName]);\n });\n }\n\n var formInst = utils.getOnlineFormInstance(this);\n\n if (formInst && formInst['data']) {\n var mainFieldPath = calc.mainField.split(\".\");\n formInst['data'][mainFieldPath[0]][mainFieldPath[1]] = sumValue;\n }\n }\n },\n //单元格被选中,如果是只读,提示权限信息\n afterSelectionEndMe: function afterSelectionEndMe(r, c, r2, c2) {\n var readOnlyField = this.readOnlyColumnMap[c];\n\n if (r == r2 && c == c2 && readOnlyField) {\n this.$message({\n message: \"字段【\" + readOnlyField['desc'] + \"】不可填写!\",\n type: \"warning\"\n });\n } else if (this.hotSettings.columns[c]) {\n var fieldName = this.hotSettings.columns[c]['data'];\n\n if (fieldName && this.readOnlyRowsMap[fieldName + '_' + r] === true) {\n this.$message({\n message: \"当前单元格不可填写!\",\n type: \"warning\"\n });\n } else if (fieldName && this.mathRowCellMap[fieldName] && (this.mathRowCellMap[fieldName][-1] === true || this.mathRowCellMap[fieldName][r] === true)) {\n this.$message({\n message: \"当前为计算单元格,不可填写!\",\n type: \"warning\"\n });\n } else if (this.crossMappingFields[fieldName] && this.crossMappingFields[fieldName][r] === true) {\n this.$message({\n message: \"当前为跨表取数单元格,不可填写!\",\n type: \"warning\"\n });\n } else if (this.firstSumMap[fieldName] && r == 0) {\n this.$message({\n message: \"当前为汇总单元格,不可填写!\",\n type: \"warning\"\n });\n }\n }\n },\n toNumber: function toNumber(x) {\n if (typeof x == 'undefined' || x === null || x === undefined || x === '') return 0;\n\n if (typeof x == \"string\") {\n x = x.replace(/,/g, \"\");\n }\n\n var match = x.toString().match(/([$|¥])\\d+\\.?\\d*/);\n\n if (match) {\n x = x.replace(match[1], '');\n }\n\n return Number(x);\n },\n calcExpValue: function calcExpValue(exp, scope, subIndex) {\n if (!exp) return 0;\n var reg = /([\\[|\\{]).*?\\((.*?)\\)[\\}|\\]]/g;\n\n var _this = this;\n\n exp = exp.replace(reg, function () {\n var symbol = arguments[1],\n name = arguments[2],\n value = 0;\n\n if (scope) {\n //子表统计计算情况,多行数据\n if (symbol == '[') {\n var valArray = [];\n var subMsg = name.split(\".\");\n\n if (subMsg.length < 1) {\n throw \"\\u5B50\\u8868\\u7EDF\\u8BA1\\u7684\\u8868\\u8FBE\\u5F0F\".concat(name, \"\\u9519\\u8BEF\");\n }\n\n var subMsgSize = subMsg.length;\n var fieldName = subMsg[subMsgSize - 1];\n var fvalue = 0;\n\n if (scope[subIndex] && scope[subIndex][fieldName]) {\n fvalue = _this.toNumber(scope[subIndex][fieldName]);\n }\n\n valArray.push(fvalue);\n value = \"[\".concat(valArray.join(','));\n } else {\n var subMsg = name.split(\".\");\n var fieldName = subMsg[subMsg.length - 1];\n var val = scope[subIndex] ? _this.toNumber(scope[subIndex][fieldName]) : 0;\n val = _this.toNumber(val);\n if (!isNaN(val) && \"\" != val) value = val;\n }\n }\n\n if (!value) {\n value = 0;\n }\n\n if (value < 0) {\n value = '(' + value + ')';\n }\n\n return value;\n });\n exp = exp.replace(/[|\\[|\\]]/g, \"\");\n\n if (exp.substring(0, 16) != \"FormMath.tofixed\") {\n return this.isValue(this.tofixed(eval(\"(\".concat(exp, \")\")), 0));\n }\n\n try {\n return this.isValue(eval(\"(\".concat(exp, \")\")));\n } catch (error) {\n _this.$message({\n message: \"计算公式执行失败:\" + error,\n type: \"error\"\n });\n\n return 0;\n }\n },\n calcRowsExpValue: function calcRowsExpValue(exp, scope, fName) {\n if (!exp) return 0;\n var reg = /\\[(.*?)\\]/g;\n\n var _this = this;\n\n exp = exp.replace(reg, function () {\n var symbol = arguments[1],\n cindex = arguments[2],\n expStr = arguments[3],\n value = 0;\n\n if (scope) {\n if (symbol.indexOf(':') > -1) {\n var sumStr = expStr.substring(cindex - 13, cindex - 1);\n\n if (sumStr === 'FormMath.sum') {\n var idxArray = symbol.split(':');\n\n var a = _this.toNumber(idxArray[0]);\n\n var b = _this.toNumber(idxArray[1]);\n\n var tempValue = [];\n\n for (var index = a; index <= b; index++) {\n var rowIndex = index - 1;\n\n if (scope[rowIndex]) {\n tempValue.push(_this.toNumber(scope[rowIndex][fName]));\n }\n }\n\n value = \"[\" + tempValue + \"]\";\n }\n } else {\n var val = 0;\n var rowIndex = _this.toNumber(symbol) - 1;\n\n if (scope[rowIndex]) {\n val = _this.toNumber(scope[rowIndex][fName]);\n }\n\n val = _this.toNumber(val);\n if (!isNaN(val) && \"\" != val) value = val;\n }\n }\n\n if (!value) {\n value = 0;\n }\n\n if (value < 0) {\n value = '(' + value + ')';\n }\n\n return value;\n });\n\n if (exp.substring(0, 16) != \"FormMath.tofixed\") {\n return this.isValue(this.tofixed(eval(\"(\".concat(exp, \")\")), 0));\n }\n\n var resultValue = 0;\n\n try {\n resultValue = this.isValue(eval(\"(\".concat(exp, \")\")));\n } catch (error) {\n _this.$message({\n message: \"计算公式执行失败:\" + error,\n type: \"error\"\n });\n }\n\n return resultValue;\n },\n calcCellExpValue: function calcCellExpValue(exp, scope, formInst) {\n if (!exp) return 0;\n var reg = /([\\[|\\{]).*?\\((.*?)\\)[\\}|\\]]/g;\n\n var _this = this;\n\n var subDataMap = {};\n subDataMap[_this.subTablePath] = scope;\n exp = exp.replace(reg, function () {\n var symbol = arguments[1],\n name = arguments[2],\n value = 0;\n\n if (scope) {\n //子表统计计算情况,多行数据\n if (symbol == '[') {\n var valArray = [];\n var subMsg = name.split(\".\");\n\n if (subMsg.length < 1) {\n throw \"\\u5B50\\u8868\\u7EDF\\u8BA1\\u7684\\u8868\\u8FBE\\u5F0F\".concat(name, \"\\u9519\\u8BEF\");\n }\n\n var subMsgSize = subMsg.length;\n var fvalue = 0;\n\n if (subMsgSize > 3) {\n var fieldNameStr = subMsg[subMsgSize - 1];\n var indexStr = fieldNameStr.match(/\\[(.+?)\\]/g);\n var subIndex = _this.toNumber(indexStr[0].replace(/\\[(.+?)\\]/g, '$1')) - 1;\n var fName = fieldNameStr.replace(indexStr[0], '');\n var subPath = subMsg[1] + '.' + subMsg[2];\n\n if (!subDataMap[subPath] && _this.subTablePath != subPath) {\n var hotTableRef = 'hottable.' + subPath;\n var hotTableObj = formInst.$refs[\"onlineForm\"].$refs[hotTableRef];\n\n if (hotTableObj) {\n subDataMap[subPath] = formInst.$refs[\"onlineForm\"].$refs[hotTableRef].getHotTableData();\n } else {\n var paths = subPath.split('.');\n\n if (formInst.data[paths[0]] && formInst.data[paths[0]][paths[1]]) {\n subDataMap[subPath] = formInst.data[paths[0]][paths[1]];\n }\n }\n }\n\n if (subDataMap[subPath]) {\n var subData = _toConsumableArray(subDataMap[subPath]);\n\n if (subData[subIndex] && subData[subIndex][fName]) {\n fvalue = _this.toNumber(subData[subIndex][fName]);\n }\n }\n } else if (formInst.data[subMsg[1]] && formInst.data[subMsg[1]][subMsg[2]]) {\n fvalue = _this.toNumber(formInst.data[subMsg[1]][subMsg[2]]);\n }\n\n valArray.push(fvalue);\n value = \"[\".concat(valArray.join(','));\n } else {\n var subMsg = name.split(\".\");\n var fieldName = subMsg[subMsg.length - 1];\n var val = 0;\n\n if (formInst.data[subMsg[1]] && formInst.data[subMsg[1]][subMsg[2]]) {\n val = _this.toNumber(formInst.data[subMsg[1]][subMsg[2]]);\n }\n\n if (!isNaN(val) && \"\" != val) value = val;\n }\n }\n\n if (!value) {\n value = 0;\n }\n\n if (value < 0) {\n value = '(' + value + ')';\n }\n\n return value;\n });\n exp = exp.replace(/[|\\[|\\]]/g, \"\");\n\n if (exp.substring(0, 16) != \"FormMath.tofixed\") {\n return this.isValue(this.tofixed(eval(\"(\".concat(exp, \")\")), 0));\n }\n\n try {\n return this.isValue(eval(\"(\".concat(exp, \")\")));\n } catch (error) {\n _this.$message({\n message: \"计算公式执行失败:\" + error,\n type: \"error\"\n });\n\n return 0;\n }\n },\n getValueByPath: function getValueByPath(path, subIndex) {\n var obj = this.hotSettings.data;\n\n if (!obj || !path || path.constructor != String) {\n return null;\n }\n\n if (!/^\\w?.*[\\w|\\]]$/.test(path)) {\n return null;\n }\n\n var pathAry = path.split(\".\");\n\n if (pathAry.length == 1) {\n return obj[path];\n } else if (pathAry.length > 1) {\n var ret = obj;\n\n for (var i = 0; i < pathAry.length; i++) {\n if (ret === null || ret === undefined) {\n return null;\n }\n\n var key = pathAry[i];\n var match = /^(\\w+)\\[(\\d+)\\]$/.exec(key);\n\n if (match) {\n ret = ret[match[1]][match[2]];\n } else if (ret && ret.constructor === Array) {\n var index = 0;\n\n if (subIndex != null && subIndex != undefined) {\n var preIndex = Number.parseInt(subIndex);\n\n if (!isNaN(preIndex)) {\n index = preIndex;\n }\n }\n\n ret = ret[index][key];\n } else {\n ret = ret[key];\n }\n }\n\n return ret;\n }\n\n return null;\n },\n isValue: function isValue(value) {\n if (!value) {\n return \"\";\n } else if (value == \"Infinity\") {\n return \"\";\n } else {\n return value;\n }\n },\n tofixed: function tofixed(x, b) {\n var tmp = this.toNumber(x);\n b = this.toNumber(b);\n if (isNaN(tmp) || tmp === \"\" || isNaN(b)) return x;\n return tmp.toFixed(b);\n },\n parseFuncexpField: function parseFuncexpField(statFun) {\n var myregexp = /[{|[].*?\\((.*?)\\)[}|\\]]/g;\n var match = myregexp.exec(statFun);\n var arrs = [];\n\n while (match != null) {\n var str = match[1];\n var has = false;\n\n for (var i = 0, v; v = arrs[i++];) {\n if (v == str) has = true;\n }\n\n if (!has) arrs.push(str);\n match = myregexp.exec(statFun);\n }\n\n return arrs;\n },\n fillbackHotTableData: function fillbackHotTableData(subData, needExecCross) {\n if (subData && subData.length > 0) {\n this.hotSettings.data = JSON.parse(JSON.stringify(subData));\n var mergeCells = this.buildMergeCell(subData);\n\n if (mergeCells && typeof mergeCells != 'undefined') {\n this.hotSettings.mergeCells = mergeCells;\n }\n\n if (needExecCross !== false) {\n try {//this.execCrossMapping();//执行跨表取数\n } catch (error) {}\n }\n\n this.execInCellMathExp(subData);\n } else {\n this.hotSettings.data = [[]];\n }\n },\n mergeCellRefresh: function mergeCellRefresh() {\n //执行合并单元格\n var data = this.getBackMergeData();\n this.hotSettings.mergeCells = this.buildMergeCell(data);\n },\n execCellMathExp: function execCellMathExp(data) {\n //这里执行3遍 防止包含行内计算和跨行计算先后顺序都有的情况\n this.execInCellMathExp(data);\n this.execInCellMathExp();\n this.execInCellMathExp();\n },\n execInCellMathExp: function execInCellMathExp(data, changes) {\n //执行计算公式\n if (!data) {\n data = this.getBackMergeData();\n }\n\n var isneedFsum = false;\n\n if (!changes) {\n changes = [];\n }\n\n if (changes.length > 0 || this.allMathExpList && this.allMathExpList.length > 0 && data && data.length > 0 || this.cellCalcs || this.cellCalcs.length > 0) {\n var items = this.allMathExpList;\n\n if (items && items.length > 0) {\n var dataSize = data.length;\n items.forEach(function (item) {\n if (item.isAll) {\n for (var i = 0; i < dataSize; i++) {\n changes.push({\n 0: i,\n 1: item['name']\n });\n }\n } else {\n if (item.index && item.index.length > 0) {\n for (var _i = 0; _i < item.index.length; _i++) {\n changes.push({\n 0: item.index[_i],\n 1: item['name']\n });\n }\n }\n }\n });\n }\n\n var cellCalcs = this.cellCalcs;\n\n if (cellCalcs && cellCalcs.length > 0) {\n var cellCalc = cellCalcs[0];\n changes.push({\n 0: cellCalc.rowIndex,\n 1: cellCalc.cellField.split('.')[2]\n });\n }\n\n if (changes && changes.length > 0) {\n //this.execMathExpSingle(changes);\n this.execMathExpAll(changes);\n } else {\n isneedFsum = true;\n }\n } else {\n isneedFsum = true;\n }\n\n if (isneedFsum) {\n //执行首行汇总\n var fsumMap = this.firstSumMap;\n\n if ('{}' != JSON.stringify(fsumMap)) {\n var _this = this;\n\n var isChange = false;\n var hotData = this.getHotTableData();\n\n for (var sumKey in fsumMap) {\n if (fsumMap.hasOwnProperty(sumKey)) {\n var tempResult = _this.exeFirstRowSum(hotData, sumKey, _this, isChange, fsumMap);\n\n hotData = tempResult.data;\n\n if (tempResult.isChange) {\n isChange = tempResult.isChange;\n }\n }\n }\n\n if (isChange) {\n this.hotSettings.data = [];\n this.hotSettings.data = hotData;\n }\n\n if (this.mergeCells && this.mergeCells.length > 0) {\n this.hotSettings.mergeCells = this.buildMergeCell(hotData);\n }\n }\n }\n },\n execCrossMapping: function execCrossMapping() {\n var _this4 = this;\n\n if (this.crossMappings && this.crossMappingSubTables.length > 0) {\n (function () {\n var subData = {};\n\n var curData = _this4.getHotTableData();\n\n var _this = _this4;\n var formInst = utils.getOnlineFormInstance(_this4);\n\n _this4.crossMappingSubTables.forEach(function (sub) {\n var hotTableRef = 'hottable.' + sub;\n var hotTableObj = formInst.$refs[\"onlineForm\"].$refs[hotTableRef];\n\n if (hotTableObj) {\n subData[sub] = formInst.$refs[\"onlineForm\"].$refs[hotTableRef].getHotTableData();\n } else {\n var paths = sub.split('.');\n\n if (formInst.data[paths[0]] && formInst.data[paths[0]][paths[1]]) {\n subData[sub] = formInst.data[paths[0]][paths[1]];\n }\n }\n });\n\n var isChange = false;\n\n for (var subTablePath in _this.crossMappings) {\n if (_this.crossMappings.hasOwnProperty(subTablePath)) {\n var toFList = _this.crossMappings[subTablePath];\n toFList.forEach(function (map) {\n var fromFields = map['fromFields'];\n var toIndex = _this.toNumber(map['toIndex']) - 1;\n var toFieldPath = map['toField'].split('.');\n\n if (fromFields && fromFields.length > 0 && curData[toIndex]) {\n var sumValue = 0;\n\n for (var i = 0; i < fromFields.length; i++) {\n var field = fromFields[i];\n var fromFieldPath = field.fromField.split('.');\n var fromIndex = _this.toNumber(field['fromIndex']) - 1;\n var subPath = fromFieldPath[0] + '.' + fromFieldPath[1];\n\n if (subData[subPath] && subData[subPath][fromIndex] && curData[toIndex]) {\n if (typeof subData[subPath][fromIndex][fromFieldPath[2]] != 'undefined') {\n var tempValue = subData[subPath][fromIndex][fromFieldPath[2]];\n sumValue += _this.toNumber(tempValue);\n }\n }\n }\n\n curData[toIndex][toFieldPath[2]] = sumValue;\n isChange = true;\n }\n });\n }\n }\n\n if (isChange) {\n _this4.fillbackHotTableData(curData, false);\n }\n })();\n }\n },\n getBackMergeData: function getBackMergeData(exeMath) {\n //获取恢复合并单元格后的数据\n //取数前先执行跨表取数和计算公式\n if (exeMath === true) {\n try {\n this.execCrossMapping(); //执行跨表取数\n\n this.execCellMathExp(); //执行计算公式 \n } catch (error) {\n console.log(error);\n }\n }\n\n var data = this.hotSettings.data;\n var row = this.initRowData;\n\n var _this = this; //处理初始化时的第一行数据类型为数组转json为空问题\n\n\n if (data && data.length > 0 && Array.isArray(data[0]) && row && JSON.stringify(row) != '{}') {\n var newRow = {};\n var oldRow = this.hotSettings.data[0];\n\n for (var key in row) {\n if (row.hasOwnProperty(key)) {\n newRow[key] = typeof oldRow[key] == 'undefined' ? '' : oldRow[key];\n }\n }\n\n data[0] = newRow;\n this.hotSettings.data[0] = newRow;\n }\n\n if (data && data.length == 1 && JSON.stringify(data[0]) == JSON.stringify(this.initRowData)) {\n return [];\n }\n\n var mergeCells = this.mergeCells;\n\n if (mergeCells && mergeCells.length > 0 && data && data.length > 0) {\n var columns = this.hotSettings.columns;\n mergeCells.forEach(function (item) {\n var rowIndex = item.row;\n\n if (data[rowIndex]) {\n var rowspan = item.rowspan;\n var field = columns[item['col']]['data'];\n var baseValue = data[rowIndex][field];\n\n for (var index = rowIndex; index < rowIndex + rowspan; index++) {\n if (data[index]) {\n data[index][field] = baseValue;\n }\n }\n }\n });\n } //处理填制单位(复制的时候)\n\n\n var custDialog = this.initCustDialogConf;\n\n if (data && data.length > 0 && custDialog && custDialog.orgConfig && (custDialog.orgConfig.name && this.fillOrg.id || custDialog.orgConfig.instId)) {\n var fillFillObj = this.getOrgFillFieldObj(custDialog);\n\n if (fillFillObj.orgNameField || fillFillObj.orgIdField || fillFillObj.orgCodeField || fillFillObj.instIdField) {\n data.forEach(function (item) {\n if (fillFillObj.orgNameField && !item[fillFillObj.orgNameField]) {\n item[fillFillObj.orgNameField] = _this.fillOrg.name;\n }\n\n if (fillFillObj.orgIdField && !item[fillFillObj.orgIdField]) {\n item[fillFillObj.orgIdField] = _this.fillOrg.id;\n }\n\n if (fillFillObj.orgCodeField && !item[fillFillObj.orgCodeField]) {\n item[fillFillObj.orgCodeField] = _this.fillOrg.code;\n }\n\n if (fillFillObj.instIdField && !item[fillFillObj.instIdField]) {\n item[fillFillObj.instIdField] = _this.instId;\n }\n });\n }\n }\n\n return data;\n },\n getOrgFillFieldObj: function getOrgFillFieldObj(custDialog) {\n var orgFillFieldObj = {\n orgNameField: '',\n orgIdField: '',\n orgCodeField: '',\n instIdField: ''\n };\n\n if (custDialog.orgConfig.name) {\n var namePath = custDialog.orgConfig.name.split('.');\n orgFillFieldObj.orgNameField = namePath[namePath.length - 1];\n }\n\n if (custDialog.orgConfig.id) {\n var idPath = custDialog.orgConfig.id.split('.');\n orgFillFieldObj.orgIdField = idPath[idPath.length - 1];\n }\n\n if (custDialog.orgConfig.code) {\n var codePath = custDialog.orgConfig.code.split('.');\n orgFillFieldObj.orgCodeField = codePath[codePath.length - 1];\n }\n\n if (custDialog.orgConfig.instId) {\n var instIdPath = custDialog.orgConfig.instId.split('.');\n orgFillFieldObj.instIdField = instIdPath[instIdPath.length - 1];\n }\n\n return orgFillFieldObj;\n },\n getHotTableData: function getHotTableData(exeMath) {\n //如果是保存或提交时需进行必填校验\n var data = this.getBackMergeData(exeMath);\n\n if (exeMath === true) {\n if (!this.validateCells(data)) {\n return false;\n }\n }\n\n return data;\n },\n validateCells: function validateCells(data) {\n var _this = this;\n\n var isTrue = true;\n var requireds = this.requiredRowsMap;\n\n if (requireds && '{}' !== JSON.stringify(requireds)) {\n if (!data || data.length < 1) {\n _this.$message({\n message: \"子表【\" + _this.name + \"】存在必填项未填写!\",\n type: \"error\"\n });\n\n isTrue = false;\n return false;\n }\n\n var _loop3 = function _loop3(field) {\n if (requireds.hasOwnProperty(field)) {\n var required = requireds[field];\n\n if (required.all === true) {\n for (var i = 0; i < data.length; i++) {\n if (!data[i][field] && data[i][field] !== 0 && data[i][field] !== false) {\n _this.$message({\n message: \"子表【\" + _this.name + \"】中第【\" + (i + 1) + \"】行【\" + _this.fieldNameMap[field] + \"】必填!\",\n type: \"error\"\n });\n\n isTrue = false;\n return {\n v: false\n };\n }\n }\n } else if (required.rows && required.rows.length > 0) {\n required.rows.forEach(function (index) {\n if (!data[index - 1] || !data[index - 1][field] && data[index - 1][field] !== 0 && data[index - 1][field] !== false) {\n _this.$message({\n message: \"子表【\" + _this.name + \"】中第【\" + index + \"】行【\" + _this.fieldNameMap[field] + \"】必填!\",\n type: \"error\"\n });\n\n isTrue = false;\n return false;\n }\n });\n }\n }\n };\n\n for (var field in requireds) {\n var _ret = _loop3(field);\n\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n }\n\n return isTrue;\n },\n initTemplateData: function initTemplateData() {\n if (this.isInitTemplateData !== 'true') {\n //初始化统计行\n this.toAddInitSumRow();\n return;\n }\n\n var _this = this; //如果已有数据则不需要再次初始化\n\n\n var curData = this.getHotTableData();\n var initType = this.initFillDataType;\n var formInst = utils.getOnlineFormInstance(_this);\n\n if (!initType || initType == 'empty') {\n if (curData.length == 0 || curData.length == 1 && (Array.isArray(curData[0]) || JSON.stringify(curData[0]) == JSON.stringify(this.initRowData))) {\n this.hotSettings.data = [[]];\n } else {\n //初始化统计行\n this.toAddInitSumRow();\n return;\n }\n } else if (initType == 'cover') {\n var paths = this.subTablePath.split('.');\n formInst['data'][paths[0]][paths[1]] = [];\n this.hotSettings.data = [[]];\n }\n\n if (!this.initCustDialogConf || !this.initCustDialogConf.custDialog || !this.initCustDialogConf.custDialog.alias) {\n //初始化统计行\n this.toAddInitSumRow();\n return;\n }\n\n var loading = this.$loading({\n lock: true,\n text: '正在初始化填报模板...',\n spinner: 'el-icon-loading',\n background: 'rgba(0, 0, 0, 0.7)'\n });\n this.$http.get('${form}/form/customDialog/v1/getByAlias?alias=' + this.initCustDialogConf.custDialog.alias).then(function (resp) {\n _this.customDialog = resp.data;\n }, function (error) {\n _this.closeLoading(loading);\n\n _this.$message({\n message: \"获取自定义对话框失败!\",\n type: \"error\"\n });\n }).then(function () {\n var custdialog = _this.initCustDialogConf;\n var currentUser = JSON.parse(sessionStorage.getItem(\"currentUser\"));\n\n if (!custdialog.orgConfig.code && !custdialog.orgConfig.name && !custdialog.orgConfig.id) {\n _this.closeLoading(loading);\n\n _this.toFillInitData(_this);\n } else if (localStorage.getItem(\"curFillOrg_\" + currentUser.account)) {\n _this.closeLoading(loading);\n\n _this.fillOrg = JSON.parse(localStorage.getItem(\"curFillOrg_\" + currentUser.account));\n\n _this.toFillInitData(_this);\n } else {\n _this.$http.get('${uc}/api/org/v1/org/getFillOrg').then(function (resp) {\n _this.closeLoading(loading);\n\n var rep = resp.data;\n\n if (rep.state) {\n _this.fillOrg = rep.value;\n localStorage.setItem(\"curFillOrg_\" + currentUser.account, JSON.stringify(rep.value));\n\n _this.toFillInitData(_this);\n } else {\n _this.$message({\n message: rep.message,\n type: \"warning\"\n });\n }\n }, function (error) {\n _this.closeLoading(loading);\n\n _this.$message({\n message: \"获取当前用户填制单位失败!\",\n type: \"warning\"\n });\n });\n }\n });\n },\n closeLoading: function closeLoading(loading) {\n var _this = this;\n\n setTimeout(function () {\n loading.close();\n }, 2000);\n },\n toFillInitData: function toFillInitData(_this) {\n setTimeout(function () {\n _this.fillInitData(_this);\n }, 1000);\n },\n fillInitData: function fillInitData(_this) {\n var custDialog = _this.initCustDialogConf.custDialog;\n var formInst = utils.getOnlineFormInstance(_this);\n var curData = formInst['data']; //处理对话框的参数传入\n\n var params = [];\n\n if (custDialog.conditions) {\n //对话框按表单字段查询(参数传入的)\n var bindList = custDialog.conditions;\n\n if (bindList.length > 0) {\n bindList.forEach(function (ele) {\n //绑定表单字段\n if (ele.defaultType == \"3\" && ele.bind) {\n var obj = {};\n obj.field = ele.field;\n var bindArray = ele.bind.split('.');\n\n if (bindArray.length == 3) {\n obj.bind = curData[bindArray[1]][bindArray[2]];\n params.push(obj);\n }\n }\n });\n }\n }\n\n var url = '${form}/form/customDialog/v1/getListData?alias=' + custDialog.alias;\n\n if (params.length > 0) {\n var paStr = '';\n params.forEach(function (pa) {\n if (paStr) {\n paStr += ',';\n }\n\n paStr = paStr + '\"' + pa.field + '\":\"' + pa.bind + '\"';\n });\n url = url + '&mapParam=' + paStr;\n } else {\n url = url + '&mapParam=';\n }\n\n var param = {\n pageBean: {\n page: 1,\n pageSize: 1000,\n showTotal: true\n }\n };\n\n _this.$http.post(url, param).then(function (resp) {\n var response = resp.data;\n\n if (response.rows) {\n _this.syncInitTableValue(response.rows);\n\n if (response.rows.length == 0) {\n //初始化统计行\n _this.toAddInitSumRow();\n\n _this.hotSettings.data[0] = _this.fillOrgDataField(_this.hotSettings.data[0]);\n }\n }\n }, function (error) {\n _this.$message({\n message: \"获取初始化数据失败!\",\n type: \"error\"\n });\n });\n },\n getFillOrgObj: function getFillOrgObj(custDialog) {\n //获取填制单位、实例信息\n var fillOrg = null;\n\n if (custDialog.orgConfig && (custDialog.orgConfig.id || custDialog.orgConfig.name || custDialog.orgConfig.code || custDialog.orgConfig.instId) && this.fillOrg.id) {\n fillOrg = {};\n var namePath = custDialog.orgConfig.name.split('.');\n var orgNameField = namePath[namePath.length - 1];\n\n if (custDialog.orgConfig.name && orgNameField) {\n fillOrg[orgNameField] = this.fillOrg.name;\n }\n\n if (custDialog.orgConfig.id) {\n var idPath = custDialog.orgConfig.id.split('.');\n var orgIdField = idPath[idPath.length - 1];\n fillOrg[orgIdField] = this.fillOrg.id;\n }\n\n if (custDialog.orgConfig.code) {\n var codePath = custDialog.orgConfig.code.split('.');\n var orgCodeField = codePath[codePath.length - 1];\n fillOrg[orgCodeField] = this.fillOrg.code;\n }\n\n if (custDialog.orgConfig.instId) {\n var instIdPath = custDialog.orgConfig.instId.split('.');\n var instIdField = instIdPath[instIdPath.length - 1];\n fillOrg[instIdField] = this.instId;\n }\n }\n\n return fillOrg;\n },\n // 同步初始化数据结果\n syncInitTableValue: function syncInitTableValue(s) {\n var custDialog = this.initCustDialogConf;\n var returnStr = JSON.parse(this.customDialog.resultfield); //拿到返回的字段\n\n var field = new Array([returnStr.length]);\n var comment = new Array([returnStr.length]);\n var str = [];\n var ids = [];\n\n for (var i = 0; i < returnStr.length; i++) {\n field[i] = this.customDialog.dsType == \"dataSource\" ? returnStr[i].field.toUpperCase() : returnStr[i].field;\n comment[i] = this.customDialog.dsType == \"dataSource\" ? returnStr[i].comment.toUpperCase() : returnStr[i].comment;\n }\n\n if (this.customDialog.selectNum === 1) {\n var temp = \"\";\n\n for (var i = 0; i < comment.length; i++) {\n var va = s[0][field[i]];\n va = typeof va == 'undefined' ? '' : va;\n temp += '\"' + comment[i] + '\":\"' + va + '\",';\n }\n\n if (temp != \"\") {\n temp = \"{\" + temp.substring(0, temp.length - 1) + \"}\";\n }\n\n str.push(JSON.parse(temp));\n ids.push(s[0].id);\n } else {\n for (var i = 0; i < s.length; i++) {\n var temp = \"\";\n\n for (var j = 0; j < comment.length; j++) {\n var _va = s[i][field[j]];\n _va = typeof _va == 'undefined' ? '' : _va;\n temp += '\"' + comment[j] + '\":\"' + _va + '\",';\n }\n\n if (temp != \"\") {\n temp = \"{\" + temp.substring(0, temp.length - 1) + \"}\";\n }\n\n str.push(JSON.parse(temp));\n ids.push(s[i].id);\n }\n } //处理填制部门\n\n\n var fillOrg = this.getFillOrgObj(custDialog); //处理实例id回填\n\n if (custDialog.orgConfig && custDialog.orgConfig.instId && this.instId) {\n if (fillOrg == null) {\n fillOrg = {};\n }\n\n var instIdPath = custDialog.orgConfig.instId.split('.');\n var instIdField = instIdPath[instIdPath.length - 1];\n fillOrg[instIdField] = this.instId;\n }\n\n var returnData = str;\n\n var _this = this;\n\n var formInst = utils.getOnlineFormInstance(this);\n var filldata = this.hotSettings.data;\n\n if (filldata && filldata.length == 1) {\n filldata = []; //if(Object.keys(this.hotSettings.data[0]).length==0 || JSON.stringify(this.initRowData) == JSON.stringify(this.hotSettings.data[0])){\n\n var initSumRow = this.getInitSumRow();\n\n if (initSumRow) {\n filldata.push(_objectSpread(_objectSpread({}, initSumRow), fillOrg));\n } //}\n\n }\n\n var fillInitData = [];\n returnData.forEach(function (row) {\n var targetArray = null;\n var subLineData = _this.initRowData ? _this.initRowData : {};\n custDialog.custDialog.mappingConf.forEach(function (con) {\n if (con.target[0]) {\n targetArray = con.target[0].split(\".\");\n var from = \"\";\n\n if (_this.customDialog.dsType == \"restful\") {\n from = con.from;\n } else {\n from = con.from.toUpperCase();\n }\n\n subLineData[targetArray[targetArray.length - 1]] = row[from];\n }\n });\n\n if (fillOrg != null) {\n subLineData = _objectSpread(_objectSpread({}, subLineData), fillOrg);\n }\n\n fillInitData.push(_objectSpread({}, subLineData));\n });\n\n if (this.addInitTemplateData === 'true') {\n this.initDataBack = fillInitData;\n }\n\n filldata = [].concat(_toConsumableArray(filldata), fillInitData);\n this.fillbackHotTableData(filldata, false);\n },\n fillOrgDataField: function fillOrgDataField(row) {\n var custDialog = this.initCustDialogConf;\n\n if (custDialog && custDialog.orgConfig) {\n if (custDialog.orgConfig.name && this.fillOrg.id) {\n var namePath = custDialog.orgConfig.name.split('.');\n var orgNameField = namePath[namePath.length - 1];\n row[orgNameField] = this.fillOrg.name;\n\n if (custDialog.orgConfig.id) {\n var idPath = custDialog.orgConfig.id.split('.');\n var orgIdField = idPath[idPath.length - 1];\n row[orgIdField] = this.fillOrg.id;\n }\n\n if (custDialog.orgConfig.code) {\n var codePath = custDialog.orgConfig.code.split('.');\n var orgCodeField = codePath[codePath.length - 1];\n row[orgCodeField] = this.fillOrg.code;\n }\n }\n\n if (custDialog.orgConfig.instId && this.instId) {\n var instIdPath = custDialog.orgConfig.instId.split('.');\n var instIdField = instIdPath[instIdPath.length - 1];\n row[instIdField] = this.instId;\n }\n }\n\n return row;\n },\n toAddInitSumRow: function toAddInitSumRow() {\n var data = this.getHotTableData();\n\n if (!data || data.length < 1 || data.length == 1 && JSON.stringify(data[0]) === JSON.stringify(this.initRowData)) {\n var initSumRow = this.getInitSumRow();\n\n if (initSumRow) {\n var rows = [];\n rows.push(_objectSpread({}, initSumRow));\n this.fillbackHotTableData(rows);\n }\n }\n },\n getInitSumRow: function getInitSumRow() {\n if (this.initSumRow === 'true') {\n var newRow = _objectSpread({}, this.initRowData);\n\n if (this.initSumRowField && this.initSumRowValue) {\n newRow[this.initSumRowField] = this.initSumRowValue;\n }\n\n var fillOrg = this.getFillOrgObj(this.initCustDialogConf);\n\n if (fillOrg == null) {\n fillOrg = {};\n }\n\n return _objectSpread(_objectSpread({}, newRow), fillOrg);\n }\n\n return '';\n },\n toAddInitTemplateData: function toAddInitTemplateData() {\n if (this.addInitTemplateData === 'true' && this.initDataBack && Array.isArray(this.initDataBack) && this.initDataBack.length > 0) {\n var curData = this.getBackMergeData();\n\n if (!(curData && Array.isArray(this.initDataBack))) {\n curData = [[]];\n }\n\n curData = [].concat(_toConsumableArray(curData), _toConsumableArray(this.initDataBack));\n this.fillbackHotTableData(curData);\n } else if (!this.initDataBack || this.initDataBack.length < 1) {\n this.$message({\n message: \"初始化数据为空。\",\n type: \"warning\"\n });\n }\n },\n getTableHeaders: function getTableHeaders() {\n var optionsJon = JSON.parse(this.options);\n var relations = optionsJon.colHeadersRelations;\n var headers = {\n nested: this.hotSettings.nestedHeaders ? true : false,\n header: []\n };\n relations.forEach(function (item) {\n headers.header.push({\n name: item.name,\n desc: item.desc\n });\n });\n return headers;\n }\n },\n created: function created() {}\n};",null]}