From 7aa546dfb1edaa82d5eea10a5a1da98c5e504802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E8=82=96=E7=A3=8A?= <18851179580@163.com> Date: Sat, 8 Feb 2025 14:30:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=80=89=E9=A1=B9=E5=8D=A1?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E6=98=BE=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model-data-tabs-content.vue | 82 +++++++++++++------ .../model-data-tabs-setting.vue | 6 +- .../layout/components/settings/index.vue | 12 ++- 3 files changed, 73 insertions(+), 27 deletions(-) diff --git a/src/components/model-data-tabs/model-data-tabs-content.vue b/src/components/model-data-tabs/model-data-tabs-content.vue index 7f9c9e8a..cddaa8da 100644 --- a/src/components/model-data-tabs/model-data-tabs-content.vue +++ b/src/components/model-data-tabs/model-data-tabs-content.vue @@ -50,17 +50,19 @@ - 商品 - 文章 - 自定义 + {{ item.label }} - + - +
+ +
- +
+ +
@@ -93,6 +95,25 @@ import defaultCustom from '@/config/const/custom'; import { get_math, tabs_style } from '@/utils'; import { commonStore } from '@/store'; const common_store = commonStore(); +// 默认数据 +const base_list = reactive({ + tabs_style_list: [ + { name: '样式一', value: '0' }, + { name: '样式二', value: '1' }, + { name: '样式三', value: '2' }, + { name: '样式四', value: '3' }, + { name: '样式五', value: '4' }, + ], + product_list: [ + { name: '指定商品', value: '0' }, + { name: '筛选商品', value: '1' }, + ], + tabs_data_type_list: [ + { label: '商品', value: 'goods',}, + { label: '文章', value: 'article',}, + { label: '自定义', value: 'custom',}, + ] +}); const props = defineProps({ value: { @@ -133,6 +154,7 @@ arry_list.forEach((item: any) => { item.article_config = cloneDeep(article_default_parameter); } }) +//#region 组件数据渲染 const getConfig = (tabs_data_type: string, row: any, ) => { switch (tabs_data_type) { case 'goods': @@ -145,7 +167,6 @@ const getConfig = (tabs_data_type: string, row: any, ) => { return {}; } } - const getContentComponent = computed(() => { return (tabs_data_type: string) => { switch (tabs_data_type) { @@ -201,23 +222,38 @@ const radio_click = (val: any, index: number) => { form.value.tabs_list[index].tabs_data_type = val; }) } -const base_list = reactive({ - tabs_style_list: [ - { name: '样式一', value: '0' }, - { name: '样式二', value: '1' }, - { name: '样式三', value: '2' }, - { name: '样式四', value: '3' }, - { name: '样式五', value: '4' }, - ], - product_list: [ - { name: '指定商品', value: '0' }, - { name: '筛选商品', value: '1' }, - ] -}); -const emits = defineEmits(['theme_change']); +//#endregion +const emits = defineEmits(['theme_change', 'set_offset_top']); +//#region 获取offsetTop的位置 +// 获取offsetTop的位置 +const set_offset_top = (index: number) => { + setTimeout(() => { + const elements = Array.from(document.querySelectorAll('.nav-list .flex.gap-y-16.re')); + if (elements && elements.length > 0) { + elements.forEach((element: any, index1: number) => { + if (index == index1) { + const offsetTop = element.offsetTop; + if (offsetTop != null) { + emits('set_offset_top', offsetTop); + } + } + }) + } + }) +} +// 选项卡点击 const tabs_list_click = (item: any, index: number) => { + if (form.value.tabs_active_index !== index) { + set_offset_top(index); + } form.value.tabs_active_index = index; }; +// 选项卡中的tab切换 +const tabs_change = (index: number) => { + set_offset_top(index); +} +//#endregion +//#region 选项卡数据设置 // 选项卡设置 const tabs_list_remove = (index: number) => { if (form.value.tabs_list.length > 1) { @@ -255,11 +291,9 @@ const tabs_add = () => { const tabs_theme_change = (val: string | number | boolean | undefined): void => { styles.value.tabs_color_checked = tabs_style(styles.value.tabs_color_checked, val); }; +// #endregion const is_immersion_model = computed(() => common_store.is_immersion_model); -const tabs_change = (val: string | number | boolean | undefined) => { - console.log(val); -} watchEffect(() => { if (is_immersion_model.value) { form.value.tabs_top_up = '0'; diff --git a/src/components/model-data-tabs/model-data-tabs-setting.vue b/src/components/model-data-tabs/model-data-tabs-setting.vue index a70386df..de868dd0 100644 --- a/src/components/model-data-tabs/model-data-tabs-setting.vue +++ b/src/components/model-data-tabs/model-data-tabs-setting.vue @@ -1,7 +1,7 @@