| @@ -515,6 +515,25 @@ | |||
| <div v-if="role != 2"> | |||
| <!-- 卡片部分 --> | |||
| <div class="page-container"> | |||
| <div class="pagechen"> | |||
| <div class="pageboxtitle1">平均接待时长(分钟)</div> | |||
| <div class="pageboxtitle2"> | |||
| <div class="span1">{{ sysSec.receptionTimeWithAvg || 0 }}</div> | |||
| <div class="span2"> | |||
| <span class="span2-1"> | |||
| 环比:{{ sysCompare.receptionTimeWithAvg || 0 }}</span | |||
| > | |||
| <span class="span2-2" v-if="orderBy.receptionTimeWithAvg > 0"> | |||
| <i class="el-icon-top" style="color: red"></i> | |||
| {{ orderBy.receptionTimeWithAvg || 0 }} | |||
| </span> | |||
| <span class="span2-3" v-if="orderBy.receptionTimeWithAvg < 0"> | |||
| <i class="el-icon-bottom" style="color: #25ceba"></i> | |||
| {{ orderBy.receptionTimeWithAvg || 0 }} | |||
| </span> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="pagechen"> | |||
| <div class="pageboxtitle1">新增项目数</div> | |||
| <div class="pageboxtitle2"> | |||
| @@ -606,7 +625,10 @@ | |||
| </div> | |||
| </div> | |||
| <div class="pagechen"> | |||
| </div> | |||
| <div style="margin-top: 20px" class="page-container"> | |||
| <div class="pagechen"> | |||
| <div class="pageboxtitle1">活跃用户数</div> | |||
| <div class="pageboxtitle2"> | |||
| <div class="span1">{{ sysSec.activeUserQuantity || 0 }}</div> | |||
| @@ -625,8 +647,6 @@ | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div style="margin-top: 20px" class="page-container"> | |||
| <div class="pagechen"> | |||
| <div class="pageboxtitle1">接待量</div> | |||
| <div class="pageboxtitle2"> | |||
| @@ -684,25 +704,6 @@ | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="pagechen"> | |||
| <div class="pageboxtitle1">平均接待时长(分钟)</div> | |||
| <div class="pageboxtitle2"> | |||
| <div class="span1">{{ sysSec.receptionTimeWithAvg || 0 }}</div> | |||
| <div class="span2"> | |||
| <span class="span2-1"> | |||
| 环比:{{ sysCompare.receptionTimeWithAvg || 0 }}</span | |||
| > | |||
| <span class="span2-2" v-if="orderBy.receptionTimeWithAvg > 0"> | |||
| <i class="el-icon-top" style="color: red"></i> | |||
| {{ orderBy.receptionTimeWithAvg || 0 }} | |||
| </span> | |||
| <span class="span2-3" v-if="orderBy.receptionTimeWithAvg < 0"> | |||
| <i class="el-icon-bottom" style="color: #25ceba"></i> | |||
| {{ orderBy.receptionTimeWithAvg || 0 }} | |||
| </span> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="pagechen"> | |||
| <div class="pageboxtitle1">录音总时长(小时)</div> | |||
| <div class="pageboxtitle2"> | |||
| @@ -767,6 +767,7 @@ import { saveAs } from "file-saver"; | |||
| export default { | |||
| data() { | |||
| return { | |||
| recordsText:[], | |||
| roleVisible: false, | |||
| roleFlag: "0", | |||
| roleidx: "", | |||
| @@ -1453,25 +1454,28 @@ export default { | |||
| //常错词确认 | |||
| subMsg() { | |||
| this.$refs.form.validate((valid) => { | |||
| if (valid) { | |||
| this.form.correctWord = this.ruleForm.correctWord.replace( | |||
| /[^\w\u4e00-\u9fa5]/g, | |||
| "" | |||
| ); | |||
| this.form.wrongWord = this.ruleForm.wrongWord.replace( | |||
| /[^\w\u4e00-\u9fa5]/g, | |||
| "" | |||
| ); | |||
| this.dialogFormVisible = false; | |||
| let sas = this.textItself.replace( | |||
| this.form.wrongWord, | |||
| this.form.correctWord | |||
| ); | |||
| this.transcriptionlist[this.argtextindex].onebest = sas; | |||
| this.subWrongMsg(); | |||
| if(this.form.wrongWord.length>8){ | |||
| this.$message.warning("常错词不能超过8个字!"); | |||
| }else{ | |||
| let reg = /^[0-9]+$/ | |||
| if(reg.test(this.form.wrongWord)){ | |||
| this.$message.warning("常错词不能为纯数字!"); | |||
| }else{ | |||
| this.$refs.form.validate((valid) => { | |||
| if (valid) { | |||
| this.form.correctWord = this.form.correctWord.replace(/[^\w\u4e00-\u9fa5]/g,"") | |||
| this.form.wrongWord = this.form.wrongWord.replace(/[^\w\u4e00-\u9fa5]/g,"") | |||
| this.dialogFormVisible = false; | |||
| let sas = this.textItself.replace( | |||
| this.form.wrongWord, | |||
| this.form.correctWord | |||
| ); | |||
| this.transcriptionlist[this.argtextindex].onebest = sas; | |||
| this.subWrongMsg(); | |||
| } | |||
| }); | |||
| } | |||
| } | |||
| }); | |||
| }, | |||
| //常错词提交 | |||
| subWrongMsg() { | |||
| @@ -1481,7 +1485,8 @@ export default { | |||
| cupid: this.form.cupid, | |||
| wrongWord: this.form.wrongWord, | |||
| customerId: this.fileId, | |||
| houseId: localStorage.getItem("houseId"), | |||
| houseId: this.userinformationlist.projectId, | |||
| translateHtmlContent:this.arr[this.aplayerId].audioContent | |||
| }) | |||
| .then((res) => { | |||
| this.$message.success("保存成功"); | |||
| @@ -52,15 +52,28 @@ | |||
| <!-- 表格 --> | |||
| <div class="cen-tab"> | |||
| <el-table :data="tableData" stripe style="width: 100%"> | |||
| <el-table :data="tableData" stripe style="width: 100%" show-summary :summary-method="getSummaries"> | |||
| <el-table-column prop="batchId" label="序号" align="center"> | |||
| <template slot-scope="scope"> | |||
| <span v-if="scope.$index + 1 == tableData.length"> 合计/平均</span> | |||
| <span v-else> {{ scope.$index + 1 }}</span> | |||
| <span> {{ scope.$index + 1 }}</span> | |||
| </template> | |||
| </el-table-column> | |||
| <el-table-column prop="houseName" label="项目" align="center"> | |||
| </el-table-column> | |||
| <el-table-column prop="fraction" label="平均执行率" align="center" width="110" sortable> | |||
| <template slot-scope="{ row }"> {{ row.fraction }}% </template> | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="sumDuration" | |||
| label="接待时长(分钟)" | |||
| align="center" | |||
| sortable | |||
| width="140" | |||
| > | |||
| <template slot-scope="scope"> | |||
| {{ Math.floor(scope.row.sumDuration / 60) || 0 }} | |||
| </template> | |||
| </el-table-column> | |||
| <el-table-column prop="accountNum" label="顾问数" align="center" sortable> | |||
| </el-table-column> | |||
| <el-table-column prop="receptionCount" label="接待量" align="center" sortable> | |||
| @@ -75,20 +88,8 @@ | |||
| width="140" | |||
| > | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="sumDuration" | |||
| label="接待时长(分钟)" | |||
| align="center" | |||
| sortable | |||
| width="140" | |||
| > | |||
| <template slot-scope="scope"> | |||
| {{ Math.floor(scope.row.sumDuration / 60) || 0 }} | |||
| </template> | |||
| </el-table-column> | |||
| <el-table-column prop="fraction" label="平均执行率" align="center" width="110" sortable> | |||
| <template slot-scope="{ row }"> {{ row.fraction }}% </template> | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="prohibitedZb" | |||
| label="违禁接待占比" | |||
| @@ -329,6 +330,39 @@ export default { | |||
| this.gethouseData(); | |||
| }, | |||
| methods: { | |||
| getSummaries(param) { | |||
| const { columns, data } = param; | |||
| const sums = []; | |||
| columns.forEach((column, index) => { | |||
| if (index === 0) { | |||
| sums[index] = '合计'; | |||
| return; | |||
| } | |||
| const values = data.map(item => Number(item[column.property])); | |||
| if (!values.every(value => isNaN(value))) { | |||
| sums[index] = values.reduce((prev, curr) => { | |||
| const value = Number(curr); | |||
| if (!isNaN(value)) { | |||
| return prev + curr; | |||
| } else { | |||
| return prev; | |||
| } | |||
| }, 0); | |||
| // sums[index] += ' 元'; | |||
| if (index === 7) { | |||
| sums[index] += '%'; | |||
| return; | |||
| } | |||
| if (index === 8) { | |||
| sums[index] += '%'; | |||
| return; | |||
| } | |||
| } | |||
| }); | |||
| sums[1] = 'N/A'; | |||
| return sums; | |||
| }, | |||
| downLoad() { | |||
| let pamaet = { | |||
| orgType: this.role, | |||
| @@ -172,34 +172,26 @@ | |||
| <div class="container"> | |||
| <div | |||
| class="grid-content" | |||
| @click="secondChange('receptionCount', '接待客户/个')" | |||
| @click="secondChange('fraction', '平均执行率/%')" | |||
| style="height: auto; padding-bottom: 10px" | |||
| > | |||
| <div | |||
| class="text1" | |||
| :class="{ tophovese: secindex == 'receptionCount' }" | |||
| > | |||
| 接待量 | |||
| <div class="text1" :class="{ tophovese: secindex == 'fraction' }"> | |||
| 平均执行率/% | |||
| </div> | |||
| <div | |||
| class="text2" | |||
| :class="{ tophovese: secindex == 'receptionCount' }" | |||
| > | |||
| {{ compare.receptionCount || 0 }} | |||
| <div class="text2" :class="{ tophovese: secindex == 'fraction' }"> | |||
| {{ compare.fraction || 0 }} | |||
| </div> | |||
| <div class="text33" v-if="selectTime1"> | |||
| <div> | |||
| 对比时段: | |||
| <span style="text-indent: 20px">{{ | |||
| compare1.receptionCount || 0 | |||
| compare1.fraction || 0 | |||
| }}</span> | |||
| </div> | |||
| <div | |||
| :style=" | |||
| compare2.receptionCount >= 0 ? 'color:green;' : 'color:red;' | |||
| " | |||
| :style="compare2.fraction >= 0 ? 'color:green;' : 'color:red;'" | |||
| > | |||
| {{ compare2.receptionCount || 0 }} | |||
| {{ compare2.fraction || 0 }}% | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -228,6 +220,39 @@ | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div | |||
| class="grid-content" | |||
| @click="secondChange('receptionCount', '接待客户/个')" | |||
| style="height: auto; padding-bottom: 10px" | |||
| > | |||
| <div | |||
| class="text1" | |||
| :class="{ tophovese: secindex == 'receptionCount' }" | |||
| > | |||
| 接待量 | |||
| </div> | |||
| <div | |||
| class="text2" | |||
| :class="{ tophovese: secindex == 'receptionCount' }" | |||
| > | |||
| {{ compare.receptionCount || 0 }} | |||
| </div> | |||
| <div class="text33" v-if="selectTime1"> | |||
| <div> | |||
| 对比时段: | |||
| <span style="text-indent: 20px">{{ | |||
| compare1.receptionCount || 0 | |||
| }}</span> | |||
| </div> | |||
| <div | |||
| :style=" | |||
| compare2.receptionCount >= 0 ? 'color:green;' : 'color:red;' | |||
| " | |||
| > | |||
| {{ compare2.receptionCount || 0 }} | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div | |||
| class="grid-content" | |||
| @click="secondChange('prohibitedCustomer', '违禁接待次数/次')" | |||
| @@ -327,31 +352,7 @@ | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div | |||
| class="grid-content" | |||
| @click="secondChange('fraction', '平均执行率/%')" | |||
| style="height: auto; padding-bottom: 10px" | |||
| > | |||
| <div class="text1" :class="{ tophovese: secindex == 'fraction' }"> | |||
| 平均执行率/% | |||
| </div> | |||
| <div class="text2" :class="{ tophovese: secindex == 'fraction' }"> | |||
| {{ compare.fraction || 0 }} | |||
| </div> | |||
| <div class="text33" v-if="selectTime1"> | |||
| <div> | |||
| 对比时段: | |||
| <span style="text-indent: 20px">{{ | |||
| compare1.fraction || 0 | |||
| }}</span> | |||
| </div> | |||
| <div | |||
| :style="compare2.fraction >= 0 ? 'color:green;' : 'color:red;'" | |||
| > | |||
| {{ compare2.fraction || 0 }}% | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div id="main"></div> | |||
| </div> | |||