|
@@ -44,7 +44,8 @@
|
|
|
<FollowCard v-if="finalRenderData?.length > 0" style="margin-top: 16px;" :cardList="finalRenderData">
|
|
<FollowCard v-if="finalRenderData?.length > 0" style="margin-top: 16px;" :cardList="finalRenderData">
|
|
|
<template #operation="{row}">
|
|
<template #operation="{row}">
|
|
|
<div style="" class="table_row_option">
|
|
<div style="" class="table_row_option">
|
|
|
- <span class="button_delete" @click="OpenCancelAppointmentDialog(row)">取消预约</span>
|
|
|
|
|
|
|
+ <!-- 没有取消的待办,显示取消按钮 -->
|
|
|
|
|
+ <span v-if="row.orderType === 0 && [0,1].includes(row.orderStatus)" class="button_delete" @click="OpenCancelAppointmentDialog(row)">取消预约</span>
|
|
|
<span class="option_button_editor" @click="OpenFollowlFormDialog(row,'currentFollowRecord')">详情</span>
|
|
<span class="option_button_editor" @click="OpenFollowlFormDialog(row,'currentFollowRecord')">详情</span>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
@@ -142,7 +143,11 @@
|
|
|
title="查看详情"
|
|
title="查看详情"
|
|
|
:previewForm="true"
|
|
:previewForm="true"
|
|
|
v-model:visible="followVisible"
|
|
v-model:visible="followVisible"
|
|
|
- :defaultFormData="followDefaultFormData">
|
|
|
|
|
|
|
+ v-model:submitLoading="followDetailLoading"
|
|
|
|
|
+ :defaultFormData="followDefaultFormData"
|
|
|
|
|
+ @confirm="HandleFollowDetailConfirm"
|
|
|
|
|
+ @close="CloseFollowlFormDialog"
|
|
|
|
|
+ >
|
|
|
</FollowFormDialog>
|
|
</FollowFormDialog>
|
|
|
|
|
|
|
|
<!-- 查看历史跟进 -->
|
|
<!-- 查看历史跟进 -->
|
|
@@ -198,6 +203,7 @@
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
import { ref,computed, onMounted,watch } from 'vue';
|
|
import { ref,computed, onMounted,watch } from 'vue';
|
|
|
import {useRoute} from 'vue-router'
|
|
import {useRoute} from 'vue-router'
|
|
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
|
|
|
|
|
import SearchBlock from '@/baseComponents/SearchBlock.vue';
|
|
import SearchBlock from '@/baseComponents/SearchBlock.vue';
|
|
|
import { ongoingFollowSearchList,historyFollowSearchList } from './searchBlock';
|
|
import { ongoingFollowSearchList,historyFollowSearchList } from './searchBlock';
|
|
@@ -209,6 +215,8 @@ import FormDialog from '@/baseComponents/FormDialog.vue';
|
|
|
import { cancelAppointmentFormItemList } from './formDialog';
|
|
import { cancelAppointmentFormItemList } from './formDialog';
|
|
|
|
|
|
|
|
import {getOverviewDetailApi,cancelAppointmentApi,getHistoryFollowListApi} from '@/api/myCustomer'
|
|
import {getOverviewDetailApi,cancelAppointmentApi,getHistoryFollowListApi} from '@/api/myCustomer'
|
|
|
|
|
+import {closeToDoTaskApi} from '@/api/appointmentAndTodo'
|
|
|
|
|
+
|
|
|
import {
|
|
import {
|
|
|
getTodayRange,
|
|
getTodayRange,
|
|
|
getYesterdayRange,
|
|
getYesterdayRange,
|
|
@@ -218,6 +226,9 @@ import {
|
|
|
formatTime
|
|
formatTime
|
|
|
} from '@/utils/timeRangeGet'
|
|
} from '@/utils/timeRangeGet'
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
interface ProductFollowRecord {
|
|
interface ProductFollowRecord {
|
|
|
productId: string; // 产品ID
|
|
productId: string; // 产品ID
|
|
|
productName: string; // 产品名称
|
|
productName: string; // 产品名称
|
|
@@ -358,7 +369,8 @@ const GetOverviewDetail = async ()=>{
|
|
|
`联系人:${item.customerPersonName}`,
|
|
`联系人:${item.customerPersonName}`,
|
|
|
`职务:${item.positionName}`
|
|
`职务:${item.positionName}`
|
|
|
],
|
|
],
|
|
|
- taskType:[0,1].includes(item.orderType) ? (item.orderType === 0 ? '预约' : '待办') : '',
|
|
|
|
|
|
|
+ // orderStatus 预约/待办状态,0-待开始,1-已结束,2-已取消(预约) null-已关闭(待办)
|
|
|
|
|
+ taskType:[0,1].includes(item.orderType) && [0,1].includes(item.orderStatus) ? (item.orderType === 0 ? '预约' : '待办') : '',
|
|
|
bottomDesc:`跟进内容:${item.followContent}`,
|
|
bottomDesc:`跟进内容:${item.followContent}`,
|
|
|
...item,
|
|
...item,
|
|
|
}
|
|
}
|
|
@@ -459,25 +471,63 @@ const historyFollowData = ref({
|
|
|
*/
|
|
*/
|
|
|
const followVisible = ref(false)
|
|
const followVisible = ref(false)
|
|
|
const followDefaultFormData = ref({})
|
|
const followDefaultFormData = ref({})
|
|
|
|
|
+const currentFollowRow = ref({}) //当前查看的跟进数据
|
|
|
|
|
+const followDetailLoading = ref(false)
|
|
|
const OpenFollowlFormDialog = (row,type)=>{
|
|
const OpenFollowlFormDialog = (row,type)=>{
|
|
|
|
|
+ currentFollowRow.value = row
|
|
|
console.log('当前行信息',row)
|
|
console.log('当前行信息',row)
|
|
|
followVisible.value = true
|
|
followVisible.value = true
|
|
|
followDefaultFormData.value = {
|
|
followDefaultFormData.value = {
|
|
|
|
|
+ id:row.id,
|
|
|
school:row.customerName,
|
|
school:row.customerName,
|
|
|
product:row.productName,
|
|
product:row.productName,
|
|
|
status:row.followName,
|
|
status:row.followName,
|
|
|
contact:row.customerPersonName,
|
|
contact:row.customerPersonName,
|
|
|
position:row.positionName,
|
|
position:row.positionName,
|
|
|
content:row.followContent,
|
|
content:row.followContent,
|
|
|
- appointmentType:[0,1].includes(row.orderType),
|
|
|
|
|
appointmentTime:row.orderDatetime,
|
|
appointmentTime:row.orderDatetime,
|
|
|
todoTime:row.orderDatetime,
|
|
todoTime:row.orderDatetime,
|
|
|
- extraAppointmentType:row.orderType, //查看时候的附加值
|
|
|
|
|
|
|
+ appointmentType:[0,1].includes(row.orderType) && [0,1].includes(row.orderStatus), // extraAppointmentType 有值(为待办1)的前提下,—— 当前值为false 表示 待办已手动关闭
|
|
|
|
|
+ extraAppointmentType:row.orderType, //查看时候—— 附加的项
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const CloseFollowlFormDialog = ()=>{
|
|
|
|
|
+ followVisible.value = false
|
|
|
|
|
+ followDefaultFormData.value = {}
|
|
|
|
|
+ followDetailLoading.value = false
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const HandleFollowDetailConfirm = async (params)=>{
|
|
|
|
|
+ const {formData} = params
|
|
|
|
|
+ if([1].includes(currentFollowRow.value.orderType)){
|
|
|
|
|
+ // 待办
|
|
|
|
|
+ // orderStatus 0 待开始 1 已结束 null 已关闭 —— 已结束的待办是否可以关闭 待确认
|
|
|
|
|
+ if([0,1].includes(currentFollowRow.value.orderStatus)){
|
|
|
|
|
+ followDetailLoading.value = true
|
|
|
|
|
+ // 关闭待办
|
|
|
|
|
+ let res = undefined
|
|
|
|
|
+ try{
|
|
|
|
|
+ res = await closeToDoTaskApi(formData.id)
|
|
|
|
|
+ }catch{}
|
|
|
|
|
+ if(res?.code == 200){
|
|
|
|
|
+ ElMessage.success('关闭成功')
|
|
|
|
|
+ CloseFollowlFormDialog()
|
|
|
|
|
+ // 刷新预约待办数据
|
|
|
|
|
+ await GetOverviewDetail()
|
|
|
|
|
+ }else{
|
|
|
|
|
+ followDetailLoading.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+ }else{
|
|
|
|
|
+ CloseFollowlFormDialog()
|
|
|
|
|
+ }
|
|
|
|
|
+ }else{
|
|
|
|
|
+ CloseFollowlFormDialog()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 5. 取消预约有关操作 —— 待完善
|
|
|
|
|
|
|
+ * 5. 取消预约有关操作
|
|
|
*/
|
|
*/
|
|
|
const cancelVisible = ref(false)
|
|
const cancelVisible = ref(false)
|
|
|
const cancelDefaultFormData = ref({})
|
|
const cancelDefaultFormData = ref({})
|
|
@@ -491,7 +541,7 @@ const CloseCancelAppointmentDialog = ()=>{
|
|
|
cancelDefaultFormData.value = {}
|
|
cancelDefaultFormData.value = {}
|
|
|
cancelLoading.value = false
|
|
cancelLoading.value = false
|
|
|
}
|
|
}
|
|
|
-// 取消预约确认 —— 待完善
|
|
|
|
|
|
|
+// 取消预约确认
|
|
|
const HandleCancelAppointmentConfirm = async (params)=>{
|
|
const HandleCancelAppointmentConfirm = async (params)=>{
|
|
|
cancelLoading.value = true
|
|
cancelLoading.value = true
|
|
|
const {formData} = params
|
|
const {formData} = params
|
|
@@ -510,7 +560,6 @@ const HandleCancelAppointmentConfirm = async (params)=>{
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
/** 6. 查看历史跟进 弹窗有关数据 */
|
|
/** 6. 查看历史跟进 弹窗有关数据 */
|
|
|
const historyFollowVisible = ref(false)
|
|
const historyFollowVisible = ref(false)
|
|
|
const OpenHistoryFollowDialog = async (row)=>{
|
|
const OpenHistoryFollowDialog = async (row)=>{
|