diff --git a/backend/api/internal/logic/platform/gasorder/order_list_display.go b/backend/api/internal/logic/platform/gasorder/order_list_display.go index f48c26f..fb63662 100644 --- a/backend/api/internal/logic/platform/gasorder/order_list_display.go +++ b/backend/api/internal/logic/platform/gasorder/order_list_display.go @@ -62,7 +62,7 @@ func buildGasorderListDisplays(orders []models.GasorderBasic) ([]gasorderListDis for _, order := range orders { creatorName := strings.TrimSpace(creatorNames[creatorLookupKey(order.CreatorType, order.CreatorID)]) if creatorName == "" { - creatorName = fmt.Sprintf("记录已失效(%s)", order.CreatorIdentity) + creatorName = "记录已失效" } displays = append(displays, gasorderListDisplay{ GasorderBasic: order, diff --git a/docs/操作日志_配送订单列表可读信息优化_20260814.md b/docs/操作日志_配送订单列表可读信息优化_20260814.md index 3b0847a..a0bea0e 100644 --- a/docs/操作日志_配送订单列表可读信息优化_20260814.md +++ b/docs/操作日志_配送订单列表可读信息优化_20260814.md @@ -20,9 +20,10 @@ ## 操作后状态 -- 创建方以当前可读名称展示;关联记录失效时显示“记录已失效(唯一标识)”。 +- 创建方以当前可读名称展示;关联记录失效时显示“记录已失效”,并保留唯一标识复制入口。 - 收货地址显示订单创建时保存的地址快照,空值显示“未填写”,长文本沿用表格悬浮全文能力。 - 合同气瓶显示紧凑摘要,点击后可在详情页查看全部气瓶记录。 +- 创建方可读名称的渲染优先于通用唯一标识分支,名称旁保留独立复制入口;失效记录显示“记录已失效”。 ## 代码变更 @@ -36,6 +37,7 @@ - 后端平台配送订单专项测试通过。 - 平台总后台 TypeScript 类型检查与生产构建通过。 +- 配送订单列表创建方显示专项静态检查通过。 ## 风险评估 diff --git a/frontend/platform_admin/package.json b/frontend/platform_admin/package.json index 3e04509..8beab7a 100644 --- a/frontend/platform_admin/package.json +++ b/frontend/platform_admin/package.json @@ -26,6 +26,7 @@ "gasorder-contract-candidates:check": "node scripts/check-gasorder-contract-candidates.mjs", "gasorder-contract-products:check": "node scripts/check-gasorder-contract-product-display.mjs", "gasorder-creator:check": "node scripts/check-gasorder-creator-linkage.mjs", + "gasorder-list-display:check": "node scripts/check-gasorder-list-display.mjs", "product-ownership:check": "node scripts/check-product-ownership-action.mjs", "product-ownership-display:check": "node scripts/check-product-ownership-display.mjs", "product-lifecycle-display:check": "node scripts/check-product-lifecycle-display.mjs", diff --git a/frontend/platform_admin/scripts/check-gasorder-list-display.mjs b/frontend/platform_admin/scripts/check-gasorder-list-display.mjs new file mode 100644 index 0000000..319358f --- /dev/null +++ b/frontend/platform_admin/scripts/check-gasorder-list-display.mjs @@ -0,0 +1,19 @@ +// 功能描述:静态校验配送订单列表优先显示可读创建方,并保留唯一标识复制入口。 +// 版本:v1.0.0 +import fs from 'node:fs'; + +const resources = fs.readFileSync(new URL('../src/api/resources.ts', import.meta.url), 'utf8'); +const listPage = fs.readFileSync(new URL('../src/views/shared/CrudListPage.vue', import.meta.url), 'utf8'); + +const assertions = [ + [resources.includes("listDisplayKey: 'creator_display_name'"), '创建方未配置可读名称字段'], + [resources.includes('listDisplayIdentityCopy: true'), '创建方未保留唯一标识复制入口'], + [listPage.includes('field.listDisplayIdentityCopy && identityFieldValue(field, record)'), '可读名称分支未优先于通用唯一标识分支'], + [listPage.includes(':name="displayListField(field, record)"'), '创建方复制组件未使用列表可读名称'], +]; + +for (const [passed, message] of assertions) { + if (!passed) throw new Error(message); +} + +console.log('配送订单列表创建方显示检查通过'); diff --git a/frontend/platform_admin/src/api/resources.ts b/frontend/platform_admin/src/api/resources.ts index 6d08315..8292299 100644 --- a/frontend/platform_admin/src/api/resources.ts +++ b/frontend/platform_admin/src/api/resources.ts @@ -82,6 +82,8 @@ export type ResourceField = { listDisplayKey?: string; /** 点击列表展示内容时进入当前记录详情。 */ listDetailLink?: boolean; + /** 列表以可读展示字段为主文案,同时保留原关系唯一标识复制入口。 */ + listDisplayIdentityCopy?: boolean; options?: Array<{ label: string; value: string | number }>; defaultValue?: string | number | boolean; readonlyOnCreate?: boolean; @@ -559,7 +561,7 @@ export const resources: ResourceUiDefinition[] = [ { name: '解绑气瓶', resource: '/gasorder_contract_product/:identity/unbind', danger: true, fields: reason }, ]), define('gasorder_contract_revision', '合同修订记录', 'readonly', []), - define('gasorder_basic', '气体配送订单', 'append_only', [f('request_no', { required: true }), relation('gasorder_contract_identity', '/gasorder_contract', true, { label: '配送合同', placeholder: '请选择当前可履约的生效合同', relationFilters: { candidate: 'order' }, relationStrictFilter: true, relationInvalidMessage: '所选配送合同已不可履约,已清空,请重新选择', relationEmptyText: '暂无可下单的生效合同,请先启用或续签配送合同' }), f('creator_type', { required: true, type: 'select', options: resourceSearchEnumOptions('gasorder_basic', 'creator_type') }), f('creator_identity', { label: '创建方', required: true, listDisplayKey: 'creator_display_name', placeholder: '请先选择配送合同和创建方类型', readonlyRelationText: true, relationFilters: { status: '1' }, relationEmptyText: '当前合同下暂无可用的创建方', dynamicRelation: { + define('gasorder_basic', '气体配送订单', 'append_only', [f('request_no', { required: true }), relation('gasorder_contract_identity', '/gasorder_contract', true, { label: '配送合同', placeholder: '请选择当前可履约的生效合同', relationFilters: { candidate: 'order' }, relationStrictFilter: true, relationInvalidMessage: '所选配送合同已不可履约,已清空,请重新选择', relationEmptyText: '暂无可下单的生效合同,请先启用或续签配送合同' }), f('creator_type', { required: true, type: 'select', options: resourceSearchEnumOptions('gasorder_basic', 'creator_type') }), f('creator_identity', { label: '创建方', required: true, listDisplayKey: 'creator_display_name', listDisplayIdentityCopy: true, placeholder: '请先选择配送合同和创建方类型', readonlyRelationText: true, relationFilters: { status: '1' }, relationEmptyText: '当前合同下暂无可用的创建方', dynamicRelation: { parentKey: 'creator_type', parentLabel: '创建方类型', contextParentKey: 'gasorder_contract_identity', resources: { user: '/user_account', staff: '/staff_account', delivery: '/delivery_basic', gas: '/gas_basic' }, fixedIdentityKeys: { user: 'user_account_identity', gas: 'gas_basic_identity', delivery: 'delivery_basic_identity' }, diff --git a/frontend/platform_admin/src/views/shared/CrudListPage.vue b/frontend/platform_admin/src/views/shared/CrudListPage.vue index ad88cc3..95c250e 100644 --- a/frontend/platform_admin/src/views/shared/CrudListPage.vue +++ b/frontend/platform_admin/src/views/shared/CrudListPage.vue @@ -62,6 +62,12 @@ :identity="identityFieldValue(field, record)" :identity-label="field.label" /> +