<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" v-if="isShowMark==0"> <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: item.bg < playNow && item.ed > playNow && i==0}" v-for="(item,index) in dialog.message" :key="index" :data-speaker="item.speaker"> <view class="avatar"> <view :style="[SPEAKERSTYLE(item.speaker)]"> <!-- <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> --> <text v-if="item.isShow == 0">顾</text> <text v-else>{{ item.speaker | toCapital }}</text> </view> <!-- <view v-if="item.speaker == 1" style="color: #60CBEC;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>A</text> </view> <view v-if="item.speaker == 2" style="color: #EC8B47;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>B</text> </view> <view v-if="item.speaker == 3" style="color: #4F861E;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>C</text> </view> <view v-if="item.speaker == 4" style="color: #9F61C8;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>D</text> </view> <view v-if="item.speaker == 5" style="color: #4980C8;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>E</text> </view> <view v-if="item.speaker == 6" style="color: #60CBEC;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>F</text> </view> <view v-if="item.speaker == 7" style="color: #EC8B47;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>G</text> </view> <view v-if="item.speaker == 8" style="color: #4F861E;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>H</text> </view> <view v-if="item.speaker == 9" style="color: #9F61C8;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>I</text> </view> <view v-if="item.speaker == 10" style="color: #9F61C8;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>J</text> </view> <view v-if="item.speaker == 11" style="color: #9F61C8;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>K</text> </view> <view v-if="item.speaker == 12" style="color: #9F61C8;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>L</text> </view> <view v-if="item.speaker == 13" style="color: #9F61C8;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>M</text> </view> <view v-if="item.speaker == 14" style="color: #9F61C8;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>N</text> </view> <view v-if="item.speaker == 15" style="color: #9F61C8;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>O</text> </view> <view v-if="item.speaker == 16" style="color: #9F61C8;"> <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> <text v-else>P</text> </view> --> </view> <view class="contentInfo"> <view class="info"> <text class="AudioUserName" v-if="item.isShow == 0">{{ item.username }}</text> <text class="AudioUserName" v-else>{{ item.speaker | toCapital }}</text> <text>{{conversionTiame(item.bg/1000)}}</text> </view> <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="clickbofang(dialog.backindex,item)" style="width: 80rpx;font-size: 24rpx;text-align: center;margin-left: 14rpx;">播放 </view> <view @click="Modifyrole(index,item)" style="font-size: 24rpx;text-align: center;margin-left: 14rpx;">修改角色 </view> </view> </view> </view> </view> </view> </scroll-view> <view class="bottombox"> <!-- <LongAudio :customerId="customerId" :infos="infos" :roleindex="roleindex"></LongAudio> --> <!-- 播放块 --> <view class="bottomhead"> <view class="audio-play" @tap="changePlayState"> <image class="image" mode="widthFix" :src="audioPlay ? 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/pause.png' : 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/play.png'"> </image> </view> <view class="audio-slider"> <view class="audio-time"> <text>{{currentTimeStr}}</text> </view> <slider class="slider" min="0" :max="sliderMax" @change="sliderChangeComplate" block-size="14" :value="sliderValue" activeColor="blue"></slider> <view class="audio-time"> <text>{{timeStr}}</text> </view> </view> </view> <!-- 底部弹框 --> <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="btnConfirmthetag()">确认</view> </view> </view> <!-- 加入常错词 --> <view class="zhezhoa" v-if="isshow2" @tap="Cancelout"></view> <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" :disabled="isNum" 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="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="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="btnEffectiveAdd()" :style="{color:(tap==true?'#2671E2':'#949494')}">确认 </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="roletab()">确认</view> </view> </view> <u-toast ref="uToast" /> </view> </template> <script> var util = require("../../utils/util.js"); var config = require("../../config"); import LongAudio from "@/components/long_audio/long_audio.vue" import audioList from "@/audios.js" export default { components: { LongAudio }, data() { return { isShowMark: 0, 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, //进度条最大值 innerAudioContext: "", //播放实例 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, fdFlag: null, fdFlag1: null, fdFlag2: null, tap: true, isSw: false, isNum: false, pageIndex: 1, // 当前页面 pageSize: 100, // 每页条数 audioListSize: Math.ceil(audioList.length / 100), // 页面分页 }; }, computed: { conversionTiame() { return (e) => { return this.getTime(e); } }, }, filters: { // ASCII码转换 大写字母A是65 演讲人是从1开始所以num+64 toCapital(num) { let str = '' if (num) { str = String.fromCharCode(num + 64) } return str } }, onLoad: function(options) { console.log('audioList', audioList, audioList.length % 100) console.log(this.pagination(this.pageIndex, this.pageSize, audioList)) this.status = options.status; this.customerId = options.customerId; this.itemobj = uni.getStorageSync('searchobj'); console.log(this.itemobj) this.stateisshow = options.stateisshow; uni.$on("playNows", (val) => { this.playNow = val; }) uni.$on("scrollIds", (val) => { this.scrollId = val; }) }, onShow() { 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; } else { var pages = getCurrentPages(); var currPage = pages[pages.length - 1]; //当前页面 this.infos = currPage.data.info; } this.gituserlist() this.innerAudioContext = uni.createInnerAudioContext(); this.innerAudioContext.autoplay = false; this.innerAudioContext.title = '音频'; this.onPlay() this.onPause() this.onCanplay() this.onEnded() this.onSeeking() this.onSeeked() this.TimeUpdate() this.init(this.infos) }, onUnload() { //暂停 this.innerAudioContext.pause() // 销毁 // this.innerAudioContext.destroy(); }, methods: { // 分页 pagination(pageNo, pageSize, array) { var offset = (pageNo - 1) * pageSize; return (offset + pageSize >= array.length) ? array.slice(offset, array.length) : array.slice(offset, offset + pageSize); }, // 上一页 prePageSize() { // 判断是否为开始的条数 if (this.pageIndex == 1) { uni.showToast({ title: '没有上一页了~' }) return } this.pagination(this.pageIndex--, this.pageSize, audioList) }, // 下一页 nextPageSize() { if (this.pageIndex == this.audioListSize) { uni.showToast({ title: '没有下一页了~' }) return } }, SPEAKERSTYLE(index) { let obj = { color: '', } switch (index) { case 1: obj.color = '#60CBEC'; break; case 2: obj.color = '#EC8B47'; break; case 3: obj.color = '#4F861E'; break; case 5: obj.color = '#4980C8'; break; case 6: obj.color = '#60CBEC'; break; case 7: obj.color = '#EC8B47'; break; case 8: obj.color = '#4F861E'; break; default: obj.color = '#9F61C8'; break; } return obj }, 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) this.innerAudioContext.destroy(); if (item.selected == 0) { console.log(item) uni.navigateTo({ url: '/pages/mine/ScoringPlaylist?customerId=' + this.customerId + "&id=" + item .keywordsId + "&type=" + 1 }) } }, //关键词点击 tapbadge(item) { //进搜索页面 uni.navigateTo({ url: '/pages/learning/Keywordsearch?customerId=' + this.customerId + "&keyword=" + item + "&skpl=" + "2" }) }, 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) { this.innerAudioContext.destroy(); if (item.selected == 0) { console.log(item) uni.navigateTo({ url: '/pages/mine/ScoringPlaylist?customerId=' + this.customerId + "&id=" + item .marketingId + "&type=" + 0 }) } }, //获取用户信息 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() { this.innerAudioContext.destroy(); 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() { this.tap = true; var that = this; let msg = ''; if (this.userlistobj.validInvalid != 0) { msg = '是否标记为"有效录音"?'; uni.showModal({ title: '提示', content: msg, success: function(res) { if (res.confirm) { clearTimeout(that.fdFlag1) that.fdFlag1 = setTimeout(() => { 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.Thetapeidisshow = false; }) that.fdFlag1 = null; }, 500) } } }); } else { this.effective = true; } }, btnEffectiveAdd() { let that = this clearTimeout(this.fdFlag) this.fdFlag = setTimeout(() => { that.effectiveAdd() that.fdFlag = null; }, 500) }, effectiveAdd() { if (this.effectiveindex == 4) { if (this.effectiveitext.length == 0) { uni.showToast({ title: '备注不能为空', icon: "none", duration: 2000 }); return } } this.effective = false; 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; this.tap = 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.innerAudioContext.destroy(); this.stateisshow = 1; uni.navigateTo({ url: '/pages/learning/Keywordsearch?customerId=' + this.customerId + "&status=" + this.status + "&skpl=" + "1" }) }, // 添加角色 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 }, btnConfirmthetag() { let that = this clearTimeout(this.fdFlag2) this.fdFlag2 = setTimeout(() => { that.Confirmthetag() that.fdFlag2 = null; }, 500) }, //确认标记 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) }).catch(e => { console.log(e) }) }, //分角色 tapspagek(index) { this.roleindex = index; this.newluyinList = []; this.fenjiaoseunfo() this.$forceUpdate() }, //------------------------------------分角色标记刷新 fenjiaoseunfo() { var bgcd = this.sliderValue * 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, //仅为示例,并非真实接口地址。 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.innerAudioContext.destroy(); this.stateisshow = 1; uni.navigateTo({ url: '/pages/learning/Keywordsearch?customerId=' + this.customerId + "&status=" + this.status + "&skpl=" + "1" }) }, onPlay() { this.innerAudioContext.onPlay(() => { // 播放监听 console.log('播放!'); this.audioPlay = true; wx.enableAlertBeforeUnload({ message: "是否确认退出详情页面?", success: function(res) { console.log("方法注册成功:", res); }, fail: function(errMsg) { console.log("方法注册失败:", errMsg); }, }); }); }, onPause() { this.innerAudioContext.onPause(() => { wx.disableAlertBeforeUnload({ success: function(res) { console.log(res) }, fail: function(e) { console.log(e) } }); // 暂停监听 console.log('暂停播放!'); this.audioPlay = false }); }, onCanplay() { this.innerAudioContext.onCanplay((callback) => { console.log("缓冲回调", this.innerAudioContext.duration); }) }, onEnded() { this.innerAudioContext.onEnded(() => { // 结束播放监听 console.log('播放结束!'); this.audioPlay = false; }); }, onSeeking() { this.innerAudioContext.onSeeking((res) => { console.log("进行跳转", res); }) }, onSeeked() { this.innerAudioContext.onSeeked((res) => { console.log("结束跳转", res); this.$forceUpdate() }); }, TimeUpdate() { this.innerAudioContext.onTimeUpdate(() => { // var pages = getCurrentPages(); // if(pages[pages.length-1].route!="pages/mine/details2"){ // this.innerAudioContext.destroy(); // } const { currentTime, duration } = this.innerAudioContext; console.log(currentTime, 'TimeUpdate, currentTime') this.playNow = parseInt(currentTime * 1000) console.log(this.playNow) if (this.dialogList.length == 0) { return } else { const message = this.dialogList[0].message; for (let i = 0; i < message.length; i++) { if (Number(message[i].bg) < this.playNow && Number(message[i].ed) > this.playNow) { this.scrollId = "dialog" + this.csdFileindex + "text" + message[i].bg; break; } } } const currTimeStr = this.formatTime(currentTime); this.sliderValue = parseInt(currentTime); // 变动的时间 this.currentTimeStr = currTimeStr; //进度条最大值 this.sliderMax = this.luyinList[this.csdFileindex].recordDuration; 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.sliderMax = this.getTime(res[0].recordDuration) this.timeStr = this.getTime(res[0].recordDuration) this.date = res[0].receptionTime; this.getCorpusAnalysis(info); this.creatAudio() } else { this.luyinList = res; this.recordPath = res[0].recordPath this.sliderMax = this.getTime(res[0].recordDuration) this.timeStr = this.getTime(res[0].recordDuration) this.date = res[0].receptionTime; this.getCorpusAnalysis(info); this.creatAudio() } } }) }, //搜索跳转 adasdasdasd(e) { const currTimeStr = this.formatTime(e) this.currentTimeStr = currTimeStr this.innerAudioContext.seek(e); if (uni.getStorageSync('entrance') == 1) { return } else { this.innerAudioContext.play(); } }, //下一页 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) }) } } console.log("上一页", this.toptextindex) }, // 取消全部加精 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', }) }else{ let reg = /^[0-9]+$/ if (reg.test(this.thewrongword)) { this.$refs.uToast.show({ title: '错误词不能为纯数字', type: 'warning', }) } 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 { uni.showToast({ title: '正确值不能为空', duration: 2000 }); return } } else { uni.showToast({ title: '错误词不能为空', duration: 2000 }); return } } } }, //取消加入常错词 Cancelout() { this.isshow2 = false; this.dialogList.forEach(res => { res.message.forEach(asd => { asd.isshow = false; }) }) }, //加入长错词 Oftenthewrongword() { this.isNum = false; this.reswrongword = ""; this.isshow2 = true; let reg = /^[0-9]+$/ if (reg.test(this.thewrongword)) { this.isNum = 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 }) }) // util.getRequestPromise(config.service.findAllYi, {"itemId":this.buildingID}, false).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() { // if (this.ratelist.length == 0) { // uni.showLoading({ // title: '加载中' // }); 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', //仅为示例,并非真实接口地址。 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; this.dialogList.push(jsonInfo[this.textindex]); var itc = parseInt(info.bg / 1000) this.adasdasdasd(itc) } }) }, getTime(time) { return util.formatSecond(time) }, // 录音暂停播放 changePlayState() { if (this.audioPlay == false) { this.innerAudioContext.play(); } else { this.innerAudioContext.pause() } }, //音频前进回退 sliderChangeComplate(e) { let platetime = e.detail.value * 1000; this.dialogList = [] uni.request({ url: config.service.fastForward + '?corpusId=' + this.luyinList[this.csdFileindex].id + "&bg=" + platetime, //仅为示例,并非真实接口地址。 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; if (data.data.data.index > this.newluyinList.length) { this.dialogList.push(this.newluyinList[0]) } else { this.dialogList.push(this.newluyinList[data.data.data.index]) } console.log(e.detail, '1233333333333333333333333333333333333333333333333333333333333') const currTimeStr = this.formatTime(e.detail.value) this.currentTimeStr = currTimeStr this.innerAudioContext.seek(e.detail.value); this.innerAudioContext.play(); } }) }, //长按点击播放 clickbofang(dialog, item) { this.innerAudioContext.pause() this.dialogList.forEach(res => { res.message.forEach(asd => { asd.isshow = false; }) }) this.$forceUpdate() let platetime = item.bg; let newtime = item.bg / 1000; console.log(newtime, 'newTime') this.dialogList = [] uni.request({ url: config.service.fastForward + '?corpusId=' + this.luyinList[this.csdFileindex].id + "&bg=" + platetime, //仅为示例,并非真实接口地址。 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]) const currTimeStr = this.formatTime(newtime) console.log(currTimeStr, 'currTimeStr') this.currentTimeStr = currTimeStr this.innerAudioContext.seek(newtime); this.innerAudioContext.play(); } }) }, //录音实例 creatAudio() { this.innerAudioContext = uni.createInnerAudioContext(); if (uni.getStorageSync('entrance') == 1) { this.innerAudioContext.autoplay = false; } else { this.innerAudioContext.autoplay = true; } this.innerAudioContext.src = this.recordPath; this.innerAudioContext.title = '音频'; this.onPlay() this.onPause() this.onCanplay() this.onEnded() this.onSeeking() this.onSeeked() this.TimeUpdate() }, 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; }) } }, } </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; } } .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; .content { margin-left: 0; margin-right: 30upx; background: #F6F6F6; color: #999999; } } .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 { width: 64upx; height: 64upx; line-height: 64upx; text-align: center; // border: 1rpx solid red; font-size: 36rpx; border-radius: 50%; background: #F2F2F2; color: #008EF2; // display: flex; // justify-content: center; // align-items: center; image { width: 40upx; } } .scroll-Y .text .contentInfo .info { color: #ccc; font-size: 18rpx; font-size: 30rpx; padding: 0 28rpx; } .scroll-Y .text .contentInfo .content { margin-left: 30upx; line-height: 60rpx; text-align: left; padding: 0 5px; background: #2BC805; border-radius: 8upx; max-width: 442rpx; color: #FFFFFF; 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.active .content { color: #38FFF1; position: relative; } .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; position: relative; } .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: #2671E2; background: #F4F8FD; } .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; } </style>