完善配送端资源搜索与资质导航

This commit is contained in:
czl231
2026-08-22 23:24:12 +08:00
parent 5d4bd61672
commit 4334719051
22 changed files with 432 additions and 58 deletions

View File

@@ -25,11 +25,12 @@ export function recordRouteLocation(
mode: RecordNavigationMode,
identity: string,
returnTo: string,
context: Record<string, string> = {},
): RouteLocationRaw {
return {
name: `${listRouteName}-${mode}`,
...(mode === 'create' ? {} : { params: { identity } }),
query: returnTo ? { return_to: returnTo } : {},
query: { ...context, ...(returnTo ? { return_to: returnTo } : {}) },
};
}

View File

@@ -0,0 +1,29 @@
/**
* 功能描述:读取配送端生成的资源搜索契约,统一搜索字段与枚举别名。
* 版本v1.0.0。
*/
import deliveryContract from '@/contracts/delivery-resources.json';
export type ResourceSearchValue = { value: string; label: string };
export type ResourceSearchField = {
key: string;
kind: 'text' | 'enum';
values?: ResourceSearchValue[];
};
type ContractResource = { name: string; searchFields?: ResourceSearchField[] };
const fieldsByResource = Object.fromEntries(
(deliveryContract.resources as ContractResource[]).map((resource) => [
resource.name,
resource.searchFields ?? [],
]),
) as Record<string, ResourceSearchField[]>;
/** 返回后端确认可用的搜索字段副本。 */
export function resourceSearchFields(name: string): ResourceSearchField[] {
return (fieldsByResource[name] ?? []).map((field) => ({
...field,
values: field.values?.map((value) => ({ ...value })),
}));
}

View File

@@ -2,6 +2,8 @@
* 功能描述:定义配送点后台资源能力、字段契约和受控业务动作。
* 版本v1.1.0。
*/
import { resourceSearchFields, type ResourceSearchField } from './resource-search-contract';
export type ResourceMode =
| 'writable'
| 'readonly'
@@ -59,6 +61,7 @@ export type ResourceUiDefinition = {
mode: ResourceMode;
pageKind: ResourcePageKind;
fields: ResourceField[];
searchFields: ResourceSearchField[];
detailActions?: DetailAction[];
canCreate: boolean;
canEdit: boolean;
@@ -338,6 +341,7 @@ function define(
mode,
pageKind,
fields,
searchFields: resourceSearchFields(name),
...defaults,
...capabilities,
...(detailActions ? { detailActions } : {}),