FollowCustomer.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <!-- 分配给我的客户 -->
  2. <template>
  3. <ContentWrap>
  4. <div class="pb-5 text-xl">分配给我的客户</div>
  5. <!-- 搜索工作栏 -->
  6. <el-form
  7. ref="queryFormRef"
  8. :inline="true"
  9. :model="queryParams"
  10. class="-mb-15px"
  11. label-width="68px"
  12. >
  13. <el-form-item label="状态" prop="followUpStatus">
  14. <el-select
  15. v-model="queryParams.followUpStatus"
  16. class="!w-240px"
  17. placeholder="状态"
  18. @change="handleQuery"
  19. >
  20. <el-option
  21. v-for="(option, index) in FOLLOWUP_STATUS"
  22. :label="option.label"
  23. :value="option.value"
  24. :key="index"
  25. />
  26. </el-select>
  27. </el-form-item>
  28. </el-form>
  29. </ContentWrap>
  30. <!-- 列表 -->
  31. <ContentWrap>
  32. <el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
  33. <el-table-column align="center" label="编号" prop="id" />
  34. <el-table-column align="center" label="客户名称" prop="name" width="160">
  35. <template #default="scope">
  36. <el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
  37. {{ scope.row.name }}
  38. </el-link>
  39. </template>
  40. </el-table-column>
  41. <el-table-column align="center" label="手机" prop="mobile" width="120" />
  42. <el-table-column align="center" label="电话" prop="telephone" width="120" />
  43. <el-table-column align="center" label="客户来源" prop="source" width="100">
  44. <template #default="scope">
  45. <dict-tag :type="DICT_TYPE.CRM_CUSTOMER_SOURCE" :value="scope.row.source" />
  46. </template>
  47. </el-table-column>
  48. <el-table-column align="center" label="所属行业" prop="industryId" width="120">
  49. <template #default="scope">
  50. <dict-tag :type="DICT_TYPE.CRM_CUSTOMER_INDUSTRY" :value="scope.row.industryId" />
  51. </template>
  52. </el-table-column>
  53. <el-table-column align="center" label="客户等级" prop="level" width="120">
  54. <template #default="scope">
  55. <dict-tag :type="DICT_TYPE.CRM_CUSTOMER_LEVEL" :value="scope.row.level" />
  56. </template>
  57. </el-table-column>
  58. <el-table-column align="center" label="网址" prop="website" width="200" />
  59. <el-table-column
  60. :formatter="dateFormatter"
  61. align="center"
  62. label="下次联系时间"
  63. prop="contactNextTime"
  64. width="180px"
  65. />
  66. <el-table-column align="center" label="备注" prop="remark" width="200" />
  67. <el-table-column align="center" label="成交状态" prop="dealStatus">
  68. <template #default="scope">
  69. <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.dealStatus" />
  70. </template>
  71. </el-table-column>
  72. <el-table-column align="center" label="距离进入公海" prop="poolDay">
  73. <template #default="scope"> {{ scope.row.poolDay }} 天</template>
  74. </el-table-column>
  75. <el-table-column
  76. :formatter="dateFormatter"
  77. align="center"
  78. label="最后跟进时间"
  79. prop="contactLastTime"
  80. width="180px"
  81. />
  82. <el-table-column
  83. :formatter="dateFormatter"
  84. align="center"
  85. label="创建时间"
  86. prop="updateTime"
  87. width="180px"
  88. />
  89. <el-table-column
  90. :formatter="dateFormatter"
  91. align="center"
  92. label="创建时间"
  93. prop="createTime"
  94. width="180px"
  95. />
  96. <el-table-column align="center" label="负责人" prop="ownerUserName" width="100px" />
  97. <el-table-column align="center" label="所属部门" prop="ownerUserDeptName" width="100px" />
  98. <el-table-column align="center" label="创建人" prop="creatorName" width="100px" />
  99. </el-table>
  100. <!-- 分页 -->
  101. <Pagination
  102. v-model:limit="queryParams.pageSize"
  103. v-model:page="queryParams.pageNo"
  104. :total="total"
  105. @pagination="getList"
  106. />
  107. </ContentWrap>
  108. </template>
  109. <script setup lang="ts" name="FollowCustomer">
  110. import { DICT_TYPE } from '@/utils/dict'
  111. import { dateFormatter } from '@/utils/formatTime'
  112. import * as CustomerApi from '@/api/crm/customer'
  113. const { push } = useRouter()
  114. const FOLLOWUP_STATUS = [
  115. { label: '已跟进', value: true },
  116. { label: '待跟进', value: false }
  117. ]
  118. const loading = ref(true) // 列表的加载中
  119. const total = ref(0) // 列表的总页数
  120. const list = ref([]) // 列表的数据
  121. const queryParams = ref({
  122. pageNo: 1,
  123. pageSize: 10,
  124. followUpStatus: false,
  125. sceneType: 1
  126. })
  127. const queryFormRef = ref() // 搜索的表单
  128. /** 查询列表 */
  129. const getList = async () => {
  130. loading.value = true
  131. try {
  132. const data = await CustomerApi.getCustomerPage(queryParams.value)
  133. list.value = data.list
  134. total.value = data.total
  135. } finally {
  136. loading.value = false
  137. }
  138. }
  139. /** 搜索按钮操作 */
  140. const handleQuery = () => {
  141. queryParams.value.pageNo = 1
  142. getList()
  143. }
  144. /** 打开客户详情 */
  145. const openDetail = (id: number) => {
  146. push({ name: 'CrmCustomerDetail', params: { id } })
  147. }
  148. /** 初始化 **/
  149. onMounted(() => {
  150. getList()
  151. })
  152. </script>
  153. <style scoped></style>