Compare commits

...

4 Commits

  1. 7
      package-lock.json
  2. 1
      package.json
  3. 139
      src/router/index.js
  4. 16
      src/utils/menuUtils.js
  5. 3
      src/views/recharge/gold/addCoinRecharge.vue
  6. 2
      src/views/usergold/gold/clientCountBalance.vue
  7. 2
      src/views/workspace/index.vue

7
package-lock.json

@ -17,6 +17,7 @@
"axios": "^1.7.8", "axios": "^1.7.8",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"dayjs-plugin-utc": "^0.1.2", "dayjs-plugin-utc": "^0.1.2",
"decimal.js": "^10.6.0",
"echarts": "^5.5.1", "echarts": "^5.5.1",
"element-plus": "^2.8.8", "element-plus": "^2.8.8",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
@ -3551,9 +3552,9 @@
} }
}, },
"node_modules/decimal.js": { "node_modules/decimal.js": {
"version": "10.4.3",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/decimal.js/-/decimal.js-10.4.3.tgz",
"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
"version": "10.6.0",
"resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.6.0.tgz",
"integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/define-lazy-prop": { "node_modules/define-lazy-prop": {

1
package.json

@ -21,6 +21,7 @@
"axios": "^1.7.8", "axios": "^1.7.8",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"dayjs-plugin-utc": "^0.1.2", "dayjs-plugin-utc": "^0.1.2",
"decimal.js": "^10.6.0",
"echarts": "^5.5.1", "echarts": "^5.5.1",
"element-plus": "^2.8.8", "element-plus": "^2.8.8",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",

139
src/router/index.js

@ -22,19 +22,23 @@ const routes = [
children: [ children: [
// 工作台 // 工作台
{ {
path: '/workspace',
name: "workspace",
path: 'workbench',
name: "workbench",
component: () => import("../views/workspace/index.vue"), component: () => import("../views/workspace/index.vue"),
meta: {permissionId: 10} // 对应"工作台展示"id=10
meta: { permissionId: 13 } //
}, },
//金币管理
{
path: '/goldManage',
name: 'goldManage',
meta:{permissionId:3},
children: [
// 审核 // 审核
{ {
path: '/audit', path: '/audit',
name: "audit", name: "audit",
component: () => import("../views/audit/gold/audit.vue"), component: () => import("../views/audit/gold/audit.vue"),
meta: {permissionId: 40},
meta: { permissionId: 14 },
// redirect: '/index', // redirect: '/index',
children: [ children: [
// 充值审核 // 充值审核
@ -42,21 +46,30 @@ const routes = [
path: 'rechargeAudit', path: 'rechargeAudit',
name: "rechargeAudit", name: "rechargeAudit",
component: () => import("../views/audit/gold/rechargeAudit.vue"), component: () => import("../views/audit/gold/rechargeAudit.vue"),
meta: {permissionId: [11, 12]} // 对应"查看充值审核"id=11、"充值审批"id=12
meta: { permissionId: [28,30,31,32,33,34,35] } // 对应"查看充值审核"id=11、"充值审批"id=12
}, },
// 退款审核 // 退款审核
{ {
path: 'refundAudit', path: 'refundAudit',
name: "refundAudit", name: "refundAudit",
component: () => import("../views/audit/gold/refundAudit.vue"), component: () => import("../views/audit/gold/refundAudit.vue"),
meta: {permissionId: [13, 14]} // 对应"查看退款审核"id=13、"退款审批"id=14
meta: { permissionId: [29,36,37,38,39,40,41] } // 对应"查看退款审核"id=13、"退款审批"id=14
}, },
] ]
}, { }, {
path: 'beanAudit',
path: '/beanAudit',
name: "beanAudit", name: "beanAudit",
component: () => import("../views/audit/bean/beanAudit.vue"), component: () => import("../views/audit/bean/beanAudit.vue"),
meta: {permissionId: [54,55]}
meta: { permissionId: 15 },
children: [
// 充值审核
{
path: 'addbeanAudit',
name: "addbeanAudit",
component: () => import("../views/audit/bean/beanAudit.vue"),
meta: { permissionId: [42,43,44,45,46,47] } // 对应"查看充值审核"id=11、"充值审批"id=12
},
]
}, },
@ -66,21 +79,21 @@ const routes = [
name: "coinConsume", name: "coinConsume",
component: () => import("../views/consume/gold/coinConsume.vue"), component: () => import("../views/consume/gold/coinConsume.vue"),
// redirect: '/coinConsume/add', // redirect: '/coinConsume/add',
meta: {permissionId: 6},
meta: { permissionId: 19 },
children: [ children: [
// 金币新增消耗 // 金币新增消耗
{ {
path: 'add', path: 'add',
name: "addCoinConsume", name: "addCoinConsume",
component: () => import("../views/consume/gold/addCoinConsume.vue"), component: () => import("../views/consume/gold/addCoinConsume.vue"),
meta: {permissionId: 19} // 对应"提交金币消耗"id=19
meta: { permissionId: 55 } // 对应"提交金币消耗"id=19
}, },
// 金币消耗明细详情 // 金币消耗明细详情
{ {
path: 'detail', path: 'detail',
name: "coinConsumeDetail", name: "coinConsumeDetail",
component: () => import("../views/consume/gold/coinConsumeDetail.vue"), component: () => import("../views/consume/gold/coinConsumeDetail.vue"),
meta: {permissionId: 20} // 对应"查看金币消耗明细"id=20
meta: { permissionId: 56 } // 对应"查看金币消耗明细"id=20
} }
] ]
}, },
@ -89,35 +102,35 @@ const routes = [
path: '/beanConsume', path: '/beanConsume',
name: "beanConsume", name: "beanConsume",
component: () => import("../views/consume/bean/beanConsume.vue"), component: () => import("../views/consume/bean/beanConsume.vue"),
meta: {permissionId: 42},
meta: { permissionId: 20 },
children: [ children: [
// 金豆新增消耗 // 金豆新增消耗
{ {
path: 'add', path: 'add',
name: "addBeanConsume", name: "addBeanConsume",
component: () => import("../views/consume/bean/addBeanConsume.vue"), component: () => import("../views/consume/bean/addBeanConsume.vue"),
meta: {permissionId: 49} // 对应"提交金豆消耗"id=49
meta: { permissionId: 57 } // 对应"提交金豆消耗"id=49
}, },
// 直播 // 直播
{ {
path: 'live', path: 'live',
name: "liveStream", name: "liveStream",
component: () => import("../views/consume/bean/liveStream.vue"), component: () => import("../views/consume/bean/liveStream.vue"),
meta: {permissionId: 50} // 对应"直播"id=50
meta: { permissionId: 58 } // 对应"直播"id=50
}, },
// 铁粉 // 铁粉
{ {
path: 'fan', path: 'fan',
name: "dieHardFan", name: "dieHardFan",
component: () => import("../views/consume/bean/dieHardFan.vue"), component: () => import("../views/consume/bean/dieHardFan.vue"),
meta: {permissionId: 51} // 对应"铁粉"id=51
meta: { permissionId: 59 } // 对应"铁粉"id=51
}, },
// 文章视频 // 文章视频
{ {
path: 'article', path: 'article',
name: "articleVideo", name: "articleVideo",
component: () => import("../views/consume/bean/articleVideo.vue"), component: () => import("../views/consume/bean/articleVideo.vue"),
meta: {permissionId: 52} // 对应"文章视频"id=52
meta: { permissionId: 60 } // 对应"文章视频"id=52
} }
] ]
@ -128,13 +141,14 @@ const routes = [
path: '/rate', path: '/rate',
name: "rate", name: "rate",
component: () => import("../views/managerecharge/rate.vue"), component: () => import("../views/managerecharge/rate.vue"),
meta: {permissionId: [15, 16]} // 对应"汇率查看"id=15、"汇率修改"id=16
meta: { permissionId: [16,48,49] } // 对应"汇率查看"id=15、"汇率修改"id=16
}, },
// 金币充值 // 金币充值
{ {
path: '/coinRecharge', path: '/coinRecharge',
name: "coinRecharge", name: "coinRecharge",
component: () => import("../views/recharge/gold/coinRecharge.vue"), component: () => import("../views/recharge/gold/coinRecharge.vue"),
meta: { permissionId: 17 },
// redirect: '/coinRecharge/add', // redirect: '/coinRecharge/add',
children: [ children: [
// 金币新增充值 // 金币新增充值
@ -142,14 +156,14 @@ const routes = [
path: 'add', path: 'add',
name: "addCoinRecharge", name: "addCoinRecharge",
component: () => import("../views/recharge/gold/addCoinRecharge.vue"), component: () => import("../views/recharge/gold/addCoinRecharge.vue"),
meta: {permissionId: 17} // 对应"提交金币充值"id=17
meta: { permissionId: 50 } // 对应"提交金币充值"id=17
}, },
// 金币充值明细详情 // 金币充值明细详情
{ {
path: 'detail', path: 'detail',
name: "coinRechargeDetail", name: "coinRechargeDetail",
component: () => import("../views/recharge/gold/coinRechargeDetail.vue"), component: () => import("../views/recharge/gold/coinRechargeDetail.vue"),
meta: {permissionId: 18} // 对应"查看金币充值明细"id=18
meta: { permissionId: 51 } // 对应"查看金币充值明细"id=18
} }
] ]
}, },
@ -160,27 +174,28 @@ const routes = [
name: "beanRecharge", name: "beanRecharge",
component: () => import("../views/recharge/bean/beanRecharge.vue"), component: () => import("../views/recharge/bean/beanRecharge.vue"),
// redirect: '/coinRecharge/add', // redirect: '/coinRecharge/add',
meta: { permissionId: 18 },
children: [ children: [
// 金豆新增充值 // 金豆新增充值
{ {
path: 'add', path: 'add',
name: "addBeanRecharge", name: "addBeanRecharge",
component: () => import("../views/recharge/bean/addBeanRecharge.vue"), component: () => import("../views/recharge/bean/addBeanRecharge.vue"),
meta: {permissionId: 46} // 对应"提交金豆充值"id=46
meta: { permissionId: 52 } // 对应"提交金豆充值"id=46
}, },
// 金豆系统充值 // 金豆系统充值
{ {
path: 'system', path: 'system',
name: "beanSystemRecharge", name: "beanSystemRecharge",
component: () => import("../views/recharge/bean/beanSystemRecharge.vue"), component: () => import("../views/recharge/bean/beanSystemRecharge.vue"),
meta: {permissionId: 47} // 对应"查看金豆系统充值明细"id=47
meta: { permissionId: 53 } // 对应"查看金豆系统充值明细"id=47
}, },
// 金豆线上充值 // 金豆线上充值
{ {
path: 'online', path: 'online',
name: "beanOnlineRecharge", name: "beanOnlineRecharge",
component: () => import("../views/recharge/bean/beanOnlineRecharge.vue"), component: () => import("../views/recharge/bean/beanOnlineRecharge.vue"),
meta: {permissionId: 48} // 对应"查看金豆线上充值明细"id=48
meta: { permissionId: 54 } // 对应"查看金豆线上充值明细"id=48
} }
] ]
}, },
@ -190,28 +205,21 @@ const routes = [
path: '/coinRefund', path: '/coinRefund',
name: "coinRefund", name: "coinRefund",
component: () => import("../views/refund/gold/coinRefund.vue"), component: () => import("../views/refund/gold/coinRefund.vue"),
// redirect: '/coinRefund/add',
meta: {permissionId: 7},
meta: { permissionId: 9 },
children: [ children: [
// 金币新增退款 // 金币新增退款
{ {
path: 'add', path: 'add',
name: "addCoinRefund", name: "addCoinRefund",
component: () => import("../views/refund/gold/addCoinRefund.vue"), component: () => import("../views/refund/gold/addCoinRefund.vue"),
meta: {permissionId: 21} // 对应"提交金币退款"id=21
meta: { permissionId: 61 }
}, },
// 金币退款明细详情 // 金币退款明细详情
{ {
path: 'detail', path: 'detail',
name: "coinRefundDetail", name: "coinRefundDetail",
component: () => import("../views/refund/gold/coinRefundDetail.vue"), component: () => import("../views/refund/gold/coinRefundDetail.vue"),
meta: {permissionId: 22} // 对应"查看金币退款明细"id=22
},
{
path: 'addRefund',
name: "addNewCoinRefund",
component: () => import("../views/refund/gold/addNewCoinRefund.vue"),
meta: {permissionId: 58}
meta: { permissionId: 62 }
} }
] ]
}, },
@ -221,27 +229,26 @@ const routes = [
path: '/usergold', path: '/usergold',
name: "usergold", name: "usergold",
component: () => import("../views/usergold/gold/clientCount.vue"), component: () => import("../views/usergold/gold/clientCount.vue"),
// redirect: '/usergold/detail',
meta: {permissionId: 8},
meta: { permissionId: 10 },
children: [ children: [
// 金币明细 // 金币明细
{ {
path: 'detail', path: 'detail',
name: "clientCountDetail", name: "clientCountDetail",
component: () => import("../views/usergold/gold/clientCountDetail.vue"), component: () => import("../views/usergold/gold/clientCountDetail.vue"),
meta: {permissionId: 23} // 对应"查看金币明细"id=23
meta: { permissionId: 63 }
}, },
// 金币余额 // 金币余额
{ {
path: 'balance', path: 'balance',
name: "clientCountBalance", name: "clientCountBalance",
component: () => import("../views/usergold/gold/clientCountBalance.vue"), component: () => import("../views/usergold/gold/clientCountBalance.vue"),
meta: {permissionId: 24} // 对应"查看金币余额"id=24
meta: { permissionId: 64 }
}, },
] ]
}, },
{ {
path: 'userbean',
path: '/userbean',
name: "userbean", name: "userbean",
component: () => import("../views/usergold/bean/userbean.vue"), component: () => import("../views/usergold/bean/userbean.vue"),
meta: { permissionId: 45 } meta: { permissionId: 45 }
@ -250,7 +257,21 @@ const routes = [
path: '/history', path: '/history',
name: "history", name: "history",
component: () => import("../views/history/history.vue"), component: () => import("../views/history/history.vue"),
meta:{ permissionId: [56,57] }
meta: { permissionId: 12 },
children: [
{
path: 'newHistory',
name: "newHistory",
component: () => import("../views/history/newHistory.vue"),
meta: { permissionId: 26 }
},
{
path: 'oldHistory',
name: "oldHistory",
component: () => import("../views/history/oldHistory.vue"),
meta: { permissionId: 27 }
}
]
}, },
// 权限管理 // 权限管理
@ -258,25 +279,54 @@ const routes = [
path: '/permissions', path: '/permissions',
name: "permissions", name: "permissions",
component: () => import("../views/permissions/permissions.vue"), component: () => import("../views/permissions/permissions.vue"),
meta: {permissionId: 9},
meta: { permissionId: 11 },
children: [ children: [
// 用户权限 // 用户权限
{ {
path: 'userPermission', path: 'userPermission',
name: "userPermission", name: "userPermission",
component: () => import("../views/permissions/userPermission.vue"), component: () => import("../views/permissions/userPermission.vue"),
meta: {permissionId: 25}
meta: { permissionId: 24 }
}, },
// 角色权限 // 角色权限
{ {
path: 'rolePermission', path: 'rolePermission',
name: "rolePermission", name: "rolePermission",
component: () => import("../views/permissions/rolePermission.vue"), component: () => import("../views/permissions/rolePermission.vue"),
meta: {permissionId: 30}
meta: { permissionId: 25 }
}
]
}
]
},
{
path:'/moneyManage',
name:'moneyManage',
meta:{permissionId:4},
children:[
// 收款明细
{
path: 'receiveDetail',
name: "receiveDetail",
component: () => import("../views/moneyManage/receiveDetail/receiveDetail.vue"),
meta: { permissionId: 74 }
},
// 退款明细
{
path: 'refundDetail',
name: "refundDetail",
component: () => import("../views/moneyManage/refundDetail/refundDetail.vue"),
meta: { permissionId: 75 }
},
// 执行明细
{
path: 'executor',
name: "executor",
component: () => import("../views/moneyManage/executor/executor.vue"),
meta: { permissionId: 76 }
}, },
] ]
}, },
// 没有权限 // 没有权限
{ {
path: '/noPermission', path: '/noPermission',
@ -356,6 +406,7 @@ router.beforeEach(async (to, from, next) => {
// 拿权限id // 拿权限id
userPermissionIds = getAllPermissionIds(menuTree.value) userPermissionIds = getAllPermissionIds(menuTree.value)
console.log("userPermissionIds",userPermissionIds)
// 2.4 权限验证(逻辑不变) // 2.4 权限验证(逻辑不变)
console.log('to.meta:', to.meta) console.log('to.meta:', to.meta)

16
src/utils/menuUtils.js

@ -43,12 +43,14 @@ export const getRoutePath = (menu) => {
// 路由映射表:key为接口menuName,value为对应路由路径 // 路由映射表:key为接口menuName,value为对应路由路径
const routeMap = { const routeMap = {
'工作台展示': '/workspace',
'工作台查看': '/workbench',
'金币管理': '/goldManage',
'现金管理': '/moneyManage',
'金币审核': '/audit', '金币审核': '/audit',
'金豆审核': '/beanAudit', '金豆审核': '/beanAudit',
'汇率管理': '/rate',
'现金汇率': '/rate',
'金币充值': '/coinRecharge', '金币充值': '/coinRecharge',
@ -62,13 +64,23 @@ export const getRoutePath = (menu) => {
// '金豆退款': '/beanRefund', // '金豆退款': '/beanRefund',
'历史数据查询': '/history', '历史数据查询': '/history',
'金币查询(新)': '/history/newHistory',
'金币查询(旧)': '/history/oldHistory',
'权限管理': '/permissions', '权限管理': '/permissions',
'用户管理': '/permissions/userPermission',
'角色管理': '/permissions/rolePermission',
'金币客户账户明细': '/usergold', '金币客户账户明细': '/usergold',
'金豆客户账户明细': '/userbean', '金豆客户账户明细': '/userbean',
'收款明细': '/moneyManage/receiveDetail',
'退款明细': '/moneyManage/refundDetail',
'执行人': '/moneyManage/executor/executor',
}; };
// 未匹配的菜单默认使用id作为路由(可根据实际需求调整) // 未匹配的菜单默认使用id作为路由(可根据实际需求调整)

3
src/views/recharge/gold/addCoinRecharge.vue

@ -6,6 +6,7 @@ import axios from 'axios'
import API from '@/util/http.js' import API from '@/util/http.js'
import moment from 'moment' import moment from 'moment'
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import Decimal from 'decimal.js';
// fixedAdminId // fixedAdminId
// const fixedAdminId = 1; // const fixedAdminId = 1;
@ -93,7 +94,7 @@ const add = async function () {
formattedRecharge.freeGold = Number(formattedRecharge.freeGold) * 100; formattedRecharge.freeGold = Number(formattedRecharge.freeGold) * 100;
} }
if (formattedRecharge.money) { if (formattedRecharge.money) {
formattedRecharge.money = Number(formattedRecharge.money) * 100;
formattedRecharge.money = new Decimal(formattedRecharge.money).mul(100).toNumber();
} }
if (formattedRecharge.payTime) { if (formattedRecharge.payTime) {

2
src/views/usergold/gold/clientCountBalance.vue

@ -422,7 +422,7 @@ const format3 = (num) => {
</div> </div>
<!-- 设置表格容器的高度和滚动样式 --> <!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 60vh; overflow-y: auto"> <div style="height: 60vh; overflow-y: auto">
<el-table :data="tableData" @cellClick="cellClick" style="width: 82vw;"height="60vh"
<el-table :data="tableData" @cellClick="cellClick" style="width: 82vw; height:60vh"
@sort-change="handleSortChange"> @sort-change="handleSortChange">
<el-table-column type="index" label="序号" width="100px" fixed="left"> <el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope"> <template #default="scope">

2
src/views/workspace/index.vue

@ -806,7 +806,7 @@ onUnmounted(() => {
}) })
</script> </script>
<style scoped>
<style scoped lang="scss">
.top { .top {
height: 5.5vh; height: 5.5vh;
width: 80vw; width: 80vw;

Loading…
Cancel
Save