{"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\\EipSubImportDialog.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\eipControl\\EipSubImportDialog.vue","mtime":1667327529309},{"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/es6.number.constructor\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/web.dom.iterable\";\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport req from \"@/request.js\";\nimport XLSX from \"xlsx/dist/xlsx.core.min.js\";\nimport SubPagination from \"@/components/eipControl/bus/SubPagination.js\";\n\nvar Base64 = require(\"js-base64\").Base64;\n\nexport default {\n  name: \"eip-sub-import-dialog\",\n  props: {\n    subDesc: {\n      type: String,\n      default: \"子表模板\"\n    },\n    dataSubname: {\n      type: String,\n      required: true\n    },\n    maxRow: {\n      type: String,\n      default: null\n    },\n    mergeExpression: {\n      type: String,\n      default: null\n    },\n    dataColumns: {\n      type: String,\n      required: true\n    }\n  },\n  data: function data() {\n    return {\n      dialogVisible: false,\n      importRows: null,\n      showRowData: false,\n      mergeFunc: null,\n      mode: \"append\",\n      modeOptions: [{\n        mode: \"append\",\n        desc: \"追加导入\"\n      }, {\n        mode: \"override\",\n        desc: \"覆盖导入\"\n      }, {\n        mode: \"merge\",\n        desc: \"合并导入\",\n        disabled: true\n      }]\n    };\n  },\n  computed: {\n    columns: function columns() {\n      return eval(Base64.decode(this.dataColumns));\n    }\n  },\n  watch: {\n    dialogVisible: {\n      handler: function handler(newVal) {\n        // 清空附件\n        if (!newVal && this.$refs.selectFile) {\n          this.$refs.selectFile.value = \"\";\n          this.importRows = null;\n          this.showRowData = false;\n        }\n      },\n      immediate: true\n    },\n    mergeExpression: {\n      handler: function handler(newVal) {\n        if (newVal) {\n          // 如果有导入合并的代码，则允许选择合并导入模式\n          this.$set(this.modeOptions[2], \"disabled\", false); // 并设置默认为 合并导入\n\n          this.mode = \"merge\"; // 解码合并的代码\n\n          var funcExp = Base64.decode(newVal);\n          this.mergeFunc = eval(\"(\".concat(funcExp, \")\"));\n        }\n      },\n      immediate: true\n    }\n  },\n  methods: {\n    //子表模板导出\n    exportFormSub: function exportFormSub() {\n      req.post(window.context.form + \"/form/form/v1/exportFormSub?subDesc=\" + this.subDesc, this.columns, \"arraybuffer\");\n    },\n    getNameByDesc: function getNameByDesc(desc) {\n      var name = \"\";\n      this.columns.forEach(function (col) {\n        if (col.desc == desc) {\n          name = col.name;\n        }\n      });\n      return name;\n    },\n    changeRowKey: function changeRowKey(rows) {\n      var _this = this;\n\n      var importRows = [];\n      rows.forEach(function (row) {\n        var importRow = {};\n\n        for (var key in row) {\n          importRow[_this.getNameByDesc(key)] = row[key];\n        }\n\n        importRows.push(importRow);\n      });\n      return importRows;\n    },\n    dialogConfirm: function dialogConfirm() {\n      var _this2 = this;\n\n      if (this.importRows.length == 0) {\n        this.$message.error(\"请选择要导入的文件\");\n        return;\n      }\n\n      if (this.maxRow) {\n        var maxRowInt = parseInt(this.maxRow);\n\n        if (this.mode == \"override\") {\n          //覆盖导入\n          var count = this.importRows.length;\n\n          if (count > maxRowInt && maxRowInt != 0) {\n            this.$message.error(\"子表数据已超过最大行数【\" + maxRowInt + \"】\");\n            return;\n          }\n        } else if (this.mode == \"append\" || this.mode == \"merge\") {\n          //追加导入/合并导入\n          var boData = document.getElementsByName(\"online-form\")[0].__vue__.data; //获取表单bo对象\n\n\n          var pathArr = this.dataSubname.split('.');\n          var subTabName = pathArr[2].replace('sub_', '');\n          var subInitData = boData[pathArr[1]][pathArr[2]] || []; //子表数据\n\n          var num = this.importRows.length + subInitData.length;\n\n          if (num > maxRowInt && maxRowInt != 0) {\n            this.$message.error(\"子表数据已超过最大行数【\" + maxRowInt + \"】\");\n            return;\n          }\n        }\n      }\n\n      SubPagination.importData(this.dataSubname, this.importRows, this.mode, this.mergeFunc).then(function () {\n        _this2.dialogVisible = false;\n      }).catch(function (err) {\n        _this2.$message.error(\"\\u6570\\u636E\\u5BFC\\u5165\\u5931\\u8D25\\uFF1A\".concat(err));\n      });\n    },\n    fileChange: function fileChange(m) {\n      var _this3 = this;\n\n      if (!m || !m.target || !m.target.files || m.target.files.length != 1) {\n        return;\n      }\n\n      this.importRows = [];\n      this.readWorkbookFromLocalFile(m.target.files[0], function (rows) {\n        _this3.importRows = _this3.changeRowKey(rows);\n      });\n    },\n    // 读取本地excel文件\n    readWorkbookFromLocalFile: function readWorkbookFromLocalFile(file, callback) {\n      var _this4 = this;\n\n      var reader = new FileReader();\n\n      reader.onload = function (e) {\n        var data = e.target.result;\n        var workbook = null;\n\n        try {\n          // 读取Excel内容\n          workbook = XLSX.read(data, {\n            type: \"binary\"\n          });\n        } catch (err) {\n          _this4.$message.error(\"所选文件不是有效的Excel文件.\");\n\n          return;\n        }\n\n        var sheetNames = workbook.SheetNames,\n            // 只读取第一个sheet的数据\n        worksheet = workbook.Sheets[sheetNames[0]];\n\n        if (worksheet[\"!merges\"] && worksheet[\"!merges\"].length > 0) {\n          var merge = worksheet[\"!merges\"][0],\n              rowNum = Number(merge[\"e\"][\"r\"]); // 合并单元格时会导致转换出来的JSON数据格式错乱\n\n          _this4.$message.error(\"Excel\\u4E2D\\u4E0D\\u80FD\\u6709\\u5408\\u5E76\\u7684\\u5355\\u5143\\u683C\\uFF0C\\u8BF7\\u68C0\\u67E5\\u7B2C\".concat(rowNum + 1, \"\\u884C\\u6570\\u636E\\u3002\"));\n\n          return;\n        }\n\n        var json = XLSX.utils.sheet_to_json(worksheet);\n\n        if (!json || json.constructor != Array) {\n          _this4.$message.error(\"读取的数据格式错误。\");\n\n          return;\n        }\n\n        if (callback) callback(json);\n      };\n\n      reader.readAsBinaryString(file);\n    }\n  }\n};",null]}