公共服务平台-权限路由

This commit is contained in:
lSun 2025-09-18 17:18:52 +08:00
parent 74ff8affe5
commit 65661a2647
6 changed files with 118 additions and 4 deletions

View File

@ -1,7 +1,7 @@
import router from '@/router'
import { MessageBox } from 'element-ui'
import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { getToken, setToken, removeToken,setPermissions,removePermissions, } from '@/utils/auth'
import { isHttp, isEmpty } from '@/utils/validate'
import defAva from '@/assets/images/profile.jpg'
import { encryptWithSM4 } from '@/utils/sm'
@ -55,6 +55,7 @@ const user = {
login(username, password, code, uuid, loginType)
.then((res) => {
setToken(res.token)
setPermissions(res.authorities)
commit('SET_TOKEN', res.token)
resolve()
})
@ -142,6 +143,7 @@ const user = {
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
removeToken()
removePermissions()
resolve()
})
.catch((error) => {
@ -155,6 +157,7 @@ const user = {
return new Promise((resolve) => {
commit('SET_TOKEN', '')
removeToken()
removePermissions()
resolve()
})
},

View File

@ -2,6 +2,8 @@ import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token'
const Permissions = '0'
export function getToken() {
return Cookies.get(TokenKey)
}
@ -13,3 +15,16 @@ export function setToken(token) {
export function removeToken() {
return Cookies.remove(TokenKey)
}
export function getPermissions() {
return Cookies.get(Permissions)
}
export function setPermissions(permissions) {
return Cookies.set(Permissions, permissions)
}
export function removePermissions() {
return Cookies.remove(Permissions)
}

View File

@ -49,6 +49,7 @@
<script>
import { mapGetters } from 'vuex'
import {getPermissions} from "../../../utils/auth";
export default {
name: 'NavBar',
props: {
@ -100,6 +101,7 @@ export default {
activeNav: 'ProductCenter', //
userAvatarUrl: this.userAvatar,
internalSearchKeyword: this.searchKeyword,
permissions:getPermissions(),
navItems: [
{
label: '产品中心',
@ -147,7 +149,13 @@ export default {
//
handleLogoClick() {
if(this.permissions.includes(2) ){
this.$router.push('/')
}else{
//
this.$message.error('没有后台权限,请联系管理员')
}
},
logout() {

View File

@ -1,10 +1,32 @@
<template> </template>
<script>
import { getPermissions } from "@/utils/auth"
export default {
name: 'PublicService_1',
mounted() {
this.$router.push('/publicService/productCenter')
const permissions = getPermissions();
//
if (permissions) {
//
const permissionArray = permissions.toString().split(',').map(Number);
// 1
if (permissionArray.includes(1)) {
this.$router.push('/publicService/productCenter');
return;
}
// 2
if (permissionArray.includes(2)) {
this.$router.push('/');
return;
}
}
//
this.$message.error('没有后台权限,请联系管理员');
// this.$router.push('/publicService/productCenter')
},
}
</script>

View File

@ -96,6 +96,7 @@ import {getMaterialListAPI} from '@/api/publicService/proMaterials'
import { encryptCBCTime } from '@/utils/aes'
import useBase64 from '@/utils/base64Utils.js'
import axios from 'axios'
import { getToken } from '@/utils/auth'
export default {
name: 'ProMaterials',
@ -105,6 +106,7 @@ export default {
dicts: ['tb_product_type'],
data() {
return {
downloading: false, //
iframeUrl: '',
activeTypeValue: 'all', //
leftMenuList: [
@ -185,13 +187,31 @@ export default {
//
//
async handleDownload(service) {
//
if (this.downloading) {
this.$message.warning('文件正在下载中,请稍候...');
return;
}
try {
this.downloading = true;
const loading = this.$loading({
lock: true,
text: '文件下载中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
const response = await axios({
method: 'get',
url: process.env.VUE_APP_BASE_API + '/system/files/download',
params: {
filePath: service.fileDownloadPath
},
headers: {
'Authorization': 'Bearer ' + getToken() // token
},
responseType: 'blob' // blob
});
@ -205,8 +225,11 @@ export default {
link.remove();
window.URL.revokeObjectURL(url); // URL
loading.close();
this.downloading = false;
this.$message.success('下载成功');
} catch (error) {
this.downloading = false;
this.$message.error('下载失败');
}
},

View File

@ -158,6 +158,15 @@
<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="账号权限" prop="permissions">
<el-checkbox-group v-model="form.permissions">
<el-checkbox label="大屏"></el-checkbox>
<el-checkbox label="后台"></el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
@ -243,7 +252,9 @@ export default {
//
roleOptions: [],
//
form: {},
form: {
permissions: ['大屏']
},
defaultProps: {
children: "children",
label: "label"
@ -307,6 +318,9 @@ export default {
],
roleIds: [
{ required: true, message: '角色不能为空', trigger: 'blur' }
],
permissions: [
{ type: 'array', required: true, message: '请至少选择一个权限', trigger: 'blur' }
]
},
}
@ -442,7 +456,8 @@ export default {
status: "0",
remark: undefined,
postIds: [],
roleIds: []
roleIds: [],
permissions: ['大屏']
}
this.resetForm("form")
},
@ -506,6 +521,21 @@ export default {
this.roleOptions = response.roles
this.$set(this.form, "postIds", Number(response.postIds))
this.$set(this.form, "roleIds", Number(response.roleIds))
//
// 12
const permissions = [];
if (response.data.permissions) {
const permissionArray = response.data.permissions.split(',').map(Number);
if (permissionArray.includes(1)) { //
permissions.push('大屏');
}
if (permissionArray.includes(2)) { //
permissions.push('后台');
}
}
this.$set(this.form, "permissions", permissions);
this.open = true
this.title = "修改用户"
this.form.password = ""
@ -550,6 +580,19 @@ export default {
this.form.postIds = Array.isArray(this.form.postIds) ? this.form.postIds : [this.form.postIds];
this.form.roleIds = Array.isArray(this.form.roleIds) ? this.form.roleIds : [this.form.roleIds];
//
// 12
const permissionValues = [];
if (this.form.permissions && this.form.permissions.includes('大屏')) {
permissionValues.push(1); //
}
if (this.form.permissions && this.form.permissions.includes('后台')) {
permissionValues.push(2); //
}
//
this.form.permissions = permissionValues.join(',');
if (this.form.userId != undefined) {
updateUser(this.form).then(response => {
this.$modal.msgSuccess("修改成功")