{"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\\portal\\AppCenter.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\portal\\AppCenter.vue","mtime":1675071993022},{"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//\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//\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\";\r\nimport uc from \"@/api/uc.js\";\r\nimport req from \"@/request.js\";\r\nconst iconDialog = () => import(\"@/components/dialog/IconDialog.vue\");\r\nconst sysAppMenu = () => import(\"@/components/portal/SysAppMenu.vue\");\r\nconst eipDataTemplateSelector = () => import(\"@/components/selector/EipDataTemplateSelector.vue\");\r\nconst eipChartSelector = () => import(\"@/components/selector/EipChartSelector.vue\");\r\nconst eipCustomViewSelector = () => import(\"@/components/selector/EipCustomViewSelector.vue\");\r\nconst eipFormSelector = () => import(\"@/components/selector/EipFormSelector.vue\");\r\nconst eipModuleSelector = () => import(\"@/components/selector/EipModuleSelector.vue\");\r\nconst eipFlowSelector = () => import(\"@/components/selector/EipFlowSelector.vue\");\r\nconst treeSelect = () => import(\"@riophae/vue-treeselect\");\r\nconst eipAuthDialog = () => import(\"@/components/dialog/EipAuthDialog.vue\");\r\nconst portalAppParam = () => import(\"@/views/portal/PortalAppParamManager.vue\")\r\nimport \"@riophae/vue-treeselect/dist/vue-treeselect.css\";\r\nimport { mapState } from \"vuex\";\r\nexport default {\r\n  name: \"app-center\",\r\n  components:{\r\n    iconDialog,\r\n    sysAppMenu,\r\n    eipDataTemplateSelector,\r\n    eipChartSelector,\r\n    eipCustomViewSelector,\r\n    eipFormSelector,\r\n    eipModuleSelector,\r\n    treeSelect,\r\n    eipFlowSelector,\r\n    eipAuthDialog,\r\n    portalAppParam\r\n  },\r\n  data() {\r\n    return {\r\n      apps: [],\r\n      pageResult: {\r\n        page: 1,\r\n        pageSize: 15,\r\n        total: 0\r\n      },\r\n      dialogVisible: false,\r\n      appModel:{\r\n        name: \"\",\r\n        icon: \"\",\r\n        iconType: 1,\r\n        iconColor: \"#1339E0\",\r\n        type: \"\",\r\n        content: \"\"\r\n      },\r\n      typeOptions:[\r\n        {key:1,value:'常规应用'},\r\n        {key:2,value:'表单列表'},\r\n        {key:3,value:'自定义视图'},\r\n        {key:4,value:'图表'},\r\n        {key:5,value:\"网页跳转\"},\r\n        {key:6,value:'表单'},\r\n        {key:7,value:'流程模块'},\r\n        {key:8,value:'流程'}\r\n      ],\r\n      selectId: \"\",\r\n      activeName: \"base\",\r\n      deleteUrl: window.context.portal + \"/portal/sysApp/v1/remove\",\r\n      templateData: {},\r\n      customQueryData: {},\r\n      formData:{},\r\n      moduleData: {},\r\n      image: \"\",\r\n      publishDialogVisible: false,\r\n      menu: {\r\n        id: \"\",\r\n        name: \"\"\r\n      },\r\n      menus: [],\r\n      selectedApp: {},\r\n      flowData: {},\r\n      searchForm: {\r\n        appName: \"\",\r\n        isPublish: false,\r\n        notPublish: false\r\n      },\r\n      selectIdList: [],\r\n      appTagList: [],\r\n      tagDialogVisible: false,\r\n      appTags: [],\r\n      importDialogVisible: false,\r\n      uploadUrl: window.context.portal + \"/portal/sysApp/v1/import\",\r\n      fullscreenLoading: false,\r\n    }\r\n  },\r\n  computed: mapState({\r\n    uploadHeaders: function(mapState) {\r\n      return { Authorization: \"Bearer \" + mapState.login.currentUser.token };\r\n    },\r\n  }),\r\n  created(){\r\n    this.loadData();\r\n  },\r\n  methods: {\r\n    loadData(query){\r\n      let loading = this.$loading({\r\n        target: document.querySelector(\".content\")\r\n      });\r\n      let param = {\r\n        pageBean: this.pageResult,\r\n        querys: [],\r\n        sorter:[{direction: 'ASC',property: 'sn_'}]\r\n      }\r\n      if (query) {\r\n        param.querys = query;\r\n      }\r\n      param.sorter = [{\r\n        property: \"UPDATE_TIME_\",\r\n        direction: \"DESC\"\r\n      }]\r\n      portal.getSysAppList(param).then(data => {\r\n        this.apps = data.rows;\r\n        this.pageResult = {\r\n          page: data.page,\r\n          pageSize: data.pageSize,\r\n          total: data.total\r\n        }\r\n      }).finally(() => {\r\n        loading.close();\r\n      })\r\n    },\r\n    loadMenus(){\r\n      portal.getCurrentMenuByAlias(\"app_menu\").then(data => {\r\n        if (data.state){\r\n          this.menus = data.value;\r\n          if(data.value && data.value.length > 0){\r\n            let defaultMenu = data.value.filter(item=>{\r\n              return item.alias === 'default';\r\n            })\r\n            if(defaultMenu && defaultMenu.length != 0){\r\n              this.menu.id = defaultMenu[0].id;\r\n            }else{\r\n              this.menu.id = data.value[0].id;\r\n            }\r\n          }\r\n          this.removeEmptyChildren(this.menus);\r\n        }\r\n      })\r\n    },\r\n    add(){\r\n      this.dialogVisible = false;\r\n      this.$nextTick(() => {\r\n        this.dialogVisible = true;\r\n      })\r\n      this.image = \"\";\r\n      this.appModel = {\r\n        name: \"\",\r\n        icon: \"\",\r\n        iconType: 1,\r\n        iconColor: \"#1339E0\",\r\n        type: \"\",\r\n        content: \"\"\r\n      }\r\n    },\r\n    publish(app){\r\n      this.publishDialogVisible = true;\r\n      this.loadMenus();\r\n      this.selectedApp = {...app};\r\n    },\r\n    unPublish(app){\r\n      app.isPublish = 0;\r\n      portal.publishApp(app).then(data => {\r\n        if (data.state){\r\n          this.$message({type: 'success', message: data.message});\r\n          this.loadData();\r\n        }\r\n      })\r\n    },\r\n    view(app) {\r\n      this.publishDialogVisible = true;\r\n      this.selectedApp = {...app};\r\n      this.loadMenus();\r\n      this.menu.id = this.selectedApp.menuId;\r\n    },\r\n    beforeClose(){\r\n      this.$set(this, \"templateData\" , {});\r\n      this.dialogVisible = false;\r\n      this.publishDialogVisible = false;\r\n      this.tagDialogVisible = false;\r\n      this.appTags = [];\r\n    },\r\n    selectIcon(icon){\r\n      this.image = \"\";\r\n      this.appModel.icon = icon;\r\n    },\r\n    modeChange(){\r\n      this.$set(this.appModel, \"content\", \"\");\r\n    },\r\n    afterSaveData(){\r\n      this.$set(this, \"templateData\" , {});\r\n      this.dialogVisible = false;\r\n      this.loadData();\r\n    },\r\n    beforeSaveData(){\r\n      if (this.appModel.type===2){\r\n        let data = {\r\n          id: this.templateData.id,\r\n          key: this.templateData.alias,\r\n          name: this.templateData.name\r\n        }\r\n        this.appModel.content = JSON.stringify(data);\r\n      }else if (this.appModel.type === 3){\r\n        let data = {\r\n          id: this.customQueryData.id,\r\n          alias: this.customQueryData.alias,\r\n          sqlAlias: this.customQueryData.sqlAlias,\r\n          name: this.customQueryData.name\r\n        }\r\n        this.appModel.content = JSON.stringify(data);\r\n      }else if (this.appModel.type===6){\r\n        let data = {\r\n          id: this.formData.id,\r\n          name: this.formData.name,\r\n          key: this.formData.formKey\r\n        }\r\n        this.appModel.content = JSON.stringify(data);\r\n      }else if (this.appModel.type===7){\r\n        let data = {\r\n          id: this.moduleData.id,\r\n          name: this.moduleData.name\r\n        }\r\n        this.appModel.content = JSON.stringify(data);\r\n      }else if (this.appModel.type===8){\r\n        let data = {\r\n          id: this.flowData.id,\r\n          name: this.flowData.name,\r\n          key: this.flowData.defKey\r\n        }\r\n        this.appModel.content = JSON.stringify(data);\r\n      }\r\n      if (this.image) {\r\n        this.appModel.icon = this.image;\r\n      }\r\n    },\r\n    afterDelete(){\r\n      this.loadData();\r\n    },\r\n    manage(id){\r\n      this.dialogVisible = true;\r\n      this.selectId = id;\r\n      portal.getSysApp(id).then(data => {\r\n        this.appModel = data;\r\n        this.image = \"\";\r\n        if (this.appModel.icon && this.appModel.icon.indexOf(\"icon\")<0){\r\n          this.image = this.appModel.icon;\r\n        }\r\n        if (this.appModel.type===2)\r\n          this.templateData = JSON.parse(this.appModel.content);\r\n        else if (this.appModel.type === 3){\r\n          this.customQueryData = JSON.parse(this.appModel.content);\r\n        }else if (this.appModel.type===6){\r\n          this.formData = JSON.parse(this.appModel.content);\r\n        }else if (this.appModel.type===8) {\r\n          this.flowData = JSON.parse(this.appModel.content);\r\n        }else if (this.appModel.type === 7) {\r\n          this.moduleData = JSON.parse(this.appModel.content);\r\n        }\r\n      })\r\n    },\r\n    confirm(id){\r\n      portal.deleteSysApp(id).then(data => {\r\n        if (data.state){\r\n          this.$message({type: 'success', message:data.message});\r\n        }\r\n        this.loadData();\r\n        this.selectIdList = [];\r\n      })\r\n    },\r\n    updateImage(param){\r\n      const formData = new FormData();\r\n      formData.append(\"files\", param.file);\r\n      uc.fileUpload(formData).then(response => {\r\n        this.$store.dispatch(\"menu/downloadImg\", response.fileId).then(res => {\r\n          if (res != \"\") {\r\n            this.image = res;\r\n            param.onSuccess();\r\n          }\r\n        }).catch(() => {\r\n          param.onError();\r\n        });\r\n      }).catch(() => {\r\n        param.onError();\r\n      });\r\n    },\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    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            this.removeEmptyChildren(m.children);\r\n          }\r\n        }\r\n      });\r\n    },\r\n    savePublish() {\r\n      if (!this.menu.id){\r\n        this.$message.warning(\"请选择应用菜单\");\r\n        return;\r\n      }\r\n      this.selectedApp.isPublish = 1;\r\n      this.selectedApp.menuId = this.menu.id;\r\n      portal.publishApp(this.selectedApp).then(data => {\r\n        if (data.state){\r\n          this.$message({type: 'success', message: data.message});\r\n          this.loadData();\r\n          this.publishDialogVisible = false;\r\n        }\r\n      })\r\n    },\r\n    auth(app){\r\n      let _this = this;\r\n      let id = \"\";\r\n      if (app){\r\n        this.selectId = app.id;\r\n        id = app.id;\r\n      } else {\r\n        if (this.selectIdList.length<=0) {\r\n          this.$message.warning(\"请选择需要设置的应用\");\r\n          return;\r\n        }else {\r\n          id = this.selectIdList[0];\r\n          this.selectId = \"\";\r\n        }\r\n      }\r\n      portal.getRights(id,\"app\").then(function(resp) {\r\n        if (resp.data) {\r\n          let conf = {\r\n            right: resp.data.right,\r\n            permissionList: resp.data.type,\r\n            autoClose: false\r\n          };\r\n          _this.$refs.appAuth.showDialog(conf);\r\n        }\r\n      });\r\n    },\r\n    batchSaveRights(data) {\r\n      let param = {\r\n        ids: this.selectIdList,\r\n        objType: \"app\",\r\n        ownerNameJson: JSON.stringify(data)\r\n      }\r\n      let _this = this;\r\n      this.$http.post(\"${portal}/sys/authUser/v1/batchSaveRights\", param).then(resp => {\r\n        _this.showResponse(resp);\r\n      })\r\n    },\r\n    saveRight(data) {\r\n      let param = {\r\n        id: this.selectId,\r\n        objType: \"app\",\r\n        ownerNameJson: JSON.stringify(data)\r\n      };\r\n      let _this = this;\r\n      this.$http.post(\"${portal}/sys/authUser/v1/saveRights\", param)\r\n              .then(resp => {\r\n                _this.showResponse(resp)\r\n              });\r\n    },\r\n    showResponse(resp) {\r\n      if (resp.data) {\r\n        if (resp.data.state) {\r\n          this.$message.success(\"授权成功\");\r\n          this.$refs.appAuth.closeDialog();\r\n        } else {\r\n          this.$message.error(resp.data.message);\r\n        }\r\n      }\r\n    },\r\n    authConfirm(data){\r\n      if (this.selectId) {\r\n        this.saveRight(data);\r\n      }else {\r\n        this.batchSaveRights(data);\r\n      }\r\n    },\r\n    currentChange(page) {\r\n      this.search(page);\r\n    },\r\n    search(page) {\r\n      let query = [];\r\n      if (this.searchForm.appName) {\r\n        query.push({\r\n          property: \"name\",\r\n          operation: \"LIKE\",\r\n          value: this.searchForm.appName,\r\n          relation: \"AND\",\r\n          group: \"a\"\r\n        })\r\n      }\r\n      if (this.searchForm.isPublish) {\r\n        query.push({\r\n          property: \"isPublish\",\r\n          operation: \"EQUAL\",\r\n          value: 1,\r\n          relation: \"OR\",\r\n          group: \"b\"\r\n        })\r\n      }\r\n      if (this.searchForm.notPublish) {\r\n        query.push({\r\n          property: \"isPublish\",\r\n          operation: \"EQUAL\",\r\n          value: 0,\r\n          relation: \"OR\",\r\n          group: \"b\"\r\n        })\r\n      }\r\n      this.pageResult.page = page;\r\n      this.loadData(query);\r\n    },\r\n    itemClick(item,$event) {\r\n      $event.preventDefault();\r\n      if (this.selectIdList.includes(item.id)) {\r\n        this.selectIdList.remove(item.id);\r\n        this.$set(item,\"checked\",false);\r\n      }else {\r\n        this.selectIdList.push(item.id);\r\n        this.$set(item,\"checked\",true);\r\n      }\r\n    },\r\n    tagSet(app){\r\n      this.selectId = app.id;\r\n      this.tagDialogVisible = true;\r\n      this.loadAppTagsType();\r\n      this.loadAppTags(app.id);\r\n    },\r\n    //加载旧数据\r\n    loadAppTags(appId){\r\n      req.get(window.context.portal + \"/portal/sysApp/v1/getAppTagsById/\"+appId).then(resp=>{\r\n        if(resp.data.state && resp.data.value && resp.data.value.length != 0 ){\r\n          this.appTags = [];\r\n          resp.data.value.forEach(item=>{\r\n            this.appTags.push(item.tagId);\r\n          })\r\n        }\r\n      })\r\n    },\r\n    //获取标签分类\r\n    loadAppTagsType(){\r\n      req.get(window.context.portal + \"/sys/sysType/v1/getTreeDateByTypeKey?typeKey=yybq\").then(resp=>{\r\n        this.appTagList = resp.data;\r\n        this.loadSysTag();\r\n      })\r\n    },\r\n    //加载标签到options\r\n    loadSysTag(){\r\n      this.appTagList.forEach(item=>{\r\n        let querys = [{property: \"type_id_\", value: item.id, group: \"main\", operation: \"EQUAL\", relation: \"AND\"}];\r\n        let filter = {querys:querys};\r\n        req.post(window.context.portal + \"/portal/sysTag/v1/query\",filter).then(resp=>{\r\n          item.children = resp.data.rows;\r\n        })\r\n      })\r\n    },\r\n    appTagSave(){\r\n      req.post(window.context.portal + \"/portal/sysApp/v1/saveAppTags/\"+this.selectId,this.appTags.join(\",\")).then(resp=>{\r\n        if(resp.data.state){\r\n          this.$message({type:\"success\",message:resp.data.message});\r\n          this.tagDialogVisible = false;\r\n        }\r\n      })\r\n    },\r\n    //跳转到标签配置页面\r\n    tagConfig(){\r\n      this.$router.push(\"/meta#sysTagManager\")\r\n    },\r\n    handleExport() {\r\n      if (this.selectIdList.length === 0) {\r\n        this.$message.warning(\"请选择至少一项记录\");\r\n        return;\r\n      }\r\n      let url = `${window.context.portal}/portal/sysApp/v1/exportXml?ids=${this.selectIdList}`;\r\n      req.download(url);\r\n    },\r\n    handleUploadResult(data) {\r\n      if (data.state) {\r\n        if (data.message.includes(\"已存在故跳过\")) {\r\n          this.$message({ type: \"warning\", message: data.message, showClose: true, duration: 5000, dangerouslyUseHTMLString: true });\r\n        } else {\r\n          this.$message({ type: \"success\", message: \"导入成功\" });\r\n        }\r\n      } else {\r\n        this.$message({ type: \"error\", message: data.message });\r\n      }\r\n      this.importDialogVisible = false;\r\n      this.fullscreenLoading = false;\r\n      this.search(1);\r\n    },\r\n    beforeUpload(file) {\r\n      if (!file.name.endsWith(\".zip\")) {\r\n        this.$message.warning(\"只能导入zip文件!\");\r\n        return false;\r\n      }\r\n      this.fullscreenLoading = true;\r\n    },\r\n    onExceed(file) {\r\n      this.$message.warning(\"只能选择一个zip文件!\");\r\n    },\r\n    uploadSubmit() {\r\n      if (\r\n        !this.$refs.upload.uploadFiles ||\r\n        this.$refs.upload.uploadFiles.length === 0\r\n      ) {\r\n        this.$message.warning(\"请选择要导入的应用!\");\r\n        return false;\r\n      }\r\n      this.$refs.upload.submit();\r\n    }\r\n  }\r\n};\r\n",null]}