【招生平台用户端】 新增# 线索列表接口
							parent
							
								
									889efd326d
								
							
						
					
					
						commit
						8cf9f6e0ea
					
				|  | @ -0,0 +1,10 @@ | ||||||
|  | import request from '@/utils/request' | ||||||
|  | 
 | ||||||
|  | // 线索详情
 | ||||||
|  | export function clueDetail(params?: any) { | ||||||
|  |     return request.get({ url: '/clue/detail', params }) | ||||||
|  | } | ||||||
|  | // 线索列表
 | ||||||
|  | export function clueLists(params?: any) { | ||||||
|  |     return request.get({ url: '/clue/list', params }) | ||||||
|  | } | ||||||
|  | @ -10,3 +10,21 @@ export enum isDisabledEnum { | ||||||
|     YES = 1, |     YES = 1, | ||||||
|     NO = 0 |     NO = 0 | ||||||
| } | } | ||||||
|  | export enum converStatusEnum { | ||||||
|  |     INTENTION = 0, //有意向
 | ||||||
|  |     UN_RECEIVED = 1, //待领取
 | ||||||
|  |     CONVERTED_PROCESS = 2, //转化中
 | ||||||
|  |     ADD_RELATION = 3, //已添加
 | ||||||
|  |     EXCEPTION = 4, //异常待处理
 | ||||||
|  |     CONVERTED = 5, //已成交
 | ||||||
|  |     FAILED = 6 //已战败
 | ||||||
|  | } | ||||||
|  | export const conversionMap = { | ||||||
|  |     [converStatusEnum.INTENTION]: '有意向', | ||||||
|  |     [converStatusEnum.UN_RECEIVED]: '待领取', | ||||||
|  |     [converStatusEnum.CONVERTED_PROCESS]: '转化中', | ||||||
|  |     [converStatusEnum.ADD_RELATION]: '已添加', | ||||||
|  |     [converStatusEnum.EXCEPTION]: '异常待处理', | ||||||
|  |     [converStatusEnum.CONVERTED]: '已成交', | ||||||
|  |     [converStatusEnum.FAILED]: '已战败' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -17,14 +17,16 @@ const loading = ref(false) | ||||||
| watch( | watch( | ||||||
|     () => props.modelValue, |     () => props.modelValue, | ||||||
|     () => { |     () => { | ||||||
|         console.log('基础信息') |         fetchClueDetail() | ||||||
|         loading.value = true |  | ||||||
|         setTimeout(() => { |  | ||||||
|             loading.value = false |  | ||||||
|         }, 500) |  | ||||||
|     }, |     }, | ||||||
|     { immediate: true } |     { immediate: true } | ||||||
| ) | ) | ||||||
|  | const fetchClueDetail = () => { | ||||||
|  |     loading.value = true | ||||||
|  |     try { | ||||||
|  |     } catch (error) {} | ||||||
|  |     loading.value = false | ||||||
|  | } | ||||||
| const baseInfo = ref([ | const baseInfo = ref([ | ||||||
|     { |     { | ||||||
|         title: '线索基本信息', |         title: '线索基本信息', | ||||||
|  |  | ||||||
|  | @ -14,16 +14,16 @@ | ||||||
| import searchForm from './modules/search-form.vue' | import searchForm from './modules/search-form.vue' | ||||||
| import clueList from './modules/clue-list.vue' | import clueList from './modules/clue-list.vue' | ||||||
| import clueDetail from './modules/clue-detail.vue' | import clueDetail from './modules/clue-detail.vue' | ||||||
| import { postLists } from '@/api/org/post' |  | ||||||
| import { usePaging } from '@/hooks/usePaging' | import { usePaging } from '@/hooks/usePaging' | ||||||
|  | import { clueLists } from '@/api/clue' | ||||||
| 
 | 
 | ||||||
| const queryParams = reactive({ | const queryParams = reactive({ | ||||||
|     name: '', |     likeWork: '', | ||||||
|     conversionStatus: '' |     situation: '' | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| const { pager, getLists, resetPage, resetParams } = usePaging({ | const { pager, getLists, resetPage, resetParams } = usePaging({ | ||||||
|     fetchFun: postLists, |     fetchFun: clueLists, | ||||||
|     params: queryParams |     params: queryParams | ||||||
| }) | }) | ||||||
| getLists() | getLists() | ||||||
|  |  | ||||||
|  | @ -1,6 +1,12 @@ | ||||||
| <template> | <template> | ||||||
|     <el-card shadow="never" class="!border-none mt-4"> |     <el-card shadow="never" class="!border-none mt-4"> | ||||||
|         <ProTable ref="proTableRef" :columns="columns" :tableData="tableData" :loading="loading" :maxHeight="530"> |         <ProTable ref="proTableRef" :columns="columns" :tableData="tableData" :loading="loading" :maxHeight="530"> | ||||||
|  |             <template #listSource="{ row }"> | ||||||
|  |                 <span>{{ parseClueSource(row.listSource) }}</span> | ||||||
|  |             </template> | ||||||
|  |             <template #situation="{ row }"> | ||||||
|  |                 <span>{{ parseConversion(row.situation) }}</span> | ||||||
|  |             </template> | ||||||
|             <template #operation="{ row }"> |             <template #operation="{ row }"> | ||||||
|                 <slot name="operation" :row="row" /> |                 <slot name="operation" :row="row" /> | ||||||
|             </template> |             </template> | ||||||
|  | @ -9,6 +15,8 @@ | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||||
|  | import { converStatusEnum, conversionMap } from '@/enums' | ||||||
|  | 
 | ||||||
| defineProps({ | defineProps({ | ||||||
|     loading: { |     loading: { | ||||||
|         type: Boolean, |         type: Boolean, | ||||||
|  | @ -21,14 +29,20 @@ defineProps({ | ||||||
| }) | }) | ||||||
| const proTableRef = ref() | const proTableRef = ref() | ||||||
| const columns = reactive([ | const columns = reactive([ | ||||||
|     { prop: 'accountName', label: '学生名字', width: 180 }, |     { prop: 'studentName', label: '学生名字', width: 180 }, | ||||||
|     { prop: 'mobile', label: '联系电话', width: 180 }, |     { prop: 'phone', label: '联系电话', width: 180 }, | ||||||
|     { prop: 'organization', label: '电销老师', width: 180 }, |     { prop: 'telemarketingTeacherName', label: '电销老师', width: 180 }, | ||||||
|     { prop: 'position', label: '转化老师', width: 180 }, |     { prop: 'recruitTeacherName', label: '转化老师', width: 180 }, | ||||||
|     { prop: 'position', label: '名单来源', width: 180 }, |     { prop: 'listSource', label: '名单来源', width: 180 }, | ||||||
|     { prop: 'position', label: '转化情况', width: 180 }, |     { prop: 'situation', label: '转化情况', width: 180 }, | ||||||
|     { prop: 'accountStatus', label: '创建人', width: 180 }, |  | ||||||
|     { prop: 'operation', label: '操作', fixed: 'right', width: 250 } |     { prop: 'operation', label: '操作', fixed: 'right', width: 250 } | ||||||
| ]) | ]) | ||||||
|  | const clueSource = shallowRef([{ label: '线下名单', value: 0 }]) | ||||||
|  | const parseClueSource = (value: number) => { | ||||||
|  |     const item = clueSource.value.find((item: any) => item.value === value) | ||||||
|  |     return item?.label || '' | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | const parseConversion = computed(() => (value: converStatusEnum) => conversionMap[value]) | ||||||
| </script> | </script> | ||||||
| <style scoped></style> | <style scoped></style> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue