| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- /**
- * 页面模板:
- * 列表定义
- */
- import type { HomeCommonCategoryBlockProps } from "../../common/CommonContent";
- import type { CommonListPageProps } from "../../common/CommonListPage.vue";
- import { CommonCategoryDynamicDataSerializedApi, type IHomeCommonCategoryDropdownDynamicData, type IHomeCommonCategoryDynamicData, type IHomeCommonCategoryDynamicDataCommonContent } from "../CommonCategoryDynamicData";
- /**
- * 页面模板:列表定义
- */
- export interface IHomeCommonCategoryListDefine {
- /**
- * 列表类型
- */
- type: 'CommonList',
- /**
- * 列表属性定义
- */
- props: Omit<CommonListPageProps, 'load'|'tabs'> & {
- /**
- * 列表选项卡定义
- */
- tabs?: IHomeCommonCategoryListTabItemDefine[],
- },
- }
- export type IHomeCommonCategoryListTabItemDefine = IHomeCommonCategoryListTabDefine & {
- /**
- * 列表选项卡文本
- */
- text: string,
- /**
- * 列表选项卡宽度
- */
- width?: number,
- /**
- * 列表选项卡是否可见
- */
- visible?: boolean,
- /**
- * 列表选项卡详情页
- */
- detailsPage?: string,
- }
- /**
- * 列表选项卡数据处理方法
- * * none: 不处理
- * * ich: 显示传承相关数据
- * * common: 显示通用数据
- * * date: 显示日期数据
- */
- export type IHomeCommonCategoryListTabListDataSolve = 'none'|'ich'|'common'|'date';
- /**
- * 列表选项卡下拉选择定义
- */
- export interface IHomeCommonCategoryListTabListDropdownDefine {
- key: string,
- text: string,
- defaultValue?: string|number,
- formQueryKey?: string,
- addAll?: string,
- data: IHomeCommonCategoryDropdownDynamicData,
- }
- /**
- * TAB定义 - 类型:列表
- */
- export interface IHomeCommonCategoryListTabListDefine {
- type: 'list',
- /**
- * 前缀嵌套子分类项定义
- */
- preInsertCategorys?: IHomeCommonCategoryListTabNestCategoryItemDefine[],
- /**
- * 列表选项卡数据
- */
- data?: IHomeCommonCategoryDynamicData,
- /**
- * 列表选项卡下拉选择定义
- */
- dropdownDefines?: IHomeCommonCategoryListTabListDropdownDefine[],
- /**
- * 列表数据解决方法
- */
- dataSolve?: IHomeCommonCategoryListTabListDataSolve[],
- }
- /**
- * TAB定义 - 类型:跳转
- */
- export interface IHomeCommonCategoryListTabJumpDefine {
- type: 'jump',
- /**
- * 跳转URL
- */
- url: string,
- /**
- * 跳转参数
- */
- params?: Record<string, any>,
- }
- /**
- * TAB定义 - 类型:嵌套子分类
- */
- export interface IHomeCommonCategoryListTabNestCategoryDefine {
- type: 'nestCategory',
- /**
- * 嵌套子分类项定义
- */
- categorys: IHomeCommonCategoryListTabNestCategoryItemDefine[],
- }
- /**
- * TAB定义 - 类型:嵌套子分类 - 子分类项定义
- */
- export interface IHomeCommonCategoryListTabNestCategoryItemDefine {
- /**
- * 是否可见
- * @default true
- */
- visible?: boolean,
- /**
- * 子分类项文本
- */
- text: string,
- /**
- * 子分类项标题级别
- * @default 'h2'
- */
- textLevel?: 'h1'|'h2'|'h3',
- /**
- * 是否显示标题
- * @default true
- */
- showTitle?: boolean,
- /**
- * 是否显示更多
- * @default false
- */
- showMore?: boolean,
- /**
- * 更多文本
- */
- moreText?: string,
- /**
- * 子分类项的小列表显示类型
- * @type CategoryDefine['type']
- */
- type: string,
- /**
- * 子分类项的更多列表显示类型
- * 'image-large-2'|'image-large'|'article-common'|'article-character'|'simple-text'
- */
- itemType?: string,
- /**
- * 子分类项数据
- */
- data: IHomeCommonCategoryDynamicData,
- /**
- * 更多页面定义
- */
- morePage?: string,
- /**
- * 详情页面定义
- */
- detailsPage?: string,
- /**
- * 子分类项数量
- * @default 4
- */
- count?: number,
- /**
- * 子分类项数据解决方法
- */
- dataSolve?: IHomeCommonCategoryListTabListDataSolve[],
- /**
- * 子分类项参数
- */
- params?: Record<string, any>,
- /**
- * 子分类项如果是预设块,定义块的属性
- */
- blockProps?: any;
- }
- /**
- * TAB定义 - 类型:列表、跳转、嵌套子分类
- */
- export type IHomeCommonCategoryListTabDefine = IHomeCommonCategoryListTabListDefine
- | IHomeCommonCategoryListTabJumpDefine
- | IHomeCommonCategoryListTabNestCategoryDefine;
- export function CommonCategoryListTabNestCategoryDataToContent(
- data: IHomeCommonCategoryDynamicData,
- define: IHomeCommonCategoryListTabNestCategoryDefine['categorys'][0],
- ) {
- if (!data)
- return null;
- switch (data.type) {
- case 'serializedApi':
- return CommonCategoryDynamicDataSerializedApi(data);
- case 'detailContent':
- return data;
- case 'parentKey':
- throw new Error(`未实现的动态数据接口 ${data.type}`);
- case 'request':
- throw new Error(`未实现的动态数据接口 ${data.type}`);
- case 'commonContent':
- return {
- title: define.text,
- mainBodyColumnId: data.params.mainBodyColumnId,
- modelId: data.params.modelId,
- itemType: define.itemType,
- detailsPage: define.detailsPage || 'byContent',
- count: define.count,
- params: (define.data as IHomeCommonCategoryDynamicDataCommonContent).otherParams || {},
- dataSolve: define.dataSolve || [],
- } as HomeCommonCategoryBlockProps;
- }
- }
|