feat(platform): filter vehicle archive gaps
This commit is contained in:
@@ -67,6 +67,11 @@ const archiveStatusLabel: Record<string, string> = {
|
||||
complete: '完整',
|
||||
incomplete: '不完整'
|
||||
};
|
||||
const archiveMissingLabel: Record<string, string> = {
|
||||
plate: '缺车牌',
|
||||
phone: '缺手机号',
|
||||
oem: '缺OEM'
|
||||
};
|
||||
|
||||
function sourceDiagnosisText(row: VehicleCoverageRow) {
|
||||
const parts = [sourceEvidenceText(row)];
|
||||
@@ -157,6 +162,14 @@ export function Vehicles({
|
||||
{ label: '待绑定', value: (summary?.unboundVehicles ?? 0).toLocaleString(), filters: { bindingStatus: 'unbound' } },
|
||||
{ label: '档案不完整', value: (summary?.archiveIncompleteVehicles ?? 0).toLocaleString(), filters: { archiveStatus: 'incomplete' } }
|
||||
];
|
||||
for (const field of summary?.archiveMissingFields ?? []) {
|
||||
if (field.count <= 0) continue;
|
||||
items.push({
|
||||
label: field.title,
|
||||
value: field.count.toLocaleString(),
|
||||
filters: { archiveMissing: field.field }
|
||||
});
|
||||
}
|
||||
for (const source of summary?.missingSources ?? []) {
|
||||
if (source.count <= 0) continue;
|
||||
items.push({
|
||||
@@ -181,6 +194,10 @@ export function Vehicles({
|
||||
if (archiveIncompleteCount > 0) {
|
||||
items.push({ label: '完善车辆档案', count: archiveIncompleteCount, filters: { archiveStatus: 'incomplete' }, color: 'orange' });
|
||||
}
|
||||
for (const field of summary?.archiveMissingFields ?? []) {
|
||||
if (field.count <= 0) continue;
|
||||
items.push({ label: `补齐${field.title}`, count: field.count, filters: { archiveMissing: field.field }, color: 'orange' });
|
||||
}
|
||||
for (const source of summary?.missingSources ?? []) {
|
||||
if (source.count <= 0) continue;
|
||||
items.push({
|
||||
@@ -200,7 +217,8 @@ export function Vehicles({
|
||||
filters.serviceStatus ? `服务状态:${serviceStatusLabel[filters.serviceStatus] ?? filters.serviceStatus}` : '',
|
||||
filters.online ? `在线:${onlineLabel[filters.online] ?? filters.online}` : '',
|
||||
filters.bindingStatus ? `绑定:${bindingStatusLabel[filters.bindingStatus] ?? filters.bindingStatus}` : '',
|
||||
filters.archiveStatus ? `档案:${archiveStatusLabel[filters.archiveStatus] ?? filters.archiveStatus}` : ''
|
||||
filters.archiveStatus ? `档案:${archiveStatusLabel[filters.archiveStatus] ?? filters.archiveStatus}` : '',
|
||||
filters.archiveMissing ? `档案缺项:${archiveMissingLabel[filters.archiveMissing] ?? filters.archiveMissing}` : ''
|
||||
].filter(Boolean);
|
||||
|
||||
const load = (values: Record<string, string> = filters, page = pagination.currentPage, pageSize = pagination.pageSize) => {
|
||||
@@ -213,6 +231,7 @@ export function Vehicles({
|
||||
if (values?.online) params.set('online', values.online);
|
||||
if (values?.bindingStatus) params.set('bindingStatus', values.bindingStatus);
|
||||
if (values?.archiveStatus) params.set('archiveStatus', values.archiveStatus);
|
||||
if (values?.archiveMissing) params.set('archiveMissing', values.archiveMissing);
|
||||
if (values?.serviceStatus) params.set('serviceStatus', values.serviceStatus);
|
||||
const summaryParams = new URLSearchParams(params);
|
||||
summaryParams.delete('limit');
|
||||
@@ -360,6 +379,11 @@ export function Vehicles({
|
||||
<Select.Option value="complete">完整</Select.Option>
|
||||
<Select.Option value="incomplete">不完整</Select.Option>
|
||||
</Form.Select>
|
||||
<Form.Select field="archiveMissing" label="档案缺项" placeholder="全部" style={{ width: 140 }}>
|
||||
<Select.Option value="plate">缺车牌</Select.Option>
|
||||
<Select.Option value="phone">缺手机号</Select.Option>
|
||||
<Select.Option value="oem">缺OEM</Select.Option>
|
||||
</Form.Select>
|
||||
<Space>
|
||||
<Button htmlType="submit" theme="solid" type="primary">查询</Button>
|
||||
<Button icon={<IconCopy />} onClick={copyVehicleShareURL}>复制筛选链接</Button>
|
||||
|
||||
Reference in New Issue
Block a user