diff --git a/.env.development b/.env.development index 9ad7365..e9dfee0 100644 --- a/.env.development +++ b/.env.development @@ -13,4 +13,4 @@ VITE_UPLOAD_URL=http://39.101.133.168:8828/hljw/api/aws/upload # 本地 #VITE_API_BASE='http://localhost:8081/' # sunjiabei -# VITE_API_BASE='http://192.168.0.34:8081/' \ No newline at end of file +# VITE_API_BASE='http://192.168.1.70:8081/' \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7661204..6da4030 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "axios": "^1.12.2", "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", @@ -3564,9 +3565,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": { diff --git a/package.json b/package.json index b9aeeb8..d667c43 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "axios": "^1.12.2", "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", diff --git a/src/assets/SvgIcons/上升箭头.svg b/src/assets/SvgIcons/上升箭头.svg new file mode 100644 index 0000000..343582c --- /dev/null +++ b/src/assets/SvgIcons/上升箭头.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/下降箭头.svg b/src/assets/SvgIcons/下降箭头.svg new file mode 100644 index 0000000..99120a4 --- /dev/null +++ b/src/assets/SvgIcons/下降箭头.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/周同比.svg b/src/assets/SvgIcons/周同比.svg new file mode 100644 index 0000000..b75ce36 --- /dev/null +++ b/src/assets/SvgIcons/周同比.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/SvgIcons/工作台.svg b/src/assets/SvgIcons/工作台.svg new file mode 100644 index 0000000..8344cf4 --- /dev/null +++ b/src/assets/SvgIcons/工作台.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/折合新币累计金额.svg b/src/assets/SvgIcons/折合新币累计金额.svg new file mode 100644 index 0000000..6951385 --- /dev/null +++ b/src/assets/SvgIcons/折合新币累计金额.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/持平.svg b/src/assets/SvgIcons/持平.svg new file mode 100644 index 0000000..9185a41 --- /dev/null +++ b/src/assets/SvgIcons/持平.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/昨日充值人数.svg b/src/assets/SvgIcons/昨日充值人数.svg new file mode 100644 index 0000000..8bcebc8 --- /dev/null +++ b/src/assets/SvgIcons/昨日充值人数.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/昨日新增消费.svg b/src/assets/SvgIcons/昨日新增消费.svg new file mode 100644 index 0000000..586f4ce --- /dev/null +++ b/src/assets/SvgIcons/昨日新增消费.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/昨日新增金币.svg b/src/assets/SvgIcons/昨日新增金币.svg new file mode 100644 index 0000000..5de8260 --- /dev/null +++ b/src/assets/SvgIcons/昨日新增金币.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/消耗.svg b/src/assets/SvgIcons/消耗.svg new file mode 100644 index 0000000..5df42f8 --- /dev/null +++ b/src/assets/SvgIcons/消耗.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/现金管理.svg b/src/assets/SvgIcons/现金管理.svg new file mode 100644 index 0000000..7452be0 --- /dev/null +++ b/src/assets/SvgIcons/现金管理.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/设置.svg b/src/assets/SvgIcons/设置.svg new file mode 100644 index 0000000..ad8b313 --- /dev/null +++ b/src/assets/SvgIcons/设置.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/金币管理.svg b/src/assets/SvgIcons/金币管理.svg new file mode 100644 index 0000000..5861f2d --- /dev/null +++ b/src/assets/SvgIcons/金币管理.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/SvgIcons/金币系统LOGO.svg b/src/assets/SvgIcons/金币系统LOGO.svg new file mode 100644 index 0000000..90ecbbf --- /dev/null +++ b/src/assets/SvgIcons/金币系统LOGO.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/backgroundBlue.png b/src/assets/backgroundBlue.png new file mode 100644 index 0000000..fc7ed01 Binary files /dev/null and b/src/assets/backgroundBlue.png differ diff --git a/src/assets/半透明background.png b/src/assets/半透明background.png new file mode 100644 index 0000000..2545b0a Binary files /dev/null and b/src/assets/半透明background.png differ diff --git a/src/components/workspace/CashManagement.vue b/src/components/workspace/CashManagement.vue new file mode 100644 index 0000000..e0864da --- /dev/null +++ b/src/components/workspace/CashManagement.vue @@ -0,0 +1,211 @@ + + + + + 现金管理 + 最后更新时间:{{ + workDataUpdateTime && workDataUpdateTime !== '1970-01-01 08:00:00' ? workDataUpdateTime : '该地区暂无数据' + }} + + + + 总营收:{{ cashData.totalIncome }} + + + + + + + {{ market.name }}: + {{ market.value.toLocaleString() }}新币 + + + + + + + + + + + + + diff --git a/src/components/workspace/CashManagementMarkets.vue b/src/components/workspace/CashManagementMarkets.vue new file mode 100644 index 0000000..890fb4b --- /dev/null +++ b/src/components/workspace/CashManagementMarkets.vue @@ -0,0 +1,210 @@ + + + + + + 现金管理 + 最后更新时间:{{ + workDataUpdateTime && workDataUpdateTime !== '1970-01-01 08:00:00' ? workDataUpdateTime : '该地区暂无数据' + }} + + + + 总营收:{{ cashData.totalIncome }} + + + + + + + {{ market.name }}: + {{ market.value.toLocaleString() }} + + + + + + + + + + + + + diff --git a/src/components/workspace/GoldGraph.vue b/src/components/workspace/GoldGraph.vue new file mode 100644 index 0000000..c57d6b8 --- /dev/null +++ b/src/components/workspace/GoldGraph.vue @@ -0,0 +1,818 @@ + + + + + + + + + + + + 合计:{{ sumConsume / 100 }} + 永久金币: {{ activeTab === 'recharge' ? sumRechargePermanent / 100 : sumConsumePermanent / 100 }} + 免费金币: {{ activeTab === 'recharge' ? sumRechargeFree / 100 : sumConsumeFree / 100 }} + 任务金币: {{ activeTab === 'recharge' ? sumRechargeTask / 100 : sumConsumeTask / 100 }} + + + 昨天 + + 今天 + + 本周 + + 本月 + + 本年 + + + + + 查询 + + + + + + + + 金币{{ activeTab === 'recharge' ? '充值' : '消费' }}排名 + + + + + + + + + + + {{ marketMapping[scope.row.market] || scope.row.market }} + + + + + {{ row.coinAmount.toLocaleString() }} + + + + + + + + + + + + diff --git a/src/components/workspace/GoldGraphMarkets.vue b/src/components/workspace/GoldGraphMarkets.vue new file mode 100644 index 0000000..3de971f --- /dev/null +++ b/src/components/workspace/GoldGraphMarkets.vue @@ -0,0 +1,818 @@ + + + + + + + + + + + + + + 合计:{{ sumConsume / 100 }} + 永久金币: {{ activeTab === 'recharge' ? sumRechargePermanent / 100 : sumConsumePermanent / 100 }} + 免费金币: {{ activeTab === 'recharge' ? sumRechargeFree / 100 : sumConsumeFree / 100 }} + 任务金币: {{ activeTab === 'recharge' ? sumRechargeTask / 100 : sumConsumeTask / 100 }} + + + 昨天 + + 今天 + + 本周 + + 本月 + + 本年 + + + + + 查询 + + + + + + + + 金币{{ activeTab === 'recharge' ? '充值' : '消费' }}排名 + + + + + + + + + + + {{ marketMapping[scope.row.market] || scope.row.market }} + + + + + {{ row.coinAmount.toLocaleString() }} + + + + + + + + + + + + diff --git a/src/components/workspace/GoldManagement.vue b/src/components/workspace/GoldManagement.vue new file mode 100644 index 0000000..c4663ff --- /dev/null +++ b/src/components/workspace/GoldManagement.vue @@ -0,0 +1,669 @@ + + + + + 金币管理 + 最后更新时间:{{ + workDataUpdateTime && workDataUpdateTime !== '1970-01-01 08:00:00' ? workDataUpdateTime : '该地区暂无数据' + }} + + + + + + + + 当前金币余量 + {{ + currentGold / 100 + }} 较前一日 + {{ dailyChange / 100 }} + + + + + + + + + + + + + + + + 永久金币:{{ currentPermanent / 100 }} + + + + 免费金币:{{ currentFree / 100 }} + + + + [6月到期:{{ currentFreeJune / 100 }}] + + + + 任务金币:{{ currentTask / 100 }} + + + + + + + [12月到期:{{ currentFreeDecember / 100 }}] + + + + + + + + + + + 全年累计充值金币数{{ yearlyRecharge / 100 }} + + + 折合新币累计金额 + + {{ yearlyMoney / 100 }}新币 + + + 昨日新增金币:{{ recharge / 100 }} + + 其中永久金币:{{ money / 100 }} + + + + + + + + + + + + 全年累计消费金币数{{ yearlyReduce / 100 }} + + + + + + + + + + + + + + 全年累计充值人头数{{ yearlyRechargeNum }} + + + + + + 周同比:{{ sumWow }}% + + + + + + 日环比:{{ sumDaily }}% + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/utils/menuTreePermission.js b/src/utils/menuTreePermission.js index 973b6df..58bb96f 100644 --- a/src/utils/menuTreePermission.js +++ b/src/utils/menuTreePermission.js @@ -40,14 +40,14 @@ export const permissionMapping = { rechargeReject:31, // 充值审核已驳回 rechargeWait:32, // 充值审核待审核 rechargeWaitShow:33, // 充值审核待审核查看 - rechargeWaitThough:34, // 充值审核通过 - rechargeWaitReject:35, // 充值审核驳回 + rechargeWaitThough:34, // 充值审核等待通过 + rechargeWaitReject:35, // 充值审核等待驳回 refundThrough:36, // 退款审核已通过 refundReject:37, // 退款审核已驳回 refundWait:38, // 退款审核待审核 refundWaitShow:39, // 退款审核待审核查看 - refundWaitThough:40, // 退款审核通过 - refundWaitReject:41, // 退款审核驳回 + refundWaitThough:40, // 退款审核等待通过 + refundWaitReject:41, // 退款审核等待驳回 beanWait:42, // 金豆审核待审核 beanThrough:43, // 金豆审核已通过 diff --git a/src/utils/menuUtils.js b/src/utils/menuUtils.js index 7178a4d..dfce0da 100644 --- a/src/utils/menuUtils.js +++ b/src/utils/menuUtils.js @@ -79,7 +79,7 @@ export const getRoutePath = (menu) => { '用户管理': '/permissions/userPermission', '角色管理': '/permissions/rolePermission', - '收款明细': '/receiveDetail/receiveDetail', + '收款明细': '/moneyManage/receiveDetail', '退款明细': '/moneyManage/refundDetail', '执行明细': '/moneyManage/executor', }; diff --git a/src/views/audit/gold/rechargeAudit.vue b/src/views/audit/gold/rechargeAudit.vue index 08f2750..b9d2c4b 100644 --- a/src/views/audit/gold/rechargeAudit.vue +++ b/src/views/audit/gold/rechargeAudit.vue @@ -1,5 +1,5 @@ - + @@ -47,12 +47,12 @@ - - - + + + - + 充值新币:{{ format3(stats.permanentGolds) }}新币 @@ -119,7 +119,8 @@ {{ moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') }} - + @@ -135,7 +136,8 @@ - + 驳回 @@ -189,7 +191,7 @@ const hasrechargeWaitThough = ref(false) // 充值审核通过 const hasrechargeWaitReject = ref(false) // 充值审核驳回 // 初始化权限状态 -const initPermissions = async() => { +const initPermissions = async () => { if (!menuTree.value || !menuTree.value.length) return; hasrechargeThrough.value = hasMenuPermission(menuTree.value, permissionMapping.rechargeThrough); hasrechargeReject.value = hasMenuPermission(menuTree.value, permissionMapping.rechargeReject); @@ -354,7 +356,7 @@ const getRecharge = async function (val) { } const getStats = async () => { - if (!hasrechargeWaitShow) { + if (!hasrechargeWaitShow) { return } try { @@ -480,21 +482,21 @@ const adminReject = async function () { const handleClick = function (tab, event) { activeName.value = tab.props.name if (tab.props.name === 'wait') { - if(!hasrechargeWait){ + if (!hasrechargeWait) { ElMessage.error('暂无权限') return } - if(hasrechargeWaitShow){ + if (hasrechargeWaitShow) { adminWait() } } else if (tab.props.name === 'pass') { - if(!hasrechargeThrough){ + if (!hasrechargeThrough) { ElMessage.error('暂无权限') return } adminPass() } else if (tab.props.name === 'reject') { - if(!hasrechargeReject){ + if (!hasrechargeReject) { ElMessage.error('暂无权限') return } @@ -525,35 +527,35 @@ const handlePagination = (type, val) => { const clicked = ref(false); // 处理通过操作 const handleApprove = async (row) => { - if(!hasrechargeWaitThough){ - ElMessage.error('暂无权限') - return - } + if (!hasrechargeWaitThough) { + ElMessage.error('暂无权限') + return + } clicked.value = true - try { - const params = { - orderCode: row.orderCode, - auditId: adminData.value.id, - action: 1, - rejectReason: '' - } - await request({ url: '/audit/audit', data: params }) - ElMessage.success('审核通过成功') - await getRecharge() - clicked.value = false - await getStats() - } catch (error) { - console.error('审核通过失败', error) - ElMessage.error('操作失败') + try { + const params = { + orderCode: row.orderCode, + auditId: adminData.value.id, + action: 1, + rejectReason: '' } - + await request({ url: '/audit/audit', data: params }) + ElMessage.success('审核通过成功') + await getRecharge() + clicked.value = false + await getStats() + } catch (error) { + console.error('审核通过失败', error) + ElMessage.error('操作失败') + } + } const showRejectDialog = (row) => { - if(!hasrechargeWaitReject){ - ElMessage.error('暂无权限') - return - } + if (!hasrechargeWaitReject) { + ElMessage.error('暂无权限') + return + } currentRecord.value = row rejectReason.value = '' rejectDialogVisible.value = true @@ -562,34 +564,34 @@ const showRejectDialog = (row) => { const cancelClicked = ref(false) // 处理驳回操作 const handleReject = async () => { - if(!hasrechargeWaitReject){ - ElMessage.error('暂无权限') - return - } + if (!hasrechargeWaitReject) { + ElMessage.error('暂无权限') + return + } cancelClicked.value = true - if (!rejectReason.value.trim()) { - ElMessage.warning('请输入驳回理由') - return + if (!rejectReason.value.trim()) { + ElMessage.warning('请输入驳回理由') + return + } + try { + const params = { + orderCode: currentRecord.value.orderCode, + auditId: adminData.value.id, + action: 2, + rejectReason: rejectReason.value } - try { - const params = { - orderCode: currentRecord.value.orderCode, - auditId: adminData.value.id, - action: 2, - rejectReason: rejectReason.value - } - await request({ url: '/audit/audit', data: params }) - ElMessage.success('驳回操作成功') - rejectDialogVisible.value = false - await getRecharge() - cancelClicked.value = false - await getStats() - } catch (error) { - console.error('驳回操作失败', error) - ElMessage.error('操作失败') - } + await request({ url: '/audit/audit', data: params }) + ElMessage.success('驳回操作成功') + rejectDialogVisible.value = false + await getRecharge() + cancelClicked.value = false + await getStats() + } catch (error) { + console.error('驳回操作失败', error) + ElMessage.error('操作失败') + } } // 处理排序事件 const handleSortChange = (column) => { @@ -700,11 +702,11 @@ const formatTime = (val) => val ? moment(val).format('YYYY-MM-DD HH:mm:ss') : '' // 挂载 onMounted(async function () { await initPermissions() - if(hasrechargeWaitShow.value){ + if (hasrechargeWaitShow.value) { rechargeAudit.value.auditStatus = '0' - }else if(hasrechargeThrough.value){ + } else if (hasrechargeThrough.value) { rechargeAudit.value.auditStatus = '1' - }else if(hasrechargeReject){ + } else if (hasrechargeReject) { rechargeAudit.value.auditStatus = '2' } await getActivity() @@ -715,7 +717,8 @@ onMounted(async function () { }) - \ No newline at end of file diff --git a/src/views/moneyManage/receiveDetail/receiveDetail.vue b/src/views/moneyManage/receiveDetail/receiveDetail.vue index ce553c9..b47a06d 100644 --- a/src/views/moneyManage/receiveDetail/receiveDetail.vue +++ b/src/views/moneyManage/receiveDetail/receiveDetail.vue @@ -1,2 +1,920 @@ - - \ No newline at end of file + + + + + + + 精网号 + + + + 客户姓名 + + + + 所属地区 + + + + 订单状态 + + + + 支付方式 + + + + + + 活动名称 + + + + 产品名称 + + + + 付款时间 + + + + + + 查询 + 重置 + 导出excel + 导出列表 + 切换客服 + 切换财务 + + + + + + + + + + + + + 待审核 + + + 已通过 + + + 已驳回 + + + + + 添加收款 + + + + + + + + {{ scope.$index + 1 + (pageInfo.pageNum - 1) * pageInfo.pageSize }} + + + + + + + + + + + + + + + + 待补充 + + + + + + + 待补充 + + + + + + + + + + + + + -- + + + + + + + + + + + + + 退款 + 编辑 + 撤回 + 审核 + 编辑 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 仅支持.jpg .png格式文件≤ 1 MB + + + + + + + + + + + + + 驳回 + {{ btnText }} + + + 取消 + 确定 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 仅支持.jpg .png格式文件≤ 1 MB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + + + + + 提交 + + + + + + + + + + \ No newline at end of file diff --git a/src/views/moneyManage/refundDetail/refundDetail.vue b/src/views/moneyManage/refundDetail/refundDetail.vue index 1706cbe..6fb6d4d 100644 --- a/src/views/moneyManage/refundDetail/refundDetail.vue +++ b/src/views/moneyManage/refundDetail/refundDetail.vue @@ -662,7 +662,7 @@ const customUpload = async (options) => { } } - \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index bde7f15..0000000 --- a/stats.html +++ /dev/null @@ -1,4949 +0,0 @@ - - - - - - - - Rollup Visualizer - - - - - - - - -