feat: integrate analytics and fragment receipt improvements

This commit is contained in:
hectorzhao
2026-08-03 15:34:41 +08:00
parent 3357ace7e1
commit 530a65de80
89 changed files with 1964 additions and 324 deletions
+13 -11
View File
@@ -105,11 +105,11 @@ export function AdminRiskRulesPage() {
useEffect(load, [applicationId]);
function loadFrequencyHits(page = hitPage) {
function loadFrequencyHits(page = hitPage, filters = { phoneNumber: hitPhone, status: hitStatus }) {
adminApi.listPhoneFrequencyHits({
applicationId: applicationId || undefined,
phoneNumber: hitPhone.trim() || undefined,
status: hitStatus || undefined,
phoneNumber: filters.phoneNumber.trim() || undefined,
status: filters.status || undefined,
page,
pageSize: 20,
}).then((result) => {
@@ -124,10 +124,10 @@ export function AdminRiskRulesPage() {
loadFrequencyHits(1);
}, [applicationId]);
function loadWhitelist(page = whitelistPage) {
function loadWhitelist(page = whitelistPage, filters = { phoneNumber: whitelistPhone, status: whitelistStatus }) {
adminApi.listPhoneFrequencyWhitelist({
phoneNumber: whitelistPhone.trim() || undefined,
status: whitelistStatus || undefined,
phoneNumber: filters.phoneNumber.trim() || undefined,
status: filters.status || undefined,
page,
pageSize: 20,
}).then((result) => {
@@ -325,7 +325,7 @@ export function AdminRiskRulesPage() {
</div>
</div>
{error ? <p className="form-error" role="alert">{error}</p> : null}
<div className="surface sms-audit-filter">
<div className="surface sms-audit-filter ui-filter-row">
<Select
label="查看范围"
onChange={(event) => setApplicationId(event.target.value)}
@@ -348,7 +348,7 @@ export function AdminRiskRulesPage() {
<Button icon={<Plus size={16} />} onClick={() => setWhitelistEditor({ phoneNumber: '', reason: '', remark: '', status: 'active' })}></Button>
</div>
</div>
<div className="sms-audit-filter">
<div className="sms-audit-filter ui-filter-row">
<Input label="手机号码" onChange={(event) => setWhitelistPhone(event.target.value)} placeholder="输入完整或部分号码" value={whitelistPhone} />
<Select
label="白名单状态"
@@ -361,8 +361,9 @@ export function AdminRiskRulesPage() {
]}
value={whitelistStatus}
/>
<div className="admin-task-filter__actions">
<div className="admin-task-filter__actions ui-filter-actions">
<Button icon={<Search size={16} />} onClick={() => loadWhitelist(1)}></Button>
<Button onClick={() => { setWhitelistPhone(''); setWhitelistStatus(''); loadWhitelist(1, { phoneNumber: '', status: '' }); }} variant="ghost"></Button>
</div>
</div>
<Table columns={whitelistColumns} data={whitelist} emptyText="暂无号码频控白名单" pagination={false} rowKey="id" />
@@ -382,7 +383,7 @@ export function AdminRiskRulesPage() {
<div><h2></h2><p></p></div>
<Tag tone="warning">{hitTotal} </Tag>
</div>
<div className="sms-audit-filter">
<div className="sms-audit-filter ui-filter-row">
<Input label="手机号码" onChange={(event) => setHitPhone(event.target.value)} placeholder="输入完整或部分号码" value={hitPhone} />
<Select
label="记录状态"
@@ -395,8 +396,9 @@ export function AdminRiskRulesPage() {
]}
value={hitStatus}
/>
<div className="admin-task-filter__actions">
<div className="admin-task-filter__actions ui-filter-actions">
<Button icon={<Search size={16} />} onClick={() => { setHitPage(1); loadFrequencyHits(1); }}></Button>
<Button onClick={() => { setHitPhone(''); setHitStatus('active'); setHitPage(1); loadFrequencyHits(1, { phoneNumber: '', status: 'active' }); }} variant="ghost"></Button>
</div>
</div>
<Table columns={hitColumns} data={frequencyHits} emptyText="暂无号码频次触发记录" pagination={false} rowKey="id" />