Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
cb88f18166
|
|||
|
31df505735
|
@@ -155,7 +155,7 @@ function AftersalesPage() {
|
|||||||
render: (type: AftersalesServiceType) => SERVICE_TYPE_LABEL[type] || type,
|
render: (type: AftersalesServiceType) => SERVICE_TYPE_LABEL[type] || type,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '负责技术员',
|
title: '处理人',
|
||||||
key: 'technician',
|
key: 'technician',
|
||||||
width: 120,
|
width: 120,
|
||||||
render: (_: any, record: AftersalesOrder) => record.technician?.name || '-',
|
render: (_: any, record: AftersalesOrder) => record.technician?.name || '-',
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ function AftersalesConfirmPage() {
|
|||||||
<Card className="query-card aftersales-confirm-card" bordered={false}>
|
<Card className="query-card aftersales-confirm-card" bordered={false}>
|
||||||
<div className="query-header">
|
<div className="query-header">
|
||||||
<PublicLogo />
|
<PublicLogo />
|
||||||
<h1 className="aftersales-title">售后工单确认</h1>
|
<h1 className="aftersales-title">售后服务确认</h1>
|
||||||
<p className="aftersales-serial">{order.serialNumber}</p>
|
<p className="aftersales-serial">{order.serialNumber}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -57,12 +57,6 @@ const WORK_ORDER_STATUS_COLOR: Record<AftersalesWorkOrderStatus, string> = {
|
|||||||
rejected: 'warning',
|
rejected: 'warning',
|
||||||
};
|
};
|
||||||
|
|
||||||
const AUTHORIZATION_STATUS_LABEL = {
|
|
||||||
pending: '待确认',
|
|
||||||
authorized: '已授权',
|
|
||||||
unauthorized: '未授权',
|
|
||||||
} as const;
|
|
||||||
|
|
||||||
function statusStepIndex(status: AftersalesWorkOrderStatus): number {
|
function statusStepIndex(status: AftersalesWorkOrderStatus): number {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 'created':
|
case 'created':
|
||||||
@@ -75,11 +69,6 @@ function statusStepIndex(status: AftersalesWorkOrderStatus): number {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatDateTime(value?: string) {
|
|
||||||
if (!value) return '-';
|
|
||||||
return new Date(value).toLocaleString('zh-CN');
|
|
||||||
}
|
|
||||||
|
|
||||||
function getAftersalesPublicUrl(serialNumber: string) {
|
function getAftersalesPublicUrl(serialNumber: string) {
|
||||||
return `${window.location.origin}/aftersales/${serialNumber}`;
|
return `${window.location.origin}/aftersales/${serialNumber}`;
|
||||||
}
|
}
|
||||||
@@ -243,11 +232,13 @@ function AftersalesDetailPage() {
|
|||||||
.electronic-form-brand { justify-self: start; }
|
.electronic-form-brand { justify-self: start; }
|
||||||
.electronic-form-logo { height: 34px; object-fit: contain; }
|
.electronic-form-logo { height: 34px; object-fit: contain; }
|
||||||
.electronic-form-title { justify-self: center; text-align: center; font-size: 20px; font-weight: 700; }
|
.electronic-form-title { justify-self: center; text-align: center; font-size: 20px; font-weight: 700; }
|
||||||
.electronic-form-meta { justify-self: end; }
|
.electronic-form-meta { justify-self: end; text-align: center; }
|
||||||
.electronic-form-qr { width: 82px; height: 82px; object-fit: contain; }
|
.electronic-form-qr { width: 82px; height: 82px; object-fit: contain; }
|
||||||
|
.electronic-form-hotline { margin: 6px 0 0; font-size: 12px; font-weight: 600; white-space: nowrap; }
|
||||||
.electronic-form-table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 13px; }
|
.electronic-form-table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 13px; }
|
||||||
.electronic-form-table th, .electronic-form-table td { border: 1px solid #1f2937; padding: 9px 10px; vertical-align: top; word-break: break-word; }
|
.electronic-form-table th, .electronic-form-table td { border: 1px solid #1f2937; padding: 9px 10px; vertical-align: top; word-break: break-word; }
|
||||||
.electronic-form-table th { width: 120px; background: #f3f4f6; text-align: left; font-weight: 600; }
|
.electronic-form-table th { width: 120px; background: #f3f4f6; text-align: left; font-weight: 600; }
|
||||||
|
.electronic-form-section { background: #e5e7eb; font-weight: 700; text-align: center; }
|
||||||
.electronic-form-table td { min-height: 24px; }
|
.electronic-form-table td { min-height: 24px; }
|
||||||
.electronic-form-table .electronic-form-code { color: #165dff; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 16px; font-weight: 700; }
|
.electronic-form-table .electronic-form-code { color: #165dff; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 16px; font-weight: 700; }
|
||||||
.electronic-form-text { min-height: 72px; white-space: pre-wrap; }
|
.electronic-form-text { min-height: 72px; white-space: pre-wrap; }
|
||||||
@@ -388,7 +379,7 @@ function AftersalesDetailPage() {
|
|||||||
|
|
||||||
<Descriptions column={2} size="small" bordered style={{ marginBottom: 24 }}>
|
<Descriptions column={2} size="small" bordered style={{ marginBottom: 24 }}>
|
||||||
<Descriptions.Item label="客户公司">{order.companyName}</Descriptions.Item>
|
<Descriptions.Item label="客户公司">{order.companyName}</Descriptions.Item>
|
||||||
<Descriptions.Item label="负责技术员">
|
<Descriptions.Item label="处理人">
|
||||||
{order.technician?.name || '-'}
|
{order.technician?.name || '-'}
|
||||||
</Descriptions.Item>
|
</Descriptions.Item>
|
||||||
<Descriptions.Item label="创建人">{order.creator?.name || '-'}</Descriptions.Item>
|
<Descriptions.Item label="创建人">{order.creator?.name || '-'}</Descriptions.Item>
|
||||||
@@ -569,22 +560,27 @@ function AftersalesDetailPage() {
|
|||||||
className="electronic-form-qr"
|
className="electronic-form-qr"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
<p className="electronic-form-hotline">全国售后服务热线:400-998-5710</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table className="electronic-form-table">
|
<table className="electronic-form-table">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th>售后码</th>
|
<td colSpan={4} className="electronic-form-section">
|
||||||
<td className="electronic-form-code">{order.serialNumber}</td>
|
工单信息
|
||||||
<th>工单状态</th>
|
</td>
|
||||||
<td>{WORK_ORDER_STATUS_LABEL[order.workOrderStatus]}</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>授权状态</th>
|
<th>售后码</th>
|
||||||
<td>{AUTHORIZATION_STATUS_LABEL[order.authorizationStatus]}</td>
|
<td className="electronic-form-code">{order.serialNumber}</td>
|
||||||
<th>服务类型</th>
|
<th>服务类型</th>
|
||||||
<td>{SERVICE_TYPE_LABEL[order.serviceType]}</td>
|
<td>{SERVICE_TYPE_LABEL[order.serviceType]}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colSpan={4} className="electronic-form-section">
|
||||||
|
客户信息
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>客户公司</th>
|
<th>客户公司</th>
|
||||||
<td>{order.companyName}</td>
|
<td>{order.companyName}</td>
|
||||||
@@ -598,28 +594,19 @@ function AftersalesDetailPage() {
|
|||||||
<td>{order.contactPhone}</td>
|
<td>{order.contactPhone}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>负责技术员</th>
|
<td colSpan={4} className="electronic-form-section">
|
||||||
|
处理信息
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>处理人</th>
|
||||||
<td>{order.technician?.name || '-'}</td>
|
<td>{order.technician?.name || '-'}</td>
|
||||||
<th>创建人</th>
|
<th>创建人</th>
|
||||||
<td>{order.creator?.name || '-'}</td>
|
<td>{order.creator?.name || '-'}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>创建时间</th>
|
<th>工单状态</th>
|
||||||
<td>{formatDateTime(order.createdAt)}</td>
|
<td colSpan={3}>{WORK_ORDER_STATUS_LABEL[order.workOrderStatus]}</td>
|
||||||
<th>更新时间</th>
|
|
||||||
<td>{formatDateTime(order.updatedAt)}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>客户扫码时间</th>
|
|
||||||
<td>{formatDateTime(order.scannedAt)}</td>
|
|
||||||
<th>客户确认时间</th>
|
|
||||||
<td>{formatDateTime(order.confirmedAt)}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>退回次数</th>
|
|
||||||
<td>{order.rejectCount}</td>
|
|
||||||
<th>表单生成时间</th>
|
|
||||||
<td>{formatDateTime(new Date().toISOString())}</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>问题描述反馈</th>
|
<th>问题描述反馈</th>
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
.electronic-form-meta {
|
.electronic-form-meta {
|
||||||
justify-self: end;
|
justify-self: end;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.electronic-form-qr {
|
.electronic-form-qr {
|
||||||
@@ -36,6 +37,13 @@
|
|||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.electronic-form-hotline {
|
||||||
|
margin: 6px 0 0;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
.electronic-form-table {
|
.electronic-form-table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
@@ -58,6 +66,12 @@
|
|||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.electronic-form-section {
|
||||||
|
background: #e5e7eb;
|
||||||
|
font-weight: 700;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.electronic-form-code {
|
.electronic-form-code {
|
||||||
color: #165dff;
|
color: #165dff;
|
||||||
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
||||||
|
|||||||
Reference in New Issue
Block a user