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