From 2a908a3b0f7d4772a8fbfa8e819d299a4e122741 Mon Sep 17 00:00:00 2001 From: yin fuxian Date: Fri, 12 Apr 2024 10:51:10 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=89=E4=B8=AD=E9=A1=B9=E7=9B=AE=E5=90=8E?= =?UTF-8?q?=E5=82=A8=E5=AD=98=E9=A1=B9=E7=9B=AE=E5=BA=94=E7=94=A8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf-ui/src/store/getters.js | 1 + sf-ui/src/store/modules/user.js | 22 +++++++++++++++-- sf-ui/src/utils/application.js | 30 ++++++++++++++++++++++++ sf-ui/src/views/components/home/card.vue | 5 ++-- sf-ui/src/views/indexNew.vue | 3 +-- 5 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 sf-ui/src/utils/application.js diff --git a/sf-ui/src/store/getters.js b/sf-ui/src/store/getters.js index 5920c6e..46e2bee 100644 --- a/sf-ui/src/store/getters.js +++ b/sf-ui/src/store/getters.js @@ -11,6 +11,7 @@ const getters = { introduction: state => state.user.introduction, roles: state => state.user.roles, permissions: state => state.user.permissions, + applicationId: state => state.user.applicationId, permission_routes: state => state.permission.routes, topbarRouters:state => state.permission.topbarRouters, defaultRoutes:state => state.permission.defaultRoutes, diff --git a/sf-ui/src/store/modules/user.js b/sf-ui/src/store/modules/user.js index 75c0c57..7b8ffd8 100644 --- a/sf-ui/src/store/modules/user.js +++ b/sf-ui/src/store/modules/user.js @@ -1,5 +1,6 @@ import { login, logout, getInfo } from '@/api/login' import { getToken, setToken, removeToken } from '@/utils/auth' +import { getApplicationId, setApplicationId, removeApplicationId } from '@/utils/application' const user = { state: { @@ -7,7 +8,9 @@ const user = { name: '', avatar: '', roles: [], - permissions: [] + permissions: [], + applicationId: getApplicationId(), + applicationInfo: {}, // 用户选中的项目/应用 }, mutations: { @@ -25,7 +28,12 @@ const user = { }, SET_PERMISSIONS: (state, permissions) => { state.permissions = permissions - } + }, + SET_APPLICATION: (state, applicationInfo) => { + const { id } = applicationInfo; + state.applicationId = id; + state.applicationInfo = applicationInfo; + }, }, actions: { @@ -74,6 +82,8 @@ const user = { commit('SET_TOKEN', '') commit('SET_ROLES', []) commit('SET_PERMISSIONS', []) + commit('SET_APPLICATION', {}) + removeApplicationId() removeToken() resolve() }).catch(error => { @@ -86,9 +96,17 @@ const user = { FedLogOut({ commit }) { return new Promise(resolve => { commit('SET_TOKEN', '') + commit('SET_APPLICATION', {}) + removeApplicationId() removeToken() resolve() }) + }, + + // 设置选中的项目应用信息 + SetApplication({ commit }, applicationInfo) { + commit('SET_APPLICATION', applicationInfo) + setApplicationId(applicationInfo?.id); } } } diff --git a/sf-ui/src/utils/application.js b/sf-ui/src/utils/application.js new file mode 100644 index 0000000..250e16d --- /dev/null +++ b/sf-ui/src/utils/application.js @@ -0,0 +1,30 @@ +import Cookies from "js-cookie"; + +const ApplicationKey = "Admin-Application-Id"; + +/** + * 获取应用项目ID + * 该函数从Cookie中检索与应用项目相关的关键信息。 + * @returns {string} 返回从Cookie中获取的应用项目ID。 + */ +export function getApplicationId() { + return Cookies.get(ApplicationKey); +} + +/** + * 设置应用项目ID到Cookie中 + * @param {string} ApplicationId - 需要设置的应用项目ID。 + * @return {boolean|Object} 返回Cookie设置的结果。成功则返回true,失败则返回设置失败的对象。 + */ +export function setApplicationId(ApplicationId) { + return Cookies.set(ApplicationKey, ApplicationId); +} + +/** + * 移除应用ID的Cookie + * 本函数用于删除与应用相关的ID Cookie。 + * @returns {boolean} 返回删除操作的结果。如果删除成功,则返回true;如果删除失败,则返回false。 + */ +export function removeApplicationId() { + return Cookies.remove(ApplicationKey); +} \ No newline at end of file diff --git a/sf-ui/src/views/components/home/card.vue b/sf-ui/src/views/components/home/card.vue index ba83e37..cf925aa 100644 --- a/sf-ui/src/views/components/home/card.vue +++ b/sf-ui/src/views/components/home/card.vue @@ -15,7 +15,7 @@ :size="100" /> -->
-
{{item.appName}}
+
{{item.appName}}
{{item.createTime}}
@@ -75,12 +75,13 @@ export default { flex-flow: column; justify-content: space-evenly; } - .title { + .card-title { font-size: 16px; font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + color: #707070; } .time { font-size: 14px; diff --git a/sf-ui/src/views/indexNew.vue b/sf-ui/src/views/indexNew.vue index 6a2aabf..ffd9574 100644 --- a/sf-ui/src/views/indexNew.vue +++ b/sf-ui/src/views/indexNew.vue @@ -163,8 +163,7 @@ export default { // }); // }, async handleEnter(row) { - // TODO - // 此处需要储存项目id,供后续的网关服务、部署服务使用 + this.$store.dispatch('SetApplication', row); let routes = this.routes; if (this.routes.length === 0) { routes = await this.$store.dispatch('GenerateRoutes');