{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\customView\\MenusAdd.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\customView\\MenusAdd.vue","mtime":1675071992131},{"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//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 form from \"@/api/form.js\";\r\nimport portal from \"@/api/portal.js\";\r\nimport { mapState } from \"vuex\";\r\nimport Treeselect from \"@riophae/vue-treeselect\";\r\nimport \"@riophae/vue-treeselect/dist/vue-treeselect.css\";\r\nexport default {\r\n  name: \"template-add-to-menu\",\r\n  props: [\"alias\", \"sqlAlias\"],\r\n  type: \"\",\r\n  components: { Treeselect },\r\n  data() {\r\n    return {\r\n      menu: {},\r\n      type: \"\",\r\n      manageAliasPre: \"templateMenu/\",\r\n      frontAliasPre: \"querySql/queryView/\",\r\n      menuTreeData: [],\r\n      dialogVisible: false,\r\n      normalizer(node) {\r\n        return {\r\n          id: node.id,\r\n          label: node.name,\r\n          children: node.children,\r\n          isDefaultExpanded: false\r\n        };\r\n      },\r\n      from: \"\"\r\n    };\r\n  },\r\n  computed: {\r\n    ...mapState({\r\n      currentUser: state => state.login.currentUser\r\n    })\r\n  },\r\n  watch: {\r\n    type: {\r\n      handler(newVal, oldVal) {\r\n        if (newVal != oldVal) {\r\n          this.getMenuDataByType();\r\n        }\r\n      }\r\n    }\r\n  },\r\n  methods: {\r\n    onConfirm(selection) {\r\n      if (!this.menu.parentAlias) {\r\n        this.$message.error(\"请选择父节点！\");\r\n        return;\r\n      }\r\n      const this_ = this;\r\n      this_.$validator.validateAll(\"TemplateMenuForm\").then(result => {\r\n        if (result) {\r\n          let menu = { ...this_.menu };\r\n          delete menu.parentMenuName;\r\n          portal.saveDataTemplateToMenu(menu).then(rep => {\r\n            if (rep.state) {\r\n              this_.dialogVisible = false;\r\n              this.$message.success(rep.message);\r\n            }\r\n          });\r\n        } else {\r\n          let arr = this_.$validator.errors.items.filter(\r\n            item => item.scope == \"TemplateMenuForm\"\r\n          );\r\n          let errorLength = arr.length;\r\n          this_.$message({\r\n            showClose: true,\r\n            message: `有${errorLength}个字段未通过校验，请正确填写表单内容。`,\r\n            type: \"warning\"\r\n          });\r\n        }\r\n      });\r\n    },\r\n    handleClose() {\r\n      this.dialogVisible = false;\r\n    },\r\n    getMenuDataByType() {\r\n      let menuAlias = this.type == \"front\" ? \"front_menu\" : \"manage_menu\";\r\n      portal.getCurrentMenuByAlias(menuAlias).then(rep => {\r\n        if (rep.state && rep.value.length > 0) {\r\n          let menus = rep.value;\r\n          this.removeEmptyChildren(menus);\r\n          if(this.type != \"front\"){\r\n            //添加为后端菜单时如果二级菜单不是URL菜单则自定义视图生成的菜单不能添加到这个菜单下面 \r\n            //如：设计中心->业务表单  设计中心下的业务表单菜单是下级菜单不是URL菜单则自定义视图生成的菜单不能添加到这个菜单下面 \r\n            for(let i =0;i<menus.length;i++){\r\n              if(menus[i].children){\r\n                for(let j=menus[i].children.length-1;j>=0;j--){\r\n                  if(menus[i].children[j].alias.indexOf(\"href/template\")==-1){\r\n                    menus[i].children.splice(j,1);\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }\r\n          this.menuTreeData = menus;\r\n        }\r\n      });\r\n    },\r\n    removeEmptyChildren(menus) {\r\n      menus.forEach(m => {\r\n        if (m.children) {\r\n          if (m.children.length < 1) {\r\n            delete m.children;\r\n          } else {\r\n            //不允许选择4级菜单\r\n            if(m.path.split(\".\").length==6){\r\n              delete m.children;\r\n            }else{\r\n              this.removeEmptyChildren(m.children);\r\n            }\r\n          }\r\n        }\r\n      });\r\n    },\r\n    handleNodeClick(node) {\r\n      let menuAlias = \"\";\r\n      if (this.type == \"manage\") {\r\n        //后台菜单别名\r\n        const key =\r\n          Date.parse(new Date()) + \"_\" + Math.ceil(Math.random() * 99999);\r\n        menuAlias = \"href/template/\" + key;\r\n        //后台外部菜单URL地址\r\n        this.menu.href =\r\n          window.context.front +\r\n          \"/statement/querySql/queryView/\" +\r\n          this.sqlAlias +\r\n          \"/\" +\r\n          this.alias +\r\n          \"/true\";\r\n      } else {\r\n        //前端菜单别名\r\n        menuAlias = this.frontAliasPre;\r\n        menuAlias += this.sqlAlias + \"/\" + this.alias;\r\n      }\r\n\r\n      let this_ = this;\r\n      portal.isMenuExist(this.menu.alias).then(rep => {\r\n        if (rep.state) {\r\n          this_.menu.menuId = node.id;\r\n          if (rep.value) {\r\n            this_.$message.error(\"菜单别名：\" + menuAlias + \"已存在！\");\r\n            this_.menu.alias = \"\";\r\n            this_.$forceUpdate();\r\n          } else {\r\n            this_.menu.alias = menuAlias;\r\n            this_.menu.parentAlias = node.alias;\r\n            this_.$forceUpdate();\r\n          }\r\n        } else {\r\n          this_.$message.error(\"菜单别名校验失败！\");\r\n        }\r\n      });\r\n    },\r\n    //显示对话框\r\n    showDialog(type, from) {\r\n      this.menu = {};\r\n      this.type = type;\r\n      if (from && type == \"front\") {\r\n        this.from = from;\r\n      } else if (from && type == \"manage\") {\r\n        this.from = \"addManageReport\";\r\n      }\r\n      this.dialogVisible = true;\r\n    }\r\n  }\r\n};\r\n",null]}