feat(worker): 保留超时订单买家资料与快捷复制功能以方便打手核对辨认
- 调整目的:打手在订单超时退回大厅或被抢后,需要核对游戏内对应的好友与账号以分辨是哪一单,避免误认; - 列表与抽屉展示:在桌面端表格、移动端卡片及详情抽屉中,恢复买家资料与主页截图展示,保留「复制信息」「复制图片」按钮,并补充「已超时,仅供核对辨认」轻量警示; - 履约隔离:依然严格禁用一切提交验收、修改截图与申请取消等履约操作; - 验证方式:通过前端 prettier、eslint、tsc、vitest、vite build 与后端全部 676 个测试。
This commit is contained in:
@@ -171,23 +171,23 @@ export function WorkerOrderDetailDrawer({
|
||||
</Card>
|
||||
|
||||
<Card title="资料信息" size="small">
|
||||
{renderDetailFieldValues(getMaterialDetailItems(order), '当前还没有资料内容')}
|
||||
{getMaterialScreenshots(order).length > 0 ? (
|
||||
<div style={{ marginTop: 12 }}>
|
||||
<Typography.Text type="secondary">买家主页截图</Typography.Text>
|
||||
<div style={{ marginTop: 8 }}>
|
||||
<ImagePreviewList files={getMaterialScreenshots(order)} size={72} />
|
||||
</div>
|
||||
</div>
|
||||
) : null}
|
||||
{isTimedOut ? (
|
||||
<Typography.Text type="danger">
|
||||
工单已超时退回大厅,游戏资料已锁定。严禁在游戏内向买家赠送或履约!
|
||||
<Typography.Text
|
||||
type="secondary"
|
||||
style={{ display: 'block', marginTop: 12, fontSize: 12 }}
|
||||
>
|
||||
提示:该订单已超时退回大厅,保留资料仅供核对分辨,请勿在游戏内继续赠送。
|
||||
</Typography.Text>
|
||||
) : (
|
||||
<>
|
||||
{renderDetailFieldValues(getMaterialDetailItems(order), '当前还没有资料内容')}
|
||||
{getMaterialScreenshots(order).length > 0 ? (
|
||||
<div style={{ marginTop: 12 }}>
|
||||
<Typography.Text type="secondary">买家主页截图</Typography.Text>
|
||||
<div style={{ marginTop: 8 }}>
|
||||
<ImagePreviewList files={getMaterialScreenshots(order)} size={72} />
|
||||
</div>
|
||||
</div>
|
||||
) : null}
|
||||
</>
|
||||
)}
|
||||
) : null}
|
||||
</Card>
|
||||
|
||||
{isFriendGiftOrder(order) && order.gift && !isTimedOut ? (
|
||||
|
||||
@@ -340,21 +340,7 @@ function WorkerOrderMobileCard({
|
||||
<span>{order.problemNote}</span>
|
||||
</div>
|
||||
) : null}
|
||||
{order.status === 'open' || order.timeoutNotice?.isTimedOut ? (
|
||||
<div
|
||||
style={{
|
||||
padding: '10px 12px',
|
||||
background: '#fafafa',
|
||||
border: '1px dashed #d9d9d9',
|
||||
borderRadius: 6,
|
||||
margin: '8px 12px',
|
||||
color: 'rgba(0,0,0,0.45)',
|
||||
fontSize: 12,
|
||||
}}
|
||||
>
|
||||
工单已超时退回大厅,资料已锁定,禁止继续向该买家履约。
|
||||
</div>
|
||||
) : items.length > 0 || screenshots.length > 0 ? (
|
||||
{items.length > 0 || screenshots.length > 0 ? (
|
||||
<div className="worker-order-mobile-credentials-box">
|
||||
{items.length > 0 ? (
|
||||
<div className="worker-order-mobile-credentials-grid">
|
||||
@@ -390,6 +376,13 @@ function WorkerOrderMobileCard({
|
||||
复制图片
|
||||
</Button>
|
||||
) : null}
|
||||
{order.status === 'open' || order.timeoutNotice?.isTimedOut ? (
|
||||
<span
|
||||
style={{ fontSize: 11, color: '#cf1322', marginLeft: 'auto', alignSelf: 'center' }}
|
||||
>
|
||||
⚠️ 已超时核对
|
||||
</span>
|
||||
) : null}
|
||||
</div>
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
@@ -182,20 +182,9 @@ export function buildWorkerOrderTableColumns({
|
||||
title: '快捷复制',
|
||||
width: 250,
|
||||
render: (_, row) => {
|
||||
if (row.status === 'open' || row.timeoutNotice?.isTimedOut) {
|
||||
return (
|
||||
<div className="cell-stack">
|
||||
<Typography.Text type="danger" style={{ fontSize: 12 }}>
|
||||
工单已超时退回大厅
|
||||
</Typography.Text>
|
||||
<Typography.Text type="secondary" style={{ fontSize: 12 }}>
|
||||
已锁定资料,禁止继续履约
|
||||
</Typography.Text>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
const items = getMaterialDetailItems(row).filter((item) => String(item.value || '').trim())
|
||||
const screenshots = getMaterialScreenshots(row)
|
||||
const isTimedOut = row.status === 'open' || Boolean(row.timeoutNotice?.isTimedOut)
|
||||
return (
|
||||
<div className="cell-stack">
|
||||
{items.length > 0 ? (
|
||||
@@ -233,6 +222,11 @@ export function buildWorkerOrderTableColumns({
|
||||
</Button>
|
||||
) : null}
|
||||
</Space>
|
||||
{isTimedOut ? (
|
||||
<Typography.Text type="danger" style={{ fontSize: 11, lineHeight: 1.2 }}>
|
||||
⚠️ 已超时,仅供核对辨认
|
||||
</Typography.Text>
|
||||
) : null}
|
||||
</div>
|
||||
)
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user