{"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\\appCenter\\AppCenter.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\appCenter\\AppCenter.vue","mtime":1667327528887},{"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//\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//\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 appMain from \"@/components/appCenter/AppMain.vue\";\r\nimport { mapState } from \"vuex\";\r\nimport req from \"@/request.js\";\r\nexport default {\r\n  name: \"app-center\",\r\n  components: {\r\n    appMain,\r\n  },\r\n  data() {\r\n    return {\r\n      apps: [],\r\n      pageResult: {\r\n        page: 1,\r\n        pageSize: 24,\r\n        total: 0,\r\n      },\r\n      menus: [],\r\n      activeMenuIndex: \"\",\r\n      activeTab: \"\",\r\n      tabs: [],\r\n      tagTypes: [],\r\n      selectAllStatus: {},\r\n      tagMap: {},\r\n      tagStatus: {},\r\n      currentMenuId: \"\",\r\n      searchWord: \"\",\r\n      searchDialogVisible: false,\r\n      searchResultApps: [],\r\n    };\r\n  },\r\n  computed: mapState({\r\n    currentMenu: (state) => state.menu.currentMenu,\r\n  }),\r\n  mounted() {\r\n    portal.getSubMenus(\"app_menu\", (resp) => {\r\n      this.menus = resp.data.value;\r\n      this.selectFirstOne();\r\n    });\r\n    this.loadTags();\r\n  },\r\n  methods: {\r\n    //加载应用数据\r\n    loadData(menuId) {\r\n      let param = {\r\n        menuId: menuId,\r\n      };\r\n      portal.getSysAppList(param).then((data) => {\r\n        this.apps = data;\r\n        this.currentMenuId = menuId;\r\n      });\r\n    },\r\n    handleSelect(data) {\r\n      this.$set(this, \"tabs\", data.children);\r\n      if (this.tabs.length <= 0) {\r\n        this.loadData(data.id);\r\n        return;\r\n      }\r\n      this.loadData(this.tabs[0].id);\r\n      this.activeTab = this.tabs[0].id;\r\n    },\r\n    tabClick(tab) {\r\n      this.loadData(tab.name);\r\n    },\r\n    getFirstMenu(menus, index) {\r\n      if (menus[0].children && menus[0].children.length > 0 && index < 2) {\r\n        index++;\r\n        return this.getFirstMenu(menus[0].children);\r\n      } else {\r\n        return menus[0];\r\n      }\r\n    },\r\n    getFirstValidMenu(menus, menuIds) {\r\n      if (menus) {\r\n        for (let i = 0; i < menus.length; i++) {\r\n          if (menuIds.includes(menus[i].id) && menus[i].path.split(\".\").length > 4) {\r\n            return menus[i];\r\n          }\r\n        }\r\n        for (let j = 0; j < menus.length; j++) {\r\n          let menu = this.getFirstValidMenu(menus[j].children, menuIds);\r\n          if(menu){\r\n            return menu;\r\n          }\r\n        }\r\n      }\r\n    },\r\n    selectFirstOne() {\r\n      //获取有存在应用的菜单\r\n      req.get(\"${portal}/portal/sysApp/v1/validMenu\").then((resp) => {\r\n        if (resp && resp.data && resp.data.length > 0) {\r\n          let menu = this.getFirstValidMenu(this.menus, resp.data);\r\n          if(!menu){\r\n            menu = this.getFirstMenu(this.menus,1);\r\n          }\r\n          this.activeMenuIndex = menu.id;\r\n          this.handleSelect(menu);\r\n        } else {\r\n          if (this.menus && this.menus.length > 0) {\r\n            let menu = this.getFirstMenu(this.menus, 1);\r\n            this.activeMenuIndex = menu.id;\r\n            this.handleSelect(menu);\r\n          }\r\n        }\r\n      });\r\n    },\r\n    //加载标签\r\n    loadTags() {\r\n      portal.getAppTagTypes().then((resp) => {\r\n        this.tagTypes = resp.data;\r\n        resp.data.forEach((item) => {\r\n          this.selectAllStatus[item.id] = false;\r\n          this.tagMap[item.id] = [];\r\n          let querys = [\r\n            {\r\n              property: \"type_id_\",\r\n              value: item.id,\r\n              group: \"main\",\r\n              operation: \"EQUAL\",\r\n              relation: \"AND\",\r\n            },\r\n          ];\r\n          let filter = { querys: querys };\r\n          req\r\n            .post(window.context.portal + \"/portal/sysTag/v1/query\", filter)\r\n            .then((resp) => {\r\n              this.tagMap[item.id] = resp.data.rows;\r\n              resp.data.rows.forEach((tag) => {\r\n                this.tagStatus[tag.id] = false;\r\n              });\r\n              this.$forceUpdate();\r\n            });\r\n        });\r\n      });\r\n    },\r\n    selectAll(typeId) {\r\n      this.selectAllStatus[typeId] = !this.selectAllStatus[typeId];\r\n      let tags = this.tagMap[typeId];\r\n      let allToSelect = false; //全选\r\n      for (let i = 0; i < tags.length; i++) {\r\n        if (this.tagStatus[tags[i].id] != true) {\r\n          allToSelect = true;\r\n        }\r\n      }\r\n      if (allToSelect) {\r\n        //全选\r\n        for (let i = 0; i < tags.length; i++) {\r\n          this.tagStatus[tags[i].id] = true;\r\n        }\r\n      } else {\r\n        //全不选\r\n        for (let i = 0; i < tags.length; i++) {\r\n          this.tagStatus[tags[i].id] = false;\r\n        }\r\n      }\r\n      this.reloadData();\r\n      this.$forceUpdate();\r\n    },\r\n    tagClick(tagId, typeId) {\r\n      this.tagStatus[tagId] = !this.tagStatus[tagId];\r\n      //全部选中时，设置全选按钮\r\n      let tags = this.tagMap[typeId];\r\n      let isSelectAll = true;\r\n      for (let i = 0; i < tags.length; i++) {\r\n        if (!this.tagStatus[tags[i].id]) {\r\n          isSelectAll = false;\r\n          break;\r\n        }\r\n      }\r\n      this.selectAllStatus[typeId] = isSelectAll;\r\n      this.reloadData();\r\n      this.$forceUpdate();\r\n    },\r\n    ////重新加载数据\r\n    reloadData() {\r\n      let param = [];\r\n      this.tagTypes.forEach((type) => {\r\n        let selectTagIds = [];\r\n        let tagList = this.tagMap[type.id];\r\n        for (let i = 0; i < tagList.length; i++) {\r\n          if (this.tagStatus[tagList[i].id]) {\r\n            selectTagIds.push(tagList[i].id);\r\n          }\r\n        }\r\n        //querys.push({properties:\"TAG_ID_\",value:selectTagIds.join(\",\"),group:group,operation:\"IN\",relation:\"AND\"});\r\n        if (selectTagIds.length != 0) {\r\n          param.push({ typeId: type.id, tagIds: selectTagIds.join(\",\") });\r\n        }\r\n      });\r\n      req\r\n        .post(\r\n          \"${portal}/portal/sysApp/v1/queryByTagIds/\" + this.currentMenuId,\r\n          param\r\n        )\r\n        .then((resp) => {\r\n          this.apps = resp.data;\r\n          this.searchWord = \"\";\r\n          this.$forceUpdate();\r\n        });\r\n    },\r\n    search() {\r\n      if(!this.searchWord){\r\n        this.$message({type:\"warning\",message:\"请输入关键词\"})\r\n        return ;\r\n      }\r\n      let querys = [\r\n        {\r\n          property: \"name\",\r\n          value: this.searchWord,\r\n          group: \"search\",\r\n          operation: \"LIKE\",\r\n          relation: \"AND\",\r\n        },\r\n      ];\r\n      let queryFilter = { querys };\r\n      this.$loading();\r\n      req.post(\"${portal}/portal/sysApp/v1/queryByFilter\", queryFilter).then((resp) => {\r\n        this.apps.splice(0);\r\n        Object.keys(this.selectAllStatus).forEach(key=>{\r\n          this.$set(this.selectAllStatus,key,false);\r\n        })\r\n        Object.keys(this.tagStatus).forEach(key=>{\r\n          this.$set(this.tagStatus,key,false);\r\n        })\r\n        if (resp.data && resp.data.length > 0) {\r\n          resp.data.forEach((item) => {\r\n            this.apps.push(item);\r\n          });\r\n          //this.searchDialogVisible = true;\r\n        } else {\r\n          this.$message({ type: \"warning\", message: \"未查询到结果\" });\r\n        }\r\n        this.$loading().close();\r\n      });\r\n    },\r\n    searchDialogClose() {\r\n      this.searchResultApps.splice(0);\r\n    },\r\n  },\r\n};\r\n",null]}