|
@@ -1,16 +1,510 @@
|
|
|
<template>
|
|
|
- <!-- 工程登记 -->
|
|
|
- <div>
|
|
|
- 工程登记
|
|
|
+ <!-- 录音质检 -->
|
|
|
+ <div class="app-container">
|
|
|
+ <div>
|
|
|
+ <el-row :gutter="20" type="flex">
|
|
|
+ <el-col :span="3">
|
|
|
+ <div class="demo-input-suffix">
|
|
|
+ <el-row type="flex">
|
|
|
+ <el-col>
|
|
|
+ <el-select v-model="pagination.empcode" placeholder="请选择坐席人员" size="mini" clearable @clear="searchBtn">
|
|
|
+ <el-option
|
|
|
+ v-for="item in zxrys"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="3">
|
|
|
+ <div class="demo-input-suffix">
|
|
|
+ <el-row type="flex" justify="end">
|
|
|
+ <el-col>
|
|
|
+ <el-select v-model="pagination.callType" placeholder="请选择呼叫类型" size="mini" clearable @clear="searchBtn">
|
|
|
+ <el-option
|
|
|
+ v-for="item in hjlxs"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <div class="demo-input-suffix">
|
|
|
+ <el-row type="flex" justify="end">
|
|
|
+ <el-col class="datebox">
|
|
|
+ <!-- <el-date-picker
|
|
|
+ v-model="timer"
|
|
|
+ size="small"
|
|
|
+ style="width:100%"
|
|
|
+ type="daterange"
|
|
|
+ placeholder="请选择时间"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ /> -->
|
|
|
+ <el-date-picker
|
|
|
+ v-model="value1"
|
|
|
+ size="mini"
|
|
|
+ clearable
|
|
|
+ type="date"
|
|
|
+ placeholder="开始日期"
|
|
|
+ style="width: 100%"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ />
|
|
|
+ 至
|
|
|
+ <el-date-picker
|
|
|
+ v-model="value2"
|
|
|
+ size="mini"
|
|
|
+ clearable
|
|
|
+ type="date"
|
|
|
+ placeholder="结束日期"
|
|
|
+ style="width: 100%"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ />
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="3" style="margin-left:15px">
|
|
|
+ <el-button type="primary" size="mini" @click="searchBtn">查 询</el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="11">
|
|
|
+ <el-row type="flex" justify="end">
|
|
|
+ <el-button :disabled="disabledBtn" type="primary" size="mini" @click="score(multipleSelection[0])">录音评分</el-button>
|
|
|
+ <el-button :disabled="disabledBtn" type="primary" size="mini" @click="dowloadscore(multipleSelection[0])">下载录音</el-button>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top:20px">
|
|
|
+ <!-- <el-button type="primary" size="small" @click="score()">录音评分</el-button>
|
|
|
+ <el-button type="primary" size="small">下载录音</el-button> -->
|
|
|
+ <!-- <el-rate v-model="lupf" show-score show-text text-color="#ff9900" /> -->
|
|
|
+ <div class="table_width">
|
|
|
+ <table-item
|
|
|
+ :table-data="list"
|
|
|
+ :column="column"
|
|
|
+ :pagination="true"
|
|
|
+ :tableheight="tableheight"
|
|
|
+ :border="true"
|
|
|
+ :pagesize="pagination.size"
|
|
|
+ :currentpage="pagination.current"
|
|
|
+ :total="total"
|
|
|
+ :multiple="true"
|
|
|
+ :fixed="false"
|
|
|
+ :isdelete="true"
|
|
|
+ @handleCurrentChange="handleCurrentChange"
|
|
|
+ @handleSizeChange="handleSizeChange"
|
|
|
+ @handleSelectionChange="handleSelectionChange"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-dialog
|
|
|
+ title="录音评分"
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
+ width="700px"
|
|
|
+ :before-close="handleClose"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ >
|
|
|
+ <!-- <iframe :src="http://192.168.2.242:8080/public/getPlayRecord.html?connectionid=202107061017321051002&type=0" frameborder="0" style="height:200px;width:100%" /> -->
|
|
|
+ <audio ref="audio" autoplay="autoplay" controls style="width:95%;margin-left:5%" :src="'http://192.168.100.204:8080/calllist/'+LYurl">
|
|
|
+ 您的浏览器不支持 audio 。
|
|
|
+ </audio>
|
|
|
+ <el-form ref="ruleForm" :model="ruleForm" label-width="100px" size="mini" class="demo-ruleForm">
|
|
|
+ <h3>录音评分:</h3>
|
|
|
+ <el-row type="flex" justify="center">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'服务真诚('+MBlist.fwzc+')'" prop="fwzc">
|
|
|
+ <el-input v-model="ruleForm.fwzc" type="number" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'耐心服务('+MBlist.zzkg+')'" prop="zzkg">
|
|
|
+ <el-input v-model="ruleForm.zzkg" type="number" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'服务用语('+MBlist.fwyy+')'" prop="fwyy">
|
|
|
+ <el-input v-model="ruleForm.fwyy" type="number" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row type="flex" justify="center">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'服务语调('+MBlist.yyyd+')'" prop="yyyd">
|
|
|
+ <el-input v-model="ruleForm.yyyd" type="number" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'解答完整('+MBlist.jdwz+')'" prop="jdwz">
|
|
|
+ <el-input v-model="ruleForm.jdwz" type="number" :max="10" :main="0" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'解答准确('+MBlist.jdzq+')'" prop="jdzq">
|
|
|
+ <el-input v-model="ruleForm.jdzq" type="number" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row type="flex" justify="center">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'倾听理解('+MBlist.qtlj+')'" prop="qtlj">
|
|
|
+ <el-input v-model="ruleForm.qtlj" type="number" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'信息收集('+MBlist.xxsj+')'" prop="xxsj">
|
|
|
+ <el-input v-model="ruleForm.xxsj" type="number" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'信息确认('+MBlist.xxqr+')'" prop="xxqr">
|
|
|
+ <el-input v-model="ruleForm.xxqr" type="number" :max="10" :main="0" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row type="flex" justify="center">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'对话技巧('+MBlist.dhjq+')'" prop="dhjq">
|
|
|
+ <el-input v-model="ruleForm.dhjq" type="number" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'资料查询('+MBlist.zlk+')'" prop="zlk">
|
|
|
+ <el-input v-model="ruleForm.zlk" type="number" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="'流程规范('+MBlist.lcgf+')'" prop="lcgf">
|
|
|
+ <el-input v-model="ruleForm.lcgf" type="number" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row type="flex" justify="center">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="是否合格" prop="isreslut">
|
|
|
+ <el-select
|
|
|
+ v-model="ruleForm.isreslut"
|
|
|
+ size="mini"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in reslutList" :key="item.id" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="16">
|
|
|
+ <el-form-item label="评分描述">
|
|
|
+ <el-input v-model="ruleForm.pfMs" type="textarea" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="ClickhandleClose">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="scoreSubmit">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import TableItem from '@/components/Table'
|
|
|
+import { getLYMail, getGrade, postrecord, getlisten } from '@/api/hotline'
|
|
|
+import { client, parseTime } from '@/utils/index'
|
|
|
+// import axios from 'axios'
|
|
|
export default {
|
|
|
+ name: 'CallLog',
|
|
|
+ components: { TableItem },
|
|
|
+ data() {
|
|
|
+ const end = new Date()
|
|
|
+ const start = new Date()
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
|
|
|
+ return {
|
|
|
+ value1: parseTime(start, '{y}-{m}-{d}'),
|
|
|
+ value2: parseTime(end, '{y}-{m}-{d}'),
|
|
|
+ getLYMail: getLYMail,
|
|
|
+ colors: ['#99A9BF', '#F7BA2A', '#FF9900'], // 等同于 { 2: '#99A9BF', 4: { value: '#F7BA2A', excluded: true }, 5: '#FF9900' }
|
|
|
+ rate: 0,
|
|
|
+ dialogVisible: false,
|
|
|
+ pagination: { current: 1, size: 20, empcode: '', callType: '', startTime: '', endTime: '' },
|
|
|
+ total: 0,
|
|
|
+ disabledBtn: true,
|
|
|
+ getGrade: getGrade,
|
|
|
+ postrecord: postrecord,
|
|
|
+ getlisten: getlisten,
|
|
|
+ LYurl: '',
|
|
|
+ lupf: '',
|
|
|
+ zxry: '',
|
|
|
+ MBlist: {},
|
|
|
+ ruleForm: {
|
|
|
|
|
|
+ },
|
|
|
+ reslutList: [
|
|
|
+ {
|
|
|
+ id: 0,
|
|
|
+ label: '不合格',
|
|
|
+ value: 0
|
|
|
+ }, {
|
|
|
+ id: 1,
|
|
|
+ label: '合格',
|
|
|
+ value: 1
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ zxrys: [
|
|
|
+ {
|
|
|
+ value: '1001',
|
|
|
+ label: '1001'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '1002',
|
|
|
+ label: '1002'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '1003',
|
|
|
+ label: '1003'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '1004',
|
|
|
+ label: '1004'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '1005',
|
|
|
+ label: '1005'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ hjlx: '',
|
|
|
+ timer: [],
|
|
|
+ ZCdata: {},
|
|
|
+ hjlxs: [
|
|
|
+ {
|
|
|
+ value: '1',
|
|
|
+ label: '呼入'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '2',
|
|
|
+ label: '呼出'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '3',
|
|
|
+ label: '内部呼叫'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ num: 1,
|
|
|
+ multipleSelection: [],
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: '工号',
|
|
|
+ prop: 'empcode'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '名称',
|
|
|
+ prop: 'empName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '呼叫类型',
|
|
|
+ prop: 'callTypeName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '客户号码',
|
|
|
+ prop: 'telephone'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '系统号码',
|
|
|
+ prop: 'sysphone'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '呼叫时间',
|
|
|
+ prop: 'callTime'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '接通时间',
|
|
|
+ prop: 'connectTime'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '挂机时间',
|
|
|
+ prop: 'hangupTime'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ list: [
|
|
|
+ ] }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ tableheight() {
|
|
|
+ return client().height - 230
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ multipleSelection() {
|
|
|
+ this.disabledBtn = this.multipleSelection.length !== 1
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.searchBtn()
|
|
|
+ this.getMB()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ handleClose(done) {
|
|
|
+ this.$refs.audio.pause()
|
|
|
+ done()
|
|
|
+ },
|
|
|
+ ClickhandleClose() {
|
|
|
+ this.$refs.audio.pause()
|
|
|
+ this.dialogVisible = false
|
|
|
+ },
|
|
|
+ searchBtn() {
|
|
|
+ if (this.value1 !== null) {
|
|
|
+ if (this.value1 && this.value2) {
|
|
|
+ this.pagination.startTime = this.value1 + ' 00:00:00'
|
|
|
+ this.pagination.endTime = this.value2 + ' 23:59:59'
|
|
|
+ } else {
|
|
|
+ this.pagination.startTime = ''
|
|
|
+ this.pagination.endTime = ''
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.pagination.startTime = ''
|
|
|
+ this.pagination.endTime = ''
|
|
|
+ }
|
|
|
+ this.pagination.current = 1
|
|
|
+ this.getMail()
|
|
|
+ },
|
|
|
+ async getMail() {
|
|
|
+ try {
|
|
|
+ const tableData = await this.getLYMail(this.pagination)
|
|
|
+ console.log(this.list)
|
|
|
+ this.list = tableData.result.records
|
|
|
+ this.total = tableData.result.total
|
|
|
+ } catch (err) {
|
|
|
+ console.log(err)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async getMB() {
|
|
|
+ try {
|
|
|
+ const Data = await this.getGrade()
|
|
|
+ this.MBlist = Data.result
|
|
|
+ console.log(Data)
|
|
|
+ } catch (err) {
|
|
|
+ console.log(err)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async postRecord(data) {
|
|
|
+ try {
|
|
|
+ const Data = await this.postrecord(data)
|
|
|
+ console.log(Data)
|
|
|
+ this.dialogVisible = false
|
|
|
+ this.getMail()
|
|
|
+ } catch (err) {
|
|
|
+ console.log(err)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 选择
|
|
|
+ handleSelectionChange(value) {
|
|
|
+ this.multipleSelection = value
|
|
|
+ // console.log('1111', value)
|
|
|
+ },
|
|
|
+ // 每页多少条
|
|
|
+ handleSizeChange(pagesize) {
|
|
|
+ this.pagination.size = pagesize
|
|
|
+ this.getMail()
|
|
|
+ },
|
|
|
+ // 获取当前页
|
|
|
+ handleCurrentChange(currentPage) {
|
|
|
+ this.pagination.current = currentPage
|
|
|
+ this.getMail()
|
|
|
+ },
|
|
|
+ scoreSubmit() {
|
|
|
+ console.log(this.ruleForm)
|
|
|
+ let isnull = false
|
|
|
+ for (const i in this.ruleForm) {
|
|
|
+ console.log(this.ruleForm[i])
|
|
|
+ if (this.ruleForm[i] === '') {
|
|
|
+ isnull = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (isnull) {
|
|
|
+ this.$message.error('请填写全部评分')
|
|
|
+ } else {
|
|
|
+ let suer = true
|
|
|
+ for (const i in this.ruleForm) {
|
|
|
+ if (this.ruleForm[i] > this.MBlist[i]) {
|
|
|
+ suer = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (suer) {
|
|
|
+ // return
|
|
|
+ this.ruleForm = { ...this.ruleForm, ...this.ZCdata }
|
|
|
+ this.ruleForm.pfZxry = this.ZCdata.empcode
|
|
|
+ this.ruleForm.pfType = 2
|
|
|
+ this.ruleForm.pfLyid = this.ZCdata.connectionid
|
|
|
+ this.ruleForm.pfFz = Number(this.ruleForm.fwzc) + Number(this.ruleForm.zzkg) + Number(this.ruleForm.fwyy) + Number(this.ruleForm.yyyd) + Number(this.ruleForm.jdwz) + Number(this.ruleForm.jdzq) + Number(this.ruleForm.qtlj) + Number(this.ruleForm.xxsj) + Number(this.ruleForm.xxqr) + Number(this.ruleForm.dhjq) + Number(this.ruleForm.zlk) + Number(this.ruleForm.lcgf)
|
|
|
+ console.log('this.ruleForm.pfFz', this.ruleForm.pfFz)
|
|
|
+ this.postRecord(this.ruleForm)
|
|
|
+ } else {
|
|
|
+ this.$message.error('评分超出设定最大值')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ score(value) {
|
|
|
+ this.ruleForm = {
|
|
|
+ dhjq: 0,
|
|
|
+ fwyy: 0,
|
|
|
+ fwzc: 0,
|
|
|
+ jdwz: 0,
|
|
|
+ jdzq: 0,
|
|
|
+ lcgf: 0,
|
|
|
+ qtlj: 0,
|
|
|
+ xxqr: 0,
|
|
|
+ xxsj: 0,
|
|
|
+ zlk: 0,
|
|
|
+ yyyd: 0,
|
|
|
+ zzkg: 0
|
|
|
+ }
|
|
|
+ this.LYurl = value.recordFile
|
|
|
+ this.dialogVisible = true
|
|
|
+ if (this.$refs.audio) {
|
|
|
+ this.$refs.audio.load()
|
|
|
+ this.$refs.audio.play()
|
|
|
+ }
|
|
|
+ this.ZCdata = value
|
|
|
+ console.log(this.ZCdata)
|
|
|
+ },
|
|
|
+ dowloadscore(value) {
|
|
|
+ console.log(value)
|
|
|
+ if (Number(value.callResult) === 1 && value.recordFile) {
|
|
|
+ window.open('http://192.168.100.204:8080/public/downloadFile.html?type=0&connectionid=' + value.connectionid)
|
|
|
+ } else {
|
|
|
+ this.$message.error('录音文件下载失败')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
-
|
|
|
+.app-container {
|
|
|
+ background: #fff;
|
|
|
+}
|
|
|
+.demo-input-suffix {
|
|
|
+ span {
|
|
|
+ line-height: 32px;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+}
|
|
|
+.table_width {
|
|
|
+ margin-top: 20px;
|
|
|
+} .datebox{
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
</style>
|