From 38c918ca3e0dfe50f236223e5d28d5d73eb12789 Mon Sep 17 00:00:00 2001 From: TiaStars Date: Fri, 31 May 2024 09:15:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E4=BC=81=E4=B8=9A=E5=8D=95?= =?UTF-8?q?=E7=82=B9=E7=99=BB=E5=BD=95=E3=80=81=E4=BC=81=E4=B8=9A=E5=BA=93?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E7=99=BB=E5=BD=95=E5=8F=AF=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=9F=BA=E6=9C=AC=E4=BF=A1=E6=81=AF=E3=80=81?= =?UTF-8?q?=E6=94=BF=E7=AD=96=E6=96=87=E4=BB=B6=E5=BA=93=E6=9A=82=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=E5=85=B3=E8=81=94=E9=A1=B9=E7=9B=AE=E3=80=81=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=BA=93=E4=BC=81=E4=B8=9A=E5=8F=AA=E6=9F=A5=E8=87=AA?= =?UTF-8?q?=E5=B7=B1=E4=BC=81=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- package.json | 2 +- src/api/jin_ji_hu/login/index.js | 19 ++ src/layout/components/FixedHeader/index.vue | 6 + src/permission.js | 49 ++++- src/store/modules/user.js | 69 +++++- src/utils/auth.js | 16 +- .../enterpriselibrary/enterInfo/index.vue | 205 ++++++++++++++++-- src/views/enterpriselibrary/index.vue | 22 +- src/views/infoMaintain/index.vue | 6 +- src/views/login.vue | 92 +++++--- src/views/policyDocument/index.vue | 14 +- src/views/project/index.vue | 5 + 13 files changed, 426 insertions(+), 81 deletions(-) create mode 100644 src/api/jin_ji_hu/login/index.js diff --git a/.env.development b/.env.development index 0fa1cc8..65db24a 100644 --- a/.env.development +++ b/.env.development @@ -5,7 +5,7 @@ VUE_APP_TITLE = 金鸡湖现代服务业品牌管理系统 ENV = 'development' # 金鸡湖现代服务业品牌管理系统/开发环境 -VUE_APP_BASE_API = 'http://192.168.0.104:9040' +VUE_APP_BASE_API = 'http://192.168.0.105:9040' # VUE_APP_BASE_API = 'http://39.101.188.84:9040' # 路由懒加载 diff --git a/package.json b/package.json index e737235..4dce932 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ruoyi", - "version": "1.0.202405291050", + "version": "1.0.202405310908", "description": "金鸡湖现代服务业品牌管理系统", "author": "若依", "license": "MIT", diff --git a/src/api/jin_ji_hu/login/index.js b/src/api/jin_ji_hu/login/index.js new file mode 100644 index 0000000..c7ac75a --- /dev/null +++ b/src/api/jin_ji_hu/login/index.js @@ -0,0 +1,19 @@ +import request from "@/utils/request" + +// 企业端跳转过来查看个人信息 +export function singleSigngetInfo(params) { + return request({ + url: "/system/singlelogin/getInfo", + method: "get", + params + }) +} + +// 企业端退出登录 +export function enterpriseLogout(params) { + return request({ + url: "/system/singlelogin/enterpriseLogout", + method: "get", + params + }) +} \ No newline at end of file diff --git a/src/layout/components/FixedHeader/index.vue b/src/layout/components/FixedHeader/index.vue index 2dc4ebe..6610904 100644 --- a/src/layout/components/FixedHeader/index.vue +++ b/src/layout/components/FixedHeader/index.vue @@ -88,6 +88,12 @@ export default { .then(() => { this.$store.dispatch("LogOut").then(() => { // location.href = "/index"; + // console.log("this.$store.state.user.userType",this.$store.state.user.userType); + // if(this.$store.state.user.userType == "01") { + // location.href = process.env.VUE_APP_BASE_API + "/system/singlelogin/login" + // } else { + // this.$router.replace("/login"); + // } this.$router.replace("/login"); }); }) diff --git a/src/permission.js b/src/permission.js index bed4a5e..fe3599a 100644 --- a/src/permission.js +++ b/src/permission.js @@ -12,7 +12,54 @@ const whiteList = ["/login", "/register"]; router.beforeEach((to, from, next) => { NProgress.start(); - if (getToken()) { + if (window.location.href.includes("clienttoken=")) { + var reg = new RegExp(/[?&]clienttoken=([^&#]+)/); + var c = window.location.href.match(reg); + const clienttoken = c && c[1]; + // console.log("clienttoken:", clienttoken); + if (store.getters.roles.length === 0) { + isRelogin.show = true; + store.dispatch("SingleSignOnGetInfo",{clientToken:clienttoken}).then(res => { + isRelogin.show = false; + let url = window.location.href; + var modifiedUrl = url.replace(/(\?appid&clienttoken=)[^&#]+/, ''); + // console.log(modifiedUrl,'modifiedUrl'); + window.location.href = modifiedUrl; + // store.dispatch("GenerateRoutes").then((accessRoutes) => { + // // 根据roles权限生成可访问的路由表 + // router.addRoutes(accessRoutes); // 动态添加可访问路由表 + // next({ ...to, replace: true }); // hack方法 确保addRoutes已完成 + // }); + if (store.getters.roles.length === 0) { + isRelogin.show = true; + // 判断当前用户是否已拉取完user_info信息 + store + .dispatch("GetInfo") + .then(() => { + isRelogin.show = false; + store.dispatch("GenerateRoutes").then((accessRoutes) => { + // 根据roles权限生成可访问的路由表 + router.addRoutes(accessRoutes); // 动态添加可访问路由表 + next({ ...to, replace: true }); // hack方法 确保addRoutes已完成 + }); + }) + .catch((err) => { + store.dispatch("LogOut").then(() => { + Message.error(err); + next({ path: "/" }); + }); + }); + } + }).catch((err) => { + store.dispatch("LogOut").then(() => { + Message.error(err); + location.href = process.env.VUE_APP_BASE_API + "/system/singlelogin/login" + }); + }); + } else { + next(); + } + } else if (getToken()) { to.meta.title && store.dispatch("settings/setTitle", to.meta.title); /* has token*/ if (to.path === "/login") { diff --git a/src/store/modules/user.js b/src/store/modules/user.js index d6b9a23..8eb5c7b 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,9 +1,11 @@ import { login, logout, getInfo, refreshToken } from '@/api/login' -import { getToken, setToken, removeToken, setExpiresIn } from '@/utils/auth' +import { getToken, setToken, removeToken, setExpiresIn, getClientToken, setClientToken, removeClientToken } from '@/utils/auth' +import { singleSigngetInfo, enterpriseLogout } from "@/api/jin_ji_hu/login" const user = { state: { token: getToken(), + clientToken: getClientToken(), id: '', name: '', avatar: '', @@ -20,6 +22,9 @@ const user = { SET_TOKEN: (state, token) => { state.token = token }, + SET_CLIENTTOKEN: (state, token) => { + state.clientToken = token + }, SET_EXPIRES_IN: (state, time) => { state.expires_in = time }, @@ -77,6 +82,30 @@ const user = { }) }, + SingleSignOnGetInfo({ commit, state },info) { + return new Promise((resolve, reject) => { + singleSigngetInfo({clientToken: info.clientToken}).then(res => { + // if (res.data.usertype && res.data.usertype.length > 0) { // 验证返回的roles是否是一个非空数组 + // let roles = []; + // roles.push(res.data.usertype) + // commit('SET_ROLES', roles) + // } else { + // commit('SET_ROLES', ['ROLE_DEFAULT']) + // } + setClientToken(info.clientToken) + commit('SET_CLIENTTOKEN', res.data.token) + setToken(res.data.token) + commit('SET_TOKEN', res.data.token) + // commit('SET_USERTYPE', res.data.usertype) + // console.log(res.data.usertype,"res.data.usertype"); + // console.log(state.roles,"state.roles"); + resolve() + }).catch(error => { + reject(error) + }) + }) + }, + // 获取用户信息 GetInfo({ commit, state }) { return new Promise((resolve, reject) => { @@ -118,17 +147,35 @@ const user = { // 退出系统 LogOut({ commit, state }) { - return new Promise((resolve, reject) => { - logout(state.token).then(() => { - commit('SET_TOKEN', '') - commit('SET_ROLES', []) - commit('SET_PERMISSIONS', []) - removeToken() - resolve() - }).catch(error => { - reject(error) + if(state.userType == "01") { + return new Promise((resolve, reject) => { + enterpriseLogout({clienttoken: state.clientToken}).then(()=>{ + commit('SET_CLIENTTOKEN', '') + removeClientToken() + logout(state.token).then(() => { + commit('SET_TOKEN', '') + commit('SET_ROLES', []) + commit('SET_PERMISSIONS', []) + removeToken() + resolve() + }) + }).catch(error => { + reject(error) + }) }) - }) + } else { + return new Promise((resolve, reject) => { + logout(state.token).then(() => { + commit('SET_TOKEN', '') + commit('SET_ROLES', []) + commit('SET_PERMISSIONS', []) + removeToken() + resolve() + }).catch(error => { + reject(error) + }) + }) + } }, // 前端 登出 diff --git a/src/utils/auth.js b/src/utils/auth.js index a14048c..81a4137 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -1,7 +1,7 @@ import Cookies from 'js-cookie' const TokenKey = 'Admin-Token' - +const ClientToken = 'ClientToken' const ExpiresInKey = 'Admin-Expires-In' export function getToken() { return Cookies.get(TokenKey) @@ -26,3 +26,17 @@ export function setExpiresIn(time) { export function removeExpiresIn() { return Cookies.remove(ExpiresInKey) } + + +// 企业端登录的clientToken +export function getClientToken() { + return Cookies.get(ClientToken) +} + +export function setClientToken(token) { + return Cookies.set(ClientToken, token) +} + +export function removeClientToken() { + return Cookies.remove(ClientToken) +} \ No newline at end of file diff --git a/src/views/enterpriselibrary/enterInfo/index.vue b/src/views/enterpriselibrary/enterInfo/index.vue index 85dee9f..1b6f8b4 100644 --- a/src/views/enterpriselibrary/enterInfo/index.vue +++ b/src/views/enterpriselibrary/enterInfo/index.vue @@ -16,23 +16,106 @@
{{ item.name }}
- +
-
+
返回 导出企业清单
+
+ 返回 + 编辑 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +