2024-01-13 18:46:39 +08:00
|
|
|
<template>
|
|
|
|
<div class="tit">项目跟进</div>
|
|
|
|
<div>
|
|
|
|
<el-table :data="tableData1" stripe style="width: 100%">
|
|
|
|
<el-table-column label="主题" prop='theme' width="180" />
|
|
|
|
<el-table-column label="日期" prop='follow_date' width="180" />
|
|
|
|
<el-table-column label="方案内容" prop='solution_content' />
|
|
|
|
<el-table-column label="类型" prop='follow_type_text' />
|
|
|
|
<el-table-column label="执行人" prop='executor' />
|
|
|
|
<el-table-column label="阶段" prop='follow_stage_text' />
|
|
|
|
<el-table-column label="状态" prop='follow_status_text' />
|
|
|
|
<el-table-column label="项目把握度" prop='project_assurance_text' />
|
|
|
|
</el-table>
|
|
|
|
</div>
|
2024-01-15 00:51:03 +08:00
|
|
|
<div style="margin: 20px 0;">
|
2024-01-13 18:46:39 +08:00
|
|
|
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size"
|
|
|
|
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
|
2024-01-15 00:51:03 +08:00
|
|
|
@current-change="handleCurrentChange1" />
|
2024-01-13 18:46:39 +08:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="tit">客户需求</div>
|
|
|
|
<div>
|
|
|
|
<el-table :data="tableData2" stripe style="width: 100%">
|
|
|
|
<el-table-column label="需求主题" prop='theme' width="180" />
|
|
|
|
<el-table-column label="重要程度" prop='importance_text' width="180" />
|
|
|
|
<el-table-column label="记录时间" prop='recording_time' />
|
|
|
|
<el-table-column label="需求内容" prop='demand_content' />
|
|
|
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
|
|
|
|
<template #default="{ row }">
|
|
|
|
<div v-if="row.annex && row.annex.length > 0">
|
|
|
|
<div v-for="(item, i) in row.annex " :key='i'>
|
|
|
|
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div v-else>
|
|
|
|
暂无文件
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
|
|
</div>
|
|
|
|
<div style="margin: 20px 0;">
|
|
|
|
<el-pagination v-model:current-page="pager2.page_no" v-model:page-size="pager2.page_size"
|
|
|
|
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total1"
|
|
|
|
@size-change="handleSizeChange2" @current-change="handleCurrentChange2" />
|
|
|
|
</div>
|
|
|
|
|
2024-01-15 00:51:03 +08:00
|
|
|
<div class="tit">解决方案</div>
|
|
|
|
<div>
|
2024-01-13 18:46:39 +08:00
|
|
|
<el-table :data="tableData3" stripe style="width: 100%">
|
|
|
|
<el-table-column label="解决方案主题" prop='customer_demand_name' width="180" />
|
|
|
|
<el-table-column label="提交时间" prop='submission_time' width="180" />
|
|
|
|
<el-table-column label="方案内容" prop='solution_content' />
|
|
|
|
<el-table-column label="客户反馈" prop='customer_feedback' />
|
|
|
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
|
|
|
|
<template #default="{ row }">
|
|
|
|
<div v-if="row.annex && row.annex.length > 0">
|
|
|
|
<div v-for="(item, i) in row.annex " :key='i'>
|
|
|
|
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div v-else>
|
|
|
|
暂无文件
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
2024-01-15 00:51:03 +08:00
|
|
|
</div>
|
|
|
|
<div style="margin: 20px 0;">
|
2024-01-13 18:46:39 +08:00
|
|
|
<el-pagination v-model:current-page="pager3.page_no" v-model:page-size="pager3.page_size"
|
|
|
|
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total2"
|
|
|
|
@size-change="handleSizeChange3" @current-change="handleCurrentChange3" />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="tit">项目概算</div>
|
|
|
|
<div>
|
|
|
|
<el-table :data="tableData4" stripe style="width: 100%">
|
|
|
|
<el-table-column label="概算来源" prop='estimate_source_text' width="180" />
|
|
|
|
<el-table-column label="制单人" prop='create_user' width="180" />
|
|
|
|
<el-table-column label="报价日期" prop='quotation_date' />
|
|
|
|
<el-table-column label="技术人员" prop='technician_name' width="180" />
|
|
|
|
<el-table-column label="概算金额(万元)" prop='estimate_amount' width="180" />
|
|
|
|
<el-table-column label="要求" prop='ask' />
|
|
|
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
|
|
|
|
<template #default="{ row }">
|
|
|
|
<div v-if="row.annex && row.annex.length > 0">
|
|
|
|
<div v-for="(item, i) in row.annex " :key='i'>
|
|
|
|
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div v-else>
|
|
|
|
暂无文件
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
|
|
</div>
|
|
|
|
<div style="margin: 20px 0;">
|
|
|
|
<el-pagination v-model:current-page="pager4.page_no" v-model:page-size="pager4.page_size"
|
|
|
|
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total3"
|
|
|
|
@size-change="handleSizeChange4" @current-change="handleCurrentChange4" />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="tit">竞争对手</div>
|
|
|
|
<div>
|
|
|
|
<el-table :data="tableData5" stripe style="width: 100%">
|
|
|
|
<el-table-column label="竞争对手名称" prop='competitor_name' width="180" />
|
|
|
|
<el-table-column label="竞争对手联系人" prop='competitor_contacts' width="180" />
|
|
|
|
<el-table-column label="联系人电话" prop='competitor_contacts_phone' />
|
|
|
|
<el-table-column label="竞争能力" prop='competitive_power' />
|
|
|
|
<el-table-column label="竞争对手优势" prop='competitor_advantages' />
|
|
|
|
<el-table-column label="竞争对手劣势" prop='competitor_disadvantages' />
|
|
|
|
<el-table-column label="备注" prop='remark' />
|
|
|
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
|
|
|
|
<template #default="{ row }">
|
|
|
|
<div v-if="row.annex && row.annex.length > 0">
|
|
|
|
<div v-for="(item, i) in row.annex " :key='i'>
|
|
|
|
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div v-else>
|
|
|
|
暂无文件
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
|
|
</div>
|
|
|
|
<div style="margin: 20px 0;">
|
|
|
|
<el-pagination v-model:current-page="pager5.page_no" v-model:page-size="pager5.page_size"
|
|
|
|
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total4"
|
|
|
|
@size-change="handleSizeChange5" @current-change="handleCurrentChange5" />
|
2024-01-15 00:51:03 +08:00
|
|
|
</div>
|
2024-01-13 18:46:39 +08:00
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
|
|
|
import { ref, reactive, defineProps } from "vue"
|
|
|
|
import { apiProjectFollowUpLists } from '@/api/project_follow_up'
|
|
|
|
import { apiCustomerDemandLists } from '@/api/customer_demand'
|
|
|
|
import { apiCustomerDemandSolutionLists } from '@/api/customer_demand_solution'
|
|
|
|
import { apiProjectEstimateLists } from '@/api/project_estimate'
|
|
|
|
import { apiCompetitorLists } from '@/api/competitor'
|
|
|
|
|
|
|
|
|
2024-01-15 00:51:03 +08:00
|
|
|
const props = defineProps({
|
|
|
|
project_id: Number
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-13 18:46:39 +08:00
|
|
|
const tableData1 = ref([])
|
|
|
|
const tableData2 = ref([])
|
|
|
|
const tableData3 = ref([])
|
|
|
|
const tableData4 = ref([])
|
|
|
|
const tableData5 = ref([])
|
|
|
|
|
2024-01-15 00:51:03 +08:00
|
|
|
const total = ref(0)
|
|
|
|
const total1 = ref(0)
|
|
|
|
const total2 = ref(0)
|
|
|
|
const total3 = ref(0)
|
|
|
|
const total4 = ref(0)
|
|
|
|
|
2024-01-13 18:46:39 +08:00
|
|
|
|
|
|
|
const pager1 = reactive({
|
|
|
|
page_size: 10,
|
|
|
|
page_no: 1,
|
2024-01-15 00:51:03 +08:00
|
|
|
project_id: props.project_id
|
|
|
|
})
|
|
|
|
const pager2 = reactive({
|
|
|
|
page_size: 10,
|
|
|
|
page_no: 1,
|
|
|
|
project_id: props.project_id
|
|
|
|
})
|
|
|
|
const pager3 = reactive({
|
|
|
|
page_size: 10,
|
|
|
|
page_no: 1,
|
|
|
|
project_id: props.project_id
|
|
|
|
})
|
|
|
|
const pager4 = reactive({
|
|
|
|
page_size: 10,
|
|
|
|
page_no: 1,
|
|
|
|
project_id: props.project_id
|
2024-01-13 18:46:39 +08:00
|
|
|
})
|
|
|
|
const pager5 = reactive({
|
|
|
|
page_size: 10,
|
|
|
|
page_no: 1,
|
2024-01-15 00:51:03 +08:00
|
|
|
project_id: props.project_id
|
2024-01-13 18:46:39 +08:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
// //获取客户跟进进路
|
|
|
|
const followUpLists = () => {
|
|
|
|
apiProjectFollowUpLists(pager5).then((res) => {
|
|
|
|
tableData1.value = res.lists
|
|
|
|
total.value = res.count
|
|
|
|
|
|
|
|
})
|
|
|
|
}
|
|
|
|
//获取客户需求列表
|
|
|
|
const demandList = () => {
|
|
|
|
apiCustomerDemandLists(pager5).then((res) => {
|
|
|
|
tableData2.value = res.lists
|
|
|
|
total1.value = res.count
|
|
|
|
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2024-01-15 00:51:03 +08:00
|
|
|
// const handleSizeChange1 = (val: number) => {
|
|
|
|
// // pager1.page_size = val
|
|
|
|
// // followUpLists()
|
|
|
|
// }
|
|
|
|
|
2024-01-13 18:46:39 +08:00
|
|
|
|
|
|
|
// 解决方案列表
|
2024-01-15 00:51:03 +08:00
|
|
|
const solutionLists = () => {
|
|
|
|
apiCustomerDemandSolutionLists(pager5).then((res) => {
|
|
|
|
tableData3.value = res.lists
|
|
|
|
total2.value = res.count
|
2024-01-13 18:46:39 +08:00
|
|
|
|
2024-01-15 00:51:03 +08:00
|
|
|
})
|
|
|
|
}
|
2024-01-13 18:46:39 +08:00
|
|
|
|
2024-01-15 00:51:03 +08:00
|
|
|
const estimateLists = () => {
|
|
|
|
apiProjectEstimateLists(pager4).then((res) => {
|
|
|
|
tableData4.value = res.lists
|
|
|
|
total3.value = res.count
|
|
|
|
})
|
|
|
|
}
|
2024-01-13 18:46:39 +08:00
|
|
|
|
2024-01-15 00:51:03 +08:00
|
|
|
const competitorLists = () => {
|
|
|
|
apiCompetitorLists(pager5).then((res) => {
|
|
|
|
tableData5.value = res.lists
|
|
|
|
total4.value = res.count
|
|
|
|
})
|
|
|
|
}
|
2024-01-13 18:46:39 +08:00
|
|
|
|
|
|
|
// const handleSizeChange2 = (val: number) => {
|
|
|
|
// pager2.page_size = val
|
|
|
|
// demandList()
|
|
|
|
// }
|
|
|
|
// const handleSizeChange3 = (val: number) => {
|
|
|
|
// pager3.page_size = val
|
|
|
|
// solutionLists()
|
|
|
|
// }
|
|
|
|
// const handleSizeChange4 = (val: number) => {
|
|
|
|
// pager4.page_size = val
|
|
|
|
// estimateLists()
|
|
|
|
// }
|
|
|
|
// const handleSizeChange5 = (val: number) => {
|
|
|
|
// pager5.page_size = val
|
|
|
|
// competitorLists()
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
followUpLists()
|
2024-01-15 00:51:03 +08:00
|
|
|
demandList()
|
|
|
|
competitorLists()
|
|
|
|
solutionLists()
|
|
|
|
estimateLists()
|
|
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
|
|
.tit {
|
|
|
|
font-size: 1.2em;
|
|
|
|
margin-bottom: 10px;
|
|
|
|
}
|
|
|
|
</style>
|