From 08a246d4721f9a0b9f82b64d270790ba775c851f Mon Sep 17 00:00:00 2001 From: XuZhiqiang Date: Sat, 6 Jun 2026 22:29:15 +0800 Subject: [PATCH] =?UTF-8?q?fix(web-antdv-next):=20CRM=20=E5=92=8C=20Mall?= =?UTF-8?q?=20=E6=A8=A1=E5=9D=97=E4=BD=BF=E7=94=A8=20Tabs=20items=20?= =?UTF-8?q?=E5=92=8C=20contentRender=20=E9=80=82=E9=85=8D=20antdv-next?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/crm/clue/detail/index.vue | 29 ++++++----- .../src/views/crm/customer/detail/index.vue | 50 +++++++++++-------- .../src/views/mall/product/spu/index.vue | 16 +++--- 3 files changed, 53 insertions(+), 42 deletions(-) diff --git a/apps/web-antdv-next/src/views/crm/clue/detail/index.vue b/apps/web-antdv-next/src/views/crm/clue/detail/index.vue index efe5b08e0..82ea28e7b 100644 --- a/apps/web-antdv-next/src/views/crm/clue/detail/index.vue +++ b/apps/web-antdv-next/src/views/crm/clue/detail/index.vue @@ -32,6 +32,12 @@ const clueId = ref(0); // 线索编号 const clue = ref({} as CrmClueApi.Clue); // 线索详情 const logList = ref([]); // 操作日志 const permissionListRef = ref>(); // 团队成员列表 Ref +const clueTabItems = [ + { key: '1', label: '跟进记录', forceRender: true }, + { key: '2', label: '基本信息', forceRender: true }, + { key: '3', label: '团队成员', forceRender: true }, + { key: '4', label: '操作日志', forceRender: true }, +]; const [Descriptions] = useDescription({ bordered: false, @@ -143,25 +149,24 @@ onMounted(() => { - - - - - - - - + + diff --git a/apps/web-antdv-next/src/views/crm/customer/detail/index.vue b/apps/web-antdv-next/src/views/crm/customer/detail/index.vue index 5d50b253c..fa1a5349a 100644 --- a/apps/web-antdv-next/src/views/crm/customer/detail/index.vue +++ b/apps/web-antdv-next/src/views/crm/customer/detail/index.vue @@ -45,6 +45,16 @@ const customerId = ref(0); // 客户编号 const customer = ref({} as CrmCustomerApi.Customer); // 客户详情 const logList = ref([]); // 操作日志 const permissionListRef = ref>(); // 团队成员列表 Ref +const customerTabItems = [ + { key: '1', label: '跟进记录', forceRender: true }, + { key: '2', label: '基本信息', forceRender: true }, + { key: '3', label: '联系人', forceRender: true }, + { key: '4', label: '团队成员', forceRender: true }, + { key: '5', label: '商机', forceRender: true }, + { key: '6', label: '合同', forceRender: true }, + { key: '7', label: '回款', forceRender: true }, + { key: '8', label: '操作日志', forceRender: true }, +]; const [Descriptions] = useDescription({ bordered: false, @@ -241,49 +251,45 @@ onMounted(() => { - - - - - - - - + + diff --git a/apps/web-antdv-next/src/views/mall/product/spu/index.vue b/apps/web-antdv-next/src/views/mall/product/spu/index.vue index 4aade5ef3..16137a7c8 100644 --- a/apps/web-antdv-next/src/views/mall/product/spu/index.vue +++ b/apps/web-antdv-next/src/views/mall/product/spu/index.vue @@ -2,7 +2,7 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { MallSpuApi } from '#/api/mall/product/spu'; -import { onMounted, ref } from 'vue'; +import { computed, onMounted, ref } from 'vue'; import { useRoute, useRouter } from 'vue-router'; import { confirm, DocAlert, Page } from '@vben/common-ui'; @@ -53,6 +53,12 @@ const tabsData = ref([ count: 0, }, ]); +const spuTabItems = computed(() => + tabsData.value.map((item) => ({ + key: String(item.type), + label: `${item.name} (${item.count})`, + })), +); /** 刷新表格 */ async function handleRefresh() { @@ -208,13 +214,7 @@ onMounted(async () => {