{"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\\EipTreeselect.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\eipControl\\EipTreeselect.vue","mtime":1667327529309},{"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\r\nimport utils from \"@/utils.js\";\r\nimport hotentUtils from \"@/hotent-ui-util.js\";\r\nimport sub_pio_mixin from \"@/sub-permission-mixin.js\";\r\nimport req from \"@/request.js\";\r\nexport default {\r\n  name: \"eip-treeselect\",\r\n  props: [\r\n    \"validate\",\r\n    \"value\",\r\n    \"name\",\r\n    \"permission\",\r\n    \"multiple\",\r\n    \"selectlist\",\r\n    \"ganged\",\r\n    \"filterable\",\r\n    \"allowCreate\",\r\n    \"styles\",\r\n    \"customQuery\"\r\n  ],\r\n  mixins: [sub_pio_mixin],//混入方式引入表单组件中公共属性，处理子表、孙表行内联动（切面修改permission_sub_sub）\r\n  data() {\r\n    return {\r\n      config: {},\r\n      total: 10,\r\n      pageSize: 5,\r\n      currentPage: 1,\r\n      options: [],\r\n      tempoptions: [],\r\n      valueDesc: \"\",\r\n      tagFormatValue: [],\r\n      defaultProps: {\r\n        children: \"children\",\r\n        label: \"value\"\r\n      },\r\n      newValidate: null,\r\n      curSubIndex: null\r\n    };\r\n  },\r\n  watch: {\r\n    valueDesc: function(newVal, oldVal) {\r\n      if (newVal && newVal != oldVal) {\r\n        this.tagFormatValue = newVal.split(\",\");\r\n      }\r\n    }\r\n  },\r\n  computed: {\r\n    inputVal: {\r\n      get() {\r\n        if (this.multiple) {\r\n          if (this.value) {\r\n            if (this.$refs.treeselectElTree) {\r\n              let checkedNodes = this.$refs.treeselectElTree.getCheckedNodes();\r\n              for (let data of checkedNodes) {\r\n                if (!this.value.split(\",\").includes(data.key)) {\r\n                  this.$refs.treeselectElTree.setChecked(data, false);\r\n                }\r\n              }\r\n            }\r\n            return this.value.split(\",\");\r\n          } else {\r\n            if (this.$refs.treeselectElTree) {\r\n              let checkedNodes = this.$refs.treeselectElTree.getCheckedNodes();\r\n              for (let data of checkedNodes) {\r\n                this.$refs.treeselectElTree.setChecked(data, false);\r\n              }\r\n            }\r\n            return [];\r\n          }\r\n        } else if (this.value || this.value === 0) {\r\n          return this.value + \"\";\r\n        } else {\r\n          return this.value;\r\n        }\r\n      },\r\n      set(val) {\r\n        if (this.multiple) {\r\n          this.$emit(\"input\", val.join(\",\"));\r\n        } else {\r\n          this.$emit(\"input\", val);\r\n          if (!this.multiple && val) {\r\n            //判断对话框是否绑定了关联查询\r\n            if(this.customQuery&&this.customQuery.custQueryJson&&this.customQuery.custQueryJson.length>0){\r\n              let custQueryJson = this.customQuery.custQueryJson;\r\n              for(let i=0;i<custQueryJson.length;i++){\r\n                if(custQueryJson[i].conditionfield.length>0){\r\n                  this.doQuery(custQueryJson[i]);\r\n                }else{\r\n                  console.error(\"[\"+custQueryJson[i].comment+\"]关联查询取值参数未绑定表单字段\");\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    },\r\n    inputWriteable: function() {\r\n      return utils.getWriteable(this.permission_sub);\r\n    },\r\n    inputValidate: function() {\r\n      if (this.newValidate) {\r\n        return this.newValidate;\r\n      }\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  mounted() {\r\n    this.options = this.selectlist ? this.selectlist : [];\r\n    const _me = this;\r\n    let { subScopeEl } = hotentUtils.getSubScopeElAndIndex(_me.$el);\r\n    if (subScopeEl) {\r\n      this.curSubIndex = subScopeEl.dataset[\"index\"];\r\n    }\r\n    const ganged = this.ganged;\r\n    //判断是否有参数绑定\r\n    if (\r\n      ganged &&\r\n      ganged.bind &&\r\n      JSON.stringify(ganged.bind) != \"{}\" &&\r\n      this.config\r\n    ) {\r\n      const bind = ganged.bind;\r\n      const formVm = utils.getOnlineFormInstance(_me);\r\n      for (var key in bind) {\r\n        let paramDom = null;\r\n        if (this.curSubIndex == null) {\r\n          paramDom = document.querySelector('[model-name=\"' + bind[key] + '\"]');\r\n        } else {\r\n          let subFiledName = bind[key].split(\".\")[3];\r\n          paramDom = subScopeEl.querySelector(\r\n            '[model-name=\"item.' + subFiledName + '\"]'\r\n          );\r\n        }\r\n        if (paramDom && paramDom.__vue__) {\r\n          paramDom.__vue__.$watch(\"value\", function(newVal, oldVal) {\r\n            if (newVal != oldVal) {\r\n              _me.search(false, newVal, true);\r\n            }\r\n          });\r\n        }\r\n      }\r\n    }\r\n  },\r\n  created() {\r\n    this.options = this.selectlist ? this.selectlist : [];\r\n    //动态传入\r\n    if (\r\n      this.ganged &&\r\n      this.ganged.alias &&\r\n      this.options.length < 1 &&\r\n      this.ganged\r\n    ) {\r\n      const this_ = this;\r\n      this_.$store.dispatch(\"form/getByAliasCq\", this_.ganged.alias).then(res => {\r\n        this_.config = res;\r\n        let objIsEmpty = this_.objIsEmpty(this_.ganged.bind);\r\n        if (this_.ganged && !objIsEmpty) {\r\n          this_.handelInitGangedsearch();\r\n        } else {\r\n          this_.search(false, \"\");\r\n        }\r\n      });\r\n    }\r\n    this.$validator = this.$root.$validator;\r\n  },\r\n  methods: {\r\n    //判断对象里面的值是否为空\r\n    objIsEmpty(obj){\r\n      for(let key in obj){\r\n        if(obj[key]){\r\n          return false;\r\n        }\r\n      }\r\n      return true;\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(pInst, param.conditionfield[i].fieldPath, null);\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 = param.dsType==\"dataSource\"?\"${form}/form/customQuery/v1/doQuery?alias=\"+param.alias+\"&page=1\":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.request({url: queryUrl,method: requestMethod,data:paramLoadData}).then(res => {\r\n        //判断是否有关联查询数据返回\r\n        if(res.data.rows.length>0){\r\n          //获取关联查询返回的表单参数\r\n          for(let i=0;i<param.resultfield.length;i++){\r\n            if(param.resultfield[i].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[i].comment]){\r\n                  val = val + res.data.rows[j][param.resultfield[i].comment]+\",\";\r\n                }\r\n              }\r\n              val = val.substring(0,val.length-1);\r\n              //赋值给绑定的字段\r\n              utils.setValueByPath(pInst, param.resultfield[i].fieldPath,val, null);\r\n            }\r\n          }\r\n        }else{\r\n          //获取关联查询返回的表单参数\r\n          for(let i=0;i<param.resultfield.length;i++){\r\n            if(param.resultfield[i].fieldPath!=\"\"){\r\n              //赋值给绑定的字段\r\n              utils.setValueByPath(pInst, param.resultfield[i].fieldPath,\"\", null);\r\n            }\r\n          }\r\n        }\r\n      });\r\n    },\r\n    handelInitGangedsearch: function() {\r\n      const _me = this;\r\n      let { subScopeEl } = hotentUtils.getSubScopeElAndIndex(_me.$el);\r\n      if (subScopeEl) {\r\n        this.curSubIndex = subScopeEl.dataset[\"index\"];\r\n      }\r\n      const ganged = this.ganged;\r\n      //判断是否有参数绑定\r\n      if (ganged && JSON.stringify(ganged.bind) != \"{}\" && this.config) {\r\n        const bind = ganged.bind;\r\n        const formVm = utils.getOnlineFormInstance(_me);\r\n        if (this.curSubIndex == null) {\r\n          for (var key in bind) {\r\n            const pInst = utils.getOnlineFormInstance(_me);\r\n            const val = utils.getValueByPath(pInst, bind[key]);\r\n            _me.search(false, val);\r\n          }\r\n        } else {\r\n          for (var key in bind) {\r\n            let subFiledName = bind[key].split(\".\")[3];\r\n            let paramDom = subScopeEl.querySelector(\r\n              '[model-name=\"item.' + subFiledName + '\"]'\r\n            );\r\n            if (paramDom && paramDom.__vue__ && paramDom.__vue__.value) {\r\n              let newVal = paramDom.__vue__.value + \"\";\r\n              _me.search(false, newVal);\r\n            }\r\n          }\r\n        }\r\n      }\r\n    },\r\n    clear() {\r\n      if (this.multiple) {\r\n        this.tempoptions = [];\r\n        this.$nextTick(function() {\r\n          this.$refs.treeselectElTree.setCheckedKeys([], true);\r\n        });\r\n      } else {\r\n        this.$refs.treeselectElTree.setCurrentNode({});\r\n      }\r\n    },\r\n    clickNative: function() {\r\n      //动态传入\r\n      if (this.ganged && this.ganged.alias && this.options.length < 1) {\r\n        this.$store\r\n          .dispatch(\"form/getByAliasCq\", this.ganged.alias)\r\n          .then(res => {\r\n            this.config = res;\r\n            this.search();\r\n          });\r\n      }\r\n    },\r\n    selectBlur: function(val) {\r\n      this.search();\r\n    },\r\n    handleCheckChange(data) {\r\n      if (this.multiple) {\r\n        let checkedNodes = this.$refs.treeselectElTree.getCheckedNodes();\r\n        let modelValue = [];\r\n        this.tempoptions = checkedNodes;\r\n        for (let data of checkedNodes) {\r\n          modelValue.push(data.key);\r\n        }\r\n        this.$emit(\"input\", modelValue.join(\",\"));\r\n      }\r\n    },\r\n    handleNodeClick(data) {\r\n      this.$refs.treeselectElTree.setChecked(data, true);\r\n      if (!this.multiple) {\r\n        this.$emit(\"input\", data.key);\r\n        if (data.key) {\r\n          //判断对话框是否绑定了关联查询\r\n          if(this.customQuery&&this.customQuery.custQueryJson&&this.customQuery.custQueryJson.length>0){\r\n            let custQueryJson = this.customQuery.custQueryJson;\r\n            for(let i=0;i<custQueryJson.length;i++){\r\n              if(custQueryJson[i].conditionfield.length>0){\r\n                this.doQuery(custQueryJson[i]);\r\n              }else{\r\n                console.error(\"[\"+custQueryJson[i].comment+\"]关联查询取值参数未绑定表单字段\");\r\n              }\r\n            }\r\n          }\r\n        }\r\n        this.$refs.treeselect.blur();\r\n        setTimeout(() => {\r\n          this.$validator.validate();\r\n        });\r\n      } else if (this.multiple) {\r\n        let checkedNodes = this.$refs.treeselectElTree.getCheckedNodes();\r\n        let modelValue = [];\r\n        this.tempoptions = checkedNodes;\r\n        for (let data of checkedNodes) {\r\n          modelValue.push(data.key);\r\n        }\r\n        this.$emit(\"input\", modelValue.join(\",\"));\r\n      }\r\n    },\r\n    filterNode(value, data) {\r\n      if (!value) return true;\r\n      return data.value.indexOf(value) !== -1;\r\n    },\r\n    filterMethod(query) {\r\n      this.$refs.treeselectElTree.filter(query);\r\n    },\r\n    remoteMethod: function(val) {\r\n      if (val) {\r\n        this.search(false, val);\r\n      } else {\r\n        this.param = \"\";\r\n        this.search();\r\n      }\r\n    },\r\n    handleCurrentChange: function(currentPage) {\r\n      this.currentPage = currentPage;\r\n      this.search(currentPage);\r\n    },\r\n    search(currentPage, param, gangedChange) {\r\n      this.options = [];\r\n      if (gangedChange) {\r\n        this.$emit(\"input\", \"\");\r\n      }\r\n      let objIsEmpty = this.objIsEmpty(this.ganged.bind);\r\n      if (\r\n        !this.config ||\r\n        (this.ganged.bind && !objIsEmpty && !param)\r\n      )\r\n        return;\r\n      var str = this.config;\r\n      const _this = this;\r\n      var ganged = this.ganged;\r\n      this.pageSize = str.pageSize;\r\n      // if(str.needPage === 1){\r\n      var pageBean = {\r\n        pageBean: {\r\n          page: currentPage ? currentPage : 1,\r\n          pageSize: str.pageSize,\r\n          showTotal: \"true\"\r\n        }\r\n      };\r\n      if (param) {\r\n        if (str.dsType == \"dataSource\") {\r\n          let Base64 = require(\"js-base64\").Base64;\r\n          str.currentPage = currentPage ? currentPage : 1;\r\n          if (JSON.stringify(ganged.bind) === \"{}\") {\r\n            str.queryData = Base64.encode(\r\n              JSON.stringify([{ key: ganged.valueBind, value: param }])\r\n            );\r\n          } else {\r\n            var queryData = [];\r\n            for (var key in ganged.bind) {\r\n              const pInst = utils.getOnlineFormInstance(_this);\r\n              const val = utils.getValueByPath(\r\n                pInst,\r\n                ganged.bind[key],\r\n                this.curSubIndex\r\n              );\r\n              if (val) {\r\n                queryData.push({ key: key, value: val });\r\n              } else {\r\n                queryData.push({ key: key, value: param });\r\n              }\r\n            }\r\n            str.queryData = Base64.encode(JSON.stringify(queryData));\r\n          }\r\n        } else {\r\n          var templatePa = this.config.dataParam;\r\n          if (this.config.requestType == \"POST\" && templatePa) {\r\n            var conditionfield = JSON.parse(str.conditionfield);\r\n            conditionfield.forEach(ele => {\r\n              const pInst = utils.getOnlineFormInstance(_this);\r\n              const val = utils.getValueByPath(pInst, ganged.bind[ele.field]);\r\n              if (val) {\r\n                templatePa = templatePa.replace(\r\n                  new RegExp(\"\\\\{\" + ele.field + \"\\\\}\", \"g\"),\r\n                  val\r\n                );\r\n              } else {\r\n                templatePa = templatePa.replace(\r\n                  new RegExp(\"\\\\{\" + ele.field + \"\\\\}\", \"g\"),\r\n                  param\r\n                );\r\n              }\r\n            });\r\n          } else {\r\n          }\r\n          str.pageBean = utils.parseToJson(templatePa);\r\n        }\r\n      } else {\r\n        str.pageBean = pageBean;\r\n        str.currentPage = currentPage ? currentPage : 1;\r\n        str.queryData = \"\";\r\n      }\r\n      //}\r\n      this.$store.dispatch(\"form/selectQuery\", str).then(res => {\r\n        if (this.config && this.config.dsType === \"restful\") {\r\n          _this.options = res.rows;\r\n          //tree数组转list\r\n          this.addSelectList(_this.options);\r\n          //处理只读回填显示\r\n          if (\r\n            _this.inputVal &&\r\n            _this.inputVal.constructor == Array &&\r\n            _this.inputVal.length > 0\r\n          ) {\r\n            for (let i = 0; i < _this.inputVal.length; i++) {\r\n              this.findDesc(_this.options, _this.inputVal[i]);\r\n            }\r\n            //默认选中树节点\r\n            if (this.inputWriteable) {\r\n              this.$refs.treeselectElTree.setCheckedKeys(_this.inputVal);\r\n            }\r\n          } else {\r\n            this.findDesc(_this.options, _this.inputVal);\r\n          }\r\n          if (this.valueDesc != \"\") {\r\n            this.valueDesc = this.valueDesc.substring(\r\n              0,\r\n              this.valueDesc.length - 1\r\n            );\r\n          }\r\n\r\n          return;\r\n        }\r\n        _this.total = res.total;\r\n        _this.options = [];\r\n        res.rows.forEach(m => {\r\n          var option = {};\r\n          if (_this.ganged.valueBind) {\r\n            option.key = m[ganged.valueBind] + \"\";\r\n          }\r\n          if (_this.ganged.labelBind) {\r\n            option.value = m[ganged.labelBind];\r\n          }\r\n          _this.options.push(option);\r\n        });\r\n\r\n        //tree数组转list\r\n        this.addSelectList(_this.options);\r\n        if (\r\n          _this.inputVal &&\r\n          _this.inputVal.constructor == Array &&\r\n          _this.inputVal.length > 0\r\n        ) {\r\n          for (let j = 0; j < _this.inputVal.length; j++) {\r\n            this.findDesc(_this.options, _this.inputVal[j]);\r\n          }\r\n          //默认选中树节点\r\n          this.$nextTick(()=>{\r\n            _this.$refs.treeselectElTree && _this.$refs.treeselectElTree.setCheckedKeys(_this.inputVal);\r\n          })\r\n        } else {\r\n          this.findDesc(_this.options, _this.inputVal);\r\n        }\r\n        if (this.valueDesc != \"\") {\r\n          this.valueDesc = this.valueDesc.substring(\r\n            0,\r\n            this.valueDesc.length - 1\r\n          );\r\n        }\r\n      });\r\n    },\r\n    findDesc(list, key) {\r\n      if (list && list.length > 0) {\r\n        for (let i = 0; i < list.length; i++) {\r\n          if (list[i].key == key) {\r\n            this.valueDesc += list[i].value + \",\";\r\n            return;\r\n          }\r\n          if (list[i].children) {\r\n            this.findDesc(list[i].children, key);\r\n          }\r\n        }\r\n      }\r\n    },\r\n    addSelectList(list) {\r\n      if (list && list.length > 0) {\r\n        list.forEach(l => {\r\n          this.tempoptions.push(l);\r\n          if (l.children) {\r\n            this.addSelectList(l.children);\r\n          }\r\n        });\r\n      }\r\n    }\r\n  }\r\n};\r\n",null]}