|
|
@@ -1,23 +1,20 @@
|
|
|
<template>
|
|
|
<div class="common-list-props-editor">
|
|
|
<a-form :labelCol="{ span: 6 }" size="small">
|
|
|
- <a-form-item label="页面标题 (title)">
|
|
|
- <a-input v-model:value="props.props.title" />
|
|
|
- </a-form-item>
|
|
|
<a-form-item label="显示 Tab">
|
|
|
- <a-switch v-model:checked="props.props.showTab" :checked-value="true" :un-checked-value="false" />
|
|
|
+ <a-checkbox v-model:checked="props.props.showTab" :indeterminate="props.props.showTab === undefined" />
|
|
|
</a-form-item>
|
|
|
<a-form-item label="显示搜索">
|
|
|
- <a-switch v-model:checked="props.props.showSearch" :checked-value="true" :un-checked-value="false" />
|
|
|
+ <a-checkbox v-model:checked="props.props.showSearch" :indeterminate="props.props.showSearch === undefined" />
|
|
|
</a-form-item>
|
|
|
<a-form-item label="显示总数">
|
|
|
- <a-switch v-model:checked="props.props.showTotal" :checked-value="true" :un-checked-value="false" />
|
|
|
+ <a-checkbox v-model:checked="props.props.showTotal" :indeterminate="props.props.showTotal === undefined" />
|
|
|
</a-form-item>
|
|
|
- <a-form-item label="列表项类型 (itemType)">
|
|
|
- <a-input v-model:value="props.props.itemType" placeholder="如 image-large-2" />
|
|
|
+ <a-form-item label="列表项类型">
|
|
|
+ <ItemTypeEditor v-model="props.props.itemType" />
|
|
|
</a-form-item>
|
|
|
- <a-form-item label="详情页 (detailsPage)">
|
|
|
- <a-input v-model:value="props.props.detailsPage" />
|
|
|
+ <a-form-item label="详情页">
|
|
|
+ <LinkPathEditor v-model="(props.props.detailsPage as string)" :noParams="true" />
|
|
|
</a-form-item>
|
|
|
</a-form>
|
|
|
|
|
|
@@ -26,7 +23,7 @@
|
|
|
<div v-for="(tab, i) in tabItems" :key="tabKey(tab, i)" class="nested-item tab-item">
|
|
|
<a-collapse>
|
|
|
<a-collapse-panel :key="i" :header="tabHeader(tab)">
|
|
|
- <a-form size="small">
|
|
|
+ <a-form :labelCol="{ span: 4 }" size="small">
|
|
|
<a-form-item label="文本">
|
|
|
<a-input v-model:value="tab.text" />
|
|
|
</a-form-item>
|
|
|
@@ -43,14 +40,16 @@
|
|
|
style="width: 100%"
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
- <a-form-item label="列表选项卡详情页">
|
|
|
+ <a-form-item label="列表详情页">
|
|
|
<LinkPathEditor v-model="tab.detailsPage" />
|
|
|
</a-form-item>
|
|
|
- <a-form-item label="显示(仅在选项卡可见时)">
|
|
|
- <a-switch
|
|
|
- :checked="tab.visible !== false"
|
|
|
- @change="tab.visible = $event"
|
|
|
- />
|
|
|
+ <a-form-item label="显示">
|
|
|
+ <a-checkbox
|
|
|
+ v-model:checked="tab.visible"
|
|
|
+ :indeterminate="tab.visible === undefined"
|
|
|
+ >
|
|
|
+ (仅在TAB组件可见时有效)
|
|
|
+ </a-checkbox>
|
|
|
</a-form-item>
|
|
|
<template v-if="tab.type === 'list'">
|
|
|
<a-form-item label="数据接口">
|
|
|
@@ -60,7 +59,7 @@
|
|
|
<!--TODO:下拉选择定义控制 -->
|
|
|
</a-form-item>
|
|
|
<a-form-item label="数据处理显示">
|
|
|
- <!--TODO:数据处理显示 -->
|
|
|
+ <DataSolveEditor v-model="tab.dataSolve" />
|
|
|
</a-form-item>
|
|
|
</template>
|
|
|
<template v-else-if="tab.type === 'jump'">
|
|
|
@@ -75,9 +74,8 @@
|
|
|
</a-form-item>
|
|
|
</template>
|
|
|
<template v-else-if="tab.type === 'nestCategory'">
|
|
|
- <a-form-item label="子分类 (categorys)">
|
|
|
-
|
|
|
- <!--TODO: 使用子分类组件-->
|
|
|
+ <a-form-item label="子栏目">
|
|
|
+ <NestCategoryEditor :categorys="tab.categorys" />
|
|
|
</a-form-item>
|
|
|
</template>
|
|
|
<a-popconfirm
|
|
|
@@ -102,6 +100,9 @@ import type { IHomeCommonCategoryListDefine, IHomeCommonCategoryListTabItemDefin
|
|
|
import KeyValueEditor from '../components/KeyValueEditor.vue';
|
|
|
import DynamicDataEditor from '../components/DynamicDataEditor.vue';
|
|
|
import LinkPathEditor from '../components/LinkPathEditor.vue';
|
|
|
+import DataSolveEditor from '../components/DataSolveEditor.vue';
|
|
|
+import NestCategoryEditor from '../subpart/NestCategoryEditor.vue';
|
|
|
+import ItemTypeEditor from '../components/ItemTypeEditor.vue';
|
|
|
|
|
|
type TabItem = IHomeCommonCategoryListTabItemDefine;
|
|
|
|
|
|
@@ -114,9 +115,9 @@ const emit = defineEmits<{
|
|
|
|
|
|
const activeKeys = ref<string[]>(['tabs']);
|
|
|
const tabTypeOptions = [
|
|
|
- { value: 'list', label: '列表' },
|
|
|
- { value: 'jump', label: '跳转' },
|
|
|
- { value: 'nestCategory', label: '子分类' },
|
|
|
+ { value: 'list', label: '通用列表' },
|
|
|
+ { value: 'jump', label: '跳转页面' },
|
|
|
+ { value: 'nestCategory', label: '子栏目' },
|
|
|
];
|
|
|
const tabItems = computed(() => (props.props?.tabs || []) as TabItem[]);
|
|
|
|
|
|
@@ -130,7 +131,7 @@ function tabHeader(tab: TabItem) {
|
|
|
}
|
|
|
function addTab() {
|
|
|
props.props!.tabs = props.props!.tabs || [];
|
|
|
- (props.props!.tabs as TabItem[]).push({ text: '新 Tab', type: 'nestCategory', categorys: [] });
|
|
|
+ (props.props!.tabs as TabItem[]).push({ text: '新 Tab', type: 'list' });
|
|
|
}
|
|
|
function removeTab(i: number) {
|
|
|
props.props!.tabs?.splice(i, 1);
|