index.vue 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <CustomerDetailsHeader :customer="customer" :loading="loading" @refresh="getCustomerData(id)" />
  3. <el-col>
  4. <el-tabs>
  5. <el-tab-pane label="详细资料">
  6. <CustomerDetails :customer="customer" />
  7. </el-tab-pane>
  8. <el-tab-pane label="活动" lazy> 活动</el-tab-pane>
  9. <el-tab-pane label="邮件" lazy> 邮件</el-tab-pane>
  10. <el-tab-pane label="工商信息" lazy> 工商信息</el-tab-pane>
  11. <el-tab-pane label="客户关系" lazy> 客户关系</el-tab-pane>
  12. <!-- TODO wanwan 以下标签上的数量需要接口统计返回 -->
  13. <el-tab-pane label="联系人" lazy>
  14. <template #label>
  15. 联系人
  16. <el-badge class="item" type="primary" />
  17. </template>
  18. 联系人
  19. </el-tab-pane>
  20. <el-tab-pane label="团队成员" lazy>
  21. <template #label>
  22. 团队成员
  23. <el-badge class="item" type="primary" />
  24. </template>
  25. <CrmPermissionList :biz-id="customer.id" :biz-type="CrmBizTypeEnum.CRM_CUSTOMER" />
  26. </el-tab-pane>
  27. <el-tab-pane label="商机" lazy> 商机</el-tab-pane>
  28. <el-tab-pane label="合同" lazy>
  29. <template #label>
  30. 合同
  31. <el-badge class="item" type="primary" />
  32. </template>
  33. 合同
  34. </el-tab-pane>
  35. <el-tab-pane label="回款" lazy>
  36. <template #label>
  37. 回款
  38. <el-badge class="item" type="primary" />
  39. </template>
  40. 回款
  41. </el-tab-pane>
  42. <el-tab-pane label="回访" lazy> 回访</el-tab-pane>
  43. <el-tab-pane label="发票" lazy> 发票</el-tab-pane>
  44. </el-tabs>
  45. </el-col>
  46. </template>
  47. <script lang="ts" setup>
  48. import { ElMessage } from 'element-plus'
  49. import { useTagsViewStore } from '@/store/modules/tagsView'
  50. import * as CustomerApi from '@/api/crm/customer'
  51. import CustomerBasicInfo from '@/views/crm/customer/detail/CustomerBasicInfo.vue'
  52. import { DICT_TYPE } from '@/utils/dict'
  53. import CustomerDetails from '@/views/crm/customer/detail/CustomerDetails.vue'
  54. import CustomerForm from '@/views/crm/customer/CustomerForm.vue'
  55. import { CrmBizTypeEnum, CrmPermissionList } from '@/views/crm/components'
  56. defineOptions({ name: 'CustomerDetail' })
  57. const { delView } = useTagsViewStore() // 视图操作
  58. const route = useRoute()
  59. const { currentRoute } = useRouter() // 路由
  60. const id = Number(route.params.id)
  61. const loading = ref(true) // 加载中
  62. /**
  63. * 获取详情
  64. *
  65. * @param id 客户编号
  66. */
  67. const customer = ref<CustomerApi.CustomerVO>({} as CustomerApi.CustomerVO) // 客户详情
  68. const getCustomerData = async (id: number) => {
  69. loading.value = true
  70. try {
  71. customer.value = await CustomerApi.getCustomer(id)
  72. } finally {
  73. loading.value = false
  74. }
  75. }
  76. /**
  77. * 初始化
  78. */
  79. onMounted(() => {
  80. if (!id) {
  81. ElMessage.warning('参数错误,客户不能为空!')
  82. delView(unref(currentRoute))
  83. return
  84. }
  85. getCustomerData(id)
  86. })
  87. </script>