fix: 限制客服编辑资料字段
This commit is contained in:
@@ -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="任务时限"
|
||||
|
||||
Reference in New Issue
Block a user