Browse Source

reactor:通话控件新增签入时长;

zhangchong 1 year ago
parent
commit
eb8862fd47

+ 1 - 1
src/layout/navBars/breadcrumb/telControl.vue

@@ -1510,7 +1510,7 @@ onMounted(async () => {
 	color: var(--hotline-color-text-main);
 	height: 100%;
 	.duty-on-time {
-		width: 70px;
+		width: 80px;
 		text-align: center;
 		&-label {
 			display: block;

+ 0 - 2
src/views/business/special/index.vue

@@ -42,8 +42,6 @@
 						<span>{{ formatDate(row.startTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
 					</template>
 				</el-table-column>
-				<el-table-column prop="" label="延期申请" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column prop="" label="甄别状态" show-overflow-tooltip width="150"></el-table-column>
 				<el-table-column prop="expiredTime" label="工单期满时间" show-overflow-tooltip width="170">
 					<template #default="{ row }">
 						<span>{{ formatDate(row.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}</span>

+ 1 - 0
src/views/statistics/call/index.vue

@@ -44,6 +44,7 @@
 				ref="multipleTableRef"
 				@selection-change="handleSelectionChange"
 				show-summary
+        border
 			>
 				<el-table-column type="selection" width="55" />
 				<el-table-column prop="hourRange" label="时段" show-overflow-tooltip align="center"> </el-table-column>

+ 1 - 0
src/views/statistics/call/telephone.vue

@@ -74,6 +74,7 @@
 				ref="multipleTableRef"
 				@selection-change="handleSelectionChange"
 				@sort-change="sortChange"
+        border
 			>
 				<el-table-column type="selection" width="55" align="center" />
 				<el-table-column prop="orgName" label="坐席人员" show-overflow-tooltip align="center"></el-table-column>

+ 4 - 4
src/views/statistics/knowledge/data.vue

@@ -41,7 +41,7 @@
 				:data="state.tableData"
 				v-loading="state.loading"
 				show-summary
-				row-key="id"
+				row-key="orgId"
 				ref="multipleTableRef"
 				@selection-change="handleSelectionChange"
 				@sort-change="sortChange"
@@ -122,9 +122,9 @@ const queryList = throttle(() => {
 }, 300);
 // 排序
 const sortChange = (val: any) => {
-  state.queryParams.SortField = val.order ? val.prop : null;
-  // 0 升序 1 降序
-  state.queryParams.SortRule = val.order ? (val.order == 'descending' ? 1 : 0) : null;
+	state.queryParams.SortField = val.order ? val.prop : null;
+	// 0 升序 1 降序
+	state.queryParams.SortRule = val.order ? (val.order == 'descending' ? 1 : 0) : null;
 	queryList();
 };
 /** 重置按钮操作 */

+ 112 - 104
src/views/statistics/order/center.vue

@@ -1,66 +1,74 @@
 <template>
-  <div class="statistics-order-center-container layout-pd">
-    <!-- 搜索  -->
-    <el-card shadow="never">
-      <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent class="mt15" label-width="100px">
-        <el-row :gutter="10">
-          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-            <el-form-item label="时间段" prop="crTime">
-              <el-date-picker
-                  v-model="state.queryParams.crTime"
-                  type="datetimerange"
-                  unlink-panels
-                  range-separator="至"
-                  start-placeholder="开始时间"
-                  end-placeholder="结束时间"
-                  :shortcuts="shortcuts"
-                  @change="queryList"
-                  value-format="YYYY-MM-DD[T]HH:mm:ss"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-            <el-form-item label="姓名" prop="Keyword">
-              <el-input v-model="state.queryParams.Keyword" placeholder="姓名" clearable @keyup.enter="queryList" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-            <el-form-item label=" ">
-              <el-button type="primary" @click="queryList" :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-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </el-card>
-    <el-card shadow="never">
-      <!-- 表格 -->
-      <el-table :data="state.tableData" v-loading="state.loading" show-summary row-key="userId" ref="multipleTableRef" @selection-change="handleSelectionChange"  @sort-change="sortChange">
-        <el-table-column type="selection" width="55" align="center"/>
-        <el-table-column prop="userName" label="姓名" show-overflow-tooltip align="center"></el-table-column>
-        <el-table-column  label="有效件" align="center">
-          <el-table-column prop="centreArchive" label="中心归档件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
-          <el-table-column prop="centreCareOf" label="转办信件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
-<!--          <el-table-column prop="addNum" label="待转办信件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>-->
-        </el-table-column>
-        <el-table-column prop="invalid" label="无效信件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
-        <el-table-column prop="repeat" label="重复信件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
-        <el-table-column prop="subtotal" label="所有信件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
-        <template #empty>
-          <Empty />
-        </template>
-      </el-table>
-      <!-- 分页 -->
-      <pagination
-          :total="state.total"
-          v-model:page="state.queryParams.PageIndex"
-          v-model:limit="state.queryParams.PageSize"
-          @pagination="queryList"
-      />
-    </el-card>
-  </div>
+	<div class="statistics-order-center-container layout-pd">
+		<!-- 搜索  -->
+		<el-card shadow="never">
+			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent class="mt15" label-width="100px">
+				<el-row :gutter="10">
+					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+						<el-form-item label="时间段" prop="crTime">
+							<el-date-picker
+								v-model="state.queryParams.crTime"
+								type="datetimerange"
+								unlink-panels
+								range-separator="至"
+								start-placeholder="开始时间"
+								end-placeholder="结束时间"
+								:shortcuts="shortcuts"
+								@change="queryList"
+								value-format="YYYY-MM-DD[T]HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+						<el-form-item label="姓名" prop="Keyword">
+							<el-input v-model="state.queryParams.Keyword" placeholder="姓名" clearable @keyup.enter="queryList" />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+						<el-form-item label=" ">
+							<el-button type="primary" @click="queryList" :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-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+		</el-card>
+		<el-card shadow="never">
+			<!-- 表格 -->
+			<el-table
+				:data="state.tableData"
+				v-loading="state.loading"
+				show-summary
+				row-key="userId"
+				ref="multipleTableRef"
+				@selection-change="handleSelectionChange"
+				@sort-change="sortChange"
+			>
+				<el-table-column type="selection" width="55" align="center" />
+				<el-table-column prop="userName" label="姓名" show-overflow-tooltip align="center"></el-table-column>
+				<el-table-column label="有效件" align="center">
+					<el-table-column prop="centreArchive" label="中心归档件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
+					<el-table-column prop="centreCareOf" label="转办信件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
+					<!--          <el-table-column prop="addNum" label="待转办信件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>-->
+				</el-table-column>
+				<el-table-column prop="invalid" label="无效信件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
+				<el-table-column prop="repeat" label="重复信件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
+				<el-table-column prop="subtotal" label="所有信件" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
+				<template #empty>
+					<Empty />
+				</template>
+			</el-table>
+			<!-- 分页 -->
+			<pagination
+				:total="state.total"
+				v-model:page="state.queryParams.PageIndex"
+				v-model:limit="state.queryParams.PageSize"
+				@pagination="queryList"
+			/>
+		</el-card>
+	</div>
 </template>
 <script setup lang="ts" name="statisticsOrderCenter">
 import { onMounted, reactive, ref } from 'vue';
@@ -72,64 +80,64 @@ import { shortcuts } from '/@/utils/constants';
 // 定义变量内容
 const ruleFormRef = ref<RefType>(); // 表单ref
 const state = reactive(<any>{
-  queryParams: {
-    // 查询条件
-    PageIndex: 1,
-    PageSize: 10,
-    Keyword: null, // 关键词
-    crTime: [], // 时间默认今天开始到今天结束
-  },
-  tableData: [], //表单
-  loading: false, // 加载
-  total: 0, // 总数
+	queryParams: {
+		// 查询条件
+		PageIndex: 1,
+		PageSize: 10,
+		Keyword: null, // 关键词
+		crTime: [], // 时间默认今天开始到今天结束
+	},
+	tableData: [], //表单
+	loading: false, // 加载
+	total: 0, // 总数
 });
 /** 获取列表 */
 const queryList = throttle(() => {
-  if (!auth('business:publish:query')) ElMessage.error('抱歉,您没有权限查看工单发布列表!');
-  else {
-    state.loading = true;
-    const request = {
-      CreationTimeStart: state.queryParams.crTime[0],
-      CreationTimeEnd: state.queryParams.crTime[1],
-      DelayState: state.queryParams.DelayState,
-      PageIndex: state.queryParams.PageIndex,
-      PageSize: state.queryParams.PageSize,
-      Keyword: state.queryParams.Keyword,
-      SortField: state.queryParams.SortField,
-      SortRule: state.queryParams.SortRule,
-    };
-    centerList(request)
-        .then((res: any) => {
-          state.tableData = res.result?.items ?? [];
-          state.total = res.result?.total ?? 0;
-          state.loading = false;
-        })
-        .catch((err: any) => {
-          state.loading = false;
-        });
-  }
+	if (!auth('business:publish:query')) ElMessage.error('抱歉,您没有权限查看工单发布列表!');
+	else {
+		state.loading = true;
+		const request = {
+			CreationTimeStart: state.queryParams.crTime[0],
+			CreationTimeEnd: state.queryParams.crTime[1],
+			DelayState: state.queryParams.DelayState,
+			PageIndex: state.queryParams.PageIndex,
+			PageSize: state.queryParams.PageSize,
+			Keyword: state.queryParams.Keyword,
+			SortField: state.queryParams.SortField,
+			SortRule: state.queryParams.SortRule,
+		};
+		centerList(request)
+			.then((res: any) => {
+				state.tableData = res.result?.items ?? [];
+				state.total = res.result?.total ?? 0;
+				state.loading = false;
+			})
+			.catch((err: any) => {
+				state.loading = false;
+			});
+	}
 }, 300);
 // 排序
 const sortChange = (val: any) => {
-  state.queryParams.SortField = val.order ? val.prop : null;
-  // 0 升序 1 降序
-  state.queryParams.SortRule = val.order ? (val.order == 'descending' ? 1 : 0) : null;
-  queryList();
+	state.queryParams.SortField = val.order ? val.prop : null;
+	// 0 升序 1 降序
+	state.queryParams.SortRule = val.order ? (val.order == 'descending' ? 1 : 0) : null;
+	queryList();
 };
 /** 重置按钮操作 */
 const resetQuery = throttle((formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  formEl.resetFields();
-  queryList();
+	if (!formEl) return;
+	formEl.resetFields();
+	queryList();
 }, 300);
 // 表格多选
 const multipleTableRef = ref<RefType>();
 const multipleSelection = ref<any>([]);
 const handleSelectionChange = (val: any[]) => {
-  multipleSelection.value = val;
+	multipleSelection.value = val;
 };
 
 onMounted(() => {
-  queryList();
+	queryList();
 });
 </script>

+ 0 - 3
src/views/tels/callLog/component/Connect-business.vue

@@ -57,9 +57,6 @@
               <span>{{ formatDate(row.startTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="" label="延期申请" show-overflow-tooltip width="150"></el-table-column>
-          <el-table-column prop="" label="重办" show-overflow-tooltip width="150"></el-table-column>
-          <el-table-column prop="" label="甄别状态" show-overflow-tooltip width="150"></el-table-column>
           <el-table-column prop="expiredTime" label="工单期满时间" show-overflow-tooltip width="170">
             <template #default="{ row }">
               <span>{{ formatDate(row.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}</span>

+ 49 - 11
src/views/tels/callLog/index.vue

@@ -4,15 +4,32 @@
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent class="mt15" label-width="100px">
 				<el-row :gutter="10">
 					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-						<el-form-item label="主叫" prop="CPN">
-							<el-input v-model="state.queryParams.CPN" placeholder="请输入主叫号码" clearable @keyup.enter="queryList" />
+						<el-form-item label="通话时间段" prop="crTime">
+							<el-date-picker
+								v-model="state.queryParams.crTime"
+								type="datetimerange"
+								unlink-panels
+								range-separator="至"
+								start-placeholder="开始时间"
+								end-placeholder="结束时间"
+								:shortcuts="shortcuts"
+								@change="queryList"
+								value-format="YYYY-MM-DD[T]HH:mm:ss"
+							/>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-						<el-form-item label="被叫" prop="CDPN">
-							<el-input v-model="state.queryParams.CDPN" placeholder="请输入被叫号码" clearable @keyup.enter="queryList" />
+						<el-form-item label="主叫" prop="CPN">
+							<el-input v-model="state.queryParams.CPN" placeholder="请输入主叫号码" clearable @keyup.enter="queryList" />
 						</el-form-item>
 					</el-col>
+					<transition name="el-zoom-in-top">
+						<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8" v-show="!searchCol">
+							<el-form-item label="被叫" prop="CDPN">
+								<el-input v-model="state.queryParams.CDPN" placeholder="请输入被叫号码" clearable @keyup.enter="queryList" />
+							</el-form-item>
+						</el-col>
+					</transition>
 					<transition name="el-zoom-in-top">
 						<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8" v-show="!searchCol">
 							<el-form-item label="电话方向" prop="Direction">
@@ -31,6 +48,13 @@
 							</el-form-item>
 						</el-col>
 					</transition>
+					<transition name="el-zoom-in-top">
+						<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8" v-show="!searchCol">
+							<el-form-item label="中继号" prop="Gateway">
+								<el-input v-model="state.queryParams.Gateway" placeholder="请输入中继号" clearable @keyup.enter="queryList" />
+							</el-form-item>
+						</el-col>
+					</transition>
 					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
 						<div class="flex-end w100">
 							<el-button type="primary" @click="queryList" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
@@ -94,7 +118,7 @@
 				</el-table-column>
 				<el-table-column label="操作" width="240" fixed="right" align="center">
 					<template #default="{ row }">
-            <el-button link type="primary" @click="onConnect(row)" title="关联业务" v-auth="'tels:callLog:connect'"> 关联业务 </el-button>
+						<el-button link type="primary" @click="onConnect(row)" title="关联业务" v-auth="'tels:callLog:connect'"> 关联业务 </el-button>
 						<el-button type="primary" @click="onPlaySoundRecording(row)" title="播放录音" link v-if="row.recordingFileUrl">播放录音</el-button>
 						<el-button link type="primary" @click="onDownload(row)" title="下载录音" v-if="row.recordingFileUrl"> 下载录音 </el-button>
 					</template>
@@ -111,10 +135,10 @@
 				@pagination="queryList"
 			/>
 		</el-card>
-    <!-- 播放录音 -->
+		<!-- 播放录音 -->
 		<play-record ref="playRecordRef" />
-    <!-- 业务关联 -->
-    <connect-business ref="connectBusinessRef" @updateList="queryList"/>
+		<!-- 业务关联 -->
+		<connect-business ref="connectBusinessRef" @updateList="queryList" />
 	</div>
 </template>
 
@@ -125,6 +149,7 @@ import { ElButton, ElMessageBox } from 'element-plus';
 import { downloadFile, throttle } from '/@/utils/tools';
 import { callBaseData, callLogPaged } from '/@/api/tels/callLog';
 import { formatDate } from '/@/utils/formatTime';
+import { shortcuts } from '/@/utils/constants';
 
 // 引入组件
 const PlayRecord = defineAsyncComponent(() => import('/@/views/tels/callLog/component/Play-record.vue')); // 播放录音
@@ -140,6 +165,7 @@ const state = reactive(<any>{
 		CDPN: null, // 分机号
 		Direction: null, // 呼叫类型
 		OnState: null, // 结果
+    crTime:[]
 	},
 	tableList: [], // 列表数据
 	loading: false, // 加载
@@ -155,7 +181,19 @@ const closeSearch = () => {
 const queryList = throttle(async () => {
 	state.loading = true;
 	try {
-		const response = await callLogPaged(state.queryParams);
+		const request = {
+			pageIndex: state.queryParams.pageIndex,
+			pageSize: state.queryParams.pageSize,
+			CPN: state.queryParams.CPN,
+			CDPN: state.queryParams.CDPN,
+			Direction: state.queryParams.Direction,
+			OnState: state.queryParams.OnState,
+			StaffNo: state.queryParams.StaffNo,
+      StartTime: state.queryParams.crTime[0],
+      EndTime: state.queryParams.crTime[1],
+      Gateway: state.queryParams.Gateway,
+		};
+		const response = await callLogPaged(request);
 		state.tableList = response.result?.items ?? [];
 		state.total = response.result?.total ?? 0;
 		state.loading = false;
@@ -193,8 +231,8 @@ const onDownload = (row: any) => {
 };
 // 关联业务
 const connectBusinessRef = ref<RefType>();
-const onConnect = (row:any) => {
-  connectBusinessRef.value.openDialog(row);
+const onConnect = (row: any) => {
+	connectBusinessRef.value.openDialog(row);
 };
 // 基础信息
 const getBaseData = async () => {