{"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