Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 71b4d84d5a | |||
| a2a8451aec | |||
| 578819a284 |
@@ -149,6 +149,10 @@ function PointScorePopover({ row }: { row: CouponDataRow }) {
|
|||||||
return <Typography.Text type="secondary">-</Typography.Text>;
|
return <Typography.Text type="secondary">-</Typography.Text>;
|
||||||
}
|
}
|
||||||
const score = `${row.point_success_count}/${row.point_total_count}`;
|
const score = `${row.point_success_count}/${row.point_total_count}`;
|
||||||
|
const scoreColor =
|
||||||
|
row.point_success_count === row.point_total_count
|
||||||
|
? STATUS_TAG.completed.color
|
||||||
|
: STATUS_TAG.abandoned.color;
|
||||||
const loadDetails = async () => {
|
const loadDetails = async () => {
|
||||||
if (details !== null || loading) return;
|
if (details !== null || loading) return;
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
@@ -215,7 +219,9 @@ function PointScorePopover({ row }: { row: CouponDataRow }) {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Button type="link" size="small" style={{ height: 'auto', padding: 0 }}>{score}</Button>
|
<Button type="link" size="small" style={{ height: 'auto', padding: 0, color: scoreColor }}>
|
||||||
|
{score}
|
||||||
|
</Button>
|
||||||
</Popover>
|
</Popover>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -596,7 +602,7 @@ export default function CouponDataPage() {
|
|||||||
render: (v: number | null) => fmtSec(v),
|
render: (v: number | null) => fmtSec(v),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '点位成功率',
|
title: '百分比',
|
||||||
key: 'point_success_rate',
|
key: 'point_success_rate',
|
||||||
width: 110,
|
width: 110,
|
||||||
render: (_: unknown, r: CouponDataRow) => <PointScorePopover row={r} />,
|
render: (_: unknown, r: CouponDataRow) => <PointScorePopover row={r} />,
|
||||||
|
|||||||
@@ -499,12 +499,7 @@ export default function DashboardPage() {
|
|||||||
const tokenCostYuan = periodData?.comparison.token_cost_total_yuan ?? null;
|
const tokenCostYuan = periodData?.comparison.token_cost_total_yuan ?? null;
|
||||||
const couponRewardCoinTotal = periodData?.coins.coupon_reward_coin_total;
|
const couponRewardCoinTotal = periodData?.coins.coupon_reward_coin_total;
|
||||||
const comparisonRewardCoinTotal = periodData?.coins.comparison_reward_coin_total;
|
const comparisonRewardCoinTotal = periodData?.coins.comparison_reward_coin_total;
|
||||||
const signinCoinTotal = periodData?.coins.signin_coin_total;
|
const regularTaskCoinTotal = periodData?.coins.regular_task_coin_total;
|
||||||
const signinBoostCoinTotal = periodData?.coins.signin_boost_coin_total;
|
|
||||||
const taskCoinTotal = periodData?.coins.task_coin_total;
|
|
||||||
const regularTaskCoinTotal =
|
|
||||||
periodData?.coins.regular_task_coin_total ??
|
|
||||||
((signinCoinTotal ?? 0) + (signinBoostCoinTotal ?? 0) + (taskCoinTotal ?? 0));
|
|
||||||
const cpsAvailable = data?.cps.available === true;
|
const cpsAvailable = data?.cps.available === true;
|
||||||
const meituanCpsCommissionCents = data?.cps.meituan_commission_cents;
|
const meituanCpsCommissionCents = data?.cps.meituan_commission_cents;
|
||||||
const jdCpsCommissionCents = data?.cps.jd_commission_cents;
|
const jdCpsCommissionCents = data?.cps.jd_commission_cents;
|
||||||
@@ -1077,6 +1072,7 @@ export default function DashboardPage() {
|
|||||||
value={fmtInt(regularTaskCoinTotal)}
|
value={fmtInt(regularTaskCoinTotal)}
|
||||||
delta={regularTaskCoinRatio.value}
|
delta={regularTaskCoinRatio.value}
|
||||||
deltaTone={regularTaskCoinRatio.tone}
|
deltaTone={regularTaskCoinRatio.tone}
|
||||||
|
hint="每日签到、历史签到膨胀、通知/其他任务、上报更低价和反馈采纳的实发金币之和。"
|
||||||
/>
|
/>
|
||||||
<StatCard
|
<StatCard
|
||||||
title="本期提现金额"
|
title="本期提现金额"
|
||||||
|
|||||||
@@ -67,8 +67,6 @@ const NAV_GROUPS: NavGroup[] = [
|
|||||||
{ key: '/comparison-records', icon: <ProfileOutlined />, label: '比价记录' },
|
{ key: '/comparison-records', icon: <ProfileOutlined />, label: '比价记录' },
|
||||||
{ key: '/coupon-data', icon: <GiftOutlined />, label: '领券记录' },
|
{ key: '/coupon-data', icon: <GiftOutlined />, label: '领券记录' },
|
||||||
{ key: '/cps', icon: <ShareAltOutlined />, label: 'CPS收益' },
|
{ key: '/cps', icon: <ShareAltOutlined />, label: 'CPS收益' },
|
||||||
{ key: '/device-liveness', icon: <HeartOutlined />, label: '设备存活' },
|
|
||||||
{ key: '/analytics-health', icon: <LineChartOutlined />, label: '埋点成功率' },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -92,9 +90,18 @@ const NAV_GROUPS: NavGroup[] = [
|
|||||||
{ key: '/users', icon: <UserOutlined />, label: '用户管理' },
|
{ key: '/users', icon: <UserOutlined />, label: '用户管理' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{ key: '/admins', icon: <TeamOutlined />, label: '权限管理' },
|
{
|
||||||
|
key: 'monitoring-audit',
|
||||||
|
icon: <FileSearchOutlined />,
|
||||||
|
label: '监控审计',
|
||||||
|
children: [
|
||||||
|
{ key: '/device-liveness', icon: <HeartOutlined />, label: '设备存活' },
|
||||||
|
{ key: '/analytics-health', icon: <LineChartOutlined />, label: '埋点成功率' },
|
||||||
{ key: '/event-logs', icon: <DatabaseOutlined />, label: '埋点日志' },
|
{ key: '/event-logs', icon: <DatabaseOutlined />, label: '埋点日志' },
|
||||||
{ key: '/audit-logs', icon: <FileSearchOutlined />, label: '审计日志' },
|
{ key: '/audit-logs', icon: <FileSearchOutlined />, label: '审计日志' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{ key: '/admins', icon: <TeamOutlined />, label: '权限管理' },
|
||||||
];
|
];
|
||||||
|
|
||||||
// 导航项 key(/dashboard)→ 权限页 key(dashboard),与后端 permissions.py 目录对齐
|
// 导航项 key(/dashboard)→ 权限页 key(dashboard),与后端 permissions.py 目录对齐
|
||||||
|
|||||||
Reference in New Issue
Block a user