2 Commits

Author SHA1 Message Date
lihui 0da46304fc add:映射 1 week ago
ZhangYong 9d173b39cb 金币充值金额精度问题修复 2 weeks ago
  1. 7
      package-lock.json
  2. 1
      package.json
  3. 153
      src/router/index.js
  4. 16
      src/utils/menuUtils.js
  5. 3
      src/views/recharge/gold/addCoinRecharge.vue

7
package-lock.json

@ -17,6 +17,7 @@
"axios": "^1.7.8",
"dayjs": "^1.11.13",
"dayjs-plugin-utc": "^0.1.2",
"decimal.js": "^10.6.0",
"echarts": "^5.5.1",
"element-plus": "^2.8.8",
"js-cookie": "^3.0.5",
@ -3551,9 +3552,9 @@
}
},
"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"
},
"node_modules/define-lazy-prop": {

1
package.json

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

153
src/router/index.js

@ -1,7 +1,7 @@
import {createRouter, createWebHashHistory} from 'vue-router';
import { createRouter, createWebHashHistory } from 'vue-router';
import axios from "axios";
import {storeToRefs} from "pinia";
import {useAdminStore} from "@/store/index.js";
import { storeToRefs } from "pinia";
import { useAdminStore } from "@/store/index.js";
// 路由定义(包含权限映射 meta.permissionId)
@ -16,25 +16,29 @@ const routes = [
component: () => import("../views/login.vue"),
},
{
meta: {requireAuth: true},
meta: { requireAuth: true },
path: '/',
component: () => import("../views/home.vue"),
children: [
// 工作台
{
path: '/workspace',
name: "workspace",
path: 'workbench',
name: "workbench",
component: () => import("../views/workspace/index.vue"),
meta: {permissionId: 10} // 对应"工作台展示"id=10
meta: { permissionId: 13 } //
},
//金币管理
{
path: '/goldManage',
name: 'goldManage',
meta:{permissionId:3},
children: [
// 审核
{
path: '/audit',
name: "audit",
component: () => import("../views/audit/gold/audit.vue"),
meta: {permissionId: 40},
meta: { permissionId: 14 },
// redirect: '/index',
children: [
// 充值审核
@ -42,21 +46,30 @@ const routes = [
path: 'rechargeAudit',
name: "rechargeAudit",
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',
name: "refundAudit",
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",
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",
component: () => import("../views/consume/gold/coinConsume.vue"),
// redirect: '/coinConsume/add',
meta: {permissionId: 6},
meta: { permissionId: 19 },
children: [
// 金币新增消耗
{
path: 'add',
name: "addCoinConsume",
component: () => import("../views/consume/gold/addCoinConsume.vue"),
meta: {permissionId: 19} // 对应"提交金币消耗"id=19
meta: { permissionId: 55 } // 对应"提交金币消耗"id=19
},
// 金币消耗明细详情
{
path: 'detail',
name: "coinConsumeDetail",
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',
name: "beanConsume",
component: () => import("../views/consume/bean/beanConsume.vue"),
meta: {permissionId: 42},
meta: { permissionId: 20 },
children: [
// 金豆新增消耗
{
path: 'add',
name: "addBeanConsume",
component: () => import("../views/consume/bean/addBeanConsume.vue"),
meta: {permissionId: 49} // 对应"提交金豆消耗"id=49
meta: { permissionId: 57 } // 对应"提交金豆消耗"id=49
},
// 直播
{
path: 'live',
name: "liveStream",
component: () => import("../views/consume/bean/liveStream.vue"),
meta: {permissionId: 50} // 对应"直播"id=50
meta: { permissionId: 58 } // 对应"直播"id=50
},
// 铁粉
{
path: 'fan',
name: "dieHardFan",
component: () => import("../views/consume/bean/dieHardFan.vue"),
meta: {permissionId: 51} // 对应"铁粉"id=51
meta: { permissionId: 59 } // 对应"铁粉"id=51
},
// 文章视频
{
path: 'article',
name: "articleVideo",
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',
name: "rate",
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',
name: "coinRecharge",
component: () => import("../views/recharge/gold/coinRecharge.vue"),
meta: { permissionId: 17 },
// redirect: '/coinRecharge/add',
children: [
// 金币新增充值
@ -142,14 +156,14 @@ const routes = [
path: 'add',
name: "addCoinRecharge",
component: () => import("../views/recharge/gold/addCoinRecharge.vue"),
meta: {permissionId: 17} // 对应"提交金币充值"id=17
meta: { permissionId: 50 } // 对应"提交金币充值"id=17
},
// 金币充值明细详情
{
path: 'detail',
name: "coinRechargeDetail",
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",
component: () => import("../views/recharge/bean/beanRecharge.vue"),
// redirect: '/coinRecharge/add',
meta: { permissionId: 18 },
children: [
// 金豆新增充值
{
path: 'add',
name: "addBeanRecharge",
component: () => import("../views/recharge/bean/addBeanRecharge.vue"),
meta: {permissionId: 46} // 对应"提交金豆充值"id=46
meta: { permissionId: 52 } // 对应"提交金豆充值"id=46
},
// 金豆系统充值
{
path: 'system',
name: "beanSystemRecharge",
component: () => import("../views/recharge/bean/beanSystemRecharge.vue"),
meta: {permissionId: 47} // 对应"查看金豆系统充值明细"id=47
meta: { permissionId: 53 } // 对应"查看金豆系统充值明细"id=47
},
// 金豆线上充值
{
path: 'online',
name: "beanOnlineRecharge",
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',
name: "coinRefund",
component: () => import("../views/refund/gold/coinRefund.vue"),
// redirect: '/coinRefund/add',
meta: {permissionId: 7},
meta: { permissionId: 9 },
children: [
// 金币新增退款
{
path: 'add',
name: "addCoinRefund",
component: () => import("../views/refund/gold/addCoinRefund.vue"),
meta: {permissionId: 21} // 对应"提交金币退款"id=21
meta: { permissionId: 61 }
},
// 金币退款明细详情
{
path: 'detail',
name: "coinRefundDetail",
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,36 +229,49 @@ const routes = [
path: '/usergold',
name: "usergold",
component: () => import("../views/usergold/gold/clientCount.vue"),
// redirect: '/usergold/detail',
meta: {permissionId: 8},
meta: { permissionId: 10 },
children: [
// 金币明细
{
path: 'detail',
name: "clientCountDetail",
component: () => import("../views/usergold/gold/clientCountDetail.vue"),
meta: {permissionId: 23} // 对应"查看金币明细"id=23
meta: { permissionId: 63 }
},
// 金币余额
{
path: 'balance',
name: "clientCountBalance",
component: () => import("../views/usergold/gold/clientCountBalance.vue"),
meta: {permissionId: 24} // 对应"查看金币余额"id=24
meta: { permissionId: 64 }
},
]
},
{
path: 'userbean',
path: '/userbean',
name: "userbean",
component: () => import("../views/usergold/bean/userbean.vue"),
meta:{ permissionId: 45 }
meta: { permissionId: 45 }
},
{
path: '/history',
name: "history",
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',
name: "permissions",
component: () => import("../views/permissions/permissions.vue"),
meta: {permissionId: 9},
meta: { permissionId: 11 },
children: [
// 用户权限
{
path: 'userPermission',
name: "userPermission",
component: () => import("../views/permissions/userPermission.vue"),
meta: {permissionId: 25}
meta: { permissionId: 24 }
},
// 角色权限
{
path: 'rolePermission',
name: "rolePermission",
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',
@ -320,7 +370,7 @@ const getAllPermissionIds = (menuTree) => {
router.beforeEach(async (to, from, next) => {
const adminStore = useAdminStore()
const {adminData, menuTree} = storeToRefs(adminStore)
const { adminData, menuTree } = storeToRefs(adminStore)
const token = localStorage.getItem("token");
const machineId = localStorage.getItem("machineId");
@ -356,6 +406,7 @@ router.beforeEach(async (to, from, next) => {
// 拿权限id
userPermissionIds = getAllPermissionIds(menuTree.value)
console.log("userPermissionIds",userPermissionIds)
// 2.4 权限验证(逻辑不变)
console.log('to.meta:', to.meta)

16
src/utils/menuUtils.js

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

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

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

Loading…
Cancel
Save