优化气站订单分配配送点与人员名称回显

This commit is contained in:
czl231
2026-08-19 20:34:37 +08:00
parent 2d793db38b
commit 09e0e6878c
3 changed files with 52 additions and 2 deletions

View File

@@ -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`,不改变后端接口和分配业务逻辑。
- 已保留名称缺失时的原详情补载兜底。

View File

@@ -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] } },

View File

@@ -217,7 +217,17 @@ async function initializeGasorderAssignment() {
const lockedIdentity = lockedAssignmentDeliveryIdentity.value;
if (lockedIdentity) {
form.delivery_basic_identity = 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),
});