46361ec713
Stop auto ST from validation_error; show package prices with right-aligned layout; partner store list status/filter and onboard CS QR gate; HQ store table truncation/fixed actions; expose CS config in wechat_mini settings; bind local servers for LAN. Co-authored-by: Cursor <cursoragent@cursor.com>
54 lines
2.0 KiB
TypeScript
54 lines
2.0 KiB
TypeScript
export type PartnerStoreAuditStatus = 'PENDING' | 'APPROVED' | 'REJECTED' | string;
|
|
|
|
export function storeAuditLabel(auditStatus?: string | null): string {
|
|
const s = String(auditStatus || 'APPROVED').toUpperCase();
|
|
if (s === 'PENDING') return '待审核';
|
|
if (s === 'REJECTED') return '审核驳回';
|
|
if (s === 'APPROVED') return '审核通过';
|
|
return auditStatus || '—';
|
|
}
|
|
|
|
export function storeAuditPillClass(auditStatus?: string | null): string {
|
|
const s = String(auditStatus || 'APPROVED').toUpperCase();
|
|
if (s === 'PENDING') return 'partner-status-pill--paused';
|
|
if (s === 'REJECTED') return 'partner-status-pill--closed';
|
|
return 'partner-status-pill--open';
|
|
}
|
|
|
|
export type StoreStatusValue = 'OPEN' | 'PAUSED' | 'CLOSED';
|
|
|
|
export function storeStatusLabel(status: string): string {
|
|
const s = String(status).toUpperCase();
|
|
if (s === 'OPEN') return '营业中';
|
|
if (s === 'PAUSED') return '临时闭店';
|
|
if (s === 'CLOSED') return '永久闭店';
|
|
return status;
|
|
}
|
|
|
|
/** 列表右上角统一状态:审核未通过优先于营业状态 */
|
|
export function storeListBadge(store: {
|
|
status?: unknown;
|
|
auditStatus?: unknown;
|
|
}): { label: string; pillClass: string } {
|
|
const audit = String(store.auditStatus || 'APPROVED').toUpperCase();
|
|
if (audit === 'PENDING') {
|
|
return { label: '待审核', pillClass: storeAuditPillClass('PENDING') };
|
|
}
|
|
if (audit === 'REJECTED') {
|
|
return { label: '审核驳回', pillClass: storeAuditPillClass('REJECTED') };
|
|
}
|
|
const status = String(store.status || '').toUpperCase();
|
|
return { label: storeStatusLabel(status), pillClass: storeStatusPillClass(status) };
|
|
}
|
|
|
|
export function storeStatusPillClass(status: string): string {
|
|
const s = String(status).toUpperCase();
|
|
if (s === 'OPEN') return 'partner-status-pill--open';
|
|
if (s === 'PAUSED') return 'partner-status-pill--paused';
|
|
return 'partner-status-pill--closed';
|
|
}
|
|
|
|
export function canPartnerOpenStore(auditStatus?: string | null): boolean {
|
|
return String(auditStatus || '').toUpperCase() === 'APPROVED';
|
|
}
|