js文件更改

xuhongjie
严飞永 1 month ago
parent e56a2879ae
commit cd2ecc1ef5

@ -5,9 +5,12 @@ VUE_APP_TITLE = 苏州工业园区工业上楼管理系统
ENV = 'production'
# 苏州工业园区工业上楼管理系统/生产环境
# 个人环境
VUE_APP_BASE_API = ''
# VUE_APP_BASE_API = ''
# 测试环境
# VUE_APP_BASE_API = 'http://39.101.188.84:7071'
# 正式环境
# VUE_APP_BASE_API = 'https://gysl.sipac.gov.cn/api'
VUE_APP_BASE_API = 'https://gysl.sipac.gov.cn/api'

@ -87,6 +87,7 @@
"connect": "3.6.6",
"eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0",
"html-webpack-plugin": "^5.6.3",
"lint-staged": "10.5.3",
"runjs": "4.4.2",
"sass": "1.32.13",

File diff suppressed because it is too large Load Diff

@ -0,0 +1,10 @@
import request from "@/utils/request"
// 政务端单点登录
export function governmentGetInfo(params) {
return request({
url: "/system/chief",
method: "get",
params
})
}

@ -3,10 +3,13 @@ import store from './store'
import { Message } from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth'
import { getToken, setToken } from '@/utils/auth'
import { isPathMatch } from '@/utils/validate'
import { isRelogin } from '@/utils/request'
import { extractPrefix } from '@/utils/common';
import { extractPrefix } from '@/utils/common'
// 政务登录接口
import { governmentGetInfo } from '@/api/login/index'
NProgress.configure({ showSpinner: false })
@ -17,14 +20,92 @@ const isWhiteList = (path) => {
}
router.beforeEach((to, from, next) => {
if(!extractPrefix(to.path)){
store.commit("SET_CRUMBS",false);
if (!extractPrefix(to.path)) {
store.commit("SET_CRUMBS", false);
}
NProgress.start()
if (getToken()) {
//政务登录
const url = window.location.href
// 检查是否包含政务平台返回的关键参数
const hasUserToken = url.includes('userToken=')
const hasSignature = url.includes('signature=')
const hasTimespan = url.includes('timespan=')
if (hasUserToken && hasSignature && hasTimespan) {
const regUserToken = /[?&]userToken=([^&#]+)/
const regSignature = /[?&]signature=([^&#]+)/
const regTimespan = /[?&]timespan=([^&#]+)/
const userTokenMatch = url.match(regUserToken)
const signatureMatch = url.match(regSignature)
const timespanMatch = url.match(regTimespan)
const userToken = userTokenMatch ? userTokenMatch[1] : null
const signature = signatureMatch ? signatureMatch[1] : null
const timespan = timespanMatch ? timespanMatch[1] : null
if (userToken && signature && timespan) {
// 调用政务系统登录接口
governmentGetInfo({
userToken,
signature,
timespan
}).then(res => {
// 假设 res.token 是返回的 token
const token = res.token
if (token) {
setToken(token) // 存储 token
localStorage.setItem('otherToken', userToken)
// 清除 URL 中的敏感参数
const cleanUrl = url
.replace(regUserToken, '')
.replace(regSignature, '')
.replace(regTimespan, '')
.replace(/^&/, '?')
window.history.replaceState({}, '', cleanUrl)
// 继续路由守卫流程
if (store.getters.roles.length === 0) {
isRelogin.show = true
store.dispatch('GetInfo').then(() => {
isRelogin.show = false
store.dispatch('GenerateRoutes').then(accessRoutes => {
router.addRoutes(accessRoutes)
next({ ...to, replace: true })
})
}).catch(err => {
store.dispatch('LogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
})
} else {
next()
}
}
}).catch(err => {
console.error('政务系统登录失败:', err)
Message.error('政务系统登录失败,请重新登录')
})
} else {
Message.error('缺少必要的登录参数')
next(`/login?redirect=${encodeURIComponent(to.fullPath)}`)
}
return
}
//原来的登录逻辑
const token = getToken()
if (token) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
/* has token*/
if (to.path === '/login') {
next({ path: '/' })
NProgress.done()
@ -33,31 +114,27 @@ router.beforeEach((to, from, next) => {
} else {
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已完成
router.addRoutes(accessRoutes)
next({ ...to, replace: true })
})
}).catch(err => {
store.dispatch('LogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
store.dispatch('LogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
})
} else {
next()
}
}
} else {
// 没有token
if (isWhiteList(to.path)) {
// 在免登录白名单,直接进入
next()
} else {
next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页
next(`/login?redirect=${encodeURIComponent(to.fullPath)}`)
NProgress.done()
}
}

@ -1,109 +1,137 @@
import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { isHttp, isEmpty } from "@/utils/validate"
import defAva from '@/assets/images/profile.jpg'
import { login, logout, getInfo } from "@/api/login";
import { getToken, setToken, removeToken } from "@/utils/auth";
import { isHttp, isEmpty } from "@/utils/validate";
import defAva from "@/assets/images/profile.jpg";
import { governmentGetInfo } from "@/api/login";
const user = {
state: {
token: getToken(),
id: '',
name: '',
avatar: '',
id: "",
name: "",
avatar: "",
roles: [],
permissions: []
permissions: [],
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
state.token = token;
},
SET_ID: (state, id) => {
state.id = id
state.id = id;
},
SET_NAME: (state, name) => {
state.name = name
state.name = name;
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
state.avatar = avatar;
},
SET_ROLES: (state, roles) => {
state.roles = roles
state.roles = roles;
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
}
state.permissions = permissions;
},
},
actions: {
// 登录
Login({ commit }, userInfo) {
const username = userInfo.username.trim()
const password = userInfo.password
const code = userInfo.code
const uuid = userInfo.uuid
const loginRole = userInfo.loginRole
const username = userInfo.username.trim();
const password = userInfo.password;
const code = userInfo.code;
const uuid = userInfo.uuid;
const loginRole = userInfo.loginRole;
return new Promise((resolve, reject) => {
login(username, password, code, uuid,loginRole).then(res => {
setToken(res.token)
commit('SET_TOKEN', res.token)
resolve()
}).catch(error => {
reject(error)
})
})
login(username, password, code, uuid, loginRole)
.then((res) => {
setToken(res.token);
commit("SET_TOKEN", res.token);
resolve();
})
.catch((error) => {
reject(error);
});
});
},
// 政务端登录
governmentLogin({ commit, state }, info) {
return new Promise((resolve, reject) => {
governmentGetInfo(info)
.then((res) => {
// console.log(res);
setUserToken(info.userToken);
commit("SET_USERTOKEN", res.data.token);
setToken(res.data.token);
commit("SET_TOKEN", res.data.token);
resolve();
})
.catch((error) => {
// console.log(error);
// reject(error)
});
});
},
// 获取用户信息
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
const user = res.user
let avatar = user.avatar || ""
if (!isHttp(avatar)) {
avatar = (isEmpty(avatar)) ? defAva : process.env.VUE_APP_BASE_API + avatar
}
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.roles)
commit('SET_PERMISSIONS', res.permissions)
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
}
commit('SET_ID', user.userId)
getInfo()
.then((res) => {
const user = res.user;
let avatar = user.avatar || "";
if (!isHttp(avatar)) {
avatar = isEmpty(avatar)
? defAva
: process.env.VUE_APP_BASE_API + avatar;
}
if (res.roles && res.roles.length > 0) {
// 验证返回的roles是否是一个非空数组
commit("SET_ROLES", res.roles);
commit("SET_PERMISSIONS", res.permissions);
} else {
commit("SET_ROLES", ["ROLE_DEFAULT"]);
}
commit("SET_ID", user.userId);
commit('SET_NAME', user.nickName)
commit("SET_NAME", user.nickName);
commit('SET_AVATAR', avatar)
resolve(res)
}).catch(error => {
reject(error)
})
})
commit("SET_AVATAR", avatar);
resolve(res);
})
.catch((error) => {
reject(error);
});
});
},
// 退出系统
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)
})
})
logout(state.token)
.then(() => {
commit("SET_TOKEN", "");
commit("SET_ROLES", []);
commit("SET_PERMISSIONS", []);
removeToken();
resolve();
})
.catch((error) => {
reject(error);
});
});
},
// 前端 登出
FedLogOut({ commit }) {
return new Promise(resolve => {
commit('SET_TOKEN', '')
removeToken()
resolve()
})
}
}
}
return new Promise((resolve) => {
commit("SET_TOKEN", "");
removeToken();
resolve();
});
},
},
};
export default user
export default user;

@ -46,7 +46,7 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://192.168.0.105:7071/`,
// target: `http://192.168.0.109:7071/`,
// target: `http://39.101.188.84:7071/`,
changeOrigin: true,
pathRewrite: {

Loading…
Cancel
Save