fix: 限制客服编辑资料字段
This commit is contained in:
@@ -328,7 +328,10 @@ router.put(
|
|||||||
'/worker-platform/orders/:workOrderId',
|
'/worker-platform/orders/:workOrderId',
|
||||||
requireAdminRoles(['admin', 'operator', 'support']),
|
requireAdminRoles(['admin', 'operator', 'support']),
|
||||||
createJsonHandler(
|
createJsonHandler(
|
||||||
(req) => updateAdminWorkOrder(String(req.params.workOrderId || ''), req.body || {}),
|
(req) =>
|
||||||
|
updateAdminWorkOrder(String(req.params.workOrderId || ''), req.body || {}, {
|
||||||
|
canEditRequirementFields: req.adminSession?.role !== 'support',
|
||||||
|
}),
|
||||||
{
|
{
|
||||||
successMessage: '工单信息已保存',
|
successMessage: '工单信息已保存',
|
||||||
errorMessage: '保存工单信息失败',
|
errorMessage: '保存工单信息失败',
|
||||||
|
|||||||
@@ -872,6 +872,7 @@ export async function createAdminMockWorkOrder(payload: JsonObject = {}) {
|
|||||||
export async function updateAdminWorkOrder(
|
export async function updateAdminWorkOrder(
|
||||||
workOrderId: number | string,
|
workOrderId: number | string,
|
||||||
payload: JsonObject = {},
|
payload: JsonObject = {},
|
||||||
|
options: { canEditRequirementFields?: boolean } = {},
|
||||||
) {
|
) {
|
||||||
const workOrder = await getRequiredWorkOrder(workOrderId)
|
const workOrder = await getRequiredWorkOrder(workOrderId)
|
||||||
if (
|
if (
|
||||||
@@ -893,7 +894,10 @@ export async function updateAdminWorkOrder(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const fields = normalizeRequirementFieldsFromPayload(payload)
|
const fields =
|
||||||
|
options.canEditRequirementFields === false
|
||||||
|
? resolveRequirementFields(workOrder)
|
||||||
|
: normalizeRequirementFieldsFromPayload(payload)
|
||||||
const rewardAmount =
|
const rewardAmount =
|
||||||
payload.rewardAmount === undefined
|
payload.rewardAmount === undefined
|
||||||
? workOrder.reward_amount
|
? workOrder.reward_amount
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ import {
|
|||||||
ADMIN_DEFAULT_PAGE_SIZE,
|
ADMIN_DEFAULT_PAGE_SIZE,
|
||||||
buildAdminTablePagination,
|
buildAdminTablePagination,
|
||||||
} from '@/utils/admin-pagination'
|
} from '@/utils/admin-pagination'
|
||||||
|
import { hasAdminRole } from '@/utils/admin-auth'
|
||||||
import { formatAdminDateTime } from '@/utils/admin-time'
|
import { formatAdminDateTime } from '@/utils/admin-time'
|
||||||
import {
|
import {
|
||||||
DeadlineCountdown,
|
DeadlineCountdown,
|
||||||
@@ -117,6 +118,7 @@ export default function WorkOrdersPanel() {
|
|||||||
const { message, modal } = App.useApp()
|
const { message, modal } = App.useApp()
|
||||||
const navigate = useNavigate()
|
const navigate = useNavigate()
|
||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
|
const canEditRequirementFields = hasAdminRole('operator')
|
||||||
const [status, setStatus] = useState('')
|
const [status, setStatus] = useState('')
|
||||||
const [keyword, setKeyword] = useState('')
|
const [keyword, setKeyword] = useState('')
|
||||||
const [keywordInput, setKeywordInput] = useState('')
|
const [keywordInput, setKeywordInput] = useState('')
|
||||||
@@ -430,7 +432,9 @@ export default function WorkOrdersPanel() {
|
|||||||
categoryId: values.categoryId || null,
|
categoryId: values.categoryId || null,
|
||||||
rewardAmount: Number(values.rewardAmount || 0),
|
rewardAmount: Number(values.rewardAmount || 0),
|
||||||
requiredDepositAmount: Number(values.requiredDepositAmount || 0),
|
requiredDepositAmount: Number(values.requiredDepositAmount || 0),
|
||||||
fieldsText: String(values.fieldsText || ''),
|
...(canEditRequirementFields
|
||||||
|
? { fieldsText: String(values.fieldsText || '') }
|
||||||
|
: {}),
|
||||||
timeoutMinutes: Math.max(0, Number(values.timeoutMinutes || 0)),
|
timeoutMinutes: Math.max(0, Number(values.timeoutMinutes || 0)),
|
||||||
timeoutPolicy: values.timeoutPolicy || 'reopen',
|
timeoutPolicy: values.timeoutPolicy || 'reopen',
|
||||||
}),
|
}),
|
||||||
@@ -1089,7 +1093,7 @@ export default function WorkOrdersPanel() {
|
|||||||
name="fieldsText"
|
name="fieldsText"
|
||||||
extra="每行一个字段:key:名称,下拉项用 # 分隔(如 system:系统#安卓,苹果)"
|
extra="每行一个字段:key:名称,下拉项用 # 分隔(如 system:系统#安卓,苹果)"
|
||||||
>
|
>
|
||||||
<Input.TextArea rows={5} />
|
<Input.TextArea rows={5} disabled={!canEditRequirementFields} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label="任务时限"
|
label="任务时限"
|
||||||
|
|||||||
Reference in New Issue
Block a user