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