parent
185163d326
commit
2aabff2e90
@ -0,0 +1,134 @@ |
||||
<template> |
||||
<div> |
||||
<el-dialog :title="title" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="800px" |
||||
@close="closeDialog" style="min-height: 400px;"> |
||||
<el-tabs v-model="activeTab"> |
||||
<el-tab-pane label="邀约信息" name="first"> |
||||
<el-table v-loading="loading" :data="invitationRecords" border> |
||||
<el-table-column label="操作时间" prop="createTime" width="140" /> |
||||
<el-table-column label="邀约场地" prop="placeName" min-width="200" /> |
||||
<el-table-column label="约定时间" prop="invitationTime" width="120" /> |
||||
<el-table-column label="备注" prop="remark" min-width="200" /> |
||||
</el-table> |
||||
</el-tab-pane> |
||||
<el-tab-pane label="分发信息" name="second"> |
||||
<el-table v-loading="loading" :data="distributeRecords" border> |
||||
<el-table-column label="操作时间" prop="distributeTime" width="140" /> |
||||
<el-table-column label="分发场地" prop="placeName" min-width="200" /> |
||||
<!-- <el-table-column label="接待人" prop="invitationTime" min-width="120" /> --> |
||||
<el-table-column label="接待人" prop="coachName" min-width="120" /> |
||||
<el-table-column label="操作" fixed="right" min-width="100"> |
||||
<template slot-scope="scope"> |
||||
<el-button size="mini" v-if="scope.$index == 0 && isEdit" type="text" icon="el-icon-edit" |
||||
@click="handleEdit(scope.row)">修改</el-button> |
||||
<el-button size="mini" type="text" |
||||
@click="handleFeedback(scope.row)">反馈信息</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</el-tab-pane> |
||||
</el-tabs> |
||||
|
||||
<span slot="footer" class="dialog-footer" > |
||||
<el-button v-jclick type="primary" :disabled="!isAdd" @click="handleAdd()">新增</el-button> |
||||
<el-button plain @click="(visible = false)">取消</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
<DistributeFormDialog ref="DistributeFormDialog" @refreshDataList="getFeedbackOrder" /> |
||||
<FeedbackDialog ref="FeedbackDialog" /> |
||||
|
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { listFeedbackOrder } from '@/api/zs/feedbackOrder'; |
||||
import { getInvitationByClue } from '@/api/zs/invitation'; |
||||
import DistributeFormDialog from './DistributeFormDialog.vue'; |
||||
import FeedbackDialog from './FeedbackDialog.vue'; |
||||
|
||||
export default { |
||||
name: 'DistributeDialog', |
||||
components: { |
||||
DistributeFormDialog, FeedbackDialog |
||||
}, |
||||
data() { |
||||
return { |
||||
visible: false, |
||||
canSubmit: true, |
||||
loading: false, |
||||
placeOptions: [], |
||||
coachOptions: [], |
||||
feedbackDetail: [], |
||||
activeTab: 'first', |
||||
invitationRecords: [], |
||||
clueInfo: undefined, |
||||
distributeRecords: [], |
||||
isAdd: false, |
||||
isEdit: true, |
||||
title: '分发' |
||||
}; |
||||
}, |
||||
methods: { |
||||
init(info = undefined) { |
||||
this.activeTab = 'first'; |
||||
// this.getPlaces(); |
||||
this.visible = true; |
||||
this.isAdd = false; |
||||
this.isEdit = true; |
||||
this.title = '邀约'; |
||||
this.$nextTick(() => { |
||||
if (info) { |
||||
this.clueInfo = info; |
||||
if (info.feedbackStatus > 2) { |
||||
this.isEdit = false; |
||||
} |
||||
if (info.feedbackStatus == 1 || info.feedbackStatus == 5 || info.feedbackStatus == 6) { |
||||
this.isAdd = true; |
||||
} |
||||
// 查询线索的邀约情况 |
||||
this.getInvitationByClue(); |
||||
// 查询该线索的分发a情况 |
||||
this.getFeedbackOrder(); |
||||
this.title = this.title + '【' + (info.name == null ? '' : info.name) + ' ' + info.phone + '】'; |
||||
} |
||||
}); |
||||
}, |
||||
closeDialog() { |
||||
this.$emit('update:dialog.batchUpdateVisible', false); |
||||
}, |
||||
getInvitationByClue() { |
||||
getInvitationByClue({ clueId: this.clueInfo.clueId }).then(resp => { |
||||
if (resp.code == 200 && resp.data) { |
||||
this.invitationRecords = resp.data; |
||||
} |
||||
}); |
||||
}, |
||||
getFeedbackOrder() { |
||||
listFeedbackOrder({ clueId: this.clueInfo.clueId }).then(resp => { |
||||
if (resp.code == 200 && resp.rows && resp.rows.length > 0) { |
||||
this.distributeRecords = resp.rows.filter(item => item.feedbackStatus != 0); |
||||
} |
||||
}); |
||||
}, |
||||
handleFeedback(item) { |
||||
this.$nextTick(() => { |
||||
this.$refs.FeedbackDialog.init(item.orderId); |
||||
}); |
||||
}, |
||||
handleAdd() { |
||||
const item = { |
||||
placeId: undefined, |
||||
clueId: this.clueInfo.clueId, |
||||
coachId: undefined, |
||||
copyUserList: [] |
||||
}; |
||||
this.handleEdit(item); |
||||
}, |
||||
handleEdit(item) { |
||||
this.$nextTick(() => { |
||||
this.$refs.DistributeFormDialog.init(item); |
||||
}); |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
@ -0,0 +1,53 @@ |
||||
<template> |
||||
<el-dialog title="反馈" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="800px" |
||||
@close="closeDialog" style="min-height: 400px;"> |
||||
<el-timeline :reverse="true"> |
||||
<el-timeline-item v-for="(item, index) in feedbackDetail" :key="index" :timestamp="item.updateTime" placement="top"> |
||||
<div v-if="item.feedbackType == 1"> |
||||
<div>是否联系:<span>{{ item.isContact ? '已联系' : '未联系' }}</span></div> |
||||
<div>到场时间:<span>{{ item.arrivalTime }}</span></div> |
||||
<div>备注:<span>{{ item.remark }}</span></div> |
||||
</div> |
||||
<div v-if="item.feedbackType == 2"> |
||||
<div>到场状态:<span v-if="item.arrivalStatus == 1">未到场</span> |
||||
<span v-if="item.arrivalStatus == 2">到场未成交</span> |
||||
<span v-if="item.arrivalStatus == 3">到场已成交</span> |
||||
</div> |
||||
<div> 备注:<span>{{ item.remark }}</span></div> |
||||
</div> |
||||
</el-timeline-item> |
||||
</el-timeline> |
||||
</el-dialog> |
||||
</template> |
||||
<script> |
||||
import { listFeedbackDetail } from '@/api/zs/feedbackDetail'; |
||||
|
||||
export default { |
||||
name: 'FeedbackDialog', |
||||
data() { |
||||
return { |
||||
visible: false, |
||||
feedbackDetail: [], |
||||
}; |
||||
}, |
||||
methods: { |
||||
init(info = undefined) { |
||||
this.visible = true; |
||||
this.$nextTick(() => { |
||||
this.getFeedbackDetail(info); |
||||
}); |
||||
}, |
||||
closeDialog() { |
||||
this.$emit('update:dialog.batchUpdateVisible', false); |
||||
}, |
||||
getFeedbackDetail(orderId) { |
||||
listFeedbackDetail({ orderId: orderId }).then(resp => { |
||||
this.feedbackDetail = resp.rows; |
||||
}); |
||||
} |
||||
|
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
|
@ -0,0 +1,117 @@ |
||||
<template> |
||||
<div> |
||||
<el-dialog :title="title" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="800px" |
||||
@close="closeDialog"> |
||||
<div> |
||||
<el-table v-loading="loading" :data="invitationRecords" border> |
||||
<el-table-column label="操作时间" prop="createTime" width="140" /> |
||||
<el-table-column label="邀约场地" prop="placeName" width="200" /> |
||||
<el-table-column label="约定时间" prop="invitationTime" width="120" /> |
||||
<el-table-column label="备注" prop="remark" width="200" /> |
||||
<el-table-column label="操作" fixed="right" width="80"> |
||||
<template slot-scope="scope"> |
||||
<el-button size="mini" v-if="scope.$index == 0 && isEdit" type="text" icon="el-icon-edit" |
||||
@click="handleEdit(scope.row)">修改</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<span slot="footer" class="dialog-footer"> |
||||
<el-button v-jclick type="primary" :disabled="!isAdd" @click="handleAdd()">新增</el-button> |
||||
<el-button plain @click="closeDialog">关闭</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
<InvitationFormDialog ref="InvitationFormDialog" @refreshDataList="getInvitationRecord" /> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { getInvitationByClue } from '@/api/zs/invitation'; |
||||
import InvitationFormDialog from './InvitationFormDialog.vue'; |
||||
|
||||
export default { |
||||
name: 'InvitationDialog', |
||||
components: { |
||||
InvitationFormDialog |
||||
}, |
||||
data() { |
||||
return { |
||||
visible: false, |
||||
canSubmit: true, |
||||
placeOptions: [], |
||||
isEdit: true, |
||||
invitationRecords: [], |
||||
clueId: undefined, |
||||
loading: false, |
||||
title: undefined, |
||||
clueInfo: undefined, |
||||
isAdd: false |
||||
}; |
||||
}, |
||||
methods: { |
||||
init(info = undefined) { |
||||
this.visible = true; |
||||
this.title = "邀约"; |
||||
this.isAdd = false; |
||||
this.isEdit = true; |
||||
this.clueInfo = undefined; |
||||
this.$nextTick(() => { |
||||
if (info) { |
||||
this.clueInfo = info; |
||||
if (info.feedbackStatus >= 2) { |
||||
this.isEdit = false; |
||||
} |
||||
if (info.feedbackStatus == 0 || info.feedbackStatus == 5 || info.feedbackStatus == 6) { |
||||
this.isAdd = true; |
||||
} |
||||
if (info.clueId) { |
||||
this.clueId = info.clueId; |
||||
this.getInvitationRecord(); |
||||
} |
||||
this.title = this.title + '【' + (info.name == null ? '' : info.name) + ' ' + info.phone + '】'; |
||||
} |
||||
}); |
||||
}, |
||||
closeDialog() { |
||||
this.visible = false; |
||||
// this.$emit('update:dialog.batchUpdateVisible', false); |
||||
this.$emit('refreshDataList'); |
||||
}, |
||||
getInvitationRecord() { |
||||
getInvitationByClue({ clueId: this.clueId }).then(resp => { |
||||
if (resp.data) { |
||||
this.invitationRecords = resp.data; |
||||
if (this.invitationRecords && this.invitationRecords.length > 0) { |
||||
this.dialogForm = this.invitationRecords[0]; |
||||
} |
||||
} |
||||
}); |
||||
}, |
||||
handleAdd() { |
||||
const invitation = { |
||||
invitationId: undefined, |
||||
clueId: this.clueInfo.clueId, |
||||
name: this.clueInfo.name, |
||||
phone: this.clueInfo.phone, |
||||
address: this.clueInfo.address, |
||||
placeId: undefined, |
||||
invitationTime: undefined, |
||||
remark: undefined |
||||
}; |
||||
this.handleEdit(invitation); |
||||
}, |
||||
handleEdit(item) { |
||||
this.$nextTick(() => { |
||||
this.$refs.InvitationFormDialog.init(item) |
||||
}); |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped> |
||||
.el-divider--vertical { |
||||
height: 15em !important; |
||||
} |
||||
</style> |
||||
|
||||
|
Loading…
Reference in new issue