diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/saiadmin-artd/src/api/dashboard.ts b/saiadmin-artd/src/api/dashboard.ts index 110265f..cdf09f7 100644 --- a/saiadmin-artd/src/api/dashboard.ts +++ b/saiadmin-artd/src/api/dashboard.ts @@ -2,6 +2,8 @@ import request from '@/utils/http' export type DashboardQueryParams = { dept_id?: number + /** 统计日期,格式 YYYY-MM-DD,默认当日 */ + date?: string } /** diff --git a/saiadmin-artd/src/composables/useDashboardScope.ts b/saiadmin-artd/src/composables/useDashboardScope.ts new file mode 100644 index 0000000..10191fc --- /dev/null +++ b/saiadmin-artd/src/composables/useDashboardScope.ts @@ -0,0 +1,98 @@ +import type { InjectionKey, Ref, ComputedRef } from 'vue' +import { getChannelDeptRequestParams, useInjectedChannelDept } from '@/composables/useChannelDeptScope' + +export interface DashboardQueryParams { + dept_id?: number + date?: string +} + +export interface DashboardScopeContext { + selectedDate: Ref + hasDateFilter: ComputedRef + queryParams: ComputedRef +} + +export const DASHBOARD_SCOPE_KEY: InjectionKey = Symbol('dashboardScope') + +function formatDateYmd(date: Date): string { + const y = date.getFullYear() + const m = String(date.getMonth() + 1).padStart(2, '0') + const d = String(date.getDate()).padStart(2, '0') + return `${y}-${m}-${d}` +} + +export function getTodayDateString(): string { + return formatDateYmd(new Date()) +} + +/** 工作台页面 provide 日期筛选上下文 */ +export function provideDashboardScope() { + const selectedDate = ref(getTodayDateString()) + const hasDateFilter = computed(() => !!selectedDate.value) + const queryParams = computed(() => { + const params: DashboardQueryParams = { + ...getChannelDeptRequestParams() + } + if (selectedDate.value) { + params.date = selectedDate.value + } + return params + }) + const ctx: DashboardScopeContext = { selectedDate, hasDateFilter, queryParams } + provide(DASHBOARD_SCOPE_KEY, ctx) + return ctx +} + +export function useDashboardScope(): DashboardScopeContext { + const ctx = inject(DASHBOARD_SCOPE_KEY, null) + if (ctx) { + return ctx + } + const selectedDate = ref(getTodayDateString()) + const hasDateFilter = computed(() => !!selectedDate.value) + return { + selectedDate, + hasDateFilter, + queryParams: computed(() => { + const params: DashboardQueryParams = { + ...getChannelDeptRequestParams() + } + if (selectedDate.value) { + params.date = selectedDate.value + } + return params + }) + } +} + +/** 工作台:渠道或日期变化时重新拉数 */ +export function useDashboardReload(loadFn: () => void | Promise) { + const channel = useInjectedChannelDept() + const { selectedDate } = useDashboardScope() + + const run = () => { + void loadFn() + } + + watch(selectedDate, run) + + if (!channel) { + onMounted(run) + return + } + + watch( + () => channel.selectedDeptId.value, + (deptId) => { + if (channel.isAllChannelScope.value && deptId <= 0) { + run() + return + } + if (!channel.showDefaultTemplate.value && deptId <= 0) { + return + } + run() + }, + { immediate: true } + ) +} diff --git a/saiadmin-artd/src/locales/langs/en.json b/saiadmin-artd/src/locales/langs/en.json index 165ae46..c1b647f 100644 --- a/saiadmin-artd/src/locales/langs/en.json +++ b/saiadmin-artd/src/locales/langs/en.json @@ -300,16 +300,33 @@ "gohome": "Go Home" }, "console": { + "filter": { + "date": "Statistics Date", + "placeholder": "Select date", + "today": "Today", + "clear": "Clear" + }, "card": { "playerRegister": "Player Register", "playerCharge": "Player Charge", "playerWithdraw": "Player Withdraw", "playerPlayCount": "Player Play Count", - "vsLastWeek": "vs Last Week" + "vsLastWeek": "vs Last Week", + "vsYesterday": "vs Yesterday", + "viewRechargeRecords": "View recharge records", + "viewWithdrawRecords": "View withdraw records", + "viewPlayRecords": "View play records", + "viewRegisterRecords": "View registered players" + }, + "nav": { + "viewAllRecharge": "View all recharge", + "viewAllPlay": "View all play records", + "viewAllRegister": "View all registrations" }, "newPlayer": { "title": "New Players", "subtitle": "Latest 50 new player records", + "subtitleByDate": "New players on {date} (up to 50)", "player": "Player", "balance": "Balance", "ticket": "Tickets", @@ -318,6 +335,7 @@ "playRecord": { "title": "Player Play Records", "subtitle": "Latest 50 play records", + "subtitleByDate": "Play records on {date} (up to 50)", "player": "Player", "reward": "Reward Tier", "winCoin": "Win Amount", @@ -326,6 +344,7 @@ "walletRecord": { "title": "Player Charge Records", "subtitle": "Latest 50 charge records", + "subtitleByDate": "Charge records on {date} (up to 50)", "player": "Player", "chargeAmount": "Amount", "chargeTime": "Charge Time" @@ -450,6 +469,10 @@ "max": "Max", "startTime": "Start Time", "endTime": "End Time", + "quickDate": "Quick date", + "quickToday": "Today", + "quickYesterday": "Yesterday", + "quickLast7Days": "Last 7 days", "placeholderUsername": "Username", "placeholderNickname": "Nickname", "placeholderPhone": "Phone", diff --git a/saiadmin-artd/src/locales/langs/en/dice/player.json b/saiadmin-artd/src/locales/langs/en/dice/player.json index 3c4cd0c..889a50c 100644 --- a/saiadmin-artd/src/locales/langs/en/dice/player.json +++ b/saiadmin-artd/src/locales/langs/en/dice/player.json @@ -72,7 +72,8 @@ "placeholderNickname": "Please enter nickname", "placeholderPhoneFuzzy": "Phone (fuzzy)", "placeholderAll": "All", - "exactSearch": "Exact" + "exactSearch": "Exact", + "createTime": "Register Time" }, "table": { "username": "Username", diff --git a/saiadmin-artd/src/locales/langs/en/dice/player_wallet_record.json b/saiadmin-artd/src/locales/langs/en/dice/player_wallet_record.json index 07595de..7f997a3 100644 --- a/saiadmin-artd/src/locales/langs/en/dice/player_wallet_record.json +++ b/saiadmin-artd/src/locales/langs/en/dice/player_wallet_record.json @@ -1,6 +1,8 @@ { "toolbar": { - "coinChangeSummary": "Coin Change Summary" + "coinChangeSummary": "Net Coin Change", + "coinInflow": "Inflow", + "coinOutflow": "Outflow" }, "form": { "dialogTitleAdd": "Add Wallet Record", diff --git a/saiadmin-artd/src/locales/langs/zh.json b/saiadmin-artd/src/locales/langs/zh.json index 5a295e0..2fda70e 100644 --- a/saiadmin-artd/src/locales/langs/zh.json +++ b/saiadmin-artd/src/locales/langs/zh.json @@ -300,16 +300,33 @@ "gohome": "返回首页" }, "console": { + "filter": { + "date": "统计日期", + "placeholder": "选择日期", + "today": "今日", + "clear": "清空" + }, "card": { "playerRegister": "玩家注册", "playerCharge": "玩家充值", "playerWithdraw": "玩家提现", "playerPlayCount": "玩家游玩次数", - "vsLastWeek": "较上周" + "vsLastWeek": "较上周", + "vsYesterday": "较昨日", + "viewRechargeRecords": "查看充值记录", + "viewWithdrawRecords": "查看提现记录", + "viewPlayRecords": "查看游玩记录", + "viewRegisterRecords": "查看注册玩家" + }, + "nav": { + "viewAllRecharge": "查看全部充值", + "viewAllPlay": "查看全部游玩", + "viewAllRegister": "查看全部注册" }, "newPlayer": { "title": "新增玩家", "subtitle": "最新50条新增玩家记录", + "subtitleByDate": "{date} 新增玩家记录(最多50条)", "player": "玩家", "balance": "余额", "ticket": "抽奖券", @@ -318,6 +335,7 @@ "playRecord": { "title": "玩家游玩记录", "subtitle": "最新50条游玩记录", + "subtitleByDate": "{date} 游玩记录(最多50条)", "player": "玩家", "reward": "中奖档位", "winCoin": "赢取平台币", @@ -326,6 +344,7 @@ "walletRecord": { "title": "玩家充值记录", "subtitle": "最新50条充值记录", + "subtitleByDate": "{date} 充值记录(最多50条)", "player": "玩家", "chargeAmount": "充值金额", "chargeTime": "充值时间" @@ -446,6 +465,10 @@ "max": "最大", "startTime": "开始时间", "endTime": "结束时间", + "quickDate": "快捷日期", + "quickToday": "今日", + "quickYesterday": "昨日", + "quickLast7Days": "近7天", "placeholderUsername": "请输入用户名", "placeholderNickname": "请输入昵称", "placeholderPhone": "请输入手机号", diff --git a/saiadmin-artd/src/locales/langs/zh/dice/player.json b/saiadmin-artd/src/locales/langs/zh/dice/player.json index 3738a4e..a507559 100644 --- a/saiadmin-artd/src/locales/langs/zh/dice/player.json +++ b/saiadmin-artd/src/locales/langs/zh/dice/player.json @@ -72,7 +72,8 @@ "placeholderNickname": "请输入昵称", "placeholderPhoneFuzzy": "手机号模糊查询", "placeholderAll": "全部", - "exactSearch": "精确搜索" + "exactSearch": "精确搜索", + "createTime": "注册时间" }, "table": { "username": "用户名", diff --git a/saiadmin-artd/src/locales/langs/zh/dice/player_wallet_record.json b/saiadmin-artd/src/locales/langs/zh/dice/player_wallet_record.json index d4a1d86..c358774 100644 --- a/saiadmin-artd/src/locales/langs/zh/dice/player_wallet_record.json +++ b/saiadmin-artd/src/locales/langs/zh/dice/player_wallet_record.json @@ -1,6 +1,8 @@ { "toolbar": { - "coinChangeSummary": "平台币变化统计" + "coinChangeSummary": "平台币净变化", + "coinInflow": "流入", + "coinOutflow": "流出" }, "form": { "dialogTitleAdd": "新增玩家钱包流水", diff --git a/saiadmin-artd/src/views/dashboard/console/index.vue b/saiadmin-artd/src/views/dashboard/console/index.vue index 13ab4c0..7d6b79d 100644 --- a/saiadmin-artd/src/views/dashboard/console/index.vue +++ b/saiadmin-artd/src/views/dashboard/console/index.vue @@ -1,6 +1,22 @@