{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\bizComponents\\eipControl\\EipHotTable.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\bizComponents\\eipControl\\EipHotTable.vue","mtime":1675071991460},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\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-bpm/node_modules/@babel/runtime/helpers/esm/typeof\";\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-bpm/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"D:/jenkins/workspace/xq-web-bpm/node_modules/@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { 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 \"@/components/bizComponents/utils.js\";\nimport FormMath from \"@/components/bizComponents/math.js\";\nimport { HotTable } from \"@handsontable/vue\";\nimport SubDataDetail from \"@/components/bizComponents/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]}