Compare commits

...

10 Commits

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

0
.trae/.ignore

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: "退款成功",
}, },

33
src/components/workspace/CashManagement.vue

@ -37,11 +37,23 @@
<div class="chart-container"> <div class="chart-container">
<!-- 左侧数据列表 --> <!-- 左侧数据列表 -->
<div class="market-data"> <div class="market-data">
<div v-if="marksFlag" v-for="market in cashData.markets" :key="market.name" class="market-item">
<div
v-if="marksFlag"
v-for="market in cashData.markets"
:key="market.name"
class="market-item"
@click="handleMarketClick(market.name)"
>
<span class="market-name">{{ market.name }}</span> <span class="market-name">{{ market.name }}</span>
<span class="market-value">{{ market.value.toLocaleString() }} {{ t('workbench.SGD') }}</span> <span class="market-value">{{ market.value.toLocaleString() }} {{ t('workbench.SGD') }}</span>
</div> </div>
<div v-else v-for="item in cashData.markets" :key="item.name" class="market-item">
<div
v-else
v-for="item in cashData.markets"
:key="item.name"
class="market-item"
@click="handleMarketClick(item.name)"
>
<span class="market-name">{{ item.name }}{{ t('workbench.collect') }}</span> <span class="market-name">{{ item.name }}{{ t('workbench.collect') }}</span>
<span class="market-value">{{ item.value.toLocaleString() }} {{ item.currencyLabel }}</span> <span class="market-value">{{ item.value.toLocaleString() }} {{ item.currencyLabel }}</span>
@ -57,14 +69,16 @@
<script setup> <script setup>
import * as echarts from 'echarts' import * as echarts from 'echarts'
import {onMounted, ref} from 'vue'
import { onMounted, ref } from 'vue'
import { useRouter } from 'vue-router'
import request from "@/util/http.js"; import request from "@/util/http.js";
import API from "@/util/http.js"; import API from "@/util/http.js";
import {Warning, Service} from "@element-plus/icons-vue";
import { Warning, Service } from "@element-plus/icons-vue";
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
const { t } = useI18n() const { t } = useI18n()
const router = useRouter()
const chartRef = ref(null) const chartRef = ref(null)
let chartInstance = null let chartInstance = null
@ -195,6 +209,14 @@ const fetchCashData = async () => {
} }
} }
const handleMarketClick = (name) => {
if (!name) return
router.push({
path: '/moneyManage/financialAccount/cashFlow',
query: { region: name }
})
}
// //
const marksFlag = ref(); const marksFlag = ref();
const loading = ref(true); // const loading = ref(true); //
@ -204,7 +226,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) {
@ -333,6 +355,7 @@ onMounted( async() => {
overflow: hidden; /* 隐藏溢出内容 */ overflow: hidden; /* 隐藏溢出内容 */
text-overflow: ellipsis; /* 溢出显示省略号 */ text-overflow: ellipsis; /* 溢出显示省略号 */
margin-bottom: 8px; /* 增加项间距,提升可读性 */ margin-bottom: 8px; /* 增加项间距,提升可读性 */
cursor: pointer;
} }
.market-name { .market-name {

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}
},
]
}
] ]
}, },
// 频道管理 // 频道管理

35
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, // 提交执行明细
@ -169,6 +170,10 @@ export const permissionMapping = {
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

21
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" // 小黄车管理(频道管理子菜单)

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
} }
}; };

66
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,41 +161,24 @@ 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')); ElMessage.error(t('elmessage.limitExceeded'));
// sumGoldnull
addConsume.value.sumGold = null; addConsume.value.sumGold = null;
return false; return false;
} }
// 使validateRedLimit
}
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) { if (isNaN(sumGold) || sumGold <= 0) {
ElMessage.error(t('elmessage.noEmptySumGold')); ElMessage.error(t('elmessage.noEmptySumGold'));
return false; return false;
} }
// 使 +
if (addConsume.value.redMoney == 1) {
if (sumGold + redMax < price) {
ElMessage.error(t('elmessage.limitRedAmount'));
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>

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