feat(douyu): 支持管理员取消作废协作单
This commit is contained in:
@@ -748,6 +748,14 @@ export default function DouyuCollabPage() {
|
||||
setBatchStatusRollback(false);
|
||||
};
|
||||
|
||||
const openRestoreVoid = (order: DouyuCollabOrder) => {
|
||||
setStatusTarget(order);
|
||||
setBatchStatusOpen(false);
|
||||
setStatusValue('incomplete');
|
||||
setStatusReason('');
|
||||
setBatchStatusRollback(false);
|
||||
};
|
||||
|
||||
const openBatchStatus = () => {
|
||||
if (selectedIds.length === 0) {
|
||||
message.warning('请先勾选协作单');
|
||||
@@ -800,13 +808,14 @@ export default function DouyuCollabPage() {
|
||||
} else if (statusTarget) {
|
||||
const currentIndex = FLOW_ORDER.indexOf(statusTarget.status);
|
||||
const targetIndex = FLOW_ORDER.indexOf(statusValue);
|
||||
const restoringVoid = statusTarget.status === 'void';
|
||||
await douyuCollabApi.setStatus(statusTarget.id, {
|
||||
status: statusValue,
|
||||
reason: statusReason,
|
||||
rollback: targetIndex >= 0 && currentIndex >= 0 && targetIndex < currentIndex,
|
||||
expected_version: statusTarget.version,
|
||||
});
|
||||
message.success('状态已更新');
|
||||
message.success(restoringVoid ? '已取消作废并恢复状态' : '状态已更新');
|
||||
setSelectedRowKeys((keys) => keys.filter((key) => Number(key) !== statusTarget.id));
|
||||
setStatusTarget(null);
|
||||
}
|
||||
@@ -1350,6 +1359,17 @@ export default function DouyuCollabPage() {
|
||||
</Dropdown>
|
||||
</>
|
||||
)}
|
||||
{canEdit && !row.is_archived && row.status === 'void' && isAdmin && (
|
||||
<Tooltip title="仅超级管理员可将已作废订单恢复为其它状态">
|
||||
<Button
|
||||
size="small"
|
||||
icon={<UndoOutlined />}
|
||||
onClick={() => openRestoreVoid(row)}
|
||||
>
|
||||
取消作废
|
||||
</Button>
|
||||
</Tooltip>
|
||||
)}
|
||||
{row.is_archived && canEdit && (
|
||||
<Button size="small" icon={<UndoOutlined />} onClick={() => void unarchiveOrders(row)}>
|
||||
取消归档
|
||||
@@ -1960,7 +1980,13 @@ export default function DouyuCollabPage() {
|
||||
</Modal>
|
||||
|
||||
<Modal
|
||||
title={batchStatusOpen ? `批量改状态(${selectedCount} 单)` : `改状态:${statusTarget?.order_no || ''}`}
|
||||
title={
|
||||
batchStatusOpen
|
||||
? `批量改状态(${selectedCount} 单)`
|
||||
: statusTarget?.status === 'void'
|
||||
? `取消作废:${statusTarget.order_no}`
|
||||
: `改状态:${statusTarget?.order_no || ''}`
|
||||
}
|
||||
open={batchStatusOpen || Boolean(statusTarget)}
|
||||
onCancel={() => {
|
||||
setBatchStatusOpen(false);
|
||||
@@ -1968,7 +1994,13 @@ export default function DouyuCollabPage() {
|
||||
}}
|
||||
onOk={() => void submitStatus()}
|
||||
confirmLoading={statusBusy}
|
||||
okText={batchStatusOpen ? `改成「${STATUS_META[statusValue].label}」` : '确定'}
|
||||
okText={
|
||||
batchStatusOpen
|
||||
? `改成「${STATUS_META[statusValue].label}」`
|
||||
: statusTarget?.status === 'void'
|
||||
? `恢复为「${STATUS_META[statusValue].label}」`
|
||||
: '确定'
|
||||
}
|
||||
okButtonProps={{
|
||||
disabled: batchStatusOpen && batchRollbackRequired && !batchStatusRollback,
|
||||
}}
|
||||
@@ -1978,13 +2010,26 @@ export default function DouyuCollabPage() {
|
||||
style={{ width: '100%' }}
|
||||
value={statusValue}
|
||||
onChange={(value: DouyuCollabStatus) => setStatusValue(value)}
|
||||
options={STATUS_ORDER.map((item) => ({
|
||||
options={STATUS_ORDER.filter(
|
||||
(item) => !(statusTarget?.status === 'void' && item === 'void'),
|
||||
).map((item) => ({
|
||||
value: item,
|
||||
label: STATUS_META[item].label,
|
||||
}))}
|
||||
/>
|
||||
{statusValue === 'void' && (
|
||||
<Alert type="warning" showIcon message="作废后不可恢复;请在备注里写作废原因。" />
|
||||
<Alert
|
||||
type="warning"
|
||||
showIcon
|
||||
message="作废后普通用户不能恢复;如需恢复,请由管理员取消作废。"
|
||||
/>
|
||||
)}
|
||||
{statusTarget?.status === 'void' && (
|
||||
<Alert
|
||||
type="warning"
|
||||
showIcon
|
||||
message="管理员操作:订单会恢复为所选状态,原作废原因会保留在审计记录中。"
|
||||
/>
|
||||
)}
|
||||
{batchStatusOpen && (
|
||||
<>
|
||||
@@ -2009,7 +2054,9 @@ export default function DouyuCollabPage() {
|
||||
<Input.TextArea
|
||||
rows={2}
|
||||
value={statusReason}
|
||||
placeholder="原因 / 备注(可选)"
|
||||
placeholder={
|
||||
statusTarget?.status === 'void' ? '取消作废原因(可选)' : '原因 / 备注(可选)'
|
||||
}
|
||||
onChange={(event) => setStatusReason(event.target.value)}
|
||||
/>
|
||||
</Space>
|
||||
|
||||
Reference in New Issue
Block a user