{"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\\system\\generator\\sysModuleAddMenus.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\system\\generator\\sysModuleAddMenus.vue","mtime":1675071993225},{"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\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\",\"moduleName\"],\r\n  components: { Treeselect },\r\n  data() {\r\n    return {\r\n      id: \"\",\r\n      menu: {},\r\n      type: \"manage\",\r\n      manageAliasPre: \"templateMenu/\",\r\n      frontAliasPre: \"template/preview/\",\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      sysModule: {}\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) {\r\n          return;\r\n        }\r\n        if (newVal != oldVal) {\r\n          this.getMenuDataByType();\r\n        }\r\n      }\r\n    }\r\n  },\r\n  created() {\r\n    this.$validator = this.$root.$validator;\r\n  },\r\n  methods: {\r\n    onConfirm() {\r\n      if (!this.menu.parentAlias && this.type!=='app') {\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          if (this.type==='app'){\r\n            let contentStr = JSON.stringify({id: this.sysModule.id, name: this.sysModule.name});\r\n            let app = {\r\n              name: this_.menu.name,\r\n              type: 7,\r\n              sn: 0,\r\n              content: contentStr,\r\n              icon: 'icon-hotent-H',\r\n              iconColor: \"\"\r\n            }\r\n            portal.saveApp(app).then(data => {\r\n              if (data.state){\r\n                this_.$emit(\"close-dialog\");\r\n                this_.dialogVisible = false;\r\n                this.$message.success(data.message);\r\n              }\r\n            });\r\n          }else{\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_.$emit(\"close-dialog\");\r\n                this_.dialogVisible = false;\r\n                this.$message.success(rep.message);\r\n              }\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.filter(item => {\r\n            if (item.alias !== 'appCenterFront') {\r\n              return true;\r\n            }\r\n            return false;\r\n          });\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      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 = window.context.front + \"/sysModulePreview/\" + this.id+ \"/\" + this.moduleName;\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    showDialog(id) {\r\n      this.menu={};\r\n      this.id = id;\r\n      portal.getSysModuleById(id).then(data => {\r\n        this.sysModule = data;\r\n      });\r\n      this.getMenuDataByType();\r\n      this.dialogVisible = true;\r\n    },\r\n    change(data){\r\n      this.$set(this.menu,\"href\",window.context.front + \"/sysModulePreview/\" + this.id)\r\n    }\r\n  }\r\n};\r\n",null]}