Compare commits

...

12 Commits

  1. 0
      .trae/.ignore
  2. 17
      package-lock.json
  3. 1
      src/assets/SvgIcons/consume.svg
  4. 5
      src/components/locales/lang/en.js
  5. 9
      src/components/locales/lang/zh-CN.js
  6. 2
      src/components/workspace/CashManagement.vue
  7. 52
      src/router/index.js
  8. 37
      src/utils/menuTreePermission.js
  9. 23
      src/utils/menuUtils.js
  10. 1
      src/views/channelManage/fans/fans.vue
  11. 1
      src/views/channelManage/reward/reward.vue
  12. 4
      src/views/consume/bean/articleVideo.vue
  13. 1
      src/views/consume/bean/dieHardFan.vue
  14. 1
      src/views/consume/bean/liveStream.vue
  15. 80
      src/views/consume/gold/addCoinConsume.vue
  16. 94
      src/views/consume/gold/coinConsumeDetail.vue
  17. 4
      src/views/home.vue
  18. 2
      src/views/managerecharge/rate.vue
  19. 4
      src/views/moneyManage/executor/executor.vue
  20. 5
      src/views/moneyManage/financialAccount/cashFlow.vue
  21. 5
      src/views/moneyManage/financialAccount/performanceAttribution.vue
  22. 2
      src/views/moneyManage/receiveDetail/receiveDetail1.vue
  23. 2
      src/views/moneyManage/receiveDetail/receiveFinance.vue
  24. 2
      src/views/moneyManage/receiveDetail/receiveHead.vue
  25. 2
      src/views/moneyManage/receiveDetail/receiveManage.vue
  26. 2
      src/views/moneyManage/receiveDetail/receiveService.vue
  27. 2
      src/views/moneyManage/receiveDetail/utils/staticData.js
  28. 4
      src/views/moneyManage/refundDetail/refundDetail.vue
  29. 4
      src/views/permissions/userPermission.vue
  30. 2
      src/views/workspace/index.vue

0
.trae/.ignore

17
package-lock.json

@ -116,7 +116,6 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
"integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.2.0", "@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.2", "@babel/code-frame": "^7.26.2",
@ -2020,7 +2019,6 @@
"version": "6.7.2", "version": "6.7.2",
"resolved": "https://registry.npmmirror.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz", "resolved": "https://registry.npmmirror.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz",
"integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==", "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==",
"peer": true,
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-common-types": "6.7.2" "@fortawesome/fontawesome-common-types": "6.7.2"
}, },
@ -2793,7 +2791,6 @@
"resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/lodash-es/-/lodash-es-4.17.12.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/lodash-es/-/lodash-es-4.17.12.tgz",
"integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/lodash": "*" "@types/lodash": "*"
} }
@ -2804,7 +2801,6 @@
"integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"undici-types": "~6.20.0" "undici-types": "~6.20.0"
} }
@ -3341,7 +3337,6 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"caniuse-lite": "^1.0.30001688", "caniuse-lite": "^1.0.30001688",
"electron-to-chromium": "^1.5.73", "electron-to-chromium": "^1.5.73",
@ -4246,15 +4241,13 @@
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"license": "MIT",
"peer": true
"license": "MIT"
}, },
"node_modules/lodash-es": { "node_modules/lodash-es": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash-es/-/lodash-es-4.17.21.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
"license": "MIT",
"peer": true
"license": "MIT"
}, },
"node_modules/lodash-unified": { "node_modules/lodash-unified": {
"version": "1.0.3", "version": "1.0.3",
@ -4724,7 +4717,6 @@
"integrity": "sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ==", "integrity": "sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/estree": "1.0.6" "@types/estree": "1.0.6"
}, },
@ -4802,7 +4794,6 @@
"resolved": "https://registry.npmmirror.com/sass/-/sass-1.86.3.tgz", "resolved": "https://registry.npmmirror.com/sass/-/sass-1.86.3.tgz",
"integrity": "sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==", "integrity": "sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"chokidar": "^4.0.0", "chokidar": "^4.0.0",
"immutable": "^5.0.2", "immutable": "^5.0.2",
@ -4949,7 +4940,6 @@
"integrity": "sha512-GWANVlPM/ZfYzuPHjq0nxT+EbOEDDN3Jwhwdg1D8TU8oSkktp8w64Uq4auuGLxFSoNTRDncTq2hQHX1Ld9KHkA==", "integrity": "sha512-GWANVlPM/ZfYzuPHjq0nxT+EbOEDDN3Jwhwdg1D8TU8oSkktp8w64Uq4auuGLxFSoNTRDncTq2hQHX1Ld9KHkA==",
"dev": true, "dev": true,
"license": "BSD-2-Clause", "license": "BSD-2-Clause",
"peer": true,
"dependencies": { "dependencies": {
"@jridgewell/source-map": "^0.3.3", "@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2", "acorn": "^8.8.2",
@ -5003,7 +4993,6 @@
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
"devOptional": true, "devOptional": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
@ -5096,7 +5085,6 @@
"integrity": "sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==", "integrity": "sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"esbuild": "^0.24.2", "esbuild": "^0.24.2",
"postcss": "^8.5.1", "postcss": "^8.5.1",
@ -5188,7 +5176,6 @@
"resolved": "https://mirrors.huaweicloud.com/repository/npm/vue/-/vue-3.5.13.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue/-/vue-3.5.13.tgz",
"integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.5.13", "@vue/compiler-dom": "3.5.13",
"@vue/compiler-sfc": "3.5.13", "@vue/compiler-sfc": "3.5.13",

1
src/assets/SvgIcons/consume.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1768291260270" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1605" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M463.99957 784.352211c0 26.509985 21.490445 48.00043 48.00043 48.00043s48.00043-21.490445 48.00043-48.00043c0-26.509985-21.490445-48.00043-48.00043-48.00043S463.99957 757.842226 463.99957 784.352211z" fill="#1296db" p-id="1606"></path><path d="M512 960c-247.039484 0-448-200.960516-448-448S264.960516 64 512 64 960 264.960516 960 512 759.039484 960 512 960zM512 128.287273c-211.584464 0-383.712727 172.128262-383.712727 383.712727 0 211.551781 172.128262 383.712727 383.712727 383.712727 211.551781 0 383.712727-172.159226 383.712727-383.712727C895.712727 300.415536 723.551781 128.287273 512 128.287273z" fill="#1296db" p-id="1607"></path><path d="M512 673.695256c-17.664722 0-32.00086-14.336138-32.00086-31.99914l0-54.112297c0-52.352533 39.999785-92.352318 75.32751-127.647359 25.887273-25.919957 52.67249-52.67249 52.67249-74.016718 0-53.343368-43.07206-96.735385-95.99914-96.735385-53.823303 0-95.99914 41.535923-95.99914 94.559333 0 17.664722-14.336138 31.99914-32.00086 31.99914s-32.00086-14.336138-32.00086-31.99914c0-87.423948 71.775299-158.559333 160.00086-158.559333s160.00086 72.095256 160.00086 160.735385c0 47.904099-36.32028 84.191695-71.424378 119.295794-27.839699 27.776052-56.575622 56.511974-56.575622 82.3356l0 54.112297C544.00086 659.328155 529.664722 673.695256 512 673.695256z" fill="#1296db" p-id="1608"></path></svg>

5
src/components/locales/lang/en.js

@ -363,6 +363,7 @@ export default {
getChartDataFailed: "Get chart data failed", getChartDataFailed: "Get chart data failed",
renderChartFailed: "Chart render failed", renderChartFailed: "Chart render failed",
// Rate // Rate
confirmModify: "Confirm modify?",
pleaseInputRate: "Enter rate", pleaseInputRate: "Enter rate",
pleaseInputCorrectRateFormat: "Check rate format", pleaseInputCorrectRateFormat: "Check rate format",
pleaseInputCorrectSymbol: "Check symbol", pleaseInputCorrectSymbol: "Check symbol",
@ -692,7 +693,7 @@ export default {
activityName: "Activity", activityName: "Activity",
currencyName: "Currency", currencyName: "Currency",
rechargeAmount: "Amount", rechargeAmount: "Amount",
note: "Note",
note: "Remark",
payModel: "Payment", payModel: "Payment",
paymentVoucher: "Voucher", paymentVoucher: "Voucher",
submitter: "Submitter", submitter: "Submitter",
@ -771,7 +772,7 @@ export default {
addBeanRecharge: "New Recharge", addBeanRecharge: "New Recharge",
systemRecharge: "System", systemRecharge: "System",
onlineRecharge: "Online", onlineRecharge: "Online",
mobile: "Mobile",
mobile: "Phone",
}, },
// Consume Group // Consume Group

9
src/components/locales/lang/zh-CN.js

@ -362,6 +362,7 @@ export default {
getChartDataFailed: "获取图表数据失败,请稍后重试", getChartDataFailed: "获取图表数据失败,请稍后重试",
renderChartFailed: "图表渲染失败,请稍后重试", renderChartFailed: "图表渲染失败,请稍后重试",
// 汇率相关 // 汇率相关
confirmModify: "确认修改?",
pleaseInputRate: "请输入汇率比例", pleaseInputRate: "请输入汇率比例",
pleaseInputCorrectRateFormat: "请输入正确的汇率比例格式", pleaseInputCorrectRateFormat: "请输入正确的汇率比例格式",
pleaseInputCorrectSymbol: "请输入正确的符号", pleaseInputCorrectSymbol: "请输入正确的符号",
@ -667,7 +668,7 @@ export default {
consumptionTimes: "消费次数", consumptionTimes: "消费次数",
onlyStatisticsDataAfter20250101: "仅统计2025-01-01后的数据", onlyStatisticsDataAfter20250101: "仅统计2025-01-01后的数据",
store: "所属门店", store: "所属门店",
maxReductionAmount: "红包最大抵扣金额",
// maxReductionAmount: "红包最大抵扣金额",
//金豆 //金豆
currentPayableBean: "当前付费金豆", currentPayableBean: "当前付费金豆",
currentFreeBean: "当前免费金豆", currentFreeBean: "当前免费金豆",
@ -1025,7 +1026,7 @@ export default {
cash: { cash: {
refundProgress: "退款进度", refundProgress: "退款进度",
progress: { progress: {
areaFinance: "地区财务",
areaFinance: "收款处理",
areaCharge: "地区负责人", areaCharge: "地区负责人",
headFinance: "总部财务", headFinance: "总部财务",
executor: "指定执行人", executor: "指定执行人",
@ -1040,7 +1041,7 @@ export default {
myr: "马币(MYR)", myr: "马币(MYR)",
thb: "泰铢(THB)", thb: "泰铢(THB)",
cad: "加币(CAD)", cad: "加币(CAD)",
vnd: "越南盾(VDN)",
vnd: "越南盾(VND)",
krw: "韩元(KRW)", krw: "韩元(KRW)",
}, },
// 收款方式 // 收款方式
@ -1161,7 +1162,7 @@ export default {
rejected: "已驳回", rejected: "已驳回",
inProgress: "进行中", inProgress: "进行中",
}, },
// 执行明细
// 退款执行
pending: "待处理", pending: "待处理",
refundSuccess: "退款成功", refundSuccess: "退款成功",
}, },

2
src/components/workspace/CashManagement.vue

@ -204,7 +204,7 @@ const getAdminData = async function () {
loading.value = true; // loading.value = true; //
const result = await API({url: '/admin/userinfo', data: {}}); const result = await API({url: '/admin/userinfo', data: {}});
marksFlag.value = result.markets === '总部' || result.markets === '研发部' marksFlag.value = result.markets === '总部' || result.markets === '研发部'
|| result.markets === 'Headquarters' || result.markets === 'R&D Department';
|| result.markets === 'Headquarters' || result.markets === 'R&D Dept';
console.log("marksFlag", marksFlag.value); console.log("marksFlag", marksFlag.value);
// alert(marksFlag.value) // alert(marksFlag.value)
} catch (error) { } catch (error) {

52
src/router/index.js

@ -309,33 +309,33 @@ const routes = [
name: "receiveDetail", name: "receiveDetail",
meta: {permissionId: 74}, meta: {permissionId: 74},
children: [ children: [
// 客服页面
// 收款提交
{ {
path: 'receiveService', path: 'receiveService',
name: "receiveService", name: "receiveService",
component: () => import("../views/moneyManage/receiveDetail/receiveService.vue"), component: () => import("../views/moneyManage/receiveDetail/receiveService.vue"),
meta: {permissionId: 60} meta: {permissionId: 60}
}, },
// 地区负责人页面
// 收款处理
{ {
path: 'receiveManager', path: 'receiveManager',
name: "receiveManager", name: "receiveManager",
component: () => import("../views/moneyManage/receiveDetail/receiveManage.vue"), component: () => import("../views/moneyManage/receiveDetail/receiveManage.vue"),
meta: {permissionId: [67, 79]} meta: {permissionId: [67, 79]}
}, },
{//地区财务
{//收款处理 (负责人)
path: 'receiveFinance', path: 'receiveFinance',
name: "receiveFinance", name: "receiveFinance",
component: () => import("../views/moneyManage/receiveDetail/receiveFinance.vue"), component: () => import("../views/moneyManage/receiveDetail/receiveFinance.vue"),
meta: {permissionId: [67, 79]} meta: {permissionId: [67, 79]}
}, },
//总部管理员及财务
{
path: 'receiveHeader',
name: "receiveHeader",
component: () => import("../views/moneyManage/receiveDetail/receiveHead.vue"),
meta: {permissionId: 91}
},
//总部管理员及财务(移除)
// {
// path: 'receiveHeader',
// name: "receiveHeader",
// component: () => import("../views/moneyManage/receiveDetail/receiveHead.vue"),
// meta: {permissionId: 91}
// },
] ]
}, },
// 退款明细 // 退款明细
@ -345,28 +345,28 @@ const routes = [
component: () => import("../views/moneyManage/refundDetail/refundDetail.vue"), component: () => import("../views/moneyManage/refundDetail/refundDetail.vue"),
meta: {permissionId: 98}, meta: {permissionId: 98},
children: [ children: [
// 客服页面
// 退款提交
{ {
path: 'refundService', path: 'refundService',
name: "refundService", name: "refundService",
component: () => import("../views/moneyManage/refundDetail/refundService.vue"), component: () => import("../views/moneyManage/refundDetail/refundService.vue"),
meta: {permissionId: 99} meta: {permissionId: 99}
}, },
// 地区财务页面
// 退款审批
{ {
path: 'refundFinance', path: 'refundFinance',
name: "refundFinance", name: "refundFinance",
component: () => import("../views/moneyManage/refundDetail/refundFinance.vue"), component: () => import("../views/moneyManage/refundDetail/refundFinance.vue"),
meta: {permissionId: 103} meta: {permissionId: 103}
}, },
// 地区负责人页面
// 退款审批(负责人)
{ {
path: 'refundCharge', path: 'refundCharge',
name: "refundCharge", name: "refundCharge",
component: () => import("../views/moneyManage/refundDetail/refundCharge.vue"), component: () => import("../views/moneyManage/refundDetail/refundCharge.vue"),
meta: {permissionId: 107} meta: {permissionId: 107}
}, },
//总部管理员及财务
// 退款审批(总部财务
{ {
path: 'refundHeader', path: 'refundHeader',
name: "refundHeader", name: "refundHeader",
@ -375,13 +375,35 @@ const routes = [
}, },
] ]
}, },
// 执行明细
// 退款执行
{ {
path: 'executor', path: 'executor',
name: "executor", name: "executor",
component: () => import("../views/moneyManage/executor/executor.vue"), component: () => import("../views/moneyManage/executor/executor.vue"),
meta: {permissionId: 115} meta: {permissionId: 115}
}, },
// 财务核算
{
path: 'financialAccount',
name: "financialAccount",
meta: {permissionId: 147},
children: [
// 资金流水
{
path: 'cashFlow',
name: "cashFlow",
component: () => import("../views/moneyManage/financialAccount/cashFlow.vue"),
meta: {permissionId: 148}
},
// 业绩归属
{
path: 'performanceAttribution',
name: "performanceAttribution",
component: () => import("../views/moneyManage/financialAccount/performanceAttribution.vue"),
meta: {permissionId: 149}
},
]
}
] ]
}, },
// 频道管理 // 频道管理

37
src/utils/menuTreePermission.js

@ -68,7 +68,7 @@ export const permissionMapping = {
cash_management: 58, // 现金管理 cash_management: 58, // 现金管理
collection_details: 59, // 收款明细 collection_details: 59, // 收款明细
collection_area_customer_service: 60, // 收款 - 地区客服
collection_area_submit: 60, // 收款 - 地区客服--->收款提交
view_customer_service_collection: 61, // 客服收款查看 view_customer_service_collection: 61, // 客服收款查看
add_customer_service_collection: 62, // 客服添加收款 add_customer_service_collection: 62, // 客服添加收款
withdraw_customer_service_collection: 63, // 客服收款撤回 withdraw_customer_service_collection: 63, // 客服收款撤回
@ -76,7 +76,7 @@ export const permissionMapping = {
refund_customer_service_collection: 65, // 客服收款退款 refund_customer_service_collection: 65, // 客服收款退款
view_customer_service_refund_reason: 66, // 客服收款查看退款理由 view_customer_service_refund_reason: 66, // 客服收款查看退款理由
collection_area_finance: 67, // 收款 - 地区财务
collection_area_processing: 67, // 收款 - 地区财务--->收款处理
area_finance_collection_pending: 68, // 地区财务收款待审核 area_finance_collection_pending: 68, // 地区财务收款待审核
view_area_finance_pending: 69, // 地区财务收款待审核查看 view_area_finance_pending: 69, // 地区财务收款待审核查看
pass_area_finance_collection: 70, // 地区财务收款通过 pass_area_finance_collection: 70, // 地区财务收款通过
@ -89,7 +89,7 @@ export const permissionMapping = {
view_area_finance_completed: 77, // 地区财务收款已完成查看 view_area_finance_completed: 77, // 地区财务收款已完成查看
refund_area_finance_completed: 78, // 地区财务收款已完成退款 refund_area_finance_completed: 78, // 地区财务收款已完成退款
collection_area_manager: 79, // 收款 - 地区负责人
collection_area_manager: 79, // 收款 - 地区负责人--->收款处理(负责人)
area_manager_collection_pending: 80, // 地区负责人收款待审核 area_manager_collection_pending: 80, // 地区负责人收款待审核
view_area_manager_pending: 81, // 地区负责人收款待审核查看 view_area_manager_pending: 81, // 地区负责人收款待审核查看
pass_area_manager_collection: 82, // 地区负责人收款通过 pass_area_manager_collection: 82, // 地区负责人收款通过
@ -102,36 +102,37 @@ export const permissionMapping = {
view_area_manager_completed: 89, // 地区负责人收款已完成查看 view_area_manager_completed: 89, // 地区负责人收款已完成查看
refund_area_manager_completed: 90, // 地区负责人收款已完成退款 refund_area_manager_completed: 90, // 地区负责人收款已完成退款
collection_headquarters_finance: 91, // 收款 - 总部财务
headquarters_finance_approved: 92, // 总部财务收款已通过
view_headquarters_approved: 93, // 总部财务收款已通过查看
edit_headquarters_approved: 94, // 总部财务收款已通过编辑
headquarters_finance_completed: 95, // 总部财务收款已完成
view_headquarters_completed: 96, // 总部财务收款已完成查看
refund_headquarters_completed: 97, // 总部财务收款已完成退款
// 移除总部财务
// collection_headquarters_finance: 91, // 收款 - 总部财务
// headquarters_finance_approved: 92, // 总部财务收款已通过
// view_headquarters_approved: 93, // 总部财务收款已通过查看
// edit_headquarters_approved: 94, // 总部财务收款已通过编辑
// headquarters_finance_completed: 95, // 总部财务收款已完成
// view_headquarters_completed: 96, // 总部财务收款已完成查看
// refund_headquarters_completed: 97, // 总部财务收款已完成退款
refund_details: 98, // 退款明细 refund_details: 98, // 退款明细
refund_area_customer_service: 99, // 退款 - 地区客服
refund_area_cash: 99, // 退款 - 地区客服--->退款提交
view_customer_service_refund_pending: 100, // 客服退款查看 view_customer_service_refund_pending: 100, // 客服退款查看
withdraw_customer_service_refund: 101, // 客服退款撤回 withdraw_customer_service_refund: 101, // 客服退款撤回
edit_customer_service_refund: 102, // 客服退款编辑 edit_customer_service_refund: 102, // 客服退款编辑
refund_area_finance: 103, // 退款 - 地区财务
refund_area_review: 103, // 退款 - 地区财务--->退款审批
view_area_finance_refund: 104, // 地区财务退款查看 view_area_finance_refund: 104, // 地区财务退款查看
audit_area_finance_refund: 105, // 地区财务退款审核 audit_area_finance_refund: 105, // 地区财务退款审核
track_area_finance_refund_progress: 106, // 地区财务退款进度 track_area_finance_refund_progress: 106, // 地区财务退款进度
refund_area_manager: 107, // 退款 - 地区负责人
refund_area_manager: 107, // 退款 - 地区负责人--->退款审批(负责人)
view_area_manager_refund: 108, // 地区负责人退款查看 view_area_manager_refund: 108, // 地区负责人退款查看
audit_area_manager_refund: 109, // 地区负责人退款审核 audit_area_manager_refund: 109, // 地区负责人退款审核
track_area_manager_refund_progress: 110, // 地区负责人退款进度 track_area_manager_refund_progress: 110, // 地区负责人退款进度
refund_headquarters_finance: 111, // 退款 - 总部财务
refund_headquarters_finance: 111, // 退款 - 总部财务--->退款审批(总部财务)
view_headquarters_refund: 112, // 总部财务退款查看 view_headquarters_refund: 112, // 总部财务退款查看
audit_headquarters_refund: 113, // 总部财务退款审核 audit_headquarters_refund: 113, // 总部财务退款审核
track_headquarters_refund_progress: 114, // 总部财务退款进度 track_headquarters_refund_progress: 114, // 总部财务退款进度
execution_details: 115, // 执行明细
execution_details_refund: 115, // 执行明细--->退款执行
view_execution_details: 116, // 查看执行明细 view_execution_details: 116, // 查看执行明细
edit_execution_details: 117, // 编辑执行明细 edit_execution_details: 117, // 编辑执行明细
submit_execution_details: 118, // 提交执行明细 submit_execution_details: 118, // 提交执行明细
@ -166,9 +167,13 @@ export const permissionMapping = {
view_personal_information: 142, // 查看个人信息 view_personal_information: 142, // 查看个人信息
change_password: 143, // 修改密码 change_password: 143, // 修改密码
logout_system: 144, // 退出登录 logout_system: 144, // 退出登录
message_push: 145, // 消息推送
message_push: 145, // 消息推送
mutiple_language: 146, // 多语言配置 mutiple_language: 146, // 多语言配置
financial_accounting: 147, // 财务核算
cash_flow_ledger: 148, // 资金流水账
performance_attribution_accounting: 149, // 业绩归属台账
} }
// 递归查找菜单中是否存在目标id // 递归查找菜单中是否存在目标id

23
src/utils/menuUtils.js

@ -71,16 +71,19 @@ export const getRoutePath = (menu) => {
"51": "/usergold", // 金币客户账户明细 "51": "/usergold", // 金币客户账户明细
"54": "/userbean", // 金豆客户账户明细 "54": "/userbean", // 金豆客户账户明细
"59": "/moneyManage/receiveDetail", // 收款明细(现金管理子菜单) "59": "/moneyManage/receiveDetail", // 收款明细(现金管理子菜单)
"60": "/moneyManage/receiveDetail/receiveService", // 收款-地区客服(收款明细子菜单)
"67": "/moneyManage/receiveDetail/receiveFinance", // 收款-地区财务(收款明细子菜单)
"79": "/moneyManage/receiveDetail/receiveManager", // 收款-地区负责人(收款明细子菜单)
"91": "/moneyManage/receiveDetail/receiveHeader", // 收款-总部财务(收款明细子菜单)
"60": "/moneyManage/receiveDetail/receiveService", // 收款-收款提交(收款明细子菜单)
"67": "/moneyManage/receiveDetail/receiveFinance", // 收款-收款处理(收款明细子菜单)
"79": "/moneyManage/receiveDetail/receiveManager", // 收款-收款处理(负责人)(收款明细子菜单)
// "91": "/moneyManage/receiveDetail/receiveHeader", // 收款-总部财务(收款明细子菜单) 移除
"98": "/moneyManage/refundDetail", // 退款明细(现金管理子菜单) "98": "/moneyManage/refundDetail", // 退款明细(现金管理子菜单)
"99": "/moneyManage/refundDetail/refundService", // 退款-地区客服(退款明细子菜单)
"103": "/moneyManage/refundDetail/refundFinance", // 退款-地区财务(退款明细子菜单)
"107": "/moneyManage/refundDetail/refundCharge", // 退款-地区负责人(退款明细子菜单)
"111": "/moneyManage/refundDetail/refundHeader", // 退款-总部财务(退款明细子菜单)
"115": "/moneyManage/executor", // 执行明细(现金管理子菜单)
"99": "/moneyManage/refundDetail/refundService", // 退款-退款提交(退款明细子菜单)
"103": "/moneyManage/refundDetail/refundFinance", // 退款-退款审批(退款明细子菜单)
"107": "/moneyManage/refundDetail/refundCharge", // 退款-退款审批(负责人)(退款明细子菜单)
"111": "/moneyManage/refundDetail/refundHeader", // 退款-退款审批(总部财务)(退款明细子菜单)
"115": "/moneyManage/executor", // 退款执行(现金管理子菜单)
"147": "/moneyManage/financialAccount", // 财务核算(现金管理子菜单)
"148": "/moneyManage/financialAccount/cashFlow", // 资金流水账(财务核算子菜单)
"149": "/moneyManage/financialAccount/performanceAttribution", // 业绩归属账(财务核算子菜单)
"125": "/channelManage/reward", // 打赏管理(频道管理子菜单) "125": "/channelManage/reward", // 打赏管理(频道管理子菜单)
"126": "/channelManage/fans", // 铁粉管理(频道管理子菜单) "126": "/channelManage/fans", // 铁粉管理(频道管理子菜单)
"127": "/channelManage/cart" // 小黄车管理(频道管理子菜单) "127": "/channelManage/cart" // 小黄车管理(频道管理子菜单)
@ -88,4 +91,4 @@ export const getRoutePath = (menu) => {
// 从映射表中匹配路由,无匹配时返回无权限页面路径 // 从映射表中匹配路由,无匹配时返回无权限页面路径
return routeMap[menu.id] || '/noPermission'; return routeMap[menu.id] || '/noPermission';
}
}

1
src/views/channelManage/fans/fans.vue

@ -219,6 +219,7 @@ const ConsumeSelectBy = async function (val) {
payType: 7, // payType 7 payType: 7, // payType 7
beanConsumeFan: { beanConsumeFan: {
...beanConsumeFan.value, ...beanConsumeFan.value,
roleId: adminData.value.roleId,
flag: flag.value flag: flag.value
} }
}; };

1
src/views/channelManage/reward/reward.vue

@ -258,6 +258,7 @@ const selectLiveBy = async function (val) {
payType: 1, // payType 1 payType: 1, // payType 1
beanConsumeLive: { beanConsumeLive: {
...beanConsumeLive.value, ...beanConsumeLive.value,
roleId: adminData.value.roleId,
flag: flag.value flag: flag.value
} }
}; };

4
src/views/consume/bean/articleVideo.vue

@ -581,8 +581,8 @@ const getTagText = (state) => {
<template #default="scope"> <template #default="scope">
{{ {{
Array.isArray(consumeTypes) Array.isArray(consumeTypes)
? consumeTypes.find(item => item.value === Number(scope.row.type))?.label || t('common_list.unknownType')
: t('common_list.unknownType')
? consumeTypes.find(item => item.value === Number(scope.row.type))?.label || t('common_list.other')
: t('common_list.other')
}} }}
</template> </template>
</el-table-column> </el-table-column>

1
src/views/consume/bean/dieHardFan.vue

@ -219,6 +219,7 @@ const ConsumeSelectBy = async function (val) {
payType: 7, // payType 7 payType: 7, // payType 7
beanConsumeFan: { beanConsumeFan: {
...beanConsumeFan.value, ...beanConsumeFan.value,
roleId: adminData.value.roleId,
flag: flag.value flag: flag.value
} }
}; };

1
src/views/consume/bean/liveStream.vue

@ -258,6 +258,7 @@ const selectLiveBy = async function (val) {
payType: 1, // payType 1 payType: 1, // payType 1
beanConsumeLive: { beanConsumeLive: {
...beanConsumeLive.value, ...beanConsumeLive.value,
roleId: adminData.value.roleId,
flag: flag.value flag: flag.value
} }
}; };

80
src/views/consume/gold/addCoinConsume.vue

@ -1,5 +1,5 @@
<script setup> <script setup>
import { onMounted, reactive, ref, watch } from "vue";
import { onMounted, reactive, ref, watch, computed } from "vue";
import { ElIcon, ElMessage } from "element-plus"; import { ElIcon, ElMessage } from "element-plus";
import moment from "moment"; import moment from "moment";
import request from "@/util/http.js" import request from "@/util/http.js"
@ -64,8 +64,7 @@ const addConsume = ref({
taskGold: null, // taskGold: null, //
remark: "",// remark: "",//
adminId: null,// id adminId: null,// id
adminName: adminData.value.adminName,
redMoney: 1 // 使1-使0-使
adminName: adminData.value.adminName
}) })
const Ref = ref(null) const Ref = ref(null)
const rules = reactive({ const rules = reactive({
@ -162,40 +161,23 @@ function validateInput() {
} }
//
const totalAvailableGold = (user.value.nowSumGold)
// 使
//
const totalAvailableGold = user.value.nowSumGold;
if (user.value.jwcode && sumGold > totalAvailableGold) { if (user.value.jwcode && sumGold > totalAvailableGold) {
// 使
if (addConsume.value.redMoney == 0) {
ElMessage.error(t('elmessage.limitExceeded'));
// sumGoldnull
addConsume.value.sumGold = null;
return false;
}
// 使validateRedLimit
ElMessage.error(t('elmessage.limitExceeded'));
addConsume.value.sumGold = null;
return false;
} }
return true; return true;
} }
// blur +
// blursumGold
function validateRedLimit() { function validateRedLimit() {
const sumGold = parseFloat(addConsume.value.sumGold); const sumGold = parseFloat(addConsume.value.sumGold);
const price = Number(addConsume.value.price || 0);
const redMax = Number(user.value.red || 0);
if (!isNaN(price) && price > 0) {
if (isNaN(sumGold) || sumGold <= 0) {
ElMessage.error(t('elmessage.noEmptySumGold'));
return false;
}
// 使 +
if (addConsume.value.redMoney == 1) {
if (sumGold + redMax < price) {
ElMessage.error(t('elmessage.limitRedAmount'));
return false;
}
}
if (isNaN(sumGold) || sumGold <= 0) {
ElMessage.error(t('elmessage.noEmptySumGold'));
return false;
} }
return true; return true;
} }
@ -212,21 +194,22 @@ function calculateCoins(sumGold) {
let remaining = parsedSumGold; let remaining = parsedSumGold;
let freeUsed = 0, permanentUsed = 0, taskUsed = 0; let freeUsed = 0, permanentUsed = 0, taskUsed = 0;
//
if (nowFreeGold > 0) {
// 1.
if (remaining > 0 && nowFreeGold > 0) {
freeUsed = Math.min(parseFloat(nowFreeGold.toFixed(4)), remaining); freeUsed = Math.min(parseFloat(nowFreeGold.toFixed(4)), remaining);
remaining = parseFloat((remaining - freeUsed).toFixed(4)); remaining = parseFloat((remaining - freeUsed).toFixed(4));
} }
//
// 2.
if (remaining > 0 && nowPermanentGold > 0) { if (remaining > 0 && nowPermanentGold > 0) {
permanentUsed = Math.min(parseFloat(nowPermanentGold.toFixed(4)), remaining); permanentUsed = Math.min(parseFloat(nowPermanentGold.toFixed(4)), remaining);
remaining = parseFloat((remaining - permanentUsed).toFixed(4)); remaining = parseFloat((remaining - permanentUsed).toFixed(4));
} }
//
// 3.
if (remaining > 0 && nowTaskGold > 0) { if (remaining > 0 && nowTaskGold > 0) {
taskUsed = parseFloat(remaining.toFixed(4));
taskUsed = Math.min(parseFloat(nowTaskGold.toFixed(4)), remaining);
remaining = parseFloat((remaining - taskUsed).toFixed(4));
} }
// //
@ -276,8 +259,7 @@ const add = async function () {
permanentGold: addConsume.value.permanentGold * 100, permanentGold: addConsume.value.permanentGold * 100,
goodsName: addConsume.value.goodsName.value, goodsName: addConsume.value.goodsName.value,
remark: addConsume.value.remark, remark: addConsume.value.remark,
adminName: adminData.value.adminName,
redMoney: Number(addConsume.value.redMoney) // 1-使0-使
adminName: adminData.value.adminName
} }
}) })
addDisabled.value = false addDisabled.value = false
@ -328,8 +310,7 @@ function resetForm() {
taskGold: null, taskGold: null,
remark: "", remark: "",
adminId: adminData.value.id, adminId: adminData.value.id,
adminName: adminData.value.adminName,
redMoney: 1 // 使
adminName: adminData.value.adminName
} }
console.log("重置表单") console.log("重置表单")
@ -352,6 +333,9 @@ function resetForm() {
nowFreeGold: null, nowFreeGold: null,
nowSumGold: null nowSumGold: null
} }
//
Ref.value.clearValidate()
} }
// //
@ -424,7 +408,7 @@ const addBefore = () => {
}); });
return; return;
} }
if (!validateInput() || !validateRedLimit()) {
if (!validateInput()) {
return; return;
} }
ReadCookies.value = `coinConsume:${addConsume.value.jwcode}:${addConsume.value.goodsName.value}` ReadCookies.value = `coinConsume:${addConsume.value.jwcode}:${addConsume.value.goodsName.value}`
@ -494,8 +478,6 @@ const getUser = async function (jwcode) {
addConsume.value.taskGold = task; addConsume.value.taskGold = task;
} }
} }
//
validateInput()
} else if (!result.data) { } else if (!result.data) {
@ -544,7 +526,7 @@ watch(
() => addConsume.value.sumGold, () => addConsume.value.sumGold,
(newValue) => { (newValue) => {
const parsedNewValue = parseFloat(newValue); const parsedNewValue = parseFloat(newValue);
if (!isNaN(parsedNewValue) && parsedNewValue > 0) {
if (!isNaN(parsedNewValue) && parsedNewValue > 0 && user.value.jwcode) {
const { free, permanent, task } = calculateCoins(parsedNewValue); const { free, permanent, task } = calculateCoins(parsedNewValue);
addConsume.value.freeGold = free; addConsume.value.freeGold = free;
addConsume.value.permanentGold = permanent; addConsume.value.permanentGold = permanent;
@ -569,6 +551,8 @@ watch(
} }
); );
/* 红包逻辑已在当前分支移除 */
/* /*
====================挂载================================= ====================挂载=================================
*/ */
@ -603,14 +587,8 @@ onMounted(async function () {
<el-input v-model="addConsume.price" style="width: 120px" disabled /> <el-input v-model="addConsume.price" style="width: 120px" disabled />
</el-form-item> </el-form-item>
<!-- <el-form-item prop="sumGold" :label="t('common_add.consumeTotalGold')">
<el-input v-model="addConsume.sumGold" style="width: 120px"
@blur="validateRedLimit()" />
</el-form-item> -->
<el-form-item prop="sumGold" :label="t('common_add.consumeTotalGold')"> <el-form-item prop="sumGold" :label="t('common_add.consumeTotalGold')">
<el-input v-model="addConsume.sumGold" style="width: 120px" @blur="validateRedLimit()" /> <el-input v-model="addConsume.sumGold" style="width: 120px" @blur="validateRedLimit()" />
<el-radio v-model="addConsume.redMoney" :label="1" style="margin-left: 10px;">使用红包</el-radio>
<el-radio v-model="addConsume.redMoney" :label="0">不使用红包</el-radio>
</el-form-item> </el-form-item>
@ -715,11 +693,11 @@ onMounted(async function () {
<p>{{ user.market }}</p> <p>{{ user.market }}</p>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="14">
<!-- <el-col :span="14">
<el-form-item :label="$t('common_add_user.maxReductionAmount')"> <el-form-item :label="$t('common_add_user.maxReductionAmount')">
<p style="color: #2fa1ff">{{ user.red }} </p> <p style="color: #2fa1ff">{{ user.red }} </p>
</el-form-item> </el-form-item>
</el-col>
</el-col> -->
</el-row> </el-row>
</el-form> </el-form>
</el-card> </el-card>
@ -934,4 +912,4 @@ p {
} }
} }
} }
</style>
</style>

94
src/views/consume/gold/coinConsumeDetail.vue

@ -614,13 +614,19 @@ const getMarket = async function () {
<el-col> <el-col>
<div class="select"> <div class="select">
<div class="selectRow" style="width: 36vw;">
<div class="selectRow">
<el-text size="large" class="text">订单状态</el-text>
<el-select class="selectContent" v-model="consumeUser.isRefund" placeholder="请选择订单状态" clearable>
<el-option label="正常" value="0" />
<el-option label="已退款" value="1" />
</el-select>
</div>
<div class="selectRow" style="width: 32.5vw;">
<el-text class="text" size="large">{{ $t('common.consumeTime') }}</el-text> <el-text class="text" size="large">{{ $t('common.consumeTime') }}</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" :range-separator="$t('common.to')" <el-date-picker class="selectContent" v-model="getTime" type="datetimerange" :range-separator="$t('common.to')"
:start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" style="margin-right:1vw;width:25vw" :start-placeholder="$t('common.startTime')" :end-placeholder="$t('common.endTime')" style="margin-right:1vw;width:25vw"
@change="handleDatePickerChange" :default-time="defaultTime" :disabled-date="disabledDate" /> @change="handleDatePickerChange" :default-time="defaultTime" :disabled-date="disabledDate" />
<div v-if="false"> <div v-if="false">
<el-button @click="getToday()" style="margin-left: 1vw" <el-button @click="getToday()" style="margin-left: 1vw"
:type="activeTimeRange === 'today' ? 'primary' : ''"> :type="activeTimeRange === 'today' ? 'primary' : ''">
@ -665,7 +671,6 @@ const getMarket = async function () {
<el-table-column prop="jwcode" :label="$t('common_list.jwcode')" width="110px" fixed="left" /> <el-table-column prop="jwcode" :label="$t('common_list.jwcode')" width="110px" fixed="left" />
<el-table-column prop="market" :label="$t('common_list.market')" width="110px" /> <el-table-column prop="market" :label="$t('common_list.market')" width="110px" />
<el-table-column prop="orderCode" :label="$t('common_list.orderNo')" width="260px" show-overflow-tooltip /> <el-table-column prop="orderCode" :label="$t('common_list.orderNo')" width="260px" show-overflow-tooltip />
_list
<el-table-column prop="goodsName" :label="$t('common_list.goodsName')" width="160px" show-overflow-tooltip /> <el-table-column prop="goodsName" :label="$t('common_list.goodsName')" width="160px" show-overflow-tooltip />
<el-table-column prop="payPlatform" :label="$t('common_list.consumePlatform')" width="130px"> <el-table-column prop="payPlatform" :label="$t('common_list.consumePlatform')" width="130px">
<template #default="scope"> <template #default="scope">
@ -699,11 +704,47 @@ _list
</el-table-column> </el-table-column>
<el-table-column prop="remark" :label="$t('common_list.remark')" width="200px" show-overflow-tooltip /> <el-table-column prop="remark" :label="$t('common_list.remark')" width="200px" show-overflow-tooltip />
<el-table-column prop="isRefund" :label="$t('common_list.orderStatus')" width="200px" show-overflow-tooltip>
<el-table-column prop="isRefund" :label="$t('common_list.orderStatus')" width="120px" show-overflow-tooltip fixed="right" align="center">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.isRefund == 0">{{ $t('consume.normal') }}</span>
<span v-else-if="scope.row.isRefund == 1">{{ $t('consume.refunded') }}</span>
<span v-else>{{ $t('consume.unknown') }}</span>
<div v-if="scope.row.isRefund == 0">{{ $t('consume.normal') }}</div>
<div v-else-if="scope.row.isRefund == 1" style="display: flex; justify-content: center; align-items: center;">{{ $t('consume.refunded') }}
<el-popover
v-model:visible="scope.row.popoverVisible"
trigger="click"
placement="top"
popper-class="refund-popover"
teleported="false"
>
<div class="popover-content">
<div class="popover-title">{{ scope.row.refundModel == 0 ? '全部退款' : '部分退款' }}</div>
<div class="popover-item">
<span class="label">总金币数</span>
<span class="value">{{ scope.row.refundSumGold }}</span>
</div>
<div class="popover-item">
<span class="label">永久金币</span>
<span class="value">{{ scope.row.refundPermanentGold }}</span>
</div>
<div class="popover-item">
<span class="label">免费金币</span>
<span class="value">{{ scope.row.refundFreeGold }}</span>
</div>
<div class="popover-item">
<span class="label">任务金币</span>
<span class="value">{{ scope.row.refundTaskGold }}</span>
</div>
</div>
<template #reference>
<img
@click.stop
src="@/assets/SvgIcons/consume.svg"
style="width: 15px; height: 15px; margin-left: 5px; cursor: pointer; display: inline-block;"
alt="退款详情"
>
</template>
</el-popover>
</div>
<div v-else>{{ $t('consume.unknown') }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="adminName" :label="$t('common_list.submitter')" width="110px" /> <el-table-column prop="adminName" :label="$t('common_list.submitter')" width="110px" />
@ -752,7 +793,46 @@ _list
</el-dialog> </el-dialog>
</template> </template>
<style lang="scss">
.refund-popover {
background-color: #EEF5FE !important;
border: none !important;
padding: 12px !important;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
min-width: unset !important;
.el-popper__arrow::before {
background-color: #EEF5FE !important;
border-color: #EEF5FE !important;
}
}
</style>
<style scoped lang="scss"> <style scoped lang="scss">
.popover-content {
.popover-title {
color: #409EFF;
font-weight: bold;
font-size: 14px;
margin-bottom: 8px;
}
.popover-item {
display: flex;
font-size: 13px;
color: #606266;
margin-bottom: 4px;
&:last-child {
margin-bottom: 0;
}
.label {
color: #606266;
}
.value {
color: #606266;
margin-left: 4px;
}
}
}
.status { .status {
display: flex; display: flex;
} }

4
src/views/home.vue

@ -159,7 +159,7 @@ const selectStatusById = () => {
} }
// //
if (hasPermission(permissionMapping.collection_area_customer_service)) {
if (hasPermission(permissionMapping.collection_area_submit)) {
status.push(2); status.push(2);
} }
// //
@ -186,7 +186,7 @@ const selectStatusById = () => {
status.push(40); status.push(40);
} }
//退 //退
if (hasPermission(permissionMapping.refund_area_customer_service)) {
if (hasPermission(permissionMapping.refund_area_cash)) {
status.push(12,22,32); status.push(12,22,32);
} }

2
src/views/managerecharge/rate.vue

@ -161,7 +161,7 @@ const edit = () => {
editFormRef.value.validate(async (valid) => { editFormRef.value.validate(async (valid) => {
if (valid) { if (valid) {
try { try {
await ElMessageBox.confirm("确认修改?");
await ElMessageBox.confirm(t('elmessage.confirmModify'));
await editRate(); await editRate();
console.log("修改成功"); console.log("修改成功");
regeEdit.value = false; regeEdit.value = false;

4
src/views/moneyManage/executor/executor.vue

@ -417,7 +417,7 @@ const hideEditDialog = () => {
jwcode: '' jwcode: ''
} }
} }
// const currencies = ref(['(USD)', '(HKD)', '(SGD)', '(MYR)', '(THB)', '(CAD)', '(VDN)', '(KRW)'])
// const currencies = ref(['(USD)', '(HKD)', '(SGD)', '(MYR)', '(THB)', '(CAD)', '(VND)', '(KRW)'])
const currencies = ref([ const currencies = ref([
t('cash.currency.usd'), // (USD) t('cash.currency.usd'), // (USD)
t('cash.currency.hkd'), // (HKD) t('cash.currency.hkd'), // (HKD)
@ -425,7 +425,7 @@ const currencies = ref([
t('cash.currency.myr'), // (MYR) t('cash.currency.myr'), // (MYR)
t('cash.currency.thb'), // (THB) t('cash.currency.thb'), // (THB)
t('cash.currency.cad'), // (CAD) t('cash.currency.cad'), // (CAD)
t('cash.currency.vnd'), // (VDN)
t('cash.currency.vnd'), // (VND)
t('cash.currency.krw') // (KRW) t('cash.currency.krw') // (KRW)
]) ])
// const channelOptions = ref(["Stripe-", "PaymentAsia-", "Ipay88-", "", "", "", "", "Grabpay", "Nets", "E-Transfer", "Paypal"]) // const channelOptions = ref(["Stripe-", "PaymentAsia-", "Ipay88-", "", "", "", "", "Grabpay", "Nets", "E-Transfer", "Paypal"])

5
src/views/moneyManage/financialAccount/cashFlow.vue

@ -0,0 +1,5 @@
<template>
<div>
<h1>资金流水</h1>
</div>
</template>

5
src/views/moneyManage/financialAccount/performanceAttribution.vue

@ -0,0 +1,5 @@
<template>
<div>
<h1>业绩归属</h1>
</div>
</template>

2
src/views/moneyManage/receiveDetail/receiveDetail1.vue

@ -1027,7 +1027,7 @@ const handleEditForm = async () => {
} }
// //
const selectedCurrency = ref(''); const selectedCurrency = ref('');
const customOptions = ref(['美元(USD)', '港币(HKD)', '新币(SGD)', '马币(MYR)', '泰铢(THB)', '加币(CAD)', '越南盾(VDN)', '韩元(KRW)']);
const customOptions = ref(['美元(USD)', '港币(HKD)', '新币(SGD)', '马币(MYR)', '泰铢(THB)', '加币(CAD)', '越南盾(VND)', '韩元(KRW)']);
// //
const paytypeOptions = ref(["Stripe-链接收款", "PaymentAsia-链接收款", "Ipay88-链接收款", "银行转账", "刷卡", "现金", "支票", "Grabpay", "Nets", "E-Transfer", "Paypal"]) const paytypeOptions = ref(["Stripe-链接收款", "PaymentAsia-链接收款", "Ipay88-链接收款", "银行转账", "刷卡", "现金", "支票", "Grabpay", "Nets", "E-Transfer", "Paypal"])

2
src/views/moneyManage/receiveDetail/receiveFinance.vue

@ -751,7 +751,7 @@ const customOptions = ref([
t('cash.currency.myr'), // (MYR) t('cash.currency.myr'), // (MYR)
t('cash.currency.thb'), // (THB) t('cash.currency.thb'), // (THB)
t('cash.currency.cad'), // (CAD) t('cash.currency.cad'), // (CAD)
t('cash.currency.vnd'), // (VDN)
t('cash.currency.vnd'), // (VND)
t('cash.currency.krw') // (KRW) t('cash.currency.krw') // (KRW)
]) ])
const paytypeList = [ const paytypeList = [

2
src/views/moneyManage/receiveDetail/receiveHead.vue

@ -727,7 +727,7 @@ const customOptions = ref([
t('cash.currency.myr'), // (MYR) t('cash.currency.myr'), // (MYR)
t('cash.currency.thb'), // (THB) t('cash.currency.thb'), // (THB)
t('cash.currency.cad'), // (CAD) t('cash.currency.cad'), // (CAD)
t('cash.currency.vnd'), // (VDN)
t('cash.currency.vnd'), // (VND)
t('cash.currency.krw') // (KRW) t('cash.currency.krw') // (KRW)
]) ])
// - 使cash.payMethods // - 使cash.payMethods

2
src/views/moneyManage/receiveDetail/receiveManage.vue

@ -751,7 +751,7 @@ const customOptions = ref([
t('cash.currency.myr'), // (MYR) t('cash.currency.myr'), // (MYR)
t('cash.currency.thb'), // (THB) t('cash.currency.thb'), // (THB)
t('cash.currency.cad'), // (CAD) t('cash.currency.cad'), // (CAD)
t('cash.currency.vnd'), // (VDN)
t('cash.currency.vnd'), // (VND)
t('cash.currency.krw') // (KRW) t('cash.currency.krw') // (KRW)
]) ])
const paytypeList = [ const paytypeList = [

2
src/views/moneyManage/receiveDetail/receiveService.vue

@ -866,7 +866,7 @@ const customOptions = ref([
t('cash.currency.myr'), // (MYR) t('cash.currency.myr'), // (MYR)
t('cash.currency.thb'), // (THB) t('cash.currency.thb'), // (THB)
t('cash.currency.cad'), // (CAD) t('cash.currency.cad'), // (CAD)
t('cash.currency.vnd'), // (VDN)
t('cash.currency.vnd'), // (VND)
t('cash.currency.krw') // (KRW) t('cash.currency.krw') // (KRW)
]) ])
// - 使cash.payMethods // - 使cash.payMethods

2
src/views/moneyManage/receiveDetail/utils/staticData.js

@ -304,7 +304,7 @@ export const CurrencyForId = (name) => {
return 5 return 5
} else if (name == t('cash.currency.cad') || name == '加币(CAD)' || name == 'Canadian Dollar(CAD)') { } else if (name == t('cash.currency.cad') || name == '加币(CAD)' || name == 'Canadian Dollar(CAD)') {
return 6 return 6
} else if (name == t('cash.currency.vnd') || name == '越南盾(VDN)' || name == 'Vietnamese Dong(VDN)') {
} else if (name == t('cash.currency.vnd') || name == '越南盾(VND)' || name == 'Vietnamese Dong(VND)') {
return 7 return 7
} else if (name == t('cash.currency.krw') || name == '韩元(KRW)' || name == 'South Korean Won(KRW)') { } else if (name == t('cash.currency.krw') || name == '韩元(KRW)' || name == 'South Korean Won(KRW)') {
return 8 return 8

4
src/views/moneyManage/refundDetail/refundDetail.vue

@ -27,8 +27,8 @@ const navigateTo = (name) => {
const initPermissions = () => { const initPermissions = () => {
if (!menuTree.value || !menuTree.value.length) return if (!menuTree.value || !menuTree.value.length) return
isService.value = hasMenuPermission(menuTree.value, permissionMapping.refund_area_customer_service)
isFinance.value = hasMenuPermission(menuTree.value, permissionMapping.refund_area_finance)
isService.value = hasMenuPermission(menuTree.value, permissionMapping.refund_area_cash)
isFinance.value = hasMenuPermission(menuTree.value, permissionMapping.refund_area_review)
isCharge.value = hasMenuPermission(menuTree.value, permissionMapping.refund_area_manager) isCharge.value = hasMenuPermission(menuTree.value, permissionMapping.refund_area_manager)
isHeader.value = hasMenuPermission(menuTree.value, permissionMapping.refund_headquarters_finance) isHeader.value = hasMenuPermission(menuTree.value, permissionMapping.refund_headquarters_finance)
console.log('====================================', isService.value, isFinance.value,isCharge.value,isHeader.value) console.log('====================================', isService.value, isFinance.value,isCharge.value,isHeader.value)

4
src/views/permissions/userPermission.vue

@ -813,9 +813,9 @@ const confirmResetPassword = async function () {
// //
if (adminData.value.markets.includes(currentRow.value.market) || adminData.value.markets[0] === '总部' || adminData.value.markets[0] === '研发部' || adminData.value.markets[0] === 'Headquarters' || adminData.value.markets[0] === 'R&D Department') {
if (adminData.value.markets.includes(currentRow.value.market) || adminData.value.markets[0] === '总部' || adminData.value.markets[0] === '研发部' || adminData.value.markets[0] === 'Headquarters' || adminData.value.markets[0] === 'R&D Dept') {
console.log('符合条件,可以操作', adminData.value.markets.includes(currentRow.value.market) || adminData.value.markets[0] === '总部' || adminData.value.markets[0] === '研发部' || adminData.value.markets[0] === 'Headquarters' || adminData.value.markets[0] === 'R&D Department');
console.log('符合条件,可以操作', adminData.value.markets.includes(currentRow.value.market) || adminData.value.markets[0] === '总部' || adminData.value.markets[0] === '研发部' || adminData.value.markets[0] === 'Headquarters' || adminData.value.markets[0] === 'R&D Dept');
const params = { const params = {
account: currentRow.value.account, account: currentRow.value.account,
} }

2
src/views/workspace/index.vue

@ -42,7 +42,7 @@ const getAdminData = async function () {
loading.value = true; // loading.value = true; //
const result = await API({url: '/admin/userinfo', data: {}}); const result = await API({url: '/admin/userinfo', data: {}});
GraphFlag.value = result.markets !== '总部' && result.markets !== '研发部' GraphFlag.value = result.markets !== '总部' && result.markets !== '研发部'
&& result.markets !== 'Headquarters' && result.markets !== 'R&D Department'
&& result.markets !== 'Headquarters' && result.markets !== 'R&D Dept'
; ;

Loading…
Cancel
Save