{"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\\EipSelect.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\eipControl\\EipSelect.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\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\n\r\nexport default {\r\n  name: \"eip-select\",\r\n  props: [\r\n    \"validate\",\r\n    \"value\",\r\n    \"name\",\r\n    \"permission\",\r\n    \"multiple\",\r\n    \"selectlist\",\r\n    \"linkage\",\r\n    \"ganged\",\r\n    \"filterable\",\r\n    \"allowCreate\",\r\n    \"placeholder\",\r\n    \"customQuery\",\r\n    \"relatedQuery\"\r\n  ],\r\n  mixins: [sub_pio_mixin],//混入方式引入表单组件中公共属性，处理子表、孙表行内联动（切面修改permission_sub）\r\n  data() {\r\n    return {\r\n      options: [],\r\n      newValidate: null\r\n    };\r\n  },\r\n  computed: {\r\n    inputVal: {\r\n      get: function() {\r\n        if (this.value || this.value === 0) {\r\n          this.relatedQueryLoad();// 触发绑定的关联查询\r\n          return this.value + \"\";\r\n        }\r\n        return this.value;\r\n      },\r\n      set: function(val) {\r\n        this.$emit(\"input\", val);\r\n        if(val!=\"\"){\r\n          this.relatedQueryLoad();// 触发绑定的关联查询\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    watchParent: function() {\r\n      var param = false;\r\n      if (this.ganged && this.ganged.bind && JSON.stringify(this.ganged.bind) !=\"{}\") {\r\n        // 获取当前控件是否在子表某行中\r\n        let { index } = hotentUtils.getSubScopeElAndIndex(this.$el);\r\n        param={};\r\n        param.pid = this.ganged.bind;\r\n        param.thisVal = this.$attrs[\"model-name\"];\r\n        param.index = index;\r\n      }\r\n      return param;\r\n    }\r\n  },\r\n  mounted() {\r\n    this.loadOption(true);\r\n  },\r\n  created() {\r\n    // 动态选项所绑定的关联查询返回了查询结果\r\n    this.$on(\"dynamic-options:update\", this.dynamicOptionResponse);\r\n    this.$validator = this.$root.$validator;\r\n  },\r\n  methods: {\r\n    selectBlur: function() {\r\n      this.$emit(\"blur\");\r\n    },\r\n    selectFocus: function() {\r\n      this.loadOption();\r\n      this.$emit(\"focus\");\r\n    },\r\n    //加载选项\r\n    loadOption: function(isMounted) {\r\n      // 动态选项\r\n      if (this.ganged && this.ganged.alias) {\r\n        // 如果是初始化，且该动态选项配置了初始化不加载数据，则跳过动态选项的加载\r\n        if (isMounted && this.ganged.noInit && this.ganged.noInit == \"true\") {\r\n          return;\r\n        }\r\n        this.dynamicLoadOption();\r\n      } else {\r\n        // 静态选项\r\n        this.options = [...this.selectlist] || [];\r\n      }\r\n    },\r\n    // 准备查询参数\r\n    prepareLoadParams: function(condition) {\r\n      let params = {};\r\n      if (condition && !hotentUtils.isEmpty(condition)) {\r\n        // 获取当前控件是否在子表某行中\r\n        let { index } = hotentUtils.getSubScopeElAndIndex(this.$el);\r\n\r\n        //const pInst = utils.getOnlineFormInstance(this);\r\n        let formElementAry = document.getElementsByName(\"online-form\");\r\n        //dom 树还未加载完,没获取到\r\n        if(formElementAry.length==0){\r\n          //判断是否在业务数据模板中\r\n          const dataviewInst = utils.getInstanceByTag(this,'ht-dataview-runtime-template');\r\n          if(dataviewInst.length==0){\r\n            return ;\r\n          }else if(dataviewInst.searchForm){\r\n               Object.keys(condition).forEach(k => {\r\n                  let val = null;\r\n                  Object.keys(dataviewInst.searchForm).forEach(s => {\r\n                  // 主表\r\n                  if (s==condition[k]) {\r\n                    val = dataviewInst.searchForm[s];\r\n                  }\r\n                  if (!hotentUtils.isEmpty(val)) {\r\n                    params[k] = val;\r\n                  }\r\n                });\r\n              });\r\n              return params;\r\n          }else{\r\n            return ;\r\n          }\r\n        }\r\n        const pInst =formElementAry[0].__vue__;\r\n        Object.keys(condition).forEach(k => {\r\n          let val = null;\r\n          // 主表\r\n          if (index == null) {\r\n            val = utils.getValueByPath(pInst, condition[k]);\r\n          }\r\n          // 子表\r\n          else {\r\n            val = utils.getValueByPath(pInst, condition[k], index);\r\n          }\r\n          if (!hotentUtils.isEmpty(val)) {\r\n            params[k] = val;\r\n          }\r\n        });\r\n      }\r\n      return params;\r\n    },\r\n    // 动态加载选项\r\n    dynamicLoadOption: function() {\r\n      const params = this.prepareLoadParams(this.ganged.bind);\r\n      this.$emit(\"dynamic-options:load\", this.ganged.alias, params);\r\n    },\r\n    // 动态加载选项返回值处理\r\n    dynamicOptionResponse: function(alias, data) {\r\n      if (\r\n        this.ganged &&\r\n        this.ganged.alias == alias &&\r\n        this.ganged.valueBind &&\r\n        this.ganged.labelBind\r\n      ) {\r\n        this.options = [];\r\n        if (data && data.constructor == Array && data.length > 0) {\r\n          data.forEach(d => {\r\n            this.options.push({\r\n              key: d[this.ganged.valueBind] + \"\",\r\n              value: d[this.ganged.labelBind] + \"\"\r\n            });\r\n          });\r\n        }\r\n      } else if (\r\n        this.ganged &&\r\n        this.ganged.alias &&\r\n        (!this.ganged.valueBind || !this.ganged.labelBind)\r\n      ) {\r\n        let name = this.inputName;\r\n        this.$message.error(\r\n          `下拉框【${name.split(\"-\")[1]}】配置了动态选项，但是没有正确的配置选项绑定关系。`\r\n        );\r\n      }\r\n    },\r\n    // 触发绑定的关联查询\r\n    relatedQueryLoad: function() {\r\n      if (\r\n        this.relatedQuery &&\r\n        this.relatedQuery.constructor == Array &&\r\n        this.relatedQuery.length > 0\r\n      ) {\r\n        // 遍历所有的关联查询，逐个触发\r\n        this.relatedQuery.forEach(q => {\r\n          const params = this.prepareLoadParams(q.condition);\r\n          this.$emit(\"related-query:load\", q.alias, params, q.result);\r\n        });\r\n      }\r\n    }\r\n  }\r\n};\r\n",null]}