完善配送端资源搜索与资质导航
This commit is contained in:
@@ -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 } : {}) },
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
29
frontend/delivery_admin/src/api/resource-search-contract.ts
Normal file
29
frontend/delivery_admin/src/api/resource-search-contract.ts
Normal 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 })),
|
||||
}));
|
||||
}
|
||||
@@ -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 } : {}),
|
||||
|
||||
Reference in New Issue
Block a user