强化配送订单合同调度约束

This commit is contained in:
czl231
2026-08-15 19:19:15 +08:00
parent 963e497bf3
commit 42a4fc2f41
15 changed files with 501 additions and 52 deletions

View File

@@ -1,6 +1,6 @@
/**
* 功能:定义工作人员关联字段的显式过滤、角色展示与资质来源校验策略。
* 版本v1.0.0
* 版本v1.1.0
*/
export const staffRoleCodes = ['installer', 'delivery', 'operations'] as const;
@@ -11,6 +11,8 @@ export type StaffRelationPolicy = {
roles: readonly StaffRoleCode[] | 'context';
enabledOnly?: boolean;
workStatus?: 'on_duty' | 'off_duty';
/** 仅展示至少拥有一条启用且未过期资质的工作人员。 */
validCredentialOnly?: boolean;
lockPrefilled?: boolean;
showIdentityCopy?: boolean;
organizationScoped?: boolean;
@@ -78,6 +80,9 @@ export function staffRelationFilters(
if (field.staffRelation.workStatus) {
filters.work_status = field.staffRelation.workStatus;
}
if (field.staffRelation.validCredentialOnly) {
filters.valid_credential_only = '1';
}
return filters;
}

View File

@@ -587,7 +587,7 @@ export const resources: ResourceUiDefinition[] = [
parentChangeMessage: '配送合同已变更,请重新选择该合同用户的收货地址',
},
}), f('gasorder_contract_product_identities', { label: '合同气瓶', required: true, type: 'identity-list', listDisplayKey: 'contract_products_summary', listDetailLink: true, emptyText: '未填写', relation: '/gasorder_contract_product', placeholder: '请输入智能气阀名称、设备类型或设备编码搜索', relationOptionDisplay: 'product-name-type', relationEmptyText: '该合同暂无可用气瓶,请先为合同绑定气瓶', relationLinkage: { parentKey: 'gasorder_contract_identity', optionParentKey: '', filterKey: 'contract_identity', filterOnly: true, requiresParent: true, parentChangeMessage: '配送合同已变更,请重新选择该合同可用的气瓶' } }), 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, workStatus: 'on_duty' } }), ...reason], visibleFor: { field: 'order_status', values: [16, 18] } },
{ name: '分配订单', resource: '/gasorder_basic/:identity/assign', fields: [relation('delivery_basic_identity', '/delivery_basic', true, { label: '配送点', placeholder: '请选择合同履约范围内的配送点', relationFilters: { status: '1' } }), relation('staff_account_identity', '/staff_account', true, { label: '配送人员', placeholder: '请先选择配送点', relationEmptyText: '该配送点暂无在岗且资质有效的配送人员', staffRelation: { roles: ['delivery'], enabledOnly: true, workStatus: 'on_duty', validCredentialOnly: 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] } },