fix: 限制客服编辑资料字段

This commit is contained in:
yml2213
2026-08-15 14:22:47 +08:00
parent 112a3272d2
commit 55a658b4fe
3 changed files with 15 additions and 4 deletions
@@ -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="任务时限"