{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\form\\customDialog\\EipTreeDialog.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\form\\customDialog\\EipTreeDialog.vue","mtime":1675071992960},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport { Message } from 'element-ui';\r\nimport req from \"@/request.js\";\r\nexport default {\r\n  name: \"eip-tree-dialog\",\r\n  props: {\r\n    //自定义对话框的别名\r\n    alias: {\r\n      type: String,\r\n      required: true\r\n    },\r\n    //自定义对话框的配置\r\n    customDialog: {\r\n      type: Object,\r\n      required: true\r\n    },\r\n    //动态传入的条件参数\r\n    mapParam:{\r\n      type: Object,\r\n    },\r\n    ispreview: {\r\n      type: Boolean,\r\n      required: false,\r\n      default: true\r\n    },\r\n  },\r\n  data() {\r\n    return {\r\n      nodeKey:\"ID_\",//树数据Id （每个树节点用来作为唯一标识的属性，整棵树应该是唯一的）\r\n      showCheckbox:true,//对话框单选还是多选 true：多选，false：单选\r\n      treeData: [], //树数据\r\n      defaultProps: {\r\n        children: \"children\",\r\n        label: \"name\",\r\n        isLeaf:\"isLeaf\"\r\n      },\r\n      displayField: {},\r\n      treeList: []\r\n    }\r\n  },\r\n  methods: {\r\n    //显示对话框\r\n    showDialog(){\r\n      this.$refs.htTreeDialog.showDialog();\r\n      //判断树是否支持多选\r\n      if (this.customDialog.selectNum == 1) {// 单选\r\n          this.showCheckbox=false;\r\n      }else{\r\n          this.showCheckbox=true;\r\n      }\r\n      //把对话框配置的显示字段ID赋值给树形的树数据Id\r\n      this.nodeKey = this.customDialog.displayfield.id;\r\n      this.customDialogTreeShow();//加载树\r\n    },\r\n    //加载树\r\n    customDialogTreeShow() {\r\n      //得到对话框的配置\r\n      let customDialog = this.customDialog;\r\n      let mapParam = '';//数据来源是数据源，且有动态参数传入时调用\r\n      let defaultPValue = \"\";//父ID值\r\n      //判断是否有动态传入的条件参数\r\n      if(this.mapParam && JSON.stringify(this.mapParam)!=\"{}\"){\r\n        for(let m in this.mapParam){\r\n          defaultPValue = this.mapParam[m];\r\n          break;\r\n        }\r\n        mapParam = JSON.stringify(this.mapParam);\r\n        mapParam = mapParam.substring(1, mapParam.length - 1);\r\n      }\r\n      //判断数据来源是否是数据源，如果是数据源请求类型就为GET请求；如果数据来源是REST接口，请求类型就获取对话框配置的请求；\r\n      let requestType = customDialog.dsType == \"dataSource\" ? \"GET\":customDialog.requestType ? customDialog.requestType:\"POST\";\r\n      //数据来源是数据源的URL\r\n      let url = \"${form}/form/customDialog/v1/getTreeData?alias=\" + this.alias +\"&mapParam=\" + mapParam;\r\n      let paramsObj = {};\r\n      //数据来源是REST接口\r\n      if (customDialog.dsType != \"dataSource\") {\r\n        url = customDialog.url;\r\n        //判断是否有条件字段\r\n        if (customDialog.conditionfield.length>0) {\r\n          let conditions = customDialog.conditionfield;//条件字段\r\n          for (let i = 0; i < conditions.length; i++) {\r\n            let con = conditions[i];\r\n            //判断是否是POST请求\r\n            if (requestType == \"POST\") {\r\n                paramsObj[con.field] = con.defaultValue;\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        }\r\n      }\r\n      let requestParams = {};\r\n      requestParams.requestType = requestType;\r\n      requestParams.url = url;\r\n      requestParams.paramsObj = paramsObj;\r\n      this.searchTree(requestParams,defaultPValue);\r\n    },\r\n    //树形查询\r\n    searchTree(requestParams,defaultPValue) {\r\n      const this_=this;\r\n      let query = requestParams.requestType == 'POST'?req.post(requestParams.url,requestParams.paramsObj):req.get(requestParams.url);\r\n      query.then(function (response) {\r\n        //显示字段配置\r\n        let displayfield = 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        if(defaultPValue){\r\n          displayfield.pvalue = defaultPValue;\r\n        }\r\n        this_.treeData = this_.toTreeData(response.data,displayfield.id,displayfield.pid,displayfield.displayName, displayfield.pvalue ? displayfield.pvalue : 0);\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(value => value[id] == value[pid] || value[pid] == null || value[pid] == pvalue);\r\n        if (!parents){\r\n            parents = data.filter(value => value[pid] !== 'undefined' && value[pid] != null && value[id] != value[pid]);\r\n        }\r\n        return parents\r\n    },\r\n    //树节点 点击事件\r\n    loadTree(node, resolve){\r\n        if (node){\r\n            resolve(this.treeList.filter(value => value[this.displayField.pid] === node.data[this.displayField.id]));\r\n        }else {\r\n            resolve([])\r\n        }\r\n    },\r\n    //确认事件\r\n    treeDialogOnConfirm(data){\r\n      //单选\r\n      if(this.customDialog.selectNum === 1 && (data.constructor === Object && JSON.stringify(data)==\"{}\")){\r\n        Message.error(\"请至少选择一条数据\");\r\n        return;\r\n      }else if(this.customDialog.selectNum === 1 && (data.constructor === Array && data.length>0)){//多选\r\n        Message.error(\"请至少选择一条数据\");\r\n        return;\r\n      }\r\n      //拿到配置的返回字段\r\n      let returnStr = this.customDialog.resultfield;\r\n      //返回字段的字段名有多少个\r\n      let field = new Array([returnStr.length]);\r\n      //返回字段的返回名称有多少个\r\n      let comment = new Array([returnStr.length]);\r\n      let str = [];\r\n      for (let i = 0; i < returnStr.length; i++) {\r\n        //得到返回字段的字段名\r\n        field[i] = this.customDialog.dsType=='dataSource'?returnStr[i].field:returnStr[i].field;\r\n        //得到返回字段的返回名称\r\n        comment[i] = this.customDialog.dsType=='dataSource'?returnStr[i].comment:returnStr[i].comment;\r\n      }\r\n      let s = [];\r\n      //是否单选  1：单选；-1：多选\r\n      if(this.customDialog.selectNum === 1){\r\n        s.push(data);\r\n        this.deleteChildren(s);//循环把树数组里面的子节点数据删除\r\n        let temp = \"\";\r\n        for (let i = 0; i < comment.length; i++) {\r\n            temp += '\"' + comment[i] + '\":\"' + s[0][field[i]] + '\",';\r\n        }\r\n        //去除字符串最后一个字符逗号\r\n        if (temp != \"\") {\r\n            temp = \"{\" + temp.substring(0, temp.length - 1) + \"}\";\r\n        }\r\n        str.push(JSON.parse(temp));\r\n      } else {\r\n        s = data;\r\n        this.deleteChildren(s);//循环把树数组里面的子节点数据删除\r\n        for (let i = 0; i < s.length; i++) {\r\n            var temp = \"\";\r\n            for (let j = 0; j < comment.length; j++) {\r\n                temp += '\"' + comment[j] + '\":\"' + s[i][field[j]] + '\",';\r\n            }\r\n            //去除字符串最后一个字符逗号\r\n            if (temp != \"\") {\r\n                temp = \"{\" + temp.substring(0, temp.length - 1) + \"}\";\r\n            }\r\n            str.push(JSON.parse(temp));\r\n        }\r\n      }\r\n      if (this.ispreview) {\r\n         Message.success(\"返回数据为：\"+JSON.stringify(str));\r\n      }\r\n      this.$emit(\"return-all-data\", s);\r\n      this.$emit('onConfirm',str);\r\n      this.$refs.htTreeDialog.handleClose();//关闭对话框\r\n    },\r\n    //循环把树数组里面的子节点数据删除\r\n    deleteChildren(arrayVal){\r\n      for(let i=0;i<arrayVal.length;i++){\r\n        delete arrayVal[i].children;\r\n      }\r\n    }\r\n  }\r\n}\r\n",null]}