Browse Source

权限2解决冲突

0919test
lihuilin 3 weeks ago
parent
commit
a5dcc7b0aa
  1. 1
      src/router/index.js
  2. 2
      src/utils/menuTreePermission.js
  3. 10
      src/utils/menuUtils.js
  4. 20
      src/views/audit/bean/beanAudit.vue
  5. 16
      src/views/audit/gold/audit.vue
  6. 75
      src/views/audit/gold/rechargeAudit.vue
  7. 87
      src/views/audit/gold/refundAudit.vue
  8. 8
      src/views/consume/bean/beanConsume.vue
  9. 6
      src/views/consume/gold/coinConsume.vue
  10. 8
      src/views/managerecharge/rate.vue
  11. 6
      src/views/recharge/bean/beanRecharge.vue
  12. 4
      src/views/recharge/gold/coinRecharge.vue

1
src/router/index.js

@ -386,6 +386,7 @@ router.beforeEach(async (to, from, next) => {
// 拿权限id
userPermissionIds = getAllPermissionIds(menuTree.value)
console.log("userPermissionIds",userPermissionIds)
// 2.4 权限验证(逻辑不变)
console.log('to.meta:', to.meta)

2
src/utils/menuTreePermission.js

@ -50,7 +50,7 @@ export const permissionMapping = {
refundWaitReject:41, // 退款审核驳回
beanWait:42, // 金豆审核待审核
beanThough:43, // 金豆审核已通过
beanThrough:43, // 金豆审核已通过
beanReject:44, // 金豆审核已驳回
beanWaitShow:45, // 金豆审核待审核查看
beanWaitThough:46, // 金豆审核通过

10
src/utils/menuUtils.js

@ -42,12 +42,15 @@ export function findFirstThirdLevelMenu(menuList) {
export const getRoutePath = (menu) => {
// 路由映射表:key为接口menuName,value为对应路由路径
const routeMap = {
'工作台展示': '/workspace',
'工作台查看': '/workbench',
'金币管理': '/goldManage',
'现金管理': '/moneyManage',
'金币审核': '/audit',
'金豆审核': '/beanAudit',
'汇率管理': '/rate',
'现金汇率': '/rate',
'金币充值': '/coinRecharge',
@ -72,6 +75,9 @@ export const getRoutePath = (menu) => {
'金币客户账户明细': '/usergold',
'金豆客户账户明细': '/userbean',
'用户管理': '/permissions/userPermission',
'角色管理': '/permissions/rolePermission',
};
// 未匹配的菜单默认使用id作为路由(可根据实际需求调整)

20
src/views/audit/bean/beanAudit.vue

@ -132,6 +132,26 @@ const reason = ref('')
const rejectRow = ref({
id: null
})//
//
const hasbeanWait = ref(false) // beanWait:42
const hasbeanThrough = ref(false) // beanThrough:43
const hasbeanReject = ref(false) // beanReject:44
const hasbeanWaitShow = ref(false) // beanWaitShow:45
const hasbeanWaitThough = ref(false) // beanWaitThough:46
const hasbeanWaitReject = ref(false) // beanWaitReject:47
//
const initPermissions = () => {
if (!menuTree.value || !menuTree.value.length) return;
// 2.
hasbeanWait.value = hasMenuPermission(menuTree.value, permissionMapping.hasbeanWait);
hasbeanThrough.value = hasMenuPermission(menuTree.value, permissionMapping.hasbeanThrough);
hasbeanReject.value = hasMenuPermission(menuTree.value, permissionMapping.hasbeanReject);
hasbeanWaitShow.value = hasMenuPermission(menuTree.value, permissionMapping.hasbeanWaitShow);
hasbeanWaitThough.value = hasMenuPermission(menuTree.value, permissionMapping.hasbeanWaitThough);
hasbeanWaitReject.value = hasMenuPermission(menuTree.value, permissionMapping.hasbeanWaitReject);
};
const clicked = ref(false)
//
const STATUS = {

16
src/views/audit/gold/audit.vue

@ -22,6 +22,7 @@ import { useRouter, useRoute } from 'vue-router';
import { storeToRefs } from 'pinia';
import { useAdminStore } from '@/store/index.js';
import { hasMenuPermission, permissionMapping } from "@/utils/menuTreePermission.js";
import { ElMessage } from 'element-plus';
const router = useRouter();
const route = useRoute();
@ -33,6 +34,17 @@ const hasRecharge = ref(false);
const hasRefund = ref(false);
//
const navigateTo = (name) => {
if(name == 'rechargeAudit'){
if(!hasRecharge){
ElMessage.error('您暂无充值审核操作权限')
return;
}
}else if(name = 'refundAudit'){
if(!hasRefund){
ElMessage.error('您暂无退款审核操作权限')
return;
}
}
activeTab.value = name;
router.push({ name });
};
@ -42,8 +54,8 @@ const navigateTo = (name) => {
const initPermissions = () => {
if (!menuTree.value || !menuTree.value.length) return;
hasRecharge.value = hasMenuPermission(menuTree.value, permissionMapping.Recharge_Audit);
hasRefund.value = hasMenuPermission(menuTree.value, permissionMapping.Refund_Audit);
hasRecharge.value = hasMenuPermission(menuTree.value, permissionMapping.rechargeAudit);
hasRefund.value = hasMenuPermission(menuTree.value, permissionMapping.refundAudit);
};
//

75
src/views/audit/gold/rechargeAudit.vue

@ -176,7 +176,7 @@ import { storeToRefs } from "pinia";
const adminStore = useAdminStore();
const { adminData, menuTree } = storeToRefs(adminStore);
import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js"
import { permissionMapping, hasMenuPermission } from "@/utils/menuTreePermission.js"
import dayjs from "dayjs";
const defaultTime = [
@ -221,6 +221,29 @@ const getObj = ref({
pageNum: 1,
pageSize: 50
})
//
const hasrechargeThrough = ref(false) //
const hasrechargeReject = ref(false) //
const hasrechargeWait = ref(false) //
const hasrechargeWaitShow = ref(false) //
const hasrechargeWaitThough = ref(false) //
const hasrechargeWaitReject = ref(false) //
//
const initPermissions = () => {
if (!menuTree.value || !menuTree.value.length) return;
hasrechargeThrough.value = hasMenuPermission(menuTree.value, permissionMapping.rechargeThrough);
hasrechargeReject.value = hasMenuPermission(menuTree.value, permissionMapping.rechargeReject);
hasrechargeWait.value = hasMenuPermission(menuTree.value, permissionMapping.rechargeWait);
hasrechargeWaitShow.value = hasMenuPermission(menuTree.value, permissionMapping.rechargeWaitShow);
hasrechargeWaitThough.value = hasMenuPermission(menuTree.value, permissionMapping.rechargeWaitThough);
hasrechargeWaitReject.value = hasMenuPermission(menuTree.value, permissionMapping.hasrechargeWaitReject);
console.log(hasrechargeWaitThough.value)
console.log(hasrechargeWaitReject.value)
};
//
const payModel = [
{
@ -282,6 +305,11 @@ const rules = reactive({
})
//
const getRecharge = async function (val) {
if (!hasrechargeWaitShow) {
ElMessage.error('暂无权限')
return
}
try {
if (getTime.value && getTime.value.length === 2) {
rechargeAudit.value.startTime = formatTime(getTime.value[0])
@ -320,9 +348,13 @@ const getRecharge = async function (val) {
} catch (error) {
console.log('请求失败', error)
}
}
const getStats = async () => {
if (!hasrechargeWaitShow) {
return
}
try {
const params = {
pageNum: getObj.value.pageNum,
@ -446,10 +478,22 @@ const adminReject = async function () {
const handleClick = function (tab, event) {
activeName.value = tab.props.name
if (tab.props.name === 'wait') {
if(!hasrechargeWait){
ElMessage.error('暂无权限')
return
}
adminWait()
} else if (tab.props.name === 'pass') {
if(!hasrechargeThrough){
ElMessage.error('暂无权限')
return
}
adminPass()
} else if (tab.props.name === 'reject') {
if(!hasrechargeReject){
ElMessage.error('暂无权限')
return
}
adminReject()
}
}
@ -477,8 +521,11 @@ const handlePagination = (type, val) => {
const clicked = ref(false);
//
const handleApprove = async (row) => {
if(!hasrechargeWaitThough){
ElMessage.error('暂无权限')
return
}
clicked.value = true
if (findMenuById(menuTree.value, permissionMapping.Recharge_Approval)) {
try {
const params = {
orderCode: row.orderCode,
@ -495,27 +542,27 @@ const handleApprove = async (row) => {
console.error('审核通过失败', error)
ElMessage.error('操作失败')
}
} else {
clicked.value = false
ElMessage.error('无权限')
}
}
const showRejectDialog = (row) => {
if(!hasrechargeWaitReject){
ElMessage.error('暂无权限')
return
}
currentRecord.value = row
rejectReason.value = ''
if (findMenuById(menuTree.value, permissionMapping.Recharge_Approval)) {
rejectDialogVisible.value = true
} else {
ElMessage.error('无权限')
}
}
//
const cancelClicked = ref(false)
//
const handleReject = async () => {
if(!hasrechargeWaitReject){
ElMessage.error('暂无权限')
return
}
cancelClicked.value = true
if (findMenuById(menuTree.value, permissionMapping.Recharge_Approval)) {
if (!rejectReason.value.trim()) {
ElMessage.warning('请输入驳回理由')
@ -539,10 +586,6 @@ const handleReject = async () => {
console.error('驳回操作失败', error)
ElMessage.error('操作失败')
}
} else {
ElMessage.error('无权限')
cancelClicked.value = false
}
}
//
const handleSortChange = (column) => {
@ -657,6 +700,8 @@ onMounted(async function () {
await getRecharge()
console.log("看看通信来的用户身份", adminData.value)
await getStats()
initPermissions()
})
</script>

87
src/views/audit/gold/refundAudit.vue

@ -21,8 +21,8 @@
</div>
<div class="selectRow">
<el-text class="text" size="large">所属地区</el-text>
<el-cascader class="selectContent" style="width: 12vw;" v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区"
clearable @change="handleMarketChange" />
<el-cascader class="selectContent" style="width: 12vw;" v-model="selectedMarketPath" :options="market"
placeholder="请选择所属地区" clearable @change="handleMarketChange" />
</div>
</div>
</el-col>
@ -169,9 +169,8 @@ import API from '@/util/http.js'
import moment from 'moment'
import { useAdminStore } from "@/store/index.js";
import { storeToRefs } from "pinia";
import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js"
import dayjs from "dayjs";
import { permissionMapping, hasMenuPermission } from "@/utils/menuTreePermission.js"
const adminStore = useAdminStore();
const { adminData, menuTree } = storeToRefs(adminStore);
const defaultTime = [
@ -232,6 +231,28 @@ const activeName = ref('wait')
const sortField = ref('')
const sortOrder = ref('')
const market = ref("")
//退
const hasrefundThrough = ref(false) // 退
const hasrefundReject = ref(false) // 退
const hasrefundWait = ref(false) // 退
const hasrefundWaitShow = ref(false) // 退
const hasrefundWaitThough = ref(false) // 退
const hasrefundWaitReject = ref(false) // 退
//
const initPermissions = () => {
if (!menuTree.value || !menuTree.value.length) return;
// 退
hasrefundThrough.value = hasMenuPermission(menuTree.value, permissionMapping.refundThrough);
hasrefundReject.value = hasMenuPermission(menuTree.value, permissionMapping.refundReject);
hasrefundWait.value = hasMenuPermission(menuTree.value, permissionMapping.refundWait);
hasrefundWaitShow.value = hasMenuPermission(menuTree.value, permissionMapping.refundWaitShow);
hasrefundWaitThough.value = hasMenuPermission(menuTree.value, permissionMapping.refundWaitThough);
hasrefundWaitReject.value = hasMenuPermission(menuTree.value, permissionMapping.refundWaitReject);
console.log('退款权限赋值完成');
};
//
const handleSortChange = (column) => {
if (column.prop === 'sumGold') {
@ -256,6 +277,10 @@ const handleSortChange = (column) => {
}
//
const showRejectDialog = (row) => {
if (!hasrefundWaitReject) {
ElMessage.error('暂无权限')
return
}
scopeValue.value = row
rejectReason.value = ''
rejectDialogVisible.value = true
@ -272,6 +297,10 @@ const getRefundGoods = async () => {
//
const get = async function (val) {
if (!hasrefundWaitShow) {
ElMessage.error('暂无权限')
return
}
try {
if (typeof val === 'number') {
pagination.value.pageNum = val
@ -319,8 +348,11 @@ const get = async function (val) {
const clicked = ref(false);
//
const handleApprove = async (row) => {
if (!hasrefundWaitThough) {
ElMessage.error('暂无权限')
return
}
clicked.value = true
if (findMenuById(menuTree.value, permissionMapping.Refund_Approval)) {
try {
const params = {
orderCode: row.orderCode,
@ -337,17 +369,17 @@ const handleApprove = async (row) => {
console.error('审核通过失败', error)
ElMessage.error('操作失败')
}
} else {
ElMessage.warning('没有权限')
clicked.value = false
}
}
//
const cancelClicked = ref(false)
//
const handleReject = async () => {
if (!hasrefundWaitReject) {
ElMessage.error('暂无权限')
return
}
cancelClicked.value = true
if (findMenuById(menuTree.value, permissionMapping.Refund_Approval)) {
if (!rejectReason.value.trim()) {
ElMessage.warning('请输入驳回理由')
@ -371,13 +403,12 @@ const handleReject = async () => {
console.error('驳回失败', error)
ElMessage.error('操作失败')
}
} else {
ElMessage.warning('没有权限')
cancelClicked.value = false
}
}
const getStats = async () => {
if (!hasrefundWaitShow) {
return
}
try {
const params = {
pageNum: pagination.value.pageNum,
@ -473,26 +504,27 @@ const get7Days = function () {
const handleClick = function (tab, event) {
activeName.value = tab.props.name
if (tab.props.name === 'wait') {
console.log(hasrefundWait.value);
if (!hasrefundWait) {
ElMessage.error('暂无权限')
return
}
adminWait()
} else if (tab.props.name === 'pass') {
if (hasrefundThrough.value) {
ElMessage.error('暂无权限')
return
}
adminPass()
} else if (tab.props.name === 'reject') {
adminReject()
}
if (!hasrefundReject) {
ElMessage.error('暂无权限')
return
}
//
const getCurrentStatus = () => {
switch (activeName.value) {
case 'wait':
return STATUS.PENDING
case 'pass':
return STATUS.APPROVED
case 'reject':
return STATUS.REJECTED
default:
return ''
adminReject()
}
}
//
const adminWait = async function () {
checkTab.value = 'pending'
@ -584,6 +616,7 @@ onMounted(async () => {
await getMarket()
await get()
await getStats()
initPermissions()
})
</script>

8
src/views/consume/bean/beanConsume.vue

@ -68,10 +68,10 @@ const navigateTo = (name) => {
const initPermissions = () => {
if (!menuTree.value || !menuTree.value.length) return;
hasAdd.value = hasMenuPermission(menuTree.value, permissionMapping.Submit_Golden_Bean_Consumption);
hasLive.value = hasMenuPermission(menuTree.value, permissionMapping.View_Golden_Bean_Live_Consumption_Details);
hasFan.value = hasMenuPermission(menuTree.value, permissionMapping.View_Golden_Bean_Fan_Consumption_Details);
hasArticleVideo.value = hasMenuPermission(menuTree.value, permissionMapping.View_Golden_Bean_Article_Video_Consumption_Details);
hasAdd.value = hasMenuPermission(menuTree.value, permissionMapping.addBeanConsume);
hasLive.value = hasMenuPermission(menuTree.value, permissionMapping.beanZBDetail);
hasFan.value = hasMenuPermission(menuTree.value, permissionMapping.beanTFDetail);
hasArticleVideo.value = hasMenuPermission(menuTree.value, permissionMapping.beanSPWZDetail);
};
//

6
src/views/consume/gold/coinConsume.vue

@ -42,8 +42,8 @@ const navigateTo = (name) => {
//
const initPermissions = () => {
if (!menuTree.value || !menuTree.value.length) return;
hasAdd.value = hasMenuPermission(menuTree.value, permissionMapping.Submit_Gold_Coin_Consumption);
hasDetail.value = hasMenuPermission(menuTree.value, permissionMapping.View_Gold_Coin_Consumption_Details);
hasAdd.value = hasMenuPermission(menuTree.value, permissionMapping.addCoinConsume);
hasDetail.value = hasMenuPermission(menuTree.value, permissionMapping.coinConsumeDetail);
};
//
@ -51,7 +51,7 @@ const getDefaultAuditRoute = () => {
initPermissions();
if (hasDetail.value) return 'coinConsumeDetail';
if (hasAdd.value) return 'addCoinConsume';
return 'addCoinConsume';
return 'coinConsumeDetail';
};
//

8
src/views/managerecharge/rate.vue

@ -122,10 +122,10 @@ const getEditData = async function (row) {
}
}
const editRole = ref(true)
editRole.value = findMenuById(menuTree.value, permissionMapping.Exchange_Rate_Modification)
editRole.value = findMenuById(menuTree.value, permissionMapping.rateEdit)
//
const editRate = async function () {
if (findMenuById(menuTree.value, permissionMapping.Exchange_Rate_Modification)) {
if (findMenuById(menuTree.value, permissionMapping.rateEdit)) {
//
rateEdit.value.num = parseFloat(rateEdit.value.num);
try {
@ -265,9 +265,9 @@ onMounted(async function () {
<span>{{ formatDate(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" :span="3" v-if="editRole">
<el-table-column label="操作" :span="3">
<template #default="scope">
<el-button type="text" @click="() => {
<el-button :disabled="!editRole" type="text" @click="() => {
regeEdit = true
getEditData(scope.row)
}">编辑

6
src/views/recharge/bean/beanRecharge.vue

@ -46,9 +46,9 @@ const navigateTo = (name) => {
const initPermissions = () => {
if (!menuTree.value || !menuTree.value.length) return;
hasAdd.value = hasMenuPermission(menuTree.value, permissionMapping.Submit_Golden_Bean_Recharge);
hasSystem.value = hasMenuPermission(menuTree.value, permissionMapping.View_Golden_Bean_System_Recharge_Details);
hasOnline.value = hasMenuPermission(menuTree.value, permissionMapping.View_Golden_Bean_Online_Recharge_Details);
hasAdd.value = hasMenuPermission(menuTree.value, permissionMapping.addBeanRecharge);
hasSystem.value = hasMenuPermission(menuTree.value, permissionMapping.beanSystemRecharge);
hasOnline.value = hasMenuPermission(menuTree.value, permissionMapping.beanOnlineRecharge);
};
//

4
src/views/recharge/gold/coinRecharge.vue

@ -40,8 +40,8 @@ const navigateTo = (name) => {
const initPermissions = () => {
if (!menuTree.value || !menuTree.value.length) return;
hasAdd.value = hasMenuPermission(menuTree.value, permissionMapping.Submit_Gold_Coin_Recharge);
hasDetail.value = hasMenuPermission(menuTree.value, permissionMapping.View_Gold_Coin_Recharge_Details);
hasAdd.value = hasMenuPermission(menuTree.value, permissionMapping.addCoinRecharge);
hasDetail.value = hasMenuPermission(menuTree.value, permissionMapping.coinRechargeDetail);
};
//

Loading…
Cancel
Save