diff --git a/docs/操作日志_气站订单分配配送点名称回显_20260819.md b/docs/操作日志_气站订单分配配送点名称回显_20260819.md new file mode 100644 index 0000000..a4b9395 --- /dev/null +++ b/docs/操作日志_气站订单分配配送点名称回显_20260819.md @@ -0,0 +1,40 @@ +# 气站订单分配配送点名称回显操作日志 + +操作时间:2026-08-19 20:08:00 +操作类型:修改 +影响模块:气站管理系统 / 配送订单分配弹窗 + +## 操作前状态 + +- 分配弹窗字段标题显示为“配送点唯一标识”。 +- 已分配订单锁定配送点时,需要再次请求配送点详情才能取得名称;补载未完成或失败时,下拉框直接展示 UUID。 + +## 具体操作 + +- 将字段标题调整为“配送点”,工作人员字段调整为“配送人员”。 +- 配送点候选明确使用 `name` 字段作为可读名称。 +- 锁定配送点时优先使用订单详情已返回的 `delivery_basic_display_name` 构建回显选项。 +- 订单详情没有名称时,继续沿用原详情补载逻辑作为兼容兜底。 + +## 操作后状态 + +- 分配弹窗按 5173 的展示方式显示配送点名称,例如“1”,不再优先展示 UUID。 +- 配送点锁定、配送人员筛选和分配提交值保持不变。 + +## 代码变更 + +- `frontend/gas_admin/src/api/resources.ts`:分配动作字段的业务标题、提示语和名称键。 +- `frontend/gas_admin/src/views/resource/ResourceActionDialog.vue`:锁定配送点名称回显。 + +## 验证结果 + +- `pnpm run type:check`:通过。 +- `pnpm run contract:check`:通过,20 个资源。 +- `pnpm run resource-pages:check`:通过,详情 20 类、新建 11 类、编辑 8 类。 +- `pnpm run build`:通过。 + +## 风险评估 + +- 改动仅影响分配弹窗的字段文案和下拉框回显。 +- 表单仍提交原 `delivery_basic_identity`,不改变后端接口和分配业务逻辑。 +- 已保留名称缺失时的原详情补载兜底。 diff --git a/frontend/gas_admin/src/api/resources.ts b/frontend/gas_admin/src/api/resources.ts index 7ae3db7..78141b1 100644 --- a/frontend/gas_admin/src/api/resources.ts +++ b/frontend/gas_admin/src/api/resources.ts @@ -434,7 +434,7 @@ const platformResources: ResourceUiDefinition[] = [ ]), define('gasorder_contract_revision', '合同修订记录', 'readonly', []), define('gasorder_basic', '气体配送订单', 'append_only', [f('request_no', { required: true }), relation('gasorder_contract_identity', '/gasorder_contract', true), f('creator_type', { required: true, type: 'select', options: [{ label: '用户', value: 'user' }, { label: '工作人员', value: 'staff' }, { label: '配送站', value: 'delivery' }, { label: '气站', value: 'gas' }] }), f('creator_identity', { required: true }), relation('user_address_identity', '/user_address', true), f('gasorder_contract_product_identities', { required: true, type: 'identity-list', relation: '/gasorder_contract_product' }), f('contact_name', { required: true }), f('contact_phone', { required: true }), f('discount_amount'), f('remark')], 'list', [ - { name: '分配订单', resource: '/gasorder_basic/:identity/assign', fields: [relation('delivery_basic_identity', '/delivery_basic', true), relation('staff_account_identity', '/staff_account', true, { staffRelation: { roles: ['delivery'], enabledOnly: true } }), ...reason], visibleFor: { field: 'order_status', values: [16, 18] } }, + { name: '分配订单', resource: '/gasorder_basic/:identity/assign', fields: [relation('delivery_basic_identity', '/delivery_basic', true, { label: '配送点', placeholder: '请选择合同履约范围内的配送点', relationOptionLabelKey: 'name' }), relation('staff_account_identity', '/staff_account', true, { label: '配送人员', placeholder: '请选择当前配送点内的配送人员', staffRelation: { roles: ['delivery'], enabledOnly: true } }), ...reason], visibleFor: { field: 'order_status', values: [16, 18] } }, { name: '开始罐装', resource: '/gasorder_basic/:identity/filling', fields: reason, visibleFor: { field: 'order_status', values: [18] } }, { name: '待配送', resource: '/gasorder_basic/:identity/ready', fields: reason, visibleFor: { field: 'order_status', values: [19] } }, { name: '开始配送', resource: '/gasorder_basic/:identity/delivering', fields: reason, visibleFor: { field: 'order_status', values: [20] } }, diff --git a/frontend/gas_admin/src/views/resource/ResourceActionDialog.vue b/frontend/gas_admin/src/views/resource/ResourceActionDialog.vue index f098203..df93a2e 100644 --- a/frontend/gas_admin/src/views/resource/ResourceActionDialog.vue +++ b/frontend/gas_admin/src/views/resource/ResourceActionDialog.vue @@ -217,7 +217,17 @@ async function initializeGasorderAssignment() { const lockedIdentity = lockedAssignmentDeliveryIdentity.value; if (lockedIdentity) { form.delivery_basic_identity = lockedIdentity; - await relations.ensure('/delivery_basic', lockedIdentity); + const lockedDisplayName = String( + props.record.delivery_basic_display_name ?? '', + ).trim(); + // 订单详情已返回当前配送点名称时直接回显,避免补载请求期间短暂展示裸唯一标识。 + if (lockedDisplayName) { + relations.options['/delivery_basic'] = [ + { identity: lockedIdentity, name: lockedDisplayName }, + ]; + } else { + await relations.ensure('/delivery_basic', lockedIdentity); + } await relations.loadField(staffField, '', { filters: assignmentStaffFilters(lockedIdentity), });