diff --git a/apps/backend/src/db/migrations/112_consignment_contact_supporter.sql b/apps/backend/src/db/migrations/112_consignment_contact_supporter.sql index 128e7bb4..13f89da6 100644 --- a/apps/backend/src/db/migrations/112_consignment_contact_supporter.sql +++ b/apps/backend/src/db/migrations/112_consignment_contact_supporter.sql @@ -7,8 +7,6 @@ CREATE TABLE IF NOT EXISTS consignment_contact_supporters ( id BIGSERIAL PRIMARY KEY, name TEXT NOT NULL, - phone TEXT NOT NULL DEFAULT '', - wechat TEXT NOT NULL DEFAULT '', note TEXT NOT NULL DEFAULT '', enabled BOOLEAN NOT NULL DEFAULT TRUE, sort_order INTEGER NOT NULL DEFAULT 0, @@ -35,7 +33,7 @@ CREATE INDEX IF NOT EXISTS idx_consignment_inventories_contact_supporter ON consignment_inventories (contact_supporter_id); -- 首次部署给一个可用默认项:打手端「必填 + 默认选第一个」不会因名单为空而无法发布。 --- 后台可直接改名/补充联系方式,不会重复插入。 +-- 后台可直接改名/补充备注,不会重复插入。 INSERT INTO consignment_contact_supporters (name, note, sort_order) SELECT '默认客服', '系统初始化,请在「配置 - 对接客服」中修改', 0 WHERE NOT EXISTS (SELECT 1 FROM consignment_contact_supporters); diff --git a/apps/backend/src/repositories/worker-platform/consignment-contact-repo.ts b/apps/backend/src/repositories/worker-platform/consignment-contact-repo.ts index 43e2a32a..a60e15cc 100644 --- a/apps/backend/src/repositories/worker-platform/consignment-contact-repo.ts +++ b/apps/backend/src/repositories/worker-platform/consignment-contact-repo.ts @@ -9,8 +9,6 @@ import { query } from '../../db/client.js' export type ConsignmentContactRow = { id: string | number name: string - phone: string - wechat: string note: string enabled: boolean sort_order: number @@ -31,9 +29,7 @@ export async function listConsignmentContacts(filters: { } if (filters.keyword) { values.push(`%${filters.keyword.trim()}%`) - conditions.push( - `(name ILIKE $${values.length} OR phone ILIKE $${values.length} OR wechat ILIKE $${values.length} OR note ILIKE $${values.length})`, - ) + conditions.push(`(name ILIKE $${values.length} OR note ILIKE $${values.length})`) } const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '' @@ -76,8 +72,6 @@ export async function findConsignmentContactByName( export async function createConsignmentContact(input: { name: string - phone?: string | undefined - wechat?: string | undefined note?: string | undefined enabled?: boolean | undefined sortOrder?: number | undefined @@ -85,18 +79,10 @@ export async function createConsignmentContact(input: { }): Promise { const res = await query( `INSERT INTO consignment_contact_supporters ( - name, phone, wechat, note, enabled, sort_order, created_at, updated_at - ) VALUES ($1, $2, $3, $4, $5, $6, $7, $7) + name, note, enabled, sort_order, created_at, updated_at + ) VALUES ($1, $2, $3, $4, $5, $5) RETURNING *`, - [ - input.name, - input.phone || '', - input.wechat || '', - input.note || '', - input.enabled !== false, - input.sortOrder || 0, - input.now, - ], + [input.name, input.note || '', input.enabled !== false, input.sortOrder || 0, input.now], ) return res.rows[0]! } @@ -105,8 +91,6 @@ export async function updateConsignmentContact( id: number | string, input: { name?: string | undefined - phone?: string | undefined - wechat?: string | undefined note?: string | undefined sortOrder?: number | undefined now: string @@ -119,14 +103,6 @@ export async function updateConsignmentContact( values.push(input.name) updates.push(`name = $${values.length}`) } - if (input.phone !== undefined) { - values.push(input.phone) - updates.push(`phone = $${values.length}`) - } - if (input.wechat !== undefined) { - values.push(input.wechat) - updates.push(`wechat = $${values.length}`) - } if (input.note !== undefined) { values.push(input.note) updates.push(`note = $${values.length}`) diff --git a/apps/backend/src/repositories/worker-platform/consignment-repo.ts b/apps/backend/src/repositories/worker-platform/consignment-repo.ts index ef90dfc2..221bc013 100644 --- a/apps/backend/src/repositories/worker-platform/consignment-repo.ts +++ b/apps/backend/src/repositories/worker-platform/consignment-repo.ts @@ -53,8 +53,6 @@ export type ConsignmentInventoryRow = { /** 对接客服(发布/审核入库时选定,用于提成归属与联系) */ contact_supporter_id?: string | number | null contact_supporter_name?: string - contact_supporter_phone?: string - contact_supporter_wechat?: string inbound_at: string consumed_at: string | null created_at: string @@ -87,8 +85,6 @@ export type ConsignmentSubmissionRow = { /** 对接客服(发布时选定,用于提成归属与联系) */ contact_supporter_id?: string | number | null contact_supporter_name?: string - contact_supporter_phone?: string - contact_supporter_wechat?: string status: 'pending_review' | 'approved' | 'rejected' review_note: string reviewer_name: string @@ -213,9 +209,7 @@ export async function listConsignmentInventories(filters: { wo.friend_added_at AS gift_friend_added_at, wo.material_json AS bound_work_order_material_json, wo.requirement_json AS bound_work_order_requirement_json, - ccs.name AS contact_supporter_name, - ccs.phone AS contact_supporter_phone, - ccs.wechat AS contact_supporter_wechat + ccs.name AS contact_supporter_name FROM consignment_inventories ci LEFT JOIN work_categories wc ON wc.id = ci.category_id LEFT JOIN consignment_submissions cs ON cs.id = ci.source_submission_id @@ -336,9 +330,7 @@ export async function getConsignmentInventoryById( wo.friend_added_at AS gift_friend_added_at, wo.material_json AS bound_work_order_material_json, wo.requirement_json AS bound_work_order_requirement_json, - ccs.name AS contact_supporter_name, - ccs.phone AS contact_supporter_phone, - ccs.wechat AS contact_supporter_wechat + ccs.name AS contact_supporter_name FROM consignment_inventories ci LEFT JOIN work_categories wc ON wc.id = ci.category_id LEFT JOIN consignment_submissions cs ON cs.id = ci.source_submission_id @@ -363,9 +355,7 @@ export async function listConsignmentInventoriesByIds( wc.name AS category_name, cs.submission_no AS source_submission_no, cs.screenshots_json AS submission_screenshots_json, - ccs.name AS contact_supporter_name, - ccs.phone AS contact_supporter_phone, - ccs.wechat AS contact_supporter_wechat + ccs.name AS contact_supporter_name FROM consignment_inventories ci LEFT JOIN work_categories wc ON wc.id = ci.category_id LEFT JOIN consignment_submissions cs ON cs.id = ci.source_submission_id @@ -911,9 +901,7 @@ export async function listActiveConsignmentInventoriesForMatching(options?: { SELECT ci.*, cs.submission_no AS source_submission_no, - ccs.name AS contact_supporter_name, - ccs.phone AS contact_supporter_phone, - ccs.wechat AS contact_supporter_wechat + ccs.name AS contact_supporter_name FROM consignment_inventories ci LEFT JOIN consignment_submissions cs ON cs.id = ci.source_submission_id LEFT JOIN consignment_contact_supporters ccs ON ccs.id = ci.contact_supporter_id @@ -969,9 +957,7 @@ export async function listConsignmentSubmissions(filters: { wo.acceptance_json AS gift_evidence_json, wo.work_order_no AS gift_work_order_no, wo.status AS gift_work_order_status, - ccs.name AS contact_supporter_name, - ccs.phone AS contact_supporter_phone, - ccs.wechat AS contact_supporter_wechat + ccs.name AS contact_supporter_name FROM consignment_submissions cs LEFT JOIN work_categories wc ON wc.id = cs.category_id LEFT JOIN consignment_contact_supporters ccs ON ccs.id = cs.contact_supporter_id @@ -1191,9 +1177,7 @@ export async function listConsignmentSubmissionsByIds( wo.acceptance_json AS gift_evidence_json, wo.work_order_no AS gift_work_order_no, wo.status AS gift_work_order_status, - ccs.name AS contact_supporter_name, - ccs.phone AS contact_supporter_phone, - ccs.wechat AS contact_supporter_wechat + ccs.name AS contact_supporter_name FROM consignment_submissions cs LEFT JOIN work_categories wc ON wc.id = cs.category_id LEFT JOIN consignment_contact_supporters ccs ON ccs.id = cs.contact_supporter_id @@ -1222,9 +1206,7 @@ export async function getConsignmentInventoryBySubmissionId( ci.*, wc.name AS category_name, cs.submission_no AS source_submission_no, - ccs.name AS contact_supporter_name, - ccs.phone AS contact_supporter_phone, - ccs.wechat AS contact_supporter_wechat + ccs.name AS contact_supporter_name FROM consignment_inventories ci LEFT JOIN work_categories wc ON wc.id = ci.category_id LEFT JOIN consignment_submissions cs ON cs.id = ci.source_submission_id @@ -1248,9 +1230,7 @@ export async function getConsignmentSubmissionById( wo.acceptance_json AS gift_evidence_json, wo.work_order_no AS gift_work_order_no, wo.status AS gift_work_order_status, - ccs.name AS contact_supporter_name, - ccs.phone AS contact_supporter_phone, - ccs.wechat AS contact_supporter_wechat + ccs.name AS contact_supporter_name FROM consignment_submissions cs LEFT JOIN work_categories wc ON wc.id = cs.category_id LEFT JOIN consignment_contact_supporters ccs ON ccs.id = cs.contact_supporter_id diff --git a/apps/backend/src/services/worker-platform/consignment-admin-service.ts b/apps/backend/src/services/worker-platform/consignment-admin-service.ts index 0e34f5f9..5db66551 100644 --- a/apps/backend/src/services/worker-platform/consignment-admin-service.ts +++ b/apps/backend/src/services/worker-platform/consignment-admin-service.ts @@ -228,8 +228,6 @@ export function mapConsignmentInventory(row: ConsignmentInventoryRow) { depositAmountFen: Number(row.deposit_amount_fen || 0), contactSupporterId: row.contact_supporter_id ? Number(row.contact_supporter_id) : null, contactSupporterName: row.contact_supporter_name || '', - contactSupporterPhone: row.contact_supporter_phone || '', - contactSupporterWechat: row.contact_supporter_wechat || '', inboundAt: row.inbound_at || row.created_at, consumedAt: row.consumed_at, createdAt: row.created_at, @@ -272,8 +270,6 @@ export function mapConsignmentSubmission(row: ConsignmentSubmissionRow) { depositAmountFen: Number(row.deposit_amount_fen || 0), contactSupporterId: row.contact_supporter_id ? Number(row.contact_supporter_id) : null, contactSupporterName: row.contact_supporter_name || '', - contactSupporterPhone: row.contact_supporter_phone || '', - contactSupporterWechat: row.contact_supporter_wechat || '', status: row.status, reviewNote: row.review_note || '', reviewerName: row.reviewer_name || '', diff --git a/apps/backend/src/services/worker-platform/consignment-contact-service.ts b/apps/backend/src/services/worker-platform/consignment-contact-service.ts index 8fb6a08f..cbd68817 100644 --- a/apps/backend/src/services/worker-platform/consignment-contact-service.ts +++ b/apps/backend/src/services/worker-platform/consignment-contact-service.ts @@ -18,8 +18,6 @@ export function mapConsignmentContact(row: ConsignmentContactRow) { return { id: Number(row.id), name: row.name, - phone: row.phone || '', - wechat: row.wechat || '', note: row.note || '', enabled: Boolean(row.enabled), sortOrder: Number(row.sort_order || 0), @@ -92,8 +90,6 @@ export async function createAdminConsignmentContact(payload: JsonObject) { await assertContactNameAvailable(name) const row = await createConsignmentContact({ name, - phone: normalizeText(payload.phone), - wechat: normalizeText(payload.wechat), note: normalizeText(payload.note), enabled: payload.enabled !== false, sortOrder: normalizeSortOrder(payload.sortOrder), @@ -118,8 +114,6 @@ export async function updateAdminConsignmentContact(id: number | string, payload const updated = await updateConsignmentContact(id, { name, - phone: payload.phone !== undefined ? normalizeText(payload.phone) : undefined, - wechat: payload.wechat !== undefined ? normalizeText(payload.wechat) : undefined, note: payload.note !== undefined ? normalizeText(payload.note) : undefined, sortOrder: payload.sortOrder !== undefined ? normalizeSortOrder(payload.sortOrder) : undefined, now: nowIso(), diff --git a/apps/backend/src/services/worker-platform/consignment-fulfillment-service.ts b/apps/backend/src/services/worker-platform/consignment-fulfillment-service.ts index 601bf327..b1bf46db 100644 --- a/apps/backend/src/services/worker-platform/consignment-fulfillment-service.ts +++ b/apps/backend/src/services/worker-platform/consignment-fulfillment-service.ts @@ -511,8 +511,6 @@ export async function fulfillWorkOrderWithConsignment(input: { ? Number(inventory.contact_supporter_id) : null, contactSupporterName: inventory.contact_supporter_name || '', - contactSupporterPhone: inventory.contact_supporter_phone || '', - contactSupporterWechat: inventory.contact_supporter_wechat || '', workerName: inv.worker_name || '', workerPhone: inv.worker_phone || '', remark: inv.remark || '', @@ -771,8 +769,6 @@ export async function assignWorkOrderWithConsignmentWorker(input: { ? Number(inventory.contact_supporter_id) : null, contactSupporterName: inventory.contact_supporter_name || '', - contactSupporterPhone: inventory.contact_supporter_phone || '', - contactSupporterWechat: inventory.contact_supporter_wechat || '', workerId: Number(targetWorkerId), workerName: claimed.worker_name || '', workerPhone: claimed.worker_phone || '', diff --git a/apps/backend/src/services/worker-platform/consignment-worker-service.ts b/apps/backend/src/services/worker-platform/consignment-worker-service.ts index f8dbe932..4944f6d3 100644 --- a/apps/backend/src/services/worker-platform/consignment-worker-service.ts +++ b/apps/backend/src/services/worker-platform/consignment-worker-service.ts @@ -48,14 +48,10 @@ function toRecord(value: unknown): Record | null { function mapConsignmentContactSupporter(source: { contact_supporter_id?: string | number | null contact_supporter_name?: string - contact_supporter_phone?: string - contact_supporter_wechat?: string }) { return { contactSupporterId: source.contact_supporter_id ? Number(source.contact_supporter_id) : null, contactSupporterName: source.contact_supporter_name || '', - contactSupporterPhone: source.contact_supporter_phone || '', - contactSupporterWechat: source.contact_supporter_wechat || '', } } @@ -354,8 +350,6 @@ export async function publishWorkerConsignment(workerId: number, payload: JsonOb ? Number(submission.contact_supporter_id) : null, contactSupporterName: contactSupporter.name, - contactSupporterPhone: contactSupporter.phone || '', - contactSupporterWechat: contactSupporter.wechat || '', createdAt: submission.created_at, } } catch (error) { diff --git a/apps/frontend/src/components/admin/ConsignmentManualMatchModal.tsx b/apps/frontend/src/components/admin/ConsignmentManualMatchModal.tsx index 216435cd..cd326d4f 100644 --- a/apps/frontend/src/components/admin/ConsignmentManualMatchModal.tsx +++ b/apps/frontend/src/components/admin/ConsignmentManualMatchModal.tsx @@ -48,8 +48,6 @@ type Selected = { workerName?: string /** 对接客服(用于履约前核对归属) */ contactSupporterName?: string - contactSupporterPhone?: string - contactSupporterWechat?: string } export type ConsignmentManualMatchModalProps = { @@ -86,8 +84,6 @@ export default function ConsignmentManualMatchModal({ } | null>(null) const [inventoryContact, setInventoryContact] = useState<{ contactSupporterName: string - contactSupporterPhone: string - contactSupporterWechat: string } | null>(null) const [selected, setSelected] = useState(null) const [confirmedPartial, setConfirmedPartial] = useState(false) @@ -129,8 +125,6 @@ export default function ConsignmentManualMatchModal({ }) setInventoryContact({ contactSupporterName: res.data?.inventory?.contactSupporterName || '', - contactSupporterPhone: res.data?.inventory?.contactSupporterPhone || '', - contactSupporterWechat: res.data?.inventory?.contactSupporterWechat || '', }) } else if (workOrder) { const res = await fetchWorkOrderConsignmentMatchOptions(workOrder.workOrderId) @@ -374,8 +368,6 @@ export default function ConsignmentManualMatchModal({ workerId: option.inventory.workerId, workerName: option.inventory.workerName, contactSupporterName: option.inventory.contactSupporterName, - contactSupporterPhone: option.inventory.contactSupporterPhone, - contactSupporterWechat: option.inventory.contactSupporterWechat, }) setConfirmedPartial(false) setConfirmedMismatch(false) @@ -460,8 +452,6 @@ export default function ConsignmentManualMatchModal({ workerId: inventoryWorker?.workerId ?? null, workerName: inventoryWorker?.workerName || '', contactSupporterName: inventoryContact?.contactSupporterName || '', - contactSupporterPhone: inventoryContact?.contactSupporterPhone || '', - contactSupporterWechat: inventoryContact?.contactSupporterWechat || '', }) setConfirmedPartial(false) setConfirmedMismatch(false) diff --git a/apps/frontend/src/pages/admin/AdminConsignmentContactsPage.tsx b/apps/frontend/src/pages/admin/AdminConsignmentContactsPage.tsx index ac9c52b2..93b715ba 100644 --- a/apps/frontend/src/pages/admin/AdminConsignmentContactsPage.tsx +++ b/apps/frontend/src/pages/admin/AdminConsignmentContactsPage.tsx @@ -33,8 +33,6 @@ const { Text } = Typography type ContactForm = { name: string - phone?: string - wechat?: string note?: string sortOrder?: number enabled?: boolean @@ -98,8 +96,6 @@ export default function AdminConsignmentContactsPage() { setEditingContact(record) form.setFieldsValue({ name: record.name, - phone: record.phone, - wechat: record.wechat, note: record.note, sortOrder: record.sortOrder, enabled: record.enabled, @@ -113,8 +109,6 @@ export default function AdminConsignmentContactsPage() { setSubmitting(true) const payload = { name: values.name, - phone: values.phone || '', - wechat: values.wechat || '', note: values.note || '', sortOrder: Number(values.sortOrder || 0), enabled: values.enabled !== false, @@ -174,30 +168,17 @@ export default function AdminConsignmentContactsPage() { const columns: TableColumnsType = [ { title: '姓名', - key: 'name', + dataIndex: 'name', width: 160, - render: (_, record) => ( - - {record.name} - {record.note ? ( - - {record.note} - - ) : null} - - ), + render: (value: string) => {value}, }, { - title: '手机号', - dataIndex: 'phone', - width: 150, - render: (value: string) => value || -, - }, - { - title: '微信号', - dataIndex: 'wechat', - width: 160, - render: (value: string) => value || -, + title: '备注', + dataIndex: 'note', + width: 240, + ellipsis: true, + render: (value: string) => + value ? {value} : -, }, { title: '排序', @@ -265,7 +246,7 @@ export default function AdminConsignmentContactsPage() { } - placeholder="搜索姓名 / 手机 / 微信 / 备注" + placeholder="搜索姓名 / 备注" value={keywordInput} onChange={(event) => setKeywordInput(event.target.value)} style={{ width: 280 }} @@ -313,14 +294,6 @@ export default function AdminConsignmentContactsPage() { > - - - - - - - - diff --git a/apps/frontend/src/pages/admin/panels/ConsignmentInventoryPanel.tsx b/apps/frontend/src/pages/admin/panels/ConsignmentInventoryPanel.tsx index a48d0f2f..0ba696af 100644 --- a/apps/frontend/src/pages/admin/panels/ConsignmentInventoryPanel.tsx +++ b/apps/frontend/src/pages/admin/panels/ConsignmentInventoryPanel.tsx @@ -182,9 +182,7 @@ export default function ConsignmentInventoryPanel() { queryFn: () => fetchAdminConsignmentContacts(), }) const contactSupporterOptions = (contactsQuery.data?.data.items || []).map((item) => ({ - label: `${item.name}${item.enabled ? '' : '(已禁用)'}${ - item.phone ? ` · ${item.phone}` : item.wechat ? ` · ${item.wechat}` : '' - }`, + label: `${item.name}${item.enabled ? '' : '(已禁用)'}`, value: item.id, })) @@ -475,17 +473,11 @@ export default function ConsignmentInventoryPanel() { title: '对接客服', key: 'contactSupporter', width: 150, - render: (_, record) => { - const contact = formatConsignmentContactSupporter(record) - return ( -
-
{contact.name || contact.text}
- {contact.contact ? ( -
{contact.contact}
- ) : null} -
- ) - }, + render: (_, record) => ( +
+ {formatConsignmentContactSupporter(record).text} +
+ ), }, { title: '凭证', @@ -1132,21 +1124,7 @@ export default function ConsignmentInventoryPanel() { )} - {(() => { - const contact = formatConsignmentContactSupporter(viewingItem) - return contact.name ? ( - - {contact.name} - {contact.contact ? ( - - {contact.contact} - - ) : null} - - ) : ( - 未指定 - ) - })()} + {formatConsignmentContactSupporter(viewingItem).text} {viewingItem.depositAmountFen ? ( diff --git a/apps/frontend/src/pages/admin/panels/ConsignmentSubmissionsPanel.tsx b/apps/frontend/src/pages/admin/panels/ConsignmentSubmissionsPanel.tsx index f1bb0aa3..922b1a1f 100644 --- a/apps/frontend/src/pages/admin/panels/ConsignmentSubmissionsPanel.tsx +++ b/apps/frontend/src/pages/admin/panels/ConsignmentSubmissionsPanel.tsx @@ -276,17 +276,11 @@ export default function ConsignmentSubmissionsPanel() { title: '对接客服', key: 'contactSupporter', width: 150, - render: (_, record) => { - const contact = formatConsignmentContactSupporter(record) - return ( -
-
{contact.name || contact.text}
- {contact.contact ? ( -
{contact.contact}
- ) : null} -
- ) - }, + render: (_, record) => ( +
+ {formatConsignmentContactSupporter(record).text} +
+ ), }, { title: '提报凭证(游戏主页截图)', @@ -874,21 +868,7 @@ export default function ConsignmentSubmissionsPanel() { )}
- {(() => { - const contact = formatConsignmentContactSupporter(viewingSubmission) - return contact.name ? ( - - {contact.name} - {contact.contact ? ( - - {contact.contact} - - ) : null} - - ) : ( - 未指定 - ) - })()} + {formatConsignmentContactSupporter(viewingSubmission).text} {viewingSubmission.depositAmountFen ? ( diff --git a/apps/frontend/src/pages/worker/WorkerConsignmentPage.tsx b/apps/frontend/src/pages/worker/WorkerConsignmentPage.tsx index debaed60..49370336 100644 --- a/apps/frontend/src/pages/worker/WorkerConsignmentPage.tsx +++ b/apps/frontend/src/pages/worker/WorkerConsignmentPage.tsx @@ -863,13 +863,7 @@ export default function WorkerConsignmentPage() { placeholder="请选择对接客服" options={contactSupporters.map((item) => ({ value: item.id, - label: `${item.name}${ - item.phone - ? ` · ${item.phone}` - : item.wechat - ? ` · ${item.wechat}` - : '' - }`, + label: item.name, }))} notFoundContent="暂无启用中的对接客服" showSearch diff --git a/apps/frontend/src/services/worker.ts b/apps/frontend/src/services/worker.ts index 47989d07..f234951f 100644 --- a/apps/frontend/src/services/worker.ts +++ b/apps/frontend/src/services/worker.ts @@ -417,8 +417,6 @@ export type WorkerConsignmentItem = { contentJson: Record contactSupporterId?: number | null contactSupporterName?: string - contactSupporterPhone?: string - contactSupporterWechat?: string createdAt: string } @@ -462,8 +460,6 @@ export type WorkerConsignmentRecord = { depositAmountFen: number contactSupporterId?: number | null contactSupporterName?: string - contactSupporterPhone?: string - contactSupporterWechat?: string reviewNote: string screenshotsJson: string[] giftEvidenceImages?: string[] diff --git a/apps/frontend/src/types/consignment.ts b/apps/frontend/src/types/consignment.ts index ac2ccbf1..f1669404 100644 --- a/apps/frontend/src/types/consignment.ts +++ b/apps/frontend/src/types/consignment.ts @@ -15,8 +15,6 @@ export type GiftEvidenceReviewStatus = 'none' | 'pending' | 'accepted' | 'submit export type ConsignmentContactSupporter = { id: number name: string - phone: string - wechat: string note: string enabled: boolean sortOrder: number @@ -28,8 +26,6 @@ export type ConsignmentContactSupporter = { export type ConsignmentContactFields = { contactSupporterId?: number | null contactSupporterName?: string - contactSupporterPhone?: string - contactSupporterWechat?: string } /** @@ -141,8 +137,6 @@ export type ConsignmentFulfillmentInfo = { /** 对接客服(履约时从现货复制到工单物料,用于工单侧联系) */ contactSupporterId?: number | null contactSupporterName?: string - contactSupporterPhone?: string - contactSupporterWechat?: string [key: string]: unknown } diff --git a/apps/frontend/src/utils/consignment-contact.ts b/apps/frontend/src/utils/consignment-contact.ts index d36ca587..3cda1d18 100644 --- a/apps/frontend/src/utils/consignment-contact.ts +++ b/apps/frontend/src/utils/consignment-contact.ts @@ -2,17 +2,13 @@ export type ConsignmentContactDisplay = { /** 姓名;没有对接客服时为空串 */ name: string - /** 联系方式(电话 / 微信),没有时为空串 */ - contact: string - /** 姓名 + 联系方式,列表里直接展示 */ + /** 姓名,没有时回退为指定文案(默认「未指定」) */ text: string } type ConsignmentContactLike = | { contactSupporterName?: string | null - contactSupporterPhone?: string | null - contactSupporterWechat?: string | null } | null | undefined @@ -22,16 +18,5 @@ export function formatConsignmentContactSupporter( emptyText = '未指定', ): ConsignmentContactDisplay { const name = String(source?.contactSupporterName || '').trim() - const phone = String(source?.contactSupporterPhone || '').trim() - const wechat = String(source?.contactSupporterWechat || '').trim() - - const parts: string[] = [] - if (phone) parts.push(`电话 ${phone}`) - if (wechat) parts.push(`微信 ${wechat}`) - const contact = parts.join(' · ') - - if (!name) { - return { name: '', contact, text: contact || emptyText } - } - return { name, contact, text: contact ? `${name} · ${contact}` : name } + return { name, text: name || emptyText } } diff --git a/apps/frontend/tests/consignment-contact.test.ts b/apps/frontend/tests/consignment-contact.test.ts index 3752cfe2..75575f1d 100644 --- a/apps/frontend/tests/consignment-contact.test.ts +++ b/apps/frontend/tests/consignment-contact.test.ts @@ -3,20 +3,14 @@ import test from 'node:test' import { formatConsignmentContactSupporter } from '../src/utils/consignment-contact.ts' -test('对接客服:姓名 + 电话/微信一起展示', () => { - const display = formatConsignmentContactSupporter({ - contactSupporterName: '小张', - contactSupporterPhone: '13800001111', - contactSupporterWechat: 'wx_zhang', - }) +test('对接客服:展示姓名', () => { + const display = formatConsignmentContactSupporter({ contactSupporterName: '小张' }) assert.equal(display.name, '小张') - assert.equal(display.contact, '电话 13800001111 · 微信 wx_zhang') - assert.equal(display.text, '小张 · 电话 13800001111 · 微信 wx_zhang') + assert.equal(display.text, '小张') }) -test('对接客服:只有姓名时不拼联系方式', () => { - const display = formatConsignmentContactSupporter({ contactSupporterName: '小李' }) - assert.equal(display.text, '小李') +test('对接客服:姓名首尾空白会被清理', () => { + assert.equal(formatConsignmentContactSupporter({ contactSupporterName: ' 小李 ' }).text, '小李') }) test('对接客服:历史数据没有姓名时回退为未指定', () => {