公共服务平台-权限路由
This commit is contained in:
parent
74ff8affe5
commit
65661a2647
|
|
@ -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()
|
||||
})
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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('下载失败');
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
||||
// 根据后端返回的权限值设置前端显示
|
||||
// 大屏权限值为1,后台权限值为2
|
||||
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];
|
||||
|
||||
// 权限数据处理:根据选中的权限组合传值
|
||||
// 大屏权限值为1,后台权限值为2
|
||||
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("修改成功")
|
||||
|
|
|
|||
Loading…
Reference in New Issue