|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
- <div class="tels-callLog-container layout-pd">
|
|
|
- <el-card shadow="never">
|
|
|
- <el-tabs v-model="state.queryParams.type" @tab-change="changeTba">
|
|
|
+ <div class="tels-callLog-container layout-padding">
|
|
|
+ <div class="layout-padding-auto layout-padding-view pd20">
|
|
|
+ <el-tabs v-model="state.queryParams.type" @tab-change="changeTba" class="tabs h100">
|
|
|
<el-tab-pane name="0" label="全部"></el-tab-pane>
|
|
|
<el-tab-pane name="1" label="呼入已接"></el-tab-pane>
|
|
|
<el-tab-pane name="2" label="呼出已接"></el-tab-pane>
|
|
@@ -9,284 +9,307 @@
|
|
|
<el-tab-pane name="4" label="智能应答"></el-tab-pane>
|
|
|
<el-tab-pane name="5" label="呼入白名单"></el-tab-pane>
|
|
|
<el-tab-pane name="6" label="呼入黑名单"></el-tab-pane>
|
|
|
- </el-tabs>
|
|
|
- <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent label-width="20px">
|
|
|
- <el-row :gutter="10">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
|
|
|
- <el-form-item prop="CPN">
|
|
|
- <el-input v-model="state.queryParams.CPN" placeholder="主叫号码" clearable @keyup.enter="handleQuery" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
|
|
|
- <el-form-item prop="CDPN">
|
|
|
- <el-input v-model="state.queryParams.CDPN" placeholder="被叫号码" clearable @keyup.enter="handleQuery" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="['0', '1', '2', '3', '5', '6'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="TelNo">
|
|
|
- <el-input v-model="state.queryParams.TelNo" placeholder="响应分机" clearable @keyup.enter="handleQuery" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
+ <ProTable
|
|
|
+ ref="proTableRef"
|
|
|
+ :columns="columns"
|
|
|
+ :data="state.tableData"
|
|
|
+ @updateTable="queryList"
|
|
|
+ :loading="state.loading"
|
|
|
+ :total="state.total"
|
|
|
+ v-model:page-index="state.queryParams.PageIndex"
|
|
|
+ v-model:page-size="state.queryParams.PageSize"
|
|
|
+ :key="Math.random()"
|
|
|
+ >
|
|
|
+ <template #table-search>
|
|
|
+ <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent label-width="20px">
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
|
|
|
+ <el-form-item prop="CPN">
|
|
|
+ <el-input v-model="state.queryParams.CPN" placeholder="主叫号码" clearable @keyup.enter="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
|
|
|
+ <el-form-item prop="CDPN">
|
|
|
+ <el-input v-model="state.queryParams.CDPN" placeholder="被叫号码" clearable @keyup.enter="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="['0', '1', '2', '3', '5', '6'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="TelNo">
|
|
|
+ <el-input v-model="state.queryParams.TelNo" placeholder="响应分机" clearable @keyup.enter="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="['0', '1', '2', '3', '5'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="UserName">
|
|
|
- <el-input v-model="state.queryParams.UserName" placeholder="话务员名称" clearable @keyup.enter="handleQuery" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol || ['4', '6'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="gateway">
|
|
|
- <el-input v-model="state.queryParams.gateway" placeholder="中继号码" clearable @keyup.enter="handleQuery" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '3'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="CallDirection">
|
|
|
- <el-select v-model="state.queryParams.CallDirection" placeholder="电话方向" clearable class="w100" @change="handleQuery">
|
|
|
- <el-option v-for="item in state.callDirection" :value="item.key" :key="item.key" :label="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="OnState">
|
|
|
- <el-select v-model="state.queryParams.OnState" placeholder="通话结果" clearable class="w100" @change="handleQuery">
|
|
|
- <el-option v-for="item in state.onState" :value="item.key" :key="item.key" :label="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol || ['4'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="EndBy">
|
|
|
- <el-select v-model="state.queryParams.EndBy" placeholder="挂机类型" clearable class="w100" @change="handleQuery">
|
|
|
- <el-option v-for="item in state.endByOptions" :value="item.key" :key="item.key" :label="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '3', '4', '5'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="beginIvrTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="state.queryParams.beginIvrTime"
|
|
|
- type="datetimerange"
|
|
|
- unlink-panels
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="ivr开始开始时间"
|
|
|
- end-placeholder="ivr开始结束时间"
|
|
|
- :shortcuts="shortcuts"
|
|
|
- @change="handleQuery"
|
|
|
- value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
- :default-time="defaultTimeStartEnd"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '3', '4', '5'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="endIvrTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="state.queryParams.endIvrTime"
|
|
|
- type="datetimerange"
|
|
|
- unlink-panels
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="ivr结束开始时间"
|
|
|
- end-placeholder="ivr结束结束时间"
|
|
|
- :shortcuts="shortcuts"
|
|
|
- @change="handleQuery"
|
|
|
- value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
- :default-time="defaultTimeStartEnd"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '3', '5'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="beginQueueTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="state.queryParams.beginQueueTime"
|
|
|
- type="datetimerange"
|
|
|
- unlink-panels
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="队列开始开始时间"
|
|
|
- end-placeholder="队列开始结束时间"
|
|
|
- :shortcuts="shortcuts"
|
|
|
- @change="handleQuery"
|
|
|
- value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
- :default-time="defaultTimeStartEnd"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '3', '5'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="endQueueTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="state.queryParams.endQueueTime"
|
|
|
- type="datetimerange"
|
|
|
- unlink-panels
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="队列结束开始时间"
|
|
|
- end-placeholder="队列结束结束时间"
|
|
|
- :shortcuts="shortcuts"
|
|
|
- @change="handleQuery"
|
|
|
- value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
- :default-time="defaultTimeStartEnd"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '3', '5'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="beginRingTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="state.queryParams.beginRingTime"
|
|
|
- type="datetimerange"
|
|
|
- unlink-panels
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="振铃开始开始时间"
|
|
|
- end-placeholder="振铃开始结束时间"
|
|
|
- :shortcuts="shortcuts"
|
|
|
- @change="handleQuery"
|
|
|
- value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
- :default-time="defaultTimeStartEnd"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '3', '5'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="endRingTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="state.queryParams.endRingTime"
|
|
|
- type="datetimerange"
|
|
|
- unlink-panels
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="振铃结束开始时间"
|
|
|
- end-placeholder="振铃结束结束时间"
|
|
|
- :shortcuts="shortcuts"
|
|
|
- @change="handleQuery"
|
|
|
- value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
- :default-time="defaultTimeStartEnd"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol">
|
|
|
- <el-form-item prop="callTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="state.queryParams.callTime"
|
|
|
- type="datetimerange"
|
|
|
- unlink-panels
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始开始时间"
|
|
|
- end-placeholder="开始结束时间"
|
|
|
- :shortcuts="shortcuts"
|
|
|
- @change="handleQuery"
|
|
|
- value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
- :default-time="defaultTimeStartEnd"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '2', '4', '5'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="answeredTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="state.queryParams.answeredTime"
|
|
|
- type="datetimerange"
|
|
|
- unlink-panels
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="接通开始时间"
|
|
|
- end-placeholder="接通结束时间"
|
|
|
- :shortcuts="shortcuts"
|
|
|
- @change="handleQuery"
|
|
|
- value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
- :default-time="defaultTimeStartEnd"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol">
|
|
|
- <el-form-item prop="overTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="state.queryParams.overTime"
|
|
|
- type="datetimerange"
|
|
|
- unlink-panels
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="挂断开始时间"
|
|
|
- end-placeholder="挂断结束时间"
|
|
|
- :shortcuts="shortcuts"
|
|
|
- @change="handleQuery"
|
|
|
- value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
- :default-time="defaultTimeStartEnd"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="OrderNo">
|
|
|
- <el-input v-model="state.queryParams.OrderNo" placeholder="工单编码" clearable @keyup.enter="handleQuery" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- <transition name="el-zoom-in-top">
|
|
|
- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1'].includes(state.queryParams.type)">
|
|
|
- <el-form-item prop="Title">
|
|
|
- <el-input v-model="state.queryParams.Title" placeholder="工单标题" clearable @keyup.enter="handleQuery" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </transition>
|
|
|
- </el-row>
|
|
|
- <div class="w100 ml20">
|
|
|
- <el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
|
|
|
- <el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
|
|
|
- <SvgIcon name="ele-Refresh" class="mr5" />重置
|
|
|
- </el-button>
|
|
|
- <el-button link type="primary" @click="closeSearch" :loading="state.loading">
|
|
|
- {{ searchCol ? '展开' : '收起' }}
|
|
|
- <SvgIcon :class="{ 'is-reverse': searchCol }" name="ele-ArrowUp" class="mr5 arrow" size="18px" />
|
|
|
- </el-button>
|
|
|
- </div>
|
|
|
- </el-form>
|
|
|
- <ProTable
|
|
|
- ref="proTableRef"
|
|
|
- :columns="columns"
|
|
|
- :data="state.tableData"
|
|
|
- @updateTable="queryList"
|
|
|
- :loading="state.loading"
|
|
|
- :total="state.total"
|
|
|
- v-model:page-index="state.queryParams.PageIndex"
|
|
|
- v-model:page-size="state.queryParams.PageSize"
|
|
|
- :key="Math.random()"
|
|
|
- >
|
|
|
- <template #operation="{ row }">
|
|
|
- <template v-if="['1'].includes(state.queryParams.type)">
|
|
|
- <el-button link type="primary" @click="onCreate(row)" title="创建失联工单" v-auth="'tels:callLog:connectOrder'" v-if="!row.externalId">
|
|
|
- 失联工单
|
|
|
- </el-button>
|
|
|
- <el-button link type="primary" @click="onConnect(row)" title="关联业务" v-auth="'tels:callLog:connect'" v-if="!row.externalId">
|
|
|
- 关联业务
|
|
|
- </el-button>
|
|
|
- <el-button type="primary" @click="onPlaySoundRecording(row)" title="播放录音" link v-if="row.recordingAbsolutePath">播放录音</el-button>
|
|
|
- <el-button link type="primary" @click="onDownload(row)" title="下载录音" v-if="row.recordingAbsolutePath"> 下载录音 </el-button>
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="['0', '1', '2', '3', '5'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="UserName">
|
|
|
+ <el-input v-model="state.queryParams.UserName" placeholder="话务员名称" clearable @keyup.enter="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol || ['4', '6'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="gateway">
|
|
|
+ <el-input v-model="state.queryParams.gateway" placeholder="中继号码" clearable @keyup.enter="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '3'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="CallDirection">
|
|
|
+ <el-select v-model="state.queryParams.CallDirection" placeholder="电话方向" clearable class="w100" @change="handleQuery">
|
|
|
+ <el-option v-for="item in state.callDirection" :value="item.key" :key="item.key" :label="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="OnState">
|
|
|
+ <el-select v-model="state.queryParams.OnState" placeholder="通话结果" clearable class="w100" @change="handleQuery">
|
|
|
+ <el-option v-for="item in state.onState" :value="item.key" :key="item.key" :label="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol || ['4'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="EndBy">
|
|
|
+ <el-select v-model="state.queryParams.EndBy" placeholder="挂机类型" clearable class="w100" @change="handleQuery">
|
|
|
+ <el-option v-for="item in state.endByOptions" :value="item.key" :key="item.key" :label="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="12"
|
|
|
+ :md="12"
|
|
|
+ :lg="6"
|
|
|
+ :xl="6"
|
|
|
+ v-show="!searchCol && ['0', '1', '3', '4', '5'].includes(state.queryParams.type)"
|
|
|
+ >
|
|
|
+ <el-form-item prop="beginIvrTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.queryParams.beginIvrTime"
|
|
|
+ type="datetimerange"
|
|
|
+ unlink-panels
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="ivr开始开始时间"
|
|
|
+ end-placeholder="ivr开始结束时间"
|
|
|
+ :shortcuts="shortcuts"
|
|
|
+ @change="handleQuery"
|
|
|
+ value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
+ :default-time="defaultTimeStartEnd"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="12"
|
|
|
+ :md="12"
|
|
|
+ :lg="6"
|
|
|
+ :xl="6"
|
|
|
+ v-show="!searchCol && ['0', '1', '3', '4', '5'].includes(state.queryParams.type)"
|
|
|
+ >
|
|
|
+ <el-form-item prop="endIvrTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.queryParams.endIvrTime"
|
|
|
+ type="datetimerange"
|
|
|
+ unlink-panels
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="ivr结束开始时间"
|
|
|
+ end-placeholder="ivr结束结束时间"
|
|
|
+ :shortcuts="shortcuts"
|
|
|
+ @change="handleQuery"
|
|
|
+ value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
+ :default-time="defaultTimeStartEnd"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '3', '5'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="beginQueueTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.queryParams.beginQueueTime"
|
|
|
+ type="datetimerange"
|
|
|
+ unlink-panels
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="队列开始开始时间"
|
|
|
+ end-placeholder="队列开始结束时间"
|
|
|
+ :shortcuts="shortcuts"
|
|
|
+ @change="handleQuery"
|
|
|
+ value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
+ :default-time="defaultTimeStartEnd"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '3', '5'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="endQueueTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.queryParams.endQueueTime"
|
|
|
+ type="datetimerange"
|
|
|
+ unlink-panels
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="队列结束开始时间"
|
|
|
+ end-placeholder="队列结束结束时间"
|
|
|
+ :shortcuts="shortcuts"
|
|
|
+ @change="handleQuery"
|
|
|
+ value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
+ :default-time="defaultTimeStartEnd"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '3', '5'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="beginRingTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.queryParams.beginRingTime"
|
|
|
+ type="datetimerange"
|
|
|
+ unlink-panels
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="振铃开始开始时间"
|
|
|
+ end-placeholder="振铃开始结束时间"
|
|
|
+ :shortcuts="shortcuts"
|
|
|
+ @change="handleQuery"
|
|
|
+ value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
+ :default-time="defaultTimeStartEnd"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1', '3', '5'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="endRingTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.queryParams.endRingTime"
|
|
|
+ type="datetimerange"
|
|
|
+ unlink-panels
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="振铃结束开始时间"
|
|
|
+ end-placeholder="振铃结束结束时间"
|
|
|
+ :shortcuts="shortcuts"
|
|
|
+ @change="handleQuery"
|
|
|
+ value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
+ :default-time="defaultTimeStartEnd"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol">
|
|
|
+ <el-form-item prop="callTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.queryParams.callTime"
|
|
|
+ type="datetimerange"
|
|
|
+ unlink-panels
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始开始时间"
|
|
|
+ end-placeholder="开始结束时间"
|
|
|
+ :shortcuts="shortcuts"
|
|
|
+ @change="handleQuery"
|
|
|
+ value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
+ :default-time="defaultTimeStartEnd"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="12"
|
|
|
+ :md="12"
|
|
|
+ :lg="6"
|
|
|
+ :xl="6"
|
|
|
+ v-show="!searchCol && ['0', '1', '2', '4', '5'].includes(state.queryParams.type)"
|
|
|
+ >
|
|
|
+ <el-form-item prop="answeredTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.queryParams.answeredTime"
|
|
|
+ type="datetimerange"
|
|
|
+ unlink-panels
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="接通开始时间"
|
|
|
+ end-placeholder="接通结束时间"
|
|
|
+ :shortcuts="shortcuts"
|
|
|
+ @change="handleQuery"
|
|
|
+ value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
+ :default-time="defaultTimeStartEnd"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol">
|
|
|
+ <el-form-item prop="overTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.queryParams.overTime"
|
|
|
+ type="datetimerange"
|
|
|
+ unlink-panels
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="挂断开始时间"
|
|
|
+ end-placeholder="挂断结束时间"
|
|
|
+ :shortcuts="shortcuts"
|
|
|
+ @change="handleQuery"
|
|
|
+ value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
+ :default-time="defaultTimeStartEnd"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="OrderNo">
|
|
|
+ <el-input v-model="state.queryParams.OrderNo" placeholder="工单编码" clearable @keyup.enter="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol && ['0', '1'].includes(state.queryParams.type)">
|
|
|
+ <el-form-item prop="Title">
|
|
|
+ <el-input v-model="state.queryParams.Title" placeholder="工单标题" clearable @keyup.enter="handleQuery" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </transition>
|
|
|
+ </el-row>
|
|
|
+ <div class="w100 ml20">
|
|
|
+ <el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
|
|
|
+ <el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
|
|
|
+ <SvgIcon name="ele-Refresh" class="mr5" />重置
|
|
|
+ </el-button>
|
|
|
+ <el-button link type="primary" @click="closeSearch" :loading="state.loading">
|
|
|
+ {{ searchCol ? '展开' : '收起' }}
|
|
|
+ <SvgIcon :class="{ 'is-reverse': searchCol }" name="ele-ArrowUp" class="mr5 arrow" size="18px" />
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </el-form>
|
|
|
+ </template>
|
|
|
+ <template #operation="{ row }">
|
|
|
+ <template v-if="['1'].includes(state.queryParams.type)">
|
|
|
+ <el-button link type="primary" @click="onCreate(row)" title="创建失联工单" v-auth="'tels:callLog:connectOrder'" v-if="!row.externalId">
|
|
|
+ 失联工单
|
|
|
+ </el-button>
|
|
|
+ <el-button link type="primary" @click="onConnect(row)" title="关联业务" v-auth="'tels:callLog:connect'" v-if="!row.externalId">
|
|
|
+ 关联业务
|
|
|
+ </el-button>
|
|
|
+ <el-button type="primary" @click="onPlaySoundRecording(row)" title="播放录音" link v-if="row.recordingAbsolutePath">播放录音</el-button>
|
|
|
+ <el-button link type="primary" @click="onDownload(row)" title="下载录音" v-if="row.recordingAbsolutePath"> 下载录音 </el-button>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <el-button type="primary" @click="onPlaySoundRecording(row)" title="播放录音" link v-if="row.recordingAbsolutePath">播放录音</el-button>
|
|
|
+ <el-button link type="primary" @click="onDownload(row)" title="下载录音" v-if="row.recordingAbsolutePath"> 下载录音 </el-button>
|
|
|
+ </template>
|
|
|
</template>
|
|
|
- <template v-else>
|
|
|
- <el-button type="primary" @click="onPlaySoundRecording(row)" title="播放录音" link v-if="row.recordingAbsolutePath">播放录音</el-button>
|
|
|
- <el-button link type="primary" @click="onDownload(row)" title="下载录音" v-if="row.recordingAbsolutePath"> 下载录音 </el-button>
|
|
|
+ <template #title="{ row }">
|
|
|
+ <order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
|
|
|
</template>
|
|
|
- </template>
|
|
|
- <template #title="{ row }">
|
|
|
- <order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
|
|
|
- </template>
|
|
|
- </ProTable>
|
|
|
- </el-card>
|
|
|
+ </ProTable>
|
|
|
+ </el-tabs>
|
|
|
+ </div>
|
|
|
<!-- 播放录音 -->
|
|
|
<play-record ref="playRecordRef" />
|
|
|
<!-- 业务关联 -->
|
|
@@ -321,7 +344,7 @@ const columns = ref<any[]>([]);
|
|
|
const state = reactive<any>({
|
|
|
queryParams: {
|
|
|
PageIndex: 1, // 当前页
|
|
|
- PageSize: 10, // 每页条数
|
|
|
+ PageSize: 20, // 每页条数
|
|
|
type: '0',
|
|
|
StaffNo: null, // 分机号
|
|
|
CPN: null, // 主叫号码
|
|
@@ -379,7 +402,7 @@ const allColumns = [
|
|
|
{ prop: 'cdpn', label: '被叫号码', minWidth: 120 },
|
|
|
{ prop: 'order.no', label: '工单编码', minWidth: 140 },
|
|
|
{ prop: 'order.title', label: '工单标题', minWidth: 200 },
|
|
|
- { prop: 'telNo', label: '响应分机'},
|
|
|
+ { prop: 'telNo', label: '响应分机' },
|
|
|
{ prop: 'gateway', label: '中继号码', minWidth: 100 },
|
|
|
{ prop: 'mobileAreaName', label: '号码归属地', minWidth: 120 },
|
|
|
{ prop: 'userName', label: '话务员', minWidth: 120 },
|
|
@@ -876,11 +899,24 @@ onBeforeUnmount(() => {
|
|
|
});
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
-.arrow {
|
|
|
- transition: transform var(--el-transition-duration);
|
|
|
- cursor: pointer;
|
|
|
-}
|
|
|
-.arrow.is-reverse {
|
|
|
- transform: rotateZ(-180deg);
|
|
|
+.tels-callLog-container {
|
|
|
+ .arrow {
|
|
|
+ transition: transform var(--el-transition-duration);
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .arrow.is-reverse {
|
|
|
+ transform: rotateZ(-180deg);
|
|
|
+ }
|
|
|
+ .tabs {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ overflow: auto;
|
|
|
+ :deep(.pro-table-main) {
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ :deep(.el-tabs__content) {
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|