@@ -180,47 +182,16 @@ import MarkdownIt from 'markdown-it'
import axios from 'axios'
export default {
- name: 'GroupRank',
+ name: 'GoodMusic',
+ props: {
+ recordData: {
+ type: Object,
+ default: () => ({})
+ }
+ },
data() {
return {
- recordings: [
- {
- id: 1,
- name: '常家硕-张三丰-亮剑二部-20分钟通话-25-07-16_18-23-04-44196-215.mp3',
- size: 2048576, // 2MB
- duration: '00:03:45',
- date: '2024-01-15',
- url: '/recordings/sample_call_1.mp3',
- transcription: null
- },
- {
- id: 2,
- name: '常家硕-张三丰-亮剑二部-20分钟通话-25-07-16_18-23-01-439240-599.mp3',
- size: 3145728, // 3MB
- duration: '00:05:20',
- date: '2024-01-14',
- url: '/recordings/sample_call_2.mp3',
- transcription: null
- },
- {
- id: 3,
- name: '常家硕-张三丰-亮剑二部-20分钟通话-25-07-16_18-23-02-754615-508.mp3',
- size: 2048576, // 2MB
- duration: '00:03:45',
- date: '2024-01-15',
- url: '/recordings/sample_call_1.mp3',
- transcription: null
- },
- {
- id: 4,
- name: '丁传辉-丁传辉-勇士二部-20分钟通话-25-07-10_10-32-54-813815-322.mp3',
- size: 3145728, // 3MB
- duration: '00:05:20',
- date: '2024-01-14',
- url: '/recordings/sample_call_2.mp3',
- transcription: null
- }
- ],
+ recordings: [ ],
selectedRecording: null,
currentAudio: null,
showTranscriptView: false,
@@ -252,6 +223,38 @@ export default {
formattedAnalysisResult() {
if (!this.analysisResult) return ''
return this.md.render(this.analysisResult)
+ },
+ // 处理外部传入的录音数据
+ processedRecordings() {
+ let externalRecordings = []
+
+ // 处理外部传入的数据
+ if (this.recordData && this.recordData.excellent_record_list) {
+ const recordList = this.recordData.excellent_record_list
+
+ // 遍历每个销售人员的录音
+ Object.keys(recordList).forEach(saleName => {
+ recordList[saleName].forEach((record, index) => {
+ externalRecordings.push({
+ id: `${saleName}_${index}`,
+ name: record.obj_file_name ? record.obj_file_name.split('/').pop() : `${record.sale_name}的录音`,
+ size: 2048576, // 默认大小
+ duration: '未知',
+ date: new Date().toLocaleDateString(),
+ url: record.obj_file_name,
+ transcription: record.context || null,
+ score: record.score,
+ sale_name: record.sale_name,
+ sop: record.sop,
+ isPlaying: false,
+ isConverting: false
+ })
+ })
+ })
+ }
+
+ // 合并外部数据和本地数据
+ return [...externalRecordings, ...this.recordings]
}
},
beforeUnmount() {
@@ -274,7 +277,13 @@ export default {
isConverting: false,
transcript: null
}
- this.recordings.push(recording)
+ // 如果没有外部数据,则添加到本地recordings数组
+ if (!this.recordData || !this.recordData.excellent_record_list) {
+ this.recordings.push(recording)
+ } else {
+ // 如果有外部数据,可以触发事件通知父组件或其他处理逻辑
+ this.$emit('file-uploaded', recording)
+ }
// 清空input以便重复选择同一文件
event.target.value = ''
}
@@ -285,12 +294,12 @@ export default {
},
// 播放/暂停录音
togglePlay(index) {
- const recording = this.recordings[index]
+ const recording = this.processedRecordings[index]
// 停止当前播放的音频
if (this.currentAudio) {
this.currentAudio.pause()
- this.recordings.forEach(r => r.isPlaying = false)
+ this.processedRecordings.forEach(r => r.isPlaying = false)
}
if (!recording.isPlaying) {
@@ -303,48 +312,7 @@ export default {
this.currentAudio = null
}
}
- },
- // 转换为文本
- async convertToText(index) {
- const recording = this.recordings[index]
- this.selectedRecording = index
- this.showTranscriptView = true
- this.isConverting = true
- this.currentTranscript = null
- this.currentViewType = 'transcript'
-
- try {
- // 模拟转换过程
- await axios.post('http://192.168.3.104:8000/api/asr/sync?priority=10', {
- url: recording.url
- })
-
-
- // 这里应该调用实际的语音转文本API
- // 目前使用模拟数据
- recording.transcript = `这是 ${recording.name} 的转换文本示例。在实际应用中,这里会显示真实的语音转文本结果。您可以集成百度、阿里云、腾讯云等语音识别服务来实现真正的语音转文本功能。`
- this.currentTranscript = recording.transcript
-
- // 转换完成后自动开始录音分析
- this.startRecordingAnalysis(recording)
-
- // 添加转换完成的动画效果
- const resultElement = document.querySelector('.conversion-result')
- if (resultElement) {
- resultElement.classList.add('show-result')
- setTimeout(() => {
- resultElement.classList.remove('show-result')
- }, 1000)
- }
- } catch (error) {
- console.error('转换失败:', error)
- alert('转换失败,请重试')
- this.showTranscriptView = false
- } finally {
- this.isConverting = false
- }
- },
-
+ },
// 开始通话录音分析
async startRecordingAnalysis(recording) {
this.isAnalyzing = true
@@ -361,7 +329,7 @@ export default {
录音信息:
文件名:${recording.name}
文件大小:${this.formatFileSize(recording.size)}
-转换文本:${recording.transcript}`
+转换文本:${recording.transcription}`
try {
await this.chatService_02.sendMessage(
@@ -436,16 +404,58 @@ export default {
fileInput.click()
document.body.removeChild(fileInput)
},
- downloadRecording(index) {
- const recording = this.recordings[index]
- if (recording && recording.url) {
- const link = document.createElement('a')
- link.href = recording.url
- link.download = recording.name
- document.body.appendChild(link)
- link.click()
- document.body.removeChild(link)
+ // 转换为文字
+ convertToText(index) {
+ const recording = this.processedRecordings[index]
+ if (recording.isConverting) return
+
+ // 如果有外部传入的transcription,直接显示
+ if (recording.transcription) {
+ this.currentTranscript = recording.transcription
+ this.showTranscriptView = true
+ this.currentViewType = 'transcript'
+
+ // 开始录音分析
+ this.switchViewType('analysis')
+ this.startRecordingAnalysis(recording)
+ return
}
+
+ recording.isConverting = true
+ this.isConverting = true
+ this.showTranscriptView = true
+ this.currentViewType = 'transcript'
+
+ // 模拟转换过程(用于本地上传的文件)
+ setTimeout(() => {
+ const transcriptText = `这是录音 "${recording.name}" 的转录文本内容。这里会显示实际的语音转文字结果。`
+ recording.transcription = transcriptText
+ this.currentTranscript = transcriptText
+ recording.isConverting = false
+ this.isConverting = false
+
+ // 开始录音分析
+ this.startRecordingAnalysis(recording)
+ }, 2000)
+ },
+ downloadRecording(index) {
+ const recording = this.processedRecordings[index]
+
+ // 使用obj_file_name字段作为下载链接
+ const downloadUrl = recording.url
+
+ if (!downloadUrl) {
+ alert('录音文件不可用')
+ return
+ }
+
+ const link = document.createElement('a')
+ link.href = downloadUrl
+ link.download = recording.name
+ link.style.display = 'none'
+ document.body.appendChild(link)
+ link.click()
+ document.body.removeChild(link)
}
}
}
@@ -585,6 +595,16 @@ export default {
color: #909399;
}
+.sale-name {
+ color: #409eff;
+ font-weight: 500;
+}
+
+.score {
+ color: #67c23a;
+ font-weight: 500;
+}
+
.recording-actions {
display: flex;
gap: 12px;
@@ -797,11 +817,13 @@ export default {
}
.transcript-text {
- padding: 16px;
+ padding: 8px;
line-height: 1.6;
color: #303133;
background: white;
flex: 1;
+ max-height: 200px;
+
overflow-y: auto;
animation: fadeIn 0.5s ease;
}
@@ -819,7 +841,9 @@ export default {
font-size: 14px;
background: #fafafa;
border-radius: 4px;
- padding: 20px;
+ padding: 8px;
+ max-height: 200px;
+
}
.analysis-content h1,
diff --git a/my-vue-app/src/views/secondTop/secondTop.vue b/my-vue-app/src/views/secondTop/secondTop.vue
index ade79a7..6aa312c 100644
--- a/my-vue-app/src/views/secondTop/secondTop.vue
+++ b/my-vue-app/src/views/secondTop/secondTop.vue
@@ -67,7 +67,7 @@
-
+
@@ -714,6 +714,30 @@ const conversionRateVsAverage = ref({})
const res = await getExcellentRecordFile(requestParams)
if (res.code === 200) {
goodRecord.value = res.data
+ /**
+ * "data": {
+ "user_name": "张三丰",
+ "user_level": 4,
+ "excellent_record_list": {
+ "马然": [
+ {
+ "sale_name": "马然",
+ "sop": null,
+ "context": "[4.61s - 324.55s] Speaker 1: 哎,星宇吗?能看到常老师吧。嗯嗯,好,老师也把摄像头翻转过来,带您看一下咱们平台。嗯,你看能看到吧啊,可以看到嗯,咱们规模够大吧啊,我们是全国也是全互联网规模最大的解决青少年心理问题的平台。所以为什么一开始就跟您说孩子问题不用担心,不用害怕。对于您来说,现在不知道该怎么去跟孩子沟通了,我们也能够感受到孩子也很痛苦,他也想改变,他也想让自己变优秀,但是到底怎么引导着孩子,让他成为一个优秀的自己呢?我们每天去处理的都是这样的事情。因为我刚刚跟您说的很多的各种阶段的、初中的、高中的,甚至说进入大学的孩子,也是本来也是一一个很优秀的孩子,真的就是面对这些问题,面对这些困难,他不知道怎么去处理我们家长到底如何给予孩子帮助?你看这个这是央视的品牌,中国,咱们是重点推荐品牌,这是央视的力量栏目组。咱们是受邀专访企业,这是咱们赵院长去年去参加腾讯的育儿盛典,给他们颁发的综合实力。家庭教育品牌这边呢是咱们前台暖洋葱,家庭教育能看到吧啊,看到了嗯,你看咱们的规模都是非常大的。我们的愿景就是让咱们孩子开心快乐的去主动学习自己,能够把精力放在学习上,我们也不用再去天天担心孩子了,孩子也能够有个更好的发展。咱们的使命就是改善我们的家庭教育,影响幸福代人孩只是孩子一一个成绩,有一良好的发展,更多多也孩孩子一个良好的品良良好心心态,够够自己己人生生展展,是咱们这几天上课的,也是说赵世杰、赵院长还记得吧?中科院的高级心理咨询师,也是我们暖阳村教研中心的主任课就在他那里买的。对对,然后最擅长的就是解决提升孩子这些学习力内驱力,让他主动学习,提升成绩,解决这些各种原因,厌学休学,不想上学,不想学习依赖手机沉迷游戏的问题。可以说,赵院孩子问题,赵院长眼中中等程度算不上,非常好解决,又不是说真的去割动脉了。那孩子也有这样一个行为,但是划破皮是不是?但是我们也需要重视视,毕竟现在是发的就是这个对,也是有这样一个感觉自己心理上的痛苦,当心理上的痛苦,他无法承受的时候,他就只能通过伤害自身身体来缓解内心的这种压力了。这边呢是咱们一个发展历程。你看我们是零九年的时候建立的,当时在北京、北京十七个家里面,九位老师都是如何高无一例外,孩子学习能力是有的,包括甚至小学的时候都非常听话,也非常开朗。但是你会发现,一旦进入初中,一旦进入高中,各种各样的情况,各种各样的问题就开始出现了。比如说跟咱们孩子一样,学校里面老师批评了孩子自尊心受到打击了,都甚至同学矛盾、矛盾,甚至到校园霸凌的程度。好,有的也是爸爸妈妈长期在家里面吵架,甚至说长期的对于孩子缺乏陪伴,孩子没有安全感,是不是那孩子的这个性格方面就肯定爸爸爸。嗯嗯,这一点咱们对于孩子做的还是很好的,但孩子面对的问题是各种各样的,从来没从来没挑战。嗯,有一个幸福的家庭,那这样已经也是超过大部分的来来解决的这些家长了。那关键就是孩子在面对其他问题的时候,我们到底能够给予到孩子一个什么样的帮助。由于孩子他没有一个解决的问题,他孩子就是孩子他不知道该怎么办,他的想法都是非常幼稚的,非常单纯的。我们家长到底如何引导着孩子给到他力量温暖和引导,让他去解决这些问题,对不对?你们这一开始咱们就是洋葱互助会的形式成立的。零九年到一三年,咱们互助会就累计帮助了数万人了。到一五年,我们正式成立了暖洋葱家庭教育。一七年两年的时间,咱们迅速发展,当时已经是非常大的规模了,能看到吧?很多人,你看你看现在国家也开始重视青少年的心理健康了,要求学校里面搭建什么校园心理工作室?我们想让孩子长大之后成为一个优秀的人。首先,他得能够心理健康的长大吧,对不对?那他们需要找到专业的平台呀,对,那就找到咱们咱们去帮助全国多所学校搭建校园经理工作室。二二年,全国多家媒体登门进行独家的专访。二三年抖音平台家庭教育板块给咱们颁发新锐领学官的证书,什么意思呢?孩子妈妈家庭教育这个板块,我们要说自己是第二的话,那就没人有资格说自己是第一了。领学官领学官领了在家学习的人才叫领学官。这个是二四年央视的两个栏目,对我们进行独家专访的原因。我们也成功的帮助,数万组家庭走向幸福。孩子们现在对我们洋葱有一个大概的了解了吧?啊嗯所以说专业的事情交给专业的人。咱们这些问题呢,我会反馈咱们赵院长让他去进行针对性的讲课。我稍后也整理一下咱们机构的资料,包括跟您孩子类似的他们的一些成长改变发给咱们,咱们可以了解一下课程。开始之前我也会提醒咱们有问题了,随时联系我,好吧,可以可以可以。那那老师今天就咱们沟通到这里,他的妈妈再见。好的好的好的嗯,\n[324.71s - 325.87s] Speaker 0: 好的,好,谢谢啊。\n",
+ "obj_file_name": "http://192.168.3.112:5000/api/record/download/马然-20分钟通话-25-08-20_20-17-36-347230-987.mp3",
+ "score": 25.0
+ },
+ {
+ "sale_name": "马然",
+ "sop": null,
+ "context": "[8.79s - 22.35s] Speaker 0: 我刚在给你打电话接话啊,我可以给初二给人打电话,给喂我的妈妈刚刚玩一下就行。现是进入直播间学习上班哦,\n[27.25s - 34.91s] Speaker 0: 但是这个哎新宇妈妈一个月开始十分钟吗?\n[34.91s - 36.13s] Speaker 1: 啊,能听到吗?\n[36.13s - 37.81s] Speaker 0: 稍等一下哈哦哦,\n[38.15s - 197.56s] Speaker 1: 等一下他在忙是吧,不能不能听得到。你说嗯信号怎么好哦,行行行,是咱们第三节直播已经开始十多分钟了,是来提醒了们上课的,看到没有?我刚才没听没有没有嗯嗯,老师今天晚上都忙,没时间吗?这几天赶货比较忙哦,赶货干啊,刚吃饭厂里上班的哦哦哦,厂里上班咱们就是刚休息是吗?一会儿是还要去吗?对,刚吃饭回来。对,哎呦,虽然我上课这两天上课都是边上班边听的。嗯嗯嗯,对,咱们可以戴个耳机边上班边听。嗯啊对对对,孩子这两天咱们跟孩子沟通情况怎么样啊,孩子没回来了,还在学校。嗯,嗯,哦咱们这两天也没给他发消息是吧?呃,手机没说,反正嗯手机没有嗯对手机收了。嗯,那郑院长昨天也提到了咱们的一对一指导,帮助孩子去解决这样一个问题。不管是心理方面了,还是对于学习这些的,咱们是呃怎么考虑的呢?我刚今天又听了我今天的那个课听差不多了。嗯,嗯,那个有点贵呀。嗯,好的,妈妈两个月的一对一指导啊。咱们如果说了解的话,平时都是一万以上的,也只有咱们这一天赵院长给我们的一个优惠名额是六千八。咱们也而且还是你抢到这个名额优惠名额有三百抵三千。今天晚上价值五千九百八的证件训练,也是截止赠送了三个六千八。说实话,孩孩子这样一个情况,我们这种情况,我们这种家庭嗯嗯非常啊对我非常理解咱们这样一个心情,对不对?但是如果说你孩子这样一个问题,你想两个月的老师这样一堆指导,你要是我我给你找一个一千块的让你报名,你想的是啥样的,老师给他们指导啊,对不对?哎,对于孩子来说,家家庭太困难了,我们哎,太难了,反正先写在外面的事。没事没事,咱们先嗯今天晚上依然该听课听课。好吧,有很多家长都是刚刚还没进去,没没去,刚刚吃饭有点忙。嗯,行行,刚刚回来,我就是稍后把链接发给咱们。然后晚上的时候,我也我我嗯整理跟咱们家庭情况比较相似的,都可以发给咱们,咱们可以看一看了解一下,好吧,我都还没没来得及看。你昨天给我发了好多,我都没没仔细看。哎呦啊,那都是时间太忙,工作太忙。那行,咱们先进直播间签到打卡吧,行吧,进直播间签到打卡,结果回放。嗯,好谢行吧,再见。好好好好好再见嗯,拜拜。\n",
+ "obj_file_name": "http://192.168.3.112:5000/api/record/download/马然-20分钟通话-25-08-20_20-24-43-653520-759.mp3",
+ "score": 55.0
+ }
+ ]
+ }
+ }
+ */
}
} catch (error) {
console.error('获取优秀录音失败:', error)