index.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <template>
  2. <ProductDetailsHeader :loading="loading" :product="product" @refresh="getProductData(id)" />
  3. <el-col>
  4. <el-tabs>
  5. <el-tab-pane label="详细资料">
  6. <ProductDetailsInfo :product="product" />
  7. </el-tab-pane>
  8. <el-tab-pane label="操作日志">
  9. <OperateLogV2 :log-list="logList" />
  10. </el-tab-pane>
  11. </el-tabs>
  12. </el-col>
  13. </template>
  14. <script lang="ts" setup>
  15. import { useTagsViewStore } from '@/store/modules/tagsView'
  16. import { OperateLogV2VO } from '@/api/system/operatelog'
  17. import * as ProductApi from '@/api/crm/product'
  18. import ProductDetailsHeader from '@/views/crm/product/detail/ProductDetailsHeader.vue'
  19. import ProductDetailsInfo from '@/views/crm/product/detail/ProductDetailsInfo.vue'
  20. import { BizTypeEnum } from '@/api/crm/permission'
  21. import { getOperateLogPage } from '@/api/crm/operateLog'
  22. defineOptions({ name: 'CrmProductDetail' })
  23. const route = useRoute()
  24. const message = useMessage()
  25. const id = Number(route.params.id) // 编号
  26. const loading = ref(true) // 加载中
  27. const product = ref<ProductApi.ProductVO>({} as ProductApi.ProductVO) // 详情
  28. /** 获取详情 */
  29. const getProductData = async (id: number) => {
  30. loading.value = true
  31. try {
  32. product.value = await ProductApi.getProduct(id)
  33. await getOperateLog(id)
  34. } finally {
  35. loading.value = false
  36. }
  37. }
  38. /** 获取操作日志 */
  39. const logList = ref<OperateLogV2VO[]>([]) // 操作日志列表
  40. const getOperateLog = async (productId: number) => {
  41. if (!productId) {
  42. return
  43. }
  44. const data = await getOperateLogPage({
  45. bizType: BizTypeEnum.CRM_PRODUCT,
  46. bizId: productId
  47. })
  48. logList.value = data.list
  49. }
  50. /** 初始化 */
  51. const { delView } = useTagsViewStore() // 视图操作
  52. const { currentRoute } = useRouter() // 路由
  53. onMounted(async () => {
  54. if (!id) {
  55. message.warning('参数错误,产品不能为空!')
  56. delView(unref(currentRoute))
  57. return
  58. }
  59. await getProductData(id)
  60. })
  61. </script>