|
|
@@ -1,7 +1,8 @@
|
|
|
<template>
|
|
|
<FlexCol>
|
|
|
<Result v-if="errorMessage" status="error" :description="errorMessage" />
|
|
|
- <CommonListPage
|
|
|
+ <LoadingPage v-else-if="!loadState" />
|
|
|
+ <CommonListPage
|
|
|
v-else-if="currentCommonCategoryDefine && loadState"
|
|
|
:startTabIndex="pageStartTab"
|
|
|
v-bind="currentCommonCategoryDefine.content.props as any || undefined"
|
|
|
@@ -19,6 +20,7 @@
|
|
|
/>
|
|
|
</template>
|
|
|
</CommonListPage>
|
|
|
+
|
|
|
<Footer text="我也是有底线的~" />
|
|
|
</FlexCol>
|
|
|
</template>
|
|
|
@@ -31,6 +33,7 @@ import { doLoadDynamicCategoryDataMergeTypeGetColumns, doLoadDynamicDropdownData
|
|
|
import { CommonCategoryListTabNestCategoryDataToContent, type IHomeCommonCategoryDefine, type IHomeCommonCategoryListDefine, type IHomeCommonCategoryListTabDefine } from './CommonCategoryDefine';
|
|
|
import { resolveCommonContentSolveProps } from '../common/CommonContent';
|
|
|
import { waitTimeOut } from '@imengyu/imengyu-utils';
|
|
|
+import { formatError } from '@/common/composeabe/ErrorDisplay';
|
|
|
import type { SimpleDropDownPickerItem } from '@/common/components/SimpleDropDownPicker.vue';
|
|
|
import type { CommonListPageProps, DropDownNames } from '../common/CommonListPage.vue';
|
|
|
import CommonListPage from '../common/CommonListPage.vue';
|
|
|
@@ -38,6 +41,7 @@ import Result from '@/components/feedback/Result.vue';
|
|
|
import CommonCategoryBlocks, { type CategoryDefine } from './CommonCategoryBlocks.vue';
|
|
|
import Footer from '@/components/display/Footer.vue';
|
|
|
import FlexCol from '@/components/layout/FlexCol.vue';
|
|
|
+import LoadingPage from '@/components/display/loading/LoadingPage.vue';
|
|
|
|
|
|
/**
|
|
|
* 动态通用内容 - 通用列表页
|
|
|
@@ -135,34 +139,38 @@ type RenderTabDefine = IHomeCommonCategoryListTabDefine & {
|
|
|
const tabDefines = computed(() => currentCommonCategoryContentDefine.value?.props.tabs || []);
|
|
|
const tabRenderDefines = computed(() => {
|
|
|
const result = {} as Record<number, RenderTabDefine>;
|
|
|
- tabDefines.value.forEach((item, i) => {
|
|
|
- const renderItem : RenderTabDefine = {
|
|
|
- ...item,
|
|
|
- };
|
|
|
- switch (item.type) {
|
|
|
- default:
|
|
|
- case 'list':
|
|
|
- break;
|
|
|
- case 'jump':
|
|
|
- break;
|
|
|
- case 'nestCategory':
|
|
|
- renderItem.categoryDefine = item.categorys
|
|
|
- .filter((item) => item.visible !== false)
|
|
|
- .map((item) => {
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- showTitle: item.showTitle !== false,
|
|
|
- title: item.text,
|
|
|
- content: CommonCategoryListTabNestCategoryDataToContent(
|
|
|
- item.data, item
|
|
|
- ),
|
|
|
- type: item.type as CategoryDefine['type'],
|
|
|
- }
|
|
|
- });
|
|
|
- break;
|
|
|
- }
|
|
|
- result[i] = renderItem;
|
|
|
- });
|
|
|
+ try {
|
|
|
+ tabDefines.value.forEach((item, i) => {
|
|
|
+ const renderItem : RenderTabDefine = {
|
|
|
+ ...item,
|
|
|
+ };
|
|
|
+ switch (item.type) {
|
|
|
+ default:
|
|
|
+ case 'list':
|
|
|
+ break;
|
|
|
+ case 'jump':
|
|
|
+ break;
|
|
|
+ case 'nestCategory':
|
|
|
+ renderItem.categoryDefine = item.categorys
|
|
|
+ .filter((item) => item.visible !== false)
|
|
|
+ .map((item) => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ showTitle: item.showTitle !== false,
|
|
|
+ title: item.text,
|
|
|
+ content: CommonCategoryListTabNestCategoryDataToContent(
|
|
|
+ item.data, item
|
|
|
+ ),
|
|
|
+ type: item.type as CategoryDefine['type'],
|
|
|
+ }
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ result[i] = renderItem;
|
|
|
+ });
|
|
|
+ } catch (error) {
|
|
|
+ errorMessage.value = formatError(error);
|
|
|
+ }
|
|
|
return result;
|
|
|
});
|
|
|
const showListTabIds = computed(() => {
|