diff --git a/api/src/main/resources/static/css/206.6b48a93a.css b/api/src/main/resources/static/css/314.6b48a93a.css similarity index 100% rename from api/src/main/resources/static/css/206.6b48a93a.css rename to api/src/main/resources/static/css/314.6b48a93a.css diff --git a/api/src/main/resources/static/index.html b/api/src/main/resources/static/index.html index 55f8a22..a373e6c 100644 --- a/api/src/main/resources/static/index.html +++ b/api/src/main/resources/static/index.html @@ -1 +1 @@ -<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>databasir</title><script defer="defer" type="module" src="/js/chunk-vendors.4f3fe369.js"></script><script defer="defer" type="module" src="/js/app.7ac511a9.js"></script><link href="/css/chunk-vendors.81898547.css" rel="stylesheet"><link href="/css/app.ee11d130.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors-legacy.572a3b83.js" nomodule></script><script defer="defer" src="/js/app-legacy.94b013ac.js" nomodule></script></head><body><noscript><strong>We're sorry but databasir doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> \ No newline at end of file +<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>databasir</title><script defer="defer" type="module" src="/js/chunk-vendors.4f3fe369.js"></script><script defer="defer" type="module" src="/js/app.3b9845e4.js"></script><link href="/css/chunk-vendors.81898547.css" rel="stylesheet"><link href="/css/app.ee11d130.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors-legacy.572a3b83.js" nomodule></script><script defer="defer" src="/js/app-legacy.d2b56939.js" nomodule></script></head><body><noscript><strong>We're sorry but databasir doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> \ No newline at end of file diff --git a/api/src/main/resources/static/js/206-legacy.8d16f9c5.js.map b/api/src/main/resources/static/js/206-legacy.8d16f9c5.js.map deleted file mode 100644 index 9b4deae..0000000 --- a/api/src/main/resources/static/js/206-legacy.8d16f9c5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/206-legacy.8d16f9c5.js","mappings":"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","sources":["webpack://databasir/./node_modules/core-js/modules/es.array.slice.js","webpack://databasir/./src/views/GroupList.vue","webpack://databasir/./src/views/GroupList.vue?d658"],"sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","<template>\r\n <el-tabs v-model=\"activeTab\" @tab-click=\"onTabClick\">\r\n <el-tab-pane label=\"项目分组\" name=\"groupListTab\">\r\n <el-container>\r\n <el-main>\r\n <el-row :gutter=\"12\">\r\n <el-col :xs=\"24\" :sm=\"24\" :md=\"12\" :lg=\"5\" :xl=\"3\" v-require-roles=\"['SYS_OWNER']\">\r\n <el-tooltip content=\"创建一个分组\" placement=\"top\">\r\n <el-button type=\"plain\" icon=\"plus\" style=\"width:100%;\" @click=\"toCreatePage()\"></el-button>\r\n </el-tooltip>\r\n </el-col>\r\n <el-col :xs=\"24\" :sm=\"24\" :md=\"12\" :lg=\"8\" :xl=\"8\" >\r\n <el-input @change='onQuery' v-model=\"groupPageQuery.groupNameContains\" label=\"组名\" placeholder=\"组名称搜索\" prefix-icon=\"search\"/>\r\n </el-col>\r\n </el-row>\r\n <el-row v-if=\"groupPageData.data.length == 0\">\r\n <el-col>\r\n <el-empty description=\"请先创建分组\"></el-empty>\r\n </el-col>\r\n </el-row>\r\n <el-row v-else :gutter=\"20\" >\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"12\" :lg=\"8\" :xl=\"6\" v-for=\"(group) in groupPageData.data\" :key=\"group.id\" style=\"margin-bottom:20px;\">\r\n <el-card shadow=\"hover\" @mouseenter=\"mouseEnterGroupId=group.id\" @mouseleave=\"mouseEnterGroupId=null\" @click=\"toGroupDashboard(group.id, group.name)\" class=\"box\">\r\n <div style=\"display:flex;justify-content: space-between;\">\r\n <el-link :underline=\"false\" >\r\n <div @click=\"toGroupDashboard(group.id, group.name)\" style=\"margin: 0 auto;\">\r\n <h4>{{ group.name }}</h4> \r\n </div>\r\n </el-link>\r\n <el-link :underline=\"false\" \r\n v-show=\"group.id == mouseEnterGroupId\" \r\n v-require-roles=\"['SYS_OWNER', 'GROUP_OWNER?groupId='+group.id]\" \r\n v-on:click.stop=\"toEditPage(group.id, group.name)\"\r\n icon=\"Edit\"\r\n style=\"margin-left: 8px;\" >\r\n </el-link>\r\n </div>\r\n <el-space direction=\"vertical\" alignment=\"stretch\" :size=\"16\">\r\n <span style=\"color:#909399;font-size:13px;\">\r\n {{ group.description }}\r\n </span>\r\n <el-space wrap>\r\n <el-tooltip content=\"组长\">\r\n <el-icon color=\"#909399\"><user /></el-icon>\r\n </el-tooltip>\r\n <el-tag v-for=\"(owner, index) in group.groupOwnerNames.slice(0, 2)\" :key=\"index\" type=\"info\"> {{ owner }}</el-tag>\r\n <template v-if=\"group.groupOwnerNames.length > 2\">\r\n <el-dropdown>\r\n <el-icon class=\"el-icon--right\">\r\n <arrow-down />\r\n </el-icon>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-for=\"(owner, index) in group.groupOwnerNames.slice(2)\" :key=\"index\">\r\n <el-tag type=\"info\">{{ owner }}</el-tag>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </template>\r\n </el-space>\r\n <el-space wrap>\r\n <el-tooltip content=\"项目数\">\r\n <el-icon color=\"#909399\"><folder /></el-icon>\r\n </el-tooltip>\r\n <span style=\"color:#909399\">\r\n {{ group.projectCount }}\r\n </span>\r\n </el-space>\r\n </el-space>\r\n </el-card>\r\n </el-col>\r\n </el-row>\r\n </el-main>\r\n <el-footer>\r\n <el-pagination layout=\"prev, pager, next\" \r\n :hide-on-single-page=\"false\"\r\n :currentPage=\"groupPageData.number\" \r\n :page-size=\"groupPageData.size\" \r\n :page-count=\"groupPageData.totalPages\"\r\n @current-change=\"onPageChange\">\r\n </el-pagination>\r\n </el-footer>\r\n </el-container>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"关注项目\" name=\"favoriteProjectListTab\">\r\n <el-container>\r\n <el-main>\r\n <el-table :data=\"favoriteProjectPageData.data\" stripe>\r\n <el-table-column prop=\"projectId\" label=\"项目 ID\"/>\r\n <el-table-column prop=\"projectName\" label=\"项目名称\" >\r\n <template v-slot=\"scope\">\r\n <el-link @click=\"toDocumentPage(scope.row)\">\r\n <span>{{ scope.row.projectName }}</span>\r\n </el-link>\r\n </template>\r\n \r\n </el-table-column>\r\n <el-table-column prop=\"projectDescription\" label=\"项目描述\" />\r\n <el-table-column label=\"定时同步\" align=\"center\">\r\n <template v-slot=\"scope\">\r\n <el-tag v-if=\"scope.row.isAutoSync\">\r\n {{ scope.row.autoSyncCron }}\r\n </el-tag>\r\n <span v-else>\r\n 无\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"数据库类型\">\r\n <template v-slot=\"scope\">\r\n <database-icon :databaseType=\"scope.row.databaseType\" :icon=\"scope.row.icon\"/>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"databaseName\" label=\"数据库名称\" />\r\n <el-table-column prop=\"groupName\" label=\"所属分组\">\r\n <template v-slot=\"scope\">\r\n <el-link @click=\"toGroupDashboard(scope.row.groupId, scope.row.groupName)\" icon=\"List\">\r\n {{ scope.row.groupName }}\r\n </el-link>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"createAt\" label=\"关注时间\" />\r\n <el-table-column label=\"操作\" >\r\n <template v-slot=\"scope\">\r\n <el-dropdown>\r\n <span>\r\n 更多\r\n <el-icon >\r\n <arrow-down />\r\n </el-icon>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item>\r\n <el-button type=\"primary\" size=\"small\" @click.stop=\"toDocumentPage(scope.row)\" icon=\"View\">查看文档</el-button>\r\n </el-dropdown-item>\r\n <el-dropdown-item>\r\n <el-button type=\"warning\" size=\"small\" @click.stop=\"onRemoveFavorite(scope.row.projectId)\" icon=\"StarFilled\">取消关注</el-button>\r\n </el-dropdown-item>\r\n <el-dropdown-item v-require-roles=\"['SYS_OWNER', 'GROUP_OWNER?groupId='+groupId]\">\r\n <el-button type=\"danger\" size=\"small\" @click.stop=\"onProjectDelete(scope.row.projectId)\" icon=\"Remove\">删除项目</el-button>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-main>\r\n <el-footer>\r\n <el-pagination layout=\"prev, pager, next\" \r\n :hide-on-single-page=\"false\"\r\n :currentPage=\"favoriteProjectPageData.number\" \r\n :page-size=\"favoriteProjectPageData.size\" \r\n :page-count=\"favoriteProjectPageData.totalPages\"\r\n @current-change=\"onFavoriteProjectPageChange\">\r\n </el-pagination>\r\n </el-footer>\r\n </el-container>\r\n \r\n </el-tab-pane>\r\n </el-tabs>\r\n\r\n\r\n <el-dialog v-model=\"isShowEditGroupDialog\" width=\"38%\" center destroy-on-close>\r\n <el-form :model=\"groupData\" :rules=\"groupDataRule\" ref=\"groupFormRef\" label-position=\"top\">\r\n <el-form-item label=\"名称\" prop=\"name\">\r\n <el-input v-model=\"groupData.name\"></el-input>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"描述\" prop=\"description\">\r\n <el-input v-model=\"groupData.description\" type=\"textarea\"></el-input>\r\n </el-form-item>\r\n\r\n <h2>组长管理</h2>\r\n <el-form-item>\r\n <el-autocomplete\r\n v-model=\"userQueryData.nicknameOrUsernameOrEmailContains\"\r\n :fetch-suggestions=\"queryUsersAsync\"\r\n placeholder=\"用户名、昵称或邮箱搜索\"\r\n @select=\"onGroupOwnerSelect\"\r\n clearable\r\n >\r\n </el-autocomplete>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-space wrap>\r\n <el-tag\r\n v-for=\"(user, index) in groupData.groupOwners\"\r\n :key=\"user.id\"\r\n type=\"primary\"\r\n size=\"large\"\r\n closable\r\n :disable-transitions=\"false\"\r\n @close=\"onGroupOwnerRemove(index)\"\r\n >\r\n <el-tooltip :content=\"user.email\" placement=\"top\">\r\n <span>{{ user.nickname }}</span>\r\n </el-tooltip>\r\n </el-tag>\r\n </el-space>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" @click=\"onGroupSave('groupFormRef')\">保存</el-button>\r\n <el-button @click=\"isShowEditGroupDialog = false\">取消</el-button>\r\n </el-form-item>\r\n </el-form>\r\n <el-collapse v-if=\"groupData.id\">\r\n <el-collapse-item name=\"1\">\r\n <template #title><el-icon><warning-filled /></el-icon>删除分组</template>\r\n <el-tooltip content=\"数据一旦删除将无法恢复,谨慎操作\" placement=\"top\">\r\n <el-button icon=\"delete\" size=\"large\" style=\"width:100%;margin:0 auto;\" @click=\"onGroupDelete(groupData.id)\">确认删除分组</el-button>\r\n </el-tooltip>\r\n </el-collapse-item>\r\n </el-collapse>\r\n </el-dialog>\r\n</template>\r\n\r\n<style>\r\n.card-footer {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 22px;\r\n}\r\n\r\n.el-row {\r\n margin-bottom: 6px;\r\n}\r\n\r\n.el-row:last-child {\r\n margin-bottom: 0;\r\n}\r\n\r\n.el-col {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.box {\r\n border-radius: 6px;\r\n border-width:1px;\r\n}\r\n\r\n</style>\r\n\r\n<script>\r\nimport { listGroups, getGroup, createOrUpdateGroup, deleteGroup } from \"@/api/Group\"\r\nimport { listUsers } from \"@/api/User\"\r\nimport { listFavorites, removeFavorite } from \"../api/UserProject\"\r\nimport { deleteProjectById } from \"../api/Project\"\r\nimport { user } from '../utils/auth'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n isShowEditGroupDialog: false,\r\n mouseEnterGroupId: null,\r\n groupData: {\r\n groupOwners: []\r\n },\r\n groupDataRule: {\r\n name: [this.requiredInputValidRule('请输入有效昵称')],\r\n },\r\n userQueryData: {\r\n nicknameContains: null,\r\n nicknameOrUsernameOrEmailContains: null,\r\n size: 50\r\n },\r\n groupPageData: {\r\n data: [],\r\n number: 1,\r\n size: 8,\r\n totalElements:0,\r\n totalPages: 0\r\n },\r\n groupPageQuery: {\r\n page: 0,\r\n size: 12,\r\n groupNameContains: null\r\n },\r\n\r\n favoriteProjectPageData: {\r\n data: [],\r\n number: 1,\r\n size: 15,\r\n totalElements:0,\r\n totalPages: 0\r\n },\r\n favoriteProjectPageQuery: {\r\n page: 0,\r\n size: 20,\r\n projectNameContains: null\r\n }\r\n }\r\n },\r\n \r\n created() {\r\n this.fetchGroupsFunction()\r\n this.onFavoriteProjectPageChange(1)\r\n },\r\n\r\n computed: {\r\n activeTab: {\r\n get(){\r\n if (this.$store.state.groupListActiveTab) {\r\n return this.$store.state.groupListActiveTab\r\n } else {\r\n this.$store.commit('switchGroupListActiveTab', 'groupListTab')\r\n return \"groupListTab\"\r\n }\r\n },\r\n set(newVal) {\r\n this.$store.commit('switchGroupListActiveTab', newVal)\r\n }\r\n }\r\n },\r\n \r\n methods: {\r\n isPermit(role) {\r\n return user.hasAnyRoles([ role ])\r\n },\r\n async fetchUserFavorites() {\r\n const jsonData = await listFavorites(this.favoriteProjectPageQuery)\r\n this.favoriteProjectPageData.data = jsonData.data.content\r\n this.favoriteProjectPageData.number = jsonData.data.number + 1\r\n this.favoriteProjectPageData.size = jsonData.data.size\r\n this.favoriteProjectPageData.totalPages = jsonData.data.totalPages\r\n this.favoriteProjectPageData.totalElements = jsonData.data.totalElements\r\n },\r\n async fetchGroupsFunction() {\r\n const jsonData = await listGroups(this.groupPageQuery)\r\n this.groupPageData.data = jsonData.data.content\r\n this.groupPageData.number = jsonData.data.number + 1\r\n this.groupPageData.size = jsonData.data.size\r\n this.groupPageData.totalPages = jsonData.data.totalPages\r\n this.groupPageData.totalElements = jsonData.data.totalElements\r\n },\r\n requiredInputValidRule(message) {\r\n return {\r\n required: true,\r\n message: message,\r\n trigger: 'blur',\r\n }\r\n },\r\n requiredGroupOwners() {\r\n if (this.groupData.groupOwners == null \r\n || this.groupData.groupOwners.length < 1\r\n || this.groupData.groupOwners.length > 20) {\r\n return false\r\n } else {\r\n return true\r\n }\r\n },\r\n onPageChange(currentPage) {\r\n if (currentPage) {\r\n this.groupPageQuery.page = currentPage - 1\r\n this.fetchGroupsFunction()\r\n }\r\n },\r\n\r\n onQuery() {\r\n this.fetchGroupsFunction()\r\n },\r\n async queryUsersAsync(query, callback) {\r\n const data = await listUsers(this.userQueryData).then(resp => resp.data.content)\r\n const users = data.map(u => {\r\n return {\r\n value: u.nickname,\r\n nickname: u.nickname,\r\n email: u.email,\r\n id: u.id\r\n }\r\n })\r\n callback(users)\r\n },\r\n\r\n onGroupDelete(groupId) {\r\n this.$confirm('确认删除该分组?删除后数据将无法恢复', '警告', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n deleteGroup(groupId).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('删除成功')\r\n this.isShowEditGroupDialog = false\r\n this.fetchGroupsFunction()\r\n }\r\n })\r\n })\r\n },\r\n onGroupSave() {\r\n if (!this.requiredGroupOwners()) {\r\n this.$message.warning('组长人数至少需要 1 人,最多为 20 人')\r\n return\r\n }\r\n this.$refs.groupFormRef.validate(valid => {\r\n if (valid) {\r\n const request = Object.assign({}, this.groupData)\r\n request.groupOwnerUserIds = this.groupData.groupOwners.map(r => r.id)\r\n createOrUpdateGroup(request).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('保存成功')\r\n this.isShowEditGroupDialog = false\r\n this.groupData = { groupOwners: [] }\r\n this.fetchGroupsFunction()\r\n }\r\n })\r\n } else {\r\n this.$message.error('请填写表单必填项')\r\n }\r\n })\r\n \r\n },\r\n\r\n onGroupOwnerRemove(index) {\r\n this.groupData.groupOwners.splice(index, 1)\r\n },\r\n onGroupOwnerSelect(item) {\r\n if (!this.groupData.groupOwners.some(data => data.id == item.id)) {\r\n this.groupData.groupOwners.push(item)\r\n }\r\n \r\n this.userQueryData.nicknameOrUsernameOrEmailContains = null\r\n },\r\n toCreatePage() {\r\n this.isShowEditGroupDialog = true\r\n this.groupData = { groupOwners: [] }\r\n },\r\n toEditPage(groupId) {\r\n getGroup(groupId).then(resp => {\r\n if(!resp.errCode) {\r\n this.isShowEditGroupDialog = true\r\n this.groupData = resp.data\r\n }\r\n })\r\n },\r\n toGroupDashboard(groupId, groupName) {\r\n this.$router.push({path: \"/groups/\"+groupId, query: {groupName: groupName }})\r\n },\r\n\r\n toDocumentPage(favoriteProject) {\r\n const groupId = favoriteProject.groupId\r\n const projectId = favoriteProject.projectId\r\n this.$router.push({\r\n path: \"/groups/\" + groupId + \"/projects/\" + projectId + \"/documents\",\r\n query: { projectName: favoriteProject.projectName, groupName: favoriteProject.groupName }\r\n })\r\n },\r\n onFavoriteProjectPageChange(currentPage) {\r\n if (currentPage) {\r\n this.favoriteProjectPageQuery.page = currentPage - 1\r\n this.fetchUserFavorites()\r\n }\r\n },\r\n onRemoveFavorite(projectId) {\r\n removeFavorite(projectId).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('成功取消')\r\n this.fetchUserFavorites()\r\n }\r\n })\r\n },\r\n onProjectDelete(id) {\r\n this.$confirm('确认删除该项目?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n deleteProjectById(this.groupId, id).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('删除成功');\r\n this.fetchUserFavorites()\r\n }\r\n })\r\n })\r\n },\r\n onTabClick(tab) {\r\n this.$store.commit('switchGroupListActiveTab', tab.props.name)\r\n }\r\n }\r\n}\r\n\r\n</script>","import { render } from \"./GroupList.vue?vue&type=template&id=b12b6048\"\nimport script from \"./GroupList.vue?vue&type=script&lang=js\"\nexport * from \"./GroupList.vue?vue&type=script&lang=js\"\n\nimport \"./GroupList.vue?vue&type=style&index=0&id=b12b6048&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["$","global","isArray","isConstructor","isObject","toAbsoluteIndex","lengthOfArrayLike","toIndexedObject","createProperty","wellKnownSymbol","arrayMethodHasSpeciesSupport","un$Slice","HAS_SPECIES_SUPPORT","SPECIES","Array","max","Math","target","proto","forced","slice","start","end","Constructor","result","n","O","this","length","k","fin","undefined","constructor","prototype","style","_createElementVNode","_createVNode","_component_el_tabs","$options","$event","onTabClick","_component_el_tab_pane","label","name","_component_el_container","_component_el_main","_component_el_row","gutter","_createBlock","_component_el_col","xs","sm","md","lg","xl","_component_el_tooltip","content","placement","_component_el_button","type","icon","onClick","_component_el_input","onChange","$data","groupNameContains","placeholder","data","key","_component_el_empty","description","_createElementBlock","_Fragment","_renderList","group","id","_component_el_card","shadow","onMouseenter","onMouseleave","class","_component_el_link","underline","_toDisplayString","_component_el_space","direction","alignment","size","wrap","_component_el_icon","color","_component_user","groupOwnerNames","owner","index","_component_el_tag","_component_el_dropdown","dropdown","_component_el_dropdown_menu","_component_el_dropdown_item","_component_arrow_down","_component_folder","projectCount","_component_el_footer","_component_el_pagination","layout","currentPage","number","totalPages","onCurrentChange","_component_el_table","stripe","_component_el_table_column","prop","scope","row","projectName","align","isAutoSync","autoSyncCron","_hoisted_5","_component_database_icon","databaseType","groupId","groupName","projectId","_ctx","_component_el_dialog","width","center","_component_el_form","model","rules","ref","_component_el_form_item","_hoisted_10","_component_el_autocomplete","nicknameOrUsernameOrEmailContains","onSelect","clearable","groupOwners","user","closable","onClose","email","nickname","_component_el_collapse","_component_el_collapse_item","title","_component_warning_filled","isShowEditGroupDialog","mouseEnterGroupId","groupData","groupDataRule","requiredInputValidRule","userQueryData","nicknameContains","groupPageData","totalElements","groupPageQuery","page","favoriteProjectPageData","favoriteProjectPageQuery","projectNameContains","created","fetchGroupsFunction","onFavoriteProjectPageChange","computed","activeTab","get","$store","state","groupListActiveTab","commit","set","newVal","methods","isPermit","role","fetchUserFavorites","listFavorites","jsonData","listGroups","message","required","trigger","requiredGroupOwners","onPageChange","onQuery","queryUsersAsync","query","callback","listUsers","then","resp","users","map","u","value","onGroupDelete","$confirm","confirmButtonText","cancelButtonText","deleteGroup","errCode","$message","success","onGroupSave","$refs","groupFormRef","validate","valid","request","Object","assign","groupOwnerUserIds","r","createOrUpdateGroup","error","warning","onGroupOwnerRemove","splice","onGroupOwnerSelect","item","some","push","toCreatePage","toEditPage","getGroup","toGroupDashboard","$router","path","toDocumentPage","favoriteProject","onRemoveFavorite","removeFavorite","onProjectDelete","deleteProjectById","tab","props","__exports__","render"],"sourceRoot":""} \ No newline at end of file diff --git a/api/src/main/resources/static/js/206.8babe551.js.map b/api/src/main/resources/static/js/206.8babe551.js.map deleted file mode 100644 index 48fa066..0000000 --- a/api/src/main/resources/static/js/206.8babe551.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/206.8babe551.js","mappings":"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","sources":["webpack://databasir/./src/api/Group.js","webpack://databasir/./src/api/Project.js","webpack://databasir/./src/api/User.js","webpack://databasir/./src/api/UserProject.js","webpack://databasir/./src/views/GroupList.vue","webpack://databasir/./src/views/GroupList.vue?d658"],"sourcesContent":["import axios from '@/utils/fetch';\r\n\r\nconst base = '/api/v1.0/groups'\r\n\r\nexport const listGroups = (pageQuery) => {\r\n return axios.get(base, {\r\n params: pageQuery\r\n })\r\n}\r\n\r\nexport const getGroup= (id) => {\r\n return axios.get(base + \"/\" + id)\r\n}\r\n\r\nexport const createOrUpdateGroup = (body) => {\r\n if (body.id && body.id != null) {\r\n return updateGroup(body)\r\n } else {\r\n return createGroup(body)\r\n }\r\n}\r\n\r\nexport const createGroup = (body) => {\r\n return axios.post(base, body)\r\n}\r\n\r\nexport const updateGroup = (body) => {\r\n return axios.patch(base, body)\r\n}\r\n\r\nexport const deleteGroup = (id) => {\r\n return axios.delete(base + '/' + id)\r\n}\r\n\r\nexport const listGroupMembers = (groupId, pageQuery) => {\r\n return axios.get(base + '/' + groupId + '/members', {\r\n params: pageQuery\r\n })\r\n}\r\n\r\nexport const addGroupMember = (groupId, body) => {\r\n return axios.post(base + '/' + groupId + '/members', body)\r\n}\r\n\r\nexport const removeGroupMember = (groupId, userId) => {\r\n return axios.delete(base +'/'+groupId+'/members/'+userId)\r\n}\r\n\r\nexport const updateGroupMemberRole = (groupId, userId, role) => {\r\n const body = {\r\n role: role\r\n }\r\n return axios.patch(base +'/'+groupId+'/members/'+userId, body)\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import axios from '@/utils/fetch';\r\n\r\nconst base = '/api/v1.0/projects'\r\n\r\nexport const listProjects = (parameters) => {\r\n return axios.get(base, {\r\n params: parameters\r\n })\r\n}\r\n\r\nexport const getProjectById = (id) => {\r\n return axios.get(base + \"/\" + id)\r\n}\r\n\r\nexport const createOrUpdateProject = (request) => {\r\n if (request.id) {\r\n return updateProject(request)\r\n } else {\r\n return createProject(request)\r\n }\r\n}\r\n\r\nexport const createProject = (request) => {\r\n return axios.post(base, request);\r\n}\r\n\r\nexport const testConnection = (request) => {\r\n return axios.post(base + '/test_connection', request)\r\n}\r\n\r\nexport const listProjectManualTasks = (id, body) => {\r\n return axios.post(base + \"/\" + id +\"/list_manual_tasks\", body)\r\n}\r\n\r\nexport const cancelProjectTask = (projectId, taskId) => {\r\n return axios.patch(base + \"/\" + projectId +\"/tasks/\" + taskId+\"/cancel\")\r\n}\r\n\r\nconst groupProjectBase = '/api/v1.0/groups'\r\n\r\nexport const updateProject = (request) => {\r\n return axios.patch(groupProjectBase +'/'+request.groupId+'/projects', request);\r\n}\r\n\r\nexport const deleteProjectById = (groupId, id) => {\r\n return axios.delete(groupProjectBase + '/' +groupId +'/projects/' + id);\r\n}\r\n","import axios from '@/utils/fetch';\r\n\r\nconst base = '/api/v1.0/users'\r\n\r\nexport const listUsers = (pageQuery) => {\r\n return axios.get(base, {\r\n params: pageQuery\r\n })\r\n}\r\n\r\nexport const enableUser = (userId) => {\r\n return axios.post(base+\"/\"+userId+\"/enable\")\r\n\r\n}\r\n\r\nexport const disableUser = (userId) => {\r\n return axios.post(base+\"/\"+userId+\"/disable\")\r\n}\r\n\r\nexport const getByUserId = (userId) => {\r\n return axios.get(base+\"/\"+userId)\r\n}\r\n\r\nexport const deleteByUserId = (userId) => {\r\n return axios.delete(base+\"/\"+userId)\r\n}\r\n\r\nexport const createUser = (request) => {\r\n return axios.post(base, request)\r\n}\r\n\r\nexport const renewPassword = (id) => {\r\n return axios.post(base +'/' + id +'/renew_password')\r\n}\r\n\r\nexport const addSysOwnerTo = (userId) => {\r\n return axios.post(base +'/' + userId +'/sys_owners')\r\n}\r\n\r\nexport const removeSysOwnerFrom = (userId) => {\r\n return axios.delete(base +'/' + userId +'/sys_owners')\r\n}\r\n\r\nexport const updatePassword = (userId, body) => {\r\n return axios.post(base +'/' + userId +'/password', body)\r\n}\r\n\r\nexport const updateNickname = (userId, body) => {\r\n return axios.post(base +'/' + userId +'/nickname', body)\r\n}","import axios from '@/utils/fetch';\r\n\r\nconst base = '/api/v1.0/user_projects/favorites'\r\n\r\nexport const listFavorites = (pageQuery) => {\r\n return axios.get(base, {\r\n params: pageQuery\r\n })\r\n}\r\n\r\nexport const removeFavorite = (projectId) => {\r\n return axios.delete(base + \"/\" + projectId)\r\n}\r\n\r\nexport const addFavorite = (projectId) => {\r\n return axios.post(base +'/' + projectId)\r\n}","<template>\r\n <el-tabs v-model=\"activeTab\" @tab-click=\"onTabClick\">\r\n <el-tab-pane label=\"项目分组\" name=\"groupListTab\">\r\n <el-container>\r\n <el-main>\r\n <el-row :gutter=\"12\">\r\n <el-col :xs=\"24\" :sm=\"24\" :md=\"12\" :lg=\"5\" :xl=\"3\" v-require-roles=\"['SYS_OWNER']\">\r\n <el-tooltip content=\"创建一个分组\" placement=\"top\">\r\n <el-button type=\"plain\" icon=\"plus\" style=\"width:100%;\" @click=\"toCreatePage()\"></el-button>\r\n </el-tooltip>\r\n </el-col>\r\n <el-col :xs=\"24\" :sm=\"24\" :md=\"12\" :lg=\"8\" :xl=\"8\" >\r\n <el-input @change='onQuery' v-model=\"groupPageQuery.groupNameContains\" label=\"组名\" placeholder=\"组名称搜索\" prefix-icon=\"search\"/>\r\n </el-col>\r\n </el-row>\r\n <el-row v-if=\"groupPageData.data.length == 0\">\r\n <el-col>\r\n <el-empty description=\"请先创建分组\"></el-empty>\r\n </el-col>\r\n </el-row>\r\n <el-row v-else :gutter=\"20\" >\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"12\" :lg=\"8\" :xl=\"6\" v-for=\"(group) in groupPageData.data\" :key=\"group.id\" style=\"margin-bottom:20px;\">\r\n <el-card shadow=\"hover\" @mouseenter=\"mouseEnterGroupId=group.id\" @mouseleave=\"mouseEnterGroupId=null\" @click=\"toGroupDashboard(group.id, group.name)\" class=\"box\">\r\n <div style=\"display:flex;justify-content: space-between;\">\r\n <el-link :underline=\"false\" >\r\n <div @click=\"toGroupDashboard(group.id, group.name)\" style=\"margin: 0 auto;\">\r\n <h4>{{ group.name }}</h4> \r\n </div>\r\n </el-link>\r\n <el-link :underline=\"false\" \r\n v-show=\"group.id == mouseEnterGroupId\" \r\n v-require-roles=\"['SYS_OWNER', 'GROUP_OWNER?groupId='+group.id]\" \r\n v-on:click.stop=\"toEditPage(group.id, group.name)\"\r\n icon=\"Edit\"\r\n style=\"margin-left: 8px;\" >\r\n </el-link>\r\n </div>\r\n <el-space direction=\"vertical\" alignment=\"stretch\" :size=\"16\">\r\n <span style=\"color:#909399;font-size:13px;\">\r\n {{ group.description }}\r\n </span>\r\n <el-space wrap>\r\n <el-tooltip content=\"组长\">\r\n <el-icon color=\"#909399\"><user /></el-icon>\r\n </el-tooltip>\r\n <el-tag v-for=\"(owner, index) in group.groupOwnerNames.slice(0, 2)\" :key=\"index\" type=\"info\"> {{ owner }}</el-tag>\r\n <template v-if=\"group.groupOwnerNames.length > 2\">\r\n <el-dropdown>\r\n <el-icon class=\"el-icon--right\">\r\n <arrow-down />\r\n </el-icon>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-for=\"(owner, index) in group.groupOwnerNames.slice(2)\" :key=\"index\">\r\n <el-tag type=\"info\">{{ owner }}</el-tag>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </template>\r\n </el-space>\r\n <el-space wrap>\r\n <el-tooltip content=\"项目数\">\r\n <el-icon color=\"#909399\"><folder /></el-icon>\r\n </el-tooltip>\r\n <span style=\"color:#909399\">\r\n {{ group.projectCount }}\r\n </span>\r\n </el-space>\r\n </el-space>\r\n </el-card>\r\n </el-col>\r\n </el-row>\r\n </el-main>\r\n <el-footer>\r\n <el-pagination layout=\"prev, pager, next\" \r\n :hide-on-single-page=\"false\"\r\n :currentPage=\"groupPageData.number\" \r\n :page-size=\"groupPageData.size\" \r\n :page-count=\"groupPageData.totalPages\"\r\n @current-change=\"onPageChange\">\r\n </el-pagination>\r\n </el-footer>\r\n </el-container>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"关注项目\" name=\"favoriteProjectListTab\">\r\n <el-container>\r\n <el-main>\r\n <el-table :data=\"favoriteProjectPageData.data\" stripe>\r\n <el-table-column prop=\"projectId\" label=\"项目 ID\"/>\r\n <el-table-column prop=\"projectName\" label=\"项目名称\" >\r\n <template v-slot=\"scope\">\r\n <el-link @click=\"toDocumentPage(scope.row)\">\r\n <span>{{ scope.row.projectName }}</span>\r\n </el-link>\r\n </template>\r\n \r\n </el-table-column>\r\n <el-table-column prop=\"projectDescription\" label=\"项目描述\" />\r\n <el-table-column label=\"定时同步\" align=\"center\">\r\n <template v-slot=\"scope\">\r\n <el-tag v-if=\"scope.row.isAutoSync\">\r\n {{ scope.row.autoSyncCron }}\r\n </el-tag>\r\n <span v-else>\r\n 无\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"数据库类型\">\r\n <template v-slot=\"scope\">\r\n <database-icon :databaseType=\"scope.row.databaseType\" :icon=\"scope.row.icon\"/>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"databaseName\" label=\"数据库名称\" />\r\n <el-table-column prop=\"groupName\" label=\"所属分组\">\r\n <template v-slot=\"scope\">\r\n <el-link @click=\"toGroupDashboard(scope.row.groupId, scope.row.groupName)\" icon=\"List\">\r\n {{ scope.row.groupName }}\r\n </el-link>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"createAt\" label=\"关注时间\" />\r\n <el-table-column label=\"操作\" >\r\n <template v-slot=\"scope\">\r\n <el-dropdown>\r\n <span>\r\n 更多\r\n <el-icon >\r\n <arrow-down />\r\n </el-icon>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item>\r\n <el-button type=\"primary\" size=\"small\" @click.stop=\"toDocumentPage(scope.row)\" icon=\"View\">查看文档</el-button>\r\n </el-dropdown-item>\r\n <el-dropdown-item>\r\n <el-button type=\"warning\" size=\"small\" @click.stop=\"onRemoveFavorite(scope.row.projectId)\" icon=\"StarFilled\">取消关注</el-button>\r\n </el-dropdown-item>\r\n <el-dropdown-item v-require-roles=\"['SYS_OWNER', 'GROUP_OWNER?groupId='+groupId]\">\r\n <el-button type=\"danger\" size=\"small\" @click.stop=\"onProjectDelete(scope.row.projectId)\" icon=\"Remove\">删除项目</el-button>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-main>\r\n <el-footer>\r\n <el-pagination layout=\"prev, pager, next\" \r\n :hide-on-single-page=\"false\"\r\n :currentPage=\"favoriteProjectPageData.number\" \r\n :page-size=\"favoriteProjectPageData.size\" \r\n :page-count=\"favoriteProjectPageData.totalPages\"\r\n @current-change=\"onFavoriteProjectPageChange\">\r\n </el-pagination>\r\n </el-footer>\r\n </el-container>\r\n \r\n </el-tab-pane>\r\n </el-tabs>\r\n\r\n\r\n <el-dialog v-model=\"isShowEditGroupDialog\" width=\"38%\" center destroy-on-close>\r\n <el-form :model=\"groupData\" :rules=\"groupDataRule\" ref=\"groupFormRef\" label-position=\"top\">\r\n <el-form-item label=\"名称\" prop=\"name\">\r\n <el-input v-model=\"groupData.name\"></el-input>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"描述\" prop=\"description\">\r\n <el-input v-model=\"groupData.description\" type=\"textarea\"></el-input>\r\n </el-form-item>\r\n\r\n <h2>组长管理</h2>\r\n <el-form-item>\r\n <el-autocomplete\r\n v-model=\"userQueryData.nicknameOrUsernameOrEmailContains\"\r\n :fetch-suggestions=\"queryUsersAsync\"\r\n placeholder=\"用户名、昵称或邮箱搜索\"\r\n @select=\"onGroupOwnerSelect\"\r\n clearable\r\n >\r\n </el-autocomplete>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-space wrap>\r\n <el-tag\r\n v-for=\"(user, index) in groupData.groupOwners\"\r\n :key=\"user.id\"\r\n type=\"primary\"\r\n size=\"large\"\r\n closable\r\n :disable-transitions=\"false\"\r\n @close=\"onGroupOwnerRemove(index)\"\r\n >\r\n <el-tooltip :content=\"user.email\" placement=\"top\">\r\n <span>{{ user.nickname }}</span>\r\n </el-tooltip>\r\n </el-tag>\r\n </el-space>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" @click=\"onGroupSave('groupFormRef')\">保存</el-button>\r\n <el-button @click=\"isShowEditGroupDialog = false\">取消</el-button>\r\n </el-form-item>\r\n </el-form>\r\n <el-collapse v-if=\"groupData.id\">\r\n <el-collapse-item name=\"1\">\r\n <template #title><el-icon><warning-filled /></el-icon>删除分组</template>\r\n <el-tooltip content=\"数据一旦删除将无法恢复,谨慎操作\" placement=\"top\">\r\n <el-button icon=\"delete\" size=\"large\" style=\"width:100%;margin:0 auto;\" @click=\"onGroupDelete(groupData.id)\">确认删除分组</el-button>\r\n </el-tooltip>\r\n </el-collapse-item>\r\n </el-collapse>\r\n </el-dialog>\r\n</template>\r\n\r\n<style>\r\n.card-footer {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 22px;\r\n}\r\n\r\n.el-row {\r\n margin-bottom: 6px;\r\n}\r\n\r\n.el-row:last-child {\r\n margin-bottom: 0;\r\n}\r\n\r\n.el-col {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.box {\r\n border-radius: 6px;\r\n border-width:1px;\r\n}\r\n\r\n</style>\r\n\r\n<script>\r\nimport { listGroups, getGroup, createOrUpdateGroup, deleteGroup } from \"@/api/Group\"\r\nimport { listUsers } from \"@/api/User\"\r\nimport { listFavorites, removeFavorite } from \"../api/UserProject\"\r\nimport { deleteProjectById } from \"../api/Project\"\r\nimport { user } from '../utils/auth'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n isShowEditGroupDialog: false,\r\n mouseEnterGroupId: null,\r\n groupData: {\r\n groupOwners: []\r\n },\r\n groupDataRule: {\r\n name: [this.requiredInputValidRule('请输入有效昵称')],\r\n },\r\n userQueryData: {\r\n nicknameContains: null,\r\n nicknameOrUsernameOrEmailContains: null,\r\n size: 50\r\n },\r\n groupPageData: {\r\n data: [],\r\n number: 1,\r\n size: 8,\r\n totalElements:0,\r\n totalPages: 0\r\n },\r\n groupPageQuery: {\r\n page: 0,\r\n size: 12,\r\n groupNameContains: null\r\n },\r\n\r\n favoriteProjectPageData: {\r\n data: [],\r\n number: 1,\r\n size: 15,\r\n totalElements:0,\r\n totalPages: 0\r\n },\r\n favoriteProjectPageQuery: {\r\n page: 0,\r\n size: 20,\r\n projectNameContains: null\r\n }\r\n }\r\n },\r\n \r\n created() {\r\n this.fetchGroupsFunction()\r\n this.onFavoriteProjectPageChange(1)\r\n },\r\n\r\n computed: {\r\n activeTab: {\r\n get(){\r\n if (this.$store.state.groupListActiveTab) {\r\n return this.$store.state.groupListActiveTab\r\n } else {\r\n this.$store.commit('switchGroupListActiveTab', 'groupListTab')\r\n return \"groupListTab\"\r\n }\r\n },\r\n set(newVal) {\r\n this.$store.commit('switchGroupListActiveTab', newVal)\r\n }\r\n }\r\n },\r\n \r\n methods: {\r\n isPermit(role) {\r\n return user.hasAnyRoles([ role ])\r\n },\r\n async fetchUserFavorites() {\r\n const jsonData = await listFavorites(this.favoriteProjectPageQuery)\r\n this.favoriteProjectPageData.data = jsonData.data.content\r\n this.favoriteProjectPageData.number = jsonData.data.number + 1\r\n this.favoriteProjectPageData.size = jsonData.data.size\r\n this.favoriteProjectPageData.totalPages = jsonData.data.totalPages\r\n this.favoriteProjectPageData.totalElements = jsonData.data.totalElements\r\n },\r\n async fetchGroupsFunction() {\r\n const jsonData = await listGroups(this.groupPageQuery)\r\n this.groupPageData.data = jsonData.data.content\r\n this.groupPageData.number = jsonData.data.number + 1\r\n this.groupPageData.size = jsonData.data.size\r\n this.groupPageData.totalPages = jsonData.data.totalPages\r\n this.groupPageData.totalElements = jsonData.data.totalElements\r\n },\r\n requiredInputValidRule(message) {\r\n return {\r\n required: true,\r\n message: message,\r\n trigger: 'blur',\r\n }\r\n },\r\n requiredGroupOwners() {\r\n if (this.groupData.groupOwners == null \r\n || this.groupData.groupOwners.length < 1\r\n || this.groupData.groupOwners.length > 20) {\r\n return false\r\n } else {\r\n return true\r\n }\r\n },\r\n onPageChange(currentPage) {\r\n if (currentPage) {\r\n this.groupPageQuery.page = currentPage - 1\r\n this.fetchGroupsFunction()\r\n }\r\n },\r\n\r\n onQuery() {\r\n this.fetchGroupsFunction()\r\n },\r\n async queryUsersAsync(query, callback) {\r\n const data = await listUsers(this.userQueryData).then(resp => resp.data.content)\r\n const users = data.map(u => {\r\n return {\r\n value: u.nickname,\r\n nickname: u.nickname,\r\n email: u.email,\r\n id: u.id\r\n }\r\n })\r\n callback(users)\r\n },\r\n\r\n onGroupDelete(groupId) {\r\n this.$confirm('确认删除该分组?删除后数据将无法恢复', '警告', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n deleteGroup(groupId).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('删除成功')\r\n this.isShowEditGroupDialog = false\r\n this.fetchGroupsFunction()\r\n }\r\n })\r\n })\r\n },\r\n onGroupSave() {\r\n if (!this.requiredGroupOwners()) {\r\n this.$message.warning('组长人数至少需要 1 人,最多为 20 人')\r\n return\r\n }\r\n this.$refs.groupFormRef.validate(valid => {\r\n if (valid) {\r\n const request = Object.assign({}, this.groupData)\r\n request.groupOwnerUserIds = this.groupData.groupOwners.map(r => r.id)\r\n createOrUpdateGroup(request).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('保存成功')\r\n this.isShowEditGroupDialog = false\r\n this.groupData = { groupOwners: [] }\r\n this.fetchGroupsFunction()\r\n }\r\n })\r\n } else {\r\n this.$message.error('请填写表单必填项')\r\n }\r\n })\r\n \r\n },\r\n\r\n onGroupOwnerRemove(index) {\r\n this.groupData.groupOwners.splice(index, 1)\r\n },\r\n onGroupOwnerSelect(item) {\r\n if (!this.groupData.groupOwners.some(data => data.id == item.id)) {\r\n this.groupData.groupOwners.push(item)\r\n }\r\n \r\n this.userQueryData.nicknameOrUsernameOrEmailContains = null\r\n },\r\n toCreatePage() {\r\n this.isShowEditGroupDialog = true\r\n this.groupData = { groupOwners: [] }\r\n },\r\n toEditPage(groupId) {\r\n getGroup(groupId).then(resp => {\r\n if(!resp.errCode) {\r\n this.isShowEditGroupDialog = true\r\n this.groupData = resp.data\r\n }\r\n })\r\n },\r\n toGroupDashboard(groupId, groupName) {\r\n this.$router.push({path: \"/groups/\"+groupId, query: {groupName: groupName }})\r\n },\r\n\r\n toDocumentPage(favoriteProject) {\r\n const groupId = favoriteProject.groupId\r\n const projectId = favoriteProject.projectId\r\n this.$router.push({\r\n path: \"/groups/\" + groupId + \"/projects/\" + projectId + \"/documents\",\r\n query: { projectName: favoriteProject.projectName, groupName: favoriteProject.groupName }\r\n })\r\n },\r\n onFavoriteProjectPageChange(currentPage) {\r\n if (currentPage) {\r\n this.favoriteProjectPageQuery.page = currentPage - 1\r\n this.fetchUserFavorites()\r\n }\r\n },\r\n onRemoveFavorite(projectId) {\r\n removeFavorite(projectId).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('成功取消')\r\n this.fetchUserFavorites()\r\n }\r\n })\r\n },\r\n onProjectDelete(id) {\r\n this.$confirm('确认删除该项目?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n deleteProjectById(this.groupId, id).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('删除成功');\r\n this.fetchUserFavorites()\r\n }\r\n })\r\n })\r\n },\r\n onTabClick(tab) {\r\n this.$store.commit('switchGroupListActiveTab', tab.props.name)\r\n }\r\n }\r\n}\r\n\r\n</script>","import { render } from \"./GroupList.vue?vue&type=template&id=b12b6048\"\nimport script from \"./GroupList.vue?vue&type=script&lang=js\"\nexport * from \"./GroupList.vue?vue&type=script&lang=js\"\n\nimport \"./GroupList.vue?vue&type=style&index=0&id=b12b6048&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["base","listGroups","pageQuery","axios","params","getGroup","id","createOrUpdateGroup","body","updateGroup","createGroup","deleteGroup","listGroupMembers","groupId","addGroupMember","removeGroupMember","userId","updateGroupMemberRole","role","listProjects","parameters","getProjectById","createOrUpdateProject","request","updateProject","createProject","testConnection","listProjectManualTasks","cancelProjectTask","projectId","taskId","groupProjectBase","deleteProjectById","listUsers","enableUser","disableUser","getByUserId","deleteByUserId","createUser","renewPassword","addSysOwnerTo","removeSysOwnerFrom","updatePassword","updateNickname","listFavorites","removeFavorite","addFavorite","style","_createElementVNode","_createVNode","_component_el_tabs","$options","$event","onTabClick","_component_el_tab_pane","label","name","_component_el_container","_component_el_main","_component_el_row","gutter","_createBlock","_component_el_col","xs","sm","md","lg","xl","_component_el_tooltip","content","placement","_component_el_button","type","icon","onClick","_component_el_input","onChange","$data","groupNameContains","placeholder","data","length","key","_component_el_empty","description","_createElementBlock","_Fragment","_renderList","group","_component_el_card","shadow","onMouseenter","onMouseleave","class","_component_el_link","underline","_toDisplayString","_component_el_space","direction","alignment","size","wrap","_component_el_icon","color","_component_user","groupOwnerNames","slice","owner","index","_component_el_tag","_component_el_dropdown","dropdown","_component_el_dropdown_menu","_component_el_dropdown_item","_component_arrow_down","_component_folder","projectCount","_component_el_footer","_component_el_pagination","layout","currentPage","number","totalPages","onCurrentChange","_component_el_table","stripe","_component_el_table_column","prop","scope","row","projectName","align","isAutoSync","autoSyncCron","_hoisted_5","_component_database_icon","databaseType","groupName","_ctx","_component_el_dialog","width","center","_component_el_form","model","rules","ref","_component_el_form_item","_hoisted_10","_component_el_autocomplete","nicknameOrUsernameOrEmailContains","onSelect","clearable","groupOwners","user","closable","onClose","email","nickname","_component_el_collapse","_component_el_collapse_item","title","_component_warning_filled","isShowEditGroupDialog","mouseEnterGroupId","groupData","groupDataRule","this","requiredInputValidRule","userQueryData","nicknameContains","groupPageData","totalElements","groupPageQuery","page","favoriteProjectPageData","favoriteProjectPageQuery","projectNameContains","created","fetchGroupsFunction","onFavoriteProjectPageChange","computed","activeTab","get","$store","state","groupListActiveTab","commit","set","newVal","methods","isPermit","async","jsonData","message","required","trigger","requiredGroupOwners","onPageChange","onQuery","query","callback","then","resp","users","map","u","value","onGroupDelete","$confirm","confirmButtonText","cancelButtonText","errCode","$message","success","onGroupSave","$refs","groupFormRef","validate","valid","Object","assign","groupOwnerUserIds","r","error","warning","onGroupOwnerRemove","splice","onGroupOwnerSelect","item","some","push","toCreatePage","toEditPage","toGroupDashboard","$router","path","toDocumentPage","favoriteProject","fetchUserFavorites","onRemoveFavorite","onProjectDelete","tab","props","__exports__","render"],"sourceRoot":""} \ No newline at end of file diff --git a/api/src/main/resources/static/js/206-legacy.8d16f9c5.js b/api/src/main/resources/static/js/314-legacy.e55474ea.js similarity index 51% rename from api/src/main/resources/static/js/206-legacy.8d16f9c5.js rename to api/src/main/resources/static/js/314-legacy.e55474ea.js index cb72ec3..a237a12 100644 --- a/api/src/main/resources/static/js/206-legacy.8d16f9c5.js +++ b/api/src/main/resources/static/js/314-legacy.e55474ea.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunkdatabasir"]=self["webpackChunkdatabasir"]||[]).push([[206],{47042:function(e,t,n){var r=n(82109),u=n(17854),o=n(43157),a=n(4411),i=n(70111),l=n(51400),c=n(26244),s=n(45656),p=n(86135),f=n(5112),m=n(81194),d=n(50206),g=m("slice"),w=f("species"),h=u.Array,W=Math.max;r({target:"Array",proto:!0,forced:!g},{slice:function(e,t){var n,r,u,f=s(this),m=c(f),g=l(e,m),_=l(void 0===t?m:t,m);if(o(f)&&(n=f.constructor,a(n)&&(n===h||o(n.prototype))?n=void 0:i(n)&&(n=n[w],null===n&&(n=void 0)),n===h||void 0===n))return d(f,g,_);for(r=new(void 0===n?h:n)(W(_-g,0)),u=0;g<_;g++,u++)g in f&&p(r,u,f[g]);return r.length=u,r}})},32206:function(e,t,n){n.r(t),n.d(t,{default:function(){return E}});n(68309),n(82526),n(41817),n(47042);var r=n(66252),u=n(3577),o=n(49963),a={style:{display:"flex","justify-content":"space-between"}},i=["onClick"],l={style:{color:"#909399","font-size":"13px"}},c={style:{color:"#909399"}},s={key:1},p=(0,r.Uk)(" 更多 "),f=(0,r.Uk)("查看文档"),m=(0,r.Uk)("取消关注"),d=(0,r.Uk)("删除项目"),g=(0,r._)("h2",null,"组长管理",-1),w=(0,r.Uk)("保存"),h=(0,r.Uk)("取消"),W=(0,r.Uk)("删除分组"),_=(0,r.Uk)("确认删除分组");function v(e,t,n,v,D,P){var y=(0,r.up)("el-button"),b=(0,r.up)("el-tooltip"),k=(0,r.up)("el-col"),C=(0,r.up)("el-input"),j=(0,r.up)("el-row"),G=(0,r.up)("el-empty"),O=(0,r.up)("el-link"),E=(0,r.up)("user"),z=(0,r.up)("el-icon"),U=(0,r.up)("el-tag"),x=(0,r.up)("arrow-down"),R=(0,r.up)("el-dropdown-item"),N=(0,r.up)("el-dropdown-menu"),S=(0,r.up)("el-dropdown"),T=(0,r.up)("el-space"),V=(0,r.up)("folder"),F=(0,r.up)("el-card"),I=(0,r.up)("el-main"),$=(0,r.up)("el-pagination"),Q=(0,r.up)("el-footer"),q=(0,r.up)("el-container"),A=(0,r.up)("el-tab-pane"),L=(0,r.up)("el-table-column"),M=(0,r.up)("database-icon"),Y=(0,r.up)("el-table"),B=(0,r.up)("el-tabs"),H=(0,r.up)("el-form-item"),K=(0,r.up)("el-autocomplete"),Z=(0,r.up)("el-form"),J=(0,r.up)("warning-filled"),X=(0,r.up)("el-collapse-item"),ee=(0,r.up)("el-collapse"),te=(0,r.up)("el-dialog"),ne=(0,r.Q2)("require-roles");return(0,r.wg)(),(0,r.iD)(r.HY,null,[(0,r.Wm)(B,{modelValue:P.activeTab,"onUpdate:modelValue":t[3]||(t[3]=function(e){return P.activeTab=e}),onTabClick:P.onTabClick},{default:(0,r.w5)((function(){return[(0,r.Wm)(A,{label:"项目分组",name:"groupListTab"},{default:(0,r.w5)((function(){return[(0,r.Wm)(q,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(I,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(j,{gutter:12},{default:(0,r.w5)((function(){return[(0,r.wy)(((0,r.wg)(),(0,r.j4)(k,{xs:24,sm:24,md:12,lg:5,xl:3},{default:(0,r.w5)((function(){return[(0,r.Wm)(b,{content:"创建一个分组",placement:"top"},{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{type:"plain",icon:"plus",style:{width:"100%"},onClick:t[0]||(t[0]=function(e){return P.toCreatePage()})})]})),_:1})]})),_:1})),[[ne,["SYS_OWNER"]]]),(0,r.Wm)(k,{xs:24,sm:24,md:12,lg:8,xl:8},{default:(0,r.w5)((function(){return[(0,r.Wm)(C,{onChange:P.onQuery,modelValue:D.groupPageQuery.groupNameContains,"onUpdate:modelValue":t[1]||(t[1]=function(e){return D.groupPageQuery.groupNameContains=e}),label:"组名",placeholder:"组名称搜索","prefix-icon":"search"},null,8,["onChange","modelValue"])]})),_:1})]})),_:1}),0==D.groupPageData.data.length?((0,r.wg)(),(0,r.j4)(j,{key:0},{default:(0,r.w5)((function(){return[(0,r.Wm)(k,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(G,{description:"请先创建分组"})]})),_:1})]})),_:1})):((0,r.wg)(),(0,r.j4)(j,{key:1,gutter:20},{default:(0,r.w5)((function(){return[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(D.groupPageData.data,(function(e){return(0,r.wg)(),(0,r.j4)(k,{xs:24,sm:12,md:12,lg:8,xl:6,key:e.id,style:{"margin-bottom":"20px"}},{default:(0,r.w5)((function(){return[(0,r.Wm)(F,{shadow:"hover",onMouseenter:function(t){return D.mouseEnterGroupId=e.id},onMouseleave:t[2]||(t[2]=function(e){return D.mouseEnterGroupId=null}),onClick:function(t){return P.toGroupDashboard(e.id,e.name)},class:"box"},{default:(0,r.w5)((function(){return[(0,r._)("div",a,[(0,r.Wm)(O,{underline:!1},{default:(0,r.w5)((function(){return[(0,r._)("div",{onClick:function(t){return P.toGroupDashboard(e.id,e.name)},style:{margin:"0 auto"}},[(0,r._)("h4",null,(0,u.zw)(e.name),1)],8,i)]})),_:2},1024),(0,r.wy)((0,r.Wm)(O,{underline:!1,onClick:(0,o.iM)((function(t){return P.toEditPage(e.id,e.name)}),["stop"]),icon:"Edit",style:{"margin-left":"8px"}},null,8,["onClick"]),[[o.F8,e.id==D.mouseEnterGroupId],[ne,["SYS_OWNER","GROUP_OWNER?groupId="+e.id]]])]),(0,r.Wm)(T,{direction:"vertical",alignment:"stretch",size:16},{default:(0,r.w5)((function(){return[(0,r._)("span",l,(0,u.zw)(e.description),1),(0,r.Wm)(T,{wrap:""},{default:(0,r.w5)((function(){return[(0,r.Wm)(b,{content:"组长"},{default:(0,r.w5)((function(){return[(0,r.Wm)(z,{color:"#909399"},{default:(0,r.w5)((function(){return[(0,r.Wm)(E)]})),_:1})]})),_:1}),((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(e.groupOwnerNames.slice(0,2),(function(e,t){return(0,r.wg)(),(0,r.j4)(U,{key:t,type:"info"},{default:(0,r.w5)((function(){return[(0,r.Uk)((0,u.zw)(e),1)]})),_:2},1024)})),128)),e.groupOwnerNames.length>2?((0,r.wg)(),(0,r.j4)(S,{key:0},{dropdown:(0,r.w5)((function(){return[(0,r.Wm)(N,null,{default:(0,r.w5)((function(){return[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(e.groupOwnerNames.slice(2),(function(e,t){return(0,r.wg)(),(0,r.j4)(R,{key:t},{default:(0,r.w5)((function(){return[(0,r.Wm)(U,{type:"info"},{default:(0,r.w5)((function(){return[(0,r.Uk)((0,u.zw)(e),1)]})),_:2},1024)]})),_:2},1024)})),128))]})),_:2},1024)]})),default:(0,r.w5)((function(){return[(0,r.Wm)(z,{class:"el-icon--right"},{default:(0,r.w5)((function(){return[(0,r.Wm)(x)]})),_:1})]})),_:2},1024)):(0,r.kq)("",!0)]})),_:2},1024),(0,r.Wm)(T,{wrap:""},{default:(0,r.w5)((function(){return[(0,r.Wm)(b,{content:"项目数"},{default:(0,r.w5)((function(){return[(0,r.Wm)(z,{color:"#909399"},{default:(0,r.w5)((function(){return[(0,r.Wm)(V)]})),_:1})]})),_:1}),(0,r._)("span",c,(0,u.zw)(e.projectCount),1)]})),_:2},1024)]})),_:2},1024)]})),_:2},1032,["onMouseenter","onClick"])]})),_:2},1024)})),128))]})),_:1}))]})),_:1}),(0,r.Wm)(Q,null,{default:(0,r.w5)((function(){return[(0,r.Wm)($,{layout:"prev, pager, next","hide-on-single-page":!1,currentPage:D.groupPageData.number,"page-size":D.groupPageData.size,"page-count":D.groupPageData.totalPages,onCurrentChange:P.onPageChange},null,8,["currentPage","page-size","page-count","onCurrentChange"])]})),_:1})]})),_:1})]})),_:1}),(0,r.Wm)(A,{label:"关注项目",name:"favoriteProjectListTab"},{default:(0,r.w5)((function(){return[(0,r.Wm)(q,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(I,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(Y,{data:D.favoriteProjectPageData.data,stripe:""},{default:(0,r.w5)((function(){return[(0,r.Wm)(L,{prop:"projectId",label:"项目 ID"}),(0,r.Wm)(L,{prop:"projectName",label:"项目名称"},{default:(0,r.w5)((function(e){return[(0,r.Wm)(O,{onClick:function(t){return P.toDocumentPage(e.row)}},{default:(0,r.w5)((function(){return[(0,r._)("span",null,(0,u.zw)(e.row.projectName),1)]})),_:2},1032,["onClick"])]})),_:1}),(0,r.Wm)(L,{prop:"projectDescription",label:"项目描述"}),(0,r.Wm)(L,{label:"定时同步",align:"center"},{default:(0,r.w5)((function(e){return[e.row.isAutoSync?((0,r.wg)(),(0,r.j4)(U,{key:0},{default:(0,r.w5)((function(){return[(0,r.Uk)((0,u.zw)(e.row.autoSyncCron),1)]})),_:2},1024)):((0,r.wg)(),(0,r.iD)("span",s," 无 "))]})),_:1}),(0,r.Wm)(L,{label:"数据库类型"},{default:(0,r.w5)((function(e){return[(0,r.Wm)(M,{databaseType:e.row.databaseType,icon:e.row.icon},null,8,["databaseType","icon"])]})),_:1}),(0,r.Wm)(L,{prop:"databaseName",label:"数据库名称"}),(0,r.Wm)(L,{prop:"groupName",label:"所属分组"},{default:(0,r.w5)((function(e){return[(0,r.Wm)(O,{onClick:function(t){return P.toGroupDashboard(e.row.groupId,e.row.groupName)},icon:"List"},{default:(0,r.w5)((function(){return[(0,r.Uk)((0,u.zw)(e.row.groupName),1)]})),_:2},1032,["onClick"])]})),_:1}),(0,r.Wm)(L,{prop:"createAt",label:"关注时间"}),(0,r.Wm)(L,{label:"操作"},{default:(0,r.w5)((function(t){return[(0,r.Wm)(S,null,{dropdown:(0,r.w5)((function(){return[(0,r.Wm)(N,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(R,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{type:"primary",size:"small",onClick:(0,o.iM)((function(e){return P.toDocumentPage(t.row)}),["stop"]),icon:"View"},{default:(0,r.w5)((function(){return[f]})),_:2},1032,["onClick"])]})),_:2},1024),(0,r.Wm)(R,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{type:"warning",size:"small",onClick:(0,o.iM)((function(e){return P.onRemoveFavorite(t.row.projectId)}),["stop"]),icon:"StarFilled"},{default:(0,r.w5)((function(){return[m]})),_:2},1032,["onClick"])]})),_:2},1024),(0,r.wy)(((0,r.wg)(),(0,r.j4)(R,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{type:"danger",size:"small",onClick:(0,o.iM)((function(e){return P.onProjectDelete(t.row.projectId)}),["stop"]),icon:"Remove"},{default:(0,r.w5)((function(){return[d]})),_:2},1032,["onClick"])]})),_:2},1024)),[[ne,["SYS_OWNER","GROUP_OWNER?groupId="+e.groupId]]])]})),_:2},1024)]})),default:(0,r.w5)((function(){return[(0,r._)("span",null,[p,(0,r.Wm)(z,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(x)]})),_:1})])]})),_:2},1024)]})),_:1})]})),_:1},8,["data"])]})),_:1}),(0,r.Wm)(Q,null,{default:(0,r.w5)((function(){return[(0,r.Wm)($,{layout:"prev, pager, next","hide-on-single-page":!1,currentPage:D.favoriteProjectPageData.number,"page-size":D.favoriteProjectPageData.size,"page-count":D.favoriteProjectPageData.totalPages,onCurrentChange:P.onFavoriteProjectPageChange},null,8,["currentPage","page-size","page-count","onCurrentChange"])]})),_:1})]})),_:1})]})),_:1})]})),_:1},8,["modelValue","onTabClick"]),(0,r.Wm)(te,{modelValue:D.isShowEditGroupDialog,"onUpdate:modelValue":t[10]||(t[10]=function(e){return D.isShowEditGroupDialog=e}),width:"38%",center:"","destroy-on-close":""},{default:(0,r.w5)((function(){return[(0,r.Wm)(Z,{model:D.groupData,rules:D.groupDataRule,ref:"groupFormRef","label-position":"top"},{default:(0,r.w5)((function(){return[(0,r.Wm)(H,{label:"名称",prop:"name"},{default:(0,r.w5)((function(){return[(0,r.Wm)(C,{modelValue:D.groupData.name,"onUpdate:modelValue":t[4]||(t[4]=function(e){return D.groupData.name=e})},null,8,["modelValue"])]})),_:1}),(0,r.Wm)(H,{label:"描述",prop:"description"},{default:(0,r.w5)((function(){return[(0,r.Wm)(C,{modelValue:D.groupData.description,"onUpdate:modelValue":t[5]||(t[5]=function(e){return D.groupData.description=e}),type:"textarea"},null,8,["modelValue"])]})),_:1}),g,(0,r.Wm)(H,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(K,{modelValue:D.userQueryData.nicknameOrUsernameOrEmailContains,"onUpdate:modelValue":t[6]||(t[6]=function(e){return D.userQueryData.nicknameOrUsernameOrEmailContains=e}),"fetch-suggestions":P.queryUsersAsync,placeholder:"用户名、昵称或邮箱搜索",onSelect:P.onGroupOwnerSelect,clearable:""},null,8,["modelValue","fetch-suggestions","onSelect"])]})),_:1}),(0,r.Wm)(H,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(T,{wrap:""},{default:(0,r.w5)((function(){return[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(D.groupData.groupOwners,(function(e,t){return(0,r.wg)(),(0,r.j4)(U,{key:e.id,type:"primary",size:"large",closable:"","disable-transitions":!1,onClose:function(e){return P.onGroupOwnerRemove(t)}},{default:(0,r.w5)((function(){return[(0,r.Wm)(b,{content:e.email,placement:"top"},{default:(0,r.w5)((function(){return[(0,r._)("span",null,(0,u.zw)(e.nickname),1)]})),_:2},1032,["content"])]})),_:2},1032,["onClose"])})),128))]})),_:1})]})),_:1}),(0,r.Wm)(H,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{type:"primary",onClick:t[7]||(t[7]=function(e){return P.onGroupSave("groupFormRef")})},{default:(0,r.w5)((function(){return[w]})),_:1}),(0,r.Wm)(y,{onClick:t[8]||(t[8]=function(e){return D.isShowEditGroupDialog=!1})},{default:(0,r.w5)((function(){return[h]})),_:1})]})),_:1})]})),_:1},8,["model","rules"]),D.groupData.id?((0,r.wg)(),(0,r.j4)(ee,{key:0},{default:(0,r.w5)((function(){return[(0,r.Wm)(X,{name:"1"},{title:(0,r.w5)((function(){return[(0,r.Wm)(z,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(J)]})),_:1}),W]})),default:(0,r.w5)((function(){return[(0,r.Wm)(b,{content:"数据一旦删除将无法恢复,谨慎操作",placement:"top"},{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{icon:"delete",size:"large",style:{width:"100%",margin:"0 auto"},onClick:t[9]||(t[9]=function(e){return P.onGroupDelete(D.groupData.id)})},{default:(0,r.w5)((function(){return[_]})),_:1})]})),_:1})]})),_:1})]})),_:1})):(0,r.kq)("",!0)]})),_:1},8,["modelValue"])],64)}var D=n(48534),P=(n(21249),n(40561),n(41539),n(35666),n(78337)),y=n(63110),b=n(19080),k=n(79324),C=n(51836),j={data:function(){return{isShowEditGroupDialog:!1,mouseEnterGroupId:null,groupData:{groupOwners:[]},groupDataRule:{name:[this.requiredInputValidRule("请输入有效昵称")]},userQueryData:{nicknameContains:null,nicknameOrUsernameOrEmailContains:null,size:50},groupPageData:{data:[],number:1,size:8,totalElements:0,totalPages:0},groupPageQuery:{page:0,size:12,groupNameContains:null},favoriteProjectPageData:{data:[],number:1,size:15,totalElements:0,totalPages:0},favoriteProjectPageQuery:{page:0,size:20,projectNameContains:null}}},created:function(){this.fetchGroupsFunction(),this.onFavoriteProjectPageChange(1)},computed:{activeTab:{get:function(){return this.$store.state.groupListActiveTab?this.$store.state.groupListActiveTab:(this.$store.commit("switchGroupListActiveTab","groupListTab"),"groupListTab")},set:function(e){this.$store.commit("switchGroupListActiveTab",e)}}},methods:{isPermit:function(e){return C.E.hasAnyRoles([e])},fetchUserFavorites:function(){var e=this;return(0,D.Z)(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,(0,b.V$)(e.favoriteProjectPageQuery);case 2:n=t.sent,e.favoriteProjectPageData.data=n.data.content,e.favoriteProjectPageData.number=n.data.number+1,e.favoriteProjectPageData.size=n.data.size,e.favoriteProjectPageData.totalPages=n.data.totalPages,e.favoriteProjectPageData.totalElements=n.data.totalElements;case 8:case"end":return t.stop()}}),t)})))()},fetchGroupsFunction:function(){var e=this;return(0,D.Z)(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,(0,P.Wq)(e.groupPageQuery);case 2:n=t.sent,e.groupPageData.data=n.data.content,e.groupPageData.number=n.data.number+1,e.groupPageData.size=n.data.size,e.groupPageData.totalPages=n.data.totalPages,e.groupPageData.totalElements=n.data.totalElements;case 8:case"end":return t.stop()}}),t)})))()},requiredInputValidRule:function(e){return{required:!0,message:e,trigger:"blur"}},requiredGroupOwners:function(){return!(null==this.groupData.groupOwners||this.groupData.groupOwners.length<1||this.groupData.groupOwners.length>20)},onPageChange:function(e){e&&(this.groupPageQuery.page=e-1,this.fetchGroupsFunction())},onQuery:function(){this.fetchGroupsFunction()},queryUsersAsync:function(e,t){var n=this;return(0,D.Z)(regeneratorRuntime.mark((function e(){var r,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,(0,y.yw)(n.userQueryData).then((function(e){return e.data.content}));case 2:r=e.sent,u=r.map((function(e){return{value:e.nickname,nickname:e.nickname,email:e.email,id:e.id}})),t(u);case 5:case"end":return e.stop()}}),e)})))()},onGroupDelete:function(e){var t=this;this.$confirm("确认删除该分组?删除后数据将无法恢复","警告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){(0,P.iE)(e).then((function(e){e.errCode||(t.$message.success("删除成功"),t.isShowEditGroupDialog=!1,t.fetchGroupsFunction())}))}))},onGroupSave:function(){var e=this;this.requiredGroupOwners()?this.$refs.groupFormRef.validate((function(t){if(t){var n=Object.assign({},e.groupData);n.groupOwnerUserIds=e.groupData.groupOwners.map((function(e){return e.id})),(0,P.vB)(n).then((function(t){t.errCode||(e.$message.success("保存成功"),e.isShowEditGroupDialog=!1,e.groupData={groupOwners:[]},e.fetchGroupsFunction())}))}else e.$message.error("请填写表单必填项")})):this.$message.warning("组长人数至少需要 1 人,最多为 20 人")},onGroupOwnerRemove:function(e){this.groupData.groupOwners.splice(e,1)},onGroupOwnerSelect:function(e){this.groupData.groupOwners.some((function(t){return t.id==e.id}))||this.groupData.groupOwners.push(e),this.userQueryData.nicknameOrUsernameOrEmailContains=null},toCreatePage:function(){this.isShowEditGroupDialog=!0,this.groupData={groupOwners:[]}},toEditPage:function(e){var t=this;(0,P.ex)(e).then((function(e){e.errCode||(t.isShowEditGroupDialog=!0,t.groupData=e.data)}))},toGroupDashboard:function(e,t){this.$router.push({path:"/groups/"+e,query:{groupName:t}})},toDocumentPage:function(e){var t=e.groupId,n=e.projectId;this.$router.push({path:"/groups/"+t+"/projects/"+n+"/documents",query:{projectName:e.projectName,groupName:e.groupName}})},onFavoriteProjectPageChange:function(e){e&&(this.favoriteProjectPageQuery.page=e-1,this.fetchUserFavorites())},onRemoveFavorite:function(e){var t=this;(0,b.Ni)(e).then((function(e){e.errCode||(t.$message.success("成功取消"),t.fetchUserFavorites())}))},onProjectDelete:function(e){var t=this;this.$confirm("确认删除该项目?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){(0,k.jI)(t.groupId,e).then((function(e){e.errCode||(t.$message.success("删除成功"),t.fetchUserFavorites())}))}))},onTabClick:function(e){this.$store.commit("switchGroupListActiveTab",e.props.name)}}},G=n(83744);const O=(0,G.Z)(j,[["render",v]]);var E=O}}]); -//# sourceMappingURL=206-legacy.8d16f9c5.js.map \ No newline at end of file +"use strict";(self["webpackChunkdatabasir"]=self["webpackChunkdatabasir"]||[]).push([[314],{47042:function(e,t,n){var r=n(82109),u=n(17854),o=n(43157),a=n(4411),i=n(70111),l=n(51400),c=n(26244),s=n(45656),p=n(86135),f=n(5112),d=n(81194),m=n(50206),g=d("slice"),w=f("species"),h=u.Array,W=Math.max;r({target:"Array",proto:!0,forced:!g},{slice:function(e,t){var n,r,u,f=s(this),d=c(f),g=l(e,d),_=l(void 0===t?d:t,d);if(o(f)&&(n=f.constructor,a(n)&&(n===h||o(n.prototype))?n=void 0:i(n)&&(n=n[w],null===n&&(n=void 0)),n===h||void 0===n))return m(f,g,_);for(r=new(void 0===n?h:n)(W(_-g,0)),u=0;g<_;g++,u++)g in f&&p(r,u,f[g]);return r.length=u,r}})},36314:function(e,t,n){n.r(t),n.d(t,{default:function(){return z}});n(68309),n(82526),n(41817),n(47042);var r=n(66252),u=n(3577),o=n(49963),a={style:{display:"flex","justify-content":"space-between"}},i=["onClick"],l={style:{color:"#909399","font-size":"13px"}},c={style:{color:"#909399"}},s={key:1},p=(0,r.Uk)(" 更多 "),f=(0,r.Uk)("查看文档"),d=(0,r.Uk)("取消关注"),m=(0,r.Uk)("删除项目"),g=(0,r._)("h2",null,"组长管理",-1),w=(0,r.Uk)("保存"),h=(0,r.Uk)("取消"),W=(0,r.Uk)("删除分组"),_=(0,r.Uk)("确认删除分组");function v(e,t,n,v,D,P){var y=(0,r.up)("el-button"),b=(0,r.up)("el-tooltip"),k=(0,r.up)("el-col"),C=(0,r.up)("el-input"),j=(0,r.up)("el-row"),G=(0,r.up)("el-empty"),O=(0,r.up)("el-link"),E=(0,r.up)("user"),z=(0,r.up)("el-icon"),U=(0,r.up)("el-tag"),x=(0,r.up)("arrow-down"),R=(0,r.up)("el-dropdown-item"),N=(0,r.up)("el-dropdown-menu"),S=(0,r.up)("el-dropdown"),T=(0,r.up)("el-space"),V=(0,r.up)("folder"),F=(0,r.up)("el-card"),I=(0,r.up)("el-main"),$=(0,r.up)("el-pagination"),Q=(0,r.up)("el-footer"),q=(0,r.up)("el-container"),A=(0,r.up)("el-tab-pane"),L=(0,r.up)("el-table-column"),M=(0,r.up)("database-icon"),Y=(0,r.up)("el-table"),B=(0,r.up)("el-tabs"),H=(0,r.up)("el-form-item"),K=(0,r.up)("el-autocomplete"),Z=(0,r.up)("el-form"),J=(0,r.up)("warning-filled"),X=(0,r.up)("el-collapse-item"),ee=(0,r.up)("el-collapse"),te=(0,r.up)("el-dialog"),ne=(0,r.Q2)("require-roles");return(0,r.wg)(),(0,r.iD)(r.HY,null,[(0,r.Wm)(B,{modelValue:P.activeTab,"onUpdate:modelValue":t[3]||(t[3]=function(e){return P.activeTab=e}),onTabClick:P.onTabClick},{default:(0,r.w5)((function(){return[(0,r.Wm)(A,{label:"项目分组",name:"groupListTab"},{default:(0,r.w5)((function(){return[(0,r.Wm)(q,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(I,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(j,{gutter:12},{default:(0,r.w5)((function(){return[(0,r.wy)(((0,r.wg)(),(0,r.j4)(k,{xs:24,sm:24,md:12,lg:5,xl:3},{default:(0,r.w5)((function(){return[(0,r.Wm)(b,{content:"创建一个分组",placement:"top"},{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{type:"plain",icon:"plus",style:{width:"100%"},onClick:t[0]||(t[0]=function(e){return P.toCreatePage()})})]})),_:1})]})),_:1})),[[ne,["SYS_OWNER"]]]),(0,r.Wm)(k,{xs:24,sm:24,md:12,lg:8,xl:8},{default:(0,r.w5)((function(){return[(0,r.Wm)(C,{onChange:P.onQuery,modelValue:D.groupPageQuery.groupNameContains,"onUpdate:modelValue":t[1]||(t[1]=function(e){return D.groupPageQuery.groupNameContains=e}),label:"组名",placeholder:"组名称搜索","prefix-icon":"search"},null,8,["onChange","modelValue"])]})),_:1})]})),_:1}),0==D.groupPageData.data.length?((0,r.wg)(),(0,r.j4)(j,{key:0},{default:(0,r.w5)((function(){return[(0,r.Wm)(k,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(G,{description:"请先创建分组"})]})),_:1})]})),_:1})):((0,r.wg)(),(0,r.j4)(j,{key:1,gutter:20},{default:(0,r.w5)((function(){return[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(D.groupPageData.data,(function(e){return(0,r.wg)(),(0,r.j4)(k,{xs:24,sm:12,md:12,lg:8,xl:6,key:e.id,style:{"margin-bottom":"20px"}},{default:(0,r.w5)((function(){return[(0,r.Wm)(F,{shadow:"hover",onMouseenter:function(t){return D.mouseEnterGroupId=e.id},onMouseleave:t[2]||(t[2]=function(e){return D.mouseEnterGroupId=null}),onClick:function(t){return P.toGroupDashboard(e.id,e.name)},class:"box"},{default:(0,r.w5)((function(){return[(0,r._)("div",a,[(0,r.Wm)(O,{underline:!1},{default:(0,r.w5)((function(){return[(0,r._)("div",{onClick:function(t){return P.toGroupDashboard(e.id,e.name)},style:{margin:"0 auto"}},[(0,r._)("h4",null,(0,u.zw)(e.name),1)],8,i)]})),_:2},1024),(0,r.wy)((0,r.Wm)(O,{underline:!1,onClick:(0,o.iM)((function(t){return P.toEditPage(e.id,e.name)}),["stop"]),icon:"Edit",style:{"margin-left":"8px"}},null,8,["onClick"]),[[o.F8,e.id==D.mouseEnterGroupId],[ne,["SYS_OWNER","GROUP_OWNER?groupId="+e.id]]])]),(0,r.Wm)(T,{direction:"vertical",alignment:"stretch",size:16},{default:(0,r.w5)((function(){return[(0,r._)("span",l,(0,u.zw)(e.description),1),(0,r.Wm)(T,{wrap:""},{default:(0,r.w5)((function(){return[(0,r.Wm)(b,{content:"组长"},{default:(0,r.w5)((function(){return[(0,r.Wm)(z,{color:"#909399"},{default:(0,r.w5)((function(){return[(0,r.Wm)(E)]})),_:1})]})),_:1}),((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(e.groupOwnerNames.slice(0,2),(function(e,t){return(0,r.wg)(),(0,r.j4)(U,{key:t,type:"info"},{default:(0,r.w5)((function(){return[(0,r.Uk)((0,u.zw)(e),1)]})),_:2},1024)})),128)),e.groupOwnerNames.length>2?((0,r.wg)(),(0,r.j4)(S,{key:0},{dropdown:(0,r.w5)((function(){return[(0,r.Wm)(N,null,{default:(0,r.w5)((function(){return[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(e.groupOwnerNames.slice(2),(function(e,t){return(0,r.wg)(),(0,r.j4)(R,{key:t},{default:(0,r.w5)((function(){return[(0,r.Wm)(U,{type:"info"},{default:(0,r.w5)((function(){return[(0,r.Uk)((0,u.zw)(e),1)]})),_:2},1024)]})),_:2},1024)})),128))]})),_:2},1024)]})),default:(0,r.w5)((function(){return[(0,r.Wm)(z,{class:"el-icon--right"},{default:(0,r.w5)((function(){return[(0,r.Wm)(x)]})),_:1})]})),_:2},1024)):(0,r.kq)("",!0)]})),_:2},1024),(0,r.Wm)(T,{wrap:""},{default:(0,r.w5)((function(){return[(0,r.Wm)(b,{content:"项目数"},{default:(0,r.w5)((function(){return[(0,r.Wm)(z,{color:"#909399"},{default:(0,r.w5)((function(){return[(0,r.Wm)(V)]})),_:1})]})),_:1}),(0,r._)("span",c,(0,u.zw)(e.projectCount),1)]})),_:2},1024)]})),_:2},1024)]})),_:2},1032,["onMouseenter","onClick"])]})),_:2},1024)})),128))]})),_:1}))]})),_:1}),(0,r.Wm)(Q,null,{default:(0,r.w5)((function(){return[(0,r.Wm)($,{layout:"prev, pager, next","hide-on-single-page":!1,currentPage:D.groupPageData.number,"page-size":D.groupPageData.size,"page-count":D.groupPageData.totalPages,onCurrentChange:P.onPageChange},null,8,["currentPage","page-size","page-count","onCurrentChange"])]})),_:1})]})),_:1})]})),_:1}),(0,r.Wm)(A,{label:"关注项目",name:"favoriteProjectListTab"},{default:(0,r.w5)((function(){return[(0,r.Wm)(q,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(I,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(Y,{data:D.favoriteProjectPageData.data,stripe:""},{default:(0,r.w5)((function(){return[(0,r.Wm)(L,{prop:"projectId",label:"项目 ID"}),(0,r.Wm)(L,{prop:"projectName",label:"项目名称"},{default:(0,r.w5)((function(e){return[(0,r.Wm)(O,{onClick:function(t){return P.toDocumentPage(e.row)}},{default:(0,r.w5)((function(){return[(0,r._)("span",null,(0,u.zw)(e.row.projectName),1)]})),_:2},1032,["onClick"])]})),_:1}),(0,r.Wm)(L,{prop:"projectDescription",label:"项目描述"}),(0,r.Wm)(L,{label:"定时同步",align:"center"},{default:(0,r.w5)((function(e){return[e.row.isAutoSync?((0,r.wg)(),(0,r.j4)(U,{key:0},{default:(0,r.w5)((function(){return[(0,r.Uk)((0,u.zw)(e.row.autoSyncCron),1)]})),_:2},1024)):((0,r.wg)(),(0,r.iD)("span",s," 无 "))]})),_:1}),(0,r.Wm)(L,{label:"数据库类型"},{default:(0,r.w5)((function(e){return[(0,r.Wm)(M,{databaseType:e.row.databaseType,icon:e.row.icon},null,8,["databaseType","icon"])]})),_:1}),(0,r.Wm)(L,{prop:"databaseName",label:"数据库名称"}),(0,r.Wm)(L,{prop:"groupName",label:"所属分组"},{default:(0,r.w5)((function(e){return[(0,r.Wm)(O,{onClick:function(t){return P.toGroupDashboard(e.row.groupId,e.row.groupName)},icon:"List"},{default:(0,r.w5)((function(){return[(0,r.Uk)((0,u.zw)(e.row.groupName),1)]})),_:2},1032,["onClick"])]})),_:1}),(0,r.Wm)(L,{prop:"createAt",label:"关注时间"}),(0,r.Wm)(L,{label:"操作"},{default:(0,r.w5)((function(t){return[(0,r.Wm)(S,null,{dropdown:(0,r.w5)((function(){return[(0,r.Wm)(N,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(R,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{type:"primary",size:"small",onClick:(0,o.iM)((function(e){return P.toDocumentPage(t.row)}),["stop"]),icon:"View"},{default:(0,r.w5)((function(){return[f]})),_:2},1032,["onClick"])]})),_:2},1024),(0,r.Wm)(R,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{type:"warning",size:"small",onClick:(0,o.iM)((function(e){return P.onRemoveFavorite(t.row.projectId)}),["stop"]),icon:"StarFilled"},{default:(0,r.w5)((function(){return[d]})),_:2},1032,["onClick"])]})),_:2},1024),(0,r.wy)(((0,r.wg)(),(0,r.j4)(R,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{type:"danger",size:"small",onClick:(0,o.iM)((function(e){return P.onProjectDelete(t.row.projectId)}),["stop"]),icon:"Remove"},{default:(0,r.w5)((function(){return[m]})),_:2},1032,["onClick"])]})),_:2},1024)),[[ne,["SYS_OWNER","GROUP_OWNER?groupId="+e.groupId]]])]})),_:2},1024)]})),default:(0,r.w5)((function(){return[(0,r._)("span",null,[p,(0,r.Wm)(z,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(x)]})),_:1})])]})),_:2},1024)]})),_:1})]})),_:1},8,["data"])]})),_:1}),(0,r.Wm)(Q,null,{default:(0,r.w5)((function(){return[(0,r.Wm)($,{layout:"prev, pager, next","hide-on-single-page":!1,currentPage:D.favoriteProjectPageData.number,"page-size":D.favoriteProjectPageData.size,"page-count":D.favoriteProjectPageData.totalPages,onCurrentChange:P.onFavoriteProjectPageChange},null,8,["currentPage","page-size","page-count","onCurrentChange"])]})),_:1})]})),_:1})]})),_:1})]})),_:1},8,["modelValue","onTabClick"]),(0,r.Wm)(te,{modelValue:D.isShowEditGroupDialog,"onUpdate:modelValue":t[10]||(t[10]=function(e){return D.isShowEditGroupDialog=e}),center:"","destroy-on-close":"",width:P.dialogWidth()},{default:(0,r.w5)((function(){return[(0,r.Wm)(Z,{model:D.groupData,rules:D.groupDataRule,ref:"groupFormRef","label-position":"top"},{default:(0,r.w5)((function(){return[(0,r.Wm)(H,{label:"名称",prop:"name"},{default:(0,r.w5)((function(){return[(0,r.Wm)(C,{modelValue:D.groupData.name,"onUpdate:modelValue":t[4]||(t[4]=function(e){return D.groupData.name=e})},null,8,["modelValue"])]})),_:1}),(0,r.Wm)(H,{label:"描述",prop:"description"},{default:(0,r.w5)((function(){return[(0,r.Wm)(C,{modelValue:D.groupData.description,"onUpdate:modelValue":t[5]||(t[5]=function(e){return D.groupData.description=e}),type:"textarea"},null,8,["modelValue"])]})),_:1}),g,(0,r.Wm)(H,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(K,{modelValue:D.userQueryData.nicknameOrUsernameOrEmailContains,"onUpdate:modelValue":t[6]||(t[6]=function(e){return D.userQueryData.nicknameOrUsernameOrEmailContains=e}),"fetch-suggestions":P.queryUsersAsync,placeholder:"用户名、昵称或邮箱搜索",onSelect:P.onGroupOwnerSelect,clearable:""},null,8,["modelValue","fetch-suggestions","onSelect"])]})),_:1}),(0,r.Wm)(H,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(T,{wrap:""},{default:(0,r.w5)((function(){return[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(D.groupData.groupOwners,(function(e,t){return(0,r.wg)(),(0,r.j4)(U,{key:e.id,type:"primary",size:"large",closable:"","disable-transitions":!1,onClose:function(e){return P.onGroupOwnerRemove(t)}},{default:(0,r.w5)((function(){return[(0,r.Wm)(b,{content:e.email,placement:"top"},{default:(0,r.w5)((function(){return[(0,r._)("span",null,(0,u.zw)(e.nickname),1)]})),_:2},1032,["content"])]})),_:2},1032,["onClose"])})),128))]})),_:1})]})),_:1}),(0,r.Wm)(H,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{type:"primary",onClick:t[7]||(t[7]=function(e){return P.onGroupSave("groupFormRef")})},{default:(0,r.w5)((function(){return[w]})),_:1}),(0,r.Wm)(y,{onClick:t[8]||(t[8]=function(e){return D.isShowEditGroupDialog=!1})},{default:(0,r.w5)((function(){return[h]})),_:1})]})),_:1})]})),_:1},8,["model","rules"]),D.groupData.id?((0,r.wg)(),(0,r.j4)(ee,{key:0},{default:(0,r.w5)((function(){return[(0,r.Wm)(X,{name:"1"},{title:(0,r.w5)((function(){return[(0,r.Wm)(z,null,{default:(0,r.w5)((function(){return[(0,r.Wm)(J)]})),_:1}),W]})),default:(0,r.w5)((function(){return[(0,r.Wm)(b,{content:"数据一旦删除将无法恢复,谨慎操作",placement:"top"},{default:(0,r.w5)((function(){return[(0,r.Wm)(y,{icon:"delete",size:"large",style:{width:"100%",margin:"0 auto"},onClick:t[9]||(t[9]=function(e){return P.onGroupDelete(D.groupData.id)})},{default:(0,r.w5)((function(){return[_]})),_:1})]})),_:1})]})),_:1})]})),_:1})):(0,r.kq)("",!0)]})),_:1},8,["modelValue","width"])],64)}var D=n(48534),P=(n(21249),n(40561),n(41539),n(35666),n(78337)),y=n(63110),b=n(19080),k=n(79324),C=n(51836),j=n(98968),G={data:function(){return{isShowEditGroupDialog:!1,mouseEnterGroupId:null,groupData:{groupOwners:[]},groupDataRule:{name:[this.requiredInputValidRule("请输入有效昵称")]},userQueryData:{nicknameContains:null,nicknameOrUsernameOrEmailContains:null,size:50},groupPageData:{data:[],number:1,size:8,totalElements:0,totalPages:0},groupPageQuery:{page:0,size:12,groupNameContains:null},favoriteProjectPageData:{data:[],number:1,size:15,totalElements:0,totalPages:0},favoriteProjectPageQuery:{page:0,size:20,projectNameContains:null}}},created:function(){this.fetchGroupsFunction(),this.onFavoriteProjectPageChange(1)},computed:{activeTab:{get:function(){return this.$store.state.groupListActiveTab?this.$store.state.groupListActiveTab:(this.$store.commit("switchGroupListActiveTab","groupListTab"),"groupListTab")},set:function(e){this.$store.commit("switchGroupListActiveTab",e)}}},methods:{isPermit:function(e){return C.E.hasAnyRoles([e])},fetchUserFavorites:function(){var e=this;return(0,D.Z)(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,(0,b.V$)(e.favoriteProjectPageQuery);case 2:n=t.sent,e.favoriteProjectPageData.data=n.data.content,e.favoriteProjectPageData.number=n.data.number+1,e.favoriteProjectPageData.size=n.data.size,e.favoriteProjectPageData.totalPages=n.data.totalPages,e.favoriteProjectPageData.totalElements=n.data.totalElements;case 8:case"end":return t.stop()}}),t)})))()},fetchGroupsFunction:function(){var e=this;return(0,D.Z)(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,(0,P.Wq)(e.groupPageQuery);case 2:n=t.sent,e.groupPageData.data=n.data.content,e.groupPageData.number=n.data.number+1,e.groupPageData.size=n.data.size,e.groupPageData.totalPages=n.data.totalPages,e.groupPageData.totalElements=n.data.totalElements;case 8:case"end":return t.stop()}}),t)})))()},requiredInputValidRule:function(e){return{required:!0,message:e,trigger:"blur"}},requiredGroupOwners:function(){return!(null==this.groupData.groupOwners||this.groupData.groupOwners.length<1||this.groupData.groupOwners.length>20)},onPageChange:function(e){e&&(this.groupPageQuery.page=e-1,this.fetchGroupsFunction())},onQuery:function(){this.fetchGroupsFunction()},queryUsersAsync:function(e,t){var n=this;return(0,D.Z)(regeneratorRuntime.mark((function e(){var r,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,(0,y.yw)(n.userQueryData).then((function(e){return e.data.content}));case 2:r=e.sent,u=r.map((function(e){return{value:e.nickname,nickname:e.nickname,email:e.email,id:e.id}})),t(u);case 5:case"end":return e.stop()}}),e)})))()},onGroupDelete:function(e){var t=this;this.$confirm("确认删除该分组?删除后数据将无法恢复","警告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){(0,P.iE)(e).then((function(e){e.errCode||(t.$message.success("删除成功"),t.isShowEditGroupDialog=!1,t.fetchGroupsFunction())}))}))},onGroupSave:function(){var e=this;this.requiredGroupOwners()?this.$refs.groupFormRef.validate((function(t){if(t){var n=Object.assign({},e.groupData);n.groupOwnerUserIds=e.groupData.groupOwners.map((function(e){return e.id})),(0,P.vB)(n).then((function(t){t.errCode||(e.$message.success("保存成功"),e.isShowEditGroupDialog=!1,e.groupData={groupOwners:[]},e.fetchGroupsFunction())}))}else e.$message.error("请填写表单必填项")})):this.$message.warning("组长人数至少需要 1 人,最多为 20 人")},onGroupOwnerRemove:function(e){this.groupData.groupOwners.splice(e,1)},onGroupOwnerSelect:function(e){this.groupData.groupOwners.some((function(t){return t.id==e.id}))||this.groupData.groupOwners.push(e),this.userQueryData.nicknameOrUsernameOrEmailContains=null},toCreatePage:function(){this.isShowEditGroupDialog=!0,this.groupData={groupOwners:[]}},toEditPage:function(e){var t=this;(0,P.ex)(e).then((function(e){e.errCode||(t.isShowEditGroupDialog=!0,t.groupData=e.data)}))},toGroupDashboard:function(e,t){this.$router.push({path:"/groups/"+e,query:{groupName:t}})},toDocumentPage:function(e){var t=e.groupId,n=e.projectId;this.$router.push({path:"/groups/"+t+"/projects/"+n+"/documents",query:{projectName:e.projectName,groupName:e.groupName}})},onFavoriteProjectPageChange:function(e){e&&(this.favoriteProjectPageQuery.page=e-1,this.fetchUserFavorites())},onRemoveFavorite:function(e){var t=this;(0,b.Ni)(e).then((function(e){e.errCode||(t.$message.success("成功取消"),t.fetchUserFavorites())}))},onProjectDelete:function(e){var t=this;this.$confirm("确认删除该项目?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){(0,k.jI)(t.groupId,e).then((function(e){e.errCode||(t.$message.success("删除成功"),t.fetchUserFavorites())}))}))},onTabClick:function(e){this.$store.commit("switchGroupListActiveTab",e.props.name)},dialogWidth:function(){return(0,j.c)()}}},O=n(83744);const E=(0,O.Z)(G,[["render",v]]);var z=E}}]); +//# sourceMappingURL=314-legacy.e55474ea.js.map \ No newline at end of file diff --git a/api/src/main/resources/static/js/314-legacy.e55474ea.js.map b/api/src/main/resources/static/js/314-legacy.e55474ea.js.map new file mode 100644 index 0000000..0a6357e --- /dev/null +++ b/api/src/main/resources/static/js/314-legacy.e55474ea.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/314-legacy.e55474ea.js","mappings":"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","sources":["webpack://databasir/./node_modules/core-js/modules/es.array.slice.js","webpack://databasir/./src/views/GroupList.vue","webpack://databasir/./src/views/GroupList.vue?d658"],"sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","<template>\r\n <el-tabs v-model=\"activeTab\" @tab-click=\"onTabClick\">\r\n <el-tab-pane label=\"项目分组\" name=\"groupListTab\">\r\n <el-container>\r\n <el-main>\r\n <el-row :gutter=\"12\">\r\n <el-col :xs=\"24\" :sm=\"24\" :md=\"12\" :lg=\"5\" :xl=\"3\" v-require-roles=\"['SYS_OWNER']\">\r\n <el-tooltip content=\"创建一个分组\" placement=\"top\">\r\n <el-button type=\"plain\" icon=\"plus\" style=\"width:100%;\" @click=\"toCreatePage()\"></el-button>\r\n </el-tooltip>\r\n </el-col>\r\n <el-col :xs=\"24\" :sm=\"24\" :md=\"12\" :lg=\"8\" :xl=\"8\" >\r\n <el-input @change='onQuery' v-model=\"groupPageQuery.groupNameContains\" label=\"组名\" placeholder=\"组名称搜索\" prefix-icon=\"search\"/>\r\n </el-col>\r\n </el-row>\r\n <el-row v-if=\"groupPageData.data.length == 0\">\r\n <el-col>\r\n <el-empty description=\"请先创建分组\"></el-empty>\r\n </el-col>\r\n </el-row>\r\n <el-row v-else :gutter=\"20\" >\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"12\" :lg=\"8\" :xl=\"6\" v-for=\"(group) in groupPageData.data\" :key=\"group.id\" style=\"margin-bottom:20px;\">\r\n <el-card shadow=\"hover\" @mouseenter=\"mouseEnterGroupId=group.id\" @mouseleave=\"mouseEnterGroupId=null\" @click=\"toGroupDashboard(group.id, group.name)\" class=\"box\">\r\n <div style=\"display:flex;justify-content: space-between;\">\r\n <el-link :underline=\"false\" >\r\n <div @click=\"toGroupDashboard(group.id, group.name)\" style=\"margin: 0 auto;\">\r\n <h4>{{ group.name }}</h4> \r\n </div>\r\n </el-link>\r\n <el-link :underline=\"false\" \r\n v-show=\"group.id == mouseEnterGroupId\" \r\n v-require-roles=\"['SYS_OWNER', 'GROUP_OWNER?groupId='+group.id]\" \r\n v-on:click.stop=\"toEditPage(group.id, group.name)\"\r\n icon=\"Edit\"\r\n style=\"margin-left: 8px;\" >\r\n </el-link>\r\n </div>\r\n <el-space direction=\"vertical\" alignment=\"stretch\" :size=\"16\">\r\n <span style=\"color:#909399;font-size:13px;\">\r\n {{ group.description }}\r\n </span>\r\n <el-space wrap>\r\n <el-tooltip content=\"组长\">\r\n <el-icon color=\"#909399\"><user /></el-icon>\r\n </el-tooltip>\r\n <el-tag v-for=\"(owner, index) in group.groupOwnerNames.slice(0, 2)\" :key=\"index\" type=\"info\"> {{ owner }}</el-tag>\r\n <template v-if=\"group.groupOwnerNames.length > 2\">\r\n <el-dropdown>\r\n <el-icon class=\"el-icon--right\">\r\n <arrow-down />\r\n </el-icon>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-for=\"(owner, index) in group.groupOwnerNames.slice(2)\" :key=\"index\">\r\n <el-tag type=\"info\">{{ owner }}</el-tag>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </template>\r\n </el-space>\r\n <el-space wrap>\r\n <el-tooltip content=\"项目数\">\r\n <el-icon color=\"#909399\"><folder /></el-icon>\r\n </el-tooltip>\r\n <span style=\"color:#909399\">\r\n {{ group.projectCount }}\r\n </span>\r\n </el-space>\r\n </el-space>\r\n </el-card>\r\n </el-col>\r\n </el-row>\r\n </el-main>\r\n <el-footer>\r\n <el-pagination layout=\"prev, pager, next\" \r\n :hide-on-single-page=\"false\"\r\n :currentPage=\"groupPageData.number\" \r\n :page-size=\"groupPageData.size\" \r\n :page-count=\"groupPageData.totalPages\"\r\n @current-change=\"onPageChange\">\r\n </el-pagination>\r\n </el-footer>\r\n </el-container>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"关注项目\" name=\"favoriteProjectListTab\">\r\n <el-container>\r\n <el-main>\r\n <el-table :data=\"favoriteProjectPageData.data\" stripe>\r\n <el-table-column prop=\"projectId\" label=\"项目 ID\"/>\r\n <el-table-column prop=\"projectName\" label=\"项目名称\" >\r\n <template v-slot=\"scope\">\r\n <el-link @click=\"toDocumentPage(scope.row)\">\r\n <span>{{ scope.row.projectName }}</span>\r\n </el-link>\r\n </template>\r\n \r\n </el-table-column>\r\n <el-table-column prop=\"projectDescription\" label=\"项目描述\" />\r\n <el-table-column label=\"定时同步\" align=\"center\">\r\n <template v-slot=\"scope\">\r\n <el-tag v-if=\"scope.row.isAutoSync\">\r\n {{ scope.row.autoSyncCron }}\r\n </el-tag>\r\n <span v-else>\r\n 无\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"数据库类型\">\r\n <template v-slot=\"scope\">\r\n <database-icon :databaseType=\"scope.row.databaseType\" :icon=\"scope.row.icon\"/>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"databaseName\" label=\"数据库名称\" />\r\n <el-table-column prop=\"groupName\" label=\"所属分组\">\r\n <template v-slot=\"scope\">\r\n <el-link @click=\"toGroupDashboard(scope.row.groupId, scope.row.groupName)\" icon=\"List\">\r\n {{ scope.row.groupName }}\r\n </el-link>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"createAt\" label=\"关注时间\" />\r\n <el-table-column label=\"操作\" >\r\n <template v-slot=\"scope\">\r\n <el-dropdown>\r\n <span>\r\n 更多\r\n <el-icon >\r\n <arrow-down />\r\n </el-icon>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item>\r\n <el-button type=\"primary\" size=\"small\" @click.stop=\"toDocumentPage(scope.row)\" icon=\"View\">查看文档</el-button>\r\n </el-dropdown-item>\r\n <el-dropdown-item>\r\n <el-button type=\"warning\" size=\"small\" @click.stop=\"onRemoveFavorite(scope.row.projectId)\" icon=\"StarFilled\">取消关注</el-button>\r\n </el-dropdown-item>\r\n <el-dropdown-item v-require-roles=\"['SYS_OWNER', 'GROUP_OWNER?groupId='+groupId]\">\r\n <el-button type=\"danger\" size=\"small\" @click.stop=\"onProjectDelete(scope.row.projectId)\" icon=\"Remove\">删除项目</el-button>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-main>\r\n <el-footer>\r\n <el-pagination layout=\"prev, pager, next\" \r\n :hide-on-single-page=\"false\"\r\n :currentPage=\"favoriteProjectPageData.number\" \r\n :page-size=\"favoriteProjectPageData.size\" \r\n :page-count=\"favoriteProjectPageData.totalPages\"\r\n @current-change=\"onFavoriteProjectPageChange\">\r\n </el-pagination>\r\n </el-footer>\r\n </el-container>\r\n \r\n </el-tab-pane>\r\n </el-tabs>\r\n\r\n <el-dialog v-model=\"isShowEditGroupDialog\" center destroy-on-close :width=\"dialogWidth()\">\r\n <el-form :model=\"groupData\" :rules=\"groupDataRule\" ref=\"groupFormRef\" label-position=\"top\">\r\n <el-form-item label=\"名称\" prop=\"name\">\r\n <el-input v-model=\"groupData.name\"></el-input>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"描述\" prop=\"description\">\r\n <el-input v-model=\"groupData.description\" type=\"textarea\"></el-input>\r\n </el-form-item>\r\n\r\n <h2>组长管理</h2>\r\n <el-form-item>\r\n <el-autocomplete\r\n v-model=\"userQueryData.nicknameOrUsernameOrEmailContains\"\r\n :fetch-suggestions=\"queryUsersAsync\"\r\n placeholder=\"用户名、昵称或邮箱搜索\"\r\n @select=\"onGroupOwnerSelect\"\r\n clearable\r\n >\r\n </el-autocomplete>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-space wrap>\r\n <el-tag\r\n v-for=\"(user, index) in groupData.groupOwners\"\r\n :key=\"user.id\"\r\n type=\"primary\"\r\n size=\"large\"\r\n closable\r\n :disable-transitions=\"false\"\r\n @close=\"onGroupOwnerRemove(index)\"\r\n >\r\n <el-tooltip :content=\"user.email\" placement=\"top\">\r\n <span>{{ user.nickname }}</span>\r\n </el-tooltip>\r\n </el-tag>\r\n </el-space>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" @click=\"onGroupSave('groupFormRef')\">保存</el-button>\r\n <el-button @click=\"isShowEditGroupDialog = false\">取消</el-button>\r\n </el-form-item>\r\n </el-form>\r\n <el-collapse v-if=\"groupData.id\">\r\n <el-collapse-item name=\"1\">\r\n <template #title><el-icon><warning-filled /></el-icon>删除分组</template>\r\n <el-tooltip content=\"数据一旦删除将无法恢复,谨慎操作\" placement=\"top\">\r\n <el-button icon=\"delete\" size=\"large\" style=\"width:100%;margin:0 auto;\" @click=\"onGroupDelete(groupData.id)\">确认删除分组</el-button>\r\n </el-tooltip>\r\n </el-collapse-item>\r\n </el-collapse>\r\n </el-dialog>\r\n</template>\r\n\r\n<style>\r\n.card-footer {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 22px;\r\n}\r\n\r\n.el-row {\r\n margin-bottom: 6px;\r\n}\r\n\r\n.el-row:last-child {\r\n margin-bottom: 0;\r\n}\r\n\r\n.el-col {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.box {\r\n border-radius: 6px;\r\n border-width:1px;\r\n}\r\n\r\n</style>\r\n\r\n<script>\r\nimport { listGroups, getGroup, createOrUpdateGroup, deleteGroup } from \"@/api/Group\"\r\nimport { listUsers } from \"@/api/User\"\r\nimport { listFavorites, removeFavorite } from \"../api/UserProject\"\r\nimport { deleteProjectById } from \"../api/Project\"\r\nimport { user } from '../utils/auth'\r\nimport { dialogPercentWidth } from \"../utils/DialogWidthCalculator\"\r\n\r\nexport default {\r\n data() {\r\n return {\r\n isShowEditGroupDialog: false,\r\n mouseEnterGroupId: null,\r\n groupData: {\r\n groupOwners: []\r\n },\r\n groupDataRule: {\r\n name: [this.requiredInputValidRule('请输入有效昵称')],\r\n },\r\n userQueryData: {\r\n nicknameContains: null,\r\n nicknameOrUsernameOrEmailContains: null,\r\n size: 50\r\n },\r\n groupPageData: {\r\n data: [],\r\n number: 1,\r\n size: 8,\r\n totalElements:0,\r\n totalPages: 0\r\n },\r\n groupPageQuery: {\r\n page: 0,\r\n size: 12,\r\n groupNameContains: null\r\n },\r\n\r\n favoriteProjectPageData: {\r\n data: [],\r\n number: 1,\r\n size: 15,\r\n totalElements:0,\r\n totalPages: 0\r\n },\r\n favoriteProjectPageQuery: {\r\n page: 0,\r\n size: 20,\r\n projectNameContains: null\r\n }\r\n }\r\n },\r\n \r\n created() {\r\n this.fetchGroupsFunction()\r\n this.onFavoriteProjectPageChange(1)\r\n },\r\n\r\n computed: {\r\n activeTab: {\r\n get(){\r\n if (this.$store.state.groupListActiveTab) {\r\n return this.$store.state.groupListActiveTab\r\n } else {\r\n this.$store.commit('switchGroupListActiveTab', 'groupListTab')\r\n return \"groupListTab\"\r\n }\r\n },\r\n set(newVal) {\r\n this.$store.commit('switchGroupListActiveTab', newVal)\r\n }\r\n }\r\n },\r\n \r\n methods: {\r\n isPermit(role) {\r\n return user.hasAnyRoles([ role ])\r\n },\r\n async fetchUserFavorites() {\r\n const jsonData = await listFavorites(this.favoriteProjectPageQuery)\r\n this.favoriteProjectPageData.data = jsonData.data.content\r\n this.favoriteProjectPageData.number = jsonData.data.number + 1\r\n this.favoriteProjectPageData.size = jsonData.data.size\r\n this.favoriteProjectPageData.totalPages = jsonData.data.totalPages\r\n this.favoriteProjectPageData.totalElements = jsonData.data.totalElements\r\n },\r\n async fetchGroupsFunction() {\r\n const jsonData = await listGroups(this.groupPageQuery)\r\n this.groupPageData.data = jsonData.data.content\r\n this.groupPageData.number = jsonData.data.number + 1\r\n this.groupPageData.size = jsonData.data.size\r\n this.groupPageData.totalPages = jsonData.data.totalPages\r\n this.groupPageData.totalElements = jsonData.data.totalElements\r\n },\r\n requiredInputValidRule(message) {\r\n return {\r\n required: true,\r\n message: message,\r\n trigger: 'blur',\r\n }\r\n },\r\n requiredGroupOwners() {\r\n if (this.groupData.groupOwners == null \r\n || this.groupData.groupOwners.length < 1\r\n || this.groupData.groupOwners.length > 20) {\r\n return false\r\n } else {\r\n return true\r\n }\r\n },\r\n onPageChange(currentPage) {\r\n if (currentPage) {\r\n this.groupPageQuery.page = currentPage - 1\r\n this.fetchGroupsFunction()\r\n }\r\n },\r\n\r\n onQuery() {\r\n this.fetchGroupsFunction()\r\n },\r\n async queryUsersAsync(query, callback) {\r\n const data = await listUsers(this.userQueryData).then(resp => resp.data.content)\r\n const users = data.map(u => {\r\n return {\r\n value: u.nickname,\r\n nickname: u.nickname,\r\n email: u.email,\r\n id: u.id\r\n }\r\n })\r\n callback(users)\r\n },\r\n\r\n onGroupDelete(groupId) {\r\n this.$confirm('确认删除该分组?删除后数据将无法恢复', '警告', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n deleteGroup(groupId).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('删除成功')\r\n this.isShowEditGroupDialog = false\r\n this.fetchGroupsFunction()\r\n }\r\n })\r\n })\r\n },\r\n onGroupSave() {\r\n if (!this.requiredGroupOwners()) {\r\n this.$message.warning('组长人数至少需要 1 人,最多为 20 人')\r\n return\r\n }\r\n this.$refs.groupFormRef.validate(valid => {\r\n if (valid) {\r\n const request = Object.assign({}, this.groupData)\r\n request.groupOwnerUserIds = this.groupData.groupOwners.map(r => r.id)\r\n createOrUpdateGroup(request).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('保存成功')\r\n this.isShowEditGroupDialog = false\r\n this.groupData = { groupOwners: [] }\r\n this.fetchGroupsFunction()\r\n }\r\n })\r\n } else {\r\n this.$message.error('请填写表单必填项')\r\n }\r\n })\r\n \r\n },\r\n\r\n onGroupOwnerRemove(index) {\r\n this.groupData.groupOwners.splice(index, 1)\r\n },\r\n onGroupOwnerSelect(item) {\r\n if (!this.groupData.groupOwners.some(data => data.id == item.id)) {\r\n this.groupData.groupOwners.push(item)\r\n }\r\n \r\n this.userQueryData.nicknameOrUsernameOrEmailContains = null\r\n },\r\n toCreatePage() {\r\n this.isShowEditGroupDialog = true\r\n this.groupData = { groupOwners: [] }\r\n },\r\n toEditPage(groupId) {\r\n getGroup(groupId).then(resp => {\r\n if(!resp.errCode) {\r\n this.isShowEditGroupDialog = true\r\n this.groupData = resp.data\r\n }\r\n })\r\n },\r\n toGroupDashboard(groupId, groupName) {\r\n this.$router.push({path: \"/groups/\"+groupId, query: {groupName: groupName }})\r\n },\r\n\r\n toDocumentPage(favoriteProject) {\r\n const groupId = favoriteProject.groupId\r\n const projectId = favoriteProject.projectId\r\n this.$router.push({\r\n path: \"/groups/\" + groupId + \"/projects/\" + projectId + \"/documents\",\r\n query: { projectName: favoriteProject.projectName, groupName: favoriteProject.groupName }\r\n })\r\n },\r\n onFavoriteProjectPageChange(currentPage) {\r\n if (currentPage) {\r\n this.favoriteProjectPageQuery.page = currentPage - 1\r\n this.fetchUserFavorites()\r\n }\r\n },\r\n onRemoveFavorite(projectId) {\r\n removeFavorite(projectId).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('成功取消')\r\n this.fetchUserFavorites()\r\n }\r\n })\r\n },\r\n onProjectDelete(id) {\r\n this.$confirm('确认删除该项目?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n deleteProjectById(this.groupId, id).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('删除成功');\r\n this.fetchUserFavorites()\r\n }\r\n })\r\n })\r\n },\r\n onTabClick(tab) {\r\n this.$store.commit('switchGroupListActiveTab', tab.props.name)\r\n },\r\n dialogWidth() {\r\n return dialogPercentWidth()\r\n }\r\n }\r\n}\r\n\r\n</script>","import { render } from \"./GroupList.vue?vue&type=template&id=09d42977\"\nimport script from \"./GroupList.vue?vue&type=script&lang=js\"\nexport * from \"./GroupList.vue?vue&type=script&lang=js\"\n\nimport \"./GroupList.vue?vue&type=style&index=0&id=09d42977&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["$","global","isArray","isConstructor","isObject","toAbsoluteIndex","lengthOfArrayLike","toIndexedObject","createProperty","wellKnownSymbol","arrayMethodHasSpeciesSupport","un$Slice","HAS_SPECIES_SUPPORT","SPECIES","Array","max","Math","target","proto","forced","slice","start","end","Constructor","result","n","O","this","length","k","fin","undefined","constructor","prototype","style","_createElementVNode","_createVNode","_component_el_tabs","$options","$event","onTabClick","_component_el_tab_pane","label","name","_component_el_container","_component_el_main","_component_el_row","gutter","_createBlock","_component_el_col","xs","sm","md","lg","xl","_component_el_tooltip","content","placement","_component_el_button","type","icon","onClick","_component_el_input","onChange","$data","groupNameContains","placeholder","data","key","_component_el_empty","description","_createElementBlock","_Fragment","_renderList","group","id","_component_el_card","shadow","onMouseenter","onMouseleave","class","_component_el_link","underline","_toDisplayString","_component_el_space","direction","alignment","size","wrap","_component_el_icon","color","_component_user","groupOwnerNames","owner","index","_component_el_tag","_component_el_dropdown","dropdown","_component_el_dropdown_menu","_component_el_dropdown_item","_component_arrow_down","_component_folder","projectCount","_component_el_footer","_component_el_pagination","layout","currentPage","number","totalPages","onCurrentChange","_component_el_table","stripe","_component_el_table_column","prop","scope","row","projectName","align","isAutoSync","autoSyncCron","_hoisted_5","_component_database_icon","databaseType","groupId","groupName","projectId","_ctx","_component_el_dialog","center","width","_component_el_form","model","rules","ref","_component_el_form_item","_hoisted_10","_component_el_autocomplete","nicknameOrUsernameOrEmailContains","onSelect","clearable","groupOwners","user","closable","onClose","email","nickname","_component_el_collapse","_component_el_collapse_item","title","_component_warning_filled","isShowEditGroupDialog","mouseEnterGroupId","groupData","groupDataRule","requiredInputValidRule","userQueryData","nicknameContains","groupPageData","totalElements","groupPageQuery","page","favoriteProjectPageData","favoriteProjectPageQuery","projectNameContains","created","fetchGroupsFunction","onFavoriteProjectPageChange","computed","activeTab","get","$store","state","groupListActiveTab","commit","set","newVal","methods","isPermit","role","fetchUserFavorites","listFavorites","jsonData","listGroups","message","required","trigger","requiredGroupOwners","onPageChange","onQuery","queryUsersAsync","query","callback","listUsers","then","resp","users","map","u","value","onGroupDelete","$confirm","confirmButtonText","cancelButtonText","deleteGroup","errCode","$message","success","onGroupSave","$refs","groupFormRef","validate","valid","request","Object","assign","groupOwnerUserIds","r","createOrUpdateGroup","error","warning","onGroupOwnerRemove","splice","onGroupOwnerSelect","item","some","push","toCreatePage","toEditPage","getGroup","toGroupDashboard","$router","path","toDocumentPage","favoriteProject","onRemoveFavorite","removeFavorite","onProjectDelete","deleteProjectById","tab","props","dialogWidth","dialogPercentWidth","__exports__","render"],"sourceRoot":""} \ No newline at end of file diff --git a/api/src/main/resources/static/js/206.8babe551.js b/api/src/main/resources/static/js/314.358d11d3.js similarity index 59% rename from api/src/main/resources/static/js/206.8babe551.js rename to api/src/main/resources/static/js/314.358d11d3.js index 0d31207..02c8b26 100644 --- a/api/src/main/resources/static/js/206.8babe551.js +++ b/api/src/main/resources/static/js/314.358d11d3.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunkdatabasir"]=self["webpackChunkdatabasir"]||[]).push([[206],{8337:function(e,t,a){a.d(t,{Wq:function(){return n},ex:function(){return u},vB:function(){return l},iE:function(){return p},yF:function(){return c},E2:function(){return d},_j:function(){return m},q9:function(){return g}});var o=a(3872);const r="/api/v1.0/groups",n=e=>o.Z.get(r,{params:e}),u=e=>o.Z.get(r+"/"+e),l=e=>e.id&&null!=e.id?s(e):i(e),i=e=>o.Z.post(r,e),s=e=>o.Z.patch(r,e),p=e=>o.Z["delete"](r+"/"+e),c=(e,t)=>o.Z.get(r+"/"+e+"/members",{params:t}),d=(e,t)=>o.Z.post(r+"/"+e+"/members",t),m=(e,t)=>o.Z["delete"](r+"/"+e+"/members/"+t),g=(e,t,a)=>{const n={role:a};return o.Z.patch(r+"/"+e+"/members/"+t,n)}},9324:function(e,t,a){a.d(t,{hW:function(){return n},Rp:function(){return u},Iu:function(){return l},M7:function(){return s},Dg:function(){return p},lN:function(){return c},jI:function(){return g}});var o=a(3872);const r="/api/v1.0/projects",n=e=>o.Z.get(r,{params:e}),u=e=>o.Z.get(r+"/"+e),l=e=>e.id?m(e):i(e),i=e=>o.Z.post(r,e),s=e=>o.Z.post(r+"/test_connection",e),p=(e,t)=>o.Z.post(r+"/"+e+"/list_manual_tasks",t),c=(e,t)=>o.Z.patch(r+"/"+e+"/tasks/"+t+"/cancel"),d="/api/v1.0/groups",m=e=>o.Z.patch(d+"/"+e.groupId+"/projects",e),g=(e,t)=>o.Z["delete"](d+"/"+e+"/projects/"+t)},3110:function(e,t,a){a.d(t,{yw:function(){return n},Dx:function(){return u},B9:function(){return l},__:function(){return i},IJ:function(){return s},r4:function(){return p},oD:function(){return c},_:function(){return d},Uz:function(){return m},gQ:function(){return g},Gz:function(){return w}});var o=a(3872);const r="/api/v1.0/users",n=e=>o.Z.get(r,{params:e}),u=e=>o.Z.post(r+"/"+e+"/enable"),l=e=>o.Z.post(r+"/"+e+"/disable"),i=e=>o.Z.get(r+"/"+e),s=e=>o.Z["delete"](r+"/"+e),p=e=>o.Z.post(r,e),c=e=>o.Z.post(r+"/"+e+"/renew_password"),d=e=>o.Z.post(r+"/"+e+"/sys_owners"),m=e=>o.Z["delete"](r+"/"+e+"/sys_owners"),g=(e,t)=>o.Z.post(r+"/"+e+"/password",t),w=(e,t)=>o.Z.post(r+"/"+e+"/nickname",t)},9080:function(e,t,a){a.d(t,{V$:function(){return n},Ni:function(){return u},a3:function(){return l}});var o=a(3872);const r="/api/v1.0/user_projects/favorites",n=e=>o.Z.get(r,{params:e}),u=e=>o.Z["delete"](r+"/"+e),l=e=>o.Z.post(r+"/"+e)},2206:function(e,t,a){a.r(t),a.d(t,{default:function(){return O}});var o=a(6252),r=a(3577),n=a(9963);const u={style:{display:"flex","justify-content":"space-between"}},l=["onClick"],i={style:{color:"#909399","font-size":"13px"}},s={style:{color:"#909399"}},p={key:1},c=(0,o.Uk)(" 更多 "),d=(0,o.Uk)("查看文档"),m=(0,o.Uk)("取消关注"),g=(0,o.Uk)("删除项目"),w=(0,o._)("h2",null,"组长管理",-1),f=(0,o.Uk)("保存"),h=(0,o.Uk)("取消"),_=(0,o.Uk)("删除分组"),W=(0,o.Uk)("确认删除分组");function D(e,t,a,D,y,P){const b=(0,o.up)("el-button"),k=(0,o.up)("el-tooltip"),v=(0,o.up)("el-col"),C=(0,o.up)("el-input"),j=(0,o.up)("el-row"),G=(0,o.up)("el-empty"),O=(0,o.up)("el-link"),E=(0,o.up)("user"),z=(0,o.up)("el-icon"),U=(0,o.up)("el-tag"),Z=(0,o.up)("arrow-down"),N=(0,o.up)("el-dropdown-item"),I=(0,o.up)("el-dropdown-menu"),S=(0,o.up)("el-dropdown"),T=(0,o.up)("el-space"),V=(0,o.up)("folder"),x=(0,o.up)("el-card"),F=(0,o.up)("el-main"),R=(0,o.up)("el-pagination"),$=(0,o.up)("el-footer"),Q=(0,o.up)("el-container"),q=(0,o.up)("el-tab-pane"),A=(0,o.up)("el-table-column"),L=(0,o.up)("database-icon"),M=(0,o.up)("el-table"),Y=(0,o.up)("el-tabs"),B=(0,o.up)("el-form-item"),H=(0,o.up)("el-autocomplete"),K=(0,o.up)("el-form"),J=(0,o.up)("warning-filled"),X=(0,o.up)("el-collapse-item"),ee=(0,o.up)("el-collapse"),te=(0,o.up)("el-dialog"),ae=(0,o.Q2)("require-roles");return(0,o.wg)(),(0,o.iD)(o.HY,null,[(0,o.Wm)(Y,{modelValue:P.activeTab,"onUpdate:modelValue":t[3]||(t[3]=e=>P.activeTab=e),onTabClick:P.onTabClick},{default:(0,o.w5)((()=>[(0,o.Wm)(q,{label:"项目分组",name:"groupListTab"},{default:(0,o.w5)((()=>[(0,o.Wm)(Q,null,{default:(0,o.w5)((()=>[(0,o.Wm)(F,null,{default:(0,o.w5)((()=>[(0,o.Wm)(j,{gutter:12},{default:(0,o.w5)((()=>[(0,o.wy)(((0,o.wg)(),(0,o.j4)(v,{xs:24,sm:24,md:12,lg:5,xl:3},{default:(0,o.w5)((()=>[(0,o.Wm)(k,{content:"创建一个分组",placement:"top"},{default:(0,o.w5)((()=>[(0,o.Wm)(b,{type:"plain",icon:"plus",style:{width:"100%"},onClick:t[0]||(t[0]=e=>P.toCreatePage())})])),_:1})])),_:1})),[[ae,["SYS_OWNER"]]]),(0,o.Wm)(v,{xs:24,sm:24,md:12,lg:8,xl:8},{default:(0,o.w5)((()=>[(0,o.Wm)(C,{onChange:P.onQuery,modelValue:y.groupPageQuery.groupNameContains,"onUpdate:modelValue":t[1]||(t[1]=e=>y.groupPageQuery.groupNameContains=e),label:"组名",placeholder:"组名称搜索","prefix-icon":"search"},null,8,["onChange","modelValue"])])),_:1})])),_:1}),0==y.groupPageData.data.length?((0,o.wg)(),(0,o.j4)(j,{key:0},{default:(0,o.w5)((()=>[(0,o.Wm)(v,null,{default:(0,o.w5)((()=>[(0,o.Wm)(G,{description:"请先创建分组"})])),_:1})])),_:1})):((0,o.wg)(),(0,o.j4)(j,{key:1,gutter:20},{default:(0,o.w5)((()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(y.groupPageData.data,(e=>((0,o.wg)(),(0,o.j4)(v,{xs:24,sm:12,md:12,lg:8,xl:6,key:e.id,style:{"margin-bottom":"20px"}},{default:(0,o.w5)((()=>[(0,o.Wm)(x,{shadow:"hover",onMouseenter:t=>y.mouseEnterGroupId=e.id,onMouseleave:t[2]||(t[2]=e=>y.mouseEnterGroupId=null),onClick:t=>P.toGroupDashboard(e.id,e.name),class:"box"},{default:(0,o.w5)((()=>[(0,o._)("div",u,[(0,o.Wm)(O,{underline:!1},{default:(0,o.w5)((()=>[(0,o._)("div",{onClick:t=>P.toGroupDashboard(e.id,e.name),style:{margin:"0 auto"}},[(0,o._)("h4",null,(0,r.zw)(e.name),1)],8,l)])),_:2},1024),(0,o.wy)((0,o.Wm)(O,{underline:!1,onClick:(0,n.iM)((t=>P.toEditPage(e.id,e.name)),["stop"]),icon:"Edit",style:{"margin-left":"8px"}},null,8,["onClick"]),[[n.F8,e.id==y.mouseEnterGroupId],[ae,["SYS_OWNER","GROUP_OWNER?groupId="+e.id]]])]),(0,o.Wm)(T,{direction:"vertical",alignment:"stretch",size:16},{default:(0,o.w5)((()=>[(0,o._)("span",i,(0,r.zw)(e.description),1),(0,o.Wm)(T,{wrap:""},{default:(0,o.w5)((()=>[(0,o.Wm)(k,{content:"组长"},{default:(0,o.w5)((()=>[(0,o.Wm)(z,{color:"#909399"},{default:(0,o.w5)((()=>[(0,o.Wm)(E)])),_:1})])),_:1}),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.groupOwnerNames.slice(0,2),((e,t)=>((0,o.wg)(),(0,o.j4)(U,{key:t,type:"info"},{default:(0,o.w5)((()=>[(0,o.Uk)((0,r.zw)(e),1)])),_:2},1024)))),128)),e.groupOwnerNames.length>2?((0,o.wg)(),(0,o.j4)(S,{key:0},{dropdown:(0,o.w5)((()=>[(0,o.Wm)(I,null,{default:(0,o.w5)((()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.groupOwnerNames.slice(2),((e,t)=>((0,o.wg)(),(0,o.j4)(N,{key:t},{default:(0,o.w5)((()=>[(0,o.Wm)(U,{type:"info"},{default:(0,o.w5)((()=>[(0,o.Uk)((0,r.zw)(e),1)])),_:2},1024)])),_:2},1024)))),128))])),_:2},1024)])),default:(0,o.w5)((()=>[(0,o.Wm)(z,{class:"el-icon--right"},{default:(0,o.w5)((()=>[(0,o.Wm)(Z)])),_:1})])),_:2},1024)):(0,o.kq)("",!0)])),_:2},1024),(0,o.Wm)(T,{wrap:""},{default:(0,o.w5)((()=>[(0,o.Wm)(k,{content:"项目数"},{default:(0,o.w5)((()=>[(0,o.Wm)(z,{color:"#909399"},{default:(0,o.w5)((()=>[(0,o.Wm)(V)])),_:1})])),_:1}),(0,o._)("span",s,(0,r.zw)(e.projectCount),1)])),_:2},1024)])),_:2},1024)])),_:2},1032,["onMouseenter","onClick"])])),_:2},1024)))),128))])),_:1}))])),_:1}),(0,o.Wm)($,null,{default:(0,o.w5)((()=>[(0,o.Wm)(R,{layout:"prev, pager, next","hide-on-single-page":!1,currentPage:y.groupPageData.number,"page-size":y.groupPageData.size,"page-count":y.groupPageData.totalPages,onCurrentChange:P.onPageChange},null,8,["currentPage","page-size","page-count","onCurrentChange"])])),_:1})])),_:1})])),_:1}),(0,o.Wm)(q,{label:"关注项目",name:"favoriteProjectListTab"},{default:(0,o.w5)((()=>[(0,o.Wm)(Q,null,{default:(0,o.w5)((()=>[(0,o.Wm)(F,null,{default:(0,o.w5)((()=>[(0,o.Wm)(M,{data:y.favoriteProjectPageData.data,stripe:""},{default:(0,o.w5)((()=>[(0,o.Wm)(A,{prop:"projectId",label:"项目 ID"}),(0,o.Wm)(A,{prop:"projectName",label:"项目名称"},{default:(0,o.w5)((e=>[(0,o.Wm)(O,{onClick:t=>P.toDocumentPage(e.row)},{default:(0,o.w5)((()=>[(0,o._)("span",null,(0,r.zw)(e.row.projectName),1)])),_:2},1032,["onClick"])])),_:1}),(0,o.Wm)(A,{prop:"projectDescription",label:"项目描述"}),(0,o.Wm)(A,{label:"定时同步",align:"center"},{default:(0,o.w5)((e=>[e.row.isAutoSync?((0,o.wg)(),(0,o.j4)(U,{key:0},{default:(0,o.w5)((()=>[(0,o.Uk)((0,r.zw)(e.row.autoSyncCron),1)])),_:2},1024)):((0,o.wg)(),(0,o.iD)("span",p," 无 "))])),_:1}),(0,o.Wm)(A,{label:"数据库类型"},{default:(0,o.w5)((e=>[(0,o.Wm)(L,{databaseType:e.row.databaseType,icon:e.row.icon},null,8,["databaseType","icon"])])),_:1}),(0,o.Wm)(A,{prop:"databaseName",label:"数据库名称"}),(0,o.Wm)(A,{prop:"groupName",label:"所属分组"},{default:(0,o.w5)((e=>[(0,o.Wm)(O,{onClick:t=>P.toGroupDashboard(e.row.groupId,e.row.groupName),icon:"List"},{default:(0,o.w5)((()=>[(0,o.Uk)((0,r.zw)(e.row.groupName),1)])),_:2},1032,["onClick"])])),_:1}),(0,o.Wm)(A,{prop:"createAt",label:"关注时间"}),(0,o.Wm)(A,{label:"操作"},{default:(0,o.w5)((t=>[(0,o.Wm)(S,null,{dropdown:(0,o.w5)((()=>[(0,o.Wm)(I,null,{default:(0,o.w5)((()=>[(0,o.Wm)(N,null,{default:(0,o.w5)((()=>[(0,o.Wm)(b,{type:"primary",size:"small",onClick:(0,n.iM)((e=>P.toDocumentPage(t.row)),["stop"]),icon:"View"},{default:(0,o.w5)((()=>[d])),_:2},1032,["onClick"])])),_:2},1024),(0,o.Wm)(N,null,{default:(0,o.w5)((()=>[(0,o.Wm)(b,{type:"warning",size:"small",onClick:(0,n.iM)((e=>P.onRemoveFavorite(t.row.projectId)),["stop"]),icon:"StarFilled"},{default:(0,o.w5)((()=>[m])),_:2},1032,["onClick"])])),_:2},1024),(0,o.wy)(((0,o.wg)(),(0,o.j4)(N,null,{default:(0,o.w5)((()=>[(0,o.Wm)(b,{type:"danger",size:"small",onClick:(0,n.iM)((e=>P.onProjectDelete(t.row.projectId)),["stop"]),icon:"Remove"},{default:(0,o.w5)((()=>[g])),_:2},1032,["onClick"])])),_:2},1024)),[[ae,["SYS_OWNER","GROUP_OWNER?groupId="+e.groupId]]])])),_:2},1024)])),default:(0,o.w5)((()=>[(0,o._)("span",null,[c,(0,o.Wm)(z,null,{default:(0,o.w5)((()=>[(0,o.Wm)(Z)])),_:1})])])),_:2},1024)])),_:1})])),_:1},8,["data"])])),_:1}),(0,o.Wm)($,null,{default:(0,o.w5)((()=>[(0,o.Wm)(R,{layout:"prev, pager, next","hide-on-single-page":!1,currentPage:y.favoriteProjectPageData.number,"page-size":y.favoriteProjectPageData.size,"page-count":y.favoriteProjectPageData.totalPages,onCurrentChange:P.onFavoriteProjectPageChange},null,8,["currentPage","page-size","page-count","onCurrentChange"])])),_:1})])),_:1})])),_:1})])),_:1},8,["modelValue","onTabClick"]),(0,o.Wm)(te,{modelValue:y.isShowEditGroupDialog,"onUpdate:modelValue":t[10]||(t[10]=e=>y.isShowEditGroupDialog=e),width:"38%",center:"","destroy-on-close":""},{default:(0,o.w5)((()=>[(0,o.Wm)(K,{model:y.groupData,rules:y.groupDataRule,ref:"groupFormRef","label-position":"top"},{default:(0,o.w5)((()=>[(0,o.Wm)(B,{label:"名称",prop:"name"},{default:(0,o.w5)((()=>[(0,o.Wm)(C,{modelValue:y.groupData.name,"onUpdate:modelValue":t[4]||(t[4]=e=>y.groupData.name=e)},null,8,["modelValue"])])),_:1}),(0,o.Wm)(B,{label:"描述",prop:"description"},{default:(0,o.w5)((()=>[(0,o.Wm)(C,{modelValue:y.groupData.description,"onUpdate:modelValue":t[5]||(t[5]=e=>y.groupData.description=e),type:"textarea"},null,8,["modelValue"])])),_:1}),w,(0,o.Wm)(B,null,{default:(0,o.w5)((()=>[(0,o.Wm)(H,{modelValue:y.userQueryData.nicknameOrUsernameOrEmailContains,"onUpdate:modelValue":t[6]||(t[6]=e=>y.userQueryData.nicknameOrUsernameOrEmailContains=e),"fetch-suggestions":P.queryUsersAsync,placeholder:"用户名、昵称或邮箱搜索",onSelect:P.onGroupOwnerSelect,clearable:""},null,8,["modelValue","fetch-suggestions","onSelect"])])),_:1}),(0,o.Wm)(B,null,{default:(0,o.w5)((()=>[(0,o.Wm)(T,{wrap:""},{default:(0,o.w5)((()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(y.groupData.groupOwners,((e,t)=>((0,o.wg)(),(0,o.j4)(U,{key:e.id,type:"primary",size:"large",closable:"","disable-transitions":!1,onClose:e=>P.onGroupOwnerRemove(t)},{default:(0,o.w5)((()=>[(0,o.Wm)(k,{content:e.email,placement:"top"},{default:(0,o.w5)((()=>[(0,o._)("span",null,(0,r.zw)(e.nickname),1)])),_:2},1032,["content"])])),_:2},1032,["onClose"])))),128))])),_:1})])),_:1}),(0,o.Wm)(B,null,{default:(0,o.w5)((()=>[(0,o.Wm)(b,{type:"primary",onClick:t[7]||(t[7]=e=>P.onGroupSave("groupFormRef"))},{default:(0,o.w5)((()=>[f])),_:1}),(0,o.Wm)(b,{onClick:t[8]||(t[8]=e=>y.isShowEditGroupDialog=!1)},{default:(0,o.w5)((()=>[h])),_:1})])),_:1})])),_:1},8,["model","rules"]),y.groupData.id?((0,o.wg)(),(0,o.j4)(ee,{key:0},{default:(0,o.w5)((()=>[(0,o.Wm)(X,{name:"1"},{title:(0,o.w5)((()=>[(0,o.Wm)(z,null,{default:(0,o.w5)((()=>[(0,o.Wm)(J)])),_:1}),_])),default:(0,o.w5)((()=>[(0,o.Wm)(k,{content:"数据一旦删除将无法恢复,谨慎操作",placement:"top"},{default:(0,o.w5)((()=>[(0,o.Wm)(b,{icon:"delete",size:"large",style:{width:"100%",margin:"0 auto"},onClick:t[9]||(t[9]=e=>P.onGroupDelete(y.groupData.id))},{default:(0,o.w5)((()=>[W])),_:1})])),_:1})])),_:1})])),_:1})):(0,o.kq)("",!0)])),_:1},8,["modelValue"])],64)}var y=a(8337),P=a(3110),b=a(9080),k=a(9324),v=a(1836),C={data(){return{isShowEditGroupDialog:!1,mouseEnterGroupId:null,groupData:{groupOwners:[]},groupDataRule:{name:[this.requiredInputValidRule("请输入有效昵称")]},userQueryData:{nicknameContains:null,nicknameOrUsernameOrEmailContains:null,size:50},groupPageData:{data:[],number:1,size:8,totalElements:0,totalPages:0},groupPageQuery:{page:0,size:12,groupNameContains:null},favoriteProjectPageData:{data:[],number:1,size:15,totalElements:0,totalPages:0},favoriteProjectPageQuery:{page:0,size:20,projectNameContains:null}}},created(){this.fetchGroupsFunction(),this.onFavoriteProjectPageChange(1)},computed:{activeTab:{get(){return this.$store.state.groupListActiveTab?this.$store.state.groupListActiveTab:(this.$store.commit("switchGroupListActiveTab","groupListTab"),"groupListTab")},set(e){this.$store.commit("switchGroupListActiveTab",e)}}},methods:{isPermit(e){return v.E.hasAnyRoles([e])},async fetchUserFavorites(){const e=await(0,b.V$)(this.favoriteProjectPageQuery);this.favoriteProjectPageData.data=e.data.content,this.favoriteProjectPageData.number=e.data.number+1,this.favoriteProjectPageData.size=e.data.size,this.favoriteProjectPageData.totalPages=e.data.totalPages,this.favoriteProjectPageData.totalElements=e.data.totalElements},async fetchGroupsFunction(){const e=await(0,y.Wq)(this.groupPageQuery);this.groupPageData.data=e.data.content,this.groupPageData.number=e.data.number+1,this.groupPageData.size=e.data.size,this.groupPageData.totalPages=e.data.totalPages,this.groupPageData.totalElements=e.data.totalElements},requiredInputValidRule(e){return{required:!0,message:e,trigger:"blur"}},requiredGroupOwners(){return!(null==this.groupData.groupOwners||this.groupData.groupOwners.length<1||this.groupData.groupOwners.length>20)},onPageChange(e){e&&(this.groupPageQuery.page=e-1,this.fetchGroupsFunction())},onQuery(){this.fetchGroupsFunction()},async queryUsersAsync(e,t){const a=await(0,P.yw)(this.userQueryData).then((e=>e.data.content)),o=a.map((e=>({value:e.nickname,nickname:e.nickname,email:e.email,id:e.id})));t(o)},onGroupDelete(e){this.$confirm("确认删除该分组?删除后数据将无法恢复","警告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,y.iE)(e).then((e=>{e.errCode||(this.$message.success("删除成功"),this.isShowEditGroupDialog=!1,this.fetchGroupsFunction())}))}))},onGroupSave(){this.requiredGroupOwners()?this.$refs.groupFormRef.validate((e=>{if(e){const e=Object.assign({},this.groupData);e.groupOwnerUserIds=this.groupData.groupOwners.map((e=>e.id)),(0,y.vB)(e).then((e=>{e.errCode||(this.$message.success("保存成功"),this.isShowEditGroupDialog=!1,this.groupData={groupOwners:[]},this.fetchGroupsFunction())}))}else this.$message.error("请填写表单必填项")})):this.$message.warning("组长人数至少需要 1 人,最多为 20 人")},onGroupOwnerRemove(e){this.groupData.groupOwners.splice(e,1)},onGroupOwnerSelect(e){this.groupData.groupOwners.some((t=>t.id==e.id))||this.groupData.groupOwners.push(e),this.userQueryData.nicknameOrUsernameOrEmailContains=null},toCreatePage(){this.isShowEditGroupDialog=!0,this.groupData={groupOwners:[]}},toEditPage(e){(0,y.ex)(e).then((e=>{e.errCode||(this.isShowEditGroupDialog=!0,this.groupData=e.data)}))},toGroupDashboard(e,t){this.$router.push({path:"/groups/"+e,query:{groupName:t}})},toDocumentPage(e){const t=e.groupId,a=e.projectId;this.$router.push({path:"/groups/"+t+"/projects/"+a+"/documents",query:{projectName:e.projectName,groupName:e.groupName}})},onFavoriteProjectPageChange(e){e&&(this.favoriteProjectPageQuery.page=e-1,this.fetchUserFavorites())},onRemoveFavorite(e){(0,b.Ni)(e).then((e=>{e.errCode||(this.$message.success("成功取消"),this.fetchUserFavorites())}))},onProjectDelete(e){this.$confirm("确认删除该项目?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,k.jI)(this.groupId,e).then((e=>{e.errCode||(this.$message.success("删除成功"),this.fetchUserFavorites())}))}))},onTabClick(e){this.$store.commit("switchGroupListActiveTab",e.props.name)}}},j=a(3744);const G=(0,j.Z)(C,[["render",D]]);var O=G}}]); -//# sourceMappingURL=206.8babe551.js.map \ No newline at end of file +"use strict";(self["webpackChunkdatabasir"]=self["webpackChunkdatabasir"]||[]).push([[314],{8337:function(e,t,a){a.d(t,{Wq:function(){return n},ex:function(){return u},vB:function(){return l},iE:function(){return p},yF:function(){return c},E2:function(){return d},_j:function(){return m},q9:function(){return g}});var o=a(3872);const r="/api/v1.0/groups",n=e=>o.Z.get(r,{params:e}),u=e=>o.Z.get(r+"/"+e),l=e=>e.id&&null!=e.id?s(e):i(e),i=e=>o.Z.post(r,e),s=e=>o.Z.patch(r,e),p=e=>o.Z["delete"](r+"/"+e),c=(e,t)=>o.Z.get(r+"/"+e+"/members",{params:t}),d=(e,t)=>o.Z.post(r+"/"+e+"/members",t),m=(e,t)=>o.Z["delete"](r+"/"+e+"/members/"+t),g=(e,t,a)=>{const n={role:a};return o.Z.patch(r+"/"+e+"/members/"+t,n)}},9324:function(e,t,a){a.d(t,{hW:function(){return n},Rp:function(){return u},Iu:function(){return l},M7:function(){return s},Dg:function(){return p},lN:function(){return c},jI:function(){return g}});var o=a(3872);const r="/api/v1.0/projects",n=e=>o.Z.get(r,{params:e}),u=e=>o.Z.get(r+"/"+e),l=e=>e.id?m(e):i(e),i=e=>o.Z.post(r,e),s=e=>o.Z.post(r+"/test_connection",e),p=(e,t)=>o.Z.post(r+"/"+e+"/list_manual_tasks",t),c=(e,t)=>o.Z.patch(r+"/"+e+"/tasks/"+t+"/cancel"),d="/api/v1.0/groups",m=e=>o.Z.patch(d+"/"+e.groupId+"/projects",e),g=(e,t)=>o.Z["delete"](d+"/"+e+"/projects/"+t)},3110:function(e,t,a){a.d(t,{yw:function(){return n},Dx:function(){return u},B9:function(){return l},__:function(){return i},IJ:function(){return s},r4:function(){return p},oD:function(){return c},_:function(){return d},Uz:function(){return m},gQ:function(){return g},Gz:function(){return w}});var o=a(3872);const r="/api/v1.0/users",n=e=>o.Z.get(r,{params:e}),u=e=>o.Z.post(r+"/"+e+"/enable"),l=e=>o.Z.post(r+"/"+e+"/disable"),i=e=>o.Z.get(r+"/"+e),s=e=>o.Z["delete"](r+"/"+e),p=e=>o.Z.post(r,e),c=e=>o.Z.post(r+"/"+e+"/renew_password"),d=e=>o.Z.post(r+"/"+e+"/sys_owners"),m=e=>o.Z["delete"](r+"/"+e+"/sys_owners"),g=(e,t)=>o.Z.post(r+"/"+e+"/password",t),w=(e,t)=>o.Z.post(r+"/"+e+"/nickname",t)},9080:function(e,t,a){a.d(t,{V$:function(){return n},Ni:function(){return u},a3:function(){return l}});var o=a(3872);const r="/api/v1.0/user_projects/favorites",n=e=>o.Z.get(r,{params:e}),u=e=>o.Z["delete"](r+"/"+e),l=e=>o.Z.post(r+"/"+e)},6314:function(e,t,a){a.r(t),a.d(t,{default:function(){return E}});var o=a(6252),r=a(3577),n=a(9963);const u={style:{display:"flex","justify-content":"space-between"}},l=["onClick"],i={style:{color:"#909399","font-size":"13px"}},s={style:{color:"#909399"}},p={key:1},c=(0,o.Uk)(" 更多 "),d=(0,o.Uk)("查看文档"),m=(0,o.Uk)("取消关注"),g=(0,o.Uk)("删除项目"),w=(0,o._)("h2",null,"组长管理",-1),f=(0,o.Uk)("保存"),h=(0,o.Uk)("取消"),_=(0,o.Uk)("删除分组"),W=(0,o.Uk)("确认删除分组");function D(e,t,a,D,y,P){const b=(0,o.up)("el-button"),k=(0,o.up)("el-tooltip"),v=(0,o.up)("el-col"),C=(0,o.up)("el-input"),j=(0,o.up)("el-row"),G=(0,o.up)("el-empty"),O=(0,o.up)("el-link"),E=(0,o.up)("user"),z=(0,o.up)("el-icon"),U=(0,o.up)("el-tag"),Z=(0,o.up)("arrow-down"),N=(0,o.up)("el-dropdown-item"),I=(0,o.up)("el-dropdown-menu"),S=(0,o.up)("el-dropdown"),T=(0,o.up)("el-space"),V=(0,o.up)("folder"),x=(0,o.up)("el-card"),F=(0,o.up)("el-main"),R=(0,o.up)("el-pagination"),$=(0,o.up)("el-footer"),Q=(0,o.up)("el-container"),q=(0,o.up)("el-tab-pane"),A=(0,o.up)("el-table-column"),L=(0,o.up)("database-icon"),M=(0,o.up)("el-table"),Y=(0,o.up)("el-tabs"),B=(0,o.up)("el-form-item"),H=(0,o.up)("el-autocomplete"),K=(0,o.up)("el-form"),J=(0,o.up)("warning-filled"),X=(0,o.up)("el-collapse-item"),ee=(0,o.up)("el-collapse"),te=(0,o.up)("el-dialog"),ae=(0,o.Q2)("require-roles");return(0,o.wg)(),(0,o.iD)(o.HY,null,[(0,o.Wm)(Y,{modelValue:P.activeTab,"onUpdate:modelValue":t[3]||(t[3]=e=>P.activeTab=e),onTabClick:P.onTabClick},{default:(0,o.w5)((()=>[(0,o.Wm)(q,{label:"项目分组",name:"groupListTab"},{default:(0,o.w5)((()=>[(0,o.Wm)(Q,null,{default:(0,o.w5)((()=>[(0,o.Wm)(F,null,{default:(0,o.w5)((()=>[(0,o.Wm)(j,{gutter:12},{default:(0,o.w5)((()=>[(0,o.wy)(((0,o.wg)(),(0,o.j4)(v,{xs:24,sm:24,md:12,lg:5,xl:3},{default:(0,o.w5)((()=>[(0,o.Wm)(k,{content:"创建一个分组",placement:"top"},{default:(0,o.w5)((()=>[(0,o.Wm)(b,{type:"plain",icon:"plus",style:{width:"100%"},onClick:t[0]||(t[0]=e=>P.toCreatePage())})])),_:1})])),_:1})),[[ae,["SYS_OWNER"]]]),(0,o.Wm)(v,{xs:24,sm:24,md:12,lg:8,xl:8},{default:(0,o.w5)((()=>[(0,o.Wm)(C,{onChange:P.onQuery,modelValue:y.groupPageQuery.groupNameContains,"onUpdate:modelValue":t[1]||(t[1]=e=>y.groupPageQuery.groupNameContains=e),label:"组名",placeholder:"组名称搜索","prefix-icon":"search"},null,8,["onChange","modelValue"])])),_:1})])),_:1}),0==y.groupPageData.data.length?((0,o.wg)(),(0,o.j4)(j,{key:0},{default:(0,o.w5)((()=>[(0,o.Wm)(v,null,{default:(0,o.w5)((()=>[(0,o.Wm)(G,{description:"请先创建分组"})])),_:1})])),_:1})):((0,o.wg)(),(0,o.j4)(j,{key:1,gutter:20},{default:(0,o.w5)((()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(y.groupPageData.data,(e=>((0,o.wg)(),(0,o.j4)(v,{xs:24,sm:12,md:12,lg:8,xl:6,key:e.id,style:{"margin-bottom":"20px"}},{default:(0,o.w5)((()=>[(0,o.Wm)(x,{shadow:"hover",onMouseenter:t=>y.mouseEnterGroupId=e.id,onMouseleave:t[2]||(t[2]=e=>y.mouseEnterGroupId=null),onClick:t=>P.toGroupDashboard(e.id,e.name),class:"box"},{default:(0,o.w5)((()=>[(0,o._)("div",u,[(0,o.Wm)(O,{underline:!1},{default:(0,o.w5)((()=>[(0,o._)("div",{onClick:t=>P.toGroupDashboard(e.id,e.name),style:{margin:"0 auto"}},[(0,o._)("h4",null,(0,r.zw)(e.name),1)],8,l)])),_:2},1024),(0,o.wy)((0,o.Wm)(O,{underline:!1,onClick:(0,n.iM)((t=>P.toEditPage(e.id,e.name)),["stop"]),icon:"Edit",style:{"margin-left":"8px"}},null,8,["onClick"]),[[n.F8,e.id==y.mouseEnterGroupId],[ae,["SYS_OWNER","GROUP_OWNER?groupId="+e.id]]])]),(0,o.Wm)(T,{direction:"vertical",alignment:"stretch",size:16},{default:(0,o.w5)((()=>[(0,o._)("span",i,(0,r.zw)(e.description),1),(0,o.Wm)(T,{wrap:""},{default:(0,o.w5)((()=>[(0,o.Wm)(k,{content:"组长"},{default:(0,o.w5)((()=>[(0,o.Wm)(z,{color:"#909399"},{default:(0,o.w5)((()=>[(0,o.Wm)(E)])),_:1})])),_:1}),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.groupOwnerNames.slice(0,2),((e,t)=>((0,o.wg)(),(0,o.j4)(U,{key:t,type:"info"},{default:(0,o.w5)((()=>[(0,o.Uk)((0,r.zw)(e),1)])),_:2},1024)))),128)),e.groupOwnerNames.length>2?((0,o.wg)(),(0,o.j4)(S,{key:0},{dropdown:(0,o.w5)((()=>[(0,o.Wm)(I,null,{default:(0,o.w5)((()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.groupOwnerNames.slice(2),((e,t)=>((0,o.wg)(),(0,o.j4)(N,{key:t},{default:(0,o.w5)((()=>[(0,o.Wm)(U,{type:"info"},{default:(0,o.w5)((()=>[(0,o.Uk)((0,r.zw)(e),1)])),_:2},1024)])),_:2},1024)))),128))])),_:2},1024)])),default:(0,o.w5)((()=>[(0,o.Wm)(z,{class:"el-icon--right"},{default:(0,o.w5)((()=>[(0,o.Wm)(Z)])),_:1})])),_:2},1024)):(0,o.kq)("",!0)])),_:2},1024),(0,o.Wm)(T,{wrap:""},{default:(0,o.w5)((()=>[(0,o.Wm)(k,{content:"项目数"},{default:(0,o.w5)((()=>[(0,o.Wm)(z,{color:"#909399"},{default:(0,o.w5)((()=>[(0,o.Wm)(V)])),_:1})])),_:1}),(0,o._)("span",s,(0,r.zw)(e.projectCount),1)])),_:2},1024)])),_:2},1024)])),_:2},1032,["onMouseenter","onClick"])])),_:2},1024)))),128))])),_:1}))])),_:1}),(0,o.Wm)($,null,{default:(0,o.w5)((()=>[(0,o.Wm)(R,{layout:"prev, pager, next","hide-on-single-page":!1,currentPage:y.groupPageData.number,"page-size":y.groupPageData.size,"page-count":y.groupPageData.totalPages,onCurrentChange:P.onPageChange},null,8,["currentPage","page-size","page-count","onCurrentChange"])])),_:1})])),_:1})])),_:1}),(0,o.Wm)(q,{label:"关注项目",name:"favoriteProjectListTab"},{default:(0,o.w5)((()=>[(0,o.Wm)(Q,null,{default:(0,o.w5)((()=>[(0,o.Wm)(F,null,{default:(0,o.w5)((()=>[(0,o.Wm)(M,{data:y.favoriteProjectPageData.data,stripe:""},{default:(0,o.w5)((()=>[(0,o.Wm)(A,{prop:"projectId",label:"项目 ID"}),(0,o.Wm)(A,{prop:"projectName",label:"项目名称"},{default:(0,o.w5)((e=>[(0,o.Wm)(O,{onClick:t=>P.toDocumentPage(e.row)},{default:(0,o.w5)((()=>[(0,o._)("span",null,(0,r.zw)(e.row.projectName),1)])),_:2},1032,["onClick"])])),_:1}),(0,o.Wm)(A,{prop:"projectDescription",label:"项目描述"}),(0,o.Wm)(A,{label:"定时同步",align:"center"},{default:(0,o.w5)((e=>[e.row.isAutoSync?((0,o.wg)(),(0,o.j4)(U,{key:0},{default:(0,o.w5)((()=>[(0,o.Uk)((0,r.zw)(e.row.autoSyncCron),1)])),_:2},1024)):((0,o.wg)(),(0,o.iD)("span",p," 无 "))])),_:1}),(0,o.Wm)(A,{label:"数据库类型"},{default:(0,o.w5)((e=>[(0,o.Wm)(L,{databaseType:e.row.databaseType,icon:e.row.icon},null,8,["databaseType","icon"])])),_:1}),(0,o.Wm)(A,{prop:"databaseName",label:"数据库名称"}),(0,o.Wm)(A,{prop:"groupName",label:"所属分组"},{default:(0,o.w5)((e=>[(0,o.Wm)(O,{onClick:t=>P.toGroupDashboard(e.row.groupId,e.row.groupName),icon:"List"},{default:(0,o.w5)((()=>[(0,o.Uk)((0,r.zw)(e.row.groupName),1)])),_:2},1032,["onClick"])])),_:1}),(0,o.Wm)(A,{prop:"createAt",label:"关注时间"}),(0,o.Wm)(A,{label:"操作"},{default:(0,o.w5)((t=>[(0,o.Wm)(S,null,{dropdown:(0,o.w5)((()=>[(0,o.Wm)(I,null,{default:(0,o.w5)((()=>[(0,o.Wm)(N,null,{default:(0,o.w5)((()=>[(0,o.Wm)(b,{type:"primary",size:"small",onClick:(0,n.iM)((e=>P.toDocumentPage(t.row)),["stop"]),icon:"View"},{default:(0,o.w5)((()=>[d])),_:2},1032,["onClick"])])),_:2},1024),(0,o.Wm)(N,null,{default:(0,o.w5)((()=>[(0,o.Wm)(b,{type:"warning",size:"small",onClick:(0,n.iM)((e=>P.onRemoveFavorite(t.row.projectId)),["stop"]),icon:"StarFilled"},{default:(0,o.w5)((()=>[m])),_:2},1032,["onClick"])])),_:2},1024),(0,o.wy)(((0,o.wg)(),(0,o.j4)(N,null,{default:(0,o.w5)((()=>[(0,o.Wm)(b,{type:"danger",size:"small",onClick:(0,n.iM)((e=>P.onProjectDelete(t.row.projectId)),["stop"]),icon:"Remove"},{default:(0,o.w5)((()=>[g])),_:2},1032,["onClick"])])),_:2},1024)),[[ae,["SYS_OWNER","GROUP_OWNER?groupId="+e.groupId]]])])),_:2},1024)])),default:(0,o.w5)((()=>[(0,o._)("span",null,[c,(0,o.Wm)(z,null,{default:(0,o.w5)((()=>[(0,o.Wm)(Z)])),_:1})])])),_:2},1024)])),_:1})])),_:1},8,["data"])])),_:1}),(0,o.Wm)($,null,{default:(0,o.w5)((()=>[(0,o.Wm)(R,{layout:"prev, pager, next","hide-on-single-page":!1,currentPage:y.favoriteProjectPageData.number,"page-size":y.favoriteProjectPageData.size,"page-count":y.favoriteProjectPageData.totalPages,onCurrentChange:P.onFavoriteProjectPageChange},null,8,["currentPage","page-size","page-count","onCurrentChange"])])),_:1})])),_:1})])),_:1})])),_:1},8,["modelValue","onTabClick"]),(0,o.Wm)(te,{modelValue:y.isShowEditGroupDialog,"onUpdate:modelValue":t[10]||(t[10]=e=>y.isShowEditGroupDialog=e),center:"","destroy-on-close":"",width:P.dialogWidth()},{default:(0,o.w5)((()=>[(0,o.Wm)(K,{model:y.groupData,rules:y.groupDataRule,ref:"groupFormRef","label-position":"top"},{default:(0,o.w5)((()=>[(0,o.Wm)(B,{label:"名称",prop:"name"},{default:(0,o.w5)((()=>[(0,o.Wm)(C,{modelValue:y.groupData.name,"onUpdate:modelValue":t[4]||(t[4]=e=>y.groupData.name=e)},null,8,["modelValue"])])),_:1}),(0,o.Wm)(B,{label:"描述",prop:"description"},{default:(0,o.w5)((()=>[(0,o.Wm)(C,{modelValue:y.groupData.description,"onUpdate:modelValue":t[5]||(t[5]=e=>y.groupData.description=e),type:"textarea"},null,8,["modelValue"])])),_:1}),w,(0,o.Wm)(B,null,{default:(0,o.w5)((()=>[(0,o.Wm)(H,{modelValue:y.userQueryData.nicknameOrUsernameOrEmailContains,"onUpdate:modelValue":t[6]||(t[6]=e=>y.userQueryData.nicknameOrUsernameOrEmailContains=e),"fetch-suggestions":P.queryUsersAsync,placeholder:"用户名、昵称或邮箱搜索",onSelect:P.onGroupOwnerSelect,clearable:""},null,8,["modelValue","fetch-suggestions","onSelect"])])),_:1}),(0,o.Wm)(B,null,{default:(0,o.w5)((()=>[(0,o.Wm)(T,{wrap:""},{default:(0,o.w5)((()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(y.groupData.groupOwners,((e,t)=>((0,o.wg)(),(0,o.j4)(U,{key:e.id,type:"primary",size:"large",closable:"","disable-transitions":!1,onClose:e=>P.onGroupOwnerRemove(t)},{default:(0,o.w5)((()=>[(0,o.Wm)(k,{content:e.email,placement:"top"},{default:(0,o.w5)((()=>[(0,o._)("span",null,(0,r.zw)(e.nickname),1)])),_:2},1032,["content"])])),_:2},1032,["onClose"])))),128))])),_:1})])),_:1}),(0,o.Wm)(B,null,{default:(0,o.w5)((()=>[(0,o.Wm)(b,{type:"primary",onClick:t[7]||(t[7]=e=>P.onGroupSave("groupFormRef"))},{default:(0,o.w5)((()=>[f])),_:1}),(0,o.Wm)(b,{onClick:t[8]||(t[8]=e=>y.isShowEditGroupDialog=!1)},{default:(0,o.w5)((()=>[h])),_:1})])),_:1})])),_:1},8,["model","rules"]),y.groupData.id?((0,o.wg)(),(0,o.j4)(ee,{key:0},{default:(0,o.w5)((()=>[(0,o.Wm)(X,{name:"1"},{title:(0,o.w5)((()=>[(0,o.Wm)(z,null,{default:(0,o.w5)((()=>[(0,o.Wm)(J)])),_:1}),_])),default:(0,o.w5)((()=>[(0,o.Wm)(k,{content:"数据一旦删除将无法恢复,谨慎操作",placement:"top"},{default:(0,o.w5)((()=>[(0,o.Wm)(b,{icon:"delete",size:"large",style:{width:"100%",margin:"0 auto"},onClick:t[9]||(t[9]=e=>P.onGroupDelete(y.groupData.id))},{default:(0,o.w5)((()=>[W])),_:1})])),_:1})])),_:1})])),_:1})):(0,o.kq)("",!0)])),_:1},8,["modelValue","width"])],64)}var y=a(8337),P=a(3110),b=a(9080),k=a(9324),v=a(1836),C=a(8968),j={data(){return{isShowEditGroupDialog:!1,mouseEnterGroupId:null,groupData:{groupOwners:[]},groupDataRule:{name:[this.requiredInputValidRule("请输入有效昵称")]},userQueryData:{nicknameContains:null,nicknameOrUsernameOrEmailContains:null,size:50},groupPageData:{data:[],number:1,size:8,totalElements:0,totalPages:0},groupPageQuery:{page:0,size:12,groupNameContains:null},favoriteProjectPageData:{data:[],number:1,size:15,totalElements:0,totalPages:0},favoriteProjectPageQuery:{page:0,size:20,projectNameContains:null}}},created(){this.fetchGroupsFunction(),this.onFavoriteProjectPageChange(1)},computed:{activeTab:{get(){return this.$store.state.groupListActiveTab?this.$store.state.groupListActiveTab:(this.$store.commit("switchGroupListActiveTab","groupListTab"),"groupListTab")},set(e){this.$store.commit("switchGroupListActiveTab",e)}}},methods:{isPermit(e){return v.E.hasAnyRoles([e])},async fetchUserFavorites(){const e=await(0,b.V$)(this.favoriteProjectPageQuery);this.favoriteProjectPageData.data=e.data.content,this.favoriteProjectPageData.number=e.data.number+1,this.favoriteProjectPageData.size=e.data.size,this.favoriteProjectPageData.totalPages=e.data.totalPages,this.favoriteProjectPageData.totalElements=e.data.totalElements},async fetchGroupsFunction(){const e=await(0,y.Wq)(this.groupPageQuery);this.groupPageData.data=e.data.content,this.groupPageData.number=e.data.number+1,this.groupPageData.size=e.data.size,this.groupPageData.totalPages=e.data.totalPages,this.groupPageData.totalElements=e.data.totalElements},requiredInputValidRule(e){return{required:!0,message:e,trigger:"blur"}},requiredGroupOwners(){return!(null==this.groupData.groupOwners||this.groupData.groupOwners.length<1||this.groupData.groupOwners.length>20)},onPageChange(e){e&&(this.groupPageQuery.page=e-1,this.fetchGroupsFunction())},onQuery(){this.fetchGroupsFunction()},async queryUsersAsync(e,t){const a=await(0,P.yw)(this.userQueryData).then((e=>e.data.content)),o=a.map((e=>({value:e.nickname,nickname:e.nickname,email:e.email,id:e.id})));t(o)},onGroupDelete(e){this.$confirm("确认删除该分组?删除后数据将无法恢复","警告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,y.iE)(e).then((e=>{e.errCode||(this.$message.success("删除成功"),this.isShowEditGroupDialog=!1,this.fetchGroupsFunction())}))}))},onGroupSave(){this.requiredGroupOwners()?this.$refs.groupFormRef.validate((e=>{if(e){const e=Object.assign({},this.groupData);e.groupOwnerUserIds=this.groupData.groupOwners.map((e=>e.id)),(0,y.vB)(e).then((e=>{e.errCode||(this.$message.success("保存成功"),this.isShowEditGroupDialog=!1,this.groupData={groupOwners:[]},this.fetchGroupsFunction())}))}else this.$message.error("请填写表单必填项")})):this.$message.warning("组长人数至少需要 1 人,最多为 20 人")},onGroupOwnerRemove(e){this.groupData.groupOwners.splice(e,1)},onGroupOwnerSelect(e){this.groupData.groupOwners.some((t=>t.id==e.id))||this.groupData.groupOwners.push(e),this.userQueryData.nicknameOrUsernameOrEmailContains=null},toCreatePage(){this.isShowEditGroupDialog=!0,this.groupData={groupOwners:[]}},toEditPage(e){(0,y.ex)(e).then((e=>{e.errCode||(this.isShowEditGroupDialog=!0,this.groupData=e.data)}))},toGroupDashboard(e,t){this.$router.push({path:"/groups/"+e,query:{groupName:t}})},toDocumentPage(e){const t=e.groupId,a=e.projectId;this.$router.push({path:"/groups/"+t+"/projects/"+a+"/documents",query:{projectName:e.projectName,groupName:e.groupName}})},onFavoriteProjectPageChange(e){e&&(this.favoriteProjectPageQuery.page=e-1,this.fetchUserFavorites())},onRemoveFavorite(e){(0,b.Ni)(e).then((e=>{e.errCode||(this.$message.success("成功取消"),this.fetchUserFavorites())}))},onProjectDelete(e){this.$confirm("确认删除该项目?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{(0,k.jI)(this.groupId,e).then((e=>{e.errCode||(this.$message.success("删除成功"),this.fetchUserFavorites())}))}))},onTabClick(e){this.$store.commit("switchGroupListActiveTab",e.props.name)},dialogWidth(){return(0,C.c)()}}},G=a(3744);const O=(0,G.Z)(j,[["render",D]]);var E=O}}]); +//# sourceMappingURL=314.358d11d3.js.map \ No newline at end of file diff --git a/api/src/main/resources/static/js/314.358d11d3.js.map b/api/src/main/resources/static/js/314.358d11d3.js.map new file mode 100644 index 0000000..1c0ecf1 --- /dev/null +++ b/api/src/main/resources/static/js/314.358d11d3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/314.358d11d3.js","mappings":"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","sources":["webpack://databasir/./src/api/Group.js","webpack://databasir/./src/api/Project.js","webpack://databasir/./src/api/User.js","webpack://databasir/./src/api/UserProject.js","webpack://databasir/./src/views/GroupList.vue","webpack://databasir/./src/views/GroupList.vue?d658"],"sourcesContent":["import axios from '@/utils/fetch';\r\n\r\nconst base = '/api/v1.0/groups'\r\n\r\nexport const listGroups = (pageQuery) => {\r\n return axios.get(base, {\r\n params: pageQuery\r\n })\r\n}\r\n\r\nexport const getGroup= (id) => {\r\n return axios.get(base + \"/\" + id)\r\n}\r\n\r\nexport const createOrUpdateGroup = (body) => {\r\n if (body.id && body.id != null) {\r\n return updateGroup(body)\r\n } else {\r\n return createGroup(body)\r\n }\r\n}\r\n\r\nexport const createGroup = (body) => {\r\n return axios.post(base, body)\r\n}\r\n\r\nexport const updateGroup = (body) => {\r\n return axios.patch(base, body)\r\n}\r\n\r\nexport const deleteGroup = (id) => {\r\n return axios.delete(base + '/' + id)\r\n}\r\n\r\nexport const listGroupMembers = (groupId, pageQuery) => {\r\n return axios.get(base + '/' + groupId + '/members', {\r\n params: pageQuery\r\n })\r\n}\r\n\r\nexport const addGroupMember = (groupId, body) => {\r\n return axios.post(base + '/' + groupId + '/members', body)\r\n}\r\n\r\nexport const removeGroupMember = (groupId, userId) => {\r\n return axios.delete(base +'/'+groupId+'/members/'+userId)\r\n}\r\n\r\nexport const updateGroupMemberRole = (groupId, userId, role) => {\r\n const body = {\r\n role: role\r\n }\r\n return axios.patch(base +'/'+groupId+'/members/'+userId, body)\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import axios from '@/utils/fetch';\r\n\r\nconst base = '/api/v1.0/projects'\r\n\r\nexport const listProjects = (parameters) => {\r\n return axios.get(base, {\r\n params: parameters\r\n })\r\n}\r\n\r\nexport const getProjectById = (id) => {\r\n return axios.get(base + \"/\" + id)\r\n}\r\n\r\nexport const createOrUpdateProject = (request) => {\r\n if (request.id) {\r\n return updateProject(request)\r\n } else {\r\n return createProject(request)\r\n }\r\n}\r\n\r\nexport const createProject = (request) => {\r\n return axios.post(base, request);\r\n}\r\n\r\nexport const testConnection = (request) => {\r\n return axios.post(base + '/test_connection', request)\r\n}\r\n\r\nexport const listProjectManualTasks = (id, body) => {\r\n return axios.post(base + \"/\" + id +\"/list_manual_tasks\", body)\r\n}\r\n\r\nexport const cancelProjectTask = (projectId, taskId) => {\r\n return axios.patch(base + \"/\" + projectId +\"/tasks/\" + taskId+\"/cancel\")\r\n}\r\n\r\nconst groupProjectBase = '/api/v1.0/groups'\r\n\r\nexport const updateProject = (request) => {\r\n return axios.patch(groupProjectBase +'/'+request.groupId+'/projects', request);\r\n}\r\n\r\nexport const deleteProjectById = (groupId, id) => {\r\n return axios.delete(groupProjectBase + '/' +groupId +'/projects/' + id);\r\n}\r\n","import axios from '@/utils/fetch';\r\n\r\nconst base = '/api/v1.0/users'\r\n\r\nexport const listUsers = (pageQuery) => {\r\n return axios.get(base, {\r\n params: pageQuery\r\n })\r\n}\r\n\r\nexport const enableUser = (userId) => {\r\n return axios.post(base+\"/\"+userId+\"/enable\")\r\n\r\n}\r\n\r\nexport const disableUser = (userId) => {\r\n return axios.post(base+\"/\"+userId+\"/disable\")\r\n}\r\n\r\nexport const getByUserId = (userId) => {\r\n return axios.get(base+\"/\"+userId)\r\n}\r\n\r\nexport const deleteByUserId = (userId) => {\r\n return axios.delete(base+\"/\"+userId)\r\n}\r\n\r\nexport const createUser = (request) => {\r\n return axios.post(base, request)\r\n}\r\n\r\nexport const renewPassword = (id) => {\r\n return axios.post(base +'/' + id +'/renew_password')\r\n}\r\n\r\nexport const addSysOwnerTo = (userId) => {\r\n return axios.post(base +'/' + userId +'/sys_owners')\r\n}\r\n\r\nexport const removeSysOwnerFrom = (userId) => {\r\n return axios.delete(base +'/' + userId +'/sys_owners')\r\n}\r\n\r\nexport const updatePassword = (userId, body) => {\r\n return axios.post(base +'/' + userId +'/password', body)\r\n}\r\n\r\nexport const updateNickname = (userId, body) => {\r\n return axios.post(base +'/' + userId +'/nickname', body)\r\n}","import axios from '@/utils/fetch';\r\n\r\nconst base = '/api/v1.0/user_projects/favorites'\r\n\r\nexport const listFavorites = (pageQuery) => {\r\n return axios.get(base, {\r\n params: pageQuery\r\n })\r\n}\r\n\r\nexport const removeFavorite = (projectId) => {\r\n return axios.delete(base + \"/\" + projectId)\r\n}\r\n\r\nexport const addFavorite = (projectId) => {\r\n return axios.post(base +'/' + projectId)\r\n}","<template>\r\n <el-tabs v-model=\"activeTab\" @tab-click=\"onTabClick\">\r\n <el-tab-pane label=\"项目分组\" name=\"groupListTab\">\r\n <el-container>\r\n <el-main>\r\n <el-row :gutter=\"12\">\r\n <el-col :xs=\"24\" :sm=\"24\" :md=\"12\" :lg=\"5\" :xl=\"3\" v-require-roles=\"['SYS_OWNER']\">\r\n <el-tooltip content=\"创建一个分组\" placement=\"top\">\r\n <el-button type=\"plain\" icon=\"plus\" style=\"width:100%;\" @click=\"toCreatePage()\"></el-button>\r\n </el-tooltip>\r\n </el-col>\r\n <el-col :xs=\"24\" :sm=\"24\" :md=\"12\" :lg=\"8\" :xl=\"8\" >\r\n <el-input @change='onQuery' v-model=\"groupPageQuery.groupNameContains\" label=\"组名\" placeholder=\"组名称搜索\" prefix-icon=\"search\"/>\r\n </el-col>\r\n </el-row>\r\n <el-row v-if=\"groupPageData.data.length == 0\">\r\n <el-col>\r\n <el-empty description=\"请先创建分组\"></el-empty>\r\n </el-col>\r\n </el-row>\r\n <el-row v-else :gutter=\"20\" >\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"12\" :lg=\"8\" :xl=\"6\" v-for=\"(group) in groupPageData.data\" :key=\"group.id\" style=\"margin-bottom:20px;\">\r\n <el-card shadow=\"hover\" @mouseenter=\"mouseEnterGroupId=group.id\" @mouseleave=\"mouseEnterGroupId=null\" @click=\"toGroupDashboard(group.id, group.name)\" class=\"box\">\r\n <div style=\"display:flex;justify-content: space-between;\">\r\n <el-link :underline=\"false\" >\r\n <div @click=\"toGroupDashboard(group.id, group.name)\" style=\"margin: 0 auto;\">\r\n <h4>{{ group.name }}</h4> \r\n </div>\r\n </el-link>\r\n <el-link :underline=\"false\" \r\n v-show=\"group.id == mouseEnterGroupId\" \r\n v-require-roles=\"['SYS_OWNER', 'GROUP_OWNER?groupId='+group.id]\" \r\n v-on:click.stop=\"toEditPage(group.id, group.name)\"\r\n icon=\"Edit\"\r\n style=\"margin-left: 8px;\" >\r\n </el-link>\r\n </div>\r\n <el-space direction=\"vertical\" alignment=\"stretch\" :size=\"16\">\r\n <span style=\"color:#909399;font-size:13px;\">\r\n {{ group.description }}\r\n </span>\r\n <el-space wrap>\r\n <el-tooltip content=\"组长\">\r\n <el-icon color=\"#909399\"><user /></el-icon>\r\n </el-tooltip>\r\n <el-tag v-for=\"(owner, index) in group.groupOwnerNames.slice(0, 2)\" :key=\"index\" type=\"info\"> {{ owner }}</el-tag>\r\n <template v-if=\"group.groupOwnerNames.length > 2\">\r\n <el-dropdown>\r\n <el-icon class=\"el-icon--right\">\r\n <arrow-down />\r\n </el-icon>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-for=\"(owner, index) in group.groupOwnerNames.slice(2)\" :key=\"index\">\r\n <el-tag type=\"info\">{{ owner }}</el-tag>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </template>\r\n </el-space>\r\n <el-space wrap>\r\n <el-tooltip content=\"项目数\">\r\n <el-icon color=\"#909399\"><folder /></el-icon>\r\n </el-tooltip>\r\n <span style=\"color:#909399\">\r\n {{ group.projectCount }}\r\n </span>\r\n </el-space>\r\n </el-space>\r\n </el-card>\r\n </el-col>\r\n </el-row>\r\n </el-main>\r\n <el-footer>\r\n <el-pagination layout=\"prev, pager, next\" \r\n :hide-on-single-page=\"false\"\r\n :currentPage=\"groupPageData.number\" \r\n :page-size=\"groupPageData.size\" \r\n :page-count=\"groupPageData.totalPages\"\r\n @current-change=\"onPageChange\">\r\n </el-pagination>\r\n </el-footer>\r\n </el-container>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"关注项目\" name=\"favoriteProjectListTab\">\r\n <el-container>\r\n <el-main>\r\n <el-table :data=\"favoriteProjectPageData.data\" stripe>\r\n <el-table-column prop=\"projectId\" label=\"项目 ID\"/>\r\n <el-table-column prop=\"projectName\" label=\"项目名称\" >\r\n <template v-slot=\"scope\">\r\n <el-link @click=\"toDocumentPage(scope.row)\">\r\n <span>{{ scope.row.projectName }}</span>\r\n </el-link>\r\n </template>\r\n \r\n </el-table-column>\r\n <el-table-column prop=\"projectDescription\" label=\"项目描述\" />\r\n <el-table-column label=\"定时同步\" align=\"center\">\r\n <template v-slot=\"scope\">\r\n <el-tag v-if=\"scope.row.isAutoSync\">\r\n {{ scope.row.autoSyncCron }}\r\n </el-tag>\r\n <span v-else>\r\n 无\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"数据库类型\">\r\n <template v-slot=\"scope\">\r\n <database-icon :databaseType=\"scope.row.databaseType\" :icon=\"scope.row.icon\"/>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"databaseName\" label=\"数据库名称\" />\r\n <el-table-column prop=\"groupName\" label=\"所属分组\">\r\n <template v-slot=\"scope\">\r\n <el-link @click=\"toGroupDashboard(scope.row.groupId, scope.row.groupName)\" icon=\"List\">\r\n {{ scope.row.groupName }}\r\n </el-link>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"createAt\" label=\"关注时间\" />\r\n <el-table-column label=\"操作\" >\r\n <template v-slot=\"scope\">\r\n <el-dropdown>\r\n <span>\r\n 更多\r\n <el-icon >\r\n <arrow-down />\r\n </el-icon>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item>\r\n <el-button type=\"primary\" size=\"small\" @click.stop=\"toDocumentPage(scope.row)\" icon=\"View\">查看文档</el-button>\r\n </el-dropdown-item>\r\n <el-dropdown-item>\r\n <el-button type=\"warning\" size=\"small\" @click.stop=\"onRemoveFavorite(scope.row.projectId)\" icon=\"StarFilled\">取消关注</el-button>\r\n </el-dropdown-item>\r\n <el-dropdown-item v-require-roles=\"['SYS_OWNER', 'GROUP_OWNER?groupId='+groupId]\">\r\n <el-button type=\"danger\" size=\"small\" @click.stop=\"onProjectDelete(scope.row.projectId)\" icon=\"Remove\">删除项目</el-button>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-main>\r\n <el-footer>\r\n <el-pagination layout=\"prev, pager, next\" \r\n :hide-on-single-page=\"false\"\r\n :currentPage=\"favoriteProjectPageData.number\" \r\n :page-size=\"favoriteProjectPageData.size\" \r\n :page-count=\"favoriteProjectPageData.totalPages\"\r\n @current-change=\"onFavoriteProjectPageChange\">\r\n </el-pagination>\r\n </el-footer>\r\n </el-container>\r\n \r\n </el-tab-pane>\r\n </el-tabs>\r\n\r\n <el-dialog v-model=\"isShowEditGroupDialog\" center destroy-on-close :width=\"dialogWidth()\">\r\n <el-form :model=\"groupData\" :rules=\"groupDataRule\" ref=\"groupFormRef\" label-position=\"top\">\r\n <el-form-item label=\"名称\" prop=\"name\">\r\n <el-input v-model=\"groupData.name\"></el-input>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"描述\" prop=\"description\">\r\n <el-input v-model=\"groupData.description\" type=\"textarea\"></el-input>\r\n </el-form-item>\r\n\r\n <h2>组长管理</h2>\r\n <el-form-item>\r\n <el-autocomplete\r\n v-model=\"userQueryData.nicknameOrUsernameOrEmailContains\"\r\n :fetch-suggestions=\"queryUsersAsync\"\r\n placeholder=\"用户名、昵称或邮箱搜索\"\r\n @select=\"onGroupOwnerSelect\"\r\n clearable\r\n >\r\n </el-autocomplete>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-space wrap>\r\n <el-tag\r\n v-for=\"(user, index) in groupData.groupOwners\"\r\n :key=\"user.id\"\r\n type=\"primary\"\r\n size=\"large\"\r\n closable\r\n :disable-transitions=\"false\"\r\n @close=\"onGroupOwnerRemove(index)\"\r\n >\r\n <el-tooltip :content=\"user.email\" placement=\"top\">\r\n <span>{{ user.nickname }}</span>\r\n </el-tooltip>\r\n </el-tag>\r\n </el-space>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" @click=\"onGroupSave('groupFormRef')\">保存</el-button>\r\n <el-button @click=\"isShowEditGroupDialog = false\">取消</el-button>\r\n </el-form-item>\r\n </el-form>\r\n <el-collapse v-if=\"groupData.id\">\r\n <el-collapse-item name=\"1\">\r\n <template #title><el-icon><warning-filled /></el-icon>删除分组</template>\r\n <el-tooltip content=\"数据一旦删除将无法恢复,谨慎操作\" placement=\"top\">\r\n <el-button icon=\"delete\" size=\"large\" style=\"width:100%;margin:0 auto;\" @click=\"onGroupDelete(groupData.id)\">确认删除分组</el-button>\r\n </el-tooltip>\r\n </el-collapse-item>\r\n </el-collapse>\r\n </el-dialog>\r\n</template>\r\n\r\n<style>\r\n.card-footer {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 22px;\r\n}\r\n\r\n.el-row {\r\n margin-bottom: 6px;\r\n}\r\n\r\n.el-row:last-child {\r\n margin-bottom: 0;\r\n}\r\n\r\n.el-col {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.box {\r\n border-radius: 6px;\r\n border-width:1px;\r\n}\r\n\r\n</style>\r\n\r\n<script>\r\nimport { listGroups, getGroup, createOrUpdateGroup, deleteGroup } from \"@/api/Group\"\r\nimport { listUsers } from \"@/api/User\"\r\nimport { listFavorites, removeFavorite } from \"../api/UserProject\"\r\nimport { deleteProjectById } from \"../api/Project\"\r\nimport { user } from '../utils/auth'\r\nimport { dialogPercentWidth } from \"../utils/DialogWidthCalculator\"\r\n\r\nexport default {\r\n data() {\r\n return {\r\n isShowEditGroupDialog: false,\r\n mouseEnterGroupId: null,\r\n groupData: {\r\n groupOwners: []\r\n },\r\n groupDataRule: {\r\n name: [this.requiredInputValidRule('请输入有效昵称')],\r\n },\r\n userQueryData: {\r\n nicknameContains: null,\r\n nicknameOrUsernameOrEmailContains: null,\r\n size: 50\r\n },\r\n groupPageData: {\r\n data: [],\r\n number: 1,\r\n size: 8,\r\n totalElements:0,\r\n totalPages: 0\r\n },\r\n groupPageQuery: {\r\n page: 0,\r\n size: 12,\r\n groupNameContains: null\r\n },\r\n\r\n favoriteProjectPageData: {\r\n data: [],\r\n number: 1,\r\n size: 15,\r\n totalElements:0,\r\n totalPages: 0\r\n },\r\n favoriteProjectPageQuery: {\r\n page: 0,\r\n size: 20,\r\n projectNameContains: null\r\n }\r\n }\r\n },\r\n \r\n created() {\r\n this.fetchGroupsFunction()\r\n this.onFavoriteProjectPageChange(1)\r\n },\r\n\r\n computed: {\r\n activeTab: {\r\n get(){\r\n if (this.$store.state.groupListActiveTab) {\r\n return this.$store.state.groupListActiveTab\r\n } else {\r\n this.$store.commit('switchGroupListActiveTab', 'groupListTab')\r\n return \"groupListTab\"\r\n }\r\n },\r\n set(newVal) {\r\n this.$store.commit('switchGroupListActiveTab', newVal)\r\n }\r\n }\r\n },\r\n \r\n methods: {\r\n isPermit(role) {\r\n return user.hasAnyRoles([ role ])\r\n },\r\n async fetchUserFavorites() {\r\n const jsonData = await listFavorites(this.favoriteProjectPageQuery)\r\n this.favoriteProjectPageData.data = jsonData.data.content\r\n this.favoriteProjectPageData.number = jsonData.data.number + 1\r\n this.favoriteProjectPageData.size = jsonData.data.size\r\n this.favoriteProjectPageData.totalPages = jsonData.data.totalPages\r\n this.favoriteProjectPageData.totalElements = jsonData.data.totalElements\r\n },\r\n async fetchGroupsFunction() {\r\n const jsonData = await listGroups(this.groupPageQuery)\r\n this.groupPageData.data = jsonData.data.content\r\n this.groupPageData.number = jsonData.data.number + 1\r\n this.groupPageData.size = jsonData.data.size\r\n this.groupPageData.totalPages = jsonData.data.totalPages\r\n this.groupPageData.totalElements = jsonData.data.totalElements\r\n },\r\n requiredInputValidRule(message) {\r\n return {\r\n required: true,\r\n message: message,\r\n trigger: 'blur',\r\n }\r\n },\r\n requiredGroupOwners() {\r\n if (this.groupData.groupOwners == null \r\n || this.groupData.groupOwners.length < 1\r\n || this.groupData.groupOwners.length > 20) {\r\n return false\r\n } else {\r\n return true\r\n }\r\n },\r\n onPageChange(currentPage) {\r\n if (currentPage) {\r\n this.groupPageQuery.page = currentPage - 1\r\n this.fetchGroupsFunction()\r\n }\r\n },\r\n\r\n onQuery() {\r\n this.fetchGroupsFunction()\r\n },\r\n async queryUsersAsync(query, callback) {\r\n const data = await listUsers(this.userQueryData).then(resp => resp.data.content)\r\n const users = data.map(u => {\r\n return {\r\n value: u.nickname,\r\n nickname: u.nickname,\r\n email: u.email,\r\n id: u.id\r\n }\r\n })\r\n callback(users)\r\n },\r\n\r\n onGroupDelete(groupId) {\r\n this.$confirm('确认删除该分组?删除后数据将无法恢复', '警告', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n deleteGroup(groupId).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('删除成功')\r\n this.isShowEditGroupDialog = false\r\n this.fetchGroupsFunction()\r\n }\r\n })\r\n })\r\n },\r\n onGroupSave() {\r\n if (!this.requiredGroupOwners()) {\r\n this.$message.warning('组长人数至少需要 1 人,最多为 20 人')\r\n return\r\n }\r\n this.$refs.groupFormRef.validate(valid => {\r\n if (valid) {\r\n const request = Object.assign({}, this.groupData)\r\n request.groupOwnerUserIds = this.groupData.groupOwners.map(r => r.id)\r\n createOrUpdateGroup(request).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('保存成功')\r\n this.isShowEditGroupDialog = false\r\n this.groupData = { groupOwners: [] }\r\n this.fetchGroupsFunction()\r\n }\r\n })\r\n } else {\r\n this.$message.error('请填写表单必填项')\r\n }\r\n })\r\n \r\n },\r\n\r\n onGroupOwnerRemove(index) {\r\n this.groupData.groupOwners.splice(index, 1)\r\n },\r\n onGroupOwnerSelect(item) {\r\n if (!this.groupData.groupOwners.some(data => data.id == item.id)) {\r\n this.groupData.groupOwners.push(item)\r\n }\r\n \r\n this.userQueryData.nicknameOrUsernameOrEmailContains = null\r\n },\r\n toCreatePage() {\r\n this.isShowEditGroupDialog = true\r\n this.groupData = { groupOwners: [] }\r\n },\r\n toEditPage(groupId) {\r\n getGroup(groupId).then(resp => {\r\n if(!resp.errCode) {\r\n this.isShowEditGroupDialog = true\r\n this.groupData = resp.data\r\n }\r\n })\r\n },\r\n toGroupDashboard(groupId, groupName) {\r\n this.$router.push({path: \"/groups/\"+groupId, query: {groupName: groupName }})\r\n },\r\n\r\n toDocumentPage(favoriteProject) {\r\n const groupId = favoriteProject.groupId\r\n const projectId = favoriteProject.projectId\r\n this.$router.push({\r\n path: \"/groups/\" + groupId + \"/projects/\" + projectId + \"/documents\",\r\n query: { projectName: favoriteProject.projectName, groupName: favoriteProject.groupName }\r\n })\r\n },\r\n onFavoriteProjectPageChange(currentPage) {\r\n if (currentPage) {\r\n this.favoriteProjectPageQuery.page = currentPage - 1\r\n this.fetchUserFavorites()\r\n }\r\n },\r\n onRemoveFavorite(projectId) {\r\n removeFavorite(projectId).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('成功取消')\r\n this.fetchUserFavorites()\r\n }\r\n })\r\n },\r\n onProjectDelete(id) {\r\n this.$confirm('确认删除该项目?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n deleteProjectById(this.groupId, id).then(resp => {\r\n if (!resp.errCode) {\r\n this.$message.success('删除成功');\r\n this.fetchUserFavorites()\r\n }\r\n })\r\n })\r\n },\r\n onTabClick(tab) {\r\n this.$store.commit('switchGroupListActiveTab', tab.props.name)\r\n },\r\n dialogWidth() {\r\n return dialogPercentWidth()\r\n }\r\n }\r\n}\r\n\r\n</script>","import { render } from \"./GroupList.vue?vue&type=template&id=09d42977\"\nimport script from \"./GroupList.vue?vue&type=script&lang=js\"\nexport * from \"./GroupList.vue?vue&type=script&lang=js\"\n\nimport \"./GroupList.vue?vue&type=style&index=0&id=09d42977&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["base","listGroups","pageQuery","axios","params","getGroup","id","createOrUpdateGroup","body","updateGroup","createGroup","deleteGroup","listGroupMembers","groupId","addGroupMember","removeGroupMember","userId","updateGroupMemberRole","role","listProjects","parameters","getProjectById","createOrUpdateProject","request","updateProject","createProject","testConnection","listProjectManualTasks","cancelProjectTask","projectId","taskId","groupProjectBase","deleteProjectById","listUsers","enableUser","disableUser","getByUserId","deleteByUserId","createUser","renewPassword","addSysOwnerTo","removeSysOwnerFrom","updatePassword","updateNickname","listFavorites","removeFavorite","addFavorite","style","_createElementVNode","_createVNode","_component_el_tabs","$options","$event","onTabClick","_component_el_tab_pane","label","name","_component_el_container","_component_el_main","_component_el_row","gutter","_createBlock","_component_el_col","xs","sm","md","lg","xl","_component_el_tooltip","content","placement","_component_el_button","type","icon","onClick","_component_el_input","onChange","$data","groupNameContains","placeholder","data","length","key","_component_el_empty","description","_createElementBlock","_Fragment","_renderList","group","_component_el_card","shadow","onMouseenter","onMouseleave","class","_component_el_link","underline","_toDisplayString","_component_el_space","direction","alignment","size","wrap","_component_el_icon","color","_component_user","groupOwnerNames","slice","owner","index","_component_el_tag","_component_el_dropdown","dropdown","_component_el_dropdown_menu","_component_el_dropdown_item","_component_arrow_down","_component_folder","projectCount","_component_el_footer","_component_el_pagination","layout","currentPage","number","totalPages","onCurrentChange","_component_el_table","stripe","_component_el_table_column","prop","scope","row","projectName","align","isAutoSync","autoSyncCron","_hoisted_5","_component_database_icon","databaseType","groupName","_ctx","_component_el_dialog","center","width","_component_el_form","model","rules","ref","_component_el_form_item","_hoisted_10","_component_el_autocomplete","nicknameOrUsernameOrEmailContains","onSelect","clearable","groupOwners","user","closable","onClose","email","nickname","_component_el_collapse","_component_el_collapse_item","title","_component_warning_filled","isShowEditGroupDialog","mouseEnterGroupId","groupData","groupDataRule","this","requiredInputValidRule","userQueryData","nicknameContains","groupPageData","totalElements","groupPageQuery","page","favoriteProjectPageData","favoriteProjectPageQuery","projectNameContains","created","fetchGroupsFunction","onFavoriteProjectPageChange","computed","activeTab","get","$store","state","groupListActiveTab","commit","set","newVal","methods","isPermit","async","jsonData","message","required","trigger","requiredGroupOwners","onPageChange","onQuery","query","callback","then","resp","users","map","u","value","onGroupDelete","$confirm","confirmButtonText","cancelButtonText","errCode","$message","success","onGroupSave","$refs","groupFormRef","validate","valid","Object","assign","groupOwnerUserIds","r","error","warning","onGroupOwnerRemove","splice","onGroupOwnerSelect","item","some","push","toCreatePage","toEditPage","toGroupDashboard","$router","path","toDocumentPage","favoriteProject","fetchUserFavorites","onRemoveFavorite","onProjectDelete","tab","props","dialogWidth","dialogPercentWidth","__exports__","render"],"sourceRoot":""} \ No newline at end of file diff --git a/api/src/main/resources/static/js/app-legacy.94b013ac.js b/api/src/main/resources/static/js/app-legacy.94b013ac.js deleted file mode 100644 index 0e2ff0d..0000000 --- a/api/src/main/resources/static/js/app-legacy.94b013ac.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";var e={40152:function(e,t,n){n.d(t,{x4:function(){return o},rd:function(){return a},jb:function(){return u}});var r=n(63872),o=function(e){var t=new FormData;return t.append("username",e.username),t.append("password",e.password),r.Z.post("/login",t)},a=function(e,t){return r.Z.get("/oauth2/login/"+e,{params:t})},u=function(e){return r.Z.post("/access_tokens",{refreshToken:e})}},21381:function(e,t,n){n(66992),n(88674),n(19601),n(17727),n(41539),n(54747),n(47941);var r=n(49963),o=n(8722),a=n(30137),u=n(30837),i=n(99622),c=n(66246),s=(n(54415),n(24943)),l=n(24239),f=n(66252);function d(e,t){var n=(0,f.up)("router-view");return(0,f.wg)(),(0,f.j4)(n)}var p=n(83744);const m={},h=(0,p.Z)(m,[["render",d]]);var g=h,y=n(51836),w=n(3577),v=["src"],b=["src"],k=["src"],S=["src"],_=["src"],j=["src"];function T(e,t,r,o,a,u){var i=(0,f.up)("el-tooltip");return"mysql"==r.databaseType.toLowerCase()?((0,f.wg)(),(0,f.j4)(i,{key:0,content:r.databaseType,placement:"left"},{default:(0,f.w5)((function(){return[(0,f._)("img",{src:n(92357),style:{"max-width":"33px","max-height":"33px"}},null,8,v)]})),_:1},8,["content"])):"postgresql"==r.databaseType.toLowerCase()?((0,f.wg)(),(0,f.j4)(i,{key:1,content:r.databaseType,placement:"left"},{default:(0,f.w5)((function(){return[(0,f._)("img",{src:n(43609),style:{"max-width":"33px","max-height":"33px"}},null,8,b)]})),_:1},8,["content"])):"oracle"==r.databaseType.toLowerCase()?((0,f.wg)(),(0,f.j4)(i,{key:2,content:r.databaseType,placement:"left"},{default:(0,f.w5)((function(){return[(0,f._)("img",{src:n(22260),style:{"max-width":"33px","max-height":"33px"}},null,8,k)]})),_:1},8,["content"])):"mariadb"==r.databaseType.toLowerCase()?((0,f.wg)(),(0,f.j4)(i,{key:3,content:r.databaseType,placement:"left"},{default:(0,f.w5)((function(){return[(0,f._)("img",{src:n(36658),style:{"max-width":"33px","max-height":"33px"}},null,8,S)]})),_:1},8,["content"])):"sqlserver"==r.databaseType.toLowerCase()?((0,f.wg)(),(0,f.j4)(i,{key:4,content:r.databaseType,placement:"left"},{default:(0,f.w5)((function(){return[(0,f._)("img",{src:n(35641),style:{"max-width":"33px","max-height":"33px"}},null,8,_)]})),_:1},8,["content"])):r.icon?((0,f.wg)(),(0,f.j4)(i,{key:5,content:r.databaseType,placement:"left"},{default:(0,f.w5)((function(){return[(0,f._)("img",{src:r.icon,style:{"max-width":"33px","max-height":"33px"}},null,8,j)]})),_:1},8,["content"])):((0,f.wg)(),(0,f.iD)(f.HY,{key:6},[(0,f.Uk)((0,w.zw)(r.databaseType),1)],64))}var x={props:{databaseType:String,icon:String}};const D=(0,p.Z)(x,[["render",T]]);var A=D,L=n(94890),q=(0,r.ri)(g);Object.keys(a).forEach((function(e){q.component(e,a[e])})),q.component("database-icon",A),q.directive("require-roles",{mounted:function(e,t){var n=t.value;y.E.hasAnyRoles(n)||e.parentNode&&e.parentNode.removeChild(e)}}),q.directive("select-more",{updated:function(e,t){var n=e.querySelector(".select-trigger"),r=n.getAttribute("aria-describedby"),o=document.getElementById(r);if(null!=o){var a=o.parentElement.querySelector(".el-select-dropdown .el-scrollbar .el-select-dropdown__wrap");null!=a?a.addEventListener("scroll",(function(){var e=this.scrollHeight-this.scrollTop-1<=this.clientHeight;e&&t.value()})):console.log("load select component failed")}}}),u.Z.registerLanguage("javascript",i.Z),q.use(c.Z),q.use(l.Z),q.use(o.Z),q.use(s.Z),q.use(L._),q.mount("#app")},24943:function(e,t,n){n.d(t,{Z:function(){return oe}});n(41539),n(78783),n(33948);var r=n(42119),o=(n(74916),n(64765),n(68309),n(66252)),a=n(3577),u={style:{"margin-top":"16px"}},i={class:"search-container"},c={key:0,style:{height:"80px"}},s=["onClick"],l=(0,o.Uk)("project"),f=(0,o.Uk)(),d={class:"jump"},p=["onClick"],m=(0,o.Uk)("group"),h=(0,o.Uk)(),g={class:"jump"};function y(e,t,n,r,y,w){var v=(0,o.up)("AppNav"),b=(0,o.up)("el-aside"),k=(0,o.up)("Breadcrumb"),S=(0,o.up)("Avatar"),_=(0,o.up)("el-header"),j=(0,o.up)("router-view"),T=(0,o.up)("el-main"),x=(0,o.up)("el-container"),D=(0,o.up)("el-input"),A=(0,o.up)("el-tag"),L=(0,o.up)("el-link"),q=(0,o.up)("el-divider"),C=(0,o.up)("Right"),N=(0,o.up)("el-icon"),E=(0,o.up)("el-dialog"),W=(0,o.Q2)("loading");return(0,o.wg)(),(0,o.j4)(x,{class:"databasir"},{default:(0,o.w5)((function(){return[(0,o.Wm)(b,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(v,{class:"databasir-nav",onOnSearch:t[0]||(t[0]=function(e){return w.search()})})]})),_:1}),(0,o.Wm)(_,{class:"databasir-main-header"},{default:(0,o.w5)((function(){return[(0,o.Wm)(k),(0,o.Wm)(S)]})),_:1}),(0,o.Wm)(T,{class:"databasir-main"},{default:(0,o.w5)((function(){return[(0,o.Wm)(x,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(T,{class:"databasir-main-content"},{default:(0,o.w5)((function(){return[(0,o.Wm)(j)]})),_:1})]})),_:1})]})),_:1}),(0,o.Wm)(E,{modelValue:y.showSearchDialog,"onUpdate:modelValue":t[2]||(t[2]=function(e){return y.showSearchDialog=e}),title:"搜索",width:"60%"},{default:(0,o.w5)((function(){return[(0,o.Wm)(D,{modelValue:y.queryKeyword,"onUpdate:modelValue":t[1]||(t[1]=function(e){return y.queryKeyword=e}),"prefix-icon":"Search",placeholder:"分组、项目、database、schema 搜索",style:{width:"100%",border:"none"},onChange:w.onQuery},null,8,["modelValue","onChange"]),(0,o._)("div",u,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(y.searchSelectHistory,(function(e,t){return(0,o.wg)(),(0,o.j4)(L,{underline:!1,key:t,onClick:function(t){return w.jumpToPath(e.path)},style:{"margin-right":"12px","margin-bottom":"12px"}},{default:(0,o.w5)((function(){return[(0,o.Wm)(A,{closable:"",type:"group"==e.type?"primary":"success",onClose:function(t){return w.onRemoveSelectHistoryItem(e.label)}},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,a.zw)(e.label),1)]})),_:2},1032,["type","onClose"])]})),_:2},1032,["onClick"])})),128))]),y.queryData.projects.length>0||y.queryData.groups.length>0?((0,o.wg)(),(0,o.j4)(q,{key:0})):(0,o.kq)("",!0),(0,o.wy)(((0,o.wg)(),(0,o.iD)("div",i,[y.queryLoading&&0==y.queryData.projects.length&&0==y.queryData.groups.length?((0,o.wg)(),(0,o.iD)("div",c)):(0,o.kq)("",!0),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(y.queryData.projects,(function(e,t){return(0,o.wg)(),(0,o.iD)("div",{class:"search-item",key:t,onClick:function(t){return w.jumpToProject(e)}},[(0,o._)("span",null,[(0,o.Wm)(A,{type:"success"},{default:(0,o.w5)((function(){return[l]})),_:1}),f,(0,o.Wm)(L,{underline:!1},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,a.zw)(e.groupName)+" / "+(0,a.zw)(e.projectName),1)]})),_:2},1024)]),(0,o._)("span",d,[(0,o.Wm)(N,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(C)]})),_:1})])],8,s)})),128)),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(y.queryData.groups,(function(e,t){return(0,o.wg)(),(0,o.iD)("div",{class:"search-item",key:t,onClick:function(t){return w.jumpToGroup(e)}},[(0,o._)("span",null,[(0,o.Wm)(A,null,{default:(0,o.w5)((function(){return[m]})),_:1}),h,(0,o.Wm)(L,{underline:!1},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,a.zw)(e.name),1)]})),_:2},1024)]),(0,o._)("span",g,[(0,o.Wm)(N,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(C)]})),_:1})])],8,p)})),128))])),[[W,y.queryLoading]])]})),_:1},8,["modelValue"])]})),_:1})}n(57327),n(40561),n(38862);var w=(0,o._)("span",null,"Databasir",-1);function v(e,t,n,r,u,i){var c=(0,o.up)("home-filled"),s=(0,o.up)("el-icon"),l=(0,o.up)("el-menu-item"),f=(0,o.up)("el-sub-menu"),d=(0,o.up)("el-button"),p=(0,o.up)("el-menu");return(0,o.wg)(),(0,o.j4)(p,{router:"",collapse:e.isCollapse,mode:"vertical",class:"left-menu"},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{index:"/"},{title:(0,o.w5)((function(){return[w]})),default:(0,o.w5)((function(){return[(0,o.Wm)(s,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(c)]})),_:1})]})),_:1}),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.routes,(function(t,n){return(0,o.wg)(),(0,o.iD)(o.HY,{key:n},[e.isShowMenu(t)&&t.children.length>0&&t.children.some((function(e){return!e.hidden}))?((0,o.wg)(),(0,o.j4)(f,{key:0,index:t.path},{title:(0,o.w5)((function(){return[(0,o.Wm)(s,null,{default:(0,o.w5)((function(){return[((0,o.wg)(),(0,o.j4)((0,o.LL)(t.icon)))]})),_:2},1024),(0,o._)("span",null,(0,a.zw)(t.meta.nav),1)]})),default:(0,o.w5)((function(){return[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(t.children,(function(e,r){return(0,o.wg)(),(0,o.iD)(o.HY,{key:n+"-"+r},[e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(l,{key:0,index:t.path+"/"+e.path},{title:(0,o.w5)((function(){return[(0,o._)("span",null,(0,a.zw)(e.meta.nav),1)]})),default:(0,o.w5)((function(){return[e.icon?((0,o.wg)(),(0,o.j4)(s,{key:0},{default:(0,o.w5)((function(){return[((0,o.wg)(),(0,o.j4)((0,o.LL)(e.icon)))]})),_:2},1024)):(0,o.kq)("",!0)]})),_:2},1032,["index"]))],64)})),128))]})),_:2},1032,["index"])):e.isShowMenu(t)?((0,o.wg)(),(0,o.j4)(l,{key:1,index:t.path},{title:(0,o.w5)((function(){return[(0,o._)("span",null,(0,a.zw)(t.meta.nav),1)]})),default:(0,o.w5)((function(){return[(0,o.Wm)(s,null,{default:(0,o.w5)((function(){return[((0,o.wg)(),(0,o.j4)((0,o.LL)(t.icon)))]})),_:2},1024)]})),_:2},1032,["index"])):(0,o.kq)("",!0)],64)})),128)),(0,o.Wm)(l,{index:"",onClick:t[0]||(t[0]=function(t){return e.showSearchDialog()})},{default:(0,o.w5)((function(){return[(0,o.Wm)(d,{type:"text",icon:"Search",style:{color:"#303133"}})]})),_:1})]})),_:1},8,["collapse"])}var b=n(2262),k=n(51836),S=n(24239),_=(0,o.aZ)({emits:["on-search"],setup:function(e,t){var n=(0,b.Fl)((function(){return S.Z.state.menu.isCollapse})),o=(0,r.tv)(),a=o.options.routes,u=function(e){if(e.hidden)return!1;if(e.meta.requireAnyRoles&&e.meta.requireAnyRoles.length>0){var t=k.E.hasAnyRoles(e.meta.requireAnyRoles);if(!t)return!1}return!0},i=function(){S.Z.commit("expandMenu")},c=function(){t.emit("on-search")};return{isCollapse:n,isShowMenu:u,expandMenu:i,routes:a,showSearchDialog:c}}}),j=n(83744);const T=(0,j.Z)(_,[["render",v]]);var x=T;function D(e,t,n,r,u,i){var c=(0,o.up)("fold"),s=(0,o.up)("el-icon"),l=(0,o.up)("el-link"),f=(0,o.up)("el-breadcrumb-item"),d=(0,o.up)("el-breadcrumb");return(0,o.wg)(),(0,o.j4)(d,{separator:"/"},{default:(0,o.w5)((function(){return[i.menuIsCollapse?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(f,{key:0},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{onClick:t[0]||(t[0]=function(e){return i.onFoldMenu()}),underline:!1},{default:(0,o.w5)((function(){return[(0,o.Wm)(s,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(c)]})),_:1})]})),_:1})]})),_:1})),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(i.breadcrumbs,(function(e,t){return(0,o.wg)(),(0,o.j4)(f,{key:t,to:e.to},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,a.zw)(e.name),1)]})),_:2},1032,["to"])})),128))]})),_:1})}var A={computed:{breadcrumbs:function(){return"function"===typeof this.$route.meta.breadcrumb?this.$route.meta.breadcrumb(this.$route,this.$store.state):[]},menuIsCollapse:function(){return this.$store.state.menu.isCollapse}},methods:{onFoldMenu:function(){this.$store.commit("foldMenu")}}};const L=(0,j.Z)(A,[["render",D]]);var q=L,C=(0,o.Uk)("个人中心"),N=(0,o.Uk)("注销登陆");function E(e,t,n,r,u,i){var c=(0,o.up)("el-avatar"),s=(0,o.up)("el-dropdown-item"),l=(0,o.up)("el-dropdown-menu"),f=(0,o.up)("el-dropdown");return(0,o.wg)(),(0,o.j4)(f,null,{dropdown:(0,o.w5)((function(){return[(0,o.Wm)(l,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(s,null,{default:(0,o.w5)((function(){return[(0,o.Uk)((0,a.zw)(i.userNickname),1)]})),_:1}),(0,o.Wm)(s,{icon:"user",divided:"",onClick:t[0]||(t[0]=function(e){return i.toProfilePage()})},{default:(0,o.w5)((function(){return[C]})),_:1}),(0,o.Wm)(s,{icon:"back",onClick:t[1]||(t[1]=function(e){return i.onLogout()})},{default:(0,o.w5)((function(){return[N]})),_:1})]})),_:1})]})),default:(0,o.w5)((function(){return[(0,o.Wm)(c,{size:36,src:i.avatarUrl,icon:"avatar"},null,8,["src"])]})),_:1})}var W={computed:{userNickname:function(){return this.$store.state.user.nickname},avatarUrl:function(){return this.$store.state.user.avatar}},methods:{onLogout:function(){k.E.removeUserLoginData(),this.$router.push({path:"/login"})},toProfilePage:function(){this.$router.push({path:"/profile"})}}};const I=(0,j.Z)(W,[["render",E]]);var O=I,H=n(63872),P="/api/v1.0/search",U=function(e){return H.Z.get(P,{params:e})},R={components:{AppNav:x,Breadcrumb:q,Avatar:O},data:function(){return{showSearchDialog:!1,queryKeyword:"",queryData:{projects:[],groups:[]},queryLoading:!1,searchSelectHistory:[],searchSelectHistoryKey:"globalSearchSelectHistory"}},mounted:function(){this.loadSearchSelectHistory()},methods:{search:function(){this.showSearchDialog=!0},onQuery:function(e){var t=this;this.queryLoading=!0,U({query:e}).then((function(e){e.errCode||(t.queryData=e.data)})).finally((function(){return t.queryLoading=!1}))},jumpToGroup:function(e){this.showSearchDialog=!1;var t="/groups/"+e.id+"?groupName="+e.name,n={label:e.name,path:t,type:"group"},r=this.searchSelectHistory.filter((function(e){return e.label!=n.label}));r.unshift(n),r.splice(15),this.searchSelectHistory=r,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory)),window.location=t},jumpToProject:function(e){this.showSearchDialog=!1;var t="/groups/"+e.groupId+"/projects/"+e.projectId+"/documents?groupName="+e.groupName+"&projectName="+e.projectName,n={label:e.groupName+" / "+e.projectName,path:t,type:"project"},r=this.searchSelectHistory.filter((function(e){return e.label!=n.label}));r.unshift(n),r.splice(15),this.searchSelectHistory=r,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory)),window.location=t},jumpToPath:function(e){window.location=e},loadSearchSelectHistory:function(){var e=this.searchSelectHistoryKey;if(null!=window.localStorage.getItem(e)){var t=JSON.parse(window.localStorage.getItem(e));this.searchSelectHistory=t}},onRemoveSelectHistoryItem:function(e){var t=this.searchSelectHistory.filter((function(t){return t.label!=e}));this.searchSelectHistory=t,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory))}}};const Z=(0,j.Z)(R,[["render",y]]);var K=Z;function M(){return{name:"首页",to:{path:"/"}}}function z(){return{name:"项目中心",to:{name:"groupListPage"}}}function B(e){var t="项目组";return e.query.groupName&&(t=e.query.groupName),{name:t,to:{path:"/groups/"+e.params.groupId}}}function Y(e){var t="项目文档";e.query.projectName&&(t=e.query.projectName);var n=e.params.projectId,r=e.params.groupId;return{name:t,to:{path:"/groups/"+r+"/projects/"+n+"/documents",query:{projectName:t}}}}function V(){return{name:"用户列表",to:{path:"/users"}}}function $(){return{name:"个人中心",to:{path:"/profile"}}}function F(){return{name:"邮箱设置",to:{path:"/settings/sysEmail"}}}function J(){return{name:"操作日志",to:{path:"/settings/sysLog"}}}function Q(){return{name:"登录设置",to:{path:"/settings/sysOauth2"}}}function G(){return{name:"数据库扩展",to:{path:"/settings/sysDatabaseType"}}}function X(){return{name:"文档模板",to:{path:"/settings/sysDocumentTemplate"}}}var ee={index:function(){return[M()]},groupList:function(){return[M(),z()]},groupDashboard:function(e,t){return[M(),z(),B(e,t)]},groupProjectDocument:function(e,t){return[M(),z(),B(e,t),Y(e)]},userProfile:function(){return[M(),$()]},userList:function(){return[M(),V()]},sysEmailEdit:function(){return[M(),F()]},sysLog:function(){return[M(),J()]},sysOauth2:function(){return[M(),Q()]},sysDatabaseType:function(){return[M(),G()]},sysDocumentTemplate:function(){return[M(),X()]}},te=ee,ne=[{path:"/login",component:function(){return n.e(139).then(n.bind(n,41139))},hidden:!0,meta:{requireAuth:!1}},{path:"/login/oauth2/:id",component:function(){return n.e(865).then(n.bind(n,68865))},hidden:!0,props:!0,meta:{requireAuth:!1}},{path:"/",hidden:!0,component:K,children:[{path:"",hidden:!0,component:function(){return Promise.all([n.e(480),n.e(206)]).then(n.bind(n,32206))},meta:{breadcrumb:te.groupList}}]},{path:"/groups",icon:"Collection",component:K,meta:{nav:"项目中心"},children:[{path:"",name:"groupListPage",hidden:!0,component:function(){return Promise.all([n.e(480),n.e(206)]).then(n.bind(n,32206))},meta:{breadcrumb:te.groupList}},{path:":groupId",hidden:!0,component:function(){return Promise.all([n.e(480),n.e(725)]).then(n.bind(n,40725))},meta:{breadcrumb:te.groupDashboard}},{path:":groupId/projects/:projectId/documents",hidden:!0,component:function(){return n.e(408).then(n.bind(n,37408))},meta:{breadcrumb:te.groupProjectDocument}}]},{path:"/users",icon:"List",component:K,meta:{nav:"用户中心",requireAnyRoles:["SYS_OWNER"]},children:[{path:"",hidden:!0,component:function(){return n.e(117).then(n.bind(n,4117))},meta:{breadcrumb:te.userList}}]},{path:"/profile",icon:"User",component:K,meta:{nav:"个人中心",breadcrumb:te.userProfile},children:[{path:"",hidden:!0,component:function(){return n.e(469).then(n.bind(n,26469))}}]},{path:"/settings",icon:"Setting",component:K,meta:{nav:"系统中心",requireAnyRoles:["SYS_OWNER"]},children:[{path:"sysEmail",icon:"Notification",component:function(){return n.e(243).then(n.bind(n,51243))},meta:{nav:"邮箱设置",breadcrumb:te.sysEmailEdit}},{path:"sysLog",icon:"Document",component:function(){return n.e(17).then(n.bind(n,16017))},meta:{nav:"操作日志",breadcrumb:te.sysLog}},{path:"sysOauth2",icon:"Connection",component:function(){return n.e(834).then(n.bind(n,86834))},meta:{nav:"登陆设置",breadcrumb:te.sysOauth2}},{path:"sysDatabaseType",icon:"office-building",component:function(){return n.e(918).then(n.bind(n,30918))},meta:{nav:"数据库扩展",breadcrumb:te.sysDatabaseType}},{path:"sysDocumentTemplate",icon:"document-add",component:function(){return n.e(227).then(n.bind(n,93227))},meta:{nav:"文档模板",breadcrumb:te.sysDocumentTemplate}},{path:"sysKey",icon:"Key",hidden:"true",component:K,meta:{nav:"系统秘钥",breadcrumb:te.sysKeyEdit}}]}],re=(0,r.p7)({history:(0,r.PO)(),routes:ne});re.beforeEach((function(e,t,n){0==e.meta.requireAuth?"/login"==e.path&&k.r.hasAccessToken()?n(t):n():k.r.hasAccessToken()?n():n({path:"/login"})})),re.beforeEach((function(e,t,n){!e.query.groupName&&t.query.groupName&&(e.query.groupName=t.query.groupName),!e.query.projectName&&t.query.projectName&&(e.query.projectName=t.query.projectName),n()}));var oe=re},24239:function(e,t,n){var r=n(88637),o=n(51836),a=(0,r.MT)({state:function(){var e={user:{nickname:null,usernmae:null,email:null,avatar:null},groupListActiveTab:null,menu:{isCollapse:!0}},t=o.E.loadUserLoginData();return t&&(e.user.nickname=t.nickname,e.user.usernmae=t.usernmae,e.user.email=t.email,e.user.avatar=t.avatar),e},mutations:{userUpdate:function(e,t){t.nickname&&(e.user.nickname=t.nickname),t.usernmae&&(e.user.usernmae=t.usernmae),t.email&&(e.user.email=t.email),t.avatar&&(e.user.avatar=t.avatar)},foldMenu:function(e){e.menu.isCollapse=!0},expandMenu:function(e){e.menu.isCollapse=!1},switchGroupListActiveTab:function(e,t){t&&(e.groupListActiveTab=t)}}});t["Z"]=a},51836:function(e,t,n){n.d(t,{r:function(){return u},E:function(){return i}});n(38862),n(41539),n(21249);var r="accessToken",o="accessTokenExpireAt",a="userLoginData",u={hasAccessToken:function(){var e=this.loadAccessToken();return e},hasValidAccessToken:function(){var e=this.loadAccessToken(),t=window.localStorage.getItem(o);return e&&t?t>(new Date).getTime()-1e4:(console.log("warn: not found accessToken and expireAt key"),!1)},saveAccessToken:function(e,t){window.localStorage.setItem(r,e),window.localStorage.setItem(o,t)},loadAccessToken:function(){var e=window.localStorage.getItem(r);return e||null}},i={saveUserLoginData:function(e){window.localStorage.setItem(r,e.accessToken),window.localStorage.setItem(o,e.accessTokenExpireAt),window.localStorage.setItem(a,JSON.stringify(e))},removeUserLoginData:function(){window.localStorage.removeItem(a),window.localStorage.removeItem(r),window.localStorage.removeItem(o)},loadUserLoginData:function(){if(!window.localStorage.getItem(a))return null;var e=window.localStorage.getItem(a);return JSON.parse(e)},hasAnyRoles:function(e){var t=window.localStorage.getItem(a);if(null==t)return!1;var n=JSON.parse(t);return n.roles.map((function(e){return e.groupId?e.role+"?groupId="+e.groupId:e.role})).some((function(t){return e.some((function(e){return e==t}))}))},getRefreshToken:function(){var e=window.localStorage.getItem(a);if(null==e)return null;var t=JSON.parse(e);return t.refreshToken}}},63872:function(e,t,n){var r=n(48534),o=(n(35666),n(41539),n(54747),n(23157),n(74916),n(15306),n(9669)),a=n.n(o),u=n(20610),i=n(24943),c=n(51836),s=n(40152),l={NODE_ENV:"production",BASE_URL:"/"}.VUE_APP_API_URL;a().defaults.baseURL=l,a().defaults.timeout=15e3,a().defaults.withCredentials=!1,a().defaults.headers.post["Content-Type"]="application/json",a().defaults.headers.post["Access-Control-Allow-Origin-Type"]="*";var f=!1;function d(){f=!0}function p(){f=!1}var m=[];function h(e){m.push(e)}function g(e){m.forEach((function(t){t(e)})),m=[]}function y(e){return w.apply(this,arguments)}function w(){return w=(0,r.Z)(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(n=c.E.getRefreshToken(),n||k(),!f){e.next=4;break}return e.abrupt("return",new Promise((function(e){h((function(){t&&(t.headers.Authorization="Bearer "+c.r.loadAccessToken()),e(t)}))})));case 4:return d(),e.next=7,(0,s.jb)(n).then((function(e){e.errCode?k():(c.r.saveAccessToken(e.data.accessToken,e.data.accessTokenExpireAt),p())})).finally((function(){return p()}));case 7:return e.abrupt("return",e.sent);case 8:case"end":return e.stop()}}),e)}))),w.apply(this,arguments)}function v(e){return b.apply(this,arguments)}function b(){return b=(0,r.Z)(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,a()({method:t.method,data:t.data,url:t.url,baseURL:t.baseURL,headers:{Authorization:"Bearer "+c.r.loadAccessToken()}});case 3:return n=e.sent,g(t),e.abrupt("return",n);case 8:e.prev=8,e.t0=e["catch"](0),console.log(e.t0),S("网络异常,请稍后再试");case 12:case"end":return e.stop()}}),e,null,[[0,8]])}))),b.apply(this,arguments)}function k(){c.E.removeUserLoginData(),i.Z.replace("/login")}function S(e){(0,u.z8)({message:e,type:"error",duration:5e3,grouping:!0})}a().interceptors.request.use(function(){var e=(0,r.Z)(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if("/access_tokens"!=t.url&&!t.url.startsWith("/oauth2")&&"/login"!=t.url){e.next=2;break}return e.abrupt("return",t);case 2:if(!c.r.hasValidAccessToken()){e.next=5;break}return t.headers.Authorization="Bearer "+c.r.loadAccessToken(),e.abrupt("return",t);case 5:if(!f){e.next=8;break}return n=new Promise((function(e){h((function(){t&&(t.headers.Authorization="Bearer "+c.r.loadAccessToken()),e(t)}))})),e.abrupt("return",n);case 8:return e.abrupt("return",t);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),(function(e){return p(),Promise.reject(e)})),a().interceptors.response.use((function(e){var t=e.data;return t.errCode&&S(t.errMessage),t}),(function(e){if(e.response)if(401==e.response.status){if("X_0002"==e.response.data.errCode)c.E.removeUserLoginData(),S("登陆状态失效,请重新登陆"),k();else if("X_0004"==e.response.data.errCode)return y(e.config).then((function(){return v(e.config)}))}else 403==e.response.status?S("无执行该操作的权限"):S(e.message);else console.log(e),S("网络异常,请稍后再试");return Promise.reject(e)})),t["Z"]=a()},36658:function(e,t,n){e.exports=n.p+"img/MariaDB.9e6854cc.svg"},92357:function(e,t,n){e.exports=n.p+"img/MySQL.c8f47618.svg"},22260:function(e,t,n){e.exports=n.p+"img/Oracle.c9ed26e0.svg"},43609:function(e,t,n){e.exports=n.p+"img/PostgreSQL.6e3d3a5e.svg"},35641:function(e,t,n){e.exports=n.p+"img/Sqlserver.deff7c4c.svg"}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.m=e,function(){var e=[];n.O=function(t,r,o,a){if(!r){var u=1/0;for(l=0;l<e.length;l++){r=e[l][0],o=e[l][1],a=e[l][2];for(var i=!0,c=0;c<r.length;c++)(!1&a||u>=a)&&Object.keys(n.O).every((function(e){return n.O[e](r[c])}))?r.splice(c--,1):(i=!1,a<u&&(u=a));if(i){e.splice(l--,1);var s=o();void 0!==s&&(t=s)}}return t}a=a||0;for(var l=e.length;l>0&&e[l-1][2]>a;l--)e[l]=e[l-1];e[l]=[r,o,a]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}}(),function(){n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))}}(),function(){n.u=function(e){return"js/"+e+"-legacy."+{17:"5bee094a",117:"623d8834",139:"2e4437df",206:"8d16f9c5",227:"ed1b0a5b",243:"0e928586",408:"ddfcf48f",469:"9029bf4c",480:"e63a01f3",725:"47994393",834:"162d5bb2",865:"5ba4977e",918:"d3d8cbff"}[e]+".js"}}(),function(){n.miniCssF=function(e){return"css/"+e+"."+{139:"a7dec339",206:"6b48a93a",227:"90d5c1b0",408:"1969b1d0",725:"82a2f213",834:"f2905e33",865:"7df1e56e",918:"b113d9de"}[e]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="databasir:";n.l=function(r,o,a,u){if(e[r])e[r].push(o);else{var i,c;if(void 0!==a)for(var s=document.getElementsByTagName("script"),l=0;l<s.length;l++){var f=s[l];if(f.getAttribute("src")==r||f.getAttribute("data-webpack")==t+a){i=f;break}}i||(c=!0,i=document.createElement("script"),i.charset="utf-8",i.timeout=120,n.nc&&i.setAttribute("nonce",n.nc),i.setAttribute("data-webpack",t+a),i.src=r),e[r]=[o];var d=function(t,n){i.onerror=i.onload=null,clearTimeout(p);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((function(e){return e(n)})),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){n.p="/"}(),function(){var e=function(e,t,n,r){var o=document.createElement("link");o.rel="stylesheet",o.type="text/css";var a=function(a){if(o.onerror=o.onload=null,"load"===a.type)n();else{var u=a&&("load"===a.type?"missing":a.type),i=a&&a.target&&a.target.href||t,c=new Error("Loading CSS chunk "+e+" failed.\n("+i+")");c.code="CSS_CHUNK_LOAD_FAILED",c.type=u,c.request=i,o.parentNode.removeChild(o),r(c)}};return o.onerror=o.onload=a,o.href=t,document.head.appendChild(o),o},t=function(e,t){for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var o=n[r],a=o.getAttribute("data-href")||o.getAttribute("href");if("stylesheet"===o.rel&&(a===e||a===t))return o}var u=document.getElementsByTagName("style");for(r=0;r<u.length;r++){o=u[r],a=o.getAttribute("data-href");if(a===e||a===t)return o}},r=function(r){return new Promise((function(o,a){var u=n.miniCssF(r),i=n.p+u;if(t(u,i))return o();e(r,i,o,a)}))},o={143:0};n.f.miniCss=function(e,t){var n={139:1,206:1,227:1,408:1,725:1,834:1,865:1,918:1};o[e]?t.push(o[e]):0!==o[e]&&n[e]&&t.push(o[e]=r(e).then((function(){o[e]=0}),(function(t){throw delete o[e],t})))}}(),function(){var e={143:0};n.f.j=function(t,r){var o=n.o(e,t)?e[t]:void 0;if(0!==o)if(o)r.push(o[2]);else{var a=new Promise((function(n,r){o=e[t]=[n,r]}));r.push(o[2]=a);var u=n.p+n.u(t),i=new Error,c=function(r){if(n.o(e,t)&&(o=e[t],0!==o&&(e[t]=void 0),o)){var a=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;i.message="Loading chunk "+t+" failed.\n("+a+": "+u+")",i.name="ChunkLoadError",i.type=a,i.request=u,o[1](i)}};n.l(u,c,"chunk-"+t,t)}},n.O.j=function(t){return 0===e[t]};var t=function(t,r){var o,a,u=r[0],i=r[1],c=r[2],s=0;if(u.some((function(t){return 0!==e[t]}))){for(o in i)n.o(i,o)&&(n.m[o]=i[o]);if(c)var l=c(n)}for(t&&t(r);s<u.length;s++)a=u[s],n.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return n.O(l)},r=self["webpackChunkdatabasir"]=self["webpackChunkdatabasir"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}();var r=n.O(void 0,[998],(function(){return n(21381)}));r=n.O(r)})(); -//# sourceMappingURL=app-legacy.94b013ac.js.map \ No newline at end of file diff --git a/api/src/main/resources/static/js/app-legacy.94b013ac.js.map b/api/src/main/resources/static/js/app-legacy.94b013ac.js.map deleted file mode 100644 index 119934c..0000000 --- a/api/src/main/resources/static/js/app-legacy.94b013ac.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/app-legacy.94b013ac.js","mappings":"sJAEaA,EAAQ,SAACC,GAClB,IAAMC,EAAO,IAAIC,SAGjB,OAFAD,EAAKE,OAAO,WAAYH,EAAKI,UAC7BH,EAAKE,OAAO,WAAYH,EAAKK,UACtBC,EAAAA,EAAAA,KAAW,SAAUL,IAGnBM,EAAc,SAACC,EAAgBC,GACxC,OAAOH,EAAAA,EAAAA,IAAU,iBAAiBE,EAAgB,CAC9CE,OAAQD,KAYHE,EAAqB,SAACC,GAC/B,OAAON,EAAAA,EAAAA,KAAW,iBAAkB,CAChCM,aAAcA,M,sQCxBhBC,EAAAA,EAAAA,IAAcC,G,eCApB,MAAMC,EAAS,GAGTC,GAA2B,OAAgBD,EAAQ,CAAC,CAAC,SAASE,KAEpE,Q,4ICL4C,SAAxBC,EAAAA,aAAaC,gBAAW,WACpCN,EAAAA,EAAAA,IAEaO,EAAA,C,MAFAC,QAASH,EAAAA,aAAcI,UAAU,QAA9C,C,kBACI,iBAA+F,EAA/FC,EAAAA,EAAAA,GAA+F,OAAzFC,IAAKC,EAAQ,OAAgCC,MAAA,0CAAnD,c,KADJ,gBAIyC,cAAxBR,EAAAA,aAAaC,gBAAW,WACzCN,EAAAA,EAAAA,IAEaO,EAAA,C,MAFAC,QAASH,EAAAA,aAAcI,UAAU,QAA9C,C,kBACI,iBAAoG,EAApGC,EAAAA,EAAAA,GAAoG,OAA9FC,IAAKC,EAAQ,OAAqCC,MAAA,0CAAxD,c,KADJ,gBAIyC,UAAxBR,EAAAA,aAAaC,gBAAW,WACzCN,EAAAA,EAAAA,IAEaO,EAAA,C,MAFAC,QAASH,EAAAA,aAAcI,UAAU,QAA9C,C,kBACI,iBAAgG,EAAhGC,EAAAA,EAAAA,GAAgG,OAA1FC,IAAKC,EAAQ,OAAiCC,MAAA,0CAApD,c,KADJ,gBAIyC,WAAxBR,EAAAA,aAAaC,gBAAW,WACzCN,EAAAA,EAAAA,IAEaO,EAAA,C,MAFAC,QAASH,EAAAA,aAAcI,UAAU,QAA9C,C,kBACI,iBAAiG,EAAjGC,EAAAA,EAAAA,GAAiG,OAA3FC,IAAKC,EAAQ,OAAkCC,MAAA,0CAArD,c,KADJ,gBAIyC,aAAxBR,EAAAA,aAAaC,gBAAW,WACzCN,EAAAA,EAAAA,IAEaO,EAAA,C,MAFAC,QAASH,EAAAA,aAAcI,UAAU,QAA9C,C,kBACI,iBAAmG,EAAnGC,EAAAA,EAAAA,GAAmG,OAA7FC,IAAKC,EAAQ,OAAoCC,MAAA,0CAAvD,c,KADJ,gBAIiBR,EAAAA,OAAAA,EAAAA,EAAAA,OACjBL,EAAAA,EAAAA,IAEaO,EAAA,C,MAFAC,QAASH,EAAAA,aAAcI,UAAU,QAA9C,C,kBACI,iBAA6D,EAA7DC,EAAAA,EAAAA,GAA6D,OAAvDC,IAAKN,EAAAA,KAAMQ,MAAA,0CAAjB,c,KADJ,6BAIJC,EAAAA,EAAAA,IAEWC,EAAAA,GAAA,CAAAC,IAAAA,GAAA,mBADJX,EAAAA,cAAY,IADnB,KAQJ,OACIY,MAAO,CACHC,aAAcC,OACdC,KAAMD,SCrCd,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS,KAEpE,Q,WCWME,GAAMC,EAAAA,EAAAA,IAAUC,GACtBC,OAAOC,KAAKC,GAAOC,SAAQ,SAAAX,GACvBK,EAAIO,UAAUZ,EAAKU,EAAMV,OAE7BK,EAAIO,UAAU,gBAAiBC,GAG/BR,EAAIS,UAAU,gBAAiB,CAC3BC,QAD2B,SACnBC,EAAIC,GACR,IAAMC,EAAQD,EAAQE,MACjBC,EAAAA,EAAAA,YAAiBF,IAClBF,EAAGK,YAAcL,EAAGK,WAAWC,YAAYN,MAMvDX,EAAIS,UAAU,cAAe,CACzBS,QADyB,SACjBP,EAAIC,GACR,IAAMO,EAAQR,EAAGS,cAAc,mBACzBC,EAAKF,EAAMG,aAAa,oBACxBC,EAAQC,SAASC,eAAeJ,GACtC,GAAa,MAATE,EAAJ,CAGA,IAAMG,EAAWH,EAAMI,cAAcP,cAAc,+DACnC,MAAZM,EAIJA,EAASE,iBAAiB,UAAU,WAChC,IAAMC,EAAYC,KAAKC,aAAeD,KAAKE,UAAY,GAAKF,KAAKG,aAC7DJ,GACAjB,EAAQE,WANZoB,QAAQC,IAAI,oCAaxBC,EAAAA,EAAAA,iBAAsB,aAAcC,EAAAA,GACpCrC,EAAIsC,IAAIC,EAAAA,GACRvC,EAAIsC,IAAIE,EAAAA,GACRxC,EAAIsC,IAAIG,EAAAA,GACRzC,EAAIsC,IAAII,EAAAA,GACR1C,EAAIsC,IAAIK,EAAAA,GACR3C,EAAI4C,MAAM,S,sJCnCOpD,MAAA,uB,GASAqD,MAAM,oB,SACoFrD,MAAA,iB,yBAK5D,W,gBAErBqD,MAAM,Q,yBAMJ,S,gBAEFA,MAAM,Q,8ZArD5BlE,EAAAA,EAAAA,IA2DemE,EAAA,CA3DDD,MAAM,aAAW,C,kBAC3B,iBAEW,EAFXE,EAAAA,EAAAA,IAEWC,EAAA,M,kBADP,iBAA6D,EAA7DD,EAAAA,EAAAA,IAA6DE,EAAA,CAArDJ,MAAM,gBAAiBK,WAAS,+BAAEC,EAAAA,iB,OAE9CJ,EAAAA,EAAAA,IAGYK,EAAA,CAHDP,MAAM,yBAAuB,C,kBACpC,iBAAyB,EAAzBE,EAAAA,EAAAA,IAAyBM,IACzBN,EAAAA,EAAAA,IAAiBO,O,OAErBP,EAAAA,EAAAA,IAMUQ,EAAA,CANDV,MAAM,kBAAgB,C,kBAC3B,iBAIe,EAJfE,EAAAA,EAAAA,IAIeD,EAAA,M,kBAHX,iBAEU,EAFVC,EAAAA,EAAAA,IAEUQ,EAAA,CAFDV,MAAM,0BAAwB,C,kBACnC,iBAA2B,EAA3BE,EAAAA,EAAAA,IAA2BnE,O,2BAIvCmE,EAAAA,EAAAA,IA2CYS,EAAA,C,WA1CCC,EAAAA,iB,qDAAAA,EAAAA,iBAAgBC,IACzBC,MAAM,KACNC,MAAM,OAHV,C,kBAKI,iBAOW,EAPXb,EAAAA,EAAAA,IAOWc,EAAA,C,WANEJ,EAAAA,a,qDAAAA,EAAAA,aAAYC,IACrB,cAAY,SACZI,YAAY,2BACZtE,MAAA,6BACCuE,SAAQZ,EAAAA,SALb,mCAQA9D,EAAAA,EAAAA,GAMM,MANN,EAMM,gBALFI,EAAAA,EAAAA,IAIUC,EAAAA,GAAA,MAAAsE,EAAAA,EAAAA,IAJ0CP,EAAAA,qBAAmB,SAAnCQ,EAAMC,G,kBAA1CvF,EAAAA,EAAAA,IAIUwF,EAAA,CAJAC,WAAW,EAAqDzE,IAAKuE,EAAQG,QAAK,mBAAElB,EAAAA,WAAWc,EAAKK,OAAO9E,MAAA,gDAArH,C,kBACI,iBAES,EAFTuD,EAAAA,EAAAA,IAESwB,EAAA,CAFDC,SAAA,GAAUC,KAAe,SAATR,EAAKQ,KAAI,oBAAkCC,QAAK,mBAAEvB,EAAAA,0BAA0Bc,EAAKU,SAAzG,C,kBACI,iBAAc,mBAAZV,EAAKU,OAAK,O,KADhB,6B,KADJ,6BAMclB,EAAAA,UAAUmB,SAASC,OAAM,GAAQpB,EAAAA,UAAUqB,OAAOD,OAAM,eAA1ElG,EAAAA,EAAAA,IAA6FoG,EAAA,CAAApF,IAAAA,MAA7F,gBARW,qBAUXF,EAAAA,EAAAA,IAoBM,MApBN,EAoBM,CAnBSgE,EAAAA,cAAyC,GAAzBA,EAAAA,UAAUmB,SAASC,QAAsC,GAAvBpB,EAAAA,UAAUqB,OAAOD,SAAM,WAApFpF,EAAAA,EAAAA,IAEM,MAFN,sBAmBE,aAhBFA,EAAAA,EAAAA,IAOMC,EAAAA,GAAA,MAAAsE,EAAAA,EAAAA,IAP6CP,EAAAA,UAAUmB,UAAQ,SAApCI,EAAQd,G,kBAAzCzE,EAAAA,EAAAA,IAOM,OAPDoD,MAAM,cAA6DlD,IAAKuE,EAAQG,QAAK,mBAAElB,EAAAA,cAAc6B,KAA1G,EACI3F,EAAAA,EAAAA,GAEO,cADH0D,EAAAA,EAAAA,IAAuCwB,EAAA,CAA/BE,KAAK,WAAS,C,kBAAC,iBAAO,O,MAC3B,GADqC1B,EAAAA,EAAAA,IAAsFoB,EAAA,CAA5EC,WAAW,GAAK,C,kBAAG,iBAAqB,mBAAnBY,EAAQC,WAAW,OAAGC,EAAAA,EAAAA,IAAEF,EAAQG,aAAW,O,KAA1E,SAE5C9F,EAAAA,EAAAA,GAEO,OAFP,EAEO,EADH0D,EAAAA,EAAAA,IAA4BqC,EAAA,M,kBAAnB,iBAAS,EAATrC,EAAAA,EAAAA,IAASsC,O,SAL1B,gBAgBE,aARF5F,EAAAA,EAAAA,IAOMC,EAAAA,GAAA,MAAAsE,EAAAA,EAAAA,IAP2CP,EAAAA,UAAUqB,QAAM,SAAhCQ,EAAMpB,G,kBAAvCzE,EAAAA,EAAAA,IAOM,OAPDoD,MAAM,cAAyDlD,IAAKuE,EAAQG,QAAK,mBAAElB,EAAAA,YAAYmC,KAApG,EACIjG,EAAAA,EAAAA,GAEO,cADP0D,EAAAA,EAAAA,IAAsBwB,EAAA,M,kBAAd,iBAAK,O,MACN,GADgBxB,EAAAA,EAAAA,IAAqDoB,EAAA,CAA3CC,WAAW,GAAK,C,kBAAG,iBAAc,mBAAZkB,EAAMC,MAAI,O,KAAzC,SAEvBlG,EAAAA,EAAAA,GAEO,OAFP,EAEO,EADH0D,EAAAA,EAAAA,IAA4BqC,EAAA,M,kBAAnB,iBAAS,EAATrC,EAAAA,EAAAA,IAASsC,O,SAL1B,iBAZJ,IAAyC5B,EAAAA,oB,KAtB7C,sB,wCCPApE,EAAAA,EAAAA,GAAsB,YAAhB,aAAS,G,iMARrBV,EAAAA,EAAAA,IA2CU6G,EAAA,CA1CV9C,OAAA,GACC+C,SAAUC,EAAAA,WACXC,KAAK,WACL9C,MAAM,aAJN,C,kBAKE,iBAKe,EALfE,EAAAA,EAAAA,IAKe6C,EAAA,CALD1B,MAAM,KAAG,CAEVP,OAAK,SACd,iBAAsB,CAAtBkC,M,kBAFF,iBAAkC,EAAlC9C,EAAAA,EAAAA,IAAkCqC,EAAA,M,kBAAzB,iBAAe,EAAfrC,EAAAA,EAAAA,IAAe+C,O,kBAIX,aACfrG,EAAAA,EAAAA,IA4BWC,EAAAA,GAAA,MAAAsE,EAAAA,EAAAA,IA5BuB0B,EAAAA,QAAM,SAAtBK,EAAM7B,G,oCAAwBA,GAAK,CAChCwB,EAAAA,WAAWK,IAASA,EAAKC,SAASnB,OAAM,GAAQkB,EAAKC,SAASC,MAAK,SAAAC,GAAG,OAAKA,EAAIC,YAA/B,WAAnExH,EAAAA,EAAAA,IAiBcyH,EAAA,C,MAjB8FlC,MAAO6B,EAAKzB,MAAxH,CACaX,OAAK,SACd,iBAEU,EAFVZ,EAAAA,EAAAA,IAEUqC,EAAA,M,kBADR,iBAA6B,cAA7BzG,EAAAA,EAAAA,KAA6B0H,EAAAA,EAAAA,IAAbN,EAAKhG,Y,KADvB,OAGAV,EAAAA,EAAAA,GAAgC,aAAA6F,EAAAA,EAAAA,IAAvBa,EAAKO,KAAKC,KAAG,O,kBAEkB,iBAA4C,gBAAtF9G,EAAAA,EAAAA,IASWC,EAAAA,GAAA,MAAAsE,EAAAA,EAAAA,IAT6D+B,EAAKC,UAAQ,SAAnC7E,EAAOqF,G,oCAAzCtC,EAAQ,IAAMsC,G,CACPrF,EAAMgF,QAA3B,iBAA2BA,EAAAA,EAAAA,OAA3BxH,EAAAA,EAAAA,IAOeiH,EAAA,C,MAPsB1B,MAAO6B,EAAKzB,KAAI,IAAKnD,EAAMmD,MAAhE,CAIaX,OAAK,SACd,iBAAiC,EAAjCtE,EAAAA,EAAAA,GAAiC,aAAA6F,EAAAA,EAAAA,IAAxB/D,EAAMmF,KAAKC,KAAG,O,kBAJzB,iBAEU,CAFKpF,EAAMpB,OAAAA,EAAAA,EAAAA,OAArBpB,EAAAA,EAAAA,IAEUyG,EAAA,CAAAzF,IAAAA,GAAA,C,kBADR,iBAA8B,cAA9BhB,EAAAA,EAAAA,KAA8B0H,EAAAA,EAAAA,IAAdlF,EAAMpB,Y,KADxB,2B,KADF,yBADF,U,KAPF,iBAkB0B2F,EAAAA,WAAWK,KAAX,WAA1BpH,EAAAA,EAAAA,IAOeiH,EAAA,C,MAP8B1B,MAAO6B,EAAKzB,MAAzD,CAIaX,OAAK,SACd,iBAAgC,EAAhCtE,EAAAA,EAAAA,GAAgC,aAAA6F,EAAAA,EAAAA,IAAvBa,EAAKO,KAAKC,KAAG,O,kBAJxB,iBAEU,EAFVxD,EAAAA,EAAAA,IAEUqC,EAAA,M,kBADR,iBAA6B,cAA7BzG,EAAAA,EAAAA,KAA6B0H,EAAAA,EAAAA,IAAbN,EAAKhG,Y,KADvB,U,KADF,kCAnBmD,OAArD,OA6BAgD,EAAAA,EAAAA,IAEe6C,EAAA,CAFD1B,MAAM,GAAIG,QAAK,+BAAEqB,EAAAA,sBAA/B,C,kBACE,iBAAyE,EAAzE3C,EAAAA,EAAAA,IAAyE0D,EAAA,CAA9DhC,KAAK,OAAO1E,KAAK,SAASP,MAAA,wB,eAzCzC,gB,oCAyDF,GAAekH,EAAAA,EAAAA,IAAgB,CAC7BC,MAAO,CAAC,aACRC,MAF6B,SAEvBhH,EAAOiH,GACX,IAAMC,GAAaC,EAAAA,EAAAA,KAAS,kBAAMvE,EAAAA,EAAAA,MAAAA,KAAAA,cAC5BE,GAASsE,EAAAA,EAAAA,MACTC,EAASvE,EAAOwE,QAAQD,OAExBE,EAAa,SAACpB,GAClB,GAAIA,EAAKI,OACP,OAAO,EAET,GAAIJ,EAAKO,KAAKc,iBAAmBrB,EAAKO,KAAKc,gBAAgBvC,OAAS,EAAG,CACrE,IAAMwC,EAActG,EAAAA,EAAAA,YAAiBgF,EAAKO,KAAKc,iBAC/C,IAAKC,EACH,OAAO,EAGX,OAAO,GAGHC,EAAa,WACjB9E,EAAAA,EAAAA,OAAa,eAGT+E,EAAmB,WACvBV,EAAQW,KAAK,cAGf,MAAO,CACLV,WAAAA,EACAK,WAAAA,EACAG,WAAAA,EACAL,OAAAA,EACAM,iBAAAA,M,WCpFN,MAAMzI,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS,KAEpE,Q,0KCREH,EAAAA,EAAAA,IAOgB8I,EAAA,CAPDC,UAAU,KAAG,C,kBAC3B,iBAIqB,CAJMvE,EAAAA,gBAA3B,iBAA2BA,EAAAA,EAAAA,OAA3BxE,EAAAA,EAAAA,IAIqBgJ,EAAA,CAAAhI,IAAAA,GAAA,C,kBAHjB,iBAEU,EAFVoD,EAAAA,EAAAA,IAEUoB,EAAA,CAFAE,QAAK,+BAAElB,EAAAA,eAAeiB,WAAW,GAA3C,C,kBACK,iBAA2B,EAA3BrB,EAAAA,EAAAA,IAA2BqC,EAAA,M,kBAAlB,iBAAQ,EAARrC,EAAAA,EAAAA,IAAQ6E,O,6BAEL,aAChBnI,EAAAA,EAAAA,IAAyHC,EAAAA,GAAA,MAAAsE,EAAAA,EAAAA,IAA5Eb,EAAAA,aAAW,SAA3Bc,EAAMC,G,kBAAnCvF,EAAAA,EAAAA,IAAyHgJ,EAAA,CAA9DhI,IAAKuE,EAAQ2D,GAAI5D,EAAK4D,IAAjF,C,kBAAqF,iBAAe,mBAAZ5D,EAAKsB,MAAI,O,KAAjG,0B,MAMR,OACIwB,SAAU,CACNe,YAAa,WACT,MAA2C,oBAAhChG,KAAKiG,OAAOzB,KAAK0B,WACjBlG,KAAKiG,OAAOzB,KAAK0B,WAAWlG,KAAKiG,OAAQjG,KAAKmG,OAAOC,OAErD,IAGfC,eARM,WASF,OAAOrG,KAAKmG,OAAOC,MAAMnC,KAAKe,aAGtCsB,QAAS,CACLC,WADK,WAEDvG,KAAKmG,OAAOK,OAAO,eCvB/B,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS,KAEpE,Q,WCA2E,Q,WACb,Q,8JAP1D3J,EAAAA,EAAAA,IAUc4J,EAAA,MARCC,UAAQ,SACnB,iBAKmB,EALnBzF,EAAAA,EAAAA,IAKmB0F,EAAA,M,kBAJf,iBAAuD,EAAvD1F,EAAAA,EAAAA,IAAuD2F,EAAA,M,kBAArC,iBAAkB,mBAAfvF,EAAAA,cAAY,O,OAEjCJ,EAAAA,EAAAA,IAAsF2F,EAAA,CAApE3I,KAAK,OAAO4I,QAAA,GAAStE,QAAK,+BAAElB,EAAAA,mBAA9C,C,kBAA+D,iBAAI,O,OACnEJ,EAAAA,EAAAA,IAAyE2F,EAAA,CAAvD3I,KAAK,OAAQsE,QAAK,+BAAElB,EAAAA,cAAtC,C,kBAAkD,iBAAI,O,sCAN1D,iBAAiE,EAAjEJ,EAAAA,EAAAA,IAAiE6F,EAAA,CAArDC,KAAM,GAAKvJ,IAAK6D,EAAAA,UAAWpD,KAAK,UAA5C,oB,MAeR,OACIgH,SAAU,CACN+B,aADM,WAEF,OAAOhH,KAAKmG,OAAOC,MAAMnH,KAAKgI,UAElCC,UAJM,WAKF,OAAOlH,KAAKmG,OAAOC,MAAMnH,KAAKkI,SAGtCb,QAAS,CACLc,SADK,WAEDnI,EAAAA,EAAAA,sBACAe,KAAKqH,QAAQC,KAAK,CAAC9E,KAAM,YAE7B+E,cALK,WAMDvH,KAAKqH,QAAQC,KAAK,CAAE9E,KAAM,gBC3BtC,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS,KAEpE,Q,WCLMgF,EAAO,mBAEAC,EAAQ,SAACC,GAClB,OAAOpL,EAAAA,EAAAA,IAAUkL,EAAM,CACnB9K,OAAQgL,KPsJhB,GACIC,WAAY,CAAEC,OAAAA,EAAQC,WAAAA,EAAYC,OAAAA,GAClC7L,KAFW,WAGP,MAAO,CACHwJ,kBAAkB,EAClBsC,aAAc,GACdC,UAAW,CACPlF,SAAU,GACVE,OAAQ,IAEZiF,cAAc,EACdC,oBAAqB,GACrBC,uBAAwB,8BAGhCvJ,QAfW,WAgBPoB,KAAKoI,2BAET9B,QAAS,CACL+B,OADK,WAEDrI,KAAKyF,kBAAmB,GAE5B6C,QAJK,SAIGC,GAAK,WACTvI,KAAKiI,cAAe,EACpBR,EAAM,CAAEA,MAAOc,IACdC,MAAK,SAAAC,GACGA,EAAKC,UACP,EAAKV,UAAYS,EAAKxM,SAE1B0M,SAAQ,kBAAM,EAAKV,cAAe,MAEzCW,YAbK,SAaOpF,GACRxD,KAAKyF,kBAAmB,EACxB,IAAMjD,EAAO,WAAWgB,EAAMjE,GAAG,cAAciE,EAAMC,KAC/CoF,EAAS,CACXhG,MAAOW,EAAMC,KACbjB,KAAMA,EACNG,KAAM,SAEJmG,EAAU9I,KAAKkI,oBAAoBa,QAAO,SAAA5G,GAAG,OAAKA,EAAKU,OAASgG,EAAOhG,SAC7EiG,EAAQE,QAAQH,GAChBC,EAAQG,OAAO,IACfjJ,KAAKkI,oBAAsBY,EAC3BI,OAAOC,aAAaC,QAAQpJ,KAAKmI,uBAAwBkB,KAAKC,UAAUtJ,KAAKkI,sBAC7EgB,OAAOK,SAAS/G,GAEpBgH,cA5BK,SA4BStG,GACVlD,KAAKyF,kBAAmB,EACxB,IAAMjD,EAAO,WAAWU,EAAQuG,QAAQ,aAAavG,EAAQwG,UAAU,wBAAwBxG,EAAQC,UAAU,gBAAgBD,EAAQG,YAEnIwF,EAAS,CACXhG,MAAOK,EAAQC,UAAW,MAAMD,EAAQG,YACxCb,KAAMA,EACNG,KAAM,WAEJmG,EAAU9I,KAAKkI,oBAAoBa,QAAO,SAAA5G,GAAG,OAAKA,EAAKU,OAASgG,EAAOhG,SAC7EiG,EAAQE,QAAQH,GAChBC,EAAQG,OAAO,IACfjJ,KAAKkI,oBAAsBY,EAE3BI,OAAOC,aAAaC,QAAQpJ,KAAKmI,uBAAwBkB,KAAKC,UAAUtJ,KAAKkI,sBAC7EgB,OAAOK,SAAS/G,GAEpBmH,WA7CK,SA6CMnH,GACP0G,OAAOK,SAAS/G,GAEpB4F,wBAhDK,WAiDD,IAAMvK,EAAMmC,KAAKmI,uBACjB,GAAwC,MAApCe,OAAOC,aAAaS,QAAQ/L,GAAc,CAC1C,IAAMgM,EAAMR,KAAKS,MAAMZ,OAAOC,aAAaS,QAAQ/L,IACnDmC,KAAKkI,oBAAsB2B,IAGnCE,0BAvDK,SAuDqBlH,GACtB,IAAMiG,EAAU9I,KAAKkI,oBAAoBa,QAAO,SAAA5G,GAAG,OAAKA,EAAKU,OAASA,KACtE7C,KAAKkI,oBAAsBY,EAC3BI,OAAOC,aAAaC,QAAQpJ,KAAKmI,uBAAwBkB,KAAKC,UAAUtJ,KAAKkI,yBQjOzF,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASjL,KAEpE,QCTA,SAASmF,IACL,MAAO,CACHqB,KAAK,KACLsC,GAAI,CACAvD,KAAM,MAKlB,SAASwH,IACL,MAAO,CACHvG,KAAK,OACLsC,GAAI,CACAtC,KAAM,kBAKlB,SAASwG,EAAeC,GACpB,IAAI/G,EAAY,MAIhB,OAHI+G,EAAMzC,MAAMtE,YACZA,EAAY+G,EAAMzC,MAAMtE,WAErB,CACHM,KAAMN,EACN4C,GAAI,CACAvD,KAAM,WAAW0H,EAAMxN,OAAO+M,UAK1C,SAASU,EAAqBD,GAC1B,IAAIzG,EAAO,OACPyG,EAAMzC,MAAMpE,cACZI,EAAOyG,EAAMzC,MAAMpE,aAEvB,IAAIqG,EAAYQ,EAAMxN,OAAOgN,UACzBD,EAAUS,EAAMxN,OAAO+M,QAC3B,MAAO,CACHhG,KAAMA,EACNsC,GAAI,CACAvD,KAAM,WAAaiH,EAAU,aAAeC,EAAY,aACxDjC,MAAO,CACHpE,YAAaI,KAM7B,SAAS2G,IACL,MAAO,CACH3G,KAAK,OACLsC,GAAI,CACAvD,KAAM,WAMlB,SAAS6H,IACL,MAAO,CACH5G,KAAK,OACLsC,GAAI,CACAvD,KAAM,aAKlB,SAAS8H,IACL,MAAO,CACH7G,KAAK,OACLsC,GAAI,CACAvD,KAAM,uBAKlB,SAAS+H,IACL,MAAO,CACH9G,KAAK,OACLsC,GAAI,CACAvD,KAAM,qBAKlB,SAASgI,IACL,MAAO,CACH/G,KAAK,OACLsC,GAAI,CACAvD,KAAM,wBAKlB,SAASiI,IACL,MAAO,CACHhH,KAAK,QACLsC,GAAI,CACAvD,KAAM,8BAKlB,SAASkI,IACL,MAAO,CACHjH,KAAK,OACLsC,GAAI,CACAvD,KAAM,kCAMlB,IAAMmI,GAAgB,CAClBvI,MAAO,iBAAM,CAACA,MACd4H,UAAW,iBAAM,CAAC5H,IAAS4H,MAC3BC,eAAgB,SAACC,EAAO9D,GAAR,MAAkB,CAAChE,IAAS4H,IAAaC,EAAeC,EAAO9D,KAC/E+D,qBAAsB,SAACD,EAAO9D,GAAR,MAAkB,CAAChE,IAAS4H,IAAaC,EAAeC,EAAO9D,GAAS+D,EAAqBD,KACnHG,YAAa,iBAAO,CAACjI,IAASiI,MAC9BD,SAAU,iBAAO,CAAChI,IAASgI,MAC3BE,aAAc,iBAAM,CAAClI,IAASkI,MAC9BC,OAAQ,iBAAM,CAACnI,IAASmI,MACxBC,UAAW,iBAAM,CAACpI,IAASoI,MAC3BC,gBAAiB,iBAAM,CAACrI,IAASqI,MACjCC,oBAAqB,iBAAM,CAACtI,IAASsI,OAGzC,MC3HMvF,GAAS,CACX,CACI3C,KAAM,SACN/D,UAAW,kBAAM,gCACjB4F,QAAQ,EACRG,KAAM,CACFoG,aAAa,IAGrB,CACIpI,KAAM,oBACN/D,UAAW,kBAAM,gCACjB4F,QAAQ,EACRvG,OAAO,EACP0G,KAAM,CACFoG,aAAa,IAGrB,CACIpI,KAAM,IACN6B,QAAQ,EACR5F,UAAWoM,EACX3G,SAAU,CACN,CACI1B,KAAM,GACN6B,QAAQ,EACR5F,UAAW,kBAAM,wDACjB+F,KAAM,CACF0B,WAAYyE,GAAAA,cAK5B,CACInI,KAAM,UACNvE,KAAM,aACNQ,UAAWoM,EACXrG,KAAM,CACFC,IAAK,QAETP,SAAU,CACN,CACI1B,KAAM,GACNiB,KAAM,gBACNY,QAAQ,EACR5F,UAAW,kBAAM,wDACjB+F,KAAM,CACF0B,WAAYyE,GAAAA,YAGpB,CACInI,KAAM,WACN6B,QAAQ,EACR5F,UAAW,kBAAM,wDACjB+F,KAAM,CACF0B,WAAYyE,GAAAA,iBAGpB,CACInI,KAAM,yCACN6B,QAAQ,EACR5F,UAAW,kBAAM,gCACjB+F,KAAM,CACF0B,WAAYyE,GAAAA,yBAK5B,CACInI,KAAM,SACNvE,KAAM,OACNQ,UAAWoM,EACXrG,KAAM,CACFC,IAAI,OACJa,gBAAiB,CAAC,cAEtBpB,SAAU,CACN,CACI1B,KAAM,GACN6B,QAAQ,EACR5F,UAAW,kBAAM,+BACjB+F,KAAM,CACF0B,WAAYyE,GAAAA,aAK5B,CACInI,KAAM,WACNvE,KAAM,OACNQ,UAAWoM,EACXrG,KAAM,CACFC,IAAK,OACLyB,WAAYyE,GAAAA,aAEhBzG,SAAU,CACN,CACI1B,KAAM,GACN6B,QAAQ,EACR5F,UAAW,kBAAM,mCAI7B,CACI+D,KAAM,YACNvE,KAAM,UACNQ,UAAWoM,EACXrG,KAAM,CACFC,IAAI,OACJa,gBAAiB,CAAC,cAEtBpB,SAAU,CACN,CACI1B,KAAM,WACNvE,KAAM,eACNQ,UAAW,kBAAM,gCACjB+F,KAAM,CACFC,IAAK,OACLyB,WAAYyE,GAAAA,eAGpB,CACInI,KAAM,SACNvE,KAAM,WACNQ,UAAW,kBAAM,+BACjB+F,KAAM,CACFC,IAAK,OACLyB,WAAYyE,GAAAA,SAGpB,CACInI,KAAM,YACNvE,KAAM,aACNQ,UAAW,kBAAM,gCACjB+F,KAAM,CACFC,IAAK,OACLyB,WAAYyE,GAAAA,YAGpB,CACInI,KAAM,kBACNvE,KAAM,kBACNQ,UAAW,kBAAM,gCACjB+F,KAAM,CACFC,IAAK,QACLyB,WAAYyE,GAAAA,kBAGpB,CACInI,KAAM,sBACNvE,KAAM,eACNQ,UAAW,kBAAM,gCACjB+F,KAAM,CACFC,IAAK,OACLyB,WAAYyE,GAAAA,sBAIpB,CACInI,KAAM,SACNvE,KAAM,MACNoG,OAAQ,OACR5F,UAAWoM,EACXrG,KAAM,CACFC,IAAK,OACLyB,WAAYyE,GAAAA,gBAO1B/J,IAASkK,EAAAA,EAAAA,IAAa,CACxBhC,SAASiC,EAAAA,EAAAA,MACT5F,OAAAA,KAIJvE,GAAOoK,YAAW,SAACjF,EAAIkF,EAAMC,GACE,GAAvBnF,EAAGvB,KAAKoG,YACO,UAAX7E,EAAGvD,MAAoB2I,EAAAA,EAAAA,iBACvBD,EAAKD,GAELC,IAGDC,EAAAA,EAAAA,iBACCD,IAEAA,EAAK,CAAE1I,KAAM,cAMzB5B,GAAOoK,YAAW,SAACjF,EAAIkF,EAAMC,IACpBnF,EAAG0B,MAAMtE,WAAa8H,EAAKxD,MAAMtE,YAClC4C,EAAG0B,MAAMtE,UAAY8H,EAAKxD,MAAMtE,YAE/B4C,EAAG0B,MAAMpE,aAAe4H,EAAKxD,MAAMpE,cACpC0C,EAAG0B,MAAMpE,YAAc4H,EAAKxD,MAAMpE,aAEtC6H,OAGJ,W,gDC/MMxK,GAAQ0K,EAAAA,EAAAA,IAAY,CACtBhF,MADsB,WAElB,IAAMnK,EAAQ,CACVgD,KAAM,CACFgI,SAAU,KACVoE,SAAU,KACVC,MAAO,KACPnE,OAAQ,MAEZoE,mBAAoB,KACpBtH,KAAM,CACFe,YAAY,IAGdwG,EAAYvM,EAAAA,EAAAA,oBAOlB,OANIuM,IACAvP,EAAKgD,KAAKgI,SAAWuE,EAAUvE,SAC/BhL,EAAKgD,KAAKoM,SAAWG,EAAUH,SAC/BpP,EAAKgD,KAAKqM,MAAQE,EAAUF,MAC5BrP,EAAKgD,KAAKkI,OAASqE,EAAUrE,QAE1BlL,GAEXwP,UAAW,CACPC,WADO,SACItF,EAAOuF,GACVA,EAAM1E,WACNb,EAAMnH,KAAKgI,SAAW0E,EAAM1E,UAE5B0E,EAAMN,WACNjF,EAAMnH,KAAKoM,SAAWM,EAAMN,UAE5BM,EAAML,QACNlF,EAAMnH,KAAKqM,MAAQK,EAAML,OAEzBK,EAAMxE,SACNf,EAAMnH,KAAKkI,OAASwE,EAAMxE,SAGlCyE,SAfO,SAeExF,GACLA,EAAMnC,KAAKe,YAAa,GAE5BQ,WAlBO,SAkBIY,GACPA,EAAMnC,KAAKe,YAAa,GAE5B6G,yBArBO,SAqBkBzF,EAAOmF,GACxBA,IACAnF,EAAMmF,mBAAqBA,OAM3C,U,4GCvDMO,EAAiB,cACjBC,EAAyB,sBACzBC,EAAmB,gBAEZb,EAAQ,CAEjBc,eAFiB,WAGb,IAAMC,EAAclM,KAAKmM,kBACzB,OAAOD,GAGXE,oBAPiB,WAQb,IAAMF,EAAclM,KAAKmM,kBACnBE,EAAWnD,OAAOC,aAAaS,QAAQmC,GAC7C,OAAKG,GAAgBG,EAKdA,GAAW,IAAIC,MAAOC,UAAY,KAJrCnM,QAAQC,IAAI,iDACL,IAMfmM,gBAlBiB,SAkBDrB,EAAOsB,GACnBvD,OAAOC,aAAaC,QAAQ0C,EAAgBX,GAC5CjC,OAAOC,aAAaC,QAAQ2C,EAAwBU,IAGxDN,gBAvBiB,WAwBb,IAAIhB,EAAQjC,OAAOC,aAAaS,QAAQkC,GACxC,OAAIX,GAGG,OAIFlM,EAAO,CAEhByN,kBAFgB,SAEEC,GACdzD,OAAOC,aAAaC,QAAQ0C,EAAgBa,EAAcT,aAC1DhD,OAAOC,aAAaC,QAAQ2C,EAAwBY,EAAcC,qBAClE1D,OAAOC,aAAaC,QAAQ4C,EAAkB3C,KAAKC,UAAUqD,KAGjEE,oBARgB,WASZ3D,OAAOC,aAAa2D,WAAWd,GAC/B9C,OAAOC,aAAa2D,WAAWhB,GAC/B5C,OAAOC,aAAa2D,WAAWf,IAGnCgB,kBAdgB,WAeZ,IAAK7D,OAAOC,aAAaS,QAAQoC,GAC7B,OAAO,KAEX,IAAM/P,EAAOiN,OAAOC,aAAaS,QAAQoC,GACzC,OAAO3C,KAAKS,MAAM7N,IAGtBsJ,YAtBgB,SAsBJxG,GACR,IAAM9C,EAAOiN,OAAOC,aAAaS,QAAQoC,GACzC,GAAY,MAAR/P,EACA,OAAO,EAEX,IAAMgD,EAAOoK,KAAKS,MAAM7N,GACxB,OAAOgD,EACNF,MACAiO,KAAI,SAAAC,GACD,OAAIA,EAAKxD,QACEwD,EAAKA,KAAO,YAAcA,EAAKxD,QAE/BwD,EAAKA,QAGnB9I,MAAK,SAAA+I,GAAM,OAAInO,EAAMoF,MAAK,SAAAgJ,GAAQ,OAAIA,GAAYD,SAGvDE,gBAxCgB,WAyCZ,IAAMnR,EAAOiN,OAAOC,aAAaS,QAAQoC,GACzC,GAAY,MAAR/P,EACA,OAAO,KAEX,IAAMgD,EAAOoK,KAAKS,MAAM7N,GACxB,OAAOgD,EAAKrC,gB,4JC5EdyQ,EAAWC,CAAAA,SAAAA,aAAAA,SAAAA,KAAYC,gBAE7BjR,IAAAA,SAAAA,QAAyB+Q,EACzB/Q,IAAAA,SAAAA,QAAyB,KACzBA,IAAAA,SAAAA,iBAAiC,EACjCA,IAAAA,SAAAA,QAAAA,KAAAA,gBAA8C,mBAC9CA,IAAAA,SAAAA,QAAAA,KAAAA,oCAAkE,IAIlE,IAAIkR,GAAmB,EAEvB,SAASC,IACPD,GAAmB,EAGrB,SAASE,IACPF,GAAmB,EAGrB,IAAIG,EAAgB,GAEpB,SAASC,EAAaC,GACpBF,EAAcrG,KAAKuG,GAGrB,SAASC,EAAeC,GACtBJ,EAAcnP,SAAQ,SAAAqP,GACpBA,EAAQE,MAEVJ,EAAgB,G,SA8DHK,EAAQ,G,sFAAvB,WAAuBD,GAAvB,0FACQnR,EAAeqC,EAAAA,EAAAA,kBACjBrC,GACFqR,KAGCT,EANL,yCAOW,IAAIU,SAAQ,SAACC,GAClBP,GAAa,WACPG,IACFA,EAAOK,QAAQC,cAAgB,UAAYlD,EAAAA,EAAAA,mBAE7CgD,EAAQJ,UAZhB,cAiBEN,IAjBF,UAkBe9Q,EAAAA,EAAAA,IAAmBC,GAAc4L,MAAK,SAAAC,GAC7CA,EAAKC,QACPuF,KAEA9C,EAAAA,EAAAA,gBAAsB1C,EAAKxM,KAAKiQ,YAAazD,EAAKxM,KAAK2Q,qBACvDc,QAED/E,SAAQ,kBAAM+E,OAzBnB,mF,iCA4BeY,EAAkB,G,sFAAjC,WAAiCP,GAAjC,gHAEsBzR,GAAAA,CAAM,CACtBiS,OAAQR,EAAOQ,OACftS,KAAM8R,EAAO9R,KACbuS,IAAKT,EAAOS,IACZC,QAASV,EAAOU,QAChBL,QAAS,CACPC,cAAe,UAAYlD,EAAAA,EAAAA,qBARnC,cAEUuD,EAFV,OAWIZ,EAAeC,GAXnB,kBAYWW,GAZX,mCAcItO,QAAQC,IAAR,MACAsO,EAAO,cAfX,yD,wBAoBA,SAASV,IACPhP,EAAAA,EAAAA,sBACA2B,EAAAA,EAAAA,QAAe,UAGjB,SAAS+N,EAAOC,IACdC,EAAAA,EAAAA,IAAU,CACRC,QAASF,EACTjM,KAAM,QACNoM,SAAU,IACVC,UAAU,IApHd1S,IAAAA,aAAAA,QAAAA,IAAA,kDAA+B,WAAgByR,GAAhB,0FACX,kBAAdA,EAAOS,MAA2BT,EAAOS,IAAIS,WAAW,YAA4B,UAAdlB,EAAOS,IADpD,yCAEpBT,GAFoB,WAKzB5C,EAAAA,EAAAA,sBALyB,uBAM3B4C,EAAOK,QAAQC,cAAgB,UAAYlD,EAAAA,EAAAA,kBANhB,kBAOpB4C,GAPoB,WASzBP,EATyB,uBAUrB0B,EAAU,IAAIhB,SAAQ,SAACC,GAC3BP,GAAa,WACPG,IACFA,EAAOK,QAAQC,cAAgB,UAAYlD,EAAAA,EAAAA,mBAE7CgD,EAAQJ,SAfe,kBAkBpBmB,GAlBoB,gCAoBtBnB,GApBsB,2CAA/B,uDAqBG,SAAUoB,GAEX,OADAzB,IACOQ,QAAQkB,OAAOD,MAIxB7S,IAAAA,aAAAA,SAAAA,KACE,SAAC+S,GACC,IAAMX,EAAMW,EAASpT,KAIrB,OAHIyS,EAAIhG,SACNiG,EAAOD,EAAIY,YAENZ,KAET,SAACS,GACC,GAAIA,EAAME,SACR,GAA4B,KAAzBF,EAAME,SAASE,QAChB,GAAmC,UAA/BJ,EAAME,SAASpT,KAAKyM,QACtBzJ,EAAAA,EAAAA,sBACA0P,EAAO,gBACPV,SACK,GAAmC,UAA/BkB,EAAME,SAASpT,KAAKyM,QAC3B,OAAOsF,EAAQmB,EAAMpB,QAAQvF,MAAK,kBAAM8F,EAAkBa,EAAMpB,gBAElC,KAAzBoB,EAAME,SAASE,OACxBZ,EAAO,aAEPA,EAAOQ,EAAML,cAGf1O,QAAQC,IAAI8O,GACZR,EAAO,cAET,OAAOT,QAAQkB,OAAOD,MAkE1B,OAAe7S,K,mUC/JXkT,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,IAOV,OAHAE,EAAoBL,GAAUM,KAAKF,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAGpEK,EAAOD,QAIfJ,EAAoBQ,EAAIF,E,WCzBxB,IAAIG,EAAW,GACfT,EAAoBU,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAIR,EAASnN,OAAQ2N,IAAK,CACrCL,EAAWH,EAASQ,GAAG,GACvBJ,EAAKJ,EAASQ,GAAG,GACjBH,EAAWL,EAASQ,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAAStN,OAAQ6N,MACpB,EAAXL,GAAsBC,GAAgBD,IAAalS,OAAOC,KAAKmR,EAAoBU,GAAGU,OAAM,SAAShT,GAAO,OAAO4R,EAAoBU,EAAEtS,GAAKwS,EAASO,OAC3JP,EAASpH,OAAO2H,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbT,EAASjH,OAAOyH,IAAK,GACrB,IAAII,EAAIR,SACEV,IAANkB,IAAiBV,EAASU,IAGhC,OAAOV,EAzBNG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIR,EAASnN,OAAQ2N,EAAI,GAAKR,EAASQ,EAAI,GAAG,GAAKH,EAAUG,IAAKR,EAASQ,GAAKR,EAASQ,EAAI,GACrGR,EAASQ,GAAK,CAACL,EAAUC,EAAIC,I,cCJ/Bd,EAAoBsB,EAAI,SAASjB,GAChC,IAAIkB,EAASlB,GAAUA,EAAOmB,WAC7B,WAAa,OAAOnB,EAAO,YAC3B,WAAa,OAAOA,GAErB,OADAL,EAAoByB,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,G,cCLRvB,EAAoByB,EAAI,SAASrB,EAASuB,GACzC,IAAI,IAAIvT,KAAOuT,EACX3B,EAAoB4B,EAAED,EAAYvT,KAAS4R,EAAoB4B,EAAExB,EAAShS,IAC5EQ,OAAOiT,eAAezB,EAAShS,EAAK,CAAE0T,YAAY,EAAMC,IAAKJ,EAAWvT,M,cCJ3E4R,EAAoBgC,EAAI,GAGxBhC,EAAoBiC,EAAI,SAASC,GAChC,OAAOzD,QAAQ0D,IAAIvT,OAAOC,KAAKmR,EAAoBgC,GAAGI,QAAO,SAASC,EAAUjU,GAE/E,OADA4R,EAAoBgC,EAAE5T,GAAK8T,EAASG,GAC7BA,IACL,M,cCNJrC,EAAoBsC,EAAI,SAASJ,GAEhC,MAAO,MAAQA,EAAU,WAAa,CAAC,GAAK,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,YAAYA,GAAW,O,cCFhRlC,EAAoBuC,SAAW,SAASL,GAEvC,MAAO,OAASA,EAAU,IAAM,CAAC,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,YAAYA,GAAW,Q,cCHtLlC,EAAoBwC,EAAI,WACvB,GAA0B,kBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOlS,MAAQ,IAAImS,SAAS,cAAb,GACd,MAAOT,GACR,GAAsB,kBAAXxI,OAAqB,OAAOA,QALjB,G,cCAxBuG,EAAoB4B,EAAI,SAASxH,EAAKuI,GAAQ,OAAO/T,OAAOgU,UAAUC,eAAetC,KAAKnG,EAAKuI,I,cCA/F,IAAIG,EAAa,GACbC,EAAoB,aAExB/C,EAAoBgD,EAAI,SAASjE,EAAKkE,EAAM7U,EAAK8T,GAChD,GAAGY,EAAW/D,GAAQ+D,EAAW/D,GAAKlH,KAAKoL,OAA3C,CACA,IAAI3V,EAAQ4V,EACZ,QAAW/C,IAAR/R,EAEF,IADA,IAAI+U,EAAUlT,SAASmT,qBAAqB,UACpCnC,EAAI,EAAGA,EAAIkC,EAAQ7P,OAAQ2N,IAAK,CACvC,IAAIoC,EAAIF,EAAQlC,GAChB,GAAGoC,EAAEtT,aAAa,QAAUgP,GAAOsE,EAAEtT,aAAa,iBAAmBgT,EAAoB3U,EAAK,CAAEd,EAAS+V,EAAG,OAG1G/V,IACH4V,GAAa,EACb5V,EAAS2C,SAASqT,cAAc,UAEhChW,EAAOiW,QAAU,QACjBjW,EAAOkW,QAAU,IACbxD,EAAoByD,IACvBnW,EAAOoW,aAAa,QAAS1D,EAAoByD,IAElDnW,EAAOoW,aAAa,eAAgBX,EAAoB3U,GACxDd,EAAOS,IAAMgR,GAEd+D,EAAW/D,GAAO,CAACkE,GACnB,IAAIU,EAAmB,SAASC,EAAMC,GAErCvW,EAAOwW,QAAUxW,EAAOyW,OAAS,KACjCC,aAAaR,GACb,IAAIS,EAAUnB,EAAW/D,GAIzB,UAHO+D,EAAW/D,GAClBzR,EAAOmC,YAAcnC,EAAOmC,WAAWC,YAAYpC,GACnD2W,GAAWA,EAAQlV,SAAQ,SAAS8R,GAAM,OAAOA,EAAGgD,MACjDD,EAAM,OAAOA,EAAKC,IAGlBL,EAAUU,WAAWP,EAAiBQ,KAAK,UAAMhE,EAAW,CAAEjN,KAAM,UAAWkR,OAAQ9W,IAAW,MACtGA,EAAOwW,QAAUH,EAAiBQ,KAAK,KAAM7W,EAAOwW,SACpDxW,EAAOyW,OAASJ,EAAiBQ,KAAK,KAAM7W,EAAOyW,QACnDb,GAAcjT,SAASoU,KAAKC,YAAYhX,K,cCvCzC0S,EAAoBqB,EAAI,SAASjB,GACX,qBAAXmE,QAA0BA,OAAOC,aAC1C5V,OAAOiT,eAAezB,EAASmE,OAAOC,YAAa,CAAEjV,MAAO,WAE7DX,OAAOiT,eAAezB,EAAS,aAAc,CAAE7Q,OAAO,K,cCLvDyQ,EAAoByE,EAAI,I,cCAxB,IAAIC,EAAmB,SAASxC,EAASyC,EAAUjG,EAASiB,GAC3D,IAAIiF,EAAU3U,SAASqT,cAAc,QAErCsB,EAAQC,IAAM,aACdD,EAAQ1R,KAAO,WACf,IAAI4R,EAAiB,SAASjB,GAG7B,GADAe,EAAQd,QAAUc,EAAQb,OAAS,KAChB,SAAfF,EAAM3Q,KACTwL,QACM,CACN,IAAIqG,EAAYlB,IAAyB,SAAfA,EAAM3Q,KAAkB,UAAY2Q,EAAM3Q,MAChE8R,EAAWnB,GAASA,EAAMO,QAAUP,EAAMO,OAAOa,MAAQN,EACzDO,EAAM,IAAIC,MAAM,qBAAuBjD,EAAU,cAAgB8C,EAAW,KAChFE,EAAIE,KAAO,wBACXF,EAAIhS,KAAO6R,EACXG,EAAI9G,QAAU4G,EACdJ,EAAQnV,WAAWC,YAAYkV,GAC/BjF,EAAOuF,KAOT,OAJAN,EAAQd,QAAUc,EAAQb,OAASe,EACnCF,EAAQK,KAAON,EAEf1U,SAASoU,KAAKC,YAAYM,GACnBA,GAEJS,EAAiB,SAASJ,EAAMN,GAEnC,IADA,IAAIW,EAAmBrV,SAASmT,qBAAqB,QAC7CnC,EAAI,EAAGA,EAAIqE,EAAiBhS,OAAQ2N,IAAK,CAChD,IAAIsE,EAAMD,EAAiBrE,GACvBuE,EAAWD,EAAIxV,aAAa,cAAgBwV,EAAIxV,aAAa,QACjE,GAAe,eAAZwV,EAAIV,MAAyBW,IAAaP,GAAQO,IAAab,GAAW,OAAOY,EAErF,IAAIE,EAAoBxV,SAASmT,qBAAqB,SACtD,IAAQnC,EAAI,EAAGA,EAAIwE,EAAkBnS,OAAQ2N,IAAK,CAC7CsE,EAAME,EAAkBxE,GACxBuE,EAAWD,EAAIxV,aAAa,aAChC,GAAGyV,IAAaP,GAAQO,IAAab,EAAU,OAAOY,IAGpDG,EAAiB,SAASxD,GAC7B,OAAO,IAAIzD,SAAQ,SAASC,EAASiB,GACpC,IAAIsF,EAAOjF,EAAoBuC,SAASL,GACpCyC,EAAW3E,EAAoByE,EAAIQ,EACvC,GAAGI,EAAeJ,EAAMN,GAAW,OAAOjG,IAC1CgG,EAAiBxC,EAASyC,EAAUjG,EAASiB,OAI3CgG,EAAqB,CACxB,IAAK,GAGN3F,EAAoBgC,EAAE4D,QAAU,SAAS1D,EAASG,GACjD,IAAIwD,EAAY,CAAC,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,GAC5EF,EAAmBzD,GAAUG,EAASxK,KAAK8N,EAAmBzD,IACzB,IAAhCyD,EAAmBzD,IAAkB2D,EAAU3D,IACtDG,EAASxK,KAAK8N,EAAmBzD,GAAWwD,EAAexD,GAASnJ,MAAK,WACxE4M,EAAmBzD,GAAW,KAC5B,SAASD,GAEX,aADO0D,EAAmBzD,GACpBD,O,cCzDT,IAAI6D,EAAkB,CACrB,IAAK,GAGN9F,EAAoBgC,EAAEb,EAAI,SAASe,EAASG,GAE1C,IAAI0D,EAAqB/F,EAAoB4B,EAAEkE,EAAiB5D,GAAW4D,EAAgB5D,QAAW/B,EACtG,GAA0B,IAAvB4F,EAGF,GAAGA,EACF1D,EAASxK,KAAKkO,EAAmB,QAC3B,CAGL,IAAItG,EAAU,IAAIhB,SAAQ,SAASC,EAASiB,GAAUoG,EAAqBD,EAAgB5D,GAAW,CAACxD,EAASiB,MAChH0C,EAASxK,KAAKkO,EAAmB,GAAKtG,GAGtC,IAAIV,EAAMiB,EAAoByE,EAAIzE,EAAoBsC,EAAEJ,GAEpDxC,EAAQ,IAAIyF,MACZa,EAAe,SAASnC,GAC3B,GAAG7D,EAAoB4B,EAAEkE,EAAiB5D,KACzC6D,EAAqBD,EAAgB5D,GACX,IAAvB6D,IAA0BD,EAAgB5D,QAAW/B,GACrD4F,GAAoB,CACtB,IAAIhB,EAAYlB,IAAyB,SAAfA,EAAM3Q,KAAkB,UAAY2Q,EAAM3Q,MAChE+S,EAAUpC,GAASA,EAAMO,QAAUP,EAAMO,OAAOrW,IACpD2R,EAAML,QAAU,iBAAmB6C,EAAU,cAAgB6C,EAAY,KAAOkB,EAAU,IAC1FvG,EAAM1L,KAAO,iBACb0L,EAAMxM,KAAO6R,EACbrF,EAAMtB,QAAU6H,EAChBF,EAAmB,GAAGrG,KAIzBM,EAAoBgD,EAAEjE,EAAKiH,EAAc,SAAW9D,EAASA,KAclElC,EAAoBU,EAAES,EAAI,SAASe,GAAW,OAAoC,IAA7B4D,EAAgB5D,IAGrE,IAAIgE,EAAuB,SAASC,EAA4B3Z,GAC/D,IAKIyT,EAAUiC,EALVtB,EAAWpU,EAAK,GAChB4Z,EAAc5Z,EAAK,GACnB6Z,EAAU7Z,EAAK,GAGIyU,EAAI,EAC3B,GAAGL,EAASlM,MAAK,SAAS5E,GAAM,OAA+B,IAAxBgW,EAAgBhW,MAAe,CACrE,IAAImQ,KAAYmG,EACZpG,EAAoB4B,EAAEwE,EAAanG,KACrCD,EAAoBQ,EAAEP,GAAYmG,EAAYnG,IAGhD,GAAGoG,EAAS,IAAI1F,EAAS0F,EAAQrG,GAGlC,IADGmG,GAA4BA,EAA2B3Z,GACrDyU,EAAIL,EAAStN,OAAQ2N,IACzBiB,EAAUtB,EAASK,GAChBjB,EAAoB4B,EAAEkE,EAAiB5D,IAAY4D,EAAgB5D,IACrE4D,EAAgB5D,GAAS,KAE1B4D,EAAgB5D,GAAW,EAE5B,OAAOlC,EAAoBU,EAAEC,IAG1B2F,EAAqBC,KAAK,yBAA2BA,KAAK,0BAA4B,GAC1FD,EAAmBvX,QAAQmX,EAAqB/B,KAAK,KAAM,IAC3DmC,EAAmBzO,KAAOqO,EAAqB/B,KAAK,KAAMmC,EAAmBzO,KAAKsM,KAAKmC,I,GCpFvF,IAAIE,EAAsBxG,EAAoBU,OAAEP,EAAW,CAAC,MAAM,WAAa,OAAOH,EAAoB,UAC1GwG,EAAsBxG,EAAoBU,EAAE8F,I","sources":["webpack://databasir/./src/api/Login.js","webpack://databasir/./src/App.vue","webpack://databasir/./src/App.vue?7ccd","webpack://databasir/./src/components/DatabaseIcon.vue","webpack://databasir/./src/components/DatabaseIcon.vue?d57f","webpack://databasir/./src/main.js","webpack://databasir/./src/layouts/Layout.vue","webpack://databasir/./src/components/AppNav.vue","webpack://databasir/./src/components/AppNav.vue?b6ff","webpack://databasir/./src/components/Breadcrumb.vue","webpack://databasir/./src/components/Breadcrumb.vue?ef20","webpack://databasir/./src/components/Avatar.vue","webpack://databasir/./src/components/Avatar.vue?e66a","webpack://databasir/./src/api/Search.js","webpack://databasir/./src/layouts/Layout.vue?7cb6","webpack://databasir/./src/router/breadcurmb.js","webpack://databasir/./src/router/index.js","webpack://databasir/./src/store/index.js","webpack://databasir/./src/utils/auth.js","webpack://databasir/./src/utils/fetch.js","webpack://databasir/webpack/bootstrap","webpack://databasir/webpack/runtime/chunk loaded","webpack://databasir/webpack/runtime/compat get default export","webpack://databasir/webpack/runtime/define property getters","webpack://databasir/webpack/runtime/ensure chunk","webpack://databasir/webpack/runtime/get javascript chunk filename","webpack://databasir/webpack/runtime/get mini-css chunk filename","webpack://databasir/webpack/runtime/global","webpack://databasir/webpack/runtime/hasOwnProperty shorthand","webpack://databasir/webpack/runtime/load script","webpack://databasir/webpack/runtime/make namespace object","webpack://databasir/webpack/runtime/publicPath","webpack://databasir/webpack/runtime/css loading","webpack://databasir/webpack/runtime/jsonp chunk loading","webpack://databasir/webpack/startup"],"sourcesContent":["import axios from '@/utils/fetch';\r\n\r\nexport const login = (form) => {\r\n const data = new FormData();\r\n data.append('username', form.username);\r\n data.append('password', form.password);\r\n return axios.post('/login', data)\r\n}\r\n\r\nexport const oauth2Login = (registrationId, parameters) => {\r\n return axios.get('/oauth2/login/'+registrationId, {\r\n params: parameters\r\n })\r\n}\r\n\r\nexport const logout = () => {\r\n return axios.get('/logout')\r\n}\r\n\r\nexport const loginInfo = () => {\r\n return axios.get('/api/v1.0/login_info')\r\n}\r\n\r\nexport const refreshAccessToken = (refreshToken) => {\r\n return axios.post('/access_tokens', {\r\n refreshToken: refreshToken\r\n })\r\n}","<template>\r\n <router-view/>\r\n</template>\r\n","import { render } from \"./App.vue?vue&type=template&id=2b08e877\"\nconst script = {}\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <template v-if=\"databaseType.toLowerCase() == 'mysql'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/MySQL.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'postgresql'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/PostgreSQL.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'oracle'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/Oracle.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'mariadb'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/MariaDB.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'sqlserver'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/Sqlserver.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"icon\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"icon\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else>\r\n {{ databaseType }}\r\n </template>\r\n</template>\r\n\r\n\r\n<script>\r\n\r\nexport default {\r\n props: {\r\n databaseType: String,\r\n icon: String,\r\n },\r\n}\r\n</script>\r\n","import { render } from \"./DatabaseIcon.vue?vue&type=template&id=14de696c\"\nimport script from \"./DatabaseIcon.vue?vue&type=script&lang=js\"\nexport * from \"./DatabaseIcon.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport ElementPlus from 'element-plus'\r\nimport * as Icons from '@element-plus/icons'\r\n\r\nimport 'highlight.js/styles/stackoverflow-light.css';\r\nimport hljs from 'highlight.js/lib/core';\r\nimport javascript from 'highlight.js/lib/languages/javascript';\r\nimport hljsVuePlugin from \"@highlightjs/vue-plugin\";\r\n\r\nimport 'element-plus/dist/index.css'\r\nimport router from './router'\r\nimport store from './store'\r\nimport App from './App.vue'\r\nimport { user } from './utils/auth'\r\nimport DatabaseIcon from './components/DatabaseIcon.vue'\r\nimport { VueClipboard } from '@soerenmartius/vue3-clipboard'\r\n\r\n// element icon\r\nconst app = createApp(App)\r\nObject.keys(Icons).forEach(key => {\r\n app.component(key, Icons[key])\r\n})\r\napp.component('database-icon', DatabaseIcon)\r\n\r\n// permission directive\r\napp.directive('require-roles', {\r\n mounted(el, binding) {\r\n const roles = binding.value\r\n if (!user.hasAnyRoles(roles)) {\r\n el.parentNode && el.parentNode.removeChild(el)\r\n }\r\n },\r\n})\r\n\r\n// custom select directive\r\napp.directive(\"select-more\", {\r\n updated(el, binding) {\r\n const child = el.querySelector('.select-trigger');\r\n const id = child.getAttribute('aria-describedby');\r\n const poper = document.getElementById(id);\r\n if (poper == null) {\r\n return;\r\n }\r\n const selector = poper.parentElement.querySelector('.el-select-dropdown .el-scrollbar .el-select-dropdown__wrap');\r\n if (selector == null) {\r\n console.log('load select component failed')\r\n return;\r\n }\r\n selector.addEventListener('scroll', function () {\r\n const condition = this.scrollHeight - this.scrollTop - 1 <= this.clientHeight;\r\n if (condition) {\r\n binding.value();\r\n }\r\n });\r\n },\r\n});\r\n\r\n\r\nhljs.registerLanguage('javascript', javascript);\r\napp.use(hljsVuePlugin)\r\napp.use(store)\r\napp.use(ElementPlus)\r\napp.use(router)\r\napp.use(VueClipboard)\r\napp.mount('#app')\r\n\r\n","<template>\r\n <el-container class=\"databasir\">\r\n <el-aside>\r\n <AppNav class=\"databasir-nav\" @on-search=\"search()\"></AppNav>\r\n </el-aside>\r\n <el-header class=\"databasir-main-header\">\r\n <Breadcrumb></Breadcrumb>\r\n <Avatar></Avatar>\r\n </el-header>\r\n <el-main class=\"databasir-main\">\r\n <el-container>\r\n <el-main class=\"databasir-main-content\">\r\n <router-view></router-view>\r\n </el-main>\r\n </el-container>\r\n </el-main>\r\n <el-dialog\r\n v-model=\"showSearchDialog\"\r\n title=\"搜索\"\r\n width=\"60%\"\r\n >\r\n <el-input \r\n v-model=\"queryKeyword\"\r\n prefix-icon=\"Search\"\r\n placeholder=\"分组、项目、database、schema 搜索\"\r\n style=\"width:100%;border:none;\"\r\n @change=\"onQuery\"\r\n >\r\n </el-input>\r\n <div style=\"margin-top:16px;\">\r\n <el-link :underline=\"false\" v-for=\"(item, index) in searchSelectHistory\" :key=\"index\" @click=\"jumpToPath(item.path)\" style=\"margin-right: 12px;margin-bottom:12px;\">\r\n <el-tag closable :type=\"item.type == 'group'?'primary':'success'\" @close=\"onRemoveSelectHistoryItem(item.label)\">\r\n {{item.label}}\r\n </el-tag>\r\n </el-link>\r\n </div>\r\n <el-divider v-if=\"queryData.projects.length > 0 || queryData.groups.length > 0\"></el-divider>\r\n \r\n <div class=\"search-container\" v-loading=\"queryLoading\">\r\n <div v-if=\"queryLoading && queryData.projects.length == 0 && queryData.groups.length == 0\" style=\"height: 80px;\">\r\n \r\n </div>\r\n <div class=\"search-item\" v-for=\"(project,index) in queryData.projects\" :key=\"index\" @click=\"jumpToProject(project)\">\r\n <span>\r\n <el-tag type=\"success\">project</el-tag> <el-link :underline=\"false\"> {{project.groupName}} / {{project.projectName}}</el-link>\r\n </span>\r\n <span class=\"jump\">\r\n <el-icon><Right /></el-icon>\r\n </span>\r\n </div>\r\n <div class=\"search-item\" v-for=\"(group,index) in queryData.groups\" :key=\"index\" @click=\"jumpToGroup(group)\">\r\n <span>\r\n <el-tag>group</el-tag> <el-link :underline=\"false\"> {{group.name}}</el-link>\r\n </span>\r\n <span class=\"jump\">\r\n <el-icon><Right /></el-icon>\r\n </span>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n </el-container>\r\n</template>\r\n\r\n<style>\r\n.search-item {\r\n padding: 10px;\r\n width: 99%;\r\n margin-bottom: 12px;\r\n margin-right:12px;\r\n display: flex;\r\n justify-content: space-between;\r\n border-radius: 8px;\r\n}\r\n.search-item:hover {\r\n background-color: #F0F2F5;\r\n}\r\n.search-item .jump {\r\n margin-right: 8px;\r\n}\r\n\r\n.search-container {\r\n max-height: 420px;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n}\r\n\r\n.databasir-nav {\r\n position: fixed;\r\n transform: scale(1, 1);\r\n left: 0;\r\n bottom: 0;\r\n top: 0;\r\n}\r\n\r\n.databasir-main-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n position: fixed;\r\n transform: scale(1, 1);\r\n top: 0px;\r\n right: 0px;\r\n left: 50px;\r\n padding: 30px;\r\n margin-left: 33px;\r\n background: #FFF;\r\n z-index: 100;\r\n border-color: #EEE;\r\n border-width: 0px 0px 1px 0px;\r\n border-style: solid;\r\n}\r\n\r\n.databasir {\r\n display: block;\r\n}\r\n\r\n.databasir-main {\r\n position: relative;\r\n margin-left: 60px;\r\n margin-top: 80px;\r\n --el-main-padding: 0px 20px 20px 20px;\r\n}\r\n\r\n.databasir-main-expand {\r\n margin-left: 50px;\r\n}\r\n\r\n.databasir-main-content {\r\n max-width: 95%;\r\n --el-main-padding: 0px 20px 20px 20px;\r\n}\r\n\r\n.h2 {\r\n font-size: 24px;\r\n color: #606266;\r\n font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',\r\n 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;\r\n margin-top: 13px;\r\n margin-bottom: 13px;\r\n}\r\n.h3 {\r\n font-size: 20px;\r\n color: #909399;\r\n font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',\r\n 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;\r\n margin-top: 18px;\r\n margin-bottom: 18px;\r\n}\r\n\r\n</style>\r\n<script>\r\nimport AppNav from '../components/AppNav.vue'\r\nimport Breadcrumb from '../components/Breadcrumb.vue'\r\nimport Avatar from '../components/Avatar.vue'\r\nimport { query } from '@/api/Search.js'\r\n\r\nexport default {\r\n components: { AppNav, Breadcrumb, Avatar },\r\n data() {\r\n return {\r\n showSearchDialog: false,\r\n queryKeyword: '',\r\n queryData: {\r\n projects: [],\r\n groups: []\r\n },\r\n queryLoading: false,\r\n searchSelectHistory: [],\r\n searchSelectHistoryKey: 'globalSearchSelectHistory'\r\n }\r\n },\r\n mounted() {\r\n this.loadSearchSelectHistory()\r\n },\r\n methods: {\r\n search() {\r\n this.showSearchDialog = true\r\n },\r\n onQuery(val) {\r\n this.queryLoading = true;\r\n query({ query: val })\r\n .then(resp => {\r\n if (!resp.errCode) {\r\n this.queryData = resp.data\r\n }\r\n }).finally(() => this.queryLoading = false)\r\n },\r\n jumpToGroup(group) {\r\n this.showSearchDialog = false\r\n const path = '/groups/'+group.id+\"?groupName=\"+group.name;\r\n const select = {\r\n label: group.name,\r\n path: path,\r\n type: 'group'\r\n }\r\n const history = this.searchSelectHistory.filter(item => item.label != select.label)\r\n history.unshift(select)\r\n history.splice(15)\r\n this.searchSelectHistory = history\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n window.location=path\r\n },\r\n jumpToProject(project) {\r\n this.showSearchDialog = false\r\n const path = '/groups/'+project.groupId+'/projects/'+project.projectId+'/documents?groupName='+project.groupName+\"&projectName=\"+project.projectName\r\n \r\n const select = {\r\n label: project.groupName+ ' / '+project.projectName,\r\n path: path,\r\n type: 'project'\r\n }\r\n const history = this.searchSelectHistory.filter(item => item.label != select.label)\r\n history.unshift(select)\r\n history.splice(15)\r\n this.searchSelectHistory = history\r\n\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n window.location=path\r\n },\r\n jumpToPath(path) {\r\n window.location=path\r\n },\r\n loadSearchSelectHistory() {\r\n const key = this.searchSelectHistoryKey\r\n if (window.localStorage.getItem(key) != null) {\r\n const obj = JSON.parse(window.localStorage.getItem(key));\r\n this.searchSelectHistory = obj\r\n }\r\n },\r\n onRemoveSelectHistoryItem(label) {\r\n const history = this.searchSelectHistory.filter(item => item.label != label)\r\n this.searchSelectHistory = history\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n }\r\n }\r\n}\r\n\r\n</script>","<template>\r\n <el-menu\r\n router\r\n :collapse=\"isCollapse\"\r\n mode=\"vertical\"\r\n class=\"left-menu\">\r\n <el-menu-item index=\"/\">\r\n <el-icon><home-filled /></el-icon>\r\n <template #title>\r\n <span>Databasir</span>\r\n </template>\r\n </el-menu-item>\r\n <template v-for=\"(menu, index) in routes\" :key=\"index\" >\r\n <el-sub-menu v-if=\"isShowMenu(menu) && menu.children.length > 0 && menu.children.some(ele => !ele.hidden)\" :index=\"menu.path\">\r\n <template #title> \r\n <el-icon>\r\n <component :is=\"menu.icon\" />\r\n </el-icon>\r\n <span>{{ menu.meta.nav }}</span>\r\n </template>\r\n <template :key=\"index + '-' + childIndex\" v-for=\"(child, childIndex) in menu.children\">\r\n <el-menu-item v-if=\"!child.hidden\" :index=\"menu.path+'/'+child.path\">\r\n <el-icon v-if=\"child.icon\">\r\n <component :is=\"child.icon\" />\r\n </el-icon>\r\n <template #title>\r\n <span>{{ child.meta.nav }}</span>\r\n </template>\r\n </el-menu-item>\r\n </template>\r\n </el-sub-menu>\r\n <el-menu-item v-else-if=\"isShowMenu(menu)\" :index=\"menu.path\">\r\n <el-icon>\r\n <component :is=\"menu.icon\" />\r\n </el-icon>\r\n <template #title>\r\n <span>{{ menu.meta.nav }}</span>\r\n </template> \r\n </el-menu-item>\r\n \r\n </template>\r\n <el-menu-item index=\"\" @click=\"showSearchDialog()\">\r\n <el-button type=\"text\" icon=\"Search\" style=\"color: #303133;\"></el-button>\r\n </el-menu-item>\r\n </el-menu>\r\n \r\n</template>\r\n<style>\r\n.left-menu:not(.el-menu--collapse) {\r\n height: 100vh;\r\n}\r\n</style>\r\n<script>\r\nimport { useRouter } from 'vue-router'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { user } from '../utils/auth'\r\nimport store from '../store/index'\r\n\r\nexport default defineComponent({\r\n emits: ['on-search'],\r\n setup(props, context) {\r\n const isCollapse = computed(() => store.state.menu.isCollapse)\r\n const router = useRouter()\r\n const routes = router.options.routes\r\n\r\n const isShowMenu = (menu) => {\r\n if (menu.hidden) {\r\n return false\r\n }\r\n if (menu.meta.requireAnyRoles && menu.meta.requireAnyRoles.length > 0) {\r\n const hasAnyRoles = user.hasAnyRoles(menu.meta.requireAnyRoles)\r\n if (!hasAnyRoles) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n\r\n const expandMenu = () => {\r\n store.commit('expandMenu')\r\n }\r\n\r\n const showSearchDialog = () => {\r\n context.emit('on-search')\r\n }\r\n\r\n return {\r\n isCollapse,\r\n isShowMenu,\r\n expandMenu,\r\n routes,\r\n showSearchDialog,\r\n }\r\n }\r\n})\r\n</script>","import { render } from \"./AppNav.vue?vue&type=template&id=0c349a0c\"\nimport script from \"./AppNav.vue?vue&type=script&lang=js\"\nexport * from \"./AppNav.vue?vue&type=script&lang=js\"\n\nimport \"./AppNav.vue?vue&type=style&index=0&id=0c349a0c&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <el-breadcrumb separator=\"/\" >\r\n <el-breadcrumb-item v-if=\"!menuIsCollapse\">\r\n <el-link @click=\"onFoldMenu()\" :underline=\"false\">\r\n <el-icon><fold /></el-icon>\r\n </el-link>\r\n </el-breadcrumb-item>\r\n <el-breadcrumb-item v-for=\"(item, index) in breadcrumbs\" :key=\"index\" :to=\"item.to\">{{ item.name }}</el-breadcrumb-item>\r\n </el-breadcrumb>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default{\r\n computed: {\r\n breadcrumbs: function() {\r\n if (typeof this.$route.meta.breadcrumb === 'function') {\r\n return this.$route.meta.breadcrumb(this.$route, this.$store.state)\r\n } else {\r\n return []\r\n }\r\n },\r\n menuIsCollapse() {\r\n return this.$store.state.menu.isCollapse\r\n }\r\n },\r\n methods: {\r\n onFoldMenu() {\r\n this.$store.commit('foldMenu')\r\n }\r\n }\r\n}\r\n</script>","import { render } from \"./Breadcrumb.vue?vue&type=template&id=055586aa\"\nimport script from \"./Breadcrumb.vue?vue&type=script&lang=js\"\nexport * from \"./Breadcrumb.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <el-dropdown>\r\n <el-avatar :size=\"36\" :src=\"avatarUrl\" icon=\"avatar\"></el-avatar>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item>{{ userNickname }}</el-dropdown-item>\r\n\r\n <el-dropdown-item icon=\"user\" divided @click=\"toProfilePage()\">个人中心</el-dropdown-item>\r\n <el-dropdown-item icon=\"back\" @click=\"onLogout()\">注销登陆</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n</template>\r\n\r\n<script>\r\nimport { user } from '../utils/auth'\r\n\r\nexport default {\r\n computed: {\r\n userNickname() {\r\n return this.$store.state.user.nickname \r\n },\r\n avatarUrl() {\r\n return this.$store.state.user.avatar \r\n }\r\n },\r\n methods: {\r\n onLogout(){\r\n user.removeUserLoginData()\r\n this.$router.push({path: '/login'})\r\n },\r\n toProfilePage() {\r\n this.$router.push({ path: '/profile'})\r\n }\r\n }\r\n}\r\n</script>\r\n","import { render } from \"./Avatar.vue?vue&type=template&id=34a219c2\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import axios from '@/utils/fetch';\r\n\r\nconst base = \"/api/v1.0/search\"\r\n\r\nexport const query = (keyword) => {\r\n return axios.get(base, {\r\n params: keyword\r\n })\r\n}","import { render } from \"./Layout.vue?vue&type=template&id=6a109b90\"\nimport script from \"./Layout.vue?vue&type=script&lang=js\"\nexport * from \"./Layout.vue?vue&type=script&lang=js\"\n\nimport \"./Layout.vue?vue&type=style&index=0&id=6a109b90&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","function index() {\r\n return {\r\n name:'首页',\r\n to: {\r\n path: '/'\r\n }\r\n }\r\n}\r\n\r\nfunction groupList() {\r\n return {\r\n name:'项目中心',\r\n to: {\r\n name: 'groupListPage'\r\n } \r\n }\r\n}\r\n\r\nfunction groupDashboard(route) {\r\n var groupName = '项目组'\r\n if (route.query.groupName) {\r\n groupName = route.query.groupName\r\n }\r\n return {\r\n name: groupName,\r\n to: {\r\n path: '/groups/'+route.params.groupId\r\n } \r\n }\r\n}\r\n\r\nfunction groupProjectDocument(route) {\r\n var name = '项目文档'\r\n if (route.query.projectName) {\r\n name = route.query.projectName\r\n }\r\n var projectId = route.params.projectId\r\n var groupId = route.params.groupId\r\n return {\r\n name: name,\r\n to: {\r\n path: '/groups/' + groupId + '/projects/' + projectId + '/documents',\r\n query: {\r\n projectName: name\r\n }\r\n } \r\n }\r\n}\r\n\r\nfunction userList() {\r\n return {\r\n name:'用户列表',\r\n to: {\r\n path: '/users'\r\n } \r\n }\r\n}\r\n\r\n\r\nfunction userProfile() {\r\n return {\r\n name:'个人中心',\r\n to: {\r\n path: '/profile'\r\n } \r\n }\r\n}\r\n\r\nfunction sysEmailEdit() {\r\n return {\r\n name:'邮箱设置',\r\n to: {\r\n path: '/settings/sysEmail'\r\n } \r\n }\r\n}\r\n\r\nfunction sysLog() {\r\n return {\r\n name:'操作日志',\r\n to: {\r\n path: '/settings/sysLog'\r\n } \r\n }\r\n}\r\n\r\nfunction sysOauth2() {\r\n return {\r\n name:'登录设置',\r\n to: {\r\n path: '/settings/sysOauth2'\r\n } \r\n }\r\n}\r\n\r\nfunction sysDatabaseType() {\r\n return {\r\n name:'数据库扩展',\r\n to: {\r\n path: '/settings/sysDatabaseType'\r\n } \r\n }\r\n}\r\n\r\nfunction sysDocumentTemplate() {\r\n return {\r\n name:'文档模板',\r\n to: {\r\n path: '/settings/sysDocumentTemplate'\r\n } \r\n }\r\n}\r\n\r\n\r\nconst breadcurmbMap = {\r\n index: () => [index() ],\r\n groupList: () => [index(), groupList()],\r\n groupDashboard: (route, state) => [index(), groupList(), groupDashboard(route, state)],\r\n groupProjectDocument: (route, state) => [index(), groupList(), groupDashboard(route, state), groupProjectDocument(route)],\r\n userProfile: () => [index(), userProfile()],\r\n userList: () => [index(), userList()],\r\n sysEmailEdit: () => [index(), sysEmailEdit()],\r\n sysLog: () => [index(), sysLog()],\r\n sysOauth2: () => [index(), sysOauth2()],\r\n sysDatabaseType: () => [index(), sysDatabaseType()],\r\n sysDocumentTemplate: () => [index(), sysDocumentTemplate()],\r\n}\r\n\r\nexport default breadcurmbMap","import { createRouter, createWebHistory } from 'vue-router';\r\nimport Layout from \"../layouts/Layout.vue\"\r\nimport breadcurmbMap from './breadcurmb'\r\nimport { token } from '../utils/auth';\r\n\r\nconst routes = [\r\n {\r\n path: '/login',\r\n component: () => import('@/views/Login.vue'),\r\n hidden: true,\r\n meta: {\r\n requireAuth: false\r\n }\r\n },\r\n {\r\n path: '/login/oauth2/:id',\r\n component: () => import('@/views/OAuth2Login.vue'),\r\n hidden: true,\r\n props: true,\r\n meta: {\r\n requireAuth: false\r\n }\r\n },\r\n {\r\n path: '/',\r\n hidden: true,\r\n component: Layout,\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/GroupList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupList\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/groups',\r\n icon: 'Collection',\r\n component: Layout,\r\n meta: {\r\n nav: '项目中心',\r\n },\r\n children: [\r\n {\r\n path: '',\r\n name: 'groupListPage',\r\n hidden: true,\r\n component: () => import('@/views/GroupList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupList\r\n }\r\n },\r\n {\r\n path: ':groupId',\r\n hidden: true,\r\n component: () => import('@/views/GroupDashboard.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupDashboard\r\n }\r\n },\r\n {\r\n path: ':groupId/projects/:projectId/documents',\r\n hidden: true,\r\n component: () => import('@/views/Document.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupProjectDocument\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/users',\r\n icon: 'List',\r\n component: Layout,\r\n meta: {\r\n nav:'用户中心',\r\n requireAnyRoles: ['SYS_OWNER']\r\n },\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/UserList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.userList\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/profile',\r\n icon: 'User',\r\n component: Layout,\r\n meta: {\r\n nav: '个人中心',\r\n breadcrumb: breadcurmbMap.userProfile\r\n },\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/UserProfile.vue')\r\n }\r\n ]\r\n },\r\n {\r\n path: '/settings',\r\n icon: 'Setting',\r\n component: Layout,\r\n meta: {\r\n nav:'系统中心',\r\n requireAnyRoles: ['SYS_OWNER']\r\n },\r\n children: [\r\n {\r\n path: 'sysEmail',\r\n icon: 'Notification',\r\n component: () => import('@/views/SysEmailEdit.vue'),\r\n meta: {\r\n nav: '邮箱设置',\r\n breadcrumb: breadcurmbMap.sysEmailEdit\r\n }\r\n },\r\n {\r\n path: 'sysLog',\r\n icon: 'Document',\r\n component: () => import('@/views/SysLog.vue'),\r\n meta: {\r\n nav: '操作日志',\r\n breadcrumb: breadcurmbMap.sysLog\r\n }\r\n },\r\n {\r\n path: 'sysOauth2',\r\n icon: 'Connection',\r\n component: () => import('@/views/SysOauth2.vue'),\r\n meta: {\r\n nav: '登陆设置',\r\n breadcrumb: breadcurmbMap.sysOauth2\r\n }\r\n },\r\n {\r\n path: 'sysDatabaseType',\r\n icon: 'office-building',\r\n component: () => import('@/views/SysDatabaseType.vue'),\r\n meta: {\r\n nav: '数据库扩展',\r\n breadcrumb: breadcurmbMap.sysDatabaseType\r\n }\r\n },\r\n {\r\n path: 'sysDocumentTemplate',\r\n icon: 'document-add',\r\n component: () => import('@/views/SysDocumentTemplateProperty.vue'),\r\n meta: {\r\n nav: '文档模板',\r\n breadcrumb: breadcurmbMap.sysDocumentTemplate\r\n }\r\n },\r\n // TODO\r\n {\r\n path: 'sysKey',\r\n icon: 'Key',\r\n hidden: 'true',\r\n component: Layout,\r\n meta: {\r\n nav: '系统秘钥',\r\n breadcrumb: breadcurmbMap.sysKeyEdit\r\n }\r\n }\r\n ]\r\n }\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes\r\n});\r\n\r\n// 权限路由守卫\r\nrouter.beforeEach((to, from, next) => {\r\n if (to.meta.requireAuth == false) {\r\n if (to.path == '/login' && token.hasAccessToken()) {\r\n next(from)\r\n } else {\r\n next()\r\n }\r\n } else {\r\n if(token.hasAccessToken()) {\r\n next()\r\n } else {\r\n next({ path: '/login' })\r\n }\r\n }\r\n})\r\n\r\n// groupName 参数路由守卫\r\nrouter.beforeEach((to, from, next) => {\r\n if (!to.query.groupName && from.query.groupName) {\r\n to.query.groupName = from.query.groupName\r\n } \r\n if (!to.query.projectName && from.query.projectName) {\r\n to.query.projectName = from.query.projectName\r\n } \r\n next();\r\n})\r\n\r\nexport default router;","import { createStore } from 'vuex'\r\nimport { user } from '../utils/auth'\r\n\r\nconst store = createStore({\r\n state() {\r\n const data = {\r\n user: {\r\n nickname: null,\r\n usernmae: null,\r\n email: null,\r\n avatar: null,\r\n },\r\n groupListActiveTab: null,\r\n menu: {\r\n isCollapse: true,\r\n }\r\n }\r\n const loginData = user.loadUserLoginData()\r\n if (loginData) {\r\n data.user.nickname = loginData.nickname\r\n data.user.usernmae = loginData.usernmae\r\n data.user.email = loginData.email\r\n data.user.avatar = loginData.avatar\r\n }\r\n return data;\r\n },\r\n mutations: {\r\n userUpdate(state, param) {\r\n if (param.nickname) {\r\n state.user.nickname = param.nickname\r\n }\r\n if (param.usernmae) {\r\n state.user.usernmae = param.usernmae\r\n }\r\n if (param.email) {\r\n state.user.email = param.email\r\n }\r\n if (param.avatar) {\r\n state.user.avatar = param.avatar\r\n }\r\n },\r\n foldMenu(state) {\r\n state.menu.isCollapse = true\r\n },\r\n expandMenu(state) {\r\n state.menu.isCollapse = false\r\n },\r\n switchGroupListActiveTab(state, groupListActiveTab) {\r\n if (groupListActiveTab) {\r\n state.groupListActiveTab = groupListActiveTab\r\n }\r\n }\r\n }\r\n})\r\n\r\nexport default store","const accessTokenKey = 'accessToken'\r\nconst accessTokenExpireAtKey = 'accessTokenExpireAt'\r\nconst userLoginDataKey = 'userLoginData'\r\n\r\nexport const token = {\r\n\r\n hasAccessToken() {\r\n const accessToken = this.loadAccessToken()\r\n return accessToken\r\n },\r\n\r\n hasValidAccessToken() {\r\n const accessToken = this.loadAccessToken()\r\n const expireAt = window.localStorage.getItem(accessTokenExpireAtKey)\r\n if (!accessToken || !expireAt) {\r\n console.log('warn: not found accessToken and expireAt key')\r\n return false\r\n }\r\n // 10s gap\r\n return expireAt > new Date().getTime() -(1000 * 10)\r\n },\r\n\r\n saveAccessToken(token, tokenExpireAt) {\r\n window.localStorage.setItem(accessTokenKey, token)\r\n window.localStorage.setItem(accessTokenExpireAtKey, tokenExpireAt)\r\n },\r\n\r\n loadAccessToken() {\r\n let token = window.localStorage.getItem(accessTokenKey)\r\n if (token) {\r\n return token\r\n }\r\n return null\r\n }\r\n}\r\n\r\nexport const user = {\r\n\r\n saveUserLoginData(userLoginData) {\r\n window.localStorage.setItem(accessTokenKey, userLoginData.accessToken)\r\n window.localStorage.setItem(accessTokenExpireAtKey, userLoginData.accessTokenExpireAt)\r\n window.localStorage.setItem(userLoginDataKey, JSON.stringify(userLoginData))\r\n },\r\n\r\n removeUserLoginData() {\r\n window.localStorage.removeItem(userLoginDataKey)\r\n window.localStorage.removeItem(accessTokenKey)\r\n window.localStorage.removeItem(accessTokenExpireAtKey)\r\n },\r\n\r\n loadUserLoginData() {\r\n if (!window.localStorage.getItem(userLoginDataKey)) {\r\n return null;\r\n } \r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n return JSON.parse(data)\r\n },\r\n\r\n hasAnyRoles(roles) {\r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n if (data == null) {\r\n return false\r\n }\r\n const user = JSON.parse(data)\r\n return user\r\n .roles\r\n .map(role => {\r\n if (role.groupId) {\r\n return role.role + '?groupId=' + role.groupId\r\n } else {\r\n return role.role\r\n }\r\n })\r\n .some(exists => roles.some(expected => expected == exists))\r\n },\r\n\r\n getRefreshToken() {\r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n if (data == null) {\r\n return null\r\n }\r\n const user = JSON.parse(data)\r\n return user.refreshToken\r\n }\r\n}\r\n","import axios from 'axios';\r\nimport { ElMessage } from 'element-plus'\r\nimport router from '../router';\r\nimport { token, user } from './auth';\r\nimport { refreshAccessToken } from '../api/Login';\r\n\r\nconst BASE_API = process.env.VUE_APP_API_URL\r\n// default config\r\naxios.defaults.baseURL = BASE_API,\r\naxios.defaults.timeout = 15 * 1000;\r\naxios.defaults.withCredentials = false;\r\naxios.defaults.headers.post['Content-Type'] = 'application/json';\r\naxios.defaults.headers.post[\"Access-Control-Allow-Origin-Type\"] = \"*\";\r\n\r\n// token request config\r\n// eslint-disable-next-line\r\nlet tokenRefreshLock = false\r\n\r\nfunction lock() {\r\n tokenRefreshLock = true\r\n}\r\n\r\nfunction unlock() {\r\n tokenRefreshLock = false\r\n}\r\n\r\nlet blockRequests = []\r\n\r\nfunction blockRequest(request) {\r\n blockRequests.push(request)\r\n}\r\n\r\nfunction relaseRequests(config) {\r\n blockRequests.forEach(request => {\r\n request(config)\r\n })\r\n blockRequests = []\r\n}\r\n\r\n// 请求拦截器\r\naxios.interceptors.request.use(async function (config) {\r\n if (config.url == '/access_tokens' || config.url.startsWith('/oauth2') || config.url == '/login') {\r\n return config\r\n }\r\n\r\n if (token.hasValidAccessToken()) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n return config;\r\n }\r\n if (tokenRefreshLock) {\r\n const promise = new Promise((resolve) => {\r\n blockRequest(() => {\r\n if (config) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n }\r\n resolve(config)\r\n })\r\n })\r\n return promise\r\n } \r\n return config\r\n}, function (error) {\r\n unlock()\r\n return Promise.reject(error);\r\n});\r\n\r\n// response拦截器\r\naxios.interceptors.response.use(\r\n (response) => {\r\n const res = response.data;\r\n if (res.errCode) {\r\n notify(res.errMessage)\r\n }\r\n return res;\r\n },\r\n (error) => {\r\n if (error.response) {\r\n if(error.response.status == 401) {\r\n if (error.response.data.errCode == 'X_0002') {\r\n user.removeUserLoginData()\r\n notify('登陆状态失效,请重新登陆')\r\n redirectLogin()\r\n } else if (error.response.data.errCode == 'X_0004') {\r\n return refresh(error.config).then(() => retryFromResponse(error.config))\r\n }\r\n } else if (error.response.status == 403) {\r\n notify('无执行该操作的权限')\r\n } else {\r\n notify(error.message)\r\n } \r\n } else {\r\n console.log(error)\r\n notify('网络异常,请稍后再试')\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nasync function refresh(config) {\r\n const refreshToken = user.getRefreshToken()\r\n if(!refreshToken) {\r\n redirectLogin()\r\n }\r\n\r\n if(tokenRefreshLock) {\r\n return new Promise((resolve) => {\r\n blockRequest(() => {\r\n if (config) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n }\r\n resolve(config)\r\n })\r\n })\r\n }\r\n\r\n lock()\r\n return await refreshAccessToken(refreshToken).then(resp => {\r\n if (resp.errCode) {\r\n redirectLogin()\r\n } else {\r\n token.saveAccessToken(resp.data.accessToken, resp.data.accessTokenExpireAt)\r\n unlock()\r\n }\r\n }).finally(() => unlock())\r\n}\r\n\r\nasync function retryFromResponse(config) {\r\n try {\r\n const res = await axios({\r\n method: config.method,\r\n data: config.data,\r\n url: config.url,\r\n baseURL: config.baseURL,\r\n headers: {\r\n Authorization: 'Bearer ' + token.loadAccessToken()\r\n },\r\n })\r\n relaseRequests(config)\r\n return res;\r\n } catch(error) {\r\n console.log(error)\r\n notify(\"网络异常,请稍后再试\");\r\n }\r\n}\r\n\r\n\r\nfunction redirectLogin () {\r\n user.removeUserLoginData()\r\n router.replace('/login')\r\n}\r\n\r\nfunction notify(msg) {\r\n ElMessage({\r\n message: msg,\r\n type: 'error',\r\n duration: 5 * 1000,\r\n grouping: true,\r\n });\r\n}\r\n\r\nexport default axios;\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \"-legacy.\" + {\"17\":\"5bee094a\",\"117\":\"623d8834\",\"139\":\"2e4437df\",\"206\":\"8d16f9c5\",\"227\":\"ed1b0a5b\",\"243\":\"0e928586\",\"408\":\"ddfcf48f\",\"469\":\"9029bf4c\",\"480\":\"e63a01f3\",\"725\":\"47994393\",\"834\":\"162d5bb2\",\"865\":\"5ba4977e\",\"918\":\"d3d8cbff\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"139\":\"a7dec339\",\"206\":\"6b48a93a\",\"227\":\"90d5c1b0\",\"408\":\"1969b1d0\",\"725\":\"82a2f213\",\"834\":\"f2905e33\",\"865\":\"7df1e56e\",\"918\":\"b113d9de\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"databasir:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"139\":1,\"206\":1,\"227\":1,\"408\":1,\"725\":1,\"834\":1,\"865\":1,\"918\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdatabasir\"] = self[\"webpackChunkdatabasir\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(21381); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["login","form","data","FormData","append","username","password","axios","oauth2Login","registrationId","parameters","params","refreshAccessToken","refreshToken","_createBlock","_component_router_view","script","__exports__","render","$props","toLowerCase","_component_el_tooltip","content","placement","_createElementVNode","src","require","style","_createElementBlock","_Fragment","key","props","databaseType","String","icon","app","createApp","App","Object","keys","Icons","forEach","component","DatabaseIcon","directive","mounted","el","binding","roles","value","user","parentNode","removeChild","updated","child","querySelector","id","getAttribute","poper","document","getElementById","selector","parentElement","addEventListener","condition","this","scrollHeight","scrollTop","clientHeight","console","log","hljs","javascript","use","hljsVuePlugin","store","ElementPlus","router","VueClipboard","mount","class","_component_el_container","_createVNode","_component_el_aside","_component_AppNav","onOnSearch","$options","_component_el_header","_component_Breadcrumb","_component_Avatar","_component_el_main","_component_el_dialog","$data","$event","title","width","_component_el_input","placeholder","onChange","_renderList","item","index","_component_el_link","underline","onClick","path","_component_el_tag","closable","type","onClose","label","projects","length","groups","_component_el_divider","project","groupName","_toDisplayString","projectName","_component_el_icon","_component_Right","group","name","_component_el_menu","collapse","_ctx","mode","_component_el_menu_item","_hoisted_1","_component_home_filled","menu","children","some","ele","hidden","_component_el_sub_menu","_resolveDynamicComponent","meta","nav","childIndex","_component_el_button","defineComponent","emits","setup","context","isCollapse","computed","useRouter","routes","options","isShowMenu","requireAnyRoles","hasAnyRoles","expandMenu","showSearchDialog","emit","_component_el_breadcrumb","separator","_component_el_breadcrumb_item","_component_fold","to","breadcrumbs","$route","breadcrumb","$store","state","menuIsCollapse","methods","onFoldMenu","commit","_component_el_dropdown","dropdown","_component_el_dropdown_menu","_component_el_dropdown_item","divided","_component_el_avatar","size","userNickname","nickname","avatarUrl","avatar","onLogout","$router","push","toProfilePage","base","query","keyword","components","AppNav","Breadcrumb","Avatar","queryKeyword","queryData","queryLoading","searchSelectHistory","searchSelectHistoryKey","loadSearchSelectHistory","search","onQuery","val","then","resp","errCode","finally","jumpToGroup","select","history","filter","unshift","splice","window","localStorage","setItem","JSON","stringify","location","jumpToProject","groupId","projectId","jumpToPath","getItem","obj","parse","onRemoveSelectHistoryItem","groupList","groupDashboard","route","groupProjectDocument","userList","userProfile","sysEmailEdit","sysLog","sysOauth2","sysDatabaseType","sysDocumentTemplate","breadcurmbMap","requireAuth","Layout","createRouter","createWebHistory","beforeEach","from","next","token","createStore","usernmae","email","groupListActiveTab","loginData","mutations","userUpdate","param","foldMenu","switchGroupListActiveTab","accessTokenKey","accessTokenExpireAtKey","userLoginDataKey","hasAccessToken","accessToken","loadAccessToken","hasValidAccessToken","expireAt","Date","getTime","saveAccessToken","tokenExpireAt","saveUserLoginData","userLoginData","accessTokenExpireAt","removeUserLoginData","removeItem","loadUserLoginData","map","role","exists","expected","getRefreshToken","BASE_API","process","VUE_APP_API_URL","tokenRefreshLock","lock","unlock","blockRequests","blockRequest","request","relaseRequests","config","refresh","redirectLogin","Promise","resolve","headers","Authorization","retryFromResponse","method","url","baseURL","res","notify","msg","ElMessage","message","duration","grouping","startsWith","promise","error","reject","response","errMessage","status","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","needAttach","scripts","getElementsByTagName","s","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","p","createStylesheet","fullhref","linkTag","rel","onLinkComplete","errorType","realHref","href","err","Error","code","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/api/src/main/resources/static/js/app-legacy.d2b56939.js b/api/src/main/resources/static/js/app-legacy.d2b56939.js new file mode 100644 index 0000000..e738150 --- /dev/null +++ b/api/src/main/resources/static/js/app-legacy.d2b56939.js @@ -0,0 +1,2 @@ +(function(){"use strict";var e={40152:function(e,n,t){t.d(n,{x4:function(){return o},rd:function(){return a},jb:function(){return u}});var r=t(63872),o=function(e){var n=new FormData;return n.append("username",e.username),n.append("password",e.password),r.Z.post("/login",n)},a=function(e,n){return r.Z.get("/oauth2/login/"+e,{params:n})},u=function(e){return r.Z.post("/access_tokens",{refreshToken:e})}},21381:function(e,n,t){t(66992),t(88674),t(19601),t(17727),t(41539),t(54747),t(47941);var r=t(49963),o=t(8722),a=t(30137),u=t(30837),i=t(99622),c=t(66246),s=(t(54415),t(7843)),l=t(24239),d=t(66252);function f(e,n){var t=(0,d.up)("router-view");return(0,d.wg)(),(0,d.j4)(t)}var p=t(83744);const m={},h=(0,p.Z)(m,[["render",f]]);var g=h,w=t(51836),y=t(3577),v=["src"],b=["src"],k=["src"],S=["src"],x=["src"],_=["src"];function j(e,n,r,o,a,u){var i=(0,d.up)("el-tooltip");return"mysql"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:0,content:r.databaseType,placement:"left"},{default:(0,d.w5)((function(){return[(0,d._)("img",{src:t(92357),style:{"max-width":"33px","max-height":"33px"}},null,8,v)]})),_:1},8,["content"])):"postgresql"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:1,content:r.databaseType,placement:"left"},{default:(0,d.w5)((function(){return[(0,d._)("img",{src:t(43609),style:{"max-width":"33px","max-height":"33px"}},null,8,b)]})),_:1},8,["content"])):"oracle"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:2,content:r.databaseType,placement:"left"},{default:(0,d.w5)((function(){return[(0,d._)("img",{src:t(22260),style:{"max-width":"33px","max-height":"33px"}},null,8,k)]})),_:1},8,["content"])):"mariadb"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:3,content:r.databaseType,placement:"left"},{default:(0,d.w5)((function(){return[(0,d._)("img",{src:t(36658),style:{"max-width":"33px","max-height":"33px"}},null,8,S)]})),_:1},8,["content"])):"sqlserver"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:4,content:r.databaseType,placement:"left"},{default:(0,d.w5)((function(){return[(0,d._)("img",{src:t(35641),style:{"max-width":"33px","max-height":"33px"}},null,8,x)]})),_:1},8,["content"])):r.icon?((0,d.wg)(),(0,d.j4)(i,{key:5,content:r.databaseType,placement:"left"},{default:(0,d.w5)((function(){return[(0,d._)("img",{src:r.icon,style:{"max-width":"33px","max-height":"33px"}},null,8,_)]})),_:1},8,["content"])):((0,d.wg)(),(0,d.iD)(d.HY,{key:6},[(0,d.Uk)((0,y.zw)(r.databaseType),1)],64))}var T={props:{databaseType:String,icon:String}};const A=(0,p.Z)(T,[["render",j]]);var L=A,D=t(94890),C=(0,r.ri)(g);Object.keys(a).forEach((function(e){C.component(e,a[e])})),C.component("database-icon",L),C.directive("require-roles",{mounted:function(e,n){var t=n.value;w.E.hasAnyRoles(t)||e.parentNode&&e.parentNode.removeChild(e)}}),C.directive("select-more",{updated:function(e,n){var t=e.querySelector(".select-trigger"),r=t.getAttribute("aria-describedby"),o=document.getElementById(r);if(null!=o){var a=o.parentElement.querySelector(".el-select-dropdown .el-scrollbar .el-select-dropdown__wrap");null!=a?a.addEventListener("scroll",(function(){var e=this.scrollHeight-this.scrollTop-1<=this.clientHeight;e&&n.value()})):console.log("load select component failed")}}}),u.Z.registerLanguage("javascript",i.Z),C.use(c.Z),C.use(l.Z),C.use(o.Z),C.use(s.Z),C.use(D._),C.mount("#app")},7843:function(e,n,t){t.d(n,{Z:function(){return oe}});t(41539),t(78783),t(33948);var r=t(42119),o=(t(74916),t(64765),t(68309),t(66252)),a=t(3577),u={style:{"margin-top":"16px"}},i={class:"search-container"},c=["onClick"],s=(0,o.Uk)("project"),l=(0,o.Uk)(),d={class:"jump"},f=["onClick"],p=(0,o.Uk)("group"),m=(0,o.Uk)(),h={class:"jump"};function g(e,n,t,r,g,w){var y=(0,o.up)("AppNav"),v=(0,o.up)("el-aside"),b=(0,o.up)("Breadcrumb"),k=(0,o.up)("Avatar"),S=(0,o.up)("el-header"),x=(0,o.up)("router-view"),_=(0,o.up)("el-main"),j=(0,o.up)("el-container"),T=(0,o.up)("el-button"),A=(0,o.up)("el-input"),L=(0,o.up)("el-tag"),D=(0,o.up)("el-link"),C=(0,o.up)("el-divider"),q=(0,o.up)("Right"),N=(0,o.up)("el-icon"),E=(0,o.up)("el-dialog");return(0,o.wg)(),(0,o.j4)(j,{class:"databasir"},{default:(0,o.w5)((function(){return[(0,o.Wm)(v,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(y,{class:"databasir-nav",onOnSearch:n[0]||(n[0]=function(e){return w.search()})})]})),_:1}),(0,o.Wm)(S,{class:"databasir-main-header"},{default:(0,o.w5)((function(){return[(0,o.Wm)(b),(0,o.Wm)(k)]})),_:1}),(0,o.Wm)(_,{class:"databasir-main"},{default:(0,o.w5)((function(){return[(0,o.Wm)(j,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(_,{class:"databasir-main-content"},{default:(0,o.w5)((function(){return[(0,o.Wm)(x)]})),_:1})]})),_:1})]})),_:1}),(0,o.Wm)(E,{modelValue:g.showSearchDialog,"onUpdate:modelValue":n[2]||(n[2]=function(e){return g.showSearchDialog=e}),title:"搜索",width:w.dialogWidth()},{default:(0,o.w5)((function(){return[(0,o.Wm)(A,{modelValue:g.queryKeyword,"onUpdate:modelValue":n[1]||(n[1]=function(e){return g.queryKeyword=e}),placeholder:"分组、项目、database、schema 搜索",style:{width:"100%",border:"none"},onChange:w.onQuery},{prepend:(0,o.w5)((function(){return[(0,o.Wm)(T,{type:"text",loading:g.queryLoading,icon:"Search"},null,8,["loading"])]})),_:1},8,["modelValue","onChange"]),(0,o._)("div",u,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(g.searchSelectHistory,(function(e,n){return(0,o.wg)(),(0,o.j4)(D,{underline:!1,key:n,onClick:function(n){return w.jumpToPath(e.path)},style:{"margin-right":"12px","margin-bottom":"12px"}},{default:(0,o.w5)((function(){return[(0,o.Wm)(L,{closable:"",type:"group"==e.type?"primary":"success",onClose:function(n){return w.onRemoveSelectHistoryItem(e.label)}},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,a.zw)(e.label),1)]})),_:2},1032,["type","onClose"])]})),_:2},1032,["onClick"])})),128))]),g.queryData.projects.length>0||g.queryData.groups.length>0?((0,o.wg)(),(0,o.j4)(C,{key:0})):(0,o.kq)("",!0),(0,o._)("div",i,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(g.queryData.projects,(function(e,n){return(0,o.wg)(),(0,o.iD)("div",{class:"search-item",key:n,onClick:function(n){return w.jumpToProject(e)}},[(0,o._)("span",null,[(0,o.Wm)(L,{type:"success"},{default:(0,o.w5)((function(){return[s]})),_:1}),l,(0,o.Wm)(D,{underline:!1},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,a.zw)(e.groupName)+" / "+(0,a.zw)(e.projectName),1)]})),_:2},1024)]),(0,o._)("span",d,[(0,o.Wm)(N,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(q)]})),_:1})])],8,c)})),128)),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(g.queryData.groups,(function(e,n){return(0,o.wg)(),(0,o.iD)("div",{class:"search-item",key:n,onClick:function(n){return w.jumpToGroup(e)}},[(0,o._)("span",null,[(0,o.Wm)(L,null,{default:(0,o.w5)((function(){return[p]})),_:1}),m,(0,o.Wm)(D,{underline:!1},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,a.zw)(e.name),1)]})),_:2},1024)]),(0,o._)("span",h,[(0,o.Wm)(N,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(q)]})),_:1})])],8,f)})),128))])]})),_:1},8,["modelValue","width"])]})),_:1})}t(57327),t(40561),t(38862);var w=(0,o._)("span",null,"Databasir",-1);function y(e,n,t,r,u,i){var c=(0,o.up)("home-filled"),s=(0,o.up)("el-icon"),l=(0,o.up)("el-menu-item"),d=(0,o.up)("el-sub-menu"),f=(0,o.up)("el-button"),p=(0,o.up)("el-menu");return(0,o.wg)(),(0,o.j4)(p,{router:"",collapse:e.isCollapse,mode:"vertical",class:"left-menu"},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{index:"/"},{title:(0,o.w5)((function(){return[w]})),default:(0,o.w5)((function(){return[(0,o.Wm)(s,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(c)]})),_:1})]})),_:1}),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.routes,(function(n,t){return(0,o.wg)(),(0,o.iD)(o.HY,{key:t},[e.isShowMenu(n)&&n.children.length>0&&n.children.some((function(e){return!e.hidden}))?((0,o.wg)(),(0,o.j4)(d,{key:0,index:n.path},{title:(0,o.w5)((function(){return[(0,o.Wm)(s,null,{default:(0,o.w5)((function(){return[((0,o.wg)(),(0,o.j4)((0,o.LL)(n.icon)))]})),_:2},1024),(0,o._)("span",null,(0,a.zw)(n.meta.nav),1)]})),default:(0,o.w5)((function(){return[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(n.children,(function(e,r){return(0,o.wg)(),(0,o.iD)(o.HY,{key:t+"-"+r},[e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(l,{key:0,index:n.path+"/"+e.path},{title:(0,o.w5)((function(){return[(0,o._)("span",null,(0,a.zw)(e.meta.nav),1)]})),default:(0,o.w5)((function(){return[e.icon?((0,o.wg)(),(0,o.j4)(s,{key:0},{default:(0,o.w5)((function(){return[((0,o.wg)(),(0,o.j4)((0,o.LL)(e.icon)))]})),_:2},1024)):(0,o.kq)("",!0)]})),_:2},1032,["index"]))],64)})),128))]})),_:2},1032,["index"])):e.isShowMenu(n)?((0,o.wg)(),(0,o.j4)(l,{key:1,index:n.path},{title:(0,o.w5)((function(){return[(0,o._)("span",null,(0,a.zw)(n.meta.nav),1)]})),default:(0,o.w5)((function(){return[(0,o.Wm)(s,null,{default:(0,o.w5)((function(){return[((0,o.wg)(),(0,o.j4)((0,o.LL)(n.icon)))]})),_:2},1024)]})),_:2},1032,["index"])):(0,o.kq)("",!0)],64)})),128)),(0,o.Wm)(l,{index:"",onClick:n[0]||(n[0]=function(n){return e.showSearchDialog()})},{default:(0,o.w5)((function(){return[(0,o.Wm)(f,{type:"text",icon:"Search",style:{color:"#303133"}})]})),_:1})]})),_:1},8,["collapse"])}var v=t(2262),b=t(51836),k=t(24239),S=(0,o.aZ)({emits:["on-search"],setup:function(e,n){var t=(0,v.Fl)((function(){return k.Z.state.menu.isCollapse})),o=(0,r.tv)(),a=o.options.routes,u=function(e){if(e.hidden)return!1;if(e.meta.requireAnyRoles&&e.meta.requireAnyRoles.length>0){var n=b.E.hasAnyRoles(e.meta.requireAnyRoles);if(!n)return!1}return!0},i=function(){k.Z.commit("expandMenu")},c=function(){n.emit("on-search")};return{isCollapse:t,isShowMenu:u,expandMenu:i,routes:a,showSearchDialog:c}}}),x=t(83744);const _=(0,x.Z)(S,[["render",y]]);var j=_;function T(e,n,t,r,u,i){var c=(0,o.up)("fold"),s=(0,o.up)("el-icon"),l=(0,o.up)("el-link"),d=(0,o.up)("el-breadcrumb-item"),f=(0,o.up)("el-breadcrumb");return(0,o.wg)(),(0,o.j4)(f,{separator:"/"},{default:(0,o.w5)((function(){return[i.menuIsCollapse?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(d,{key:0},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{onClick:n[0]||(n[0]=function(e){return i.onFoldMenu()}),underline:!1},{default:(0,o.w5)((function(){return[(0,o.Wm)(s,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(c)]})),_:1})]})),_:1})]})),_:1})),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(i.breadcrumbs,(function(e,n){return(0,o.wg)(),(0,o.j4)(d,{key:n,to:e.to},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,a.zw)(e.name),1)]})),_:2},1032,["to"])})),128))]})),_:1})}var A={computed:{breadcrumbs:function(){return"function"===typeof this.$route.meta.breadcrumb?this.$route.meta.breadcrumb(this.$route,this.$store.state):[]},menuIsCollapse:function(){return this.$store.state.menu.isCollapse}},methods:{onFoldMenu:function(){this.$store.commit("foldMenu")}}};const L=(0,x.Z)(A,[["render",T]]);var D=L,C=(0,o.Uk)("个人中心"),q=(0,o.Uk)("注销登陆");function N(e,n,t,r,u,i){var c=(0,o.up)("el-avatar"),s=(0,o.up)("el-dropdown-item"),l=(0,o.up)("el-dropdown-menu"),d=(0,o.up)("el-dropdown");return(0,o.wg)(),(0,o.j4)(d,null,{dropdown:(0,o.w5)((function(){return[(0,o.Wm)(l,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(s,null,{default:(0,o.w5)((function(){return[(0,o.Uk)((0,a.zw)(i.userNickname),1)]})),_:1}),(0,o.Wm)(s,{icon:"user",divided:"",onClick:n[0]||(n[0]=function(e){return i.toProfilePage()})},{default:(0,o.w5)((function(){return[C]})),_:1}),(0,o.Wm)(s,{icon:"back",onClick:n[1]||(n[1]=function(e){return i.onLogout()})},{default:(0,o.w5)((function(){return[q]})),_:1})]})),_:1})]})),default:(0,o.w5)((function(){return[(0,o.Wm)(c,{size:36,src:i.avatarUrl,icon:"avatar"},null,8,["src"])]})),_:1})}var E={computed:{userNickname:function(){return this.$store.state.user.nickname},avatarUrl:function(){return this.$store.state.user.avatar}},methods:{onLogout:function(){b.E.removeUserLoginData(),this.$router.push({path:"/login"})},toProfilePage:function(){this.$router.push({path:"/profile"})}}};const W=(0,x.Z)(E,[["render",N]]);var I=W,O=t(63872),H="/api/v1.0/search",P=function(e){return O.Z.get(H,{params:e})},U=t(98968),R={components:{AppNav:j,Breadcrumb:D,Avatar:I},data:function(){return{showSearchDialog:!1,queryKeyword:"",queryData:{projects:[],groups:[]},queryLoading:!1,searchSelectHistory:[],searchSelectHistoryKey:"globalSearchSelectHistory"}},mounted:function(){this.loadSearchSelectHistory()},methods:{search:function(){this.showSearchDialog=!0},onQuery:function(e){var n=this;this.queryLoading=!0,P({query:e}).then((function(e){e.errCode||(n.queryData=e.data)})).finally((function(){return n.queryLoading=!1}))},jumpToGroup:function(e){this.showSearchDialog=!1;var n="/groups/"+e.id+"?groupName="+e.name,t={label:e.name,path:n,type:"group"},r=this.searchSelectHistory.filter((function(e){return e.label!=t.label}));r.unshift(t),r.splice(15),this.searchSelectHistory=r,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory)),window.location=n},jumpToProject:function(e){this.showSearchDialog=!1;var n="/groups/"+e.groupId+"/projects/"+e.projectId+"/documents?groupName="+e.groupName+"&projectName="+e.projectName,t={label:e.groupName+" / "+e.projectName,path:n,type:"project"},r=this.searchSelectHistory.filter((function(e){return e.label!=t.label}));r.unshift(t),r.splice(15),this.searchSelectHistory=r,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory)),window.location=n},jumpToPath:function(e){window.location=e},loadSearchSelectHistory:function(){var e=this.searchSelectHistoryKey;if(null!=window.localStorage.getItem(e)){var n=JSON.parse(window.localStorage.getItem(e));this.searchSelectHistory=n}},onRemoveSelectHistoryItem:function(e){var n=this.searchSelectHistory.filter((function(n){return n.label!=e}));this.searchSelectHistory=n,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory))},dialogWidth:function(){return(0,U.c)()}}};const Z=(0,x.Z)(R,[["render",g]]);var K=Z;function M(){return{name:"首页",to:{path:"/"}}}function z(){return{name:"项目中心",to:{name:"groupListPage"}}}function B(e){var n="项目组";return e.query.groupName&&(n=e.query.groupName),{name:n,to:{path:"/groups/"+e.params.groupId}}}function Y(e){var n="项目文档";e.query.projectName&&(n=e.query.projectName);var t=e.params.projectId,r=e.params.groupId;return{name:n,to:{path:"/groups/"+r+"/projects/"+t+"/documents",query:{projectName:n}}}}function V(){return{name:"用户列表",to:{path:"/users"}}}function $(){return{name:"个人中心",to:{path:"/profile"}}}function F(){return{name:"邮箱设置",to:{path:"/settings/sysEmail"}}}function J(){return{name:"操作日志",to:{path:"/settings/sysLog"}}}function Q(){return{name:"登录设置",to:{path:"/settings/sysOauth2"}}}function G(){return{name:"数据库扩展",to:{path:"/settings/sysDatabaseType"}}}function X(){return{name:"文档模板",to:{path:"/settings/sysDocumentTemplate"}}}var ee={index:function(){return[M()]},groupList:function(){return[M(),z()]},groupDashboard:function(e,n){return[M(),z(),B(e,n)]},groupProjectDocument:function(e,n){return[M(),z(),B(e,n),Y(e)]},userProfile:function(){return[M(),$()]},userList:function(){return[M(),V()]},sysEmailEdit:function(){return[M(),F()]},sysLog:function(){return[M(),J()]},sysOauth2:function(){return[M(),Q()]},sysDatabaseType:function(){return[M(),G()]},sysDocumentTemplate:function(){return[M(),X()]}},ne=ee,te=[{path:"/login",component:function(){return t.e(139).then(t.bind(t,41139))},hidden:!0,meta:{requireAuth:!1}},{path:"/login/oauth2/:id",component:function(){return t.e(865).then(t.bind(t,68865))},hidden:!0,props:!0,meta:{requireAuth:!1}},{path:"/",hidden:!0,component:K,children:[{path:"",hidden:!0,component:function(){return Promise.all([t.e(480),t.e(314)]).then(t.bind(t,36314))},meta:{breadcrumb:ne.groupList}}]},{path:"/groups",icon:"Collection",component:K,meta:{nav:"项目中心"},children:[{path:"",name:"groupListPage",hidden:!0,component:function(){return Promise.all([t.e(480),t.e(314)]).then(t.bind(t,36314))},meta:{breadcrumb:ne.groupList}},{path:":groupId",hidden:!0,component:function(){return Promise.all([t.e(480),t.e(725)]).then(t.bind(t,40725))},meta:{breadcrumb:ne.groupDashboard}},{path:":groupId/projects/:projectId/documents",hidden:!0,component:function(){return t.e(408).then(t.bind(t,37408))},meta:{breadcrumb:ne.groupProjectDocument}}]},{path:"/users",icon:"List",component:K,meta:{nav:"用户中心",requireAnyRoles:["SYS_OWNER"]},children:[{path:"",hidden:!0,component:function(){return t.e(117).then(t.bind(t,4117))},meta:{breadcrumb:ne.userList}}]},{path:"/profile",icon:"User",component:K,meta:{nav:"个人中心",breadcrumb:ne.userProfile},children:[{path:"",hidden:!0,component:function(){return t.e(469).then(t.bind(t,26469))}}]},{path:"/settings",icon:"Setting",component:K,meta:{nav:"系统中心",requireAnyRoles:["SYS_OWNER"]},children:[{path:"sysEmail",icon:"Notification",component:function(){return t.e(243).then(t.bind(t,51243))},meta:{nav:"邮箱设置",breadcrumb:ne.sysEmailEdit}},{path:"sysLog",icon:"Document",component:function(){return t.e(17).then(t.bind(t,16017))},meta:{nav:"操作日志",breadcrumb:ne.sysLog}},{path:"sysOauth2",icon:"Connection",component:function(){return t.e(834).then(t.bind(t,86834))},meta:{nav:"登陆设置",breadcrumb:ne.sysOauth2}},{path:"sysDatabaseType",icon:"office-building",component:function(){return t.e(918).then(t.bind(t,30918))},meta:{nav:"数据库扩展",breadcrumb:ne.sysDatabaseType}},{path:"sysDocumentTemplate",icon:"document-add",component:function(){return t.e(227).then(t.bind(t,93227))},meta:{nav:"文档模板",breadcrumb:ne.sysDocumentTemplate}},{path:"sysKey",icon:"Key",hidden:"true",component:K,meta:{nav:"系统秘钥",breadcrumb:ne.sysKeyEdit}}]}],re=(0,r.p7)({history:(0,r.PO)(),routes:te});re.beforeEach((function(e,n,t){0==e.meta.requireAuth?"/login"==e.path&&b.r.hasAccessToken()?t(n):t():b.r.hasAccessToken()?t():t({path:"/login"})})),re.beforeEach((function(e,n,t){!e.query.groupName&&n.query.groupName&&(e.query.groupName=n.query.groupName),!e.query.projectName&&n.query.projectName&&(e.query.projectName=n.query.projectName),t()}));var oe=re},24239:function(e,n,t){var r=t(88637),o=t(51836),a=(0,r.MT)({state:function(){var e={user:{nickname:null,usernmae:null,email:null,avatar:null},groupListActiveTab:null,menu:{isCollapse:!0}},n=o.E.loadUserLoginData();return n&&(e.user.nickname=n.nickname,e.user.usernmae=n.usernmae,e.user.email=n.email,e.user.avatar=n.avatar),e},mutations:{userUpdate:function(e,n){n.nickname&&(e.user.nickname=n.nickname),n.usernmae&&(e.user.usernmae=n.usernmae),n.email&&(e.user.email=n.email),n.avatar&&(e.user.avatar=n.avatar)},foldMenu:function(e){e.menu.isCollapse=!0},expandMenu:function(e){e.menu.isCollapse=!1},switchGroupListActiveTab:function(e,n){n&&(e.groupListActiveTab=n)}}});n["Z"]=a},98968:function(e,n,t){t.d(n,{c:function(){return o}});var r=function(e){var n=window.innerWidth;return n>=1920?e.xl?e.xl:null:n>=1200?e.lg?e.lg:e.xl?e.xl:null:n>=992?e.md?e.md:e.lg?e.lg:e.xl?e.xl:null:n>=768?e.sm?e.sm:e.md?e.md:e.lg?e.lg:e.xl?e.xl:null:e.xs?e.xs:e.sm?e.sm:e.md?e.md:e.lg?e.lg:e.xl?e.xl:null},o=function(){return r({xl:"36%",lg:"42%",md:"60%",sm:"80%",xs:"90%"})}},51836:function(e,n,t){t.d(n,{r:function(){return u},E:function(){return i}});t(38862),t(41539),t(21249);var r="accessToken",o="accessTokenExpireAt",a="userLoginData",u={hasAccessToken:function(){var e=this.loadAccessToken();return e},hasValidAccessToken:function(){var e=this.loadAccessToken(),n=window.localStorage.getItem(o);return e&&n?n>(new Date).getTime()-1e4:(console.log("warn: not found accessToken and expireAt key"),!1)},saveAccessToken:function(e,n){window.localStorage.setItem(r,e),window.localStorage.setItem(o,n)},loadAccessToken:function(){var e=window.localStorage.getItem(r);return e||null}},i={saveUserLoginData:function(e){window.localStorage.setItem(r,e.accessToken),window.localStorage.setItem(o,e.accessTokenExpireAt),window.localStorage.setItem(a,JSON.stringify(e))},removeUserLoginData:function(){window.localStorage.removeItem(a),window.localStorage.removeItem(r),window.localStorage.removeItem(o)},loadUserLoginData:function(){if(!window.localStorage.getItem(a))return null;var e=window.localStorage.getItem(a);return JSON.parse(e)},hasAnyRoles:function(e){var n=window.localStorage.getItem(a);if(null==n)return!1;var t=JSON.parse(n);return t.roles.map((function(e){return e.groupId?e.role+"?groupId="+e.groupId:e.role})).some((function(n){return e.some((function(e){return e==n}))}))},getRefreshToken:function(){var e=window.localStorage.getItem(a);if(null==e)return null;var n=JSON.parse(e);return n.refreshToken}}},63872:function(e,n,t){var r=t(48534),o=(t(35666),t(41539),t(54747),t(23157),t(74916),t(15306),t(9669)),a=t.n(o),u=t(20610),i=t(7843),c=t(51836),s=t(40152),l={NODE_ENV:"production",BASE_URL:"/"}.VUE_APP_API_URL;a().defaults.baseURL=l,a().defaults.timeout=15e3,a().defaults.withCredentials=!1,a().defaults.headers.post["Content-Type"]="application/json",a().defaults.headers.post["Access-Control-Allow-Origin-Type"]="*";var d=!1;function f(){d=!0}function p(){d=!1}var m=[];function h(e){m.push(e)}function g(e){m.forEach((function(n){n(e)})),m=[]}function w(e){return y.apply(this,arguments)}function y(){return y=(0,r.Z)(regeneratorRuntime.mark((function e(n){var t;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t=c.E.getRefreshToken(),t||k(),!d){e.next=4;break}return e.abrupt("return",new Promise((function(e){h((function(){n&&(n.headers.Authorization="Bearer "+c.r.loadAccessToken()),e(n)}))})));case 4:return f(),e.next=7,(0,s.jb)(t).then((function(e){e.errCode?k():(c.r.saveAccessToken(e.data.accessToken,e.data.accessTokenExpireAt),p())})).finally((function(){return p()}));case 7:return e.abrupt("return",e.sent);case 8:case"end":return e.stop()}}),e)}))),y.apply(this,arguments)}function v(e){return b.apply(this,arguments)}function b(){return b=(0,r.Z)(regeneratorRuntime.mark((function e(n){var t;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,a()({method:n.method,data:n.data,url:n.url,baseURL:n.baseURL,headers:{Authorization:"Bearer "+c.r.loadAccessToken()}});case 3:return t=e.sent,g(n),e.abrupt("return",t);case 8:e.prev=8,e.t0=e["catch"](0),console.log(e.t0),S("网络异常,请稍后再试");case 12:case"end":return e.stop()}}),e,null,[[0,8]])}))),b.apply(this,arguments)}function k(){c.E.removeUserLoginData(),i.Z.replace("/login")}function S(e){(0,u.z8)({message:e,type:"error",duration:5e3,grouping:!0})}a().interceptors.request.use(function(){var e=(0,r.Z)(regeneratorRuntime.mark((function e(n){var t;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if("/access_tokens"!=n.url&&!n.url.startsWith("/oauth2")&&"/login"!=n.url){e.next=2;break}return e.abrupt("return",n);case 2:if(!c.r.hasValidAccessToken()){e.next=5;break}return n.headers.Authorization="Bearer "+c.r.loadAccessToken(),e.abrupt("return",n);case 5:if(!d){e.next=8;break}return t=new Promise((function(e){h((function(){n&&(n.headers.Authorization="Bearer "+c.r.loadAccessToken()),e(n)}))})),e.abrupt("return",t);case 8:return e.abrupt("return",n);case 9:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),(function(e){return p(),Promise.reject(e)})),a().interceptors.response.use((function(e){var n=e.data;return n.errCode&&S(n.errMessage),n}),(function(e){if(e.response)if(401==e.response.status){if("X_0002"==e.response.data.errCode)c.E.removeUserLoginData(),S("登陆状态失效,请重新登陆"),k();else if("X_0004"==e.response.data.errCode)return w(e.config).then((function(){return v(e.config)}))}else 403==e.response.status?S("无执行该操作的权限"):S(e.message);else console.log(e),S("网络异常,请稍后再试");return Promise.reject(e)})),n["Z"]=a()},36658:function(e,n,t){e.exports=t.p+"img/MariaDB.9e6854cc.svg"},92357:function(e,n,t){e.exports=t.p+"img/MySQL.c8f47618.svg"},22260:function(e,n,t){e.exports=t.p+"img/Oracle.c9ed26e0.svg"},43609:function(e,n,t){e.exports=t.p+"img/PostgreSQL.6e3d3a5e.svg"},35641:function(e,n,t){e.exports=t.p+"img/Sqlserver.deff7c4c.svg"}},n={};function t(r){var o=n[r];if(void 0!==o)return o.exports;var a=n[r]={exports:{}};return e[r].call(a.exports,a,a.exports,t),a.exports}t.m=e,function(){var e=[];t.O=function(n,r,o,a){if(!r){var u=1/0;for(l=0;l<e.length;l++){r=e[l][0],o=e[l][1],a=e[l][2];for(var i=!0,c=0;c<r.length;c++)(!1&a||u>=a)&&Object.keys(t.O).every((function(e){return t.O[e](r[c])}))?r.splice(c--,1):(i=!1,a<u&&(u=a));if(i){e.splice(l--,1);var s=o();void 0!==s&&(n=s)}}return n}a=a||0;for(var l=e.length;l>0&&e[l-1][2]>a;l--)e[l]=e[l-1];e[l]=[r,o,a]}}(),function(){t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,{a:n}),n}}(),function(){t.d=function(e,n){for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce((function(n,r){return t.f[r](e,n),n}),[]))}}(),function(){t.u=function(e){return"js/"+e+"-legacy."+{17:"5bee094a",117:"623d8834",139:"2e4437df",227:"ed1b0a5b",243:"0e928586",314:"e55474ea",408:"ddfcf48f",469:"9029bf4c",480:"e63a01f3",725:"47994393",834:"162d5bb2",865:"5ba4977e",918:"d3d8cbff"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{139:"a7dec339",227:"90d5c1b0",314:"6b48a93a",408:"1969b1d0",725:"82a2f213",834:"f2905e33",865:"7df1e56e",918:"b113d9de"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)}}(),function(){var e={},n="databasir:";t.l=function(r,o,a,u){if(e[r])e[r].push(o);else{var i,c;if(void 0!==a)for(var s=document.getElementsByTagName("script"),l=0;l<s.length;l++){var d=s[l];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==n+a){i=d;break}}i||(c=!0,i=document.createElement("script"),i.charset="utf-8",i.timeout=120,t.nc&&i.setAttribute("nonce",t.nc),i.setAttribute("data-webpack",n+a),i.src=r),e[r]=[o];var f=function(n,t){i.onerror=i.onload=null,clearTimeout(p);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((function(e){return e(t)})),n)return n(t)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),c&&document.head.appendChild(i)}}}(),function(){t.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){t.p="/"}(),function(){var e=function(e,n,t,r){var o=document.createElement("link");o.rel="stylesheet",o.type="text/css";var a=function(a){if(o.onerror=o.onload=null,"load"===a.type)t();else{var u=a&&("load"===a.type?"missing":a.type),i=a&&a.target&&a.target.href||n,c=new Error("Loading CSS chunk "+e+" failed.\n("+i+")");c.code="CSS_CHUNK_LOAD_FAILED",c.type=u,c.request=i,o.parentNode.removeChild(o),r(c)}};return o.onerror=o.onload=a,o.href=n,document.head.appendChild(o),o},n=function(e,n){for(var t=document.getElementsByTagName("link"),r=0;r<t.length;r++){var o=t[r],a=o.getAttribute("data-href")||o.getAttribute("href");if("stylesheet"===o.rel&&(a===e||a===n))return o}var u=document.getElementsByTagName("style");for(r=0;r<u.length;r++){o=u[r],a=o.getAttribute("data-href");if(a===e||a===n)return o}},r=function(r){return new Promise((function(o,a){var u=t.miniCssF(r),i=t.p+u;if(n(u,i))return o();e(r,i,o,a)}))},o={143:0};t.f.miniCss=function(e,n){var t={139:1,227:1,314:1,408:1,725:1,834:1,865:1,918:1};o[e]?n.push(o[e]):0!==o[e]&&t[e]&&n.push(o[e]=r(e).then((function(){o[e]=0}),(function(n){throw delete o[e],n})))}}(),function(){var e={143:0};t.f.j=function(n,r){var o=t.o(e,n)?e[n]:void 0;if(0!==o)if(o)r.push(o[2]);else{var a=new Promise((function(t,r){o=e[n]=[t,r]}));r.push(o[2]=a);var u=t.p+t.u(n),i=new Error,c=function(r){if(t.o(e,n)&&(o=e[n],0!==o&&(e[n]=void 0),o)){var a=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;i.message="Loading chunk "+n+" failed.\n("+a+": "+u+")",i.name="ChunkLoadError",i.type=a,i.request=u,o[1](i)}};t.l(u,c,"chunk-"+n,n)}},t.O.j=function(n){return 0===e[n]};var n=function(n,r){var o,a,u=r[0],i=r[1],c=r[2],s=0;if(u.some((function(n){return 0!==e[n]}))){for(o in i)t.o(i,o)&&(t.m[o]=i[o]);if(c)var l=c(t)}for(n&&n(r);s<u.length;s++)a=u[s],t.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return t.O(l)},r=self["webpackChunkdatabasir"]=self["webpackChunkdatabasir"]||[];r.forEach(n.bind(null,0)),r.push=n.bind(null,r.push.bind(r))}();var r=t.O(void 0,[998],(function(){return t(21381)}));r=t.O(r)})(); +//# sourceMappingURL=app-legacy.d2b56939.js.map \ No newline at end of file diff --git a/api/src/main/resources/static/js/app-legacy.d2b56939.js.map b/api/src/main/resources/static/js/app-legacy.d2b56939.js.map new file mode 100644 index 0000000..17d1c1c --- /dev/null +++ b/api/src/main/resources/static/js/app-legacy.d2b56939.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/app-legacy.d2b56939.js","mappings":"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","sources":["webpack://databasir/./src/api/Login.js","webpack://databasir/./src/App.vue","webpack://databasir/./src/App.vue?7ccd","webpack://databasir/./src/components/DatabaseIcon.vue","webpack://databasir/./src/components/DatabaseIcon.vue?d57f","webpack://databasir/./src/main.js","webpack://databasir/./src/layouts/Layout.vue","webpack://databasir/./src/components/AppNav.vue","webpack://databasir/./src/components/AppNav.vue?b6ff","webpack://databasir/./src/components/Breadcrumb.vue","webpack://databasir/./src/components/Breadcrumb.vue?ef20","webpack://databasir/./src/components/Avatar.vue","webpack://databasir/./src/components/Avatar.vue?e66a","webpack://databasir/./src/api/Search.js","webpack://databasir/./src/layouts/Layout.vue?7cb6","webpack://databasir/./src/router/breadcurmb.js","webpack://databasir/./src/router/index.js","webpack://databasir/./src/store/index.js","webpack://databasir/./src/utils/DialogWidthCalculator.js","webpack://databasir/./src/utils/auth.js","webpack://databasir/./src/utils/fetch.js","webpack://databasir/webpack/bootstrap","webpack://databasir/webpack/runtime/chunk loaded","webpack://databasir/webpack/runtime/compat get default export","webpack://databasir/webpack/runtime/define property getters","webpack://databasir/webpack/runtime/ensure chunk","webpack://databasir/webpack/runtime/get javascript chunk filename","webpack://databasir/webpack/runtime/get mini-css chunk filename","webpack://databasir/webpack/runtime/global","webpack://databasir/webpack/runtime/hasOwnProperty shorthand","webpack://databasir/webpack/runtime/load script","webpack://databasir/webpack/runtime/make namespace object","webpack://databasir/webpack/runtime/publicPath","webpack://databasir/webpack/runtime/css loading","webpack://databasir/webpack/runtime/jsonp chunk loading","webpack://databasir/webpack/startup"],"sourcesContent":["import axios from '@/utils/fetch';\r\n\r\nexport const login = (form) => {\r\n const data = new FormData();\r\n data.append('username', form.username);\r\n data.append('password', form.password);\r\n return axios.post('/login', data)\r\n}\r\n\r\nexport const oauth2Login = (registrationId, parameters) => {\r\n return axios.get('/oauth2/login/'+registrationId, {\r\n params: parameters\r\n })\r\n}\r\n\r\nexport const logout = () => {\r\n return axios.get('/logout')\r\n}\r\n\r\nexport const loginInfo = () => {\r\n return axios.get('/api/v1.0/login_info')\r\n}\r\n\r\nexport const refreshAccessToken = (refreshToken) => {\r\n return axios.post('/access_tokens', {\r\n refreshToken: refreshToken\r\n })\r\n}","<template>\r\n <router-view/>\r\n</template>\r\n","import { render } from \"./App.vue?vue&type=template&id=2b08e877\"\nconst script = {}\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <template v-if=\"databaseType.toLowerCase() == 'mysql'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/MySQL.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'postgresql'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/PostgreSQL.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'oracle'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/Oracle.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'mariadb'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/MariaDB.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'sqlserver'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/Sqlserver.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"icon\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"icon\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else>\r\n {{ databaseType }}\r\n </template>\r\n</template>\r\n\r\n\r\n<script>\r\n\r\nexport default {\r\n props: {\r\n databaseType: String,\r\n icon: String,\r\n },\r\n}\r\n</script>\r\n","import { render } from \"./DatabaseIcon.vue?vue&type=template&id=14de696c\"\nimport script from \"./DatabaseIcon.vue?vue&type=script&lang=js\"\nexport * from \"./DatabaseIcon.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport ElementPlus from 'element-plus'\r\nimport * as Icons from '@element-plus/icons'\r\n\r\nimport 'highlight.js/styles/stackoverflow-light.css';\r\nimport hljs from 'highlight.js/lib/core';\r\nimport javascript from 'highlight.js/lib/languages/javascript';\r\nimport hljsVuePlugin from \"@highlightjs/vue-plugin\";\r\n\r\nimport 'element-plus/dist/index.css'\r\nimport router from './router'\r\nimport store from './store'\r\nimport App from './App.vue'\r\nimport { user } from './utils/auth'\r\nimport DatabaseIcon from './components/DatabaseIcon.vue'\r\nimport { VueClipboard } from '@soerenmartius/vue3-clipboard'\r\n\r\n// element icon\r\nconst app = createApp(App)\r\nObject.keys(Icons).forEach(key => {\r\n app.component(key, Icons[key])\r\n})\r\napp.component('database-icon', DatabaseIcon)\r\n\r\n// permission directive\r\napp.directive('require-roles', {\r\n mounted(el, binding) {\r\n const roles = binding.value\r\n if (!user.hasAnyRoles(roles)) {\r\n el.parentNode && el.parentNode.removeChild(el)\r\n }\r\n },\r\n})\r\n\r\n// custom select directive\r\napp.directive(\"select-more\", {\r\n updated(el, binding) {\r\n const child = el.querySelector('.select-trigger');\r\n const id = child.getAttribute('aria-describedby');\r\n const poper = document.getElementById(id);\r\n if (poper == null) {\r\n return;\r\n }\r\n const selector = poper.parentElement.querySelector('.el-select-dropdown .el-scrollbar .el-select-dropdown__wrap');\r\n if (selector == null) {\r\n console.log('load select component failed')\r\n return;\r\n }\r\n selector.addEventListener('scroll', function () {\r\n const condition = this.scrollHeight - this.scrollTop - 1 <= this.clientHeight;\r\n if (condition) {\r\n binding.value();\r\n }\r\n });\r\n },\r\n});\r\n\r\n\r\nhljs.registerLanguage('javascript', javascript);\r\napp.use(hljsVuePlugin)\r\napp.use(store)\r\napp.use(ElementPlus)\r\napp.use(router)\r\napp.use(VueClipboard)\r\napp.mount('#app')\r\n\r\n","<template>\r\n <el-container class=\"databasir\">\r\n <el-aside>\r\n <AppNav class=\"databasir-nav\" @on-search=\"search()\"></AppNav>\r\n </el-aside>\r\n <el-header class=\"databasir-main-header\">\r\n <Breadcrumb></Breadcrumb>\r\n <Avatar></Avatar>\r\n </el-header>\r\n <el-main class=\"databasir-main\">\r\n <el-container>\r\n <el-main class=\"databasir-main-content\">\r\n <router-view></router-view>\r\n </el-main>\r\n </el-container>\r\n </el-main>\r\n <el-dialog\r\n v-model=\"showSearchDialog\"\r\n title=\"搜索\"\r\n :width=\"dialogWidth()\"\r\n >\r\n <el-input\r\n v-model=\"queryKeyword\"\r\n placeholder=\"分组、项目、database、schema 搜索\"\r\n style=\"width:100%;border:none;\"\r\n @change=\"onQuery\"\r\n >\r\n <template #prepend>\r\n <el-button type=\"text\" :loading=\"queryLoading\" icon=\"Search\"></el-button>\r\n </template>\r\n </el-input>\r\n <div style=\"margin-top:16px;\">\r\n <el-link :underline=\"false\" v-for=\"(item, index) in searchSelectHistory\" :key=\"index\" @click=\"jumpToPath(item.path)\" style=\"margin-right: 12px;margin-bottom:12px;\">\r\n <el-tag closable :type=\"item.type == 'group'?'primary':'success'\" @close=\"onRemoveSelectHistoryItem(item.label)\">\r\n {{item.label}}\r\n </el-tag>\r\n </el-link>\r\n </div>\r\n <el-divider v-if=\"queryData.projects.length > 0 || queryData.groups.length > 0\"></el-divider>\r\n \r\n <div class=\"search-container\">\r\n <div class=\"search-item\" v-for=\"(project,index) in queryData.projects\" :key=\"index\" @click=\"jumpToProject(project)\">\r\n <span>\r\n <el-tag type=\"success\">project</el-tag> <el-link :underline=\"false\"> {{project.groupName}} / {{project.projectName}}</el-link>\r\n </span>\r\n <span class=\"jump\">\r\n <el-icon><Right /></el-icon>\r\n </span>\r\n </div>\r\n <div class=\"search-item\" v-for=\"(group,index) in queryData.groups\" :key=\"index\" @click=\"jumpToGroup(group)\">\r\n <span>\r\n <el-tag>group</el-tag> <el-link :underline=\"false\"> {{group.name}}</el-link>\r\n </span>\r\n <span class=\"jump\">\r\n <el-icon><Right /></el-icon>\r\n </span>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n </el-container>\r\n</template>\r\n\r\n<style>\r\n.search-item {\r\n padding: 10px;\r\n width: 99%;\r\n margin-bottom: 12px;\r\n margin-right:12px;\r\n display: flex;\r\n justify-content: space-between;\r\n border-radius: 8px;\r\n}\r\n.search-item:hover {\r\n background-color: #F0F2F5;\r\n}\r\n.search-item .jump {\r\n margin-right: 8px;\r\n}\r\n\r\n.search-container {\r\n max-height: 420px;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n}\r\n\r\n.databasir-nav {\r\n position: fixed;\r\n transform: scale(1, 1);\r\n left: 0;\r\n bottom: 0;\r\n top: 0;\r\n}\r\n\r\n.databasir-main-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n position: fixed;\r\n transform: scale(1, 1);\r\n top: 0px;\r\n right: 0px;\r\n left: 50px;\r\n padding: 30px;\r\n margin-left: 33px;\r\n background: #FFF;\r\n z-index: 100;\r\n border-color: #EEE;\r\n border-width: 0px 0px 1px 0px;\r\n border-style: solid;\r\n}\r\n\r\n.databasir {\r\n display: block;\r\n}\r\n\r\n.databasir-main {\r\n position: relative;\r\n margin-left: 60px;\r\n margin-top: 80px;\r\n --el-main-padding: 0px 20px 20px 20px;\r\n}\r\n\r\n.databasir-main-expand {\r\n margin-left: 50px;\r\n}\r\n\r\n.databasir-main-content {\r\n max-width: 95%;\r\n --el-main-padding: 0px 20px 20px 20px;\r\n}\r\n\r\n.h2 {\r\n font-size: 24px;\r\n color: #606266;\r\n font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',\r\n 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;\r\n margin-top: 13px;\r\n margin-bottom: 13px;\r\n}\r\n.h3 {\r\n font-size: 20px;\r\n color: #909399;\r\n font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',\r\n 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;\r\n margin-top: 18px;\r\n margin-bottom: 18px;\r\n}\r\n\r\n</style>\r\n<script>\r\nimport AppNav from '../components/AppNav.vue'\r\nimport Breadcrumb from '../components/Breadcrumb.vue'\r\nimport Avatar from '../components/Avatar.vue'\r\nimport { query } from '@/api/Search.js'\r\nimport { dialogPercentWidth } from \"@/utils/DialogWidthCalculator\"\r\n\r\n\r\nexport default {\r\n components: { AppNav, Breadcrumb, Avatar },\r\n data() {\r\n return {\r\n showSearchDialog: false,\r\n queryKeyword: '',\r\n queryData: {\r\n projects: [],\r\n groups: []\r\n },\r\n queryLoading: false,\r\n searchSelectHistory: [],\r\n searchSelectHistoryKey: 'globalSearchSelectHistory'\r\n }\r\n },\r\n mounted() {\r\n this.loadSearchSelectHistory()\r\n },\r\n methods: {\r\n search() {\r\n this.showSearchDialog = true\r\n },\r\n onQuery(val) {\r\n this.queryLoading = true;\r\n query({ query: val })\r\n .then(resp => {\r\n if (!resp.errCode) {\r\n this.queryData = resp.data\r\n }\r\n }).finally(() => this.queryLoading = false)\r\n },\r\n jumpToGroup(group) {\r\n this.showSearchDialog = false\r\n const path = '/groups/'+group.id+\"?groupName=\"+group.name;\r\n const select = {\r\n label: group.name,\r\n path: path,\r\n type: 'group'\r\n }\r\n const history = this.searchSelectHistory.filter(item => item.label != select.label)\r\n history.unshift(select)\r\n history.splice(15)\r\n this.searchSelectHistory = history\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n window.location=path\r\n },\r\n jumpToProject(project) {\r\n this.showSearchDialog = false\r\n const path = '/groups/'+project.groupId+'/projects/'+project.projectId+'/documents?groupName='+project.groupName+\"&projectName=\"+project.projectName\r\n \r\n const select = {\r\n label: project.groupName+ ' / '+project.projectName,\r\n path: path,\r\n type: 'project'\r\n }\r\n const history = this.searchSelectHistory.filter(item => item.label != select.label)\r\n history.unshift(select)\r\n history.splice(15)\r\n this.searchSelectHistory = history\r\n\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n window.location=path\r\n },\r\n jumpToPath(path) {\r\n window.location=path\r\n },\r\n loadSearchSelectHistory() {\r\n const key = this.searchSelectHistoryKey\r\n if (window.localStorage.getItem(key) != null) {\r\n const obj = JSON.parse(window.localStorage.getItem(key));\r\n this.searchSelectHistory = obj\r\n }\r\n },\r\n onRemoveSelectHistoryItem(label) {\r\n const history = this.searchSelectHistory.filter(item => item.label != label)\r\n this.searchSelectHistory = history\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n },\r\n dialogWidth() {\r\n return dialogPercentWidth()\r\n }\r\n }\r\n}\r\n\r\n</script>","<template>\r\n <el-menu\r\n router\r\n :collapse=\"isCollapse\"\r\n mode=\"vertical\"\r\n class=\"left-menu\">\r\n <el-menu-item index=\"/\">\r\n <el-icon><home-filled /></el-icon>\r\n <template #title>\r\n <span>Databasir</span>\r\n </template>\r\n </el-menu-item>\r\n <template v-for=\"(menu, index) in routes\" :key=\"index\" >\r\n <el-sub-menu v-if=\"isShowMenu(menu) && menu.children.length > 0 && menu.children.some(ele => !ele.hidden)\" :index=\"menu.path\">\r\n <template #title> \r\n <el-icon>\r\n <component :is=\"menu.icon\" />\r\n </el-icon>\r\n <span>{{ menu.meta.nav }}</span>\r\n </template>\r\n <template :key=\"index + '-' + childIndex\" v-for=\"(child, childIndex) in menu.children\">\r\n <el-menu-item v-if=\"!child.hidden\" :index=\"menu.path+'/'+child.path\">\r\n <el-icon v-if=\"child.icon\">\r\n <component :is=\"child.icon\" />\r\n </el-icon>\r\n <template #title>\r\n <span>{{ child.meta.nav }}</span>\r\n </template>\r\n </el-menu-item>\r\n </template>\r\n </el-sub-menu>\r\n <el-menu-item v-else-if=\"isShowMenu(menu)\" :index=\"menu.path\">\r\n <el-icon>\r\n <component :is=\"menu.icon\" />\r\n </el-icon>\r\n <template #title>\r\n <span>{{ menu.meta.nav }}</span>\r\n </template> \r\n </el-menu-item>\r\n \r\n </template>\r\n <el-menu-item index=\"\" @click=\"showSearchDialog()\">\r\n <el-button type=\"text\" icon=\"Search\" style=\"color: #303133;\"></el-button>\r\n </el-menu-item>\r\n </el-menu>\r\n \r\n</template>\r\n<style>\r\n.left-menu:not(.el-menu--collapse) {\r\n height: 100vh;\r\n}\r\n</style>\r\n<script>\r\nimport { useRouter } from 'vue-router'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { user } from '../utils/auth'\r\nimport store from '../store/index'\r\n\r\nexport default defineComponent({\r\n emits: ['on-search'],\r\n setup(props, context) {\r\n const isCollapse = computed(() => store.state.menu.isCollapse)\r\n const router = useRouter()\r\n const routes = router.options.routes\r\n\r\n const isShowMenu = (menu) => {\r\n if (menu.hidden) {\r\n return false\r\n }\r\n if (menu.meta.requireAnyRoles && menu.meta.requireAnyRoles.length > 0) {\r\n const hasAnyRoles = user.hasAnyRoles(menu.meta.requireAnyRoles)\r\n if (!hasAnyRoles) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n\r\n const expandMenu = () => {\r\n store.commit('expandMenu')\r\n }\r\n\r\n const showSearchDialog = () => {\r\n context.emit('on-search')\r\n }\r\n\r\n return {\r\n isCollapse,\r\n isShowMenu,\r\n expandMenu,\r\n routes,\r\n showSearchDialog,\r\n }\r\n }\r\n})\r\n</script>","import { render } from \"./AppNav.vue?vue&type=template&id=0c349a0c\"\nimport script from \"./AppNav.vue?vue&type=script&lang=js\"\nexport * from \"./AppNav.vue?vue&type=script&lang=js\"\n\nimport \"./AppNav.vue?vue&type=style&index=0&id=0c349a0c&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <el-breadcrumb separator=\"/\" >\r\n <el-breadcrumb-item v-if=\"!menuIsCollapse\">\r\n <el-link @click=\"onFoldMenu()\" :underline=\"false\">\r\n <el-icon><fold /></el-icon>\r\n </el-link>\r\n </el-breadcrumb-item>\r\n <el-breadcrumb-item v-for=\"(item, index) in breadcrumbs\" :key=\"index\" :to=\"item.to\">{{ item.name }}</el-breadcrumb-item>\r\n </el-breadcrumb>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default{\r\n computed: {\r\n breadcrumbs: function() {\r\n if (typeof this.$route.meta.breadcrumb === 'function') {\r\n return this.$route.meta.breadcrumb(this.$route, this.$store.state)\r\n } else {\r\n return []\r\n }\r\n },\r\n menuIsCollapse() {\r\n return this.$store.state.menu.isCollapse\r\n }\r\n },\r\n methods: {\r\n onFoldMenu() {\r\n this.$store.commit('foldMenu')\r\n }\r\n }\r\n}\r\n</script>","import { render } from \"./Breadcrumb.vue?vue&type=template&id=055586aa\"\nimport script from \"./Breadcrumb.vue?vue&type=script&lang=js\"\nexport * from \"./Breadcrumb.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <el-dropdown>\r\n <el-avatar :size=\"36\" :src=\"avatarUrl\" icon=\"avatar\"></el-avatar>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item>{{ userNickname }}</el-dropdown-item>\r\n\r\n <el-dropdown-item icon=\"user\" divided @click=\"toProfilePage()\">个人中心</el-dropdown-item>\r\n <el-dropdown-item icon=\"back\" @click=\"onLogout()\">注销登陆</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n</template>\r\n\r\n<script>\r\nimport { user } from '../utils/auth'\r\n\r\nexport default {\r\n computed: {\r\n userNickname() {\r\n return this.$store.state.user.nickname \r\n },\r\n avatarUrl() {\r\n return this.$store.state.user.avatar \r\n }\r\n },\r\n methods: {\r\n onLogout(){\r\n user.removeUserLoginData()\r\n this.$router.push({path: '/login'})\r\n },\r\n toProfilePage() {\r\n this.$router.push({ path: '/profile'})\r\n }\r\n }\r\n}\r\n</script>\r\n","import { render } from \"./Avatar.vue?vue&type=template&id=34a219c2\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import axios from '@/utils/fetch';\r\n\r\nconst base = \"/api/v1.0/search\"\r\n\r\nexport const query = (keyword) => {\r\n return axios.get(base, {\r\n params: keyword\r\n })\r\n}","import { render } from \"./Layout.vue?vue&type=template&id=68ce833b\"\nimport script from \"./Layout.vue?vue&type=script&lang=js\"\nexport * from \"./Layout.vue?vue&type=script&lang=js\"\n\nimport \"./Layout.vue?vue&type=style&index=0&id=68ce833b&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","function index() {\r\n return {\r\n name:'首页',\r\n to: {\r\n path: '/'\r\n }\r\n }\r\n}\r\n\r\nfunction groupList() {\r\n return {\r\n name:'项目中心',\r\n to: {\r\n name: 'groupListPage'\r\n } \r\n }\r\n}\r\n\r\nfunction groupDashboard(route) {\r\n var groupName = '项目组'\r\n if (route.query.groupName) {\r\n groupName = route.query.groupName\r\n }\r\n return {\r\n name: groupName,\r\n to: {\r\n path: '/groups/'+route.params.groupId\r\n } \r\n }\r\n}\r\n\r\nfunction groupProjectDocument(route) {\r\n var name = '项目文档'\r\n if (route.query.projectName) {\r\n name = route.query.projectName\r\n }\r\n var projectId = route.params.projectId\r\n var groupId = route.params.groupId\r\n return {\r\n name: name,\r\n to: {\r\n path: '/groups/' + groupId + '/projects/' + projectId + '/documents',\r\n query: {\r\n projectName: name\r\n }\r\n } \r\n }\r\n}\r\n\r\nfunction userList() {\r\n return {\r\n name:'用户列表',\r\n to: {\r\n path: '/users'\r\n } \r\n }\r\n}\r\n\r\n\r\nfunction userProfile() {\r\n return {\r\n name:'个人中心',\r\n to: {\r\n path: '/profile'\r\n } \r\n }\r\n}\r\n\r\nfunction sysEmailEdit() {\r\n return {\r\n name:'邮箱设置',\r\n to: {\r\n path: '/settings/sysEmail'\r\n } \r\n }\r\n}\r\n\r\nfunction sysLog() {\r\n return {\r\n name:'操作日志',\r\n to: {\r\n path: '/settings/sysLog'\r\n } \r\n }\r\n}\r\n\r\nfunction sysOauth2() {\r\n return {\r\n name:'登录设置',\r\n to: {\r\n path: '/settings/sysOauth2'\r\n } \r\n }\r\n}\r\n\r\nfunction sysDatabaseType() {\r\n return {\r\n name:'数据库扩展',\r\n to: {\r\n path: '/settings/sysDatabaseType'\r\n } \r\n }\r\n}\r\n\r\nfunction sysDocumentTemplate() {\r\n return {\r\n name:'文档模板',\r\n to: {\r\n path: '/settings/sysDocumentTemplate'\r\n } \r\n }\r\n}\r\n\r\n\r\nconst breadcurmbMap = {\r\n index: () => [index() ],\r\n groupList: () => [index(), groupList()],\r\n groupDashboard: (route, state) => [index(), groupList(), groupDashboard(route, state)],\r\n groupProjectDocument: (route, state) => [index(), groupList(), groupDashboard(route, state), groupProjectDocument(route)],\r\n userProfile: () => [index(), userProfile()],\r\n userList: () => [index(), userList()],\r\n sysEmailEdit: () => [index(), sysEmailEdit()],\r\n sysLog: () => [index(), sysLog()],\r\n sysOauth2: () => [index(), sysOauth2()],\r\n sysDatabaseType: () => [index(), sysDatabaseType()],\r\n sysDocumentTemplate: () => [index(), sysDocumentTemplate()],\r\n}\r\n\r\nexport default breadcurmbMap","import { createRouter, createWebHistory } from 'vue-router';\r\nimport Layout from \"../layouts/Layout.vue\"\r\nimport breadcurmbMap from './breadcurmb'\r\nimport { token } from '../utils/auth';\r\n\r\nconst routes = [\r\n {\r\n path: '/login',\r\n component: () => import('@/views/Login.vue'),\r\n hidden: true,\r\n meta: {\r\n requireAuth: false\r\n }\r\n },\r\n {\r\n path: '/login/oauth2/:id',\r\n component: () => import('@/views/OAuth2Login.vue'),\r\n hidden: true,\r\n props: true,\r\n meta: {\r\n requireAuth: false\r\n }\r\n },\r\n {\r\n path: '/',\r\n hidden: true,\r\n component: Layout,\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/GroupList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupList\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/groups',\r\n icon: 'Collection',\r\n component: Layout,\r\n meta: {\r\n nav: '项目中心',\r\n },\r\n children: [\r\n {\r\n path: '',\r\n name: 'groupListPage',\r\n hidden: true,\r\n component: () => import('@/views/GroupList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupList\r\n }\r\n },\r\n {\r\n path: ':groupId',\r\n hidden: true,\r\n component: () => import('@/views/GroupDashboard.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupDashboard\r\n }\r\n },\r\n {\r\n path: ':groupId/projects/:projectId/documents',\r\n hidden: true,\r\n component: () => import('@/views/Document.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupProjectDocument\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/users',\r\n icon: 'List',\r\n component: Layout,\r\n meta: {\r\n nav:'用户中心',\r\n requireAnyRoles: ['SYS_OWNER']\r\n },\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/UserList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.userList\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/profile',\r\n icon: 'User',\r\n component: Layout,\r\n meta: {\r\n nav: '个人中心',\r\n breadcrumb: breadcurmbMap.userProfile\r\n },\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/UserProfile.vue')\r\n }\r\n ]\r\n },\r\n {\r\n path: '/settings',\r\n icon: 'Setting',\r\n component: Layout,\r\n meta: {\r\n nav:'系统中心',\r\n requireAnyRoles: ['SYS_OWNER']\r\n },\r\n children: [\r\n {\r\n path: 'sysEmail',\r\n icon: 'Notification',\r\n component: () => import('@/views/SysEmailEdit.vue'),\r\n meta: {\r\n nav: '邮箱设置',\r\n breadcrumb: breadcurmbMap.sysEmailEdit\r\n }\r\n },\r\n {\r\n path: 'sysLog',\r\n icon: 'Document',\r\n component: () => import('@/views/SysLog.vue'),\r\n meta: {\r\n nav: '操作日志',\r\n breadcrumb: breadcurmbMap.sysLog\r\n }\r\n },\r\n {\r\n path: 'sysOauth2',\r\n icon: 'Connection',\r\n component: () => import('@/views/SysOauth2.vue'),\r\n meta: {\r\n nav: '登陆设置',\r\n breadcrumb: breadcurmbMap.sysOauth2\r\n }\r\n },\r\n {\r\n path: 'sysDatabaseType',\r\n icon: 'office-building',\r\n component: () => import('@/views/SysDatabaseType.vue'),\r\n meta: {\r\n nav: '数据库扩展',\r\n breadcrumb: breadcurmbMap.sysDatabaseType\r\n }\r\n },\r\n {\r\n path: 'sysDocumentTemplate',\r\n icon: 'document-add',\r\n component: () => import('@/views/SysDocumentTemplateProperty.vue'),\r\n meta: {\r\n nav: '文档模板',\r\n breadcrumb: breadcurmbMap.sysDocumentTemplate\r\n }\r\n },\r\n // TODO\r\n {\r\n path: 'sysKey',\r\n icon: 'Key',\r\n hidden: 'true',\r\n component: Layout,\r\n meta: {\r\n nav: '系统秘钥',\r\n breadcrumb: breadcurmbMap.sysKeyEdit\r\n }\r\n }\r\n ]\r\n }\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes\r\n});\r\n\r\n// 权限路由守卫\r\nrouter.beforeEach((to, from, next) => {\r\n if (to.meta.requireAuth == false) {\r\n if (to.path == '/login' && token.hasAccessToken()) {\r\n next(from)\r\n } else {\r\n next()\r\n }\r\n } else {\r\n if(token.hasAccessToken()) {\r\n next()\r\n } else {\r\n next({ path: '/login' })\r\n }\r\n }\r\n})\r\n\r\n// groupName 参数路由守卫\r\nrouter.beforeEach((to, from, next) => {\r\n if (!to.query.groupName && from.query.groupName) {\r\n to.query.groupName = from.query.groupName\r\n } \r\n if (!to.query.projectName && from.query.projectName) {\r\n to.query.projectName = from.query.projectName\r\n } \r\n next();\r\n})\r\n\r\nexport default router;","import { createStore } from 'vuex'\r\nimport { user } from '../utils/auth'\r\n\r\nconst store = createStore({\r\n state() {\r\n const data = {\r\n user: {\r\n nickname: null,\r\n usernmae: null,\r\n email: null,\r\n avatar: null,\r\n },\r\n groupListActiveTab: null,\r\n menu: {\r\n isCollapse: true,\r\n }\r\n }\r\n const loginData = user.loadUserLoginData()\r\n if (loginData) {\r\n data.user.nickname = loginData.nickname\r\n data.user.usernmae = loginData.usernmae\r\n data.user.email = loginData.email\r\n data.user.avatar = loginData.avatar\r\n }\r\n return data;\r\n },\r\n mutations: {\r\n userUpdate(state, param) {\r\n if (param.nickname) {\r\n state.user.nickname = param.nickname\r\n }\r\n if (param.usernmae) {\r\n state.user.usernmae = param.usernmae\r\n }\r\n if (param.email) {\r\n state.user.email = param.email\r\n }\r\n if (param.avatar) {\r\n state.user.avatar = param.avatar\r\n }\r\n },\r\n foldMenu(state) {\r\n state.menu.isCollapse = true\r\n },\r\n expandMenu(state) {\r\n state.menu.isCollapse = false\r\n },\r\n switchGroupListActiveTab(state, groupListActiveTab) {\r\n if (groupListActiveTab) {\r\n state.groupListActiveTab = groupListActiveTab\r\n }\r\n }\r\n }\r\n})\r\n\r\nexport default store","export const responsive = (map) => {\r\n const width = window.innerWidth\r\n if (width >= 1920) {\r\n return (map.xl?map.xl: null)\r\n } else if (width >= 1200) {\r\n return (map.lg?map.lg: map.xl?map.xl: null)\r\n\r\n } else if (width >= 992) {\r\n return (map.md? map.md: map.lg?map.lg: map.xl?map.xl: null)\r\n\r\n } else if (width >= 768) {\r\n return map.sm ? map.sm : (map.md? map.md: map.lg?map.lg: map.xl?map.xl: null)\r\n } else {\r\n return map.xs ? map.xs :(map.sm ? map.sm : (map.md? map.md: map.lg?map.lg: map.xl?map.xl: null))\r\n }\r\n}\r\n\r\n\r\nexport const dialogPercentWidth = () => {\r\n return responsive({\r\n xl: \"36%\",\r\n lg: \"42%\",\r\n md: \"60%\",\r\n sm: \"80%\",\r\n xs: \"90%\"\r\n })\r\n}","const accessTokenKey = 'accessToken'\r\nconst accessTokenExpireAtKey = 'accessTokenExpireAt'\r\nconst userLoginDataKey = 'userLoginData'\r\n\r\nexport const token = {\r\n\r\n hasAccessToken() {\r\n const accessToken = this.loadAccessToken()\r\n return accessToken\r\n },\r\n\r\n hasValidAccessToken() {\r\n const accessToken = this.loadAccessToken()\r\n const expireAt = window.localStorage.getItem(accessTokenExpireAtKey)\r\n if (!accessToken || !expireAt) {\r\n console.log('warn: not found accessToken and expireAt key')\r\n return false\r\n }\r\n // 10s gap\r\n return expireAt > new Date().getTime() -(1000 * 10)\r\n },\r\n\r\n saveAccessToken(token, tokenExpireAt) {\r\n window.localStorage.setItem(accessTokenKey, token)\r\n window.localStorage.setItem(accessTokenExpireAtKey, tokenExpireAt)\r\n },\r\n\r\n loadAccessToken() {\r\n let token = window.localStorage.getItem(accessTokenKey)\r\n if (token) {\r\n return token\r\n }\r\n return null\r\n }\r\n}\r\n\r\nexport const user = {\r\n\r\n saveUserLoginData(userLoginData) {\r\n window.localStorage.setItem(accessTokenKey, userLoginData.accessToken)\r\n window.localStorage.setItem(accessTokenExpireAtKey, userLoginData.accessTokenExpireAt)\r\n window.localStorage.setItem(userLoginDataKey, JSON.stringify(userLoginData))\r\n },\r\n\r\n removeUserLoginData() {\r\n window.localStorage.removeItem(userLoginDataKey)\r\n window.localStorage.removeItem(accessTokenKey)\r\n window.localStorage.removeItem(accessTokenExpireAtKey)\r\n },\r\n\r\n loadUserLoginData() {\r\n if (!window.localStorage.getItem(userLoginDataKey)) {\r\n return null;\r\n } \r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n return JSON.parse(data)\r\n },\r\n\r\n hasAnyRoles(roles) {\r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n if (data == null) {\r\n return false\r\n }\r\n const user = JSON.parse(data)\r\n return user\r\n .roles\r\n .map(role => {\r\n if (role.groupId) {\r\n return role.role + '?groupId=' + role.groupId\r\n } else {\r\n return role.role\r\n }\r\n })\r\n .some(exists => roles.some(expected => expected == exists))\r\n },\r\n\r\n getRefreshToken() {\r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n if (data == null) {\r\n return null\r\n }\r\n const user = JSON.parse(data)\r\n return user.refreshToken\r\n }\r\n}\r\n","import axios from 'axios';\r\nimport { ElMessage } from 'element-plus'\r\nimport router from '../router';\r\nimport { token, user } from './auth';\r\nimport { refreshAccessToken } from '../api/Login';\r\n\r\nconst BASE_API = process.env.VUE_APP_API_URL\r\n// default config\r\naxios.defaults.baseURL = BASE_API,\r\naxios.defaults.timeout = 15 * 1000;\r\naxios.defaults.withCredentials = false;\r\naxios.defaults.headers.post['Content-Type'] = 'application/json';\r\naxios.defaults.headers.post[\"Access-Control-Allow-Origin-Type\"] = \"*\";\r\n\r\n// token request config\r\n// eslint-disable-next-line\r\nlet tokenRefreshLock = false\r\n\r\nfunction lock() {\r\n tokenRefreshLock = true\r\n}\r\n\r\nfunction unlock() {\r\n tokenRefreshLock = false\r\n}\r\n\r\nlet blockRequests = []\r\n\r\nfunction blockRequest(request) {\r\n blockRequests.push(request)\r\n}\r\n\r\nfunction relaseRequests(config) {\r\n blockRequests.forEach(request => {\r\n request(config)\r\n })\r\n blockRequests = []\r\n}\r\n\r\n// 请求拦截器\r\naxios.interceptors.request.use(async function (config) {\r\n if (config.url == '/access_tokens' || config.url.startsWith('/oauth2') || config.url == '/login') {\r\n return config\r\n }\r\n\r\n if (token.hasValidAccessToken()) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n return config;\r\n }\r\n if (tokenRefreshLock) {\r\n const promise = new Promise((resolve) => {\r\n blockRequest(() => {\r\n if (config) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n }\r\n resolve(config)\r\n })\r\n })\r\n return promise\r\n } \r\n return config\r\n}, function (error) {\r\n unlock()\r\n return Promise.reject(error);\r\n});\r\n\r\n// response拦截器\r\naxios.interceptors.response.use(\r\n (response) => {\r\n const res = response.data;\r\n if (res.errCode) {\r\n notify(res.errMessage)\r\n }\r\n return res;\r\n },\r\n (error) => {\r\n if (error.response) {\r\n if(error.response.status == 401) {\r\n if (error.response.data.errCode == 'X_0002') {\r\n user.removeUserLoginData()\r\n notify('登陆状态失效,请重新登陆')\r\n redirectLogin()\r\n } else if (error.response.data.errCode == 'X_0004') {\r\n return refresh(error.config).then(() => retryFromResponse(error.config))\r\n }\r\n } else if (error.response.status == 403) {\r\n notify('无执行该操作的权限')\r\n } else {\r\n notify(error.message)\r\n } \r\n } else {\r\n console.log(error)\r\n notify('网络异常,请稍后再试')\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nasync function refresh(config) {\r\n const refreshToken = user.getRefreshToken()\r\n if(!refreshToken) {\r\n redirectLogin()\r\n }\r\n\r\n if(tokenRefreshLock) {\r\n return new Promise((resolve) => {\r\n blockRequest(() => {\r\n if (config) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n }\r\n resolve(config)\r\n })\r\n })\r\n }\r\n\r\n lock()\r\n return await refreshAccessToken(refreshToken).then(resp => {\r\n if (resp.errCode) {\r\n redirectLogin()\r\n } else {\r\n token.saveAccessToken(resp.data.accessToken, resp.data.accessTokenExpireAt)\r\n unlock()\r\n }\r\n }).finally(() => unlock())\r\n}\r\n\r\nasync function retryFromResponse(config) {\r\n try {\r\n const res = await axios({\r\n method: config.method,\r\n data: config.data,\r\n url: config.url,\r\n baseURL: config.baseURL,\r\n headers: {\r\n Authorization: 'Bearer ' + token.loadAccessToken()\r\n },\r\n })\r\n relaseRequests(config)\r\n return res;\r\n } catch(error) {\r\n console.log(error)\r\n notify(\"网络异常,请稍后再试\");\r\n }\r\n}\r\n\r\n\r\nfunction redirectLogin () {\r\n user.removeUserLoginData()\r\n router.replace('/login')\r\n}\r\n\r\nfunction notify(msg) {\r\n ElMessage({\r\n message: msg,\r\n type: 'error',\r\n duration: 5 * 1000,\r\n grouping: true,\r\n });\r\n}\r\n\r\nexport default axios;\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \"-legacy.\" + {\"17\":\"5bee094a\",\"117\":\"623d8834\",\"139\":\"2e4437df\",\"227\":\"ed1b0a5b\",\"243\":\"0e928586\",\"314\":\"e55474ea\",\"408\":\"ddfcf48f\",\"469\":\"9029bf4c\",\"480\":\"e63a01f3\",\"725\":\"47994393\",\"834\":\"162d5bb2\",\"865\":\"5ba4977e\",\"918\":\"d3d8cbff\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"139\":\"a7dec339\",\"227\":\"90d5c1b0\",\"314\":\"6b48a93a\",\"408\":\"1969b1d0\",\"725\":\"82a2f213\",\"834\":\"f2905e33\",\"865\":\"7df1e56e\",\"918\":\"b113d9de\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"databasir:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"139\":1,\"227\":1,\"314\":1,\"408\":1,\"725\":1,\"834\":1,\"865\":1,\"918\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdatabasir\"] = self[\"webpackChunkdatabasir\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(21381); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["login","form","data","FormData","append","username","password","axios","oauth2Login","registrationId","parameters","params","refreshAccessToken","refreshToken","_createBlock","_component_router_view","script","__exports__","render","$props","toLowerCase","_component_el_tooltip","content","placement","_createElementVNode","src","require","style","_createElementBlock","_Fragment","key","props","databaseType","String","icon","app","createApp","App","Object","keys","Icons","forEach","component","DatabaseIcon","directive","mounted","el","binding","roles","value","user","parentNode","removeChild","updated","child","querySelector","id","getAttribute","poper","document","getElementById","selector","parentElement","addEventListener","condition","this","scrollHeight","scrollTop","clientHeight","console","log","hljs","javascript","use","hljsVuePlugin","store","ElementPlus","router","VueClipboard","mount","class","_component_el_container","_createVNode","_component_el_aside","_component_AppNav","onOnSearch","$options","_component_el_header","_component_Breadcrumb","_component_Avatar","_component_el_main","_component_el_dialog","$data","$event","title","width","_component_el_input","placeholder","onChange","prepend","_component_el_button","type","loading","_renderList","item","index","_component_el_link","underline","onClick","path","_component_el_tag","closable","onClose","label","projects","length","groups","_component_el_divider","project","groupName","_toDisplayString","projectName","_component_el_icon","_component_Right","group","name","_component_el_menu","collapse","_ctx","mode","_component_el_menu_item","_hoisted_1","_component_home_filled","menu","children","some","ele","hidden","_component_el_sub_menu","_resolveDynamicComponent","meta","nav","childIndex","defineComponent","emits","setup","context","isCollapse","computed","useRouter","routes","options","isShowMenu","requireAnyRoles","hasAnyRoles","expandMenu","showSearchDialog","emit","_component_el_breadcrumb","separator","_component_el_breadcrumb_item","_component_fold","to","breadcrumbs","$route","breadcrumb","$store","state","menuIsCollapse","methods","onFoldMenu","commit","_component_el_dropdown","dropdown","_component_el_dropdown_menu","_component_el_dropdown_item","divided","_component_el_avatar","size","userNickname","nickname","avatarUrl","avatar","onLogout","$router","push","toProfilePage","base","query","keyword","components","AppNav","Breadcrumb","Avatar","queryKeyword","queryData","queryLoading","searchSelectHistory","searchSelectHistoryKey","loadSearchSelectHistory","search","onQuery","val","then","resp","errCode","finally","jumpToGroup","select","history","filter","unshift","splice","window","localStorage","setItem","JSON","stringify","location","jumpToProject","groupId","projectId","jumpToPath","getItem","obj","parse","onRemoveSelectHistoryItem","dialogWidth","dialogPercentWidth","groupList","groupDashboard","route","groupProjectDocument","userList","userProfile","sysEmailEdit","sysLog","sysOauth2","sysDatabaseType","sysDocumentTemplate","breadcurmbMap","requireAuth","Layout","createRouter","createWebHistory","beforeEach","from","next","token","createStore","usernmae","email","groupListActiveTab","loginData","mutations","userUpdate","param","foldMenu","switchGroupListActiveTab","responsive","map","innerWidth","xl","lg","md","sm","xs","accessTokenKey","accessTokenExpireAtKey","userLoginDataKey","hasAccessToken","accessToken","loadAccessToken","hasValidAccessToken","expireAt","Date","getTime","saveAccessToken","tokenExpireAt","saveUserLoginData","userLoginData","accessTokenExpireAt","removeUserLoginData","removeItem","loadUserLoginData","role","exists","expected","getRefreshToken","BASE_API","process","VUE_APP_API_URL","tokenRefreshLock","lock","unlock","blockRequests","blockRequest","request","relaseRequests","config","refresh","redirectLogin","Promise","resolve","headers","Authorization","retryFromResponse","method","url","baseURL","res","notify","msg","ElMessage","message","duration","grouping","startsWith","promise","error","reject","response","errMessage","status","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","needAttach","scripts","getElementsByTagName","s","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","p","createStylesheet","fullhref","linkTag","rel","onLinkComplete","errorType","realHref","href","err","Error","code","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/api/src/main/resources/static/js/app.3b9845e4.js b/api/src/main/resources/static/js/app.3b9845e4.js new file mode 100644 index 0000000..a112038 --- /dev/null +++ b/api/src/main/resources/static/js/app.3b9845e4.js @@ -0,0 +1,2 @@ +(function(){"use strict";var e={152:function(e,t,n){n.d(t,{x4:function(){return o},rd:function(){return a},jb:function(){return s}});var r=n(3872);const o=e=>{const t=new FormData;return t.append("username",e.username),t.append("password",e.password),r.Z.post("/login",t)},a=(e,t)=>r.Z.get("/oauth2/login/"+e,{params:t}),s=e=>r.Z.post("/access_tokens",{refreshToken:e})},1381:function(e,t,n){var r=n(9963),o=n(8722),a=n(137),s=n(837),i=n(9622),u=n(6246),l=(n(4415),n(1773)),c=n(4239),d=n(6252);function p(e,t){const n=(0,d.up)("router-view");return(0,d.wg)(),(0,d.j4)(n)}var m=n(3744);const h={},f=(0,m.Z)(h,[["render",p]]);var g=f,w=n(1836),y=n(3577);const b=["src"],v=["src"],k=["src"],S=["src"],_=["src"],j=["src"];function x(e,t,r,o,a,s){const i=(0,d.up)("el-tooltip");return"mysql"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:0,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:n(2357),style:{"max-width":"33px","max-height":"33px"}},null,8,b)])),_:1},8,["content"])):"postgresql"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:1,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:n(3609),style:{"max-width":"33px","max-height":"33px"}},null,8,v)])),_:1},8,["content"])):"oracle"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:2,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:n(2260),style:{"max-width":"33px","max-height":"33px"}},null,8,k)])),_:1},8,["content"])):"mariadb"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:3,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:n(6658),style:{"max-width":"33px","max-height":"33px"}},null,8,S)])),_:1},8,["content"])):"sqlserver"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:4,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:n(5641),style:{"max-width":"33px","max-height":"33px"}},null,8,_)])),_:1},8,["content"])):r.icon?((0,d.wg)(),(0,d.j4)(i,{key:5,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:r.icon,style:{"max-width":"33px","max-height":"33px"}},null,8,j)])),_:1},8,["content"])):((0,d.wg)(),(0,d.iD)(d.HY,{key:6},[(0,d.Uk)((0,y.zw)(r.databaseType),1)],64))}var T={props:{databaseType:String,icon:String}};const A=(0,m.Z)(T,[["render",x]]);var L=A,D=n(4890);const C=(0,r.ri)(g);Object.keys(a).forEach((e=>{C.component(e,a[e])})),C.component("database-icon",L),C.directive("require-roles",{mounted(e,t){const n=t.value;w.E.hasAnyRoles(n)||e.parentNode&&e.parentNode.removeChild(e)}}),C.directive("select-more",{updated(e,t){const n=e.querySelector(".select-trigger"),r=n.getAttribute("aria-describedby"),o=document.getElementById(r);if(null==o)return;const a=o.parentElement.querySelector(".el-select-dropdown .el-scrollbar .el-select-dropdown__wrap");null!=a?a.addEventListener("scroll",(function(){const e=this.scrollHeight-this.scrollTop-1<=this.clientHeight;e&&t.value()})):console.log("load select component failed")}}),s.Z.registerLanguage("javascript",i.Z),C.use(u.Z),C.use(c.Z),C.use(o.Z),C.use(l.Z),C.use(D._),C.mount("#app")},1773:function(e,t,n){n.d(t,{Z:function(){return oe}});var r=n(2119),o=n(6252),a=n(3577);const s={style:{"margin-top":"16px"}},i={class:"search-container"},u=["onClick"],l=(0,o.Uk)("project"),c=(0,o.Uk)(),d={class:"jump"},p=["onClick"],m=(0,o.Uk)("group"),h=(0,o.Uk)(),f={class:"jump"};function g(e,t,n,r,g,w){const y=(0,o.up)("AppNav"),b=(0,o.up)("el-aside"),v=(0,o.up)("Breadcrumb"),k=(0,o.up)("Avatar"),S=(0,o.up)("el-header"),_=(0,o.up)("router-view"),j=(0,o.up)("el-main"),x=(0,o.up)("el-container"),T=(0,o.up)("el-button"),A=(0,o.up)("el-input"),L=(0,o.up)("el-tag"),D=(0,o.up)("el-link"),C=(0,o.up)("el-divider"),q=(0,o.up)("Right"),N=(0,o.up)("el-icon"),E=(0,o.up)("el-dialog");return(0,o.wg)(),(0,o.j4)(x,{class:"databasir"},{default:(0,o.w5)((()=>[(0,o.Wm)(b,null,{default:(0,o.w5)((()=>[(0,o.Wm)(y,{class:"databasir-nav",onOnSearch:t[0]||(t[0]=e=>w.search())})])),_:1}),(0,o.Wm)(S,{class:"databasir-main-header"},{default:(0,o.w5)((()=>[(0,o.Wm)(v),(0,o.Wm)(k)])),_:1}),(0,o.Wm)(j,{class:"databasir-main"},{default:(0,o.w5)((()=>[(0,o.Wm)(x,null,{default:(0,o.w5)((()=>[(0,o.Wm)(j,{class:"databasir-main-content"},{default:(0,o.w5)((()=>[(0,o.Wm)(_)])),_:1})])),_:1})])),_:1}),(0,o.Wm)(E,{modelValue:g.showSearchDialog,"onUpdate:modelValue":t[2]||(t[2]=e=>g.showSearchDialog=e),title:"搜索",width:w.dialogWidth()},{default:(0,o.w5)((()=>[(0,o.Wm)(A,{modelValue:g.queryKeyword,"onUpdate:modelValue":t[1]||(t[1]=e=>g.queryKeyword=e),placeholder:"分组、项目、database、schema 搜索",style:{width:"100%",border:"none"},onChange:w.onQuery},{prepend:(0,o.w5)((()=>[(0,o.Wm)(T,{type:"text",loading:g.queryLoading,icon:"Search"},null,8,["loading"])])),_:1},8,["modelValue","onChange"]),(0,o._)("div",s,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(g.searchSelectHistory,((e,t)=>((0,o.wg)(),(0,o.j4)(D,{underline:!1,key:t,onClick:t=>w.jumpToPath(e.path),style:{"margin-right":"12px","margin-bottom":"12px"}},{default:(0,o.w5)((()=>[(0,o.Wm)(L,{closable:"",type:"group"==e.type?"primary":"success",onClose:t=>w.onRemoveSelectHistoryItem(e.label)},{default:(0,o.w5)((()=>[(0,o.Uk)((0,a.zw)(e.label),1)])),_:2},1032,["type","onClose"])])),_:2},1032,["onClick"])))),128))]),g.queryData.projects.length>0||g.queryData.groups.length>0?((0,o.wg)(),(0,o.j4)(C,{key:0})):(0,o.kq)("",!0),(0,o._)("div",i,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(g.queryData.projects,((e,t)=>((0,o.wg)(),(0,o.iD)("div",{class:"search-item",key:t,onClick:t=>w.jumpToProject(e)},[(0,o._)("span",null,[(0,o.Wm)(L,{type:"success"},{default:(0,o.w5)((()=>[l])),_:1}),c,(0,o.Wm)(D,{underline:!1},{default:(0,o.w5)((()=>[(0,o.Uk)((0,a.zw)(e.groupName)+" / "+(0,a.zw)(e.projectName),1)])),_:2},1024)]),(0,o._)("span",d,[(0,o.Wm)(N,null,{default:(0,o.w5)((()=>[(0,o.Wm)(q)])),_:1})])],8,u)))),128)),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(g.queryData.groups,((e,t)=>((0,o.wg)(),(0,o.iD)("div",{class:"search-item",key:t,onClick:t=>w.jumpToGroup(e)},[(0,o._)("span",null,[(0,o.Wm)(L,null,{default:(0,o.w5)((()=>[m])),_:1}),h,(0,o.Wm)(D,{underline:!1},{default:(0,o.w5)((()=>[(0,o.Uk)((0,a.zw)(e.name),1)])),_:2},1024)]),(0,o._)("span",f,[(0,o.Wm)(N,null,{default:(0,o.w5)((()=>[(0,o.Wm)(q)])),_:1})])],8,p)))),128))])])),_:1},8,["modelValue","width"])])),_:1})}const w=(0,o._)("span",null,"Databasir",-1);function y(e,t,n,r,s,i){const u=(0,o.up)("home-filled"),l=(0,o.up)("el-icon"),c=(0,o.up)("el-menu-item"),d=(0,o.up)("el-sub-menu"),p=(0,o.up)("el-button"),m=(0,o.up)("el-menu");return(0,o.wg)(),(0,o.j4)(m,{router:"",collapse:e.isCollapse,mode:"vertical",class:"left-menu"},{default:(0,o.w5)((()=>[(0,o.Wm)(c,{index:"/"},{title:(0,o.w5)((()=>[w])),default:(0,o.w5)((()=>[(0,o.Wm)(l,null,{default:(0,o.w5)((()=>[(0,o.Wm)(u)])),_:1})])),_:1}),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.routes,((t,n)=>((0,o.wg)(),(0,o.iD)(o.HY,{key:n},[e.isShowMenu(t)&&t.children.length>0&&t.children.some((e=>!e.hidden))?((0,o.wg)(),(0,o.j4)(d,{key:0,index:t.path},{title:(0,o.w5)((()=>[(0,o.Wm)(l,null,{default:(0,o.w5)((()=>[((0,o.wg)(),(0,o.j4)((0,o.LL)(t.icon)))])),_:2},1024),(0,o._)("span",null,(0,a.zw)(t.meta.nav),1)])),default:(0,o.w5)((()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(t.children,((e,r)=>((0,o.wg)(),(0,o.iD)(o.HY,{key:n+"-"+r},[e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(c,{key:0,index:t.path+"/"+e.path},{title:(0,o.w5)((()=>[(0,o._)("span",null,(0,a.zw)(e.meta.nav),1)])),default:(0,o.w5)((()=>[e.icon?((0,o.wg)(),(0,o.j4)(l,{key:0},{default:(0,o.w5)((()=>[((0,o.wg)(),(0,o.j4)((0,o.LL)(e.icon)))])),_:2},1024)):(0,o.kq)("",!0)])),_:2},1032,["index"]))],64)))),128))])),_:2},1032,["index"])):e.isShowMenu(t)?((0,o.wg)(),(0,o.j4)(c,{key:1,index:t.path},{title:(0,o.w5)((()=>[(0,o._)("span",null,(0,a.zw)(t.meta.nav),1)])),default:(0,o.w5)((()=>[(0,o.Wm)(l,null,{default:(0,o.w5)((()=>[((0,o.wg)(),(0,o.j4)((0,o.LL)(t.icon)))])),_:2},1024)])),_:2},1032,["index"])):(0,o.kq)("",!0)],64)))),128)),(0,o.Wm)(c,{index:"",onClick:t[0]||(t[0]=t=>e.showSearchDialog())},{default:(0,o.w5)((()=>[(0,o.Wm)(p,{type:"text",icon:"Search",style:{color:"#303133"}})])),_:1})])),_:1},8,["collapse"])}var b=n(2262),v=n(1836),k=n(4239),S=(0,o.aZ)({emits:["on-search"],setup(e,t){const n=(0,b.Fl)((()=>k.Z.state.menu.isCollapse)),o=(0,r.tv)(),a=o.options.routes,s=e=>{if(e.hidden)return!1;if(e.meta.requireAnyRoles&&e.meta.requireAnyRoles.length>0){const t=v.E.hasAnyRoles(e.meta.requireAnyRoles);if(!t)return!1}return!0},i=()=>{k.Z.commit("expandMenu")},u=()=>{t.emit("on-search")};return{isCollapse:n,isShowMenu:s,expandMenu:i,routes:a,showSearchDialog:u}}}),_=n(3744);const j=(0,_.Z)(S,[["render",y]]);var x=j;function T(e,t,n,r,s,i){const u=(0,o.up)("fold"),l=(0,o.up)("el-icon"),c=(0,o.up)("el-link"),d=(0,o.up)("el-breadcrumb-item"),p=(0,o.up)("el-breadcrumb");return(0,o.wg)(),(0,o.j4)(p,{separator:"/"},{default:(0,o.w5)((()=>[i.menuIsCollapse?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(d,{key:0},{default:(0,o.w5)((()=>[(0,o.Wm)(c,{onClick:t[0]||(t[0]=e=>i.onFoldMenu()),underline:!1},{default:(0,o.w5)((()=>[(0,o.Wm)(l,null,{default:(0,o.w5)((()=>[(0,o.Wm)(u)])),_:1})])),_:1})])),_:1})),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(i.breadcrumbs,((e,t)=>((0,o.wg)(),(0,o.j4)(d,{key:t,to:e.to},{default:(0,o.w5)((()=>[(0,o.Uk)((0,a.zw)(e.name),1)])),_:2},1032,["to"])))),128))])),_:1})}var A={computed:{breadcrumbs:function(){return"function"===typeof this.$route.meta.breadcrumb?this.$route.meta.breadcrumb(this.$route,this.$store.state):[]},menuIsCollapse(){return this.$store.state.menu.isCollapse}},methods:{onFoldMenu(){this.$store.commit("foldMenu")}}};const L=(0,_.Z)(A,[["render",T]]);var D=L;const C=(0,o.Uk)("个人中心"),q=(0,o.Uk)("注销登陆");function N(e,t,n,r,s,i){const u=(0,o.up)("el-avatar"),l=(0,o.up)("el-dropdown-item"),c=(0,o.up)("el-dropdown-menu"),d=(0,o.up)("el-dropdown");return(0,o.wg)(),(0,o.j4)(d,null,{dropdown:(0,o.w5)((()=>[(0,o.Wm)(c,null,{default:(0,o.w5)((()=>[(0,o.Wm)(l,null,{default:(0,o.w5)((()=>[(0,o.Uk)((0,a.zw)(i.userNickname),1)])),_:1}),(0,o.Wm)(l,{icon:"user",divided:"",onClick:t[0]||(t[0]=e=>i.toProfilePage())},{default:(0,o.w5)((()=>[C])),_:1}),(0,o.Wm)(l,{icon:"back",onClick:t[1]||(t[1]=e=>i.onLogout())},{default:(0,o.w5)((()=>[q])),_:1})])),_:1})])),default:(0,o.w5)((()=>[(0,o.Wm)(u,{size:36,src:i.avatarUrl,icon:"avatar"},null,8,["src"])])),_:1})}var E={computed:{userNickname(){return this.$store.state.user.nickname},avatarUrl(){return this.$store.state.user.avatar}},methods:{onLogout(){v.E.removeUserLoginData(),this.$router.push({path:"/login"})},toProfilePage(){this.$router.push({path:"/profile"})}}};const W=(0,_.Z)(E,[["render",N]]);var I=W,O=n(3872);const H="/api/v1.0/search",U=e=>O.Z.get(H,{params:e});var P=n(8968),Z={components:{AppNav:x,Breadcrumb:D,Avatar:I},data(){return{showSearchDialog:!1,queryKeyword:"",queryData:{projects:[],groups:[]},queryLoading:!1,searchSelectHistory:[],searchSelectHistoryKey:"globalSearchSelectHistory"}},mounted(){this.loadSearchSelectHistory()},methods:{search(){this.showSearchDialog=!0},onQuery(e){this.queryLoading=!0,U({query:e}).then((e=>{e.errCode||(this.queryData=e.data)})).finally((()=>this.queryLoading=!1))},jumpToGroup(e){this.showSearchDialog=!1;const t="/groups/"+e.id+"?groupName="+e.name,n={label:e.name,path:t,type:"group"},r=this.searchSelectHistory.filter((e=>e.label!=n.label));r.unshift(n),r.splice(15),this.searchSelectHistory=r,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory)),window.location=t},jumpToProject(e){this.showSearchDialog=!1;const t="/groups/"+e.groupId+"/projects/"+e.projectId+"/documents?groupName="+e.groupName+"&projectName="+e.projectName,n={label:e.groupName+" / "+e.projectName,path:t,type:"project"},r=this.searchSelectHistory.filter((e=>e.label!=n.label));r.unshift(n),r.splice(15),this.searchSelectHistory=r,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory)),window.location=t},jumpToPath(e){window.location=e},loadSearchSelectHistory(){const e=this.searchSelectHistoryKey;if(null!=window.localStorage.getItem(e)){const t=JSON.parse(window.localStorage.getItem(e));this.searchSelectHistory=t}},onRemoveSelectHistoryItem(e){const t=this.searchSelectHistory.filter((t=>t.label!=e));this.searchSelectHistory=t,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory))},dialogWidth(){return(0,P.c)()}}};const R=(0,_.Z)(Z,[["render",g]]);var K=R;function M(){return{name:"首页",to:{path:"/"}}}function z(){return{name:"项目中心",to:{name:"groupListPage"}}}function B(e){var t="项目组";return e.query.groupName&&(t=e.query.groupName),{name:t,to:{path:"/groups/"+e.params.groupId}}}function Y(e){var t="项目文档";e.query.projectName&&(t=e.query.projectName);var n=e.params.projectId,r=e.params.groupId;return{name:t,to:{path:"/groups/"+r+"/projects/"+n+"/documents",query:{projectName:t}}}}function V(){return{name:"用户列表",to:{path:"/users"}}}function $(){return{name:"个人中心",to:{path:"/profile"}}}function F(){return{name:"邮箱设置",to:{path:"/settings/sysEmail"}}}function J(){return{name:"操作日志",to:{path:"/settings/sysLog"}}}function Q(){return{name:"登录设置",to:{path:"/settings/sysOauth2"}}}function G(){return{name:"数据库扩展",to:{path:"/settings/sysDatabaseType"}}}function X(){return{name:"文档模板",to:{path:"/settings/sysDocumentTemplate"}}}const ee={index:()=>[M()],groupList:()=>[M(),z()],groupDashboard:(e,t)=>[M(),z(),B(e,t)],groupProjectDocument:(e,t)=>[M(),z(),B(e,t),Y(e)],userProfile:()=>[M(),$()],userList:()=>[M(),V()],sysEmailEdit:()=>[M(),F()],sysLog:()=>[M(),J()],sysOauth2:()=>[M(),Q()],sysDatabaseType:()=>[M(),G()],sysDocumentTemplate:()=>[M(),X()]};var te=ee;const ne=[{path:"/login",component:()=>n.e(139).then(n.bind(n,1139)),hidden:!0,meta:{requireAuth:!1}},{path:"/login/oauth2/:id",component:()=>n.e(865).then(n.bind(n,8865)),hidden:!0,props:!0,meta:{requireAuth:!1}},{path:"/",hidden:!0,component:K,children:[{path:"",hidden:!0,component:()=>n.e(314).then(n.bind(n,6314)),meta:{breadcrumb:te.groupList}}]},{path:"/groups",icon:"Collection",component:K,meta:{nav:"项目中心"},children:[{path:"",name:"groupListPage",hidden:!0,component:()=>n.e(314).then(n.bind(n,6314)),meta:{breadcrumb:te.groupList}},{path:":groupId",hidden:!0,component:()=>n.e(725).then(n.bind(n,725)),meta:{breadcrumb:te.groupDashboard}},{path:":groupId/projects/:projectId/documents",hidden:!0,component:()=>n.e(991).then(n.bind(n,1991)),meta:{breadcrumb:te.groupProjectDocument}}]},{path:"/users",icon:"List",component:K,meta:{nav:"用户中心",requireAnyRoles:["SYS_OWNER"]},children:[{path:"",hidden:!0,component:()=>n.e(117).then(n.bind(n,4117)),meta:{breadcrumb:te.userList}}]},{path:"/profile",icon:"User",component:K,meta:{nav:"个人中心",breadcrumb:te.userProfile},children:[{path:"",hidden:!0,component:()=>n.e(469).then(n.bind(n,6469))}]},{path:"/settings",icon:"Setting",component:K,meta:{nav:"系统中心",requireAnyRoles:["SYS_OWNER"]},children:[{path:"sysEmail",icon:"Notification",component:()=>n.e(243).then(n.bind(n,1243)),meta:{nav:"邮箱设置",breadcrumb:te.sysEmailEdit}},{path:"sysLog",icon:"Document",component:()=>n.e(17).then(n.bind(n,6017)),meta:{nav:"操作日志",breadcrumb:te.sysLog}},{path:"sysOauth2",icon:"Connection",component:()=>n.e(834).then(n.bind(n,6834)),meta:{nav:"登陆设置",breadcrumb:te.sysOauth2}},{path:"sysDatabaseType",icon:"office-building",component:()=>n.e(918).then(n.bind(n,918)),meta:{nav:"数据库扩展",breadcrumb:te.sysDatabaseType}},{path:"sysDocumentTemplate",icon:"document-add",component:()=>n.e(227).then(n.bind(n,3227)),meta:{nav:"文档模板",breadcrumb:te.sysDocumentTemplate}},{path:"sysKey",icon:"Key",hidden:"true",component:K,meta:{nav:"系统秘钥",breadcrumb:te.sysKeyEdit}}]}],re=(0,r.p7)({history:(0,r.PO)(),routes:ne});re.beforeEach(((e,t,n)=>{0==e.meta.requireAuth?"/login"==e.path&&v.r.hasAccessToken()?n(t):n():v.r.hasAccessToken()?n():n({path:"/login"})})),re.beforeEach(((e,t,n)=>{!e.query.groupName&&t.query.groupName&&(e.query.groupName=t.query.groupName),!e.query.projectName&&t.query.projectName&&(e.query.projectName=t.query.projectName),n()}));var oe=re},4239:function(e,t,n){var r=n(8637),o=n(1836);const a=(0,r.MT)({state(){const e={user:{nickname:null,usernmae:null,email:null,avatar:null},groupListActiveTab:null,menu:{isCollapse:!0}},t=o.E.loadUserLoginData();return t&&(e.user.nickname=t.nickname,e.user.usernmae=t.usernmae,e.user.email=t.email,e.user.avatar=t.avatar),e},mutations:{userUpdate(e,t){t.nickname&&(e.user.nickname=t.nickname),t.usernmae&&(e.user.usernmae=t.usernmae),t.email&&(e.user.email=t.email),t.avatar&&(e.user.avatar=t.avatar)},foldMenu(e){e.menu.isCollapse=!0},expandMenu(e){e.menu.isCollapse=!1},switchGroupListActiveTab(e,t){t&&(e.groupListActiveTab=t)}}});t["Z"]=a},8968:function(e,t,n){n.d(t,{c:function(){return o}});const r=e=>{const t=window.innerWidth;return t>=1920?e.xl?e.xl:null:t>=1200?e.lg?e.lg:e.xl?e.xl:null:t>=992?e.md?e.md:e.lg?e.lg:e.xl?e.xl:null:t>=768?e.sm?e.sm:e.md?e.md:e.lg?e.lg:e.xl?e.xl:null:e.xs?e.xs:e.sm?e.sm:e.md?e.md:e.lg?e.lg:e.xl?e.xl:null},o=()=>r({xl:"36%",lg:"42%",md:"60%",sm:"80%",xs:"90%"})},1836:function(e,t,n){n.d(t,{r:function(){return s},E:function(){return i}});const r="accessToken",o="accessTokenExpireAt",a="userLoginData",s={hasAccessToken(){const e=this.loadAccessToken();return e},hasValidAccessToken(){const e=this.loadAccessToken(),t=window.localStorage.getItem(o);return e&&t?t>(new Date).getTime()-1e4:(console.log("warn: not found accessToken and expireAt key"),!1)},saveAccessToken(e,t){window.localStorage.setItem(r,e),window.localStorage.setItem(o,t)},loadAccessToken(){let e=window.localStorage.getItem(r);return e||null}},i={saveUserLoginData(e){window.localStorage.setItem(r,e.accessToken),window.localStorage.setItem(o,e.accessTokenExpireAt),window.localStorage.setItem(a,JSON.stringify(e))},removeUserLoginData(){window.localStorage.removeItem(a),window.localStorage.removeItem(r),window.localStorage.removeItem(o)},loadUserLoginData(){if(!window.localStorage.getItem(a))return null;const e=window.localStorage.getItem(a);return JSON.parse(e)},hasAnyRoles(e){const t=window.localStorage.getItem(a);if(null==t)return!1;const n=JSON.parse(t);return n.roles.map((e=>e.groupId?e.role+"?groupId="+e.groupId:e.role)).some((t=>e.some((e=>e==t))))},getRefreshToken(){const e=window.localStorage.getItem(a);if(null==e)return null;const t=JSON.parse(e);return t.refreshToken}}},3872:function(e,t,n){var r=n(9669),o=n.n(r),a=n(610),s=n(1773),i=n(1836),u=n(152);const l={NODE_ENV:"production",BASE_URL:"/"}.VUE_APP_API_URL;o().defaults.baseURL=l,o().defaults.timeout=15e3,o().defaults.withCredentials=!1,o().defaults.headers.post["Content-Type"]="application/json",o().defaults.headers.post["Access-Control-Allow-Origin-Type"]="*";let c=!1;function d(){c=!0}function p(){c=!1}let m=[];function h(e){m.push(e)}function f(e){m.forEach((t=>{t(e)})),m=[]}async function g(e){const t=i.E.getRefreshToken();return t||y(),c?new Promise((t=>{h((()=>{e&&(e.headers.Authorization="Bearer "+i.r.loadAccessToken()),t(e)}))})):(d(),await(0,u.jb)(t).then((e=>{e.errCode?y():(i.r.saveAccessToken(e.data.accessToken,e.data.accessTokenExpireAt),p())})).finally((()=>p())))}async function w(e){try{const t=await o()({method:e.method,data:e.data,url:e.url,baseURL:e.baseURL,headers:{Authorization:"Bearer "+i.r.loadAccessToken()}});return f(e),t}catch(t){console.log(t),b("网络异常,请稍后再试")}}function y(){i.E.removeUserLoginData(),s.Z.replace("/login")}function b(e){(0,a.z8)({message:e,type:"error",duration:5e3,grouping:!0})}o().interceptors.request.use((async function(e){if("/access_tokens"==e.url||e.url.startsWith("/oauth2")||"/login"==e.url)return e;if(i.r.hasValidAccessToken())return e.headers.Authorization="Bearer "+i.r.loadAccessToken(),e;if(c){const t=new Promise((t=>{h((()=>{e&&(e.headers.Authorization="Bearer "+i.r.loadAccessToken()),t(e)}))}));return t}return e}),(function(e){return p(),Promise.reject(e)})),o().interceptors.response.use((e=>{const t=e.data;return t.errCode&&b(t.errMessage),t}),(e=>{if(e.response)if(401==e.response.status){if("X_0002"==e.response.data.errCode)i.E.removeUserLoginData(),b("登陆状态失效,请重新登陆"),y();else if("X_0004"==e.response.data.errCode)return g(e.config).then((()=>w(e.config)))}else 403==e.response.status?b("无执行该操作的权限"):b(e.message);else console.log(e),b("网络异常,请稍后再试");return Promise.reject(e)})),t["Z"]=o()},6658:function(e,t,n){e.exports=n.p+"img/MariaDB.9e6854cc.svg"},2357:function(e,t,n){e.exports=n.p+"img/MySQL.c8f47618.svg"},2260:function(e,t,n){e.exports=n.p+"img/Oracle.c9ed26e0.svg"},3609:function(e,t,n){e.exports=n.p+"img/PostgreSQL.6e3d3a5e.svg"},5641:function(e,t,n){e.exports=n.p+"img/Sqlserver.deff7c4c.svg"}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.m=e,function(){var e=[];n.O=function(t,r,o,a){if(!r){var s=1/0;for(c=0;c<e.length;c++){r=e[c][0],o=e[c][1],a=e[c][2];for(var i=!0,u=0;u<r.length;u++)(!1&a||s>=a)&&Object.keys(n.O).every((function(e){return n.O[e](r[u])}))?r.splice(u--,1):(i=!1,a<s&&(s=a));if(i){e.splice(c--,1);var l=o();void 0!==l&&(t=l)}}return t}a=a||0;for(var c=e.length;c>0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[r,o,a]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}}(),function(){n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))}}(),function(){n.u=function(e){return"js/"+e+"."+{17:"f8914b9e",117:"1f755d73",139:"64be11ff",227:"b20a14b0",243:"47faec0e",314:"358d11d3",469:"52881502",725:"e0865a14",834:"72e75f55",865:"d67048bf",918:"268bc178",991:"73d56bf1"}[e]+".js"}}(),function(){n.miniCssF=function(e){return"css/"+e+"."+{139:"a7dec339",227:"90d5c1b0",314:"6b48a93a",725:"82a2f213",834:"f2905e33",865:"7df1e56e",918:"b113d9de",991:"1969b1d0"}[e]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="databasir:";n.l=function(r,o,a,s){if(e[r])e[r].push(o);else{var i,u;if(void 0!==a)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var d=l[c];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+a){i=d;break}}i||(u=!0,i=document.createElement("script"),i.charset="utf-8",i.timeout=120,n.nc&&i.setAttribute("nonce",n.nc),i.setAttribute("data-webpack",t+a),i.src=r),e[r]=[o];var p=function(t,n){i.onerror=i.onload=null,clearTimeout(m);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((function(e){return e(n)})),t)return t(n)},m=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),u&&document.head.appendChild(i)}}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){n.p="/"}(),function(){var e=function(e,t,n,r){var o=document.createElement("link");o.rel="stylesheet",o.type="text/css";var a=function(a){if(o.onerror=o.onload=null,"load"===a.type)n();else{var s=a&&("load"===a.type?"missing":a.type),i=a&&a.target&&a.target.href||t,u=new Error("Loading CSS chunk "+e+" failed.\n("+i+")");u.code="CSS_CHUNK_LOAD_FAILED",u.type=s,u.request=i,o.parentNode.removeChild(o),r(u)}};return o.onerror=o.onload=a,o.href=t,document.head.appendChild(o),o},t=function(e,t){for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var o=n[r],a=o.getAttribute("data-href")||o.getAttribute("href");if("stylesheet"===o.rel&&(a===e||a===t))return o}var s=document.getElementsByTagName("style");for(r=0;r<s.length;r++){o=s[r],a=o.getAttribute("data-href");if(a===e||a===t)return o}},r=function(r){return new Promise((function(o,a){var s=n.miniCssF(r),i=n.p+s;if(t(s,i))return o();e(r,i,o,a)}))},o={143:0};n.f.miniCss=function(e,t){var n={139:1,227:1,314:1,725:1,834:1,865:1,918:1,991:1};o[e]?t.push(o[e]):0!==o[e]&&n[e]&&t.push(o[e]=r(e).then((function(){o[e]=0}),(function(t){throw delete o[e],t})))}}(),function(){var e={143:0};n.f.j=function(t,r){var o=n.o(e,t)?e[t]:void 0;if(0!==o)if(o)r.push(o[2]);else{var a=new Promise((function(n,r){o=e[t]=[n,r]}));r.push(o[2]=a);var s=n.p+n.u(t),i=new Error,u=function(r){if(n.o(e,t)&&(o=e[t],0!==o&&(e[t]=void 0),o)){var a=r&&("load"===r.type?"missing":r.type),s=r&&r.target&&r.target.src;i.message="Loading chunk "+t+" failed.\n("+a+": "+s+")",i.name="ChunkLoadError",i.type=a,i.request=s,o[1](i)}};n.l(s,u,"chunk-"+t,t)}},n.O.j=function(t){return 0===e[t]};var t=function(t,r){var o,a,s=r[0],i=r[1],u=r[2],l=0;if(s.some((function(t){return 0!==e[t]}))){for(o in i)n.o(i,o)&&(n.m[o]=i[o]);if(u)var c=u(n)}for(t&&t(r);l<s.length;l++)a=s[l],n.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return n.O(c)},r=self["webpackChunkdatabasir"]=self["webpackChunkdatabasir"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}();var r=n.O(void 0,[998],(function(){return n(1381)}));r=n.O(r)})(); +//# sourceMappingURL=app.3b9845e4.js.map \ No newline at end of file diff --git a/api/src/main/resources/static/js/app.3b9845e4.js.map b/api/src/main/resources/static/js/app.3b9845e4.js.map new file mode 100644 index 0000000..d2e22c3 --- /dev/null +++ b/api/src/main/resources/static/js/app.3b9845e4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/app.3b9845e4.js","mappings":"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","sources":["webpack://databasir/./src/api/Login.js","webpack://databasir/./src/App.vue","webpack://databasir/./src/App.vue?7ccd","webpack://databasir/./src/components/DatabaseIcon.vue","webpack://databasir/./src/components/DatabaseIcon.vue?d57f","webpack://databasir/./src/main.js","webpack://databasir/./src/layouts/Layout.vue","webpack://databasir/./src/components/AppNav.vue","webpack://databasir/./src/components/AppNav.vue?b6ff","webpack://databasir/./src/components/Breadcrumb.vue","webpack://databasir/./src/components/Breadcrumb.vue?ef20","webpack://databasir/./src/components/Avatar.vue","webpack://databasir/./src/components/Avatar.vue?e66a","webpack://databasir/./src/api/Search.js","webpack://databasir/./src/layouts/Layout.vue?7cb6","webpack://databasir/./src/router/breadcurmb.js","webpack://databasir/./src/router/index.js","webpack://databasir/./src/store/index.js","webpack://databasir/./src/utils/DialogWidthCalculator.js","webpack://databasir/./src/utils/auth.js","webpack://databasir/./src/utils/fetch.js","webpack://databasir/webpack/bootstrap","webpack://databasir/webpack/runtime/chunk loaded","webpack://databasir/webpack/runtime/compat get default export","webpack://databasir/webpack/runtime/define property getters","webpack://databasir/webpack/runtime/ensure chunk","webpack://databasir/webpack/runtime/get javascript chunk filename","webpack://databasir/webpack/runtime/get mini-css chunk filename","webpack://databasir/webpack/runtime/global","webpack://databasir/webpack/runtime/hasOwnProperty shorthand","webpack://databasir/webpack/runtime/load script","webpack://databasir/webpack/runtime/make namespace object","webpack://databasir/webpack/runtime/publicPath","webpack://databasir/webpack/runtime/css loading","webpack://databasir/webpack/runtime/jsonp chunk loading","webpack://databasir/webpack/startup"],"sourcesContent":["import axios from '@/utils/fetch';\r\n\r\nexport const login = (form) => {\r\n const data = new FormData();\r\n data.append('username', form.username);\r\n data.append('password', form.password);\r\n return axios.post('/login', data)\r\n}\r\n\r\nexport const oauth2Login = (registrationId, parameters) => {\r\n return axios.get('/oauth2/login/'+registrationId, {\r\n params: parameters\r\n })\r\n}\r\n\r\nexport const logout = () => {\r\n return axios.get('/logout')\r\n}\r\n\r\nexport const loginInfo = () => {\r\n return axios.get('/api/v1.0/login_info')\r\n}\r\n\r\nexport const refreshAccessToken = (refreshToken) => {\r\n return axios.post('/access_tokens', {\r\n refreshToken: refreshToken\r\n })\r\n}","<template>\r\n <router-view/>\r\n</template>\r\n","import { render } from \"./App.vue?vue&type=template&id=2b08e877\"\nconst script = {}\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <template v-if=\"databaseType.toLowerCase() == 'mysql'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/MySQL.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'postgresql'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/PostgreSQL.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'oracle'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/Oracle.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'mariadb'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/MariaDB.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'sqlserver'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/Sqlserver.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"icon\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"icon\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else>\r\n {{ databaseType }}\r\n </template>\r\n</template>\r\n\r\n\r\n<script>\r\n\r\nexport default {\r\n props: {\r\n databaseType: String,\r\n icon: String,\r\n },\r\n}\r\n</script>\r\n","import { render } from \"./DatabaseIcon.vue?vue&type=template&id=14de696c\"\nimport script from \"./DatabaseIcon.vue?vue&type=script&lang=js\"\nexport * from \"./DatabaseIcon.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport ElementPlus from 'element-plus'\r\nimport * as Icons from '@element-plus/icons'\r\n\r\nimport 'highlight.js/styles/stackoverflow-light.css';\r\nimport hljs from 'highlight.js/lib/core';\r\nimport javascript from 'highlight.js/lib/languages/javascript';\r\nimport hljsVuePlugin from \"@highlightjs/vue-plugin\";\r\n\r\nimport 'element-plus/dist/index.css'\r\nimport router from './router'\r\nimport store from './store'\r\nimport App from './App.vue'\r\nimport { user } from './utils/auth'\r\nimport DatabaseIcon from './components/DatabaseIcon.vue'\r\nimport { VueClipboard } from '@soerenmartius/vue3-clipboard'\r\n\r\n// element icon\r\nconst app = createApp(App)\r\nObject.keys(Icons).forEach(key => {\r\n app.component(key, Icons[key])\r\n})\r\napp.component('database-icon', DatabaseIcon)\r\n\r\n// permission directive\r\napp.directive('require-roles', {\r\n mounted(el, binding) {\r\n const roles = binding.value\r\n if (!user.hasAnyRoles(roles)) {\r\n el.parentNode && el.parentNode.removeChild(el)\r\n }\r\n },\r\n})\r\n\r\n// custom select directive\r\napp.directive(\"select-more\", {\r\n updated(el, binding) {\r\n const child = el.querySelector('.select-trigger');\r\n const id = child.getAttribute('aria-describedby');\r\n const poper = document.getElementById(id);\r\n if (poper == null) {\r\n return;\r\n }\r\n const selector = poper.parentElement.querySelector('.el-select-dropdown .el-scrollbar .el-select-dropdown__wrap');\r\n if (selector == null) {\r\n console.log('load select component failed')\r\n return;\r\n }\r\n selector.addEventListener('scroll', function () {\r\n const condition = this.scrollHeight - this.scrollTop - 1 <= this.clientHeight;\r\n if (condition) {\r\n binding.value();\r\n }\r\n });\r\n },\r\n});\r\n\r\n\r\nhljs.registerLanguage('javascript', javascript);\r\napp.use(hljsVuePlugin)\r\napp.use(store)\r\napp.use(ElementPlus)\r\napp.use(router)\r\napp.use(VueClipboard)\r\napp.mount('#app')\r\n\r\n","<template>\r\n <el-container class=\"databasir\">\r\n <el-aside>\r\n <AppNav class=\"databasir-nav\" @on-search=\"search()\"></AppNav>\r\n </el-aside>\r\n <el-header class=\"databasir-main-header\">\r\n <Breadcrumb></Breadcrumb>\r\n <Avatar></Avatar>\r\n </el-header>\r\n <el-main class=\"databasir-main\">\r\n <el-container>\r\n <el-main class=\"databasir-main-content\">\r\n <router-view></router-view>\r\n </el-main>\r\n </el-container>\r\n </el-main>\r\n <el-dialog\r\n v-model=\"showSearchDialog\"\r\n title=\"搜索\"\r\n :width=\"dialogWidth()\"\r\n >\r\n <el-input\r\n v-model=\"queryKeyword\"\r\n placeholder=\"分组、项目、database、schema 搜索\"\r\n style=\"width:100%;border:none;\"\r\n @change=\"onQuery\"\r\n >\r\n <template #prepend>\r\n <el-button type=\"text\" :loading=\"queryLoading\" icon=\"Search\"></el-button>\r\n </template>\r\n </el-input>\r\n <div style=\"margin-top:16px;\">\r\n <el-link :underline=\"false\" v-for=\"(item, index) in searchSelectHistory\" :key=\"index\" @click=\"jumpToPath(item.path)\" style=\"margin-right: 12px;margin-bottom:12px;\">\r\n <el-tag closable :type=\"item.type == 'group'?'primary':'success'\" @close=\"onRemoveSelectHistoryItem(item.label)\">\r\n {{item.label}}\r\n </el-tag>\r\n </el-link>\r\n </div>\r\n <el-divider v-if=\"queryData.projects.length > 0 || queryData.groups.length > 0\"></el-divider>\r\n \r\n <div class=\"search-container\">\r\n <div class=\"search-item\" v-for=\"(project,index) in queryData.projects\" :key=\"index\" @click=\"jumpToProject(project)\">\r\n <span>\r\n <el-tag type=\"success\">project</el-tag> <el-link :underline=\"false\"> {{project.groupName}} / {{project.projectName}}</el-link>\r\n </span>\r\n <span class=\"jump\">\r\n <el-icon><Right /></el-icon>\r\n </span>\r\n </div>\r\n <div class=\"search-item\" v-for=\"(group,index) in queryData.groups\" :key=\"index\" @click=\"jumpToGroup(group)\">\r\n <span>\r\n <el-tag>group</el-tag> <el-link :underline=\"false\"> {{group.name}}</el-link>\r\n </span>\r\n <span class=\"jump\">\r\n <el-icon><Right /></el-icon>\r\n </span>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n </el-container>\r\n</template>\r\n\r\n<style>\r\n.search-item {\r\n padding: 10px;\r\n width: 99%;\r\n margin-bottom: 12px;\r\n margin-right:12px;\r\n display: flex;\r\n justify-content: space-between;\r\n border-radius: 8px;\r\n}\r\n.search-item:hover {\r\n background-color: #F0F2F5;\r\n}\r\n.search-item .jump {\r\n margin-right: 8px;\r\n}\r\n\r\n.search-container {\r\n max-height: 420px;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n}\r\n\r\n.databasir-nav {\r\n position: fixed;\r\n transform: scale(1, 1);\r\n left: 0;\r\n bottom: 0;\r\n top: 0;\r\n}\r\n\r\n.databasir-main-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n position: fixed;\r\n transform: scale(1, 1);\r\n top: 0px;\r\n right: 0px;\r\n left: 50px;\r\n padding: 30px;\r\n margin-left: 33px;\r\n background: #FFF;\r\n z-index: 100;\r\n border-color: #EEE;\r\n border-width: 0px 0px 1px 0px;\r\n border-style: solid;\r\n}\r\n\r\n.databasir {\r\n display: block;\r\n}\r\n\r\n.databasir-main {\r\n position: relative;\r\n margin-left: 60px;\r\n margin-top: 80px;\r\n --el-main-padding: 0px 20px 20px 20px;\r\n}\r\n\r\n.databasir-main-expand {\r\n margin-left: 50px;\r\n}\r\n\r\n.databasir-main-content {\r\n max-width: 95%;\r\n --el-main-padding: 0px 20px 20px 20px;\r\n}\r\n\r\n.h2 {\r\n font-size: 24px;\r\n color: #606266;\r\n font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',\r\n 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;\r\n margin-top: 13px;\r\n margin-bottom: 13px;\r\n}\r\n.h3 {\r\n font-size: 20px;\r\n color: #909399;\r\n font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',\r\n 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;\r\n margin-top: 18px;\r\n margin-bottom: 18px;\r\n}\r\n\r\n</style>\r\n<script>\r\nimport AppNav from '../components/AppNav.vue'\r\nimport Breadcrumb from '../components/Breadcrumb.vue'\r\nimport Avatar from '../components/Avatar.vue'\r\nimport { query } from '@/api/Search.js'\r\nimport { dialogPercentWidth } from \"@/utils/DialogWidthCalculator\"\r\n\r\n\r\nexport default {\r\n components: { AppNav, Breadcrumb, Avatar },\r\n data() {\r\n return {\r\n showSearchDialog: false,\r\n queryKeyword: '',\r\n queryData: {\r\n projects: [],\r\n groups: []\r\n },\r\n queryLoading: false,\r\n searchSelectHistory: [],\r\n searchSelectHistoryKey: 'globalSearchSelectHistory'\r\n }\r\n },\r\n mounted() {\r\n this.loadSearchSelectHistory()\r\n },\r\n methods: {\r\n search() {\r\n this.showSearchDialog = true\r\n },\r\n onQuery(val) {\r\n this.queryLoading = true;\r\n query({ query: val })\r\n .then(resp => {\r\n if (!resp.errCode) {\r\n this.queryData = resp.data\r\n }\r\n }).finally(() => this.queryLoading = false)\r\n },\r\n jumpToGroup(group) {\r\n this.showSearchDialog = false\r\n const path = '/groups/'+group.id+\"?groupName=\"+group.name;\r\n const select = {\r\n label: group.name,\r\n path: path,\r\n type: 'group'\r\n }\r\n const history = this.searchSelectHistory.filter(item => item.label != select.label)\r\n history.unshift(select)\r\n history.splice(15)\r\n this.searchSelectHistory = history\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n window.location=path\r\n },\r\n jumpToProject(project) {\r\n this.showSearchDialog = false\r\n const path = '/groups/'+project.groupId+'/projects/'+project.projectId+'/documents?groupName='+project.groupName+\"&projectName=\"+project.projectName\r\n \r\n const select = {\r\n label: project.groupName+ ' / '+project.projectName,\r\n path: path,\r\n type: 'project'\r\n }\r\n const history = this.searchSelectHistory.filter(item => item.label != select.label)\r\n history.unshift(select)\r\n history.splice(15)\r\n this.searchSelectHistory = history\r\n\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n window.location=path\r\n },\r\n jumpToPath(path) {\r\n window.location=path\r\n },\r\n loadSearchSelectHistory() {\r\n const key = this.searchSelectHistoryKey\r\n if (window.localStorage.getItem(key) != null) {\r\n const obj = JSON.parse(window.localStorage.getItem(key));\r\n this.searchSelectHistory = obj\r\n }\r\n },\r\n onRemoveSelectHistoryItem(label) {\r\n const history = this.searchSelectHistory.filter(item => item.label != label)\r\n this.searchSelectHistory = history\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n },\r\n dialogWidth() {\r\n return dialogPercentWidth()\r\n }\r\n }\r\n}\r\n\r\n</script>","<template>\r\n <el-menu\r\n router\r\n :collapse=\"isCollapse\"\r\n mode=\"vertical\"\r\n class=\"left-menu\">\r\n <el-menu-item index=\"/\">\r\n <el-icon><home-filled /></el-icon>\r\n <template #title>\r\n <span>Databasir</span>\r\n </template>\r\n </el-menu-item>\r\n <template v-for=\"(menu, index) in routes\" :key=\"index\" >\r\n <el-sub-menu v-if=\"isShowMenu(menu) && menu.children.length > 0 && menu.children.some(ele => !ele.hidden)\" :index=\"menu.path\">\r\n <template #title> \r\n <el-icon>\r\n <component :is=\"menu.icon\" />\r\n </el-icon>\r\n <span>{{ menu.meta.nav }}</span>\r\n </template>\r\n <template :key=\"index + '-' + childIndex\" v-for=\"(child, childIndex) in menu.children\">\r\n <el-menu-item v-if=\"!child.hidden\" :index=\"menu.path+'/'+child.path\">\r\n <el-icon v-if=\"child.icon\">\r\n <component :is=\"child.icon\" />\r\n </el-icon>\r\n <template #title>\r\n <span>{{ child.meta.nav }}</span>\r\n </template>\r\n </el-menu-item>\r\n </template>\r\n </el-sub-menu>\r\n <el-menu-item v-else-if=\"isShowMenu(menu)\" :index=\"menu.path\">\r\n <el-icon>\r\n <component :is=\"menu.icon\" />\r\n </el-icon>\r\n <template #title>\r\n <span>{{ menu.meta.nav }}</span>\r\n </template> \r\n </el-menu-item>\r\n \r\n </template>\r\n <el-menu-item index=\"\" @click=\"showSearchDialog()\">\r\n <el-button type=\"text\" icon=\"Search\" style=\"color: #303133;\"></el-button>\r\n </el-menu-item>\r\n </el-menu>\r\n \r\n</template>\r\n<style>\r\n.left-menu:not(.el-menu--collapse) {\r\n height: 100vh;\r\n}\r\n</style>\r\n<script>\r\nimport { useRouter } from 'vue-router'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { user } from '../utils/auth'\r\nimport store from '../store/index'\r\n\r\nexport default defineComponent({\r\n emits: ['on-search'],\r\n setup(props, context) {\r\n const isCollapse = computed(() => store.state.menu.isCollapse)\r\n const router = useRouter()\r\n const routes = router.options.routes\r\n\r\n const isShowMenu = (menu) => {\r\n if (menu.hidden) {\r\n return false\r\n }\r\n if (menu.meta.requireAnyRoles && menu.meta.requireAnyRoles.length > 0) {\r\n const hasAnyRoles = user.hasAnyRoles(menu.meta.requireAnyRoles)\r\n if (!hasAnyRoles) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n\r\n const expandMenu = () => {\r\n store.commit('expandMenu')\r\n }\r\n\r\n const showSearchDialog = () => {\r\n context.emit('on-search')\r\n }\r\n\r\n return {\r\n isCollapse,\r\n isShowMenu,\r\n expandMenu,\r\n routes,\r\n showSearchDialog,\r\n }\r\n }\r\n})\r\n</script>","import { render } from \"./AppNav.vue?vue&type=template&id=0c349a0c\"\nimport script from \"./AppNav.vue?vue&type=script&lang=js\"\nexport * from \"./AppNav.vue?vue&type=script&lang=js\"\n\nimport \"./AppNav.vue?vue&type=style&index=0&id=0c349a0c&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <el-breadcrumb separator=\"/\" >\r\n <el-breadcrumb-item v-if=\"!menuIsCollapse\">\r\n <el-link @click=\"onFoldMenu()\" :underline=\"false\">\r\n <el-icon><fold /></el-icon>\r\n </el-link>\r\n </el-breadcrumb-item>\r\n <el-breadcrumb-item v-for=\"(item, index) in breadcrumbs\" :key=\"index\" :to=\"item.to\">{{ item.name }}</el-breadcrumb-item>\r\n </el-breadcrumb>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default{\r\n computed: {\r\n breadcrumbs: function() {\r\n if (typeof this.$route.meta.breadcrumb === 'function') {\r\n return this.$route.meta.breadcrumb(this.$route, this.$store.state)\r\n } else {\r\n return []\r\n }\r\n },\r\n menuIsCollapse() {\r\n return this.$store.state.menu.isCollapse\r\n }\r\n },\r\n methods: {\r\n onFoldMenu() {\r\n this.$store.commit('foldMenu')\r\n }\r\n }\r\n}\r\n</script>","import { render } from \"./Breadcrumb.vue?vue&type=template&id=055586aa\"\nimport script from \"./Breadcrumb.vue?vue&type=script&lang=js\"\nexport * from \"./Breadcrumb.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <el-dropdown>\r\n <el-avatar :size=\"36\" :src=\"avatarUrl\" icon=\"avatar\"></el-avatar>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item>{{ userNickname }}</el-dropdown-item>\r\n\r\n <el-dropdown-item icon=\"user\" divided @click=\"toProfilePage()\">个人中心</el-dropdown-item>\r\n <el-dropdown-item icon=\"back\" @click=\"onLogout()\">注销登陆</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n</template>\r\n\r\n<script>\r\nimport { user } from '../utils/auth'\r\n\r\nexport default {\r\n computed: {\r\n userNickname() {\r\n return this.$store.state.user.nickname \r\n },\r\n avatarUrl() {\r\n return this.$store.state.user.avatar \r\n }\r\n },\r\n methods: {\r\n onLogout(){\r\n user.removeUserLoginData()\r\n this.$router.push({path: '/login'})\r\n },\r\n toProfilePage() {\r\n this.$router.push({ path: '/profile'})\r\n }\r\n }\r\n}\r\n</script>\r\n","import { render } from \"./Avatar.vue?vue&type=template&id=34a219c2\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import axios from '@/utils/fetch';\r\n\r\nconst base = \"/api/v1.0/search\"\r\n\r\nexport const query = (keyword) => {\r\n return axios.get(base, {\r\n params: keyword\r\n })\r\n}","import { render } from \"./Layout.vue?vue&type=template&id=68ce833b\"\nimport script from \"./Layout.vue?vue&type=script&lang=js\"\nexport * from \"./Layout.vue?vue&type=script&lang=js\"\n\nimport \"./Layout.vue?vue&type=style&index=0&id=68ce833b&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","function index() {\r\n return {\r\n name:'首页',\r\n to: {\r\n path: '/'\r\n }\r\n }\r\n}\r\n\r\nfunction groupList() {\r\n return {\r\n name:'项目中心',\r\n to: {\r\n name: 'groupListPage'\r\n } \r\n }\r\n}\r\n\r\nfunction groupDashboard(route) {\r\n var groupName = '项目组'\r\n if (route.query.groupName) {\r\n groupName = route.query.groupName\r\n }\r\n return {\r\n name: groupName,\r\n to: {\r\n path: '/groups/'+route.params.groupId\r\n } \r\n }\r\n}\r\n\r\nfunction groupProjectDocument(route) {\r\n var name = '项目文档'\r\n if (route.query.projectName) {\r\n name = route.query.projectName\r\n }\r\n var projectId = route.params.projectId\r\n var groupId = route.params.groupId\r\n return {\r\n name: name,\r\n to: {\r\n path: '/groups/' + groupId + '/projects/' + projectId + '/documents',\r\n query: {\r\n projectName: name\r\n }\r\n } \r\n }\r\n}\r\n\r\nfunction userList() {\r\n return {\r\n name:'用户列表',\r\n to: {\r\n path: '/users'\r\n } \r\n }\r\n}\r\n\r\n\r\nfunction userProfile() {\r\n return {\r\n name:'个人中心',\r\n to: {\r\n path: '/profile'\r\n } \r\n }\r\n}\r\n\r\nfunction sysEmailEdit() {\r\n return {\r\n name:'邮箱设置',\r\n to: {\r\n path: '/settings/sysEmail'\r\n } \r\n }\r\n}\r\n\r\nfunction sysLog() {\r\n return {\r\n name:'操作日志',\r\n to: {\r\n path: '/settings/sysLog'\r\n } \r\n }\r\n}\r\n\r\nfunction sysOauth2() {\r\n return {\r\n name:'登录设置',\r\n to: {\r\n path: '/settings/sysOauth2'\r\n } \r\n }\r\n}\r\n\r\nfunction sysDatabaseType() {\r\n return {\r\n name:'数据库扩展',\r\n to: {\r\n path: '/settings/sysDatabaseType'\r\n } \r\n }\r\n}\r\n\r\nfunction sysDocumentTemplate() {\r\n return {\r\n name:'文档模板',\r\n to: {\r\n path: '/settings/sysDocumentTemplate'\r\n } \r\n }\r\n}\r\n\r\n\r\nconst breadcurmbMap = {\r\n index: () => [index() ],\r\n groupList: () => [index(), groupList()],\r\n groupDashboard: (route, state) => [index(), groupList(), groupDashboard(route, state)],\r\n groupProjectDocument: (route, state) => [index(), groupList(), groupDashboard(route, state), groupProjectDocument(route)],\r\n userProfile: () => [index(), userProfile()],\r\n userList: () => [index(), userList()],\r\n sysEmailEdit: () => [index(), sysEmailEdit()],\r\n sysLog: () => [index(), sysLog()],\r\n sysOauth2: () => [index(), sysOauth2()],\r\n sysDatabaseType: () => [index(), sysDatabaseType()],\r\n sysDocumentTemplate: () => [index(), sysDocumentTemplate()],\r\n}\r\n\r\nexport default breadcurmbMap","import { createRouter, createWebHistory } from 'vue-router';\r\nimport Layout from \"../layouts/Layout.vue\"\r\nimport breadcurmbMap from './breadcurmb'\r\nimport { token } from '../utils/auth';\r\n\r\nconst routes = [\r\n {\r\n path: '/login',\r\n component: () => import('@/views/Login.vue'),\r\n hidden: true,\r\n meta: {\r\n requireAuth: false\r\n }\r\n },\r\n {\r\n path: '/login/oauth2/:id',\r\n component: () => import('@/views/OAuth2Login.vue'),\r\n hidden: true,\r\n props: true,\r\n meta: {\r\n requireAuth: false\r\n }\r\n },\r\n {\r\n path: '/',\r\n hidden: true,\r\n component: Layout,\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/GroupList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupList\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/groups',\r\n icon: 'Collection',\r\n component: Layout,\r\n meta: {\r\n nav: '项目中心',\r\n },\r\n children: [\r\n {\r\n path: '',\r\n name: 'groupListPage',\r\n hidden: true,\r\n component: () => import('@/views/GroupList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupList\r\n }\r\n },\r\n {\r\n path: ':groupId',\r\n hidden: true,\r\n component: () => import('@/views/GroupDashboard.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupDashboard\r\n }\r\n },\r\n {\r\n path: ':groupId/projects/:projectId/documents',\r\n hidden: true,\r\n component: () => import('@/views/Document.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupProjectDocument\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/users',\r\n icon: 'List',\r\n component: Layout,\r\n meta: {\r\n nav:'用户中心',\r\n requireAnyRoles: ['SYS_OWNER']\r\n },\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/UserList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.userList\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/profile',\r\n icon: 'User',\r\n component: Layout,\r\n meta: {\r\n nav: '个人中心',\r\n breadcrumb: breadcurmbMap.userProfile\r\n },\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/UserProfile.vue')\r\n }\r\n ]\r\n },\r\n {\r\n path: '/settings',\r\n icon: 'Setting',\r\n component: Layout,\r\n meta: {\r\n nav:'系统中心',\r\n requireAnyRoles: ['SYS_OWNER']\r\n },\r\n children: [\r\n {\r\n path: 'sysEmail',\r\n icon: 'Notification',\r\n component: () => import('@/views/SysEmailEdit.vue'),\r\n meta: {\r\n nav: '邮箱设置',\r\n breadcrumb: breadcurmbMap.sysEmailEdit\r\n }\r\n },\r\n {\r\n path: 'sysLog',\r\n icon: 'Document',\r\n component: () => import('@/views/SysLog.vue'),\r\n meta: {\r\n nav: '操作日志',\r\n breadcrumb: breadcurmbMap.sysLog\r\n }\r\n },\r\n {\r\n path: 'sysOauth2',\r\n icon: 'Connection',\r\n component: () => import('@/views/SysOauth2.vue'),\r\n meta: {\r\n nav: '登陆设置',\r\n breadcrumb: breadcurmbMap.sysOauth2\r\n }\r\n },\r\n {\r\n path: 'sysDatabaseType',\r\n icon: 'office-building',\r\n component: () => import('@/views/SysDatabaseType.vue'),\r\n meta: {\r\n nav: '数据库扩展',\r\n breadcrumb: breadcurmbMap.sysDatabaseType\r\n }\r\n },\r\n {\r\n path: 'sysDocumentTemplate',\r\n icon: 'document-add',\r\n component: () => import('@/views/SysDocumentTemplateProperty.vue'),\r\n meta: {\r\n nav: '文档模板',\r\n breadcrumb: breadcurmbMap.sysDocumentTemplate\r\n }\r\n },\r\n // TODO\r\n {\r\n path: 'sysKey',\r\n icon: 'Key',\r\n hidden: 'true',\r\n component: Layout,\r\n meta: {\r\n nav: '系统秘钥',\r\n breadcrumb: breadcurmbMap.sysKeyEdit\r\n }\r\n }\r\n ]\r\n }\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes\r\n});\r\n\r\n// 权限路由守卫\r\nrouter.beforeEach((to, from, next) => {\r\n if (to.meta.requireAuth == false) {\r\n if (to.path == '/login' && token.hasAccessToken()) {\r\n next(from)\r\n } else {\r\n next()\r\n }\r\n } else {\r\n if(token.hasAccessToken()) {\r\n next()\r\n } else {\r\n next({ path: '/login' })\r\n }\r\n }\r\n})\r\n\r\n// groupName 参数路由守卫\r\nrouter.beforeEach((to, from, next) => {\r\n if (!to.query.groupName && from.query.groupName) {\r\n to.query.groupName = from.query.groupName\r\n } \r\n if (!to.query.projectName && from.query.projectName) {\r\n to.query.projectName = from.query.projectName\r\n } \r\n next();\r\n})\r\n\r\nexport default router;","import { createStore } from 'vuex'\r\nimport { user } from '../utils/auth'\r\n\r\nconst store = createStore({\r\n state() {\r\n const data = {\r\n user: {\r\n nickname: null,\r\n usernmae: null,\r\n email: null,\r\n avatar: null,\r\n },\r\n groupListActiveTab: null,\r\n menu: {\r\n isCollapse: true,\r\n }\r\n }\r\n const loginData = user.loadUserLoginData()\r\n if (loginData) {\r\n data.user.nickname = loginData.nickname\r\n data.user.usernmae = loginData.usernmae\r\n data.user.email = loginData.email\r\n data.user.avatar = loginData.avatar\r\n }\r\n return data;\r\n },\r\n mutations: {\r\n userUpdate(state, param) {\r\n if (param.nickname) {\r\n state.user.nickname = param.nickname\r\n }\r\n if (param.usernmae) {\r\n state.user.usernmae = param.usernmae\r\n }\r\n if (param.email) {\r\n state.user.email = param.email\r\n }\r\n if (param.avatar) {\r\n state.user.avatar = param.avatar\r\n }\r\n },\r\n foldMenu(state) {\r\n state.menu.isCollapse = true\r\n },\r\n expandMenu(state) {\r\n state.menu.isCollapse = false\r\n },\r\n switchGroupListActiveTab(state, groupListActiveTab) {\r\n if (groupListActiveTab) {\r\n state.groupListActiveTab = groupListActiveTab\r\n }\r\n }\r\n }\r\n})\r\n\r\nexport default store","export const responsive = (map) => {\r\n const width = window.innerWidth\r\n if (width >= 1920) {\r\n return (map.xl?map.xl: null)\r\n } else if (width >= 1200) {\r\n return (map.lg?map.lg: map.xl?map.xl: null)\r\n\r\n } else if (width >= 992) {\r\n return (map.md? map.md: map.lg?map.lg: map.xl?map.xl: null)\r\n\r\n } else if (width >= 768) {\r\n return map.sm ? map.sm : (map.md? map.md: map.lg?map.lg: map.xl?map.xl: null)\r\n } else {\r\n return map.xs ? map.xs :(map.sm ? map.sm : (map.md? map.md: map.lg?map.lg: map.xl?map.xl: null))\r\n }\r\n}\r\n\r\n\r\nexport const dialogPercentWidth = () => {\r\n return responsive({\r\n xl: \"36%\",\r\n lg: \"42%\",\r\n md: \"60%\",\r\n sm: \"80%\",\r\n xs: \"90%\"\r\n })\r\n}","const accessTokenKey = 'accessToken'\r\nconst accessTokenExpireAtKey = 'accessTokenExpireAt'\r\nconst userLoginDataKey = 'userLoginData'\r\n\r\nexport const token = {\r\n\r\n hasAccessToken() {\r\n const accessToken = this.loadAccessToken()\r\n return accessToken\r\n },\r\n\r\n hasValidAccessToken() {\r\n const accessToken = this.loadAccessToken()\r\n const expireAt = window.localStorage.getItem(accessTokenExpireAtKey)\r\n if (!accessToken || !expireAt) {\r\n console.log('warn: not found accessToken and expireAt key')\r\n return false\r\n }\r\n // 10s gap\r\n return expireAt > new Date().getTime() -(1000 * 10)\r\n },\r\n\r\n saveAccessToken(token, tokenExpireAt) {\r\n window.localStorage.setItem(accessTokenKey, token)\r\n window.localStorage.setItem(accessTokenExpireAtKey, tokenExpireAt)\r\n },\r\n\r\n loadAccessToken() {\r\n let token = window.localStorage.getItem(accessTokenKey)\r\n if (token) {\r\n return token\r\n }\r\n return null\r\n }\r\n}\r\n\r\nexport const user = {\r\n\r\n saveUserLoginData(userLoginData) {\r\n window.localStorage.setItem(accessTokenKey, userLoginData.accessToken)\r\n window.localStorage.setItem(accessTokenExpireAtKey, userLoginData.accessTokenExpireAt)\r\n window.localStorage.setItem(userLoginDataKey, JSON.stringify(userLoginData))\r\n },\r\n\r\n removeUserLoginData() {\r\n window.localStorage.removeItem(userLoginDataKey)\r\n window.localStorage.removeItem(accessTokenKey)\r\n window.localStorage.removeItem(accessTokenExpireAtKey)\r\n },\r\n\r\n loadUserLoginData() {\r\n if (!window.localStorage.getItem(userLoginDataKey)) {\r\n return null;\r\n } \r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n return JSON.parse(data)\r\n },\r\n\r\n hasAnyRoles(roles) {\r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n if (data == null) {\r\n return false\r\n }\r\n const user = JSON.parse(data)\r\n return user\r\n .roles\r\n .map(role => {\r\n if (role.groupId) {\r\n return role.role + '?groupId=' + role.groupId\r\n } else {\r\n return role.role\r\n }\r\n })\r\n .some(exists => roles.some(expected => expected == exists))\r\n },\r\n\r\n getRefreshToken() {\r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n if (data == null) {\r\n return null\r\n }\r\n const user = JSON.parse(data)\r\n return user.refreshToken\r\n }\r\n}\r\n","import axios from 'axios';\r\nimport { ElMessage } from 'element-plus'\r\nimport router from '../router';\r\nimport { token, user } from './auth';\r\nimport { refreshAccessToken } from '../api/Login';\r\n\r\nconst BASE_API = process.env.VUE_APP_API_URL\r\n// default config\r\naxios.defaults.baseURL = BASE_API,\r\naxios.defaults.timeout = 15 * 1000;\r\naxios.defaults.withCredentials = false;\r\naxios.defaults.headers.post['Content-Type'] = 'application/json';\r\naxios.defaults.headers.post[\"Access-Control-Allow-Origin-Type\"] = \"*\";\r\n\r\n// token request config\r\n// eslint-disable-next-line\r\nlet tokenRefreshLock = false\r\n\r\nfunction lock() {\r\n tokenRefreshLock = true\r\n}\r\n\r\nfunction unlock() {\r\n tokenRefreshLock = false\r\n}\r\n\r\nlet blockRequests = []\r\n\r\nfunction blockRequest(request) {\r\n blockRequests.push(request)\r\n}\r\n\r\nfunction relaseRequests(config) {\r\n blockRequests.forEach(request => {\r\n request(config)\r\n })\r\n blockRequests = []\r\n}\r\n\r\n// 请求拦截器\r\naxios.interceptors.request.use(async function (config) {\r\n if (config.url == '/access_tokens' || config.url.startsWith('/oauth2') || config.url == '/login') {\r\n return config\r\n }\r\n\r\n if (token.hasValidAccessToken()) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n return config;\r\n }\r\n if (tokenRefreshLock) {\r\n const promise = new Promise((resolve) => {\r\n blockRequest(() => {\r\n if (config) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n }\r\n resolve(config)\r\n })\r\n })\r\n return promise\r\n } \r\n return config\r\n}, function (error) {\r\n unlock()\r\n return Promise.reject(error);\r\n});\r\n\r\n// response拦截器\r\naxios.interceptors.response.use(\r\n (response) => {\r\n const res = response.data;\r\n if (res.errCode) {\r\n notify(res.errMessage)\r\n }\r\n return res;\r\n },\r\n (error) => {\r\n if (error.response) {\r\n if(error.response.status == 401) {\r\n if (error.response.data.errCode == 'X_0002') {\r\n user.removeUserLoginData()\r\n notify('登陆状态失效,请重新登陆')\r\n redirectLogin()\r\n } else if (error.response.data.errCode == 'X_0004') {\r\n return refresh(error.config).then(() => retryFromResponse(error.config))\r\n }\r\n } else if (error.response.status == 403) {\r\n notify('无执行该操作的权限')\r\n } else {\r\n notify(error.message)\r\n } \r\n } else {\r\n console.log(error)\r\n notify('网络异常,请稍后再试')\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nasync function refresh(config) {\r\n const refreshToken = user.getRefreshToken()\r\n if(!refreshToken) {\r\n redirectLogin()\r\n }\r\n\r\n if(tokenRefreshLock) {\r\n return new Promise((resolve) => {\r\n blockRequest(() => {\r\n if (config) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n }\r\n resolve(config)\r\n })\r\n })\r\n }\r\n\r\n lock()\r\n return await refreshAccessToken(refreshToken).then(resp => {\r\n if (resp.errCode) {\r\n redirectLogin()\r\n } else {\r\n token.saveAccessToken(resp.data.accessToken, resp.data.accessTokenExpireAt)\r\n unlock()\r\n }\r\n }).finally(() => unlock())\r\n}\r\n\r\nasync function retryFromResponse(config) {\r\n try {\r\n const res = await axios({\r\n method: config.method,\r\n data: config.data,\r\n url: config.url,\r\n baseURL: config.baseURL,\r\n headers: {\r\n Authorization: 'Bearer ' + token.loadAccessToken()\r\n },\r\n })\r\n relaseRequests(config)\r\n return res;\r\n } catch(error) {\r\n console.log(error)\r\n notify(\"网络异常,请稍后再试\");\r\n }\r\n}\r\n\r\n\r\nfunction redirectLogin () {\r\n user.removeUserLoginData()\r\n router.replace('/login')\r\n}\r\n\r\nfunction notify(msg) {\r\n ElMessage({\r\n message: msg,\r\n type: 'error',\r\n duration: 5 * 1000,\r\n grouping: true,\r\n });\r\n}\r\n\r\nexport default axios;\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"17\":\"f8914b9e\",\"117\":\"1f755d73\",\"139\":\"64be11ff\",\"227\":\"b20a14b0\",\"243\":\"47faec0e\",\"314\":\"358d11d3\",\"469\":\"52881502\",\"725\":\"e0865a14\",\"834\":\"72e75f55\",\"865\":\"d67048bf\",\"918\":\"268bc178\",\"991\":\"73d56bf1\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"139\":\"a7dec339\",\"227\":\"90d5c1b0\",\"314\":\"6b48a93a\",\"725\":\"82a2f213\",\"834\":\"f2905e33\",\"865\":\"7df1e56e\",\"918\":\"b113d9de\",\"991\":\"1969b1d0\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"databasir:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"139\":1,\"227\":1,\"314\":1,\"725\":1,\"834\":1,\"865\":1,\"918\":1,\"991\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdatabasir\"] = self[\"webpackChunkdatabasir\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(1381); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["login","form","data","FormData","append","username","password","axios","oauth2Login","registrationId","parameters","params","refreshAccessToken","refreshToken","_createBlock","_component_router_view","script","__exports__","render","$props","toLowerCase","_component_el_tooltip","content","placement","_createElementVNode","src","require","style","_createElementBlock","_Fragment","key","props","databaseType","String","icon","app","createApp","App","Object","keys","Icons","forEach","component","DatabaseIcon","directive","mounted","el","binding","roles","value","user","parentNode","removeChild","updated","child","querySelector","id","getAttribute","poper","document","getElementById","selector","parentElement","addEventListener","condition","this","scrollHeight","scrollTop","clientHeight","console","log","hljs","javascript","use","hljsVuePlugin","store","ElementPlus","router","VueClipboard","mount","class","_component_el_container","_createVNode","_component_el_aside","_component_AppNav","onOnSearch","$options","_component_el_header","_component_Breadcrumb","_component_Avatar","_component_el_main","_component_el_dialog","$data","$event","title","width","_component_el_input","placeholder","onChange","prepend","_component_el_button","type","loading","_renderList","item","index","_component_el_link","underline","onClick","path","_component_el_tag","closable","onClose","label","projects","length","groups","_component_el_divider","project","groupName","_toDisplayString","projectName","_component_el_icon","_component_Right","group","name","_component_el_menu","collapse","_ctx","mode","_component_el_menu_item","_hoisted_1","_component_home_filled","menu","children","some","ele","hidden","_component_el_sub_menu","_resolveDynamicComponent","meta","nav","childIndex","defineComponent","emits","setup","context","isCollapse","computed","useRouter","routes","options","isShowMenu","requireAnyRoles","hasAnyRoles","expandMenu","showSearchDialog","emit","_component_el_breadcrumb","separator","_component_el_breadcrumb_item","_component_fold","to","breadcrumbs","$route","breadcrumb","$store","state","menuIsCollapse","methods","onFoldMenu","commit","_component_el_dropdown","dropdown","_component_el_dropdown_menu","_component_el_dropdown_item","divided","_component_el_avatar","size","userNickname","nickname","avatarUrl","avatar","onLogout","$router","push","toProfilePage","base","query","keyword","components","AppNav","Breadcrumb","Avatar","queryKeyword","queryData","queryLoading","searchSelectHistory","searchSelectHistoryKey","loadSearchSelectHistory","search","onQuery","val","then","resp","errCode","finally","jumpToGroup","select","history","filter","unshift","splice","window","localStorage","setItem","JSON","stringify","location","jumpToProject","groupId","projectId","jumpToPath","getItem","obj","parse","onRemoveSelectHistoryItem","dialogWidth","dialogPercentWidth","groupList","groupDashboard","route","groupProjectDocument","userList","userProfile","sysEmailEdit","sysLog","sysOauth2","sysDatabaseType","sysDocumentTemplate","breadcurmbMap","requireAuth","Layout","createRouter","createWebHistory","beforeEach","from","next","token","createStore","usernmae","email","groupListActiveTab","loginData","mutations","userUpdate","param","foldMenu","switchGroupListActiveTab","responsive","map","innerWidth","xl","lg","md","sm","xs","accessTokenKey","accessTokenExpireAtKey","userLoginDataKey","hasAccessToken","accessToken","loadAccessToken","hasValidAccessToken","expireAt","Date","getTime","saveAccessToken","tokenExpireAt","saveUserLoginData","userLoginData","accessTokenExpireAt","removeUserLoginData","removeItem","loadUserLoginData","role","exists","expected","getRefreshToken","BASE_API","process","VUE_APP_API_URL","tokenRefreshLock","lock","unlock","blockRequests","blockRequest","request","relaseRequests","config","async","refresh","redirectLogin","Promise","resolve","headers","Authorization","retryFromResponse","res","method","url","baseURL","error","notify","msg","ElMessage","message","duration","grouping","startsWith","promise","reject","response","errMessage","status","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","needAttach","scripts","getElementsByTagName","s","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","p","createStylesheet","fullhref","linkTag","rel","onLinkComplete","errorType","realHref","href","err","Error","code","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/api/src/main/resources/static/js/app.7ac511a9.js b/api/src/main/resources/static/js/app.7ac511a9.js deleted file mode 100644 index a7c90f9..0000000 --- a/api/src/main/resources/static/js/app.7ac511a9.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";var e={152:function(e,t,n){n.d(t,{x4:function(){return o},rd:function(){return a},jb:function(){return s}});var r=n(3872);const o=e=>{const t=new FormData;return t.append("username",e.username),t.append("password",e.password),r.Z.post("/login",t)},a=(e,t)=>r.Z.get("/oauth2/login/"+e,{params:t}),s=e=>r.Z.post("/access_tokens",{refreshToken:e})},1381:function(e,t,n){var r=n(9963),o=n(8722),a=n(137),s=n(837),i=n(9622),u=n(6246),c=(n(4415),n(2680)),l=n(4239),d=n(6252);function p(e,t){const n=(0,d.up)("router-view");return(0,d.wg)(),(0,d.j4)(n)}var m=n(3744);const h={},f=(0,m.Z)(h,[["render",p]]);var g=f,y=n(1836),w=n(3577);const b=["src"],v=["src"],k=["src"],S=["src"],_=["src"],j=["src"];function T(e,t,r,o,a,s){const i=(0,d.up)("el-tooltip");return"mysql"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:0,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:n(2357),style:{"max-width":"33px","max-height":"33px"}},null,8,b)])),_:1},8,["content"])):"postgresql"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:1,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:n(3609),style:{"max-width":"33px","max-height":"33px"}},null,8,v)])),_:1},8,["content"])):"oracle"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:2,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:n(2260),style:{"max-width":"33px","max-height":"33px"}},null,8,k)])),_:1},8,["content"])):"mariadb"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:3,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:n(6658),style:{"max-width":"33px","max-height":"33px"}},null,8,S)])),_:1},8,["content"])):"sqlserver"==r.databaseType.toLowerCase()?((0,d.wg)(),(0,d.j4)(i,{key:4,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:n(5641),style:{"max-width":"33px","max-height":"33px"}},null,8,_)])),_:1},8,["content"])):r.icon?((0,d.wg)(),(0,d.j4)(i,{key:5,content:r.databaseType,placement:"left"},{default:(0,d.w5)((()=>[(0,d._)("img",{src:r.icon,style:{"max-width":"33px","max-height":"33px"}},null,8,j)])),_:1},8,["content"])):((0,d.wg)(),(0,d.iD)(d.HY,{key:6},[(0,d.Uk)((0,w.zw)(r.databaseType),1)],64))}var x={props:{databaseType:String,icon:String}};const D=(0,m.Z)(x,[["render",T]]);var A=D,L=n(4890);const q=(0,r.ri)(g);Object.keys(a).forEach((e=>{q.component(e,a[e])})),q.component("database-icon",A),q.directive("require-roles",{mounted(e,t){const n=t.value;y.E.hasAnyRoles(n)||e.parentNode&&e.parentNode.removeChild(e)}}),q.directive("select-more",{updated(e,t){const n=e.querySelector(".select-trigger"),r=n.getAttribute("aria-describedby"),o=document.getElementById(r);if(null==o)return;const a=o.parentElement.querySelector(".el-select-dropdown .el-scrollbar .el-select-dropdown__wrap");null!=a?a.addEventListener("scroll",(function(){const e=this.scrollHeight-this.scrollTop-1<=this.clientHeight;e&&t.value()})):console.log("load select component failed")}}),s.Z.registerLanguage("javascript",i.Z),q.use(u.Z),q.use(l.Z),q.use(o.Z),q.use(c.Z),q.use(L._),q.mount("#app")},2680:function(e,t,n){n.d(t,{Z:function(){return oe}});var r=n(2119),o=n(6252),a=n(3577);const s={style:{"margin-top":"16px"}},i={class:"search-container"},u={key:0,style:{height:"80px"}},c=["onClick"],l=(0,o.Uk)("project"),d=(0,o.Uk)(),p={class:"jump"},m=["onClick"],h=(0,o.Uk)("group"),f=(0,o.Uk)(),g={class:"jump"};function y(e,t,n,r,y,w){const b=(0,o.up)("AppNav"),v=(0,o.up)("el-aside"),k=(0,o.up)("Breadcrumb"),S=(0,o.up)("Avatar"),_=(0,o.up)("el-header"),j=(0,o.up)("router-view"),T=(0,o.up)("el-main"),x=(0,o.up)("el-container"),D=(0,o.up)("el-input"),A=(0,o.up)("el-tag"),L=(0,o.up)("el-link"),q=(0,o.up)("el-divider"),C=(0,o.up)("Right"),N=(0,o.up)("el-icon"),E=(0,o.up)("el-dialog"),W=(0,o.Q2)("loading");return(0,o.wg)(),(0,o.j4)(x,{class:"databasir"},{default:(0,o.w5)((()=>[(0,o.Wm)(v,null,{default:(0,o.w5)((()=>[(0,o.Wm)(b,{class:"databasir-nav",onOnSearch:t[0]||(t[0]=e=>w.search())})])),_:1}),(0,o.Wm)(_,{class:"databasir-main-header"},{default:(0,o.w5)((()=>[(0,o.Wm)(k),(0,o.Wm)(S)])),_:1}),(0,o.Wm)(T,{class:"databasir-main"},{default:(0,o.w5)((()=>[(0,o.Wm)(x,null,{default:(0,o.w5)((()=>[(0,o.Wm)(T,{class:"databasir-main-content"},{default:(0,o.w5)((()=>[(0,o.Wm)(j)])),_:1})])),_:1})])),_:1}),(0,o.Wm)(E,{modelValue:y.showSearchDialog,"onUpdate:modelValue":t[2]||(t[2]=e=>y.showSearchDialog=e),title:"搜索",width:"60%"},{default:(0,o.w5)((()=>[(0,o.Wm)(D,{modelValue:y.queryKeyword,"onUpdate:modelValue":t[1]||(t[1]=e=>y.queryKeyword=e),"prefix-icon":"Search",placeholder:"分组、项目、database、schema 搜索",style:{width:"100%",border:"none"},onChange:w.onQuery},null,8,["modelValue","onChange"]),(0,o._)("div",s,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(y.searchSelectHistory,((e,t)=>((0,o.wg)(),(0,o.j4)(L,{underline:!1,key:t,onClick:t=>w.jumpToPath(e.path),style:{"margin-right":"12px","margin-bottom":"12px"}},{default:(0,o.w5)((()=>[(0,o.Wm)(A,{closable:"",type:"group"==e.type?"primary":"success",onClose:t=>w.onRemoveSelectHistoryItem(e.label)},{default:(0,o.w5)((()=>[(0,o.Uk)((0,a.zw)(e.label),1)])),_:2},1032,["type","onClose"])])),_:2},1032,["onClick"])))),128))]),y.queryData.projects.length>0||y.queryData.groups.length>0?((0,o.wg)(),(0,o.j4)(q,{key:0})):(0,o.kq)("",!0),(0,o.wy)(((0,o.wg)(),(0,o.iD)("div",i,[y.queryLoading&&0==y.queryData.projects.length&&0==y.queryData.groups.length?((0,o.wg)(),(0,o.iD)("div",u)):(0,o.kq)("",!0),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(y.queryData.projects,((e,t)=>((0,o.wg)(),(0,o.iD)("div",{class:"search-item",key:t,onClick:t=>w.jumpToProject(e)},[(0,o._)("span",null,[(0,o.Wm)(A,{type:"success"},{default:(0,o.w5)((()=>[l])),_:1}),d,(0,o.Wm)(L,{underline:!1},{default:(0,o.w5)((()=>[(0,o.Uk)((0,a.zw)(e.groupName)+" / "+(0,a.zw)(e.projectName),1)])),_:2},1024)]),(0,o._)("span",p,[(0,o.Wm)(N,null,{default:(0,o.w5)((()=>[(0,o.Wm)(C)])),_:1})])],8,c)))),128)),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(y.queryData.groups,((e,t)=>((0,o.wg)(),(0,o.iD)("div",{class:"search-item",key:t,onClick:t=>w.jumpToGroup(e)},[(0,o._)("span",null,[(0,o.Wm)(A,null,{default:(0,o.w5)((()=>[h])),_:1}),f,(0,o.Wm)(L,{underline:!1},{default:(0,o.w5)((()=>[(0,o.Uk)((0,a.zw)(e.name),1)])),_:2},1024)]),(0,o._)("span",g,[(0,o.Wm)(N,null,{default:(0,o.w5)((()=>[(0,o.Wm)(C)])),_:1})])],8,m)))),128))])),[[W,y.queryLoading]])])),_:1},8,["modelValue"])])),_:1})}const w=(0,o._)("span",null,"Databasir",-1);function b(e,t,n,r,s,i){const u=(0,o.up)("home-filled"),c=(0,o.up)("el-icon"),l=(0,o.up)("el-menu-item"),d=(0,o.up)("el-sub-menu"),p=(0,o.up)("el-button"),m=(0,o.up)("el-menu");return(0,o.wg)(),(0,o.j4)(m,{router:"",collapse:e.isCollapse,mode:"vertical",class:"left-menu"},{default:(0,o.w5)((()=>[(0,o.Wm)(l,{index:"/"},{title:(0,o.w5)((()=>[w])),default:(0,o.w5)((()=>[(0,o.Wm)(c,null,{default:(0,o.w5)((()=>[(0,o.Wm)(u)])),_:1})])),_:1}),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.routes,((t,n)=>((0,o.wg)(),(0,o.iD)(o.HY,{key:n},[e.isShowMenu(t)&&t.children.length>0&&t.children.some((e=>!e.hidden))?((0,o.wg)(),(0,o.j4)(d,{key:0,index:t.path},{title:(0,o.w5)((()=>[(0,o.Wm)(c,null,{default:(0,o.w5)((()=>[((0,o.wg)(),(0,o.j4)((0,o.LL)(t.icon)))])),_:2},1024),(0,o._)("span",null,(0,a.zw)(t.meta.nav),1)])),default:(0,o.w5)((()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(t.children,((e,r)=>((0,o.wg)(),(0,o.iD)(o.HY,{key:n+"-"+r},[e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(l,{key:0,index:t.path+"/"+e.path},{title:(0,o.w5)((()=>[(0,o._)("span",null,(0,a.zw)(e.meta.nav),1)])),default:(0,o.w5)((()=>[e.icon?((0,o.wg)(),(0,o.j4)(c,{key:0},{default:(0,o.w5)((()=>[((0,o.wg)(),(0,o.j4)((0,o.LL)(e.icon)))])),_:2},1024)):(0,o.kq)("",!0)])),_:2},1032,["index"]))],64)))),128))])),_:2},1032,["index"])):e.isShowMenu(t)?((0,o.wg)(),(0,o.j4)(l,{key:1,index:t.path},{title:(0,o.w5)((()=>[(0,o._)("span",null,(0,a.zw)(t.meta.nav),1)])),default:(0,o.w5)((()=>[(0,o.Wm)(c,null,{default:(0,o.w5)((()=>[((0,o.wg)(),(0,o.j4)((0,o.LL)(t.icon)))])),_:2},1024)])),_:2},1032,["index"])):(0,o.kq)("",!0)],64)))),128)),(0,o.Wm)(l,{index:"",onClick:t[0]||(t[0]=t=>e.showSearchDialog())},{default:(0,o.w5)((()=>[(0,o.Wm)(p,{type:"text",icon:"Search",style:{color:"#303133"}})])),_:1})])),_:1},8,["collapse"])}var v=n(2262),k=n(1836),S=n(4239),_=(0,o.aZ)({emits:["on-search"],setup(e,t){const n=(0,v.Fl)((()=>S.Z.state.menu.isCollapse)),o=(0,r.tv)(),a=o.options.routes,s=e=>{if(e.hidden)return!1;if(e.meta.requireAnyRoles&&e.meta.requireAnyRoles.length>0){const t=k.E.hasAnyRoles(e.meta.requireAnyRoles);if(!t)return!1}return!0},i=()=>{S.Z.commit("expandMenu")},u=()=>{t.emit("on-search")};return{isCollapse:n,isShowMenu:s,expandMenu:i,routes:a,showSearchDialog:u}}}),j=n(3744);const T=(0,j.Z)(_,[["render",b]]);var x=T;function D(e,t,n,r,s,i){const u=(0,o.up)("fold"),c=(0,o.up)("el-icon"),l=(0,o.up)("el-link"),d=(0,o.up)("el-breadcrumb-item"),p=(0,o.up)("el-breadcrumb");return(0,o.wg)(),(0,o.j4)(p,{separator:"/"},{default:(0,o.w5)((()=>[i.menuIsCollapse?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(d,{key:0},{default:(0,o.w5)((()=>[(0,o.Wm)(l,{onClick:t[0]||(t[0]=e=>i.onFoldMenu()),underline:!1},{default:(0,o.w5)((()=>[(0,o.Wm)(c,null,{default:(0,o.w5)((()=>[(0,o.Wm)(u)])),_:1})])),_:1})])),_:1})),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(i.breadcrumbs,((e,t)=>((0,o.wg)(),(0,o.j4)(d,{key:t,to:e.to},{default:(0,o.w5)((()=>[(0,o.Uk)((0,a.zw)(e.name),1)])),_:2},1032,["to"])))),128))])),_:1})}var A={computed:{breadcrumbs:function(){return"function"===typeof this.$route.meta.breadcrumb?this.$route.meta.breadcrumb(this.$route,this.$store.state):[]},menuIsCollapse(){return this.$store.state.menu.isCollapse}},methods:{onFoldMenu(){this.$store.commit("foldMenu")}}};const L=(0,j.Z)(A,[["render",D]]);var q=L;const C=(0,o.Uk)("个人中心"),N=(0,o.Uk)("注销登陆");function E(e,t,n,r,s,i){const u=(0,o.up)("el-avatar"),c=(0,o.up)("el-dropdown-item"),l=(0,o.up)("el-dropdown-menu"),d=(0,o.up)("el-dropdown");return(0,o.wg)(),(0,o.j4)(d,null,{dropdown:(0,o.w5)((()=>[(0,o.Wm)(l,null,{default:(0,o.w5)((()=>[(0,o.Wm)(c,null,{default:(0,o.w5)((()=>[(0,o.Uk)((0,a.zw)(i.userNickname),1)])),_:1}),(0,o.Wm)(c,{icon:"user",divided:"",onClick:t[0]||(t[0]=e=>i.toProfilePage())},{default:(0,o.w5)((()=>[C])),_:1}),(0,o.Wm)(c,{icon:"back",onClick:t[1]||(t[1]=e=>i.onLogout())},{default:(0,o.w5)((()=>[N])),_:1})])),_:1})])),default:(0,o.w5)((()=>[(0,o.Wm)(u,{size:36,src:i.avatarUrl,icon:"avatar"},null,8,["src"])])),_:1})}var W={computed:{userNickname(){return this.$store.state.user.nickname},avatarUrl(){return this.$store.state.user.avatar}},methods:{onLogout(){k.E.removeUserLoginData(),this.$router.push({path:"/login"})},toProfilePage(){this.$router.push({path:"/profile"})}}};const I=(0,j.Z)(W,[["render",E]]);var O=I,H=n(3872);const U="/api/v1.0/search",P=e=>H.Z.get(U,{params:e});var Z={components:{AppNav:x,Breadcrumb:q,Avatar:O},data(){return{showSearchDialog:!1,queryKeyword:"",queryData:{projects:[],groups:[]},queryLoading:!1,searchSelectHistory:[],searchSelectHistoryKey:"globalSearchSelectHistory"}},mounted(){this.loadSearchSelectHistory()},methods:{search(){this.showSearchDialog=!0},onQuery(e){this.queryLoading=!0,P({query:e}).then((e=>{e.errCode||(this.queryData=e.data)})).finally((()=>this.queryLoading=!1))},jumpToGroup(e){this.showSearchDialog=!1;const t="/groups/"+e.id+"?groupName="+e.name,n={label:e.name,path:t,type:"group"},r=this.searchSelectHistory.filter((e=>e.label!=n.label));r.unshift(n),r.splice(15),this.searchSelectHistory=r,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory)),window.location=t},jumpToProject(e){this.showSearchDialog=!1;const t="/groups/"+e.groupId+"/projects/"+e.projectId+"/documents?groupName="+e.groupName+"&projectName="+e.projectName,n={label:e.groupName+" / "+e.projectName,path:t,type:"project"},r=this.searchSelectHistory.filter((e=>e.label!=n.label));r.unshift(n),r.splice(15),this.searchSelectHistory=r,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory)),window.location=t},jumpToPath(e){window.location=e},loadSearchSelectHistory(){const e=this.searchSelectHistoryKey;if(null!=window.localStorage.getItem(e)){const t=JSON.parse(window.localStorage.getItem(e));this.searchSelectHistory=t}},onRemoveSelectHistoryItem(e){const t=this.searchSelectHistory.filter((t=>t.label!=e));this.searchSelectHistory=t,window.localStorage.setItem(this.searchSelectHistoryKey,JSON.stringify(this.searchSelectHistory))}}};const R=(0,j.Z)(Z,[["render",y]]);var K=R;function M(){return{name:"首页",to:{path:"/"}}}function z(){return{name:"项目中心",to:{name:"groupListPage"}}}function B(e){var t="项目组";return e.query.groupName&&(t=e.query.groupName),{name:t,to:{path:"/groups/"+e.params.groupId}}}function Y(e){var t="项目文档";e.query.projectName&&(t=e.query.projectName);var n=e.params.projectId,r=e.params.groupId;return{name:t,to:{path:"/groups/"+r+"/projects/"+n+"/documents",query:{projectName:t}}}}function V(){return{name:"用户列表",to:{path:"/users"}}}function $(){return{name:"个人中心",to:{path:"/profile"}}}function F(){return{name:"邮箱设置",to:{path:"/settings/sysEmail"}}}function J(){return{name:"操作日志",to:{path:"/settings/sysLog"}}}function Q(){return{name:"登录设置",to:{path:"/settings/sysOauth2"}}}function G(){return{name:"数据库扩展",to:{path:"/settings/sysDatabaseType"}}}function X(){return{name:"文档模板",to:{path:"/settings/sysDocumentTemplate"}}}const ee={index:()=>[M()],groupList:()=>[M(),z()],groupDashboard:(e,t)=>[M(),z(),B(e,t)],groupProjectDocument:(e,t)=>[M(),z(),B(e,t),Y(e)],userProfile:()=>[M(),$()],userList:()=>[M(),V()],sysEmailEdit:()=>[M(),F()],sysLog:()=>[M(),J()],sysOauth2:()=>[M(),Q()],sysDatabaseType:()=>[M(),G()],sysDocumentTemplate:()=>[M(),X()]};var te=ee;const ne=[{path:"/login",component:()=>n.e(139).then(n.bind(n,1139)),hidden:!0,meta:{requireAuth:!1}},{path:"/login/oauth2/:id",component:()=>n.e(865).then(n.bind(n,8865)),hidden:!0,props:!0,meta:{requireAuth:!1}},{path:"/",hidden:!0,component:K,children:[{path:"",hidden:!0,component:()=>n.e(206).then(n.bind(n,2206)),meta:{breadcrumb:te.groupList}}]},{path:"/groups",icon:"Collection",component:K,meta:{nav:"项目中心"},children:[{path:"",name:"groupListPage",hidden:!0,component:()=>n.e(206).then(n.bind(n,2206)),meta:{breadcrumb:te.groupList}},{path:":groupId",hidden:!0,component:()=>n.e(725).then(n.bind(n,725)),meta:{breadcrumb:te.groupDashboard}},{path:":groupId/projects/:projectId/documents",hidden:!0,component:()=>n.e(991).then(n.bind(n,1991)),meta:{breadcrumb:te.groupProjectDocument}}]},{path:"/users",icon:"List",component:K,meta:{nav:"用户中心",requireAnyRoles:["SYS_OWNER"]},children:[{path:"",hidden:!0,component:()=>n.e(117).then(n.bind(n,4117)),meta:{breadcrumb:te.userList}}]},{path:"/profile",icon:"User",component:K,meta:{nav:"个人中心",breadcrumb:te.userProfile},children:[{path:"",hidden:!0,component:()=>n.e(469).then(n.bind(n,6469))}]},{path:"/settings",icon:"Setting",component:K,meta:{nav:"系统中心",requireAnyRoles:["SYS_OWNER"]},children:[{path:"sysEmail",icon:"Notification",component:()=>n.e(243).then(n.bind(n,1243)),meta:{nav:"邮箱设置",breadcrumb:te.sysEmailEdit}},{path:"sysLog",icon:"Document",component:()=>n.e(17).then(n.bind(n,6017)),meta:{nav:"操作日志",breadcrumb:te.sysLog}},{path:"sysOauth2",icon:"Connection",component:()=>n.e(834).then(n.bind(n,6834)),meta:{nav:"登陆设置",breadcrumb:te.sysOauth2}},{path:"sysDatabaseType",icon:"office-building",component:()=>n.e(918).then(n.bind(n,918)),meta:{nav:"数据库扩展",breadcrumb:te.sysDatabaseType}},{path:"sysDocumentTemplate",icon:"document-add",component:()=>n.e(227).then(n.bind(n,3227)),meta:{nav:"文档模板",breadcrumb:te.sysDocumentTemplate}},{path:"sysKey",icon:"Key",hidden:"true",component:K,meta:{nav:"系统秘钥",breadcrumb:te.sysKeyEdit}}]}],re=(0,r.p7)({history:(0,r.PO)(),routes:ne});re.beforeEach(((e,t,n)=>{0==e.meta.requireAuth?"/login"==e.path&&k.r.hasAccessToken()?n(t):n():k.r.hasAccessToken()?n():n({path:"/login"})})),re.beforeEach(((e,t,n)=>{!e.query.groupName&&t.query.groupName&&(e.query.groupName=t.query.groupName),!e.query.projectName&&t.query.projectName&&(e.query.projectName=t.query.projectName),n()}));var oe=re},4239:function(e,t,n){var r=n(8637),o=n(1836);const a=(0,r.MT)({state(){const e={user:{nickname:null,usernmae:null,email:null,avatar:null},groupListActiveTab:null,menu:{isCollapse:!0}},t=o.E.loadUserLoginData();return t&&(e.user.nickname=t.nickname,e.user.usernmae=t.usernmae,e.user.email=t.email,e.user.avatar=t.avatar),e},mutations:{userUpdate(e,t){t.nickname&&(e.user.nickname=t.nickname),t.usernmae&&(e.user.usernmae=t.usernmae),t.email&&(e.user.email=t.email),t.avatar&&(e.user.avatar=t.avatar)},foldMenu(e){e.menu.isCollapse=!0},expandMenu(e){e.menu.isCollapse=!1},switchGroupListActiveTab(e,t){t&&(e.groupListActiveTab=t)}}});t["Z"]=a},1836:function(e,t,n){n.d(t,{r:function(){return s},E:function(){return i}});const r="accessToken",o="accessTokenExpireAt",a="userLoginData",s={hasAccessToken(){const e=this.loadAccessToken();return e},hasValidAccessToken(){const e=this.loadAccessToken(),t=window.localStorage.getItem(o);return e&&t?t>(new Date).getTime()-1e4:(console.log("warn: not found accessToken and expireAt key"),!1)},saveAccessToken(e,t){window.localStorage.setItem(r,e),window.localStorage.setItem(o,t)},loadAccessToken(){let e=window.localStorage.getItem(r);return e||null}},i={saveUserLoginData(e){window.localStorage.setItem(r,e.accessToken),window.localStorage.setItem(o,e.accessTokenExpireAt),window.localStorage.setItem(a,JSON.stringify(e))},removeUserLoginData(){window.localStorage.removeItem(a),window.localStorage.removeItem(r),window.localStorage.removeItem(o)},loadUserLoginData(){if(!window.localStorage.getItem(a))return null;const e=window.localStorage.getItem(a);return JSON.parse(e)},hasAnyRoles(e){const t=window.localStorage.getItem(a);if(null==t)return!1;const n=JSON.parse(t);return n.roles.map((e=>e.groupId?e.role+"?groupId="+e.groupId:e.role)).some((t=>e.some((e=>e==t))))},getRefreshToken(){const e=window.localStorage.getItem(a);if(null==e)return null;const t=JSON.parse(e);return t.refreshToken}}},3872:function(e,t,n){var r=n(9669),o=n.n(r),a=n(610),s=n(2680),i=n(1836),u=n(152);const c={NODE_ENV:"production",BASE_URL:"/"}.VUE_APP_API_URL;o().defaults.baseURL=c,o().defaults.timeout=15e3,o().defaults.withCredentials=!1,o().defaults.headers.post["Content-Type"]="application/json",o().defaults.headers.post["Access-Control-Allow-Origin-Type"]="*";let l=!1;function d(){l=!0}function p(){l=!1}let m=[];function h(e){m.push(e)}function f(e){m.forEach((t=>{t(e)})),m=[]}async function g(e){const t=i.E.getRefreshToken();return t||w(),l?new Promise((t=>{h((()=>{e&&(e.headers.Authorization="Bearer "+i.r.loadAccessToken()),t(e)}))})):(d(),await(0,u.jb)(t).then((e=>{e.errCode?w():(i.r.saveAccessToken(e.data.accessToken,e.data.accessTokenExpireAt),p())})).finally((()=>p())))}async function y(e){try{const t=await o()({method:e.method,data:e.data,url:e.url,baseURL:e.baseURL,headers:{Authorization:"Bearer "+i.r.loadAccessToken()}});return f(e),t}catch(t){console.log(t),b("网络异常,请稍后再试")}}function w(){i.E.removeUserLoginData(),s.Z.replace("/login")}function b(e){(0,a.z8)({message:e,type:"error",duration:5e3,grouping:!0})}o().interceptors.request.use((async function(e){if("/access_tokens"==e.url||e.url.startsWith("/oauth2")||"/login"==e.url)return e;if(i.r.hasValidAccessToken())return e.headers.Authorization="Bearer "+i.r.loadAccessToken(),e;if(l){const t=new Promise((t=>{h((()=>{e&&(e.headers.Authorization="Bearer "+i.r.loadAccessToken()),t(e)}))}));return t}return e}),(function(e){return p(),Promise.reject(e)})),o().interceptors.response.use((e=>{const t=e.data;return t.errCode&&b(t.errMessage),t}),(e=>{if(e.response)if(401==e.response.status){if("X_0002"==e.response.data.errCode)i.E.removeUserLoginData(),b("登陆状态失效,请重新登陆"),w();else if("X_0004"==e.response.data.errCode)return g(e.config).then((()=>y(e.config)))}else 403==e.response.status?b("无执行该操作的权限"):b(e.message);else console.log(e),b("网络异常,请稍后再试");return Promise.reject(e)})),t["Z"]=o()},6658:function(e,t,n){e.exports=n.p+"img/MariaDB.9e6854cc.svg"},2357:function(e,t,n){e.exports=n.p+"img/MySQL.c8f47618.svg"},2260:function(e,t,n){e.exports=n.p+"img/Oracle.c9ed26e0.svg"},3609:function(e,t,n){e.exports=n.p+"img/PostgreSQL.6e3d3a5e.svg"},5641:function(e,t,n){e.exports=n.p+"img/Sqlserver.deff7c4c.svg"}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.m=e,function(){var e=[];n.O=function(t,r,o,a){if(!r){var s=1/0;for(l=0;l<e.length;l++){r=e[l][0],o=e[l][1],a=e[l][2];for(var i=!0,u=0;u<r.length;u++)(!1&a||s>=a)&&Object.keys(n.O).every((function(e){return n.O[e](r[u])}))?r.splice(u--,1):(i=!1,a<s&&(s=a));if(i){e.splice(l--,1);var c=o();void 0!==c&&(t=c)}}return t}a=a||0;for(var l=e.length;l>0&&e[l-1][2]>a;l--)e[l]=e[l-1];e[l]=[r,o,a]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}}(),function(){n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))}}(),function(){n.u=function(e){return"js/"+e+"."+{17:"f8914b9e",117:"1f755d73",139:"64be11ff",206:"8babe551",227:"b20a14b0",243:"47faec0e",469:"52881502",725:"e0865a14",834:"72e75f55",865:"d67048bf",918:"268bc178",991:"73d56bf1"}[e]+".js"}}(),function(){n.miniCssF=function(e){return"css/"+e+"."+{139:"a7dec339",206:"6b48a93a",227:"90d5c1b0",725:"82a2f213",834:"f2905e33",865:"7df1e56e",918:"b113d9de",991:"1969b1d0"}[e]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="databasir:";n.l=function(r,o,a,s){if(e[r])e[r].push(o);else{var i,u;if(void 0!==a)for(var c=document.getElementsByTagName("script"),l=0;l<c.length;l++){var d=c[l];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+a){i=d;break}}i||(u=!0,i=document.createElement("script"),i.charset="utf-8",i.timeout=120,n.nc&&i.setAttribute("nonce",n.nc),i.setAttribute("data-webpack",t+a),i.src=r),e[r]=[o];var p=function(t,n){i.onerror=i.onload=null,clearTimeout(m);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((function(e){return e(n)})),t)return t(n)},m=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),u&&document.head.appendChild(i)}}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){n.p="/"}(),function(){var e=function(e,t,n,r){var o=document.createElement("link");o.rel="stylesheet",o.type="text/css";var a=function(a){if(o.onerror=o.onload=null,"load"===a.type)n();else{var s=a&&("load"===a.type?"missing":a.type),i=a&&a.target&&a.target.href||t,u=new Error("Loading CSS chunk "+e+" failed.\n("+i+")");u.code="CSS_CHUNK_LOAD_FAILED",u.type=s,u.request=i,o.parentNode.removeChild(o),r(u)}};return o.onerror=o.onload=a,o.href=t,document.head.appendChild(o),o},t=function(e,t){for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var o=n[r],a=o.getAttribute("data-href")||o.getAttribute("href");if("stylesheet"===o.rel&&(a===e||a===t))return o}var s=document.getElementsByTagName("style");for(r=0;r<s.length;r++){o=s[r],a=o.getAttribute("data-href");if(a===e||a===t)return o}},r=function(r){return new Promise((function(o,a){var s=n.miniCssF(r),i=n.p+s;if(t(s,i))return o();e(r,i,o,a)}))},o={143:0};n.f.miniCss=function(e,t){var n={139:1,206:1,227:1,725:1,834:1,865:1,918:1,991:1};o[e]?t.push(o[e]):0!==o[e]&&n[e]&&t.push(o[e]=r(e).then((function(){o[e]=0}),(function(t){throw delete o[e],t})))}}(),function(){var e={143:0};n.f.j=function(t,r){var o=n.o(e,t)?e[t]:void 0;if(0!==o)if(o)r.push(o[2]);else{var a=new Promise((function(n,r){o=e[t]=[n,r]}));r.push(o[2]=a);var s=n.p+n.u(t),i=new Error,u=function(r){if(n.o(e,t)&&(o=e[t],0!==o&&(e[t]=void 0),o)){var a=r&&("load"===r.type?"missing":r.type),s=r&&r.target&&r.target.src;i.message="Loading chunk "+t+" failed.\n("+a+": "+s+")",i.name="ChunkLoadError",i.type=a,i.request=s,o[1](i)}};n.l(s,u,"chunk-"+t,t)}},n.O.j=function(t){return 0===e[t]};var t=function(t,r){var o,a,s=r[0],i=r[1],u=r[2],c=0;if(s.some((function(t){return 0!==e[t]}))){for(o in i)n.o(i,o)&&(n.m[o]=i[o]);if(u)var l=u(n)}for(t&&t(r);c<s.length;c++)a=s[c],n.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return n.O(l)},r=self["webpackChunkdatabasir"]=self["webpackChunkdatabasir"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}();var r=n.O(void 0,[998],(function(){return n(1381)}));r=n.O(r)})(); -//# sourceMappingURL=app.7ac511a9.js.map \ No newline at end of file diff --git a/api/src/main/resources/static/js/app.7ac511a9.js.map b/api/src/main/resources/static/js/app.7ac511a9.js.map deleted file mode 100644 index 5d8f36d..0000000 --- a/api/src/main/resources/static/js/app.7ac511a9.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/app.7ac511a9.js","mappings":"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","sources":["webpack://databasir/./src/api/Login.js","webpack://databasir/./src/App.vue","webpack://databasir/./src/App.vue?7ccd","webpack://databasir/./src/components/DatabaseIcon.vue","webpack://databasir/./src/components/DatabaseIcon.vue?d57f","webpack://databasir/./src/main.js","webpack://databasir/./src/layouts/Layout.vue","webpack://databasir/./src/components/AppNav.vue","webpack://databasir/./src/components/AppNav.vue?b6ff","webpack://databasir/./src/components/Breadcrumb.vue","webpack://databasir/./src/components/Breadcrumb.vue?ef20","webpack://databasir/./src/components/Avatar.vue","webpack://databasir/./src/components/Avatar.vue?e66a","webpack://databasir/./src/api/Search.js","webpack://databasir/./src/layouts/Layout.vue?7cb6","webpack://databasir/./src/router/breadcurmb.js","webpack://databasir/./src/router/index.js","webpack://databasir/./src/store/index.js","webpack://databasir/./src/utils/auth.js","webpack://databasir/./src/utils/fetch.js","webpack://databasir/webpack/bootstrap","webpack://databasir/webpack/runtime/chunk loaded","webpack://databasir/webpack/runtime/compat get default export","webpack://databasir/webpack/runtime/define property getters","webpack://databasir/webpack/runtime/ensure chunk","webpack://databasir/webpack/runtime/get javascript chunk filename","webpack://databasir/webpack/runtime/get mini-css chunk filename","webpack://databasir/webpack/runtime/global","webpack://databasir/webpack/runtime/hasOwnProperty shorthand","webpack://databasir/webpack/runtime/load script","webpack://databasir/webpack/runtime/make namespace object","webpack://databasir/webpack/runtime/publicPath","webpack://databasir/webpack/runtime/css loading","webpack://databasir/webpack/runtime/jsonp chunk loading","webpack://databasir/webpack/startup"],"sourcesContent":["import axios from '@/utils/fetch';\r\n\r\nexport const login = (form) => {\r\n const data = new FormData();\r\n data.append('username', form.username);\r\n data.append('password', form.password);\r\n return axios.post('/login', data)\r\n}\r\n\r\nexport const oauth2Login = (registrationId, parameters) => {\r\n return axios.get('/oauth2/login/'+registrationId, {\r\n params: parameters\r\n })\r\n}\r\n\r\nexport const logout = () => {\r\n return axios.get('/logout')\r\n}\r\n\r\nexport const loginInfo = () => {\r\n return axios.get('/api/v1.0/login_info')\r\n}\r\n\r\nexport const refreshAccessToken = (refreshToken) => {\r\n return axios.post('/access_tokens', {\r\n refreshToken: refreshToken\r\n })\r\n}","<template>\r\n <router-view/>\r\n</template>\r\n","import { render } from \"./App.vue?vue&type=template&id=2b08e877\"\nconst script = {}\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <template v-if=\"databaseType.toLowerCase() == 'mysql'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/MySQL.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'postgresql'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/PostgreSQL.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'oracle'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/Oracle.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'mariadb'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/MariaDB.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"databaseType.toLowerCase() == 'sqlserver'\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"require('@/assets/database/Sqlserver.svg')\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else-if=\"icon\">\r\n <el-tooltip :content=\"databaseType\" placement=\"left\">\r\n <img :src=\"icon\" style=\"max-width: 33px; max-height: 33px;\"/>\r\n </el-tooltip>\r\n </template>\r\n <template v-else>\r\n {{ databaseType }}\r\n </template>\r\n</template>\r\n\r\n\r\n<script>\r\n\r\nexport default {\r\n props: {\r\n databaseType: String,\r\n icon: String,\r\n },\r\n}\r\n</script>\r\n","import { render } from \"./DatabaseIcon.vue?vue&type=template&id=14de696c\"\nimport script from \"./DatabaseIcon.vue?vue&type=script&lang=js\"\nexport * from \"./DatabaseIcon.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport ElementPlus from 'element-plus'\r\nimport * as Icons from '@element-plus/icons'\r\n\r\nimport 'highlight.js/styles/stackoverflow-light.css';\r\nimport hljs from 'highlight.js/lib/core';\r\nimport javascript from 'highlight.js/lib/languages/javascript';\r\nimport hljsVuePlugin from \"@highlightjs/vue-plugin\";\r\n\r\nimport 'element-plus/dist/index.css'\r\nimport router from './router'\r\nimport store from './store'\r\nimport App from './App.vue'\r\nimport { user } from './utils/auth'\r\nimport DatabaseIcon from './components/DatabaseIcon.vue'\r\nimport { VueClipboard } from '@soerenmartius/vue3-clipboard'\r\n\r\n// element icon\r\nconst app = createApp(App)\r\nObject.keys(Icons).forEach(key => {\r\n app.component(key, Icons[key])\r\n})\r\napp.component('database-icon', DatabaseIcon)\r\n\r\n// permission directive\r\napp.directive('require-roles', {\r\n mounted(el, binding) {\r\n const roles = binding.value\r\n if (!user.hasAnyRoles(roles)) {\r\n el.parentNode && el.parentNode.removeChild(el)\r\n }\r\n },\r\n})\r\n\r\n// custom select directive\r\napp.directive(\"select-more\", {\r\n updated(el, binding) {\r\n const child = el.querySelector('.select-trigger');\r\n const id = child.getAttribute('aria-describedby');\r\n const poper = document.getElementById(id);\r\n if (poper == null) {\r\n return;\r\n }\r\n const selector = poper.parentElement.querySelector('.el-select-dropdown .el-scrollbar .el-select-dropdown__wrap');\r\n if (selector == null) {\r\n console.log('load select component failed')\r\n return;\r\n }\r\n selector.addEventListener('scroll', function () {\r\n const condition = this.scrollHeight - this.scrollTop - 1 <= this.clientHeight;\r\n if (condition) {\r\n binding.value();\r\n }\r\n });\r\n },\r\n});\r\n\r\n\r\nhljs.registerLanguage('javascript', javascript);\r\napp.use(hljsVuePlugin)\r\napp.use(store)\r\napp.use(ElementPlus)\r\napp.use(router)\r\napp.use(VueClipboard)\r\napp.mount('#app')\r\n\r\n","<template>\r\n <el-container class=\"databasir\">\r\n <el-aside>\r\n <AppNav class=\"databasir-nav\" @on-search=\"search()\"></AppNav>\r\n </el-aside>\r\n <el-header class=\"databasir-main-header\">\r\n <Breadcrumb></Breadcrumb>\r\n <Avatar></Avatar>\r\n </el-header>\r\n <el-main class=\"databasir-main\">\r\n <el-container>\r\n <el-main class=\"databasir-main-content\">\r\n <router-view></router-view>\r\n </el-main>\r\n </el-container>\r\n </el-main>\r\n <el-dialog\r\n v-model=\"showSearchDialog\"\r\n title=\"搜索\"\r\n width=\"60%\"\r\n >\r\n <el-input \r\n v-model=\"queryKeyword\"\r\n prefix-icon=\"Search\"\r\n placeholder=\"分组、项目、database、schema 搜索\"\r\n style=\"width:100%;border:none;\"\r\n @change=\"onQuery\"\r\n >\r\n </el-input>\r\n <div style=\"margin-top:16px;\">\r\n <el-link :underline=\"false\" v-for=\"(item, index) in searchSelectHistory\" :key=\"index\" @click=\"jumpToPath(item.path)\" style=\"margin-right: 12px;margin-bottom:12px;\">\r\n <el-tag closable :type=\"item.type == 'group'?'primary':'success'\" @close=\"onRemoveSelectHistoryItem(item.label)\">\r\n {{item.label}}\r\n </el-tag>\r\n </el-link>\r\n </div>\r\n <el-divider v-if=\"queryData.projects.length > 0 || queryData.groups.length > 0\"></el-divider>\r\n \r\n <div class=\"search-container\" v-loading=\"queryLoading\">\r\n <div v-if=\"queryLoading && queryData.projects.length == 0 && queryData.groups.length == 0\" style=\"height: 80px;\">\r\n \r\n </div>\r\n <div class=\"search-item\" v-for=\"(project,index) in queryData.projects\" :key=\"index\" @click=\"jumpToProject(project)\">\r\n <span>\r\n <el-tag type=\"success\">project</el-tag> <el-link :underline=\"false\"> {{project.groupName}} / {{project.projectName}}</el-link>\r\n </span>\r\n <span class=\"jump\">\r\n <el-icon><Right /></el-icon>\r\n </span>\r\n </div>\r\n <div class=\"search-item\" v-for=\"(group,index) in queryData.groups\" :key=\"index\" @click=\"jumpToGroup(group)\">\r\n <span>\r\n <el-tag>group</el-tag> <el-link :underline=\"false\"> {{group.name}}</el-link>\r\n </span>\r\n <span class=\"jump\">\r\n <el-icon><Right /></el-icon>\r\n </span>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n </el-container>\r\n</template>\r\n\r\n<style>\r\n.search-item {\r\n padding: 10px;\r\n width: 99%;\r\n margin-bottom: 12px;\r\n margin-right:12px;\r\n display: flex;\r\n justify-content: space-between;\r\n border-radius: 8px;\r\n}\r\n.search-item:hover {\r\n background-color: #F0F2F5;\r\n}\r\n.search-item .jump {\r\n margin-right: 8px;\r\n}\r\n\r\n.search-container {\r\n max-height: 420px;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n}\r\n\r\n.databasir-nav {\r\n position: fixed;\r\n transform: scale(1, 1);\r\n left: 0;\r\n bottom: 0;\r\n top: 0;\r\n}\r\n\r\n.databasir-main-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n position: fixed;\r\n transform: scale(1, 1);\r\n top: 0px;\r\n right: 0px;\r\n left: 50px;\r\n padding: 30px;\r\n margin-left: 33px;\r\n background: #FFF;\r\n z-index: 100;\r\n border-color: #EEE;\r\n border-width: 0px 0px 1px 0px;\r\n border-style: solid;\r\n}\r\n\r\n.databasir {\r\n display: block;\r\n}\r\n\r\n.databasir-main {\r\n position: relative;\r\n margin-left: 60px;\r\n margin-top: 80px;\r\n --el-main-padding: 0px 20px 20px 20px;\r\n}\r\n\r\n.databasir-main-expand {\r\n margin-left: 50px;\r\n}\r\n\r\n.databasir-main-content {\r\n max-width: 95%;\r\n --el-main-padding: 0px 20px 20px 20px;\r\n}\r\n\r\n.h2 {\r\n font-size: 24px;\r\n color: #606266;\r\n font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',\r\n 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;\r\n margin-top: 13px;\r\n margin-bottom: 13px;\r\n}\r\n.h3 {\r\n font-size: 20px;\r\n color: #909399;\r\n font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',\r\n 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;\r\n margin-top: 18px;\r\n margin-bottom: 18px;\r\n}\r\n\r\n</style>\r\n<script>\r\nimport AppNav from '../components/AppNav.vue'\r\nimport Breadcrumb from '../components/Breadcrumb.vue'\r\nimport Avatar from '../components/Avatar.vue'\r\nimport { query } from '@/api/Search.js'\r\n\r\nexport default {\r\n components: { AppNav, Breadcrumb, Avatar },\r\n data() {\r\n return {\r\n showSearchDialog: false,\r\n queryKeyword: '',\r\n queryData: {\r\n projects: [],\r\n groups: []\r\n },\r\n queryLoading: false,\r\n searchSelectHistory: [],\r\n searchSelectHistoryKey: 'globalSearchSelectHistory'\r\n }\r\n },\r\n mounted() {\r\n this.loadSearchSelectHistory()\r\n },\r\n methods: {\r\n search() {\r\n this.showSearchDialog = true\r\n },\r\n onQuery(val) {\r\n this.queryLoading = true;\r\n query({ query: val })\r\n .then(resp => {\r\n if (!resp.errCode) {\r\n this.queryData = resp.data\r\n }\r\n }).finally(() => this.queryLoading = false)\r\n },\r\n jumpToGroup(group) {\r\n this.showSearchDialog = false\r\n const path = '/groups/'+group.id+\"?groupName=\"+group.name;\r\n const select = {\r\n label: group.name,\r\n path: path,\r\n type: 'group'\r\n }\r\n const history = this.searchSelectHistory.filter(item => item.label != select.label)\r\n history.unshift(select)\r\n history.splice(15)\r\n this.searchSelectHistory = history\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n window.location=path\r\n },\r\n jumpToProject(project) {\r\n this.showSearchDialog = false\r\n const path = '/groups/'+project.groupId+'/projects/'+project.projectId+'/documents?groupName='+project.groupName+\"&projectName=\"+project.projectName\r\n \r\n const select = {\r\n label: project.groupName+ ' / '+project.projectName,\r\n path: path,\r\n type: 'project'\r\n }\r\n const history = this.searchSelectHistory.filter(item => item.label != select.label)\r\n history.unshift(select)\r\n history.splice(15)\r\n this.searchSelectHistory = history\r\n\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n window.location=path\r\n },\r\n jumpToPath(path) {\r\n window.location=path\r\n },\r\n loadSearchSelectHistory() {\r\n const key = this.searchSelectHistoryKey\r\n if (window.localStorage.getItem(key) != null) {\r\n const obj = JSON.parse(window.localStorage.getItem(key));\r\n this.searchSelectHistory = obj\r\n }\r\n },\r\n onRemoveSelectHistoryItem(label) {\r\n const history = this.searchSelectHistory.filter(item => item.label != label)\r\n this.searchSelectHistory = history\r\n window.localStorage.setItem(this.searchSelectHistoryKey, JSON.stringify(this.searchSelectHistory))\r\n }\r\n }\r\n}\r\n\r\n</script>","<template>\r\n <el-menu\r\n router\r\n :collapse=\"isCollapse\"\r\n mode=\"vertical\"\r\n class=\"left-menu\">\r\n <el-menu-item index=\"/\">\r\n <el-icon><home-filled /></el-icon>\r\n <template #title>\r\n <span>Databasir</span>\r\n </template>\r\n </el-menu-item>\r\n <template v-for=\"(menu, index) in routes\" :key=\"index\" >\r\n <el-sub-menu v-if=\"isShowMenu(menu) && menu.children.length > 0 && menu.children.some(ele => !ele.hidden)\" :index=\"menu.path\">\r\n <template #title> \r\n <el-icon>\r\n <component :is=\"menu.icon\" />\r\n </el-icon>\r\n <span>{{ menu.meta.nav }}</span>\r\n </template>\r\n <template :key=\"index + '-' + childIndex\" v-for=\"(child, childIndex) in menu.children\">\r\n <el-menu-item v-if=\"!child.hidden\" :index=\"menu.path+'/'+child.path\">\r\n <el-icon v-if=\"child.icon\">\r\n <component :is=\"child.icon\" />\r\n </el-icon>\r\n <template #title>\r\n <span>{{ child.meta.nav }}</span>\r\n </template>\r\n </el-menu-item>\r\n </template>\r\n </el-sub-menu>\r\n <el-menu-item v-else-if=\"isShowMenu(menu)\" :index=\"menu.path\">\r\n <el-icon>\r\n <component :is=\"menu.icon\" />\r\n </el-icon>\r\n <template #title>\r\n <span>{{ menu.meta.nav }}</span>\r\n </template> \r\n </el-menu-item>\r\n \r\n </template>\r\n <el-menu-item index=\"\" @click=\"showSearchDialog()\">\r\n <el-button type=\"text\" icon=\"Search\" style=\"color: #303133;\"></el-button>\r\n </el-menu-item>\r\n </el-menu>\r\n \r\n</template>\r\n<style>\r\n.left-menu:not(.el-menu--collapse) {\r\n height: 100vh;\r\n}\r\n</style>\r\n<script>\r\nimport { useRouter } from 'vue-router'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { user } from '../utils/auth'\r\nimport store from '../store/index'\r\n\r\nexport default defineComponent({\r\n emits: ['on-search'],\r\n setup(props, context) {\r\n const isCollapse = computed(() => store.state.menu.isCollapse)\r\n const router = useRouter()\r\n const routes = router.options.routes\r\n\r\n const isShowMenu = (menu) => {\r\n if (menu.hidden) {\r\n return false\r\n }\r\n if (menu.meta.requireAnyRoles && menu.meta.requireAnyRoles.length > 0) {\r\n const hasAnyRoles = user.hasAnyRoles(menu.meta.requireAnyRoles)\r\n if (!hasAnyRoles) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n\r\n const expandMenu = () => {\r\n store.commit('expandMenu')\r\n }\r\n\r\n const showSearchDialog = () => {\r\n context.emit('on-search')\r\n }\r\n\r\n return {\r\n isCollapse,\r\n isShowMenu,\r\n expandMenu,\r\n routes,\r\n showSearchDialog,\r\n }\r\n }\r\n})\r\n</script>","import { render } from \"./AppNav.vue?vue&type=template&id=0c349a0c\"\nimport script from \"./AppNav.vue?vue&type=script&lang=js\"\nexport * from \"./AppNav.vue?vue&type=script&lang=js\"\n\nimport \"./AppNav.vue?vue&type=style&index=0&id=0c349a0c&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <el-breadcrumb separator=\"/\" >\r\n <el-breadcrumb-item v-if=\"!menuIsCollapse\">\r\n <el-link @click=\"onFoldMenu()\" :underline=\"false\">\r\n <el-icon><fold /></el-icon>\r\n </el-link>\r\n </el-breadcrumb-item>\r\n <el-breadcrumb-item v-for=\"(item, index) in breadcrumbs\" :key=\"index\" :to=\"item.to\">{{ item.name }}</el-breadcrumb-item>\r\n </el-breadcrumb>\r\n</template>\r\n\r\n<script>\r\n\r\nexport default{\r\n computed: {\r\n breadcrumbs: function() {\r\n if (typeof this.$route.meta.breadcrumb === 'function') {\r\n return this.$route.meta.breadcrumb(this.$route, this.$store.state)\r\n } else {\r\n return []\r\n }\r\n },\r\n menuIsCollapse() {\r\n return this.$store.state.menu.isCollapse\r\n }\r\n },\r\n methods: {\r\n onFoldMenu() {\r\n this.$store.commit('foldMenu')\r\n }\r\n }\r\n}\r\n</script>","import { render } from \"./Breadcrumb.vue?vue&type=template&id=055586aa\"\nimport script from \"./Breadcrumb.vue?vue&type=script&lang=js\"\nexport * from \"./Breadcrumb.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <el-dropdown>\r\n <el-avatar :size=\"36\" :src=\"avatarUrl\" icon=\"avatar\"></el-avatar>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item>{{ userNickname }}</el-dropdown-item>\r\n\r\n <el-dropdown-item icon=\"user\" divided @click=\"toProfilePage()\">个人中心</el-dropdown-item>\r\n <el-dropdown-item icon=\"back\" @click=\"onLogout()\">注销登陆</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n</template>\r\n\r\n<script>\r\nimport { user } from '../utils/auth'\r\n\r\nexport default {\r\n computed: {\r\n userNickname() {\r\n return this.$store.state.user.nickname \r\n },\r\n avatarUrl() {\r\n return this.$store.state.user.avatar \r\n }\r\n },\r\n methods: {\r\n onLogout(){\r\n user.removeUserLoginData()\r\n this.$router.push({path: '/login'})\r\n },\r\n toProfilePage() {\r\n this.$router.push({ path: '/profile'})\r\n }\r\n }\r\n}\r\n</script>\r\n","import { render } from \"./Avatar.vue?vue&type=template&id=34a219c2\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import axios from '@/utils/fetch';\r\n\r\nconst base = \"/api/v1.0/search\"\r\n\r\nexport const query = (keyword) => {\r\n return axios.get(base, {\r\n params: keyword\r\n })\r\n}","import { render } from \"./Layout.vue?vue&type=template&id=6a109b90\"\nimport script from \"./Layout.vue?vue&type=script&lang=js\"\nexport * from \"./Layout.vue?vue&type=script&lang=js\"\n\nimport \"./Layout.vue?vue&type=style&index=0&id=6a109b90&lang=css\"\n\nimport exportComponent from \"E:\\\\git_workspace\\\\databasir\\\\databasir-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","function index() {\r\n return {\r\n name:'首页',\r\n to: {\r\n path: '/'\r\n }\r\n }\r\n}\r\n\r\nfunction groupList() {\r\n return {\r\n name:'项目中心',\r\n to: {\r\n name: 'groupListPage'\r\n } \r\n }\r\n}\r\n\r\nfunction groupDashboard(route) {\r\n var groupName = '项目组'\r\n if (route.query.groupName) {\r\n groupName = route.query.groupName\r\n }\r\n return {\r\n name: groupName,\r\n to: {\r\n path: '/groups/'+route.params.groupId\r\n } \r\n }\r\n}\r\n\r\nfunction groupProjectDocument(route) {\r\n var name = '项目文档'\r\n if (route.query.projectName) {\r\n name = route.query.projectName\r\n }\r\n var projectId = route.params.projectId\r\n var groupId = route.params.groupId\r\n return {\r\n name: name,\r\n to: {\r\n path: '/groups/' + groupId + '/projects/' + projectId + '/documents',\r\n query: {\r\n projectName: name\r\n }\r\n } \r\n }\r\n}\r\n\r\nfunction userList() {\r\n return {\r\n name:'用户列表',\r\n to: {\r\n path: '/users'\r\n } \r\n }\r\n}\r\n\r\n\r\nfunction userProfile() {\r\n return {\r\n name:'个人中心',\r\n to: {\r\n path: '/profile'\r\n } \r\n }\r\n}\r\n\r\nfunction sysEmailEdit() {\r\n return {\r\n name:'邮箱设置',\r\n to: {\r\n path: '/settings/sysEmail'\r\n } \r\n }\r\n}\r\n\r\nfunction sysLog() {\r\n return {\r\n name:'操作日志',\r\n to: {\r\n path: '/settings/sysLog'\r\n } \r\n }\r\n}\r\n\r\nfunction sysOauth2() {\r\n return {\r\n name:'登录设置',\r\n to: {\r\n path: '/settings/sysOauth2'\r\n } \r\n }\r\n}\r\n\r\nfunction sysDatabaseType() {\r\n return {\r\n name:'数据库扩展',\r\n to: {\r\n path: '/settings/sysDatabaseType'\r\n } \r\n }\r\n}\r\n\r\nfunction sysDocumentTemplate() {\r\n return {\r\n name:'文档模板',\r\n to: {\r\n path: '/settings/sysDocumentTemplate'\r\n } \r\n }\r\n}\r\n\r\n\r\nconst breadcurmbMap = {\r\n index: () => [index() ],\r\n groupList: () => [index(), groupList()],\r\n groupDashboard: (route, state) => [index(), groupList(), groupDashboard(route, state)],\r\n groupProjectDocument: (route, state) => [index(), groupList(), groupDashboard(route, state), groupProjectDocument(route)],\r\n userProfile: () => [index(), userProfile()],\r\n userList: () => [index(), userList()],\r\n sysEmailEdit: () => [index(), sysEmailEdit()],\r\n sysLog: () => [index(), sysLog()],\r\n sysOauth2: () => [index(), sysOauth2()],\r\n sysDatabaseType: () => [index(), sysDatabaseType()],\r\n sysDocumentTemplate: () => [index(), sysDocumentTemplate()],\r\n}\r\n\r\nexport default breadcurmbMap","import { createRouter, createWebHistory } from 'vue-router';\r\nimport Layout from \"../layouts/Layout.vue\"\r\nimport breadcurmbMap from './breadcurmb'\r\nimport { token } from '../utils/auth';\r\n\r\nconst routes = [\r\n {\r\n path: '/login',\r\n component: () => import('@/views/Login.vue'),\r\n hidden: true,\r\n meta: {\r\n requireAuth: false\r\n }\r\n },\r\n {\r\n path: '/login/oauth2/:id',\r\n component: () => import('@/views/OAuth2Login.vue'),\r\n hidden: true,\r\n props: true,\r\n meta: {\r\n requireAuth: false\r\n }\r\n },\r\n {\r\n path: '/',\r\n hidden: true,\r\n component: Layout,\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/GroupList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupList\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/groups',\r\n icon: 'Collection',\r\n component: Layout,\r\n meta: {\r\n nav: '项目中心',\r\n },\r\n children: [\r\n {\r\n path: '',\r\n name: 'groupListPage',\r\n hidden: true,\r\n component: () => import('@/views/GroupList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupList\r\n }\r\n },\r\n {\r\n path: ':groupId',\r\n hidden: true,\r\n component: () => import('@/views/GroupDashboard.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupDashboard\r\n }\r\n },\r\n {\r\n path: ':groupId/projects/:projectId/documents',\r\n hidden: true,\r\n component: () => import('@/views/Document.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.groupProjectDocument\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/users',\r\n icon: 'List',\r\n component: Layout,\r\n meta: {\r\n nav:'用户中心',\r\n requireAnyRoles: ['SYS_OWNER']\r\n },\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/UserList.vue'),\r\n meta: {\r\n breadcrumb: breadcurmbMap.userList\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/profile',\r\n icon: 'User',\r\n component: Layout,\r\n meta: {\r\n nav: '个人中心',\r\n breadcrumb: breadcurmbMap.userProfile\r\n },\r\n children: [\r\n {\r\n path: '',\r\n hidden: true,\r\n component: () => import('@/views/UserProfile.vue')\r\n }\r\n ]\r\n },\r\n {\r\n path: '/settings',\r\n icon: 'Setting',\r\n component: Layout,\r\n meta: {\r\n nav:'系统中心',\r\n requireAnyRoles: ['SYS_OWNER']\r\n },\r\n children: [\r\n {\r\n path: 'sysEmail',\r\n icon: 'Notification',\r\n component: () => import('@/views/SysEmailEdit.vue'),\r\n meta: {\r\n nav: '邮箱设置',\r\n breadcrumb: breadcurmbMap.sysEmailEdit\r\n }\r\n },\r\n {\r\n path: 'sysLog',\r\n icon: 'Document',\r\n component: () => import('@/views/SysLog.vue'),\r\n meta: {\r\n nav: '操作日志',\r\n breadcrumb: breadcurmbMap.sysLog\r\n }\r\n },\r\n {\r\n path: 'sysOauth2',\r\n icon: 'Connection',\r\n component: () => import('@/views/SysOauth2.vue'),\r\n meta: {\r\n nav: '登陆设置',\r\n breadcrumb: breadcurmbMap.sysOauth2\r\n }\r\n },\r\n {\r\n path: 'sysDatabaseType',\r\n icon: 'office-building',\r\n component: () => import('@/views/SysDatabaseType.vue'),\r\n meta: {\r\n nav: '数据库扩展',\r\n breadcrumb: breadcurmbMap.sysDatabaseType\r\n }\r\n },\r\n {\r\n path: 'sysDocumentTemplate',\r\n icon: 'document-add',\r\n component: () => import('@/views/SysDocumentTemplateProperty.vue'),\r\n meta: {\r\n nav: '文档模板',\r\n breadcrumb: breadcurmbMap.sysDocumentTemplate\r\n }\r\n },\r\n // TODO\r\n {\r\n path: 'sysKey',\r\n icon: 'Key',\r\n hidden: 'true',\r\n component: Layout,\r\n meta: {\r\n nav: '系统秘钥',\r\n breadcrumb: breadcurmbMap.sysKeyEdit\r\n }\r\n }\r\n ]\r\n }\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes\r\n});\r\n\r\n// 权限路由守卫\r\nrouter.beforeEach((to, from, next) => {\r\n if (to.meta.requireAuth == false) {\r\n if (to.path == '/login' && token.hasAccessToken()) {\r\n next(from)\r\n } else {\r\n next()\r\n }\r\n } else {\r\n if(token.hasAccessToken()) {\r\n next()\r\n } else {\r\n next({ path: '/login' })\r\n }\r\n }\r\n})\r\n\r\n// groupName 参数路由守卫\r\nrouter.beforeEach((to, from, next) => {\r\n if (!to.query.groupName && from.query.groupName) {\r\n to.query.groupName = from.query.groupName\r\n } \r\n if (!to.query.projectName && from.query.projectName) {\r\n to.query.projectName = from.query.projectName\r\n } \r\n next();\r\n})\r\n\r\nexport default router;","import { createStore } from 'vuex'\r\nimport { user } from '../utils/auth'\r\n\r\nconst store = createStore({\r\n state() {\r\n const data = {\r\n user: {\r\n nickname: null,\r\n usernmae: null,\r\n email: null,\r\n avatar: null,\r\n },\r\n groupListActiveTab: null,\r\n menu: {\r\n isCollapse: true,\r\n }\r\n }\r\n const loginData = user.loadUserLoginData()\r\n if (loginData) {\r\n data.user.nickname = loginData.nickname\r\n data.user.usernmae = loginData.usernmae\r\n data.user.email = loginData.email\r\n data.user.avatar = loginData.avatar\r\n }\r\n return data;\r\n },\r\n mutations: {\r\n userUpdate(state, param) {\r\n if (param.nickname) {\r\n state.user.nickname = param.nickname\r\n }\r\n if (param.usernmae) {\r\n state.user.usernmae = param.usernmae\r\n }\r\n if (param.email) {\r\n state.user.email = param.email\r\n }\r\n if (param.avatar) {\r\n state.user.avatar = param.avatar\r\n }\r\n },\r\n foldMenu(state) {\r\n state.menu.isCollapse = true\r\n },\r\n expandMenu(state) {\r\n state.menu.isCollapse = false\r\n },\r\n switchGroupListActiveTab(state, groupListActiveTab) {\r\n if (groupListActiveTab) {\r\n state.groupListActiveTab = groupListActiveTab\r\n }\r\n }\r\n }\r\n})\r\n\r\nexport default store","const accessTokenKey = 'accessToken'\r\nconst accessTokenExpireAtKey = 'accessTokenExpireAt'\r\nconst userLoginDataKey = 'userLoginData'\r\n\r\nexport const token = {\r\n\r\n hasAccessToken() {\r\n const accessToken = this.loadAccessToken()\r\n return accessToken\r\n },\r\n\r\n hasValidAccessToken() {\r\n const accessToken = this.loadAccessToken()\r\n const expireAt = window.localStorage.getItem(accessTokenExpireAtKey)\r\n if (!accessToken || !expireAt) {\r\n console.log('warn: not found accessToken and expireAt key')\r\n return false\r\n }\r\n // 10s gap\r\n return expireAt > new Date().getTime() -(1000 * 10)\r\n },\r\n\r\n saveAccessToken(token, tokenExpireAt) {\r\n window.localStorage.setItem(accessTokenKey, token)\r\n window.localStorage.setItem(accessTokenExpireAtKey, tokenExpireAt)\r\n },\r\n\r\n loadAccessToken() {\r\n let token = window.localStorage.getItem(accessTokenKey)\r\n if (token) {\r\n return token\r\n }\r\n return null\r\n }\r\n}\r\n\r\nexport const user = {\r\n\r\n saveUserLoginData(userLoginData) {\r\n window.localStorage.setItem(accessTokenKey, userLoginData.accessToken)\r\n window.localStorage.setItem(accessTokenExpireAtKey, userLoginData.accessTokenExpireAt)\r\n window.localStorage.setItem(userLoginDataKey, JSON.stringify(userLoginData))\r\n },\r\n\r\n removeUserLoginData() {\r\n window.localStorage.removeItem(userLoginDataKey)\r\n window.localStorage.removeItem(accessTokenKey)\r\n window.localStorage.removeItem(accessTokenExpireAtKey)\r\n },\r\n\r\n loadUserLoginData() {\r\n if (!window.localStorage.getItem(userLoginDataKey)) {\r\n return null;\r\n } \r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n return JSON.parse(data)\r\n },\r\n\r\n hasAnyRoles(roles) {\r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n if (data == null) {\r\n return false\r\n }\r\n const user = JSON.parse(data)\r\n return user\r\n .roles\r\n .map(role => {\r\n if (role.groupId) {\r\n return role.role + '?groupId=' + role.groupId\r\n } else {\r\n return role.role\r\n }\r\n })\r\n .some(exists => roles.some(expected => expected == exists))\r\n },\r\n\r\n getRefreshToken() {\r\n const data = window.localStorage.getItem(userLoginDataKey)\r\n if (data == null) {\r\n return null\r\n }\r\n const user = JSON.parse(data)\r\n return user.refreshToken\r\n }\r\n}\r\n","import axios from 'axios';\r\nimport { ElMessage } from 'element-plus'\r\nimport router from '../router';\r\nimport { token, user } from './auth';\r\nimport { refreshAccessToken } from '../api/Login';\r\n\r\nconst BASE_API = process.env.VUE_APP_API_URL\r\n// default config\r\naxios.defaults.baseURL = BASE_API,\r\naxios.defaults.timeout = 15 * 1000;\r\naxios.defaults.withCredentials = false;\r\naxios.defaults.headers.post['Content-Type'] = 'application/json';\r\naxios.defaults.headers.post[\"Access-Control-Allow-Origin-Type\"] = \"*\";\r\n\r\n// token request config\r\n// eslint-disable-next-line\r\nlet tokenRefreshLock = false\r\n\r\nfunction lock() {\r\n tokenRefreshLock = true\r\n}\r\n\r\nfunction unlock() {\r\n tokenRefreshLock = false\r\n}\r\n\r\nlet blockRequests = []\r\n\r\nfunction blockRequest(request) {\r\n blockRequests.push(request)\r\n}\r\n\r\nfunction relaseRequests(config) {\r\n blockRequests.forEach(request => {\r\n request(config)\r\n })\r\n blockRequests = []\r\n}\r\n\r\n// 请求拦截器\r\naxios.interceptors.request.use(async function (config) {\r\n if (config.url == '/access_tokens' || config.url.startsWith('/oauth2') || config.url == '/login') {\r\n return config\r\n }\r\n\r\n if (token.hasValidAccessToken()) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n return config;\r\n }\r\n if (tokenRefreshLock) {\r\n const promise = new Promise((resolve) => {\r\n blockRequest(() => {\r\n if (config) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n }\r\n resolve(config)\r\n })\r\n })\r\n return promise\r\n } \r\n return config\r\n}, function (error) {\r\n unlock()\r\n return Promise.reject(error);\r\n});\r\n\r\n// response拦截器\r\naxios.interceptors.response.use(\r\n (response) => {\r\n const res = response.data;\r\n if (res.errCode) {\r\n notify(res.errMessage)\r\n }\r\n return res;\r\n },\r\n (error) => {\r\n if (error.response) {\r\n if(error.response.status == 401) {\r\n if (error.response.data.errCode == 'X_0002') {\r\n user.removeUserLoginData()\r\n notify('登陆状态失效,请重新登陆')\r\n redirectLogin()\r\n } else if (error.response.data.errCode == 'X_0004') {\r\n return refresh(error.config).then(() => retryFromResponse(error.config))\r\n }\r\n } else if (error.response.status == 403) {\r\n notify('无执行该操作的权限')\r\n } else {\r\n notify(error.message)\r\n } \r\n } else {\r\n console.log(error)\r\n notify('网络异常,请稍后再试')\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nasync function refresh(config) {\r\n const refreshToken = user.getRefreshToken()\r\n if(!refreshToken) {\r\n redirectLogin()\r\n }\r\n\r\n if(tokenRefreshLock) {\r\n return new Promise((resolve) => {\r\n blockRequest(() => {\r\n if (config) {\r\n config.headers.Authorization = 'Bearer ' + token.loadAccessToken()\r\n }\r\n resolve(config)\r\n })\r\n })\r\n }\r\n\r\n lock()\r\n return await refreshAccessToken(refreshToken).then(resp => {\r\n if (resp.errCode) {\r\n redirectLogin()\r\n } else {\r\n token.saveAccessToken(resp.data.accessToken, resp.data.accessTokenExpireAt)\r\n unlock()\r\n }\r\n }).finally(() => unlock())\r\n}\r\n\r\nasync function retryFromResponse(config) {\r\n try {\r\n const res = await axios({\r\n method: config.method,\r\n data: config.data,\r\n url: config.url,\r\n baseURL: config.baseURL,\r\n headers: {\r\n Authorization: 'Bearer ' + token.loadAccessToken()\r\n },\r\n })\r\n relaseRequests(config)\r\n return res;\r\n } catch(error) {\r\n console.log(error)\r\n notify(\"网络异常,请稍后再试\");\r\n }\r\n}\r\n\r\n\r\nfunction redirectLogin () {\r\n user.removeUserLoginData()\r\n router.replace('/login')\r\n}\r\n\r\nfunction notify(msg) {\r\n ElMessage({\r\n message: msg,\r\n type: 'error',\r\n duration: 5 * 1000,\r\n grouping: true,\r\n });\r\n}\r\n\r\nexport default axios;\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"17\":\"f8914b9e\",\"117\":\"1f755d73\",\"139\":\"64be11ff\",\"206\":\"8babe551\",\"227\":\"b20a14b0\",\"243\":\"47faec0e\",\"469\":\"52881502\",\"725\":\"e0865a14\",\"834\":\"72e75f55\",\"865\":\"d67048bf\",\"918\":\"268bc178\",\"991\":\"73d56bf1\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"139\":\"a7dec339\",\"206\":\"6b48a93a\",\"227\":\"90d5c1b0\",\"725\":\"82a2f213\",\"834\":\"f2905e33\",\"865\":\"7df1e56e\",\"918\":\"b113d9de\",\"991\":\"1969b1d0\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"databasir:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"139\":1,\"206\":1,\"227\":1,\"725\":1,\"834\":1,\"865\":1,\"918\":1,\"991\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdatabasir\"] = self[\"webpackChunkdatabasir\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(1381); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["login","form","data","FormData","append","username","password","axios","oauth2Login","registrationId","parameters","params","refreshAccessToken","refreshToken","_createBlock","_component_router_view","script","__exports__","render","$props","toLowerCase","_component_el_tooltip","content","placement","_createElementVNode","src","require","style","_createElementBlock","_Fragment","key","props","databaseType","String","icon","app","createApp","App","Object","keys","Icons","forEach","component","DatabaseIcon","directive","mounted","el","binding","roles","value","user","parentNode","removeChild","updated","child","querySelector","id","getAttribute","poper","document","getElementById","selector","parentElement","addEventListener","condition","this","scrollHeight","scrollTop","clientHeight","console","log","hljs","javascript","use","hljsVuePlugin","store","ElementPlus","router","VueClipboard","mount","class","_component_el_container","_createVNode","_component_el_aside","_component_AppNav","onOnSearch","$options","_component_el_header","_component_Breadcrumb","_component_Avatar","_component_el_main","_component_el_dialog","$data","$event","title","width","_component_el_input","placeholder","onChange","_renderList","item","index","_component_el_link","underline","onClick","path","_component_el_tag","closable","type","onClose","label","projects","length","groups","_component_el_divider","project","groupName","_toDisplayString","projectName","_component_el_icon","_component_Right","group","name","_component_el_menu","collapse","_ctx","mode","_component_el_menu_item","_hoisted_1","_component_home_filled","menu","children","some","ele","hidden","_component_el_sub_menu","_resolveDynamicComponent","meta","nav","childIndex","_component_el_button","defineComponent","emits","setup","context","isCollapse","computed","useRouter","routes","options","isShowMenu","requireAnyRoles","hasAnyRoles","expandMenu","showSearchDialog","emit","_component_el_breadcrumb","separator","_component_el_breadcrumb_item","_component_fold","to","breadcrumbs","$route","breadcrumb","$store","state","menuIsCollapse","methods","onFoldMenu","commit","_component_el_dropdown","dropdown","_component_el_dropdown_menu","_component_el_dropdown_item","divided","_component_el_avatar","size","userNickname","nickname","avatarUrl","avatar","onLogout","$router","push","toProfilePage","base","query","keyword","components","AppNav","Breadcrumb","Avatar","queryKeyword","queryData","queryLoading","searchSelectHistory","searchSelectHistoryKey","loadSearchSelectHistory","search","onQuery","val","then","resp","errCode","finally","jumpToGroup","select","history","filter","unshift","splice","window","localStorage","setItem","JSON","stringify","location","jumpToProject","groupId","projectId","jumpToPath","getItem","obj","parse","onRemoveSelectHistoryItem","groupList","groupDashboard","route","groupProjectDocument","userList","userProfile","sysEmailEdit","sysLog","sysOauth2","sysDatabaseType","sysDocumentTemplate","breadcurmbMap","requireAuth","Layout","createRouter","createWebHistory","beforeEach","from","next","token","createStore","usernmae","email","groupListActiveTab","loginData","mutations","userUpdate","param","foldMenu","switchGroupListActiveTab","accessTokenKey","accessTokenExpireAtKey","userLoginDataKey","hasAccessToken","accessToken","loadAccessToken","hasValidAccessToken","expireAt","Date","getTime","saveAccessToken","tokenExpireAt","saveUserLoginData","userLoginData","accessTokenExpireAt","removeUserLoginData","removeItem","loadUserLoginData","map","role","exists","expected","getRefreshToken","BASE_API","process","VUE_APP_API_URL","tokenRefreshLock","lock","unlock","blockRequests","blockRequest","request","relaseRequests","config","async","refresh","redirectLogin","Promise","resolve","headers","Authorization","retryFromResponse","res","method","url","baseURL","error","notify","msg","ElMessage","message","duration","grouping","startsWith","promise","reject","response","errMessage","status","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","needAttach","scripts","getElementsByTagName","s","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","p","createStylesheet","fullhref","linkTag","rel","onLinkComplete","errorType","realHref","href","err","Error","code","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/databasir-frontend b/databasir-frontend index f616e30..6b6c318 160000 --- a/databasir-frontend +++ b/databasir-frontend @@ -1 +1 @@ -Subproject commit f616e30e5bac5d500ce6722cd550329a731b8fac +Subproject commit 6b6c31840dc2a9b42a984aab2e13e9bbcd0d328f