| @@ -1,6 +1,5 @@ | |||
| <template > | |||
| <div class="box-center" style="cursor:pointer;"> | |||
| <div class="box-center" style="cursor: pointer"> | |||
| <!-- 头 --> | |||
| <div class="app-top"> | |||
| <div class="app-titel" style="margin-top: 15px"> | |||
| @@ -17,7 +16,7 @@ | |||
| </div> | |||
| </div> | |||
| <div> | |||
| <el-date-picker | |||
| <el-date-picker | |||
| v-model="customtime" | |||
| @change="confirmtime()" | |||
| type="daterange" | |||
| @@ -25,248 +24,279 @@ | |||
| :default-time="['00:00:00', '23:59:59']" | |||
| value-format="yyyy-MM-dd" | |||
| start-placeholder="开始日期" | |||
| end-placeholder="结束日期"> | |||
| end-placeholder="结束日期" | |||
| > | |||
| </el-date-picker> | |||
| </div> | |||
| </div> | |||
| <div class="app-titel" style="margin-top: 15px"> | |||
| <div class="label">客户名称:</div> | |||
| <div> | |||
| <el-input v-model="fromobj.name" placeholder="客户名称"></el-input> | |||
| <el-input v-model="fromobj.name" placeholder="客户名称"></el-input> | |||
| </div> | |||
| <div class="label">置业顾问:</div> | |||
| <div> | |||
| <el-input v-model="fromobj.agentName" placeholder="置业顾问"></el-input> | |||
| <el-input | |||
| v-model="fromobj.agentName" | |||
| placeholder="置业顾问" | |||
| ></el-input> | |||
| </div> | |||
| </div> | |||
| <div class="app-titel" style="margin-top: 15px"> | |||
| <div class="label">客户意向:</div> | |||
| <div > | |||
| <el-select v-model="fromobj.keywordIds" multiple filterable placeholder="请选择"> | |||
| <div> | |||
| <el-select | |||
| v-model="fromobj.keywordIds" | |||
| multiple | |||
| filterable | |||
| placeholder="请选择" | |||
| > | |||
| <el-option | |||
| v-for="item in options5" | |||
| :key="item.keywordsId" | |||
| :label="item.isInterval==0?item.name+'-'+item.endName+item.unit:item.name" | |||
| :value="item.keywordsId"> | |||
| :label=" | |||
| item.isInterval == 0 | |||
| ? item.name + '-' + item.endName + item.unit | |||
| : item.name | |||
| " | |||
| :value="item.keywordsId" | |||
| > | |||
| </el-option> | |||
| </el-select> | |||
| </div> | |||
| <div style="margin-left: 20px"> | |||
| <el-button @click="screening()" style="background: #2671e2; color: #ffffff" | |||
| <el-button | |||
| @click="screening()" | |||
| style="background: #2671e2; color: #ffffff" | |||
| >筛选</el-button | |||
| > | |||
| </div> | |||
| <div style="margin-left: 20px"> | |||
| <el-button @click="Screeningofempty()" type="text">清空筛选条件</el-button> | |||
| <el-button @click="Screeningofempty()" type="text" | |||
| >清空筛选条件</el-button | |||
| > | |||
| </div> | |||
| <div style="margin-left: auto; margin-right:20px;"> | |||
| <el-button icon="el-icon-download" v-if="fromobj.keywordIds.length==1&&sta_idx_download" @click="downLoad()">导出</el-button> | |||
| <div style="margin-left: auto; margin-right: 20px"> | |||
| <!-- --> | |||
| <el-button | |||
| icon="el-icon-download" | |||
| v-if="fromobj.keywordIds.length == 1 && sta_idx_download" | |||
| @click="downLoad()" | |||
| >洞察详情导出</el-button | |||
| > | |||
| <!-- --> | |||
| <el-button | |||
| icon="el-icon-download" | |||
| v-if="permissions['sta_idx_download_detail']" | |||
| @click="downLoads()" | |||
| >命中详情导出</el-button | |||
| > | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <!-- 表格 --> | |||
| <div class="cen-tab"> | |||
| <el-table | |||
| :data="tableData" | |||
| stripe | |||
| height="400" | |||
| style="width: 100%"> | |||
| <el-table-column | |||
| prop="staTime" | |||
| label="接待开始时间" | |||
| align="center" | |||
| > | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="agentName" | |||
| label="置业顾问" | |||
| align="center" | |||
| > | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="name" | |||
| label="客户姓名" | |||
| align="center"> | |||
| </el-table-column> | |||
| <el-table :data="tableData" stripe height="400" style="width: 100%"> | |||
| <el-table-column prop="staTime" label="接待开始时间" align="center"> | |||
| </el-table-column> | |||
| <el-table-column prop="agentName" label="置业顾问" align="center"> | |||
| </el-table-column> | |||
| <el-table-column prop="name" label="客户姓名" align="center"> | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="mm" | |||
| label="接待时长(分钟)" | |||
| align="center" | |||
| > | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="total" | |||
| label="画像语义词触达次数" | |||
| align="center" | |||
| > | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="fraction" | |||
| label="接访得分" | |||
| align="center"> | |||
| </el-table-column> | |||
| <!-- scope --> | |||
| <el-table-column label="操作" align="center"> | |||
| <template slot-scope="{ row }"> | |||
| <div style="color: #2671E2;" @click="Receivedetailsabout(row)">查看详情</div> | |||
| </template> | |||
| </el-table-column> | |||
| </el-table> | |||
| <div style="display: flex;justify-content:flex-end;margin-top: 10px;"> | |||
| <el-pagination | |||
| @size-change="handleSizeChange" | |||
| @current-change="handleCurrentChange" | |||
| :current-page="pageNum" | |||
| :page-sizes="[10, 30, 50]" | |||
| :page-size="pageSize" | |||
| layout="total, sizes, prev, pager, next, jumper" | |||
| :total="total"> | |||
| </el-pagination> | |||
| </div> | |||
| <el-table-column prop="mm" label="接待时长(分钟)" align="center"> | |||
| </el-table-column> | |||
| <el-table-column prop="total" label="画像语义词触达次数" align="center"> | |||
| </el-table-column> | |||
| <el-table-column prop="fraction" label="接访得分" align="center"> | |||
| </el-table-column> | |||
| <!-- scope --> | |||
| <el-table-column label="操作" align="center"> | |||
| <template slot-scope="{ row }"> | |||
| <div style="color: #2671e2" @click="Receivedetailsabout(row)"> | |||
| 查看详情 | |||
| </div> | |||
| </template> | |||
| </el-table-column> | |||
| </el-table> | |||
| <div style="display: flex; justify-content: flex-end; margin-top: 10px"> | |||
| <el-pagination | |||
| @size-change="handleSizeChange" | |||
| @current-change="handleCurrentChange" | |||
| :current-page="pageNum" | |||
| :page-sizes="[10, 30, 50]" | |||
| :page-size="pageSize" | |||
| layout="total, sizes, prev, pager, next, jumper" | |||
| :total="total" | |||
| > | |||
| </el-pagination> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import { mapGetters } from "vuex"; | |||
| import { exportMethodPost } from "@/util/util"; | |||
| export default { | |||
| data() { | |||
| return { | |||
| TimetoAhoose: 2, | |||
| customtime: [], | |||
| currentPage4:1, | |||
| currentPage4: 1, | |||
| value: "", | |||
| input: "", | |||
| tableData: [], | |||
| fromobj: { | |||
| starttime: "", | |||
| endoftime: "", | |||
| name:'', | |||
| agentName:'', | |||
| projectId:'', | |||
| type:0, | |||
| keywords:'', | |||
| keywordIds:[] | |||
| name: "", | |||
| agentName: "", | |||
| projectId: "", | |||
| type: 0, | |||
| keywords: "", | |||
| keywordIds: [], | |||
| }, | |||
| pageNum:1, | |||
| pageSize:30, | |||
| options5:[], | |||
| total:0, | |||
| pageNum: 1, | |||
| pageSize: 30, | |||
| options5: [], | |||
| total: 0, | |||
| }; | |||
| }, | |||
| mounted() { | |||
| // 权限 | |||
| this.sta_idx_download = this.permissions["sta_idx_download"]; | |||
| var isnull=this.$route.query.flag; | |||
| if (isnull.TimetoAhoose) this.TimetoAhoose=isnull.TimetoAhoose; | |||
| if (isnull.customtime) this.customtime=isnull.customtime; | |||
| this.fromobj.starttime=isnull.starttime; | |||
| this.fromobj.endoftime=isnull.endoftime; | |||
| this.fromobj.projectId=isnull.houseId; | |||
| this.fromobj.keywords=isnull.keywordsId; | |||
| if (!isnull.TimetoAhoose && isnull.starttime && isnull.endoftime) { | |||
| this.TimetoAhoose = 6 | |||
| } | |||
| this.Accesstolevel() | |||
| // 权限 | |||
| this.sta_idx_download = this.permissions["sta_idx_download"]; | |||
| var isnull = this.$route.query.flag; | |||
| if (isnull.TimetoAhoose) this.TimetoAhoose = isnull.TimetoAhoose; | |||
| if (isnull.customtime) this.customtime = isnull.customtime; | |||
| this.fromobj.starttime = isnull.starttime; | |||
| this.fromobj.endoftime = isnull.endoftime; | |||
| this.fromobj.projectId = isnull.houseId; | |||
| this.fromobj.keywords = isnull.keywordsId; | |||
| if (!isnull.TimetoAhoose && isnull.starttime && isnull.endoftime) { | |||
| this.TimetoAhoose = 6; | |||
| } | |||
| this.Accesstolevel(); | |||
| }, | |||
| computed: { | |||
| ...mapGetters(["permissions"]), | |||
| }, | |||
| methods: { | |||
| // 跳转接待详情 | |||
| Receivedetailsabout(row){ | |||
| this.$api.http.findByCusIdcusId({cusId:row.id}).then((res) => { | |||
| if(res.data.length==0){ | |||
| // 导出 | |||
| downLoads() { | |||
| exportMethodPost("autoSR/matchKeywords/receptionRecordExport", "画像详情", this.fromobj); | |||
| }, | |||
| // 跳转接待详情 | |||
| Receivedetailsabout(row) { | |||
| this.$api.http.findByCusIdcusId({ cusId: row.id }).then((res) => { | |||
| if (res.data.length == 0) { | |||
| this.$message({ | |||
| message: '无录音', | |||
| type: 'warning' | |||
| message: "无录音", | |||
| type: "warning", | |||
| }); | |||
| } else { | |||
| this.$router.push({ | |||
| path: "/Receive/index", | |||
| query: { flag: row.id, AudioIdx: 0 }, | |||
| }); | |||
| }else{ | |||
| this.$router.push({ | |||
| path: "/Receive/index", | |||
| query: { flag: row.id ,AudioIdx:0}, | |||
| }); | |||
| } | |||
| }) | |||
| }); | |||
| }, | |||
| //获取三级 | |||
| Accesstolevel(){ | |||
| this.options5=[]; | |||
| var datatype=''; | |||
| if(this.TimetoAhoose==6){ | |||
| datatype='' | |||
| }else { | |||
| datatype=this.TimetoAhoose | |||
| } | |||
| this.$api.http.findKeywords({ | |||
| type:this.fromobj.type, | |||
| dateType:datatype, | |||
| statDateStart:this.fromobj.starttime, | |||
| statDateEnd:this.fromobj.endoftime, | |||
| projectId:this.fromobj.projectId | |||
| }).then((res) => { | |||
| if(res.code==0){ | |||
| this.options5=res.data; | |||
| this.receptionRecord() | |||
| } | |||
| Accesstolevel() { | |||
| this.options5 = []; | |||
| var datatype = ""; | |||
| if (this.TimetoAhoose == 6) { | |||
| datatype = ""; | |||
| } else { | |||
| datatype = this.TimetoAhoose; | |||
| } | |||
| this.$api.http | |||
| .findKeywords({ | |||
| type: this.fromobj.type, | |||
| dateType: datatype, | |||
| statDateStart: this.fromobj.starttime, | |||
| statDateEnd: this.fromobj.endoftime, | |||
| projectId: this.fromobj.projectId, | |||
| }) | |||
| .then((res) => { | |||
| if (res.code == 0) { | |||
| this.options5 = res.data; | |||
| this.receptionRecord(); | |||
| } | |||
| }); | |||
| }, | |||
| receptionRecord(){ | |||
| var dateType=''; | |||
| if(this.TimetoAhoose==6){ | |||
| dateType=''; | |||
| }else { | |||
| dateType=this.TimetoAhoose; | |||
| } | |||
| this.$api.http.receptionRecord({ | |||
| dateType:dateType, | |||
| staDate:this.fromobj.starttime, | |||
| endDate:this.fromobj.endoftime, | |||
| projectId:this.fromobj.projectId, | |||
| name:this.fromobj.name, | |||
| agentName:this.fromobj.agentName, | |||
| type:this.fromobj.type, | |||
| time:1, | |||
| keywordIds:this.fromobj.keywordIds.length>0?this.fromobj.keywordIds.join(','):this.fromobj.keywords, | |||
| current:this.pageNum, | |||
| size:this.pageSize, | |||
| }).then((res) => { | |||
| if(res.code==0){ | |||
| this.tableData=res.data.records; | |||
| this.total=res.data.total | |||
| } | |||
| receptionRecord() { | |||
| var dateType = ""; | |||
| if (this.TimetoAhoose == 6) { | |||
| dateType = ""; | |||
| } else { | |||
| dateType = this.TimetoAhoose; | |||
| } | |||
| this.$api.http | |||
| .receptionRecord({ | |||
| dateType: dateType, | |||
| staDate: this.fromobj.starttime, | |||
| endDate: this.fromobj.endoftime, | |||
| projectId: this.fromobj.projectId, | |||
| name: this.fromobj.name, | |||
| agentName: this.fromobj.agentName, | |||
| type: this.fromobj.type, | |||
| time: 1, | |||
| keywordIds: | |||
| this.fromobj.keywordIds.length > 0 | |||
| ? this.fromobj.keywordIds.join(",") | |||
| : this.fromobj.keywords, | |||
| current: this.pageNum, | |||
| size: this.pageSize, | |||
| }) | |||
| .then((res) => { | |||
| if (res.code == 0) { | |||
| this.tableData = res.data.records; | |||
| this.total = res.data.total; | |||
| } | |||
| }); | |||
| }, | |||
| downLoad(){ | |||
| var dateType=''; | |||
| if(this.TimetoAhoose==6){ | |||
| dateType=''; | |||
| }else { | |||
| dateType=this.TimetoAhoose; | |||
| } | |||
| this.exportMethodPost('/autoSR/matchKeywords/dcCarReceptionRecord','洞察详情',{ | |||
| dateType:dateType, | |||
| staDate:this.fromobj.starttime, | |||
| endDate:this.fromobj.endoftime, | |||
| projectId:this.fromobj.projectId, | |||
| name:this.fromobj.name, | |||
| agentName:this.fromobj.agentName, | |||
| type:this.fromobj.type, | |||
| time:1, | |||
| keywordIds:this.fromobj.keywordIds.length>0?this.fromobj.keywordIds.join(','):this.fromobj.keywords, | |||
| }) | |||
| downLoad() { | |||
| var dateType = ""; | |||
| if (this.TimetoAhoose == 6) { | |||
| dateType = ""; | |||
| } else { | |||
| dateType = this.TimetoAhoose; | |||
| } | |||
| this.exportMethodPosts( | |||
| "/autoSR/matchKeywords/dcCarReceptionRecord", | |||
| "洞察详情", | |||
| { | |||
| dateType: dateType, | |||
| staDate: this.fromobj.starttime, | |||
| endDate: this.fromobj.endoftime, | |||
| projectId: this.fromobj.projectId, | |||
| name: this.fromobj.name, | |||
| agentName: this.fromobj.agentName, | |||
| type: this.fromobj.type, | |||
| time: 1, | |||
| keywordIds: | |||
| this.fromobj.keywordIds.length > 0 | |||
| ? this.fromobj.keywordIds.join(",") | |||
| : this.fromobj.keywords, | |||
| } | |||
| ); | |||
| }, | |||
| // 导出.Excel公用方法 | |||
| exportMethodPost(url, name, data = {}) { | |||
| // 导出.Excel公用方法 | |||
| exportMethodPosts(url, name, data = {}) { | |||
| axios({ | |||
| method: "get", | |||
| url: url, | |||
| params:data, | |||
| params: data, | |||
| responseType: "blob", | |||
| }) | |||
| .then((res) => { | |||
| @@ -297,51 +327,50 @@ export default { | |||
| }); | |||
| }, | |||
| //筛选 | |||
| screening(){ | |||
| this.fromobj.type=1; | |||
| this.pageNum=1; | |||
| this.receptionRecord() | |||
| screening() { | |||
| this.fromobj.type = 1; | |||
| this.pageNum = 1; | |||
| this.receptionRecord(); | |||
| }, | |||
| //清空筛选条件 | |||
| Screeningofempty(){ | |||
| this.TimetoAhoose=2; | |||
| this.fromobj.starttime = ""; | |||
| this.fromobj.endoftime = ""; | |||
| this.fromobj.name=''; | |||
| this.fromobj.agentName=''; | |||
| this.fromobj.keywords=''; | |||
| this.fromobj.type=0; | |||
| this.fromobj.keywordIds=[]; | |||
| this.pageNum=1; | |||
| this.customtime = []; | |||
| this.receptionRecord() | |||
| Screeningofempty() { | |||
| this.TimetoAhoose = 2; | |||
| this.fromobj.starttime = ""; | |||
| this.fromobj.endoftime = ""; | |||
| this.fromobj.name = ""; | |||
| this.fromobj.agentName = ""; | |||
| this.fromobj.keywords = ""; | |||
| this.fromobj.type = 0; | |||
| this.fromobj.keywordIds = []; | |||
| this.pageNum = 1; | |||
| this.customtime = []; | |||
| this.receptionRecord(); | |||
| }, | |||
| //切换时间 | |||
| //切换时间 | |||
| tabtimetap(index) { | |||
| this.TimetoAhoose = index; | |||
| this.fromobj.starttime = ""; | |||
| this.fromobj.endoftime = ""; | |||
| this.customtime = []; | |||
| this.pageNum=1; | |||
| this.receptionRecord() | |||
| this.pageNum = 1; | |||
| this.receptionRecord(); | |||
| }, | |||
| //自定义时间 | |||
| //自定义时间 | |||
| confirmtime() { | |||
| this.TimetoAhoose = 6; | |||
| this.fromobj.starttime = this.customtime[0]; | |||
| this.fromobj.endoftime = this.customtime[1]; | |||
| this.pageNum=1; | |||
| this.receptionRecord() | |||
| this.fromobj.starttime = this.customtime[0]; | |||
| this.fromobj.endoftime = this.customtime[1]; | |||
| this.pageNum = 1; | |||
| this.receptionRecord(); | |||
| }, | |||
| handleSizeChange(val) { | |||
| this.pageSize=val; | |||
| this.receptionRecord() | |||
| this.pageSize = val; | |||
| this.receptionRecord(); | |||
| }, | |||
| handleCurrentChange(val) { | |||
| this.pageNum=val; | |||
| this.receptionRecord() | |||
| this.pageNum = val; | |||
| this.receptionRecord(); | |||
| }, | |||
| }, | |||
| }; | |||
| </script> | |||
| @@ -352,10 +381,10 @@ export default { | |||
| padding: 15px 15px 40px; | |||
| min-width: 1000px; | |||
| } | |||
| .cen-tab{ | |||
| .cen-tab { | |||
| width: 100%; | |||
| padding: 15px; | |||
| background: #FFFFFF; | |||
| background: #ffffff; | |||
| margin-top: 15px; | |||
| } | |||
| .tophove { | |||
| @@ -398,7 +427,7 @@ export default { | |||
| } | |||
| } | |||
| } | |||
| /deep/ .el-button--text{ | |||
| color: #2671E2; | |||
| /deep/ .el-button--text { | |||
| color: #2671e2; | |||
| } | |||
| </style> | |||