From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/views/crm/product/detail/index.vue |   66 +++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/src/views/crm/product/detail/index.vue b/src/views/crm/product/detail/index.vue
new file mode 100644
index 0000000..65fdd0f
--- /dev/null
+++ b/src/views/crm/product/detail/index.vue
@@ -0,0 +1,66 @@
+<template>
+  <ProductDetailsHeader :loading="loading" :product="product" @refresh="getProductData(id)" />
+  <el-col>
+    <el-tabs>
+      <el-tab-pane label="璇︾粏璧勬枡">
+        <ProductDetailsInfo :product="product" />
+      </el-tab-pane>
+      <el-tab-pane label="鎿嶄綔鏃ュ織">
+        <OperateLogV2 :log-list="logList" />
+      </el-tab-pane>
+    </el-tabs>
+  </el-col>
+</template>
+<script lang="ts" setup>
+import { useTagsViewStore } from '@/store/modules/tagsView'
+import { OperateLogVO } from '@/api/system/operatelog'
+import * as ProductApi from '@/api/crm/product'
+import ProductDetailsHeader from '@/views/crm/product/detail/ProductDetailsHeader.vue'
+import ProductDetailsInfo from '@/views/crm/product/detail/ProductDetailsInfo.vue'
+import { BizTypeEnum } from '@/api/crm/permission'
+import { getOperateLogPage } from '@/api/crm/operateLog'
+
+defineOptions({ name: 'CrmProductDetail' })
+
+const route = useRoute()
+const message = useMessage()
+const id = route.params.id // 缂栧彿
+const loading = ref(true) // 鍔犺浇涓�
+const product = ref<ProductApi.ProductVO>({} as ProductApi.ProductVO) // 璇︽儏
+
+/** 鑾峰彇璇︽儏 */
+const getProductData = async (id: number) => {
+  loading.value = true
+  try {
+    product.value = await ProductApi.getProduct(id)
+    await getOperateLog(id)
+  } finally {
+    loading.value = false
+  }
+}
+
+/** 鑾峰彇鎿嶄綔鏃ュ織 */
+const logList = ref<OperateLogVO[]>([]) // 鎿嶄綔鏃ュ織鍒楄〃
+const getOperateLog = async (productId: number) => {
+  if (!productId) {
+    return
+  }
+  const data = await getOperateLogPage({
+    bizType: BizTypeEnum.CRM_PRODUCT,
+    bizId: productId
+  })
+  logList.value = data.list
+}
+
+/** 鍒濆鍖� */
+const { delView } = useTagsViewStore() // 瑙嗗浘鎿嶄綔
+const { currentRoute } = useRouter() // 璺敱
+onMounted(async () => {
+  if (!id) {
+    message.warning('鍙傛暟閿欒锛屼骇鍝佷笉鑳戒负绌猴紒')
+    delView(unref(currentRoute))
+    return
+  }
+  await getProductData(id)
+})
+</script>

--
Gitblit v1.8.0