feat: 解决方案列表页标签排序
All checks were successful
deploy to server / build-and-deploy (push) Successful in 3m1s

- 为SolutionType添加Sort字段用于排序
- 解决方案列表按照sort升序排序
This commit is contained in:
2025-11-08 15:46:37 +08:00
parent 308a080ea4
commit 0363a88785
5 changed files with 67 additions and 26 deletions

View File

@ -13,6 +13,7 @@ describe('toSolutionListView', () => {
type: {
id: 1,
translations: [{ id: 1, name: 'Type Name' }],
sort: 1,
},
};
@ -20,7 +21,11 @@ describe('toSolutionListView', () => {
id: 1,
title: 'Solution Title',
summary: 'Solution Summary',
solution_type: 'Type Name',
solution_type: {
id: 1,
name: 'Type Name',
sort: 1,
},
});
});
@ -31,6 +36,7 @@ describe('toSolutionListView', () => {
type: {
id: 1,
translations: [],
sort: null,
},
};
@ -38,7 +44,11 @@ describe('toSolutionListView', () => {
id: 1,
title: '',
summary: '',
solution_type: '',
solution_type: {
id: 1,
name: '',
sort: 999,
},
});
});
});

View File

@ -1,3 +1,24 @@
/**
* 将 Directus 返回的 SolutionType 数据转换为 SolutionTypeView 视图模型
*
* @param raw: 原始的 SolutionType 数据
* @returns 转换后的 SolutionTypeView 对象
*
* ---
*
* @example
* const view = toSolutionTypeView(rawSolutionType);
*/
export function toSolutionTypeView(raw: SolutionType): SolutionTypeView {
const trans = raw.translations?.[0] ?? { name: '' };
return {
id: raw.id,
name: trans.name,
sort: raw?.sort ?? 999,
};
}
/**
* 将 Directus 返回的 Solution 数据转换为 SolutionListView 视图模型
*
@ -16,10 +37,8 @@ export function toSolutionListView(raw: Solution): SolutionListView {
};
const type = isObject<SolutionType>(raw.type)
? raw.type.translations.length === 0
? ''
: raw.type.translations[0].name
: '';
? toSolutionTypeView(raw.type)
: undefined;
return {
id: raw.id,