Sfoglia il codice sorgente

reactor:修复自贡录音下载的BUG;

zhangchong 7 mesi fa
parent
commit
c1c02066bc

+ 2 - 2
.env.development

@@ -3,11 +3,11 @@ VITE_MODE_NAME=development
 # 防止部署多套系统到同一域名不同目录时,变量共用的问题 设置不同的前缀
 VITE_STORAGE_NAME=dev
 # 基础请求地址
-VITE_API_URL=http://110.188.24.28:50100
+VITE_API_URL=http://110.188.24.28:50300
 # 数据共享平台请求地址
 VITE_DATASHARE_API_YRL=http://ds.12345lm.cn
 # socket API
-VITE_API_SOCKET_URL=http://110.188.24.28:50100/hubs/hotline
+VITE_API_SOCKET_URL=http://110.188.24.28:50300/hubs/hotline
 # 上传 API
 VITE_API_UPLOAD_URL=http://110.188.24.28:50120
 # 文件上传地址前缀

+ 20 - 9
src/components/PlayRecord/index.vue

@@ -15,7 +15,7 @@
 			<el-table :data="tableData" border>
 				<el-table-column prop="name" label="来电号码" align="center" />
 				<el-table-column prop="createTime" label="来电时间" width="160" align="center" />
-				<el-table-column prop="duration" label="时长" align="center" />
+				<el-table-column prop="duration" label="时长(秒)" align="center" />
 				<el-table-column prop="size" label="操作" align="center">
 					<template #default="{ row }">
 						<el-button type="primary" link v-auth="'public:record:download'" @click="download(row)" :loading="loading">下载</el-button>
@@ -44,7 +44,7 @@
 <script lang="ts" setup name="playRecord">
 import { defineAsyncComponent, ref } from 'vue';
 import { fileDownload } from '@/api/public/file';
-import { downloadFileByStream } from '@/utils/tools';
+import { downloadFileBySrc, downloadFileByStream } from '@/utils/tools';
 import { callLogDetail } from '@/api/tels/callLog';
 import { formatDate } from '@/utils/formatTime';
 import { useThemeConfig } from '@/stores/themeConfig';
@@ -89,14 +89,25 @@ const closeDialog = () => {
 // 下载录音
 const download = (row: any) => {
 	loading.value = true;
-	fileDownload({ path: themeConfig.value.recordDownLoadPrefix + row.audioFile })
-		.then((res: any) => {
-			downloadFileByStream(res, row.audioFile);
+	switch (themeConfig.value.appScope) {
+		case 'YiBin':
+			fileDownload({ path: themeConfig.value.recordDownLoadPrefix + row.audioFile })
+				.then((res: any) => {
+					downloadFileByStream(res, row.audioFile);
+					loading.value = false;
+				})
+				.catch(() => {
+					loading.value = false;
+				});
+			break;
+		case 'ZiGong':
+		case 'LuZhou':
+			// downloadFileBySrc( themeConfig.value.recordPrefix + row.audioFile, row.audioFile);
+			window.open(themeConfig.value.recordPrefix + row.audioFile)
 			loading.value = false;
-		})
-		.catch(() => {
-			loading.value = false;
-		});
+			break;
+	}
+
 };
 // 直接打开录音
 const dialogVisibleSmart = ref(false);

+ 1 - 1
src/types/pinia.d.ts

@@ -109,7 +109,7 @@ declare interface ThemeConfigState {
 	menuLogoImageMini: string, // 菜单logo-mini
 	changPwdImage: string, //修改密码图片
 	callCenterSocketUrl: string, // 呼叫中心socket地址
-	recordPrefix: string, // 录音前缀
+	recordPrefix: string, // 录音播放前缀
 	recordDownLoadPrefix: string, // 录音下载前缀
 	[x: string]: any
 }

+ 16 - 4
src/views/statistics/call/detailIndexCall.vue

@@ -34,7 +34,7 @@ import { callDetailListDetail, callDetailListDetailExport } from '@/api/statisti
 import { useRoute } from 'vue-router';
 import { formatDate } from '@/utils/formatTime';
 import { fileDownload } from '@/api/public/file';
-import { downloadFileByStream } from '@/utils/tools';
+import { downloadFileBySrc, downloadFileByStream } from '@/utils/tools';
 import { useThemeConfig } from '@/stores/themeConfig';
 import { storeToRefs } from 'pinia';
 
@@ -137,9 +137,21 @@ const onDownload = (row: any) => {
 		autofocus: false,
 	})
 		.then(() => {
-			fileDownload({ path: themeConfig.value.recordDownLoadPrefix + row.recordingAbsolutePath }).then((res: any) => {
-				downloadFileByStream(res, row.recordingAbsolutePath);
-			});
+			switch (themeConfig.value.appScope) {
+				case 'YiBin':
+					fileDownload({ path: themeConfig.value.recordDownLoadPrefix + row.audioFile })
+						.then((res: any) => {
+							downloadFileByStream(res, row.audioFile);
+						})
+						.catch(() => {
+						});
+					break;
+				case 'ZiGong':
+				case 'LuZhou':
+					// downloadFileBySrc( themeConfig.value.recordPrefix + row.audioFile, row.audioFile);
+					window.open(themeConfig.value.recordPrefix + row.audioFile)
+					break;
+			}
 		})
 		.catch(() => {});
 };

+ 1 - 1
src/views/system/parameter/component/Parameter-add.vue

@@ -14,7 +14,7 @@
 					</el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 						<el-form-item label="排序" prop="sort" :rules="[{ required: false, message: '请填写排序', trigger: 'blur' }]">
-							<el-input-number v-model="state.ruleForm.sort" :min="1" :precision="0"/>
+							<el-input-number v-model="state.ruleForm.sort" :min="1" :precision="0" class="w100"/>
 						</el-form-item>
 					</el-col>
           <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">

+ 1 - 1
src/views/system/parameter/component/Parameter-edit.vue

@@ -14,7 +14,7 @@
 					</el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 						<el-form-item label="排序" prop="sort" :rules="[{ required: false, message: '请填写排序', trigger: 'blur' }]">
-							<el-input-number v-model="state.ruleForm.sort" :min="1" :precision="0" :disabled="state.isDisabled"/>
+							<el-input-number v-model="state.ruleForm.sort" :min="1" :precision="0" :disabled="state.isDisabled" class="w100"/>
 						</el-form-item>
 					</el-col>
           <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">

+ 9 - 24
src/views/tels/callLog/component/Connect-business.vue

@@ -1,15 +1,14 @@
 <template>
 	<div class="tels-callLog-connect-container">
 		<el-dialog v-model="state.dialogVisible" draggable title="关联业务" @close="close">
-			<div class="flex-center-align mb15">
-				关联类型:
-				<el-radio-group v-model="isOrder" @change="queryList">
-					<el-radio :value="true">工单</el-radio>
-					<el-radio :value="false">回访</el-radio>
-				</el-radio-group>
-			</div>
 			<div class="table-search-content">
 				<el-form :model="state.queryParams" @submit.native.prevent inline>
+					<el-form-item label="关联类型" prop="Keyword">
+						<el-radio-group v-model="isOrder" @change="queryList">
+							<el-radio :value="true">工单</el-radio>
+							<el-radio :value="false">回访</el-radio>
+						</el-radio-group>
+					</el-form-item>
 					<el-form-item label="" prop="Keyword">
 						<el-input v-model="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="queryList" class="keyword-input" />
 					</el-form-item>
@@ -39,8 +38,7 @@
 				v-model:page-size="state.queryParams.PageSize"
 				:key="Math.random()"
 				v-model:radio="tableRadio"
-				@current-change="handleSelectionChange"
-				max-height="400"
+				max-height="500"
 			>
 				<template #title="{ row }">
 					<order-detail v-if="isOrder" :order="row">{{ row.title }}</order-detail>
@@ -74,13 +72,6 @@ import { formatDate } from '@/utils/formatTime';
 import { callLogLink, callLogOrder, callLogVisit } from '@/api/tels/callLog';
 
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
-
-const props = defineProps({
-	specialFlagList: {
-		type: Array,
-		default: () => [],
-	},
-});
 // 定义子组件向父组件传值/事件
 const emit = defineEmits(['updateList']);
 
@@ -89,7 +80,7 @@ const proTableRef = ref<RefType>(); // 表格ref
 const columns = ref<any[]>([]);
 // 工单表头
 const orderColumns = [
-	{ type: 'radio', fixed: 'left', width: 60, label: '请选择', align: 'center' },
+	{ type: 'radio', fixed: 'left', width: 70, label: '请选择', align: 'center' },
 	{ prop: 'no', label: '工单编码', width: 140 },
 	{ prop: 'isProvinceText', label: '省/市工单', width: 90 },
 	{ prop: 'currentStepName', label: '当前节点', width: 100 },
@@ -107,7 +98,7 @@ const orderColumns = [
 	{ prop: 'acceptorName', label: '受理人', width: 120 },
 ];
 const visitColumns = [
-	{ type: 'radio', fixed: 'left', width: 60, label: '请选择', align: 'center' },
+	{ type: 'radio', fixed: 'left', width: 70, label: '请选择', align: 'center' },
 	{ prop: 'order.no', label: '工单编码', width: 140 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 90 },
 	{ prop: 'order.title', label: '工单标题', width: 200 },
@@ -202,12 +193,6 @@ const close = () => {
 	tableRadio.value = '';
 };
 const tableRadio = ref<String>(''); // 选择的单选框
-// 选择重复件
-const handleSelectionChange = (row: any) => {
-	if (row) {
-		tableRadio.value = row.id;
-	}
-};
 // 保存
 const onSubmit = () => {
 	loading.value = true;

+ 1 - 1
src/views/tels/callLog/ybCallLog.vue

@@ -1016,7 +1016,7 @@ const { themeConfig } = storeToRefs(storesThemeConfig);
 const onPlaySoundRecording = (val: any) => {
 	playRecordRef.value.openDialog(val.otherAccept);
 };
-// 下载录音
+// 下载录音(因为天润无法配置跨域所以需要后端代理请求一次)
 const onDownload = (row: any) => {
 	ElMessageBox.confirm(`您确定要下载此录音吗?`, '提示', {
 		confirmButtonText: '确认',

+ 5 - 5
src/views/tels/callLog/zgCallLog.vue

@@ -240,7 +240,7 @@
 import { defineAsyncComponent, onMounted, reactive, ref, onActivated, onBeforeUnmount } from 'vue';
 import type { FormInstance } from 'element-plus';
 import { ElMessageBox } from 'element-plus';
-import { downloadFileByStream, getNeedArr } from '@/utils/tools';
+import { downloadFileBySrc, downloadFileByStream, getNeedArr } from '@/utils/tools';
 import { formatDate } from '@/utils/formatTime';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import { useRouter } from 'vue-router';
@@ -435,8 +435,9 @@ const { themeConfig } = storeToRefs(storesThemeConfig);
 const onPlaySoundRecording = (val: any) => {
 	playRecordRef.value.openDialog(val.id);
 };
-// 下载录音
+// 下载录音(兴唐直接打开就能下载)
 const onDownload = (row: any) => {
+	console.log(row,'1111')
 	ElMessageBox.confirm(`您确定要下载此录音吗?`, '提示', {
 		confirmButtonText: '确认',
 		cancelButtonText: '取消',
@@ -446,9 +447,8 @@ const onDownload = (row: any) => {
 		autofocus: false,
 	})
 		.then(() => {
-			fileDownload({ path: themeConfig.value.recordDownLoadPrefix + row.audioFile }).then((res: any) => {
-				downloadFileByStream(res, row.audioFile);
-			});
+			window.open(themeConfig.value.recordPrefix + row.audioFile);
+			// window.open('http://171.94.154.10:8066/2024/09/06/09/9_8225065_8225065_0__20240906_0930470379.wav');
 		})
 		.catch(() => {});
 };

+ 1 - 1
src/views/todo/seats/accept/zgAccept.vue

@@ -422,7 +422,7 @@
                     <el-button type="primary" @click="submit(ruleFormRef)" :loading="buttonLoading" v-if="canHandle" :disabled="!isSaveSuccess">
                       办理
                     </el-button>-->
-										<el-button class="default-button" @click="save(ruleFormRef)" :loading="buttonLoading" v-if="!isSaveSuccess"> 保存 </el-button>
+										<el-button type="primary" @click="save(ruleFormRef)" :loading="buttonLoading" v-if="!isSaveSuccess"> 保存 </el-button>
 										<el-button type="primary" @click="submit(ruleFormRef)" :loading="buttonLoading" v-if="canHandle && isSaveSuccess">
 											办理
 										</el-button>