<template> <view class="box"> <view class="headbox"> <!-- 顶部时间 --> <view class="headboxhead"> <view class="boxhead1">{{date}}</view> <view class="boxhead2" v-if="jiaoseshow"> <image v-if="status==1" @click="tappick()" src="../../static/images/pike.png" mode=""></image> <image v-if="status==0" @click="notappick()" src="../../static/images/nopike.png" mode=""></image> </view> </view> <!-- <view class="inputbox" v-if="guanjianciishow"> <view class="thisinput" @click="toKeywordsearch()"> 请输入或选择 </view> </view> --> <!-- 标记顾问 --> <view class="headboxbott"> <view class="headovfu"> <u-tabs-swiper ref="tabs" font-size="30" :bold="true" swiper-width="600" :current="roleindex" @change="tapspagek" inactive-color="#b1b1b1" active-color="#008ef2" :list="tablist" :is-scroll="true"> </u-tabs-swiper> </view> <view class="headpade"> <view class="biaoji" @tap="tagtap()">标记</view> </view> </view> </view> <scroll-view :scroll-top="scrollTop" lower-threshold='100px' @scrolltolower="ltolower()" upper-threshold='40px' @scrolltoupper="rolltoupper()" :scroll-into-view="scrollId" scroll-y="true" class="zhuti text scroll-Y"> <!-- 聊天记录--> <view class="dialog-block" v-for="(dialog,i) in dialogList" :key="i"> <view :id="'dialog'+i" class="fileName">录音文件</view> <view class="text" :id="'dialog'+csdFileindex+'text'+item.bg" :class="{active: Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow, isGreen: item.isShow == 0}" v-for="(item,index) in dialog.message" :key="index" :data-speaker="item.speaker"> <view class="avatar"> <view :style="[SPEAKERSTYLE(item.speaker)]"> <text v-if="item.isShow == 0">顾</text> <text v-else>{{ item.speaker | toCapital }}</text> </view> </view> <view class="contentInfo"> <view class="info"> <text class="AudioUserName">{{ item.speaker | toCapital }}</text> <text>{{conversionTiame(item.bg/1000)}}</text> </view> <view class="contentMain"> <view class="content"> <view @longpress="changanxiaoguo(item,index,i)" v-html="item.onebest"></view> <view class="tankuangcss" :class="{bottoms:index == 0}" v-if="item.isshow"> <view @click="clickcopy()" style="width: 60rpx;font-size: 24rpx;text-align: center;margin-left: 24rpx;">复制 </view> <view @click="Oftenthewrongword()" style="width: 80rpx;font-size: 24rpx;text-align: center;margin-left: 22rpx;">常错词 </view> <view v-if="jiaoseshow" @click="Addtheessence()" style="width: 80rpx;font-size: 24rpx;text-align: center;margin-left: 22rpx;">加精华 </view> <view @click="Modifyrole(index,item)" style="font-size: 24rpx;text-align: center;margin-left: 14rpx;">修改角色 </view> </view> </view> <image @click="clickbofang(dialog.backindex,item)" class="play" src="../../static/images/recordingManagement/play.png"></image> </view> </view> </view> </view> </scroll-view> <view class="bottombox"> <!-- 播放块 :src="recordPath" --> <zaudio :duration="duration" theme="theme4"></zaudio> <!-- 底部弹框 --> <view class="botbotmm"> <view class="tmmchen" @click="guanjiancishifo()"> <image src="../../static/images/audioinfo1.png" mode=""></image> <view>关键词</view> </view> <view class="fill"></view> <view class="tmmchen" @click="Receivedetailsabouttab('intention')"> <image src="../../static/images/audioinfo3.png" mode=""></image> <view>客户意向</view> </view> <view class="fill"></view> <view class="tmmchen" @click="Receivedetailsabouttab('Pinspeak')"> <image src="../../static/images/audioinfo4.png" mode=""></image> <view>销讲执行</view> </view> <view class="fill"></view> <!-- audioinfo2 --> <view class="tmmchen" v-if="Menulistisshow==true"> <image @click="Receivedetailsabouttab('Receivedetailsabout')" src="../../static/images/allimg.png" mode=""></image> <view @click="Receivedetailsabouttab('Receivedetailsabout')">更多</view> <view class="allimg" v-if="Thetapeidisshow"> <view @click="Receivetap()" style="line-height: 70rpx;margin-top: 10rpx;">接待信息</view> <view @click="alllogo()" style="line-height:70rpx;">{{userlistobj.validInvalidName}}</view> </view> </view> <view class="tmmchen" @click="Receivetap()" v-if="Menulistisshow==false"> <image @click="Receivedetailsabouttab('Receivedetailsabout')" src="../../static/images/audioinfo2.png" mode=""></image> <view @click="Receivedetailsabouttab('Receivedetailsabout')">接待信息</view> </view> </view> </view> <!-- 标记 --> <view class="zhezhoa" v-if="biojiisshow" @tap="unmarktap()"></view> <view class="bounced" v-if="biojiisshow"> <view class="jiajinghuatit">标记为顾问</view> <view style="width: 95%;display: flex;flex-wrap: wrap;margin: 0 auto;padding-top: 30rpx;padding-bottom: 30rpx;"> <view class="viewclace" :class="roleindexbiaoji == index ? 'bosdttom' : ''" @click="biaojixuanze(index)" v-for="(item,index) in tablist.slice(1,tablist.length)" :key="index"> <view>{{item.name}}</view> </view> </view> <view class="bounced3" style="margin-top: 20rpx;"> <view class="bounced3-1" @tap="unmarktap()">取消</view> <view class="bounced3-2" @tap="$noMultipleClicks(Confirmthetag)">确认</view> </view> </view> <!-- 加入常错词 --> <view class="zhezhoa" v-if="isshow2" @tap="Cancelout"></view> <u-modal v-model="isshow2" title="添加常错词" :show-cancel-button="true" @cancel="Cancelout" @confirm="$noMultipleClicks(Confirmtheexit)"> <view class="tian-view"> <viwe class="tian-view-t1"></viwe> <viwe class="tian-view-t2">常错词:</viwe> <viwe class="tian-view-t3"> <textarea :auto-height="true" type="text" v-model="thewrongword" :disabled="isNum" class="tian-input" placeholder="请输入" /> </viwe> </view> <view class="tian-view" style="margin-bottom: 74rpx;"> <viwe class="tian-view-t1"></viwe> <viwe class="tian-view-t2">正确词:</viwe> <viwe class="tian-view-t3"> <input class="tian-input" v-model="reswrongword" type="text" placeholder="请输入" /> </viwe> </view> </u-modal> <!-- <view class="bounced" v-if="isshow2"> <view class="tian-view"> <viwe class="tian-view-t1"></viwe> <viwe class="tian-view-t2">常错词:</viwe> <viwe class="tian-view-t3"> <input type="text" v-model="thewrongword" class="tian-input" placeholder="请输入" /> </viwe> </view> <view class="tian-view"> <viwe class="tian-view-t1"></viwe> <viwe class="tian-view-t2">正确词:</viwe> <viwe class="tian-view-t3"> <input class="tian-input" v-model="reswrongword" type="text" placeholder="请输入" /> </viwe> </view> <view class="bounced3"> <view class="bounced3-1" @tap="Cancelout">取消</view> <view class="bounced3-2" @tap="Confirmtheexit">确认</view> </view> </view> --> <!-- 加精华 --> <view class="zhezhoa" v-if="isshow3" @tap="Cancelout2"></view> <view class="bounced" v-if="isshow3"> <view class="jiajinghuatit">加精华</view> <view style="width: 100%;text-indent: 20rpx;font-size: 28rpx;">选择标签</view> <view class="jiajinghuaview"> <view class="jighuaview2" v-for="(item,index) in biaoqianlist" :key="index" :class="biaoqianindex == index ? 'biaoqiantom' : ''"> <view class="view1-text" @click="tapbiaoqianclisck(index)">{{item.name}}</view> </view> </view> <view class="bounced3"> <view class="bounced3-1" @tap="Cancelout2">取消</view> <view class="bounced3-2" @tap="$noMultipleClicks(Confirmtheexit2)">确认</view> </view> </view> <!-- 接待详情 --> <view class="zhezhoa" @click="clenReceivedetailsabout()" v-if="Receivedetailsabout"></view> <view class="followingpop-up" v-if="Receivedetailsabout"> <view class="guanbibox"> <image class="guanbixen" @click="clenReceivedetailsabout()" src="../../static/images/Shutdown.png" mode=""></image> <view class="cenisboxtab"> <view class="cenisboxtabview"> <view>接待详情</view> </view> </view> </view> <view class="cenisbox"> <view style="width: 96%;height: 26rpx;display: flex;margin: 0 auto; margin-top: 40rpx;align-items: center;"> <view style="width: 25%;color: #666666;font-size: 26rpx;">接待顾问</view> <view style="width: 75%;color: #333333;font-size: 26rpx;">{{userlistobj.agentName}}</view> </view> <view style="width: 96%;height: 26rpx;display: flex;margin: 0 auto; margin-top: 40rpx;align-items: center;"> <view style="width: 25%;color: #666666;font-size: 26rpx;">意向项目</view> <view style="width: 75%;color: #333333;font-size: 26rpx;">{{userlistobj.projectName}}</view> </view> <view style="width: 96%;height: 26rpx;display: flex;margin: 0 auto; margin-top: 40rpx;align-items: center;"> <view style="width: 25%;color: #666666;font-size: 26rpx;">接待开始时间</view> <view style="width: 75%;color: #333333;font-size: 26rpx;">{{userlistobj.staTime}}</view> </view> <view style="width: 96%;height: 26rpx;display: flex;margin: 0 auto; margin-top: 40rpx;align-items: center;"> <view style="width: 25%;color: #666666;font-size: 26rpx;">接待结束时间</view> <view style="width: 75%;color: #333333;font-size: 26rpx;">{{userlistobj.endTime1}}</view> </view> <view style="width: 96%;height: 26rpx;display: flex;margin: 0 auto; margin-top: 40rpx;align-items: center;"> <view style="width: 25%;color: #666666;font-size: 26rpx;">录音时长</view> <view style="width: 75%;color: #333333;font-size: 26rpx;">{{userlistobj.mm}}分钟</view> </view> </view> </view> <!-- 销讲执行 --> <view class="zhezhoa" @click="clenReceivedetailsabout()" v-if="Pinspeak"></view> <view class="followingpop-up" v-if="Pinspeak"> <view class="guanbibox"> <image class="guanbixen" @click="clenReceivedetailsabout()" src="../../static/images/Shutdown.png" mode=""></image> <view class="cenisboxtab"> <view class="cenisboxtabview"> <view>销讲执行</view> </view> </view> </view> <view class="pingfenbox"> <view :class="{ activecllasscet: zhixingcenterindex == 0 }" @click="recordclick(0)">销讲总执行率{{totalRate}}% </view> <view v-if="methodsisshow==true" :class="{ activecllasscet: zhixingcenterindex == 1 }" @click="recordclick(1)">禁忌执行</view> </view> <view v-if="zhixingcenterindex == 0" class="cenisbox"> <view style="width: 100%;height: 80rpx;border-bottom: 1rpx solid #E0E0E0;display: flex;align-items: center;"> <view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 20rpx;">指标</view> <view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 170rpx;">执行率 </view> </view> <view class="Level-box" v-for="(item,index) in ratelist" :key="index"> <view class="Level1che" @click="changeshow(item,1)"> <view class="title1">{{item.name.substring(0,8)}}</view> <view class="leve1-jindu"> <view class="jindutiao"> <view class="huanxing" :style="{width: item.ratepercent/item.rate*100+'%'}"></view> <view class="text">{{((item.ratepercent/item.rate).toFixed(2)*100).toFixed()}}%</view> </view> </view> <view class="jiantobox"> <image v-if="!item.show" class="arrow rotatearrow" src="/static/images/down.png" mode="" /> <image v-else class="arrow" src="/static/images/up.png" mode="" /> </view> </view> <view class="hhhbox" v-if="item.show" v-for="(subitem,i) in item.children" :key="i"> <view class="Level2che" @click="changeshow2(subitem,1)"> <view class="title1">{{subitem.name.substring(0,8)}}</view> <view class="leve1-jindu"> <view class="zhixing" v-if="!subitem.selected">已执行</view> <view class="zhixing2" v-else>未执行</view> </view> <view class="jiantobox"> <image v-if="!subitem.show" class="arrow rotatearrow" src="/static/images/down.png" mode="" /> <image v-else class="arrow" src="/static/images/up.png" mode="" /> </view> </view> <view class="hsnrtest" v-if="subitem.show">话术内容</view> <view class="Level3che" @tap="clickaudeopal(che)" v-if="subitem.show" v-for="(che,inc) in subitem.children" :key='inc'> <view class="title1">{{inc+1}}.{{che.name}}</view> <view class="jiantobox"> <image v-if="che.selected==0" class="arrow" src="/static/images/rate-checked.png" mode="" /> </view> </view> <view v-if="subitem.show" style="width: 100%;height: 30rpx;"></view> </view> </view> </view> <view v-if="zhixingcenterindex == 1"> <view v-if="prohibitedlist.length!=0" class="title1-12" @click="tapbadge(item)" v-for="(item,index) in prohibitedlist" :key='index'>{{index+1}}.{{item}}</view> <view v-if="prohibitedlist.length==0" style="width: 100%;text-align: center;margin-top: 60rpx;">暂无数据 </view> </view> </view> <!-- 客户意向 --> <view class="zhezhoa" @click="clenReceivedetailsabout()" v-if="intention"></view> <view class="followingpop-up" v-if="intention"> <view class="guanbibox"> <image class="guanbixen" @click="clenReceivedetailsabout()" src="../../static/images/Shutdown.png" mode=""></image> <view class="cenisboxtab"> <view class="cenisboxtabview"> <view>客户意向</view> </view> </view> </view> <view class="pingfenbox"> <view :class="{ activecllasscet: kehuyixiangcenterindex == 0 }" @click="customerofintention(0)">系统分析 </view> <view :class="{ activecllasscet: kehuyixiangcenterindex == 1 }" @click="customerofintention(1)">人工校准 </view> </view> <view class="cenisbox" v-if="kehuyixiangcenterindex==0"> <view style="width: 100%;height: 100%;text-align: center;margin-top: 200rpx;" v-if="Acquirecustomerintentlist.length==0"> 暂无数据 </view> <view class="jianbox" v-if="Acquirecustomerintentlist.length!=0" v-for="(item,index) in Acquirecustomerintentlist" :key='index'> <view class="jianbox-cen"> <view class="jianboxtext">{{item.name}}</view> <view class="jianboxjian" @click="Acquishow(index)"> <image v-if="item.isshow==false" class="jiantop" src="../../static/images/jiantop.png" mode=""></image> <image v-if="item.isshow==true" class="jiantop1" src="../../static/images/jianbutton.png" mode=""></image> </view> </view> <view style="width: 690rpx;margin: 0 auto;display: flex;flex-wrap: wrap;" v-if="item.isshow==true"> <view class="sdfsaf" v-if="chend.showType==0" @click="argece(chend)" v-for="(chend,i) in item.children" :key='i'> <view class="jiangshang sdfsaf">{{chend.text}}</view> </view> <view class="sdfsaf" v-if="chend.showType==1" @click="argece(chend)" v-for="(chend,i) in item.children" :key='i'> <view class="jiangshang1 sdfsaf">{{chend.text}}</view> </view> </view> </view> </view> <!-- @click="Edittag(item,chend,index,i)" --> <view class="cenisbox" v-if="kehuyixiangcenterindex==1"> <view style="width: 100%;height: 100%;text-align: center;margin-top: 200rpx;" v-if="Acquirecustomerintentlist2.length==0"> 暂无数据 </view> <view class="jianbox" v-if="Acquirecustomerintentlist2.length!=0" v-for="(item,index) in Acquirecustomerintentlist2" :key='index'> <view class="jianbox-cen"> <view class="jianboxtext">{{item.name}}</view> <view class="jianboxjian" @click="Acquishow2(index)"> <image v-if="item.isshow==false" class="jiantop" src="../../static/images/jiantop.png" mode=""></image> <image v-if="item.isshow==true" class="jiantop1" src="../../static/images/jianbutton.png" mode=""></image> </view> </view> <view class="bioqianwayl" v-if="item.isshow==true"> <view class="jiangshang" v-for="(chend,i) in item.children" :key='i' v-if="chend.selected==0"> {{chend.text}} </view> </view> </view> </view> <view class="calibration" @click="$noMultipleClicks(tocalibration)">校准</view> </view> <view class="zhezhoa" v-if="effective"></view> <view class="bounced" v-if="effective"> <view class="jiajinghuatit">选择</view> <view> <view class="uni-list"> <radio-group @change="radioChange"> <label style="display: flex;align-items: center;font-size: 30rpx; width: 94%;height: 80rpx;margin: 0 auto;" v-for="(item, index) in effectiveitems" :key="item.value"> <view style="margin-top: 2rpx;flex: 1; text-indent: 20rpx;">{{item.name}}</view> <view style="width: 80rpx;"> <radio :value="item.value" :checked="index == effectiveindex" /> </view> </label> </radio-group> </view> <view v-if="effectiveindex==4"> <textarea class="ffectivetext" v-model="effectiveitext" placeholder="备注" /> </view> </view> <view class="bounced3"> <view class="bounced3-1" @click="effective=false">取消</view> <view class="bounced3-2" @click="$noMultipleClicks(effectiveAdd)">确认</view> </view> </view> <!-- 修改角色 --> <view class="zhezhoa" v-if="roleisshaw" @tap="unmarktap()"></view> <view class="bounced" v-if="roleisshaw"> <view class="jiajinghuatit">修改角色</view> <view style="width: 95%;display: flex;flex-wrap: wrap;margin: 0 auto;padding-top: 30rpx;padding-bottom: 30rpx;"> <view class="viewclace" :class="roleindexrow == index ? 'bosdttom' : ''" @click="rl=rolexuanze(index)" v-for="(item,index) in tablist.slice(1,tablist.length)" :key="index"> <view>{{item.name}}</view> </view> <view class="headpade" style="border: none;"> <view class="biaoji" @tap="addRole">新增角色</view> </view> </view> <view class="bounced3" style="margin-top: 20rpx;"> <view class="bounced3-1" @tap="unmarktap()">取消</view> <view class="bounced3-2" @tap="$noMultipleClicks(roletab)">确认</view> </view> </view> <u-toast ref="uToast" /> </view> </template> <script> var util = require("../../utils/util.js"); var config = require("../../config"); import zaudio from '@/components/uniapp-zaudio/zaudio'; export default { components: { zaudio }, data() { return { noClick: true, kehuyixiangcenterindex: 0, Acquirecustomerintentlist2: [], zhixingcenterindex: 0, prohibitedlist: [], guanjianciishow: false, Aimg: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAACqVBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/f3////9/f39/f3////////9/f3////////////9/f3////9/f39/f3////9/f3////////9/f3////9/f3////////////////9/f39/f3////////9/f39/f3////9/f39/f3////////9/f39/f3////////9/f39/f39/f3////////////////+/v7+/v7////+/v7////+/v7////+/v7+/v7////////+/v7+/v7////+/v7////+/v7////////////////////////////+/v7////+/v7////+/v7+/v7////////////+/v7////+/v7////+/v7+/v7////////+/v7////+/v7////////+/v7////////+/v7////+/v7+/v7+/v7////////+/v7+/v7////+/v7+/v7////+/v7////+/v7////+/v7////+/v7+/v7////+/v7+/v7////+/v7////+/v7////+/v7+/v7////+/v5jdC9iAAAA4nRSTlMAAQIDBAUGBwgLDA0ODxARExQVFhgbHB4fICEiIyQmJygpKy4wMTIzNDY3ODk6Oz0+P0BBQkRGR0lKTE5PUFFTVFVXWFlcXV9gYWJjZWZnaGlqa2xtbm9wcXJzdHV2d3h6e319foGBgoODh4mKiouMjI2QkZKSk5OUlpeYmZmam5ycnZ+foKGio6SmqKmpq6yur7CwsbGytba5uru8wMDBwcLCw8XGx8jJysrLzM7P0dLT1dXW1tfY2drc3N7f4OHh5Obm5+jp6uvs7vDx8vLz8/T09fX29/f4+fn6+vz8/f7+RVDt+wAAA55JREFUGBntwf9/1HMAB/DX7XYbuXWV1cyMoixfugrRGNXytW33pbVdJ83XkiMLSb4LJd/zZUi0SKT5FmGS77HUVaixnHP2+kt8vt3Zbp/3+7P3XR5+8XziP1E4uiYcrh1bjMNi6NzXumnoeX3eSOSrpHUv+zi0ogJ5qd3JLN1XuJGzwqW0sW4oclT0Im19XIqcuNdQ4D0vcnEDhdYgB2f+SbFZUHbEdkrsLYeqFko9CEVH7qJUohxqLqODO6BmLR18XwAVRQfpZDxUnExHjVBRR0eroGIZHX0AFe10tA8qdtNZIRR00VEPVLxLRzuh4jk62gIVy+joSaiI0tECqPDT0blQ4f6RDpI+KHmYDjZBzWQ6aIaibZSK+6BoOqViUOXqoER8BJSdlqJYFDm4h0LveJAD7+cUiFciJ1U/01aiGjk65zfaSF6EnE3azQEO1iAPFZuZZes45MUT3cM+emLFyNfwK3fQ8k1sFA6L0cElTzx9d1OVC/8bNG/gzY+GQaKk461gCQZr8iMHSNZD4nySv6wYj0EYFv2UhqcgcTsN70ePhtzER3+lJe6BxXP9jTctvrl1yS1jkLaNlkTbBR6IlF3dyT78sHh+oqkSlrJe/uOH1jGw4apem2I/1yLtGRo6kRZiP73t57mQxb+Z2dqRdikNtyLtBWb78Cz05bomyQH+KIGljIYaWNxxDtC72ouMgsdpZzosHhqqYDmFdraOQNpttHUfLKU0TITlKtra6IZpCu3tgMVPQx0sG2ivDqaVFDgOppk0LIbJm6C9DTB1UCAMU4SGZ2GqocAumL6jQBtMMRq2wLScAik3dMV/UWB/EQwrafgSpk6KlEJ3LIXOgGE9DQdgqKDQSdBNoNAiGL6i6SjowhSaAt1UCm2CzpOk6QTonqfQJdBdSKGkD5pKWqZCU7iHQtdB10KxWmjOpqUJmtMp9gB091LsIWiCtCyFZiHFXoZuHcW+hiZGy0vQvE2xT6DbTolKAI/R8hmA4SmKdUG3jxIhAG/QkigAZlAi6QJQTJk2AF1MGwXcRRkfgJGU2V8EHzP8wBeUqQQwllKTcCozpuFESk0AMJNSC3AxM8KYT6lpAFootRGLmLEQ6ynVCCBAqcSQ1cy4f8ghSs0HcMzvlKp+lRmvVFMqNQ6aaIoyd3Yy49vllOmuh+H4WZFIpFnTpJmjadTM1oQ1oVAgFNQENA0N9f01BIKh8OzGOU3NkbmXzwuV41/wNztgHKhu7WKTAAAAAElFTkSuQmCC", tablist: [], roleindex: 0, roleindexbiaoji: 0, audioPlay: false, //当前的播放状态控制 sliderValue: 0, //进度条最小值 sliderMax: 0, //进度条最大值 currentTimeStr: "00:00", //当前进度的时间 timeStr: "00:00", //总的时间 recordPath: "", customerId: "", luyinList: [], //录音文件 newluyinList: [], dialogList: [], //录音识别列表 csdFileindex: 0, date: "", //年月日 tab: 0, // 默认是音频识别 scrollTop: 0, scrollId: "", playNow: 0, alltimeStr: "00:00:00", ratelist: [], //评分列表 totalRate: "", thewrongword: "", //错误词 reswrongword: "", //正确词 isshow2: false, messagelisy: [], isshow3: false, biaoqianlist: [], biaoqianindex: 0, changanitem: {}, duihuawenjianid: "", biaoqianid: "", status: 0, userInfo: {}, jiaoseshow: true, itemobj: {}, textindex: 0, //下拉 转写文件下标 toptextindex: 0, //上拉 转写文件下标 biojiisshow: false, speaker: '', dshfkjsdkksodofydwfkhwdfkjh: 0, userlistobj: {}, Acquirecustomerintentlist: [], options1: [], Receivedetailsabout: false, Pinspeak: false, intention: false, yixingindex: 0, //意向,统计切换 buildingID: '', methodsisshow: false, Thetapeidisshow: false, Menulist: [], Menulistisshow: false, validInvalid: 0, calibration: 0, effective: false, effectiveindex: '0', effectiveitems: [{ value: '1', name: '没电指派无录音', checked: true }, { value: '2', name: '离线指派无录音', }, { value: '3', name: '系统测试误操作' }, { value: '4', name: '非接访场景录音' }, { value: '5', name: '其他' } ], effectiveitext: '', textItself: '', argtextindex1: 0, argtextindex2: 0, roleisshaw: false, roleindexrow: 0, roletiaoshu: 0, infos: null, ACTION: Symbol('zaudio'), // 唯一值区分每个页面的方法 isPageHide: false, // 是否息屏 duration: '', // 总时长 isBand: false, // 阻止二次提交 }; }, computed: { conversionTiame() { return (e) => { return this.getTime(e); } }, }, onLoad(options) { this.status = options.status; this.customerId = options.customerId; this.itemobj = uni.getStorageSync('searchobj'); console.log(this.itemobj) this.stateisshow = options.stateisshow; this.$zaudio.autoPlay = true //注意: 不同的回调方法, 相同的业务函数方法名, 不会相互影响; this.$zaudio.on('stop', this.ACTION, () => { console.log('我是强制暂停或关闭小程序音频浮窗触发的') }) this.$zaudio.on('seek', this.ACTION, (time) => { this.sliderChangeComplate(this.TIMEEVENT(time)) }) this.$zaudio.on('playing', this.ACTION, (obj) => { this.duration = obj.duration console.log(obj) this.TimeUpdate(this.TIMEEVENT(obj.current)) }) this.$zaudio.on('error', this.ACTION, e => { console.log(e, '加载失败') }) this.$zaudio.on('ended', this.ACTION, e => { this.$zaudio.stop() this.init({ bg: 0, customerId: this.customerId }) }) uni.$on('DETAILS2INIT', (info) => { this.init(info) }); }, onShow() { //实时渲染当前的播放状态 this.$zaudio.syncRender() this.Menulist = uni.getStorageSync('weapp_session_Menu_data'); this.Menulist.forEach(item => { if (item.name == '标记有效无效接待') { this.Menulistisshow = true; } }) this.intention = false; this.kehuyixiangcenterindex = 0; this.buildingID = uni.getStorageSync('buildingID').id; this.userInfo = uni.getStorageSync('weapp_session_userInfo_data'); if (this.userInfo.dataCode == 6 || this.userInfo.dataCode == 3) { this.methodsisshow = false; } else { this.methodsisshow = true; } if (this.userInfo.dataCode == 6) { this.jiaoseshow = false } this.roleindex = 0; if (this.stateisshow == 2) { this.infos = this.itemobj; }!this.isPageHide && this.init(this.infos); this.gituserlist() }, onHide() { this.isPageHide = true }, onUnload() { uni.$off('DETAILS2INIT') //卸载不需要的业务和获取播放状态的业务,提高页面性能 this.$zaudio.stop() this.$zaudio.off('seek', this.ACTION); this.$zaudio.off('stop', this.ACTION); this.$zaudio.off('playing', this.ACTION); }, methods: { rolexuanze(index) { this.roleindexrow = index; }, Modifyrole(dialog, item) { this.roleisshaw = true; this.roletiaoshu = dialog; this.roleindexrow = this.dialogList[this.csdFileindex].message[this.roletiaoshu].speaker - 1; }, roletab() { // let itso=this.dialogList[this.csdFileindex].message[this.roletiaoshu]; let itso = Object.assign({}, this.dialogList[this.csdFileindex].message[this.roletiaoshu]); itso.onebest = itso.onebest.replace(/<.*?>/ig, ""); this.$u.post("/corpus/updateRole", { corpusId: this.luyinList[this.csdFileindex].id, transferContent: [itso], speaker: this.roleindexrow + 1, customerId: this.customerId }).then(res => { this.dialogList[this.csdFileindex].message[this.roletiaoshu].speaker = this.roleindexrow + 1 this.roleisshaw = false; this.dialogList.forEach(res => { res.message.forEach(asd => { asd.isshow = false; }) }) uni.showToast({ title: '修改成功', duration: 2000 }); }) }, argece(item) { console.log(item) if (item.selected == 0) { console.log(item) this.Pinspeak = false uni.navigateTo({ url: '/pages/mine/ScoringPlaylist?customerId=' + this.customerId + "&id=" + item .keywordsId + "&type=" + 1 + '&UpDateEvent=DETAILS2INIT' }) } }, //关键词点击 tapbadge(item) { this.Pinspeak = false //进搜索页面 uni.navigateTo({ url: '/pages/learning/Keywordsearch?customerId=' + this.customerId + "&keyword=" + item + "&skpl=" + "2" + '&UpDateEvent=DETAILS2INIT' }) }, recordclick(i) { this.zhixingcenterindex = i; if (i == 0) { this.getRatelist() } else { console.log('999') this.huoqujinji() } }, //获取禁忌 huoqujinji() { uni.showLoading({ title: '加载中' }); this.$u.get("/customer/findTabooWordsByCusId", { cusId: this.customerId }).then(res => { if (res.length) { this.prohibitedlist = res; } setTimeout(function() { uni.hideLoading(); }, 1000); }) }, //评分点击 clickaudeopal(item) { if (item.selected == 0) { console.log(item) this.Pinspeak = false uni.navigateTo({ url: '/pages/mine/ScoringPlaylist?customerId=' + this.customerId + "&id=" + item .marketingId + "&type=" + 0 + '&UpDateEvent=DETAILS2INIT' }) } }, //获取用户信息 gituserlist() { this.$u.get("/matchKeywords/personalReceptionRecord", { customerId: this.customerId }).then(res => { res.endTime1 = res.endTime.substring(0, 19); this.userlistobj = res; }) }, Acquishow2(i) { this.Acquirecustomerintentlist2[i].isshow = !this.Acquirecustomerintentlist2[i].isshow; }, tocalibration() { uni.navigateTo({ url: '/pages/mine/calibration?id=' + this.customerId }); }, customerofintention(i) { this.kehuyixiangcenterindex = i; if (i == 0) { this.Acquirecustomerintent() } else { this.Acquirecustomerintent2() } }, //获取人工校准意向信息 Acquirecustomerintent2() { this.Acquirecustomerintentlist2 = []; this.$u.get("/matchKeywords/findManualCalibration", { customerId: this.customerId, type: 1 }).then(res => { res.forEach(item => { item.isshow = true; item.children.forEach(chend => { if (chend.isInterval == 0) { chend.text = chend.name + chend.unit + '-' + chend.endName + chend .unit } else { chend.text = chend.name } }) }) this.Acquirecustomerintentlist2 = res; }) }, //获取系统意向信息 Acquirecustomerintent() { this.Acquirecustomerintentlist = []; this.$u.get("/matchKeywords/findSystemAnalysis", { customerId: this.customerId }).then(res => { res.forEach(item => { item.isshow = true; item.children.forEach(chend => { if (chend.isInterval == 0) { chend.text = chend.name + chend.unit + '-' + chend.endName + chend .unit } else { chend.text = chend.name } }) }) this.Acquirecustomerintentlist = res; }) }, Acquishow(i) { this.Acquirecustomerintentlist[i].isshow = !this.Acquirecustomerintentlist[i].isshow; }, Edittag(item, chend, index, i) { var selected = ''; if (chend.selected == 0) { selected = 1; this.Acquirecustomerintentlist[index].children[i].selected = 1; } else { selected = 0; this.Acquirecustomerintentlist[index].children[i].selected = 0; } this.$u.post("/matchKeywords/updatePersonalMatchData", { carId: this.customerId, selected: selected, name: chend.name, pid: chend.pid, level: chend.level, endName: chend.endName, keywordsId: chend.keywordsId }).then(res => { }) }, //取消接待详情 clenReceivedetailsabout() { this.Receivedetailsabout = false; this.Pinspeak = false; this.intention = false; this.Thetapeidisshow = false; }, //意向统计切换 Intentiontoswitch(i) { this.yixingindex = i; if (i == 1) { this.statistical() } }, statistical() { this.$u.get("/matchKeywords/findCARKeywords", { customerId: this.customerId }).then(res => { res.forEach(item => { if (item.isInterval == 0) { item.name = item.name + item.unit + '-' + item.endName + item.unit; } }) this.options1 = res; }) }, Receivetap() { this.Receivedetailsabout = true; }, //标记 alllogo() { var that = this; let msg = ''; if (this.userlistobj.validInvalid != 0) { msg = '是否标记为"有效录音"?'; uni.showModal({ title: '提示', content: msg, success: function(res) { that.isBand = true if (that.noClick) { that.noClick= false; if (res.confirm) { let parames = { id: that.customerId, validInvalid: '', invalidReason: 0 } if (that.userlistobj.validInvalid == 0) { parames.validInvalid = 1; } else { parames.validInvalid = 0; } that.$u.post("/customer/updateValidInvalid", parames).then(res => { console.log(res) that.isBand = false that.Thetapeidisshow = false; }).catch(e => { that.isBand = false }) } setTimeout(()=> { that.noClick= true; }, 2000) } else { // 这里是重复点击的判断 } } }); } else { this.effective = true; } }, effectiveAdd() { if (this.effectiveindex == 4) { if (this.effectiveitext.length == 0) { uni.showToast({ title: '备注不能为空', icon: "none", duration: 2000 }); return } } this.effective = false; this.isBand = true let parames = { id: this.customerId, validInvalid: '', validInvalid: 1, invalidReason: Number(this.effectiveindex) + 1, invalidNote: this.effectiveitext } this.$u.post("/customer/updateValidInvalid", parames).then(res => { console.log(res) this.Thetapeidisshow = false; }).catch(e=>{ this.isBand = false }) }, radioChange(evt) { this.effectiveitext = ""; for (let i = 0; i < this.effectiveitems.length; i++) { if (this.effectiveitems[i].value === evt.detail.value) { this.effectiveindex = i; break; } } }, //接待详情点击 Receivedetailsabouttab(stringa) { if (stringa == 'Receivedetailsabout') { this.gituserlist() this.Thetapeidisshow = !this.Thetapeidisshow; } else if (stringa == 'Pinspeak') { this.getRatelist() this.Pinspeak = true; } else { if (this.kehuyixiangcenterindex == 0) { this.Acquirecustomerintent() } else { this.Acquirecustomerintent2() } this.intention = true; } }, guanjiancishifo() { // this.guanjianciishow=!this.guanjianciishow; this.stateisshow = 1; uni.navigateTo({ url: '/pages/learning/Keywordsearch?customerId=' + this.customerId + "&status=" + this.status + "&skpl=" + "1" + '&UpDateEvent=DETAILS2INIT' }) }, // 添加角色 addRole() { this.tablist.push({ name: String.fromCharCode(this.tablist.length + 64) }) }, //标记选择角色 biaojixuanze(index) { this.roleindexbiaoji = index; }, //标记顾问 tagtap() { this.biojiisshow = !this.biojiisshow; }, //取消标记 unmarktap() { this.biojiisshow = false; this.roleindexbiaoji = this.dshfkjsdkksodofydwfkhwdfkjh; this.roleisshaw = false }, //确认标记 Confirmthetag() { var num = this.roleindexbiaoji + 1; uni.request({ url: config.service.markConsultant + '?id=' + this.luyinList[this.csdFileindex].id + "&speaker=" + num + '&customerId=' + this.customerId, //仅为示例,并非真实接口地址。 method: "GET", header: { 'content-type': 'application/json', 'Access-Token': uni.getStorageSync('weapp_session_login_data').token }, success: (data) => { this.biojiisshow = false; this.biaojiyuyi() this.fenjiaoseunfo() uni.showToast({ title: '标记成功', duration: 2000 }); }, }) }, //标记语义词 biaojiyuyi() { let parames = { carId: this.customerId } this.$u.post("/matchKeywords/toMatchKeywords", parames).then(res => { console.log(res) }) }, //分角色 tapspagek(index) { this.roleindex = index; this.newluyinList = []; this.fenjiaoseunfo() this.$forceUpdate() }, //------------------------------------分角色标记刷新 fenjiaoseunfo() { var bgcd = this.playNow * 1000; this.newluyinList = []; this.dialogList = []; let voFlagValue; if (this.roleindex == 0) { voFlagValue = 0 } else { voFlagValue = 1 } let tempRoleIndex; if (this.isSw) { if (this.roleindex == this.tablist.length - 1) { tempRoleIndex = 0 } else { tempRoleIndex = this.roleindex } } else { tempRoleIndex = this.roleindex } console.log() uni.request({ url: config.service.getCorpusAnal + '?corpusId=' + this.luyinList[this.csdFileindex].id + "&bg=" + bgcd + "&speaker=" + tempRoleIndex + "&voFlag=" + voFlagValue + '&num=50', //仅为示例,并非真实接口地址。 method: "GET", header: { 'content-type': 'application/json', 'Access-Token': uni.getStorageSync('weapp_session_login_data').token }, success: (data) => { this.tablist = []; let jsonInfo = JSON.parse(data.data.data.audioContent); for (var i = 0; i <= data.data.data.speakerNum; i++) { if (i === 0) { this.tablist.push({ name: '全部' }) } else { this.tablist.push({ name: String.fromCharCode(i + 64) }) } } if (data.data.data.speaker == null) { this.roleindexbiaoji = 0; this.dshfkjsdkksodofydwfkhwdfkjh = 0; } else { if (data.data.data.viewNameFlag == 1) { this.tablist[data.data.data.speaker].name = this.tablist[data.data.data .speaker] .name; } else { this.tablist[data.data.data.speaker].name = this.tablist[data.data.data .speaker] .name + "顾问"; } this.roleindexbiaoji = data.data.data.speaker - 1; this.dshfkjsdkksodofydwfkhwdfkjh = data.data.data.speaker - 1; } if (data.data.data.viewNameFlag == 1) { let p = [{ name: '顾问' }] this.tablist = [...this.tablist, ...p] } if (this.roleindex > this.tablist.length - 1) { this.roleindex = this.tablist.length - 1 this.fenjiaoseunfo() } this.speaker = data.data.data.speaker; //上拉标记点 this.textindex = data.data.data.index; //下拉标记点 this.toptextindex = data.data.data.index; this.isShowMark = data.data.data.viewNameFlag; console.log(this.isShowMark) jsonInfo.forEach(item => { item.message = JSON.parse(item.onebest) item.backindex = this.csdFileindex }) this.newluyinList = jsonInfo; if (this.textindex == null) { return } else { this.dialogList.push(jsonInfo[this.textindex]); } } }) }, toKeywordsearch() { this.stateisshow = 1; uni.navigateTo({ url: '/pages/learning/Keywordsearch?customerId=' + this.customerId + "&status=" + this.status + "&skpl=" + "1" + '&UpDateEvent=DETAILS2INIT' }) }, TimeUpdate(currentTime) { this.playNow = Math.ceil(currentTime) if (this.dialogList.length == 0) { return } else { const message = this.dialogList[0].message; if (!message) return for (let i = 0; i < message.length; i++) { if (Math.floor(message[i].bg / 1000) <= this.playNow && this.playNow < Math.floor(message[i].ed / 1000)) { console.log(message[i].bg, '我是active', message[i].ed, '我是currentTime', this.playNow) console.log(message[i].onebest) this.scrollId = "dialog" + this.csdFileindex + "text" + message[i].bg; break; } if (i < message.length - 1 && Math.floor(message[i].ed / 1000) < this.playNow && this.playNow < Math.floor(message[i + 1].bg / 1000)) { this.scrollId = "dialog" + this.csdFileindex + "text" + message[i].bg; break; } } } this.$forceUpdate() }, init(info) { this.sliderMax = 0; //进度条最大值 this.timeStr = "00:00"; //总的时间 const parames = { pageNum: 1, pageSize: 100, query: { customerId: this.customerId } } this.$u.post("/corpus/findByPage", parames).then(res => { if (res && res.length) { let alltime = 1 + res[0].recordDuration; this.calibration = res[0].calibration; if (this.calibration == 0) { this.kehuyixiangcenterindex = 0; } else { this.kehuyixiangcenterindex = 1; } this.alltimeStr = this.getTime(alltime) if (info.bg != 0) { this.luyinList = res; this.recordPath = res[0].recordPath this.date = res[0].receptionTime; this.getCorpusAnalysis(info); } else { this.luyinList = res; this.recordPath = res[0].recordPath this.date = res[0].receptionTime; this.getCorpusAnalysis(info); this.zyAudio() } } }) }, //搜索跳转 adasdasdasd(e) { this.stepPlay(e) }, //下一页 ltolower() { var lengthcz = this.newluyinList.length - 1; if (this.textindex >= lengthcz) { uni.showToast({ title: '到底了', duration: 2000 }); return } else { this.textindex = this.textindex + 1; this.newluyinList[this.textindex].message.forEach(item => { this.dialogList[0].message.push(item) }) } console.log("下一页", this.textindex) }, //上一页 rolltoupper() { if (this.toptextindex == 0) { // uni.showToast({ // title: '到头了', // duration: 2000 // }); return } else { if (this.dialogList[0] == undefined) { return } else { this.toptextindex = this.toptextindex - 1; let reverselist = this.newluyinList[this.toptextindex].message; let runlist = reverselist.reverse(); runlist.forEach(item => { this.dialogList[0].message.unshift(item) }) } } }, // 取消全部加精 notappick() { var that = this; uni.showModal({ title: '提示', content: '确认取消加精?', success: function(res) { if (res.confirm) { console.log('用户点击确定'); uni.request({ url: config.service.delATD + "?carId=" + that.customerId + '&itemId=' + that.buildingID, method: "GET", header: { 'content-type': 'application/json', 'Access-Token': uni.getStorageSync('weapp_session_login_data') .token }, success: (data) => { if (data.data.code == 10000) { that.status = 1 uni.showToast({ title: '取消成功', duration: 2000 }); } else { uni.showToast({ title: data.data.message, duration: 2000 }); } } }) } else if (res.cancel) { console.log('用户点击取消'); } } }); }, //全部加精 tappick(i) { var that = this; uni.showModal({ title: '提示', content: '确认加精?', success: function(res) { if (res.confirm) { console.log('用户点击确定'); let objdata = { "carId": that.customerId, //客户id "status": 0, "itemId": that.buildingID, } uni.request({ url: config.service.addATD, method: "POST", header: { 'content-type': 'application/json', 'Access-Token': uni.getStorageSync('weapp_session_login_data') .token }, data: objdata, success: (data) => { if (data.data.code == 10000) { that.status = 0 uni.showToast({ title: '加精成功', duration: 2000 }); } else { uni.showToast({ title: data.data.message, duration: 2000 }); } } }) } else if (res.cancel) { console.log('用户点击取消'); } } }); }, //标签选择 tapbiaoqianclisck(index) { this.biaoqianindex = index; this.biaoqianid = this.biaoqianlist[index].id }, //复制 clickcopy() { var that = this; uni.setClipboardData({ data: that.thewrongword, success: function() { that.dialogList.forEach(res => { res.message.forEach(asd => { asd.isshow = false; }) }) that.$forceUpdate(); console.log('success'); } }); }, //确认加入常错词 Confirmtheexit() { if (this.reswrongword.length > 8 || this.thewrongword.length > 8) { this.$refs.uToast.show({ title: '正确词错误词不能超过8个字', type: 'warning', }) this.isshow2 = true; } else { let reg = /^[0-9]+$/ if (reg.test(this.thewrongword)) { this.$refs.uToast.show({ title: '错误词不能为纯数字', type: 'warning', }) this.isshow2 = true; } else { if (this.thewrongword) { if (this.reswrongword) { let parames = { customerId: this.customerId, cupid: this.luyinList[this.csdFileindex].id, wrongWord: this.thewrongword, //错误词 correctWord: this.reswrongword, //正确词 translateHtmlContent: this.messagelisy, id: uni.getStorageSync('buildingID').id } this.isshow2 = false; let sas = this.textItself.replace(this.thewrongword, this.reswrongword) this.dialogList[this.argtextindex1].message[this.argtextindex2].onebest = sas this.dialogList.forEach(res => { res.message.forEach(asd => { asd.isshow = false; }) }) this.$u.post("/corpus/addCorrectWord", parames).then(data => { this.thewrongword = ""; this.reswrongword = ""; }) } else { this.$refs.uToast.show({ title: '正确值不能为空', type: 'warning', }) this.isshow2 = true; return } } else { this.$refs.uToast.show({ title: '错误词不能为空', type: 'warning', }) this.isshow2 = true; return } } } }, //取消加入常错词 Cancelout() { this.isshow2 = false; this.dialogList.forEach(res => { res.message.forEach(asd => { asd.isshow = false; }) }) }, //加入长错词 Oftenthewrongword() { this.reswrongword = ""; this.isshow2 = true; }, //加精华 Addtheessence() { this.isshow3 = true; this.biaoqianlist = [] let parames = { "itemId": this.buildingID } this.$u.post("/addtodigest/findAllYi", parames).then(data => { this.biaoqianlist = data this.biaoqianlist.unshift({ name: "逼单话术", id: 0 }) }) }, // 取消加精 Cancelout2() { this.isshow3 = false; this.dialogList.forEach(res => { res.message.forEach(asd => { asd.isshow = false; }) }) }, // 确认加精 Confirmtheexit2() { if (this.biaoqianid) { this.biaoqianid = this.biaoqianid } else { this.biaoqianid = 0 } this.isshow3 = false; this.dialogList.forEach(res => { res.message.forEach(asd => { asd.isshow = false; }) }) let objdata = { "itemId": this.buildingID, "carId": this.customerId, //客户id "startTime": this.changanitem.bg, //开始时间 "startFile": this.duihuawenjianid, //对话所在录音文件id "endTime": this.changanitem.ed, //结束时间 "marketingId": this.biaoqianid, //对应一级父id "jjTransfer": this.changanitem.onebest, //选中对话 "status": 1 } uni.request({ url: config.service.addATD, method: "POST", header: { 'content-type': 'application/json', 'Access-Token': uni.getStorageSync('weapp_session_login_data').token }, data: objdata, success: (data) => { if (data.data.code == 10000) { uni.showToast({ title: '加精成功', duration: 2000 }); } else { uni.showToast({ title: data.data.message, duration: 2000 }); } } }) }, //长按对话 changanxiaoguo(item, index, i) { this.messagelisy = []; this.changanitem = {}; this.duihuawenjianid = "", this.dialogList.forEach(res => { res.message.forEach(asd => { asd.isshow = false; }) }) this.changanitem = item; this.duihuawenjianid = this.luyinList[this.csdFileindex].id; this.dialogList[i].message[index].isshow = !this.dialogList[i].message[index].isshow; this.textItself = item.onebest; let onebest = item.onebest; this.thewrongword = onebest.replace(/<.*?>/ig, ""); this.messagelisy = this.dialogList[i].message this.argtextindex1 = i; this.argtextindex2 = index; }, //回到顶部 gotoTop() { this.scrollId = null; this.$nextTick(() => { this.scrollId = "top"; }) }, //切换tab changeTab(type) { if (type == 0) { this.tab = 0 } else { this.tab = 1; this.getRatelist(); } }, //评分上下显隐 changeshow(item, type) { item.show = !item.show; }, changeshow2(item, type) { item.show = !item.show; }, getRatelist() { this.$u.get("/customer/findzkMByCusId", { cusId: this.customerId }).then(res => { if (res.length) { let level1 = [] let level2rate = 0 res.forEach(item => { if (item.pid == 0) { level1.push({ id: item.marketingId, rate: item.fraction, name: item.name, sort: item.sort, show: false, ratepercent: 0, children: [] }) } else { if (item.selected == 0) { level2rate += item.fraction } } }) this.totalRate = level2rate; res.forEach(subitem => { let subitempid = subitem.pid level1.forEach(item => { if (subitempid == item.id) { if (subitem.selected == 0) { item.ratepercent += subitem.fraction } item.children.push({ id: subitem.id, rate: subitem.fraction, selected: subitem.selected, name: subitem.name, show: false, marketingId: subitem.marketingId, children: [] }) } }) }) res.forEach(subitem => { let subitempid = subitem.pid level1.forEach(chen => { chen.children.forEach(zxc => { if (subitempid == zxc.marketingId) { zxc.children.push({ id: subitem.id, rate: subitem.fraction, selected: subitem.selected, name: subitem.name, marketingId: subitem.marketingId, }) } }) }) }) level1[0].show = true; level1[0].children[0].show = true; this.ratelist = level1 } setTimeout(function() { uni.hideLoading(); }, 1000); }) }, //--------------------------------- 获取转义后的对话结果 getCorpusAnalysis(info) { this.dialogList = []; this.newluyinList = [] uni.request({ url: config.service.getCorpusAnal + '?corpusId=' + this.luyinList[this.csdFileindex].id + "&bg=" + info.bg + "&speaker=" + this.roleindex + '&voFlag=0' + '&num=50', //仅为示例,并非真实接口地址。 method: "GET", header: { 'content-type': 'application/json', 'Access-Token': uni.getStorageSync('weapp_session_login_data').token }, success: (data) => { this.isShowMark = data.data.data.viewNameFlag this.tablist = []; this.roleindexbiaoji = 0; let jsonInfo = JSON.parse(data.data.data.audioContent); for (var i = 0; i <= data.data.data.speakerNum; i++) { if (i === 0) { this.tablist.push({ name: '全部' }) } else { this.tablist.push({ name: String.fromCharCode(i + 64) }) } } if (data.data.data.speaker == null) { this.dshfkjsdkksodofydwfkhwdfkjh = 0; } else { if (data.data.data.viewNameFlag == 1) { this.tablist[data.data.data.speaker].name = this.tablist[data.data.data .speaker].name; } else { this.tablist[data.data.data.speaker].name = this.tablist[data.data.data .speaker].name + "顾问"; } this.roleindexbiaoji = data.data.data.speaker - 1; this.dshfkjsdkksodofydwfkhwdfkjh = data.data.data.speaker - 1; } if (data.data.data.viewNameFlag == 1) { let p = [{ name: '顾问' }] this.tablist = [...this.tablist, ...p] this.isSw = true } else { this.isSw = false } this.speaker = data.data.data.speaker; //上拉标记点 this.textindex = data.data.data.index; //下拉标记点 this.toptextindex = data.data.data.index; jsonInfo.forEach(item => { item.message = JSON.parse(item.onebest) item.backindex = this.csdFileindex; if (info.onebest) { item.message.forEach(che => { if (che.onebest == info.onebest) { che.onebest = `<font style='color: red'>${che.onebest}</font>`; } }) } }) this.newluyinList = jsonInfo; console.log(this.newluyinList) this.dialogList.push(jsonInfo[this.textindex]); var itc = parseInt(info.bg / 1000) this.adasdasdasd(itc) } }) }, getTime(time) { return util.formatSecond(time) }, //音频前进回退 sliderChangeComplate(currentTime) { this.dialogList = [] for (let i = 0; i < this.newluyinList.length; i++) { let message = this.newluyinList[i].message if (!message) return if (Math.floor(this.newluyinList[i].bg / 1000) <= currentTime && currentTime <= Math.floor(this .newluyinList[i].ed / 1000)) { for (let j = 0; j < message.length; j++) { let item = message[j] if (Math.floor(item.bg / 1000) <= currentTime && currentTime <= Math.floor(item.ed / 1000)) { this.scrollId = "dialog" + this.csdFileindex + "text" + item.bg; break; } if (j < message.length - 1 && Math.floor(item.ed / 1000) <= currentTime && currentTime <= Math .floor(item.bg / 1000)) { this.scrollId = "dialog" + this.csdFileindex + "text" + item.bg; break; } } this.textindex = i; this.toptextindex = i; this.dialogList.push(this.newluyinList[i]) } } }, //长按点击播放 clickbofang(dialog, item) { this.dialogList.forEach(res => { res.message.forEach(asd => { asd.isshow = false; }) }) this.$forceUpdate() let platetime = item.bg; let newtime = item.bg / 1000; this.dialogList = [] uni.request({ url: config.service.fastForward + '?corpusId=' + this.luyinList[this.csdFileindex].id + "&bg=" + platetime || 0, //仅为示例,并非真实接口地址。 method: "GET", header: { 'content-type': 'application/json', 'Access-Token': uni.getStorageSync('weapp_session_login_data').token }, success: (data) => { this.textindex = data.data.data.index; this.toptextindex = data.data.data.index; this.dialogList.push(this.newluyinList[data.data.data.index]) console.log(newtime) this.stepPlay(newtime); } }) }, formatTime(num) { //格式化时间格式 num = num.toFixed(0); let second = num % 60; if (second < 10) second = '0' + second; let min = Math.floor(num / 60); if (min < 10) min = '0' + min; return min + ":" + second; }, changeEditing() { this.dialogListres[0].message.forEach(asd => { asd.isshow = false; }) }, //录音实例 zyAudio() { let data = [{ src: this.recordPath, title: '录音音频', singer: '', coverImgUrl: '' }] this.$zaudio.setAudio(data) //渲染第一首音频 this.$zaudio.setRender(0) setTimeout(() => { this.$zaudio.operate() }, 150) }, // 跳转指定位置播放 stepPlay(t) { this.$zaudio.seek(t) if (this.$zaudio.paused) { this.$zaudio.operate() } } }, } </script> <style lang="scss" scoped> .box { width: 100%; height: 100vh; display: flex; flex-direction: column; .pingfenbox { width: 100%; height: 60rpx; line-height: 60rpx; border-bottom: 1px solid #E0E0E0; display: flex; } .pingfenbox view { flex: 1; text-align: center; font-size: 28rpx; text-indent: 20rpx; } .activecllasscet { background: #2671E2; color: #FFFFFF; } .title1-12 { font-size: 28rpx; color: #2671E2; font-weight: 400; text-indent: 30rpx; margin-top: 18rpx; } .headbox { width: 100%; min-height: 173rpx; border-bottom: 1px solid #E0E0E0; } .zhuti { flex: 1; overflow: auto; } .bottombox { width: 100%; height: 170rpx; border-top: 1px solid #E0E0E0; .bottomhead { width: 100%; height: 81rpx; border-bottom: 1px solid #E0E0E0; display: flex; justify-content: space-between; align-items: center; .audio-slider { width: 87%; display: flex; justify-content: space-between; align-items: center; padding-right: 30rpx; } .audio-slider .slider { width: 100%; padding: 0px 15rpx; box-sizing: border-box; } .audio-time { width: 110rpx; text-align: right; font-size: 26rpx; line-height: 28rpx; color: #70798D; display: flex; justify-content: space-between; } .audio-play { width: 48rpx; height: 48rpx; flex-shrink: 0; } .audio-play .image { width: 100%; height: 100%; margin-left: 30rpx; } } .botbotmm { width: 100%; height: 88rpx; display: flex; align-items: center; } } } .headboxhead { width: 100%; height: 84rpx; border-bottom: 1px solid #E0E0E0; display: flex; .boxhead1 { width: 50%; color: #303030; height: 84rpx; line-height: 84rpx; font-size: 28rpx; text-indent: 30rpx; } .boxhead2 { width: 46%; height: 84rpx; text-align: right; } } .boxhead2 image { width: 36rpx; height: 36rpx; margin-top: 24rpx; } .headboxbott { width: 100%; height: 88rpx; display: flex; align-items: center; .headovfu { flex: 1; height: 88rpx; overflow: hidden; } .headpade { width: 160rpx; height: 60rpx; display: flex; justify-content: center; align-items: center; border-left: 1px solid #D6D6D6; .biaoji { min-width: 120rpx; height: 48rpx; background: #E6625B; border-radius: 24rpx; text-align: center; line-height: 48rpx; color: #FFFFFF; font-size: 26rpx; } } } .fill { width: 2rpx; height: 41rpx; background: #E0E0E0; } .tmmchen { width: 25%; height: 88rpx; text-align: center; color: #666666; font-size: 18rpx; position: relative; .allimg { position: absolute; width: 168rpx; top: -152rpx; border: 1px solid #E0E0E0; background: #FFFFFF; font-size: 26rpx; color: #333333; text-align: center; box-shadow: 10rpx 10rpx 5rpx #888888; } } .tmmchen image { width: 40rpx; height: 40rpx; margin-top: 10rpx; margin-bottom: 2rpx; } .zhezhoa { position: fixed; top: 0; left: 0; z-index: 999; width: 100%; height: 100vh; opacity: 0.5; background-color: #666666; } .followingpop-up { width: 100%; height: 75vh; background: #FFFFFF; position: fixed; background: #FFFFFF; left: 0px; bottom: 0px; z-index: 1000; display: flex; flex-direction: column; // position: absolute; .calibration { width: 90rpx; height: 90rpx; background: #2671E2; text-align: center; line-height: 90rpx; border-radius: 50%; color: #FFFFFF; position: absolute; right: 30rpx; bottom: 100rpx; } .guanbibox { width: 100%; padding-bottom: 20rpx; margin-top: 20rpx; border-bottom: 1px solid #E0E0E0; position: relative; .guanbixen { width: 30rpx; height: 30rpx; position: absolute; right: 30rpx; top: 6rpx; } .cenisboxtab { width: 100%; display: flex; .cenisboxtabview { flex: 1; display: flex; align-items: center; justify-content: center; color: #333333; font-size: 30rpx; font-weight: 600; } } } .cenisbox { flex: 1; overflow: auto; .jianbox { width: 100%; border-bottom: 1px solid #E0E0E0; padding-top: 24rpx; padding-bottom: 24rpx; .jianbox-cen { width: 100%; height: 78rpx; // border-bottom: 1px solid #E0E0E0; display: flex; .jianboxtext { flex: 1; height: 100%; font-size: 30rpx; font-weight: 600; line-height: 78rpx; color: #333333; text-indent: 30rpx; } .jianboxjian { width: 80rpx; height: 100%; line-height: 78rpx; text-align: center; } } .bioqianwayl { width: 690rpx; margin: 0 auto; display: flex; flex-wrap: wrap; } .bioqianwayl view { padding-left: 24rpx; padding-right: 24rpx; padding-top: 10rpx; padding-bottom: 10rpx; margin-right: 24rpx; margin-top: 20rpx; border-radius: 8rpx; font-size: 26rpx; } } } } .jiantop { width: 14rpx; height: 24rpx; } .jiantop1 { width: 20rpx; height: 14rpx; } .sdfsaf { padding-left: 24rpx; padding-right: 24rpx; padding-top: 10rpx; padding-bottom: 10rpx; border-radius: 8rpx; font-size: 26rpx; } .yixingindexclass { border-bottom: 3px solid #2671E2; } .cenisboxdspl { width: 94%; margin: 0 auto; padding-bottom: 24rpx; display: flex; flex-wrap: wrap; .cenisboxdsplview { padding-left: 24rpx; padding-right: 24rpx; padding-top: 10rpx; padding-bottom: 10rpx; background: #F4F8FD; color: #2671E2; font-size: 26rpx; margin-right: 24rpx; margin-top: 24rpx; } } .bounced { width: 570upx; background: #FFFFFF; z-index: 1000; border-radius: 10upx; position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); .headpade { margin-top: 10rpx; padding: 8rpx 8rpx 8rpx 8rpx; background: #108ee9; color: #fff; border-radius: 16rpx; } /* 50%为自身尺寸的一半 */ .jiajinghuatit { width: 100%; height: 68rpx; font-size: 30rpx; text-align: center; line-height: 68rpx; } .jiajinghuaview { padding: 18rpx 18rpx 18rpx 18rpx; display: flex; flex-wrap: wrap; .jiajinghuaview1 { padding: 8rpx 8rpx 8rpx 8rpx; font-size: 26rpx; border-radius: 12rpx; border: 1px solid #979797; margin-left: 8rpx; } .jighuaview2 { padding: 8rpx 18rpx 8rpx 18rpx; font-size: 26rpx; border-radius: 12rpx; border: 1px solid #979797; margin-left: 20rpx; margin-top: 10rpx; display: flex; .view1-text { text-align: center; } .view1-img { width: 50rpx; } } } .bounced3 { height: 100upx; width: 100%; margin-top: 40upx; border-top: 1px solid #dddddd; display: flex; } .bounced3-1 { width: 50%; height: 100%; text-align: center; line-height: 100upx; border-right: 1px solid #dddddd; font-size: 36upx; color: #999999; } .bounced3-2 { width: 50%; height: 100%; text-align: center; line-height: 100upx; font-size: 36upx; color: #108ee9; } } .viewclace { width: 100rpx; height: 40rpx; text-align: center; line-height: 40rpx; border-radius: 14rpx; margin-right: 34rpx; margin-top: 16rpx; font-size: 24rpx; } .bosdttom { color: #FFFFFF; background-color: #2671E2; } .dialog-block { margin: 20rpx 0; border-bottom: 1px solid #ccc; .fileName { text-align: center; margin: 10rpx auto; width: 115rpx; height: 42rpx; line-height: 42rpx; background: #EFEFEF; border-radius: 4rpx; font-size: 20rpx; font-weight: 400; color: #333333; } } .scroll-Y { font-size: 36upx; color: #999999; background: #FFFFFF; margin-top: 30upx; flex: 1; overflow-y: scroll; width: 100%; } .scroll-Y .text { margin: 50upx 30upx; line-height: 80upx; display: flex; align-items: center; } .scroll-Y .text[data-speaker="2"], .scroll-Y .text[data-speaker="4"], .scroll-Y .text[data-speaker="6"] { flex-direction: row-reverse; text-align: right; .contentInfo { .info { color: #ccc; font-size: 18rpx; font-size: 30rpx; padding: 0 28rpx; } .contentMain { display: flex; flex-direction: row-reverse; align-items: center; .content { margin-left: 0; margin-right: 30upx; } .play { width: 50rpx; height: 50rpx; margin-right: 20rpx; } } } } .scroll-Y .text[data-speaker="2"], .scroll-Y .text[data-speaker="4"], .scroll-Y .text[data-speaker="6"] { .contentInfo { .info { .AudioUserName { margin-left: 10rpx; } display: flex; flex-direction: row-reverse; } } } .scroll-Y .text { .contentInfo { .info { .AudioUserName { margin-right: 10rpx; } } } } .scroll-Y .text .avatar { margin-top: 80rpx; width: 64upx; height: 64upx; line-height: 64upx; text-align: center; font-size: 36rpx; border-radius: 50%; background: #F2F2F2; color: #008EF2; image { width: 40upx; } } .scroll-Y .text .contentInfo .info { color: #ccc; font-size: 18rpx; font-size: 30rpx; padding: 0 28rpx; } .scroll-Y .text .contentInfo .contentMain { display: flex; align-items: center; } .scroll-Y .text .contentInfo .contentMain .content { margin-left: 30upx; line-height: 60rpx; text-align: left; padding: 0 5px; border-radius: 8upx; max-width: 442rpx; background: #F6F6F6; color: #999999; position: relative; .tankuangcss { position: absolute; top: -140rpx; left: -120rpx; width: 308rpx; height: 130rpx; background-color: #333333; font-size: 24rpx; color: #FFFFFF; padding-top: 4rpx; padding-bottom: 4rpx; display: flex; flex-wrap: wrap; border-radius: 15rpx; z-index: 1000; } .bottoms { top: unset; bottom: -140rpx; } } .scroll-Y .text .contentInfo .contentMain .play { width: 50rpx; height: 50rpx; margin-left: 20rpx; } .backTop { width: 60upx; height: 60upx; background: rgba(211, 235, 253, 1); box-shadow: 0upx 0upx 2upx 4upx rgba(38, 161, 255, 0.04); border-radius: 50%; position: fixed; bottom: 200upx; right: 8upx; display: flex; justify-content: center; align-items: center; image { width: 26upx; height: 34upx; } } .jiangshang { color: #fff; background: #2671E2; } .jiangshang1 { color: #FFFFFF; background: #999999; } // 表单 .tian-view { width: 570upx; background-color: #FFFFFF; border-bottom: 1px solid #ededee; display: flex; min-height: 96rpx; .tian-view-t1 { width: 20rpx; font-size: 34rpx; height: 34rpx; line-height: 110rpx; letter-spacing: 0px; color: red; } .tian-view-t2 { width: 30%; min-height: 96rpx; line-height: 96rpx; font-size: 34rpx; color: #333; } .tian-view-t3 { width: 61%; padding-top: 31rpx; padding-bottom: 31rpx; display: flex; .tian-input { width: 98%; font-size: 34rpx; border: none; } } } .inputbox { width: 100%; height: 100rpx; display: flex; align-items: center; justify-content: center; border-bottom: 1px solid #E0E0E0; .thisinput { width: 94%; height: 52rpx; background: #FFFFFF; border-radius: 8rpx; border: 1px solid #C9C9C9; color: #333333; font-size: 26rpx; text-indent: 26rpx; line-height: 52rpx; } } .biaoqiantom { background-color: #008EF2; color: #FFFFFF; border: none; } .Level-box { padding-bottom: 2rpx; .hhhbox { width: 100%; padding-left: 30rpx; padding-right: 30rpx; border-bottom: 1rpx solid #E0E0E0; background: #FFFFFF; // padding-bottom: 32rpx; .hsnrtest { height: 24rpx; font-size: 24rpx; font-weight: 400; color: #666666; line-height: 24rpx; } .Level3che { width: 100%; height: 28rpx; display: flex; line-height: 28rpx; align-items: center; margin-top: 30rpx; .title1 { flex: 1; font-size: 28rpx; color: #2671E2; font-weight: 400; } .jiantobox { width: 30rpx; height: 30rpx; display: flex; align-items: center; .arrow { width: 28rpx; height: 28rpx; } } } } .Level2che { width: 100%; height: 88rpx; display: flex; line-height: 88rpx; align-items: center; .title1 { flex: 2; font-size: 28rpx; color: #333333; font-weight: 400; } .leve1-jindu { flex: 3; display: flex; justify-content: center; align-items: center; .zhixing { width: 108rpx; height: 44rpx; background: #2671E2; border-radius: 4rpx; font-size: 28rpx; text-align: center; line-height: 44rpx; color: #FFFFFF; } .zhixing2 { width: 108rpx; height: 44rpx; background: #F8F8F8; border-radius: 4rpx; font-size: 28rpx; text-align: center; line-height: 44rpx; color: #999999; } } .jiantobox { width: 30rpx; height: 30rpx; display: flex; align-items: center; .arrow { width: 30rpx; height: 18rpx; } } } .Level1che { width: 100%; height: 94rpx; background: #F5F5F5; display: flex; line-height: 94rpx; align-items: center; padding-left: 30rpx; padding-right: 30rpx; .title1 { flex: 2; font-size: 30rpx; color: #333333; font-weight: 400; } .leve1-jindu { flex: 3; .jindutiao { width: 96%; height: 28rpx; background: #D5EEE2; line-height: 28rpx; border-radius: 14rpx; position: relative; .huanxing { height: 100%; background: #4FC78F; border-radius: 14rpx; } .text { position: absolute; top: 0rpx; right: 0rpx; font-size: 28rpx; font-weight: 400; color: #333333; } } } .jiantobox { width: 30rpx; height: 30rpx; display: flex; align-items: center; .arrow { width: 30rpx; height: 18rpx; } } } } .rotatearrow { transform: rotate(270deg); } .ffectivetext { width: 85%; margin: 10rpx auto; height: 100rpx; padding: 20rpx; border: 1rpx solid #E4F0FF; } /deep/ .u-model-title{ padding: 34rpx 0 16rpx !important; } .scroll-Y .text.active .content { color: #FF7538 !important; position: relative; } .scroll-Y .text.active[data-speaker] .content, .scroll-Y .text.active[data-speaker="2"] .content, .scroll-Y .text.active[data-speaker="4"] .content, .scroll-Y .text.active[data-speaker="6"] .content { color: #FF7538 !important; position: relative; } .scroll-Y .isGreen .contentInfo .contentMain .content { background: #2BC805 !important; color: #FFFFFF; } </style>