diff --git a/apps/admin-web/src/components/AdminStorePackagesSection.tsx b/apps/admin-web/src/components/AdminStorePackagesSection.tsx index 7d8b12e..7f78436 100644 --- a/apps/admin-web/src/components/AdminStorePackagesSection.tsx +++ b/apps/admin-web/src/components/AdminStorePackagesSection.tsx @@ -283,7 +283,8 @@ const AdminStorePackagesSection = forwardRef - updateAt(index, { usableTime: e.target.value })} @@ -303,7 +304,8 @@ const AdminStorePackagesSection = forwardRef - updateAt(index, { otherNotes: e.target.value })} diff --git a/apps/admin-web/src/layouts/AdminLayout.tsx b/apps/admin-web/src/layouts/AdminLayout.tsx index 774836e..857fe0b 100644 --- a/apps/admin-web/src/layouts/AdminLayout.tsx +++ b/apps/admin-web/src/layouts/AdminLayout.tsx @@ -259,7 +259,7 @@ function attachPackageAuditBadge(items: MenuProps['items'], pendingCount: number ...item, label: ( - 套餐审核 + 套餐审核 ), } as MenuItem; diff --git a/apps/admin-web/src/lib/constants.ts b/apps/admin-web/src/lib/constants.ts index 41e52d6..53ccfe6 100644 --- a/apps/admin-web/src/lib/constants.ts +++ b/apps/admin-web/src/lib/constants.ts @@ -140,10 +140,29 @@ export function fmtTime(v?: string | null) { return v ? new Date(v).toLocaleString('zh-CN') : '—'; } -/** 手机号脱敏展示:138****5678;空值返回 — */ +/** 联系电话脱敏:手机 138****5678;座机 0379-****888;空值返回 — */ export function maskPhone(phone?: string | null): string { - const raw = String(phone ?? '').trim(); + const raw = String(phone ?? '').trim().replace(/\s+/g, ''); if (!raw) return '—'; + if (/^1[3-9]\d{9}$/.test(raw)) { + const digits = raw.replace(/\D/g, ''); + return `${digits.slice(0, 3)}****${digits.slice(-4)}`; + } + if (/^0\d{2,3}-?\d{7,8}(-\d{1,6})?$/.test(raw)) { + const extMatch = raw.match(/-(\d{1,6})$/); + const hasExt = !!extMatch && raw.indexOf('-') !== raw.lastIndexOf('-'); + const ext = hasExt ? extMatch![1] : ''; + const main = hasExt ? raw.slice(0, -(ext.length + 1)) : raw; + const digits = main.replace(/\D/g, ''); + const areaLen = digits.startsWith('01') || digits.startsWith('02') ? 3 : 4; + const area = digits.slice(0, areaLen); + const local = digits.slice(areaLen); + const keepTail = Math.min(4, Math.max(2, local.length - 4)); + const maskedLocal = + local.length <= 4 ? '*'.repeat(local.length) : `${'*'.repeat(local.length - keepTail)}${local.slice(-keepTail)}`; + const joiner = main.includes('-') ? '-' : ''; + return ext ? `${area}${joiner}${maskedLocal}-${ext}` : `${area}${joiner}${maskedLocal}`; + } const digits = raw.replace(/\D/g, ''); if (digits.length >= 11) { return `${digits.slice(0, 3)}****${digits.slice(-4)}`; diff --git a/apps/h5-partner/src/components/StorePackagesForm.tsx b/apps/h5-partner/src/components/StorePackagesForm.tsx index 25e678d..988363f 100644 --- a/apps/h5-partner/src/components/StorePackagesForm.tsx +++ b/apps/h5-partner/src/components/StorePackagesForm.tsx @@ -119,15 +119,13 @@ export default function StorePackagesForm({ items, onChange, disabled, embedded
-
- schedule - updateAt(index, { usableTime: e.target.value })} - /> -
+