{"remainingRequest":"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\\EipSubDialog.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\eipControl\\EipSubDialog.vue","mtime":1667327529247},{"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":["//\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//\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//\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//\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//\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//\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//\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//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport { mapState } from \"vuex\";\r\nimport utils from \"@/utils.js\";\r\nimport hotentUiUtils from \"@/hotent-ui-util.js\";\r\nimport { Message } from \"element-ui\";\r\nimport req from \"@/request.js\";\r\nimport sub_pio_mixin from \"@/sub-permission-mixin.js\";\r\nimport EipTag from \"@/components/eipControl/EipTag.vue\";\r\nimport EipSelectDia from \"@/components/eipControl/EipSelectDia.vue\";\r\nexport default {\r\n  components: { EipTag, EipSelectDia },\r\n  name: \"eip-dialog\",\r\n  props: [\r\n    \"validate\",\r\n    \"value\",\r\n    \"name\",\r\n    \"permission\",\r\n    \"atter\",\r\n    \"single\",\r\n    \"selectorconfig\",\r\n    \"custdialog\",\r\n    \"placeholder\",\r\n    \"tooltipplacement\",\r\n    'initFillData',\r\n    'initFillDataType',\r\n    'relation',\r\n    'maxRow'\r\n  ],\r\n  mixins: [sub_pio_mixin], //混入方式引入表单组件中公共属性，处理子表、孙表行内联动（切面修改permission_sub）\r\n  data() {\r\n    return {\r\n      data: {\r\n        qxdd: {},\r\n      },\r\n      inputSuffixWidth: 0,\r\n      placeholderBo: \"\",\r\n      quickSearch: \"\", //填写提示\r\n      conditionBind: [], //参数查询字段\r\n      nodeKey: \"ID_\", //树形数据父Id\r\n      customDialogShowList: false,\r\n      customDialogShowTree: false,\r\n      selectOrgProps: {\r\n        label: \"name\",\r\n      },\r\n      style: \"\", //对话框宽高\r\n      selectOrgs: null,\r\n      inputSuffixHeight: 33,\r\n      config: null,\r\n      updating: false,\r\n      displayfield: [], //显示字段\r\n      customDialog: {},\r\n      queryParam: \"\", //查询条件输入的值\r\n      props1: [],\r\n      showData: [],\r\n      checkBoxDataAll: [], //选中对象的集合\r\n      defaultProps: {\r\n        children: \"children\",\r\n        label: \"label\",\r\n      },\r\n      propsData: [],\r\n      querysShow: false, //是否显示搜索框\r\n      undefineda: \"\",\r\n      isCurrentChange: false, //是否不执行 orgTableSelection方法\r\n      pagination: {\r\n        page: 1,\r\n        pageSize: 20,\r\n        total: 0,\r\n      },\r\n      param: [], //绑定的表单字段\r\n      treeList: [],\r\n      displayField: {},\r\n      queryParams: [],\r\n      placeholders: [],\r\n      oldselectOrgs: [],\r\n      combinationTreeData: [],\r\n      combiTreeDisplayField: [],\r\n      combinationTreeQuerys: [],\r\n      combinationRule: {},\r\n      toggleBtn: \"el-icon-arrow-left\",\r\n      treeShow: true,\r\n      transtionWidth: \"25%\",\r\n      leftTreeTitle: \"\",\r\n      writeable: true,\r\n      isShow: true,\r\n    };\r\n  },\r\n  watch: {\r\n    props1: function (newVal, oldVal) {\r\n      //树形\r\n      if (this.showData != undefined && this.showData.length > 0) {\r\n        const this_ = this;\r\n        let data = [];\r\n        for (let i = 0; i < this.showData.length; i++) {\r\n          data.push(this.showData[i]);\r\n        }\r\n        setTimeout(() => {\r\n          for (let i = 0; i < data.length; i++) {\r\n            this_.$refs.tree.setChecked(data[i], true);\r\n            this_.checkNode(data[i], this_);\r\n          }\r\n        }, 200);\r\n      }\r\n    },\r\n  },\r\n  mounted() {\r\n    let requestType = window.location.href.split('?')[0].split('/')\r\n    let isDoneList = window.location.href.split('/')\r\n    if (\r\n      requestType[requestType.length - 1] == 'get' ||\r\n      requestType[requestType.length - 2] == 'get' ||\r\n      isDoneList[isDoneList.length - 1] == 'doneList'\r\n    ) {\r\n      this.isShow = false\r\n    }else{\r\n      if(this.initFillData=='true'){\r\n        this.initTemplateData();\r\n      }\r\n    }\r\n  },\r\n  computed: mapState({\r\n    total: (state) => state.dialog.total,\r\n    dialogData: (state) => {\r\n      return state.dialog.rows;\r\n    },\r\n    inputVal: function () {\r\n      if (!this.value || this.value == \"||[]\") {\r\n        this.checkBoxDataAll = [];\r\n        // this.showData = [];\r\n        return null;\r\n      } else {\r\n        let nameAry = this.value.split(\",\");\r\n        if (this.value.indexOf(\"||\") > 0) {\r\n          nameAry = this.value.split(\"||\")[0].split(\",\");\r\n          // this.showData=JSON.parse(this.value.split(\"||\")[1]);\r\n        }\r\n        //  this.showData =this.selectOrgs;\r\n        let idAry = null;\r\n        let accountAry = null;\r\n        let result = [];\r\n        nameAry.forEach((m, i) => {\r\n          let n = { value: m };\r\n          result.push(n);\r\n        });\r\n        return result;\r\n      }\r\n    },\r\n    inputWriteable: function () {\r\n      return this.writeable\r\n        ? utils.getWriteable(this.permission_sub)\r\n        : this.writeable;\r\n    },\r\n    inputValidate: function () {\r\n      var validateObj = this.$store.state.index.validate;\r\n      return utils.addRequiredOrNot(\r\n        this.permission_sub,\r\n        this.validate,\r\n        validateObj,\r\n        this\r\n      );\r\n    },\r\n    inputName: function () {\r\n      let labeldesc = \"\";\r\n      if (\r\n        this.$slots &&\r\n        this.$slots.labeldesc &&\r\n        this.$slots.labeldesc[0].children &&\r\n        this.$slots.labeldesc[0].children[0].text\r\n      ) {\r\n        labeldesc = this.$slots.labeldesc[0].children[0].text;\r\n        return this.name ? this.name : utils.getName() + \"-\" + labeldesc;\r\n      } else {\r\n        return this.name ? this.name : utils.getName();\r\n      }\r\n    },\r\n    // 是否有回填设置\r\n    bindSet: function () {\r\n      return this.selectorconfig ? this.selectorconfig.bind : null;\r\n    },\r\n  }),\r\n  created() {\r\n    if (!this.placeholder) {\r\n      this.placeholderBo = \"请选择内容\";\r\n    } else {\r\n      this.placeholderBo = this.placeholder;\r\n    }\r\n    this.$validator = this.$root.$validator;\r\n  },\r\n  methods: {\r\n    selectAll(selection) {\r\n      if (this.oldselectOrgs != null && selection.length > 0) {\r\n        for (let x = 0; x < selection.length; x++) {\r\n          if (this.indexArray(this.oldselectOrgs, selection[x]) === -1) {\r\n            this.oldselectOrgs.push(selection[x]);\r\n          }\r\n        }\r\n        this.selectOrgs = _.cloneDeep(this.oldselectOrgs);\r\n      } else {\r\n        this.selectOrgs = _.cloneDeep(selection);\r\n      }\r\n    },\r\n    checkNode(data, this_, pnode) {\r\n      if (data.Pid) {\r\n        let node = this_.$refs.tree.getNode(data.Pid);\r\n        node.indeterminate = true;\r\n        if (node.data.Pid) {\r\n          this_.$refs.tree.getNode(node.data.Pid).indeterminate = true;\r\n          this.checkNode(\r\n            this_.$refs.tree.getNode(node.data.Pid).data,\r\n            this_,\r\n            this_.$refs.tree.getNode(node.data.Pid)\r\n          );\r\n        }\r\n        if (!node.indeterminate) {\r\n          node.indeterminate = true;\r\n        }\r\n      } else if (pnode && !pnode.indeterminate) {\r\n        pnode.indeterminate = true;\r\n      }\r\n    },\r\n    //回车查询\r\n    searchEnterFun: function (e) {\r\n      var keyCode = window.event ? e.keyCode : e.which;\r\n      if (keyCode == 13) {\r\n        this.search();\r\n      }\r\n    },\r\n    handleSizeChange: function (size) {\r\n      this.isCurrentChange = true;\r\n      //每页下拉显示数据\r\n      this.pagination.pageSize = size;\r\n      this.search();\r\n    },\r\n    handleCurrentChange: function (currentPage) {\r\n      const this_ = this;\r\n      if (this.selectOrgs != undefined && this.selectOrgs.length > 0) {\r\n        this.selectOrgs.forEach((row) => {\r\n          let res = this_.indexArray(this_.checkBoxDataAll, row);\r\n          if (res == -1) {\r\n            this_.checkBoxDataAll.push(row);\r\n          }\r\n        });\r\n      }\r\n      this.isCurrentChange = true;\r\n      //点击第几页\r\n      this.pagination.page = currentPage;\r\n      this.search();\r\n    },\r\n    checkList() {\r\n      const this_ = this;\r\n      setTimeout(() => {\r\n        //列表\r\n        if (\r\n          this_.checkBoxDataAll != undefined &&\r\n          this_.checkBoxDataAll.length > 0\r\n        ) {\r\n          this_.checkBoxDataAll.forEach((row) => {\r\n            let res = this_.indexArray(this_.dialogData, row);\r\n            this_.undefineda = res;\r\n            if (res != -1) {\r\n              this_.isCurrentChange = true;\r\n              this_.toggleRowSelection(res, true);\r\n            }\r\n          });\r\n        }\r\n      }, 300);\r\n    },\r\n    toggleRowSelection(res, val) {\r\n      this.$refs.orgTable.toggleRowSelection(this.dialogData[res], val);\r\n    },\r\n    showDialog(item) {\r\n      const this_ = this;\r\n      //第二次点击子表回填对话框 第一次选中的数据不是选中状态\r\n      if(this_.selectOrgs){\r\n        this_.selectOrgs.empty();\r\n        this_.checkBoxDataAll.empty();\r\n      }\r\n      var alias = this.custdialog.custDialog.alias\r\n      this.$store.dispatch('form/getByAlias', alias).then(customDialog => {\r\n        if (!customDialog || !customDialog.alias) {\r\n          Message.error('对话框别名【' + alias + '】不存在！')\r\n          return\r\n        }\r\n        if (customDialog.style == 1) {\r\n          var displaylist = JSON.parse(customDialog.displayfield)\r\n          this_.nodeKey = displaylist.id\r\n        }\r\n        //对话框按表单字段查询（参数传入的）\r\n        let bindList = this_.custdialog.custDialog.conditions\r\n        this_.param = [] //绑定的表单字段\r\n        if (bindList.length > 0) {\r\n          bindList.forEach(ele => {\r\n            //绑定表单字段\r\n            if (ele.defaultType == '3' && ele.bind) {\r\n              let obj = {}\r\n              obj.field = ele.field\r\n              obj.bind = ele.bind\r\n              this_.param.push(obj)\r\n            }\r\n          })\r\n        }\r\n        //判断对话框查询是否有条件\r\n        let userInputList = JSON.parse(customDialog.conditionfield)\r\n        this_.quickSearch = '' //填写提示 placeholder\r\n        this_.conditionBind = []\r\n        let queryParams = []\r\n        let placeholders = []\r\n        if (userInputList.length > 0) {\r\n          userInputList.forEach(ele => {\r\n            var obj = {}\r\n            //条件查询参数（用户输入的） 文本框输入\r\n            if (ele.defaultType == '1') {\r\n              obj[ele.field] = ''\r\n              queryParams.push(obj)\r\n              this_.conditionBind.push(ele)\r\n              placeholders.push('请输入' + ele.comment)\r\n            }\r\n          })\r\n          this.$set(this, 'queryParams', queryParams)\r\n          this.$set(this, 'placeholders', placeholders)\r\n        }\r\n        //判断是否显示条件查询输入框\r\n        if (this_.quickSearch != '') {\r\n          this_.querysShow = true\r\n        } else {\r\n          this_.querysShow = true\r\n        }\r\n        this_.quickSearch = '请输入' + this.quickSearch + '查询'\r\n        this_.style = 'height:' + customDialog.height + 'px'\r\n        if (window.screen.height && window.screen.height <= 900) {\r\n          this.style = 'height:440px'\r\n        }\r\n        if (customDialog.style == 0 || customDialog.style == 2) {\r\n          //列表\r\n          this_.customDialogShow({alias: alias, customDialog: customDialog})\r\n        } else if(customDialog.style == 1) { \r\n          //树形\r\n          this_.pageParam = { alias: alias,customDialog: customDialog };\r\n          this_.customDialog = customDialog;\r\n          let param = {};\r\n          this_.conditionfieldTree = [];\r\n          //判断是否存在条件\r\n          if(customDialog.conditionfield){\r\n            this_.conditionfieldTree = JSON.parse(customDialog.conditionfield);\r\n            if (this_.conditionfieldTree.length > 0) {\r\n              for (let i = this_.conditionfieldTree.length - 1; i >= 0; i--) {\r\n                //判断条件字段是否是动态传入（defaultType：4：动态传入，2：固定值 ）\r\n                if (this_.conditionfieldTree[i].defaultType == \"4\") {\r\n                  param[this_.conditionfieldTree[i].field] = this_.conditionfieldTree[i].comment;\r\n                }\r\n              }\r\n            }\r\n          }\r\n          //有动态传入的字段\r\n          if (JSON.stringify(param) != \"{}\") {\r\n            this_.dialogVisible = true;\r\n          }else{\r\n            //无动态传入的字段\r\n            this_.customDialogTreeShow(this_.pageParam);\r\n          }\r\n        }\r\n      })\r\n    },\r\n    //判断数据是否包含某个对象，并返回数据包含对象的下标\r\n    indexArray(array, item) {\r\n      if (array.length == 0) {\r\n        return -1;\r\n      }\r\n      for (let i = 0; i < array.length; i++) {\r\n        if (JSON.stringify(array[i]) == JSON.stringify(item)) {\r\n          return i;\r\n        }\r\n      }\r\n      return -1;\r\n    },\r\n    //点击列表某一个复选框时触发\r\n    onTableSelect(rows, row) {\r\n      this.isCurrentChange = false;\r\n      //判断点击列表数据时复选框是否勾选  selected：true不勾选，false勾选\r\n      let selected =\r\n        this.selectOrgs &&\r\n        this.selectOrgs.length > 0 &&\r\n        this.indexArray(this.selectOrgs, row) !== -1;\r\n      if (selected) {\r\n        this.isCurrentChange = true;\r\n        let res = this.indexArray(this.selectOrgs, row);\r\n        this.selectOrgs.splice(res, 1);\r\n      }\r\n    },\r\n    //点击列表某一条数据时触发\r\n    orgRowClick(row, column, event) {\r\n      if (this.customDialog.selectNum === 1) {\r\n        $(event.currentTarget.children[0].children[0].children[0]).trigger(\r\n          \"click\"\r\n        );\r\n        this.selectOrgs = [];\r\n        this.selectOrgs.push(row);\r\n      } else if (this.customDialog.selectNum != 1) {\r\n        this.isCurrentChange = false;\r\n        //判断点击列表数据时复选框是否勾选  selected：true不勾选，false勾选\r\n        let selected =\r\n          this.selectOrgs &&\r\n          this.selectOrgs.length > 0 &&\r\n          this.indexArray(this.selectOrgs, row) !== -1;\r\n        if (selected) {\r\n          this.isCurrentChange = true;\r\n          let res = this.indexArray(this.selectOrgs, row);\r\n          this.selectOrgs.splice(res, 1);\r\n        }\r\n        this.$refs.orgTable.toggleRowSelection(row);\r\n      }\r\n    },\r\n    //列表复选框有改变时触发\r\n    orgTableSelection(selection) {\r\n      //全选的情况特殊处理(为了与原本功能逻辑不冲突,先复制一份旧的选中数据.然后拿到全选事件中去计算)\r\n      this.oldselectOrgs = _.cloneDeep(this.selectOrgs);\r\n      //多选\r\n      if (this.customDialog.selectNum != 1 && !this.isCurrentChange) {\r\n        if (selection && selection.length > 0) {\r\n          if (\r\n            selection.length == 1 &&\r\n            (!this.selectOrgs || this.selectOrgs.length == 0)\r\n          ) {\r\n            this.selectOrgs = selection;\r\n          } else if (\r\n            (!this.selectOrgs || this.selectOrgs.length == 0) &&\r\n            selection.length > 1\r\n          ) {\r\n            if (!this.selectOrgs) {\r\n              this.selectOrgs = [];\r\n            }\r\n            for (let i = selection.length - 1; i >= 0; i--) {\r\n              this.selectOrgs.push(selection[i]);\r\n            }\r\n          } else if (this.isCurrentChange && selection.length >= 10) {\r\n            if (!this.selectOrgs) {\r\n              this.selectOrgs = [];\r\n            } else {\r\n              for (let u = this.selectOrgs.length - 1; u >= 0; u--) {\r\n                let res = this.indexArray(selection, this.selectOrgs[u]);\r\n                if (res != -1) {\r\n                  this.selectOrgs.splice(res, 1);\r\n                }\r\n              }\r\n            }\r\n            for (let i = 0; i < selection.length; i++) {\r\n              this.selectOrgs.push(selection[i]);\r\n            }\r\n          } else {\r\n            for (let i = selection.length - 1; i >= 0; i--) {\r\n              this.selectOrgs.push(selection[i]);\r\n              break;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    },\r\n    dialogConfirm() {\r\n      if(!this.selectOrgs || this.selectOrgs.length==0){\r\n        this.$message.error(\"请选择数据回填\");\r\n        return;\r\n      }\r\n      this.queryParam = \"\";\r\n      this.customDialogShowList = false;\r\n      this.calacInputSuffixHeight();\r\n      this.syncInputValue();\r\n    },\r\n    //重置\r\n    reset() {\r\n      this.queryParams.forEach((paramObj) => {\r\n        for (let key in paramObj) {\r\n          this.queryParams[key] = \"\";\r\n        }\r\n      });\r\n      //组合树重置\r\n      if(this.$refs.combinationTree){\r\n        let nodes = this.$refs.combinationTree.store.nodesMap;\r\n        for (let key in nodes) {\r\n          nodes[key].expanded = false;\r\n        }\r\n      }\r\n      this.combinationTreeQuerys.splice(0);\r\n      this.search(true);\r\n    },\r\n    //查询\r\n    search(resetPagintion) {\r\n      let querys = []; //查询条件\r\n      let queryFilter = {};\r\n      if (JSON.stringify(this.pagination) == \"{}\") {\r\n        this.pagination = { page: 1, pageSize: 20, showTotal: \"true\" };\r\n      }\r\n      let pageBean = { pageBean: this.pagination };\r\n      if (resetPagintion) {\r\n        pageBean.pageBean = { page: 1, pageSize: 20, showTotal: \"true\" };\r\n      }\r\n      //用户输入的\r\n      if (this.queryParams.length != 0 && this.queryParams[0] != \"\") {\r\n        this.conditionBind.forEach((item, index) => {\r\n          querys.push({\r\n            property: item.field,\r\n            value: this.queryParams[item.field],\r\n            group: \"main\",\r\n            operation: \"LIKE\",\r\n            relation: \"AND\",\r\n          });\r\n        });\r\n      }\r\n      //参数传入的查询拼接\r\n      if (this.param) {\r\n        const pInst = utils.getOnlineFormInstance(this);\r\n        this.param.forEach((item) => {\r\n          querys.push({\r\n            property: item.field,\r\n            value: utils.getValueByPath(pInst, item.bind),\r\n            group: \"main\",\r\n            operation: \"LIKE\",\r\n            relation: \"AND\",\r\n          });\r\n        });\r\n      }\r\n      //来自组合对话框的\r\n      if (\r\n        this.combinationTreeQuerys &&\r\n        this.combinationTreeQuerys.length != 0\r\n      ) {\r\n        for (let i = 0; i < this.combinationTreeQuerys.length; i++) {\r\n          querys.push(this.combinationTreeQuerys[i]);\r\n        }\r\n      }\r\n\r\n      if (querys.length > 0) {\r\n        queryFilter = { pageBean: pageBean.pageBean, querys };\r\n        this.customDialog.pageBean = queryFilter;\r\n        this.$store\r\n          .dispatch(\"dialog/getlistJson\", this.customDialog)\r\n          .then(() => {\r\n            this.checkList();\r\n          });\r\n      } else {\r\n        this.customDialog.pageBean = pageBean;\r\n        this.$store\r\n          .dispatch(\"dialog/getlistJson\", this.customDialog)\r\n          .then(() => {\r\n            this.checkList();\r\n          });\r\n      }\r\n    },\r\n    async doQuery(param) {\r\n      let paramLoadData = [];\r\n      const pInst = utils.getOnlineFormInstance(this);\r\n      //获取关联查询绑定的表单参数\r\n      for (let i = 0; i < param.conditionfield.length; i++) {\r\n        if (param.conditionfield[i].fieldPath != \"\") {\r\n          let bindVal = utils.getValueByPath(\r\n            pInst,\r\n            param.conditionfield[i].fieldPath,\r\n            null\r\n          );\r\n          let obj = { key: param.conditionfield[i].field, value: bindVal };\r\n          paramLoadData.push(obj);\r\n        }\r\n      }\r\n\r\n      let queryUrl =\r\n        param.dsType == \"dataSource\"\r\n          ? \"${form}/form/customQuery/v1/doQuery?alias=\" +\r\n            param.alias +\r\n            \"&page=1\"\r\n          : param.url;\r\n      let requestMethod = \"POST\";\r\n      //如果关联数据列表查询数据不是数据源则请求方法为restful配置的请求方式\r\n      if (param.dsType != \"dataSource\") {\r\n        requestMethod = param.requestType;\r\n      }\r\n      //查询数据\r\n      req\r\n        .request({ url: queryUrl, method: requestMethod, data: paramLoadData })\r\n        .then((res) => {\r\n          //判断是否有关联查询数据返回\r\n          if (res.data.rows.length > 0) {\r\n            //获取关联查询返回的表单参数\r\n            for (let io = 0; io < param.resultfield.length; io++) {\r\n              if (param.resultfield[io].fieldPath != \"\") {\r\n                let val = \"\";\r\n                for (let j = 0; j < res.data.rows.length; j++) {\r\n                  if (res.data.rows[j][param.resultfield[io].field]) {\r\n                    val =\r\n                      val + res.data.rows[j][param.resultfield[io].field] + \",\";\r\n                  }\r\n                }\r\n                val = val.substring(0, val.length - 1);\r\n                let pathArr = param.resultfield[io].fieldPath.split(\".\");\r\n                if (pathArr.length == 3) {\r\n                  //主表\r\n                  utils.setValueByPath(\r\n                    pInst,\r\n                    param.resultfield[io].fieldPath,\r\n                    val,\r\n                    null\r\n                  );\r\n                } else if (pathArr.length == 4) {\r\n                  //子表\r\n                  let subData = pInst.data[pathArr[1]][pathArr[2]];\r\n                  if (subData.length == 0) {\r\n                    //子表没数据的情况\r\n                    let subTabName = pathArr[2].replace(\"sub_\", \"\");\r\n                    //得到子表的所有字段\r\n                    let subInitData =\r\n                      pInst.data[pathArr[1]].initData[subTabName] || {};\r\n                    //把数组里面的值为 null 转换为空字符串\r\n                    let str = JSON.stringify(subInitData).replace(\r\n                      /null/g,\r\n                      '\"\"'\r\n                    );\r\n                    let subData = JSON.parse(str);\r\n                    for (var key in subData) {\r\n                      //点添加时判断要新增子表记录中的孙表是否有值\r\n                      if (key.indexOf(\"sub_\") == 0 && subData[key].length > 0) {\r\n                        subData[key] = []; //有则清空\r\n                      }\r\n                      //点添加时判断要新增子表记录中的字段是否有值\r\n                      if (subData[key]) {\r\n                        subData[key] = \"\"; //有则清空\r\n                      }\r\n                    }\r\n                    //新增一条数据\r\n                    pInst.data[pathArr[1]][pathArr[2]].push(subData);\r\n                    //对话框关联查询返回的值赋值给绑定的字段\r\n                    utils.setValueByPath(\r\n                      pInst,\r\n                      param.resultfield[io].fieldPath,\r\n                      val,\r\n                      0\r\n                    );\r\n                  } else {\r\n                    //子表有数据的情况\r\n                    for (let p = 0; p < subData.length; p++) {\r\n                      //对话框关联查询返回的值赋值给绑定的字段\r\n                      utils.setValueByPath(\r\n                        pInst,\r\n                        param.resultfield[io].fieldPath,\r\n                        val,\r\n                        p\r\n                      );\r\n                    }\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          } else {\r\n            //没有返回的值则清空\r\n            //获取关联查询返回的表单参数\r\n            for (let iop = 0; iop < param.resultfield.length; iop++) {\r\n              if (param.resultfield[iop].fieldPath != \"\") {\r\n                let pathArr = param.resultfield[iop].fieldPath.split(\".\");\r\n                if (pathArr.length == 3) {\r\n                  //主表\r\n                  //赋值给绑定的字段\r\n                  utils.setValueByPath(\r\n                    pInst,\r\n                    param.resultfield[iop].fieldPath,\r\n                    \"\",\r\n                    null\r\n                  );\r\n                } else if (pathArr.length == 4) {\r\n                  //子表\r\n                  let subData = pInst.data[pathArr[1]][pathArr[2]];\r\n                  for (let p = 0; p < subData.length; p++) {\r\n                    //对话框关联查询返回的值赋值给绑定的字段\r\n                    utils.setValueByPath(\r\n                      pInst,\r\n                      param.resultfield[iop].fieldPath,\r\n                      \"\",\r\n                      p\r\n                    );\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }\r\n        });\r\n    },\r\n    // 同步选择结果\r\n    syncInputValue() {\r\n      var returnStr = JSON.parse(this.customDialog.resultfield)\r\n      //拿到返回的字段\r\n      var field = new Array([returnStr.length])\r\n      var comment = new Array([returnStr.length])\r\n      var str = []\r\n      var ids = []\r\n      for (var i = 0; i < returnStr.length; i++) {\r\n        field[i] =\r\n          this.customDialog.dsType == 'dataSource'\r\n            ? returnStr[i].field.toLowerCase()\r\n            : returnStr[i].field\r\n        comment[i] =\r\n          this.customDialog.dsType == 'dataSource'\r\n            ? returnStr[i].comment.toLowerCase()\r\n            : returnStr[i].comment\r\n      }\r\n      const this_ = this\r\n      this.selectOrgs.forEach(row => {\r\n        if (this_.checkBoxDataAll || this_.checkBoxDataAll.length < 1) {\r\n          this_.checkBoxDataAll.push(row)\r\n        } else if (\r\n          JSON.stringify(this_.indexArray).indexOf(JSON.stringify(row)) == -1\r\n        ) {\r\n          this_.checkBoxDataAll.push(row)\r\n        }\r\n      })\r\n      var s = this.selectOrgs\r\n\r\n      if (this.customDialog.selectNum === 1) {\r\n        var temp = ''\r\n        for (var i = 0; i < comment.length; i++) {\r\n          let encodeStr = encodeURIComponent(s[0][field[i]])\r\n          temp += '\"' + comment[i] + '\":\"' + encodeStr + '\",'\r\n        }\r\n        if (temp != '') {\r\n          temp = '{' + temp.substring(0, temp.length - 1) + '}'\r\n        }\r\n        str.push(utils.parseToJson(temp))\r\n        ids.push(s[0].id)\r\n      } else {\r\n        for (var i = 0; i < s.length; i++) {\r\n          var temp = ''\r\n          for (var j = 0; j < comment.length; j++) {\r\n            let encodeStr = encodeURIComponent(s[i][field[j]])\r\n            temp += '\"' + comment[j] + '\":\"' + encodeStr + '\",'\r\n          }\r\n          if (temp != '') {\r\n            temp = '{' + temp.substring(0, temp.length - 1) + '}'\r\n          }\r\n          str.push(utils.parseToJson(temp))\r\n          ids.push(s[i].id)\r\n        }\r\n      }\r\n      const returnData = str\r\n      const _this = this\r\n      const formInst = utils.getOnlineFormInstance(this)\r\n      //处理自动回填配置\r\n      this.instId = formInst.$parent.instId;\r\n      let custDialog = this.custdialog;\r\n      let fillOrg = {};\r\n      if(custDialog.orgConfig && custDialog.orgConfig.name && this.fillOrg.id){\r\n        const namePath = custDialog.orgConfig.name.split('.');\r\n        const orgNameField = namePath[namePath.length-1];\r\n        fillOrg[orgNameField] = this.fillOrg.name;\r\n        if(custDialog.orgConfig.id){\r\n          const idPath = custDialog.orgConfig.id.split('.');\r\n          const orgIdField = idPath[idPath.length-1];\r\n          fillOrg[orgIdField] = this.fillOrg.id;\r\n        }\r\n        if(custDialog.orgConfig.code){\r\n          const codePath = custDialog.orgConfig.code.split('.');\r\n          const orgCodeField = codePath[codePath.length-1];\r\n          fillOrg[orgCodeField] = this.fillOrg.code;\r\n        }\r\n      }\r\n      if(custDialog.orgConfig.instId){\r\n        const instIdPath = custDialog.orgConfig.instId.split('.');\r\n        const instIdField = instIdPath[instIdPath.length-1];\r\n        fillOrg[instIdField] = this.instId;\r\n      }\r\n      try{\r\n        let returnSize = returnData.length;\r\n        //判断是否是一对一子表\r\n        if (_this.relation && _this.relation == 'onetoone') {\r\n          if(returnSize>1){\r\n            this_.$message.error(\"一对一子表只能选择一条数据\");\r\n            this_.customDialogShowList = true;\r\n            return;\r\n          }\r\n        }\r\n        returnData.forEach(row => {\r\n          var targetArray = null\r\n          var subLineData = {}\r\n          this.custdialog.custDialog.mappingConf.forEach(con => {\r\n            if (con.target[0]) {\r\n              targetArray = con.target[0].split('.')\r\n              var from = ''\r\n              if (_this.customDialog.dsType == 'restful') {\r\n                from = con.from\r\n              } else {\r\n                from = con.from.toLowerCase()\r\n              }\r\n              if (row[from] == undefined) {\r\n                from = from.toUpperCase()\r\n              }\r\n              subLineData[\r\n                targetArray[targetArray.length - 1]\r\n              ] = decodeURIComponent(row[from])\r\n            }\r\n          })\r\n          if (targetArray) {\r\n            var subBo = formInst['data'][targetArray[0]][targetArray[1]]\r\n            //判断是否大于子表数据最大行数\r\n            if(this_.maxRow !=0 && (subBo.length + returnSize)>this_.maxRow){\r\n              this_.$message.error(\"子表数据已超过最大行数【\"+this_.maxRow+\"】\");\r\n              this_.customDialogShowList = true;\r\n              throw new Error(\"EndIterative\");\r\n            }\r\n\r\n            //子表中的孙表实体（可能存在多个）\r\n            let sunBos = utils.getSomeAttributeFromParentElement(\r\n              _this.$el,\r\n              'sunBos'\r\n            )\r\n            //如果存在孙表实体则手动添加空孙表数组对象\r\n            if (sunBos) {\r\n              let arrayBo = sunBos.split(',')\r\n              for (let i = 0; i < arrayBo.length; i++) {\r\n                let key = 'sub_' + arrayBo[i]\r\n                let value = new Array()\r\n                subLineData[key] = value\r\n              }\r\n            }\r\n            //判断是否是一对一子表\r\n            if (_this.relation && _this.relation == 'onetoone') {\r\n              subBo.empty()\r\n            }\r\n            if(fillOrg && JSON.stringify(fillOrg)!='{}'){\r\n              subLineData = {...subLineData,...fillOrg};\r\n            }\r\n            subBo.push(subLineData)\r\n            returnSize--\r\n          }\r\n        })\r\n      }catch(e) {\r\n        if(e.message!=\"EndIterative\") throw e;\r\n      };\r\n    },\r\n    //取消按钮\r\n    dialogCancel() {\r\n      const this_ = this;\r\n      this_.queryParam = \"\";\r\n      this_.$store.dispatch(\"dialog/setDialogData\", []).then(() => {\r\n        this_.customDialogShowList = false;\r\n        //判断是否是点击了确认再点击取消的  inputVal没有值则表示直接点击的取消\r\n        if (!this_.inputVal) {\r\n          this_.selectOrgs = [];\r\n        } else {\r\n          this_.selectOrgs = [...this_.showData];\r\n          this.checkBoxDataAll = [...this_.selectOrgs];\r\n        }\r\n      });\r\n    },\r\n    dialogTreeConfirm() {\r\n      const this_ = this\r\n      if(this_.propsData.length==0){\r\n        this_.$message.error(\"请选择数据回填\");\r\n        return;\r\n      }\r\n      this.$store.dispatch('dialog/setDialogData', [])\r\n      var returnStr = JSON.parse(this.customDialog.resultfield)\r\n      var field = new Array([returnStr.length])\r\n      var comment = new Array([returnStr.length])\r\n      var str = []\r\n      for (var i = 0; i < returnStr.length; i++) {\r\n        field[i] = returnStr[i].field\r\n        comment[i] = returnStr[i].comment\r\n      }\r\n      if (this.customDialog.selectNum === 1) {\r\n        var nodes = this.propsData[0]\r\n        var temp = ''\r\n        for (var i = 0; i < comment.length; i++) {\r\n          temp += '\"' + comment[i] + '\":\"' + nodes[field[i]] + '\",'\r\n        }\r\n        if (temp != '') {\r\n          temp = '{' + temp.substring(0, temp.length - 1) + '}'\r\n        }\r\n        str.push(utils.parseToJson(temp))\r\n      } else {\r\n        var nodes = this.propsData\r\n        nodes.forEach((item, k) => {\r\n          var temp = ''\r\n          for (var i = 0; i < comment.length; i++) {\r\n            temp += '\"' + comment[i] + '\":\"' + nodes[field[i]] + '\",'\r\n            temp += '\"' + comment[i] + '\":\"' + nodes[k][field[i]] + '\",'\r\n          }\r\n          if (temp != '') {\r\n            temp = '{' + temp.substring(0, temp.length - 1) + '}'\r\n          }\r\n          str.push(utils.parseToJson(temp))\r\n        })\r\n      }\r\n      const returnData = str\r\n      const formInst = utils.getOnlineFormInstance(this)\r\n      try{\r\n        let returnSize = returnData.length;\r\n        //判断是否是一对一子表\r\n        if (this_.relation && this_.relation == 'onetoone') {\r\n          if(returnSize>1){\r\n            this_.$message.error(\"一对一子表只能选择一条数据\");\r\n            this_.customDialogShowTree = true;\r\n            return;\r\n          }\r\n        }\r\n        returnData.forEach(row => {\r\n          var targetArray = null\r\n          var subLineData = {}\r\n          this.custdialog.custDialog.mappingConf.forEach(con => {\r\n            if (con.target[0]) {\r\n              targetArray = con.target[0].split('.')\r\n              var from = ''\r\n              if (this_.customDialog.dsType == 'restful') {\r\n                from = con.from\r\n              } else {\r\n                from = con.from.toLowerCase()\r\n              }\r\n              if (row[from] == undefined) {\r\n                from = from.toUpperCase()\r\n              }\r\n              subLineData[\r\n                targetArray[targetArray.length - 1]\r\n              ] = decodeURIComponent(row[from])\r\n            }\r\n          })\r\n          if (targetArray) {\r\n            var subBo = formInst['data'][targetArray[0]][targetArray[1]]\r\n            //判断是否大于子表数据最大行数\r\n            if(this_.maxRow !=0 && (subBo.length + returnSize)>this_.maxRow){\r\n              this_.$message.error(\"子表数据已超过最大行数【\"+this_.maxRow+\"】\");\r\n              this_.customDialogShowTree = true;\r\n              throw new Error(\"EndIterative\");\r\n            }\r\n\r\n            //子表中的孙表实体（可能存在多个）\r\n            let sunBos = utils.getSomeAttributeFromParentElement(\r\n              this_.$el,\r\n              'sunBos'\r\n            )\r\n            //如果存在孙表实体则手动添加空孙表数组对象\r\n            if (sunBos) {\r\n              let arrayBo = sunBos.split(',')\r\n              for (let i = 0; i < arrayBo.length; i++) {\r\n                let key = 'sub_' + arrayBo[i]\r\n                let value = new Array()\r\n                subLineData[key] = value\r\n              }\r\n            }\r\n            //判断是否是一对一子表\r\n            if (this_.relation && this_.relation == 'onetoone') {\r\n              subBo.empty()\r\n            }\r\n            subBo.push(subLineData)\r\n            returnSize--\r\n          }\r\n        })\r\n        this.customDialogShowTree = false;\r\n      }catch(e) {\r\n        if(e.message!=\"EndIterative\") throw e;\r\n      };\r\n\r\n    },\r\n    dialogCancelTree() {\r\n      this.$store.dispatch(\"dialog/setDialogData\", []);\r\n      this.customDialogShowTree = false;\r\n    },\r\n    getChecked(data, checked, indeterminate) {\r\n      if (this.customDialog.selectNum === 1) {\r\n        this.propsData = [];\r\n        this.propsData.push(data);\r\n      } else {\r\n        this.propsData = this.$refs.tree.getCheckedNodes();\r\n      }\r\n    },\r\n    treeClick(data, n, i) {\r\n      if (this.customDialog.selectNum === 1) {\r\n        this.propsData = [];\r\n        this.propsData.push(data);\r\n      }\r\n    },\r\n    clearAllSelectOrgs() {\r\n      this.selectOrgs = null;\r\n      this.$refs.orgTable.clearSelection();\r\n    },\r\n    removeSelectOrg(item) {\r\n      if (this.customDialog.selectNum === 1) {\r\n        this.$emit(\"input\", \"\");\r\n        this.selectOrgs.splice(item, 1);\r\n        this.showData.splice(item, 1);\r\n      } else {\r\n        this.inputVal.splice(item, 1);\r\n        // let removeId = this.showData[item];\r\n        //树形\r\n        if (this.propsData.length > 0) {\r\n          this.propsData.splice(item, 1);\r\n        }\r\n        if (this.showData.length > 0) {\r\n          this.showData.splice(item, 1);\r\n        }\r\n        //列表\r\n        if (this.selectOrgs != null) {\r\n          this.selectOrgs.splice(item, 1);\r\n          this.checkBoxDataAll.splice(item, 1);\r\n          this.selectOrgs.forEach((row) => {\r\n            // if(item.id ==removeId ){\r\n            this.isCurrentChange = true;\r\n            this.toggleRowSelection(row, false);\r\n            // }\r\n          });\r\n        }\r\n        this.calacInputSuffixHeight();\r\n        let value = \"\";\r\n        this.inputVal.forEach((val) => {\r\n          value += val.value + \",\";\r\n        });\r\n        if (value.length > 0) {\r\n          value = value.substring(0, value.length - 1);\r\n        }\r\n        if (value != \"\") {\r\n          value = value + \"||\" + JSON.stringify(this.showData);\r\n        }\r\n        this.$emit(\"input\", value);\r\n      }\r\n      this.syncInputValue();\r\n    },\r\n    calacInputSuffixHeight() {\r\n      setTimeout(() => {\r\n        if (!this.$refs.tagSpans) return;\r\n        if (this.$refs.tagSpans.offsetHeight) {\r\n          this.inputSuffixHeight = this.$refs.tagSpans.offsetHeight + 5;\r\n        } else {\r\n          this.inputSuffixHeight = 30;\r\n        }\r\n        // 触发验证\r\n        this.$validator.validate();\r\n      }, 0);\r\n    },\r\n    customDialogShow(pageParam) {\r\n      this.customDialogShowList = true;\r\n      this.customDialog = pageParam.customDialog;\r\n      this.customDialog.queryUrl =\r\n        this.customDialog.dsType == \"dataSource\"\r\n          ? \"${form}/form/customDialog/v1/getListData?alias=\" +\r\n            this.customDialog.alias +\r\n            \"&mapParam=\" +\r\n            (this.customDialog.mapParam ? this.customDialog.mapParam : \"\")\r\n          : this.customDialog.url;\r\n      if (this.dialogData.length < 1) {\r\n        this.pagination = { page: 1, pageSize: 20, showTotal: \"true\" };\r\n        this.search();\r\n        this.displayfield = JSON.parse(pageParam.customDialog.displayfield);\r\n        if (this.customDialog.dsType == \"dataSource\") {\r\n          for (var i = 0; i < this.displayfield.length; i++) {\r\n            this.displayfield[i].field = this.displayfield[\r\n              i\r\n            ].field.toLowerCase();\r\n          }\r\n        }\r\n      } else if (this.dialogData.length > 1) {\r\n        this.search();\r\n      }\r\n      if (this.dialogData.length > 0 && this.displayfield.length == 0) {\r\n        this.search();\r\n        this.displayfield = JSON.parse(pageParam.customDialog.displayfield);\r\n        if (this.customDialog.dsType == \"dataSource\") {\r\n          for (var i = 0; i < this.displayfield.length; i++) {\r\n            this.displayfield[i].field = this.displayfield[\r\n              i\r\n            ].field.toLowerCase();\r\n          }\r\n        }\r\n      }\r\n    },\r\n    customDialogTreeShow(pageParam) {\r\n      this.customDialog = pageParam.customDialog;\r\n      var customDialog = this.customDialog;\r\n      var mapParam = \"\";\r\n      if (pageParam.param != undefined) {\r\n        mapParam = JSON.stringify(pageParam.param);\r\n        mapParam = mapParam.substring(1, mapParam.length - 1);\r\n      }\r\n      var requestType =\r\n        customDialog.dsType == \"dataSource\"\r\n          ? \"GET\"\r\n          : customDialog.requestType\r\n          ? customDialog.requestType\r\n          : \"POST\";\r\n      var url =\r\n        \"${form}/form/customDialog/v1/getTreeData?alias=\" +\r\n        pageParam.alias +\r\n        \"&mapParam=\" +\r\n        mapParam;\r\n      var paramsObj = {};\r\n      if (customDialog.dsType != \"dataSource\") {\r\n        url = customDialog.url;\r\n        var templatePa = customDialog.dataParam;\r\n        if (customDialog.conditionfield) {\r\n          var conditions = JSON.parse(customDialog.conditionfield);\r\n          for (var i = 0; i < conditions.length; i++) {\r\n            var con = conditions[i];\r\n            if (requestType == \"POST\") {\r\n              if (templatePa) {\r\n                templatePa = templatePa.replace(\r\n                  new RegExp(\"\\\\{\" + con.field + \"\\\\}\", \"g\"),\r\n                  con.defaultValue\r\n                );\r\n              } else {\r\n                paramsObj[con.field] = con.defaultValue;\r\n              }\r\n            } else {\r\n              var ljChar = url.indexOf(\"?\") == -1 ? \"?\" : \"&\";\r\n              url = url + ljChar + con.field + \"=\" + con.defaultValue;\r\n            }\r\n          }\r\n          if (templatePa) {\r\n            paramsObj = JSON.parse(templatePa);\r\n          }\r\n        }\r\n      }\r\n      var requestParams = {};\r\n      requestParams.requestType = requestType;\r\n      requestParams.url = url;\r\n      requestParams.paramsObj = paramsObj;\r\n      this.searchTree(requestParams);\r\n      this.customDialogShowTree = true;\r\n    },\r\n    //树形查询\r\n    searchTree(requestParams) {\r\n      const this_ = this;\r\n      let query =\r\n        requestParams.requestType == \"POST\"\r\n          ? req.post(requestParams.url, requestParams.paramsObj)\r\n          : req.get(requestParams.url);\r\n      query.then(function (response) {\r\n        //显示字段配置\r\n        let displayfield = JSON.parse(this_.customDialog.displayfield);\r\n        this_.displayField = displayfield;\r\n        //把对话框配置的显示字段显示名称赋值给树形的显示值\r\n        this_.defaultProps.label = displayfield.displayName;\r\n        this_.treeList = response.data;\r\n        //得到要加载树的信息\r\n        this_.props1 = this_.toTreeData(\r\n          response.data,\r\n          displayfield.id,\r\n          displayfield.pid,\r\n          displayfield.displayName,\r\n          displayfield.pvalue ? displayfield.pvalue : 0\r\n        );\r\n      });\r\n    },\r\n    //加载树的信息\r\n    toTreeData(data, id, pid, name, pvalue) {\r\n      // 建立个树形结构,需要定义个最顶层的父节点，pvalue是0\r\n      return this.translateDataToTree(data, pid, id, name, pvalue);\r\n    },\r\n    translateDataToTree(data, pid, id, name, pvalue) {\r\n      //把树数据有子节点的数据全部过滤掉（只留父节点的数据）\r\n      let parents = data.filter(\r\n        (value) =>\r\n          value[id] == value[pid] || value[pid] == null || value[pid] == pvalue\r\n      );\r\n      if (!parents) {\r\n        parents = data.filter(\r\n          (value) =>\r\n            value[pid] !== \"undefined\" &&\r\n            value[pid] != null &&\r\n            value[id] != value[pid]\r\n        );\r\n      }\r\n      return parents;\r\n    },\r\n    loadTree(node, resolve) {\r\n      if (node) {\r\n        let this_ = this;\r\n        let displayField =\r\n          this_.customDialog.style == 2\r\n            ? this_.combiTreeDisplayField\r\n            : this_.displayField;\r\n        resolve(\r\n          this.treeList.filter(\r\n            (value) => value[displayField.pid] === node.data[displayField.id]\r\n          )\r\n        );\r\n        if (this.showData && this.showData.length > 0) {\r\n          setTimeout(() => {\r\n            this.showData.forEach((v) => {\r\n              if (v.Pid == node.key) {\r\n                this_.$refs.tree.setChecked(v, true);\r\n              } else {\r\n                this_.checkNode(v, this_);\r\n              }\r\n            });\r\n          }, 400);\r\n        }\r\n      }\r\n    },\r\n\r\n    afterOpen() {\r\n      //打开对话框之后加载树\r\n      this.loadCombinationTree();\r\n    },\r\n    loadCombinationTree() {\r\n      if (this.customDialog.style != 2) {\r\n        return;\r\n      }\r\n      let combinationRule = JSON.parse(this.customDialog.combinationRule);\r\n      this.combinationRule = combinationRule;\r\n      let treeAlias = combinationRule.leftTree;\r\n      //获取对话框数据\r\n      req\r\n        .get(\"${form}/form/customDialog/v1/getByAlias?alias=\" + treeAlias)\r\n        .then((resp) => {\r\n          let treeDialog = resp.data;\r\n          this.leftTreeTitle = treeDialog.name;\r\n          let reqParam = {};\r\n          let requestType =\r\n            treeDialog.dsType == \"dataSource\"\r\n              ? \"GET\"\r\n              : treeDialog.requestType\r\n              ? treeDialog.requestType\r\n              : \"POST\";\r\n          let url =\r\n            \"${form}/form/customDialog/v1/getTreeData?alias=\" +\r\n            treeAlias +\r\n            \"&mapParam=\";\r\n          let paramsObj = {};\r\n          if (treeDialog.dsType != \"dataSource\") {\r\n            url = treeDialog.url;\r\n            let templatePa = treeDialog.dataParam;\r\n            if (treeDialog.conditionfield) {\r\n              let conditions = JSON.parse(treeDialog.conditionfield);\r\n              for (let i = 0; i < conditions.length; i++) {\r\n                let con = conditions[i];\r\n                if (requestType == \"POST\") {\r\n                  if (templatePa) {\r\n                    templatePa = templatePa.replace(\r\n                      new RegExp(\"\\\\{\" + con.field + \"\\\\}\", \"g\"),\r\n                      con.defaultValue\r\n                    );\r\n                  } else {\r\n                    paramsObj[con.field] = con.defaultValue;\r\n                  }\r\n                } else {\r\n                  let ljChar = url.indexOf(\"?\") == -1 ? \"?\" : \"&\";\r\n                  url = url + ljChar + con.field + \"=\" + con.defaultValue;\r\n                }\r\n              }\r\n              if (templatePa) {\r\n                paramsObj = JSON.parse(templatePa);\r\n              }\r\n            }\r\n          }\r\n          let requestParams = {};\r\n          requestParams.requestType = requestType;\r\n          requestParams.url = url;\r\n          requestParams.paramsObj = paramsObj;\r\n          this.$store\r\n            .dispatch(\"dialog/getTreeData\", requestParams)\r\n            .then((resp) => {\r\n              if (treeDialog.displayfield && treeDialog.resultfield) {\r\n                let displayField = JSON.parse(treeDialog.displayfield);\r\n                let resultfield = JSON.parse(treeDialog.resultfield);\r\n                this.defaultProps.label = displayField.displayName;\r\n                this.treeList = resp;\r\n                this.combiTreeDisplayField = displayField;\r\n                this.combinationTreeData = this.toTreeData(\r\n                  resp,\r\n                  displayField.id,\r\n                  displayField.pid,\r\n                  displayField.displayName,\r\n                  displayField.pvalue ? displayField.pvalue : \"0\",\r\n                  resultfield\r\n                );\r\n              }\r\n            });\r\n        });\r\n    },\r\n    combiTreeClick(paramObj, node, nodeComponent) {\r\n      //组合对话框点击左树\r\n      //清空旧的\r\n      this.combinationTreeQuerys.splice(0);\r\n      let combinationRule = JSON.parse(this.customDialog.combinationRule);\r\n      if (!combinationRule.rules || combinationRule.rules.length == 0) {\r\n        return;\r\n      }\r\n      let rules = combinationRule.rules;\r\n      for (let i = 0; i < rules.length; i++) {\r\n        let value = paramObj[rules[i].treeField];\r\n        let property = rules[i].listField;\r\n        this.combinationTreeQuerys.push({\r\n          property: property,\r\n          value: value,\r\n          group: \"treeGroup\",\r\n          operation: this.getOperation(rules[i].condition),\r\n          relation: \"AND\",\r\n        });\r\n      }\r\n      this.search();\r\n    },\r\n    //获取运算符号\r\n    getOperation(old) {\r\n      if (!old) {\r\n        return \"\";\r\n      }\r\n      if (old == \"EQ\") {\r\n        return \"EQUAL\";\r\n      }\r\n      if (old == \"LK\") {\r\n        return \"LIKE\";\r\n      }\r\n      if (old == \"LFK\") {\r\n        return \"LIKE\";\r\n      }\r\n      if (old == \"IN\") {\r\n        return \"IN\";\r\n      }\r\n    },\r\n    toggleTree() {\r\n      if (this.treeShow) {\r\n        this.treeShow = false;\r\n        this.transtionWidth = \"0%\";\r\n        this.toggleBtn = \"el-icon-arrow-right\";\r\n      } else {\r\n        this.treeShow = true;\r\n        this.transtionWidth = \"25%\";\r\n        this.toggleBtn = \"el-icon-arrow-left\";\r\n      }\r\n    },\r\n    initTemplateData(){\r\n        let _this = this;\r\n        const custdialog = this.custdialog.custDialog;\r\n        if(!custdialog || !custdialog.mappingConf || custdialog.mappingConf.length<1){\r\n          return ;\r\n        }\r\n        const targetPath = this.getTargetPath(custdialog.mappingConf);\r\n        const paths = targetPath.split('.');\r\n        const formInst = utils.getOnlineFormInstance(this);\r\n        if(!formInst.initFillData){\r\n          return ;\r\n        }\r\n        //如果已有数据则不需要再次初始化\r\n        const curData = formInst['data'][paths[0]][paths[1]];\r\n        let initType = this.initFillDataType;\r\n        if((!initType || initType=='empty') && curData.length>0 && !(curData.length==1 && JSON.stringify(curData[0])=='[]')){\r\n          return ;\r\n        }else if(initType=='cover'){\r\n          formInst['data'][paths[0]][paths[1]] = [];\r\n        }\r\n        const loading = this.$loading({\r\n          lock: true,\r\n          text: '正在初始化填报模板...',\r\n          spinner: 'el-icon-loading',\r\n          background: 'rgba(0, 0, 0, 0.7)'\r\n        });\r\n        let myCustomDialog = null;\r\n        this.$http.get('${form}/form/customDialog/v1/getByAlias?alias='+custdialog.alias).then(resp => {\r\n            myCustomDialog = resp.data;\r\n            _this.customDialog = resp.data;\r\n        }, error => {\r\n            _this.closeLoading(loading);\r\n            _this.$message({\r\n              message: \"获取自定义对话框失败！\",\r\n              type: \"error\"\r\n            });\r\n        }).then(function () {\r\n              const currentUser = JSON.parse(sessionStorage.getItem(\"currentUser\"));\r\n             if(!_this.custdialog.orgConfig.code && !_this.custdialog.orgConfig.name && !_this.custdialog.orgConfig.id){\r\n                _this.closeLoading(loading);\r\n                _this.toFillInitData(_this,myCustomDialog.dsType,formInst['data']);\r\n              }else if (localStorage.getItem(\"curFillOrg_\"+currentUser.account)) {\r\n               _this.closeLoading(loading);\r\n               _this.fillOrg = JSON.parse(localStorage.getItem(\"curFillOrg_\"+currentUser.account));\r\n               _this.toFillInitData(_this,myCustomDialog.dsType,formInst['data']);\r\n             }else{\r\n               _this.$http.get('${uc}/api/org/v1/org/getFillOrg').then(resp => {\r\n                   _this.closeLoading(loading);\r\n                    const rep = resp.data;\r\n                    if(rep.state){\r\n                      _this.fillOrg = rep.value;\r\n                      localStorage.setItem(\"curFillOrg_\"+currentUser.account,JSON.stringify(rep.value))\r\n                      _this.toFillInitData(_this,myCustomDialog.dsType,formInst['data']);\r\n                    }else{\r\n                      _this.$message({\r\n                        message: rep.message,\r\n                        type: \"warning\"\r\n                      });\r\n                    }\r\n                }, error => {\r\n                    _this.closeLoading(loading);\r\n                    _this.$message({\r\n                      message: \"获取当前用户填制单位失败！\",\r\n                      type: \"warning\"\r\n                    });\r\n                })\r\n             }\r\n        });\r\n    },\r\n    closeLoading(loading){\r\n      setTimeout(function(){\r\n        loading.close();\r\n      },2000);\r\n    },\r\n    getTargetPath(mappingConf){\r\n      let target = '';\r\n      if(mappingConf && mappingConf.length>0){\r\n        mappingConf.forEach(map =>{\r\n          if(map['target'] && map['target'].length==1 && map['target'][0]){\r\n            target = map['target'][0];\r\n            return target;\r\n          }\r\n        });\r\n      }\r\n      return target;\r\n    },\r\n    toFillInitData(_this,dsType,curData){\r\n      const custdialog = this.custdialog.custDialog;\r\n      let params = [];//绑定的表单字段\r\n      if(custdialog.conditions){\r\n        //对话框按表单字段查询（参数传入的）\r\n        let bindList = custdialog.conditions;\r\n        if(bindList.length>0){\r\n          bindList.forEach(ele => {\r\n            //绑定表单字段\r\n            if (ele.defaultType == \"3\" && ele.bind) {\r\n              let obj = {};\r\n              obj.field = ele.field;\r\n              const bindArray = ele.bind.split('.');\r\n              if(bindArray.length==3){\r\n                obj.bind = curData[bindArray[1]][bindArray[2]];\r\n                params.push(obj);\r\n              }\r\n              \r\n            }\r\n          });\r\n        }\r\n      }\r\n      let url = '${form}/form/customDialog/v1/getListData?alias='+custdialog.alias;\r\n      if(params.length>0){\r\n        let paStr = '';\r\n        params.forEach(pa =>{\r\n          if(paStr){\r\n            paStr += ',';\r\n          }\r\n          paStr = paStr + '\"'+pa.field +'\":\"'+pa.bind+'\"';\r\n        });\r\n        url = url+'&mapParam='+paStr;\r\n      }else{\r\n        url = url+'&mapParam=';\r\n      }\r\n      const param = {pageBean: {page: 1, pageSize: 1000, showTotal: true}};\r\n      _this.$http.post(url, param).then(resp => {\r\n          const response = resp.data;\r\n          if(response.rows){\r\n            _this.syncInitTableValue(response.rows,dsType);\r\n          }\r\n      }, error => {\r\n          _this.$message({\r\n            message: \"获取初始化数据失败！\",\r\n            type: \"error\"\r\n          });\r\n      });\r\n    },\r\n    syncInitTableValue(s,dsType) {\r\n      let custDialog = this.custdialog;\r\n      var returnStr = JSON.parse(this.customDialog.resultfield);\r\n      //拿到返回的字段\r\n      var field = new Array([returnStr.length]);\r\n      var comment = new Array([returnStr.length]);\r\n      var str = [];\r\n      var ids = [];\r\n      for (var i = 0; i < returnStr.length; i++) {\r\n        field[i] =\r\n          dsType == \"dataSource\"\r\n            ? returnStr[i].field.toLowerCase()\r\n            : returnStr[i].field;\r\n        comment[i] =\r\n          dsType == \"dataSource\"\r\n            ? returnStr[i].comment.toLowerCase()\r\n            : returnStr[i].comment;\r\n      }\r\n      if (this.customDialog.selectNum === 1) {\r\n        var temp = \"\";\r\n        for (var i = 0; i < comment.length; i++) {\r\n          const va = s[0][field[i]];\r\n          va = typeof(va)=='undefined'?'':va;\r\n          temp += '\"' + comment[i] + '\":\"' + va + '\",';\r\n        }\r\n        if (temp != \"\") {\r\n          temp = \"{\" + temp.substring(0, temp.length - 1) + \"}\";\r\n        }\r\n        str.push(utils.parseToJson(temp));\r\n        ids.push(s[0].id);\r\n      } else {\r\n        for (var i = 0; i < s.length; i++) {\r\n          var temp = \"\";\r\n          for (var j = 0; j < comment.length; j++) {\r\n            const va = s[i][field[j]];\r\n            va = typeof(va)=='undefined'?'':va;\r\n            temp += '\"' + comment[j] + '\":\"' + va + '\",';\r\n          }\r\n          if (temp != \"\") {\r\n            temp = \"{\" + temp.substring(0, temp.length - 1) + \"}\";\r\n          }\r\n          str.push(utils.parseToJson(temp));\r\n          ids.push(s[i].id);\r\n        }\r\n      }\r\n      const formInst = utils.getOnlineFormInstance(this);\r\n      this.instId = formInst.$parent.instId;\r\n      //处理填制部门\r\n      let fillOrg = {};\r\n      if(custDialog.orgConfig && custDialog.orgConfig.name && this.fillOrg.id){\r\n        const namePath = custDialog.orgConfig.name.split('.');\r\n        const orgNameField = namePath[namePath.length-1];\r\n        fillOrg[orgNameField] = this.fillOrg.name;\r\n        if(custDialog.orgConfig.id){\r\n          const idPath = custDialog.orgConfig.id.split('.');\r\n          const orgIdField = idPath[idPath.length-1];\r\n          fillOrg[orgIdField] = this.fillOrg.id;\r\n        }\r\n        if(custDialog.orgConfig.code){\r\n          const codePath = custDialog.orgConfig.code.split('.');\r\n          const orgCodeField = codePath[codePath.length-1];\r\n          fillOrg[orgCodeField] = this.fillOrg.code;\r\n        }\r\n      }\r\n      if(custDialog.orgConfig.instId){\r\n        const instIdPath = custDialog.orgConfig.instId.split('.');\r\n        const instIdField = instIdPath[instIdPath.length-1];\r\n        fillOrg[instIdField] = this.instId;\r\n      }\r\n      const returnData = str;\r\n      const _this = this;\r\n      \r\n      returnData.forEach(row => {\r\n        var subLineData = {};\r\n        var targetArray = null;\r\n        custDialog.custDialog.mappingConf.forEach(con => {\r\n          if (con.target[0]) {\r\n            targetArray = con.target[0].split(\".\");\r\n            var from = \"\";\r\n            if (_this.customDialog.dsType == \"restful\") {\r\n              from = con.from;\r\n            } else {\r\n              from = con.from.toLowerCase();\r\n            }\r\n            subLineData[targetArray[targetArray.length - 1]] = row[from];\r\n          }\r\n        });\r\n        if(fillOrg && JSON.stringify(fillOrg)!='{}'){\r\n          subLineData = {...subLineData,...fillOrg};\r\n        }\r\n        formInst['data'][targetArray[0]][targetArray[1]].push(subLineData);\r\n      });\r\n    },\r\n  },\r\n};\r\n",null]}