1***@163.com
1***@163.com
  • 发布:2020-09-29 17:30
  • 更新:2020-09-29 17:30
  • 阅读:546

【报Bug】srcoll-view 在ios14下通过数组push数据,添加两三条数据后就卡住不能滑动 安卓以及ios14以下正常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: window10

HBuilderX类型: 正式

HBuilderX版本号: 2.8.13

手机系统: iOS

手机系统版本号: IOS 14

手机厂商: 苹果

手机机型: 苹果7

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

App下载地址或H5⽹址: 微信搜索带车聘小程序,app和小程序有一样的bug

示例代码:

···
<template>
<view>

    <view class="content" >  
        <header-nav type="message" bgColor="#ffffff" :title="msgBody.toname"></header-nav>  
        <view class="message_header">  
            <view>  
                <!-- <view class="message_header__item" @click="handleEvent('moblie')">  
                    <view class="message_header__item__phone"></view>  
                    <text class="message_header__item__text">换电话</text>  
                </view> -->  
                <view class="message_header__item" @click="makeCallUser()">  
                    <view class="message_header__item__phone"></view>  
                    <text class="message_header__item__text">拨打电话</text>  
                </view>  
            <!--    <view class="message_header__item" @click="handleEvent('card')">  
                    <view class="message_header__item__card"></view>  
                    <text class="message_header__item__text">发名片</text>  
                </view> -->  
                <view class="message_header__item" @click="handleEvent('invitation')">  
                    <view class="message_header__item__interview"></view>  
                    <text class="message_header__item__text">洽谈邀请</text>  
                </view>  
                <view class="message_header__item" @click="handleEvent('uninterested')">  
                    <view class="message_header__item__nofeel"></view>  
                    <text class="message_header__item__text">不感兴趣</text>  
                </view>  
            </view>  

        </view>  

        <!-- <image class="warn" v-if="isShowWarn" :src="`${imgUrl}/b_warn.png`"  mode="" @click="closeWarn"></image> -->  

        <view class="scrollTop"></view>  
        <!-- <view class="msg-list"> -->  
            <scroll-view class="msg-list" :style="{height:scrollHeight+'px',top:scrollBottom+'px'}" :scroll-y="true" @scroll="hideDrawer" :scroll-with-animation="scrollAnimation" :scroll-top="scrollTop" :scroll-into-view="scrollToView" @scrolltoupper="loadHistory" upper-threshold="50">  
                    <!-- 加载历史数据waitingUI -->  
                    <view class="msg-list-box">  
                        <view class="loading" v-if="isLoading">  
                            <view class="spinner">  
                                <view class="rect1"></view>  
                                <view class="rect2"></view>  
                                <view class="rect3"></view>  
                                <view class="rect4"></view>  
                                <view class="rect5"></view>  
                            </view>  
                        </view>  

                            <!-- <dcp-goods-card class="sj-card-info"></dcp-goods-card> -->  
                            <!-- <dcp-interview class="sj-card-info"></dcp-interview> -->  
                        <view class="row" v-for="(row,index) in msgList" :key="row.msg.id" :id="'msg'+row.msg.id">  
                            <!-- 系统消息 -->  

                            <view v-if="row.msg.type=='line' ">  
                                <view @click="gotoResume(row.msg.content.resume.uid,'message')">  
                                    <dcp-resume-card class="sj-card-info" :info="row.msg.content.resume"></dcp-resume-card>  
                                </view>  
                            </view>  
                            <view v-if="row.msg.type=='card' && row.msg.userinfo.uid!=msgBody.uid">  
                                <dcp-resume-card class="sj-card-info" :info="row.msg.content"></dcp-resume-card>  
                            </view>  
                            <!-- 电话卡片 -->  
                            <view v-if="row.msg.type=='mobile' && row.msg.content.type == 'card' && row.msg.content.driver_mobile  && row.msg.userinfo.uid==msgBody.uid">  
                                <view  class="card_area" style="margin: 0 auto;">  
                                    <view>  
                                        <view class="card_area__top">  
                                            <view class="card_area__top__icon"></view>  
                                            <text class="card_area__top__text">{{row.msg.content.driver_mobile}}</text>  
                                        </view>  
                                        <view class="card_area__bottom">  
                                            <!-- <view>发短信</view> -->  
                                            <view style="width: 100%;" @click="makePhoneCall(row.msg.content.driver_mobile)">打电话</view>  
                                        </view>  
                                    </view>  
                                </view>  
                            </view>  
                            <block v-if="row.type=='system'" >  
                                <view class="system">  
                                    <!-- 文字消息 -->  
                                    <view v-if="row.msg.type=='mobile' && row.msg.content.text && row.msg.userinfo.uid==msgBody.uid" class="text">  
                                        {{row.msg.content.text}}  
                                    </view>  
                                    <view v-if="row.msg.type=='mobile' && row.msg.content.status > 0  && row.msg.userinfo.uid==msgBody.uid" class="text">  
                                        {{row.msg.content.status == 1 ? '您已同意和对方交换电话号码' : '您已拒绝和对方交换电话号码'}}  
                                    </view>  
                                    <view v-if="row.msg.type=='mobile' && row.msg.content.status > 0  && row.msg.userinfo.uid!=msgBody.uid" class="text">  
                                        {{row.msg.content.status == 1 ? '对方已同意和您交换电话' : '对方已拒绝和您交换电话'}}  
                                    </view>  
                                    <!-- 洽谈邀请 -->  
                                    <view v-if="row.msg.type=='invitation' && row.msg.userinfo.uid==msgBody.uid" class="text">  
                                        您的洽谈邀请已经发送给对方,请耐心等待  
                                    </view>  
                                    <!-- 发送请求 -->  
                                <!--    <view v-if="row.msg.type=='mobile' && row.msg.userinfo.uid!=msgBody.uid" class=" card_area">  
                                        <view>  
                                            <view class="card_area__top">  
                                                <view class="card_area__top__icon"></view>  
                                                <text class="card_area__top__text">我想和您交换电话号码,您是否同意</text>  
                                            </view>  
                                            <view class="card_area__bottom">  
                                                <view>拒绝</view>  
                                                <view>同意</view>  
                                            </view>  
                                        </view>  
                                    </view> -->  

                                <!--    电话卡片  
                                    <view v-if="row.msg.type=='mobileCard' && row.msg.userinfo.uid==msgBody.uid">  
                                        <view  class="card_area">  
                                            <view>  
                                                <view class="card_area__top">  
                                                    <view class="card_area__top__icon"></view>  
                                                    <text class="card_area__top__text">{{row.msg.content.text}}</text>  
                                                </view>  
                                                <view class="card_area__bottom">  
                                                    <view>发短信</view>  
                                                    <view>打电话</view>  
                                                </view>  
                                            </view>  
                                        </view>  
                                    </view> -->  
                                    <view v-if="row.msg.type=='card' && row.msg.userinfo.uid!=msgBody.uid">  
                                        <dcp-resume-card class="sj-card-info" :info="row.msg.content"></dcp-resume-card>  
                                    </view>  
                                    <view v-if="row.msg.type=='card' && row.msg.userinfo.uid==msgBody.uid" class="text">  
                                        {{row.msg.content.text}}  
                                    </view>  
                                    <view v-if="row.msg.type=='invitation' && row.msg.userinfo.uid != msgBody.uid" class="text">  
                                        {{row.msg.content.status == 1 ? '对方已接受您的洽谈邀请' : '对方已拒绝您的洽谈邀请'}}  
                                    </view>  
                                    <!-- 领取红包消息 -->  
                                    <view v-if="row.msg.type=='redEnvelope'" class="red-envelope">  
                                        <image src="/static/img/red-envelope-chat.png"></image>  
                                        {{row.msg.content.text}}  
                                    </view>  
                                </view>  
                            </block>  
                            <!-- 用户消息 -->  
                            <block v-if="row.type=='user'">  
                                <!-- 自己发出的消息 -->  
                                <view class="my" v-if="row.msg.userinfo.uid==msgBody.uid">  
                                    <!-- 左-消息 -->  
                                    <view class="left">  
                                        <!-- 文字消息 -->  
                                        <view v-if="row.msg.type=='text'" class="bubble">  
                                            <rich-text :nodes="row.msg.content.text"></rich-text>  
                                        </view>  

                                        <!-- 定位 -->  
                                        <view v-if="row.msg.type=='location'" class=" card_area">  
                                            <view class="card_area__pos">  
                                                <view class="card_area__pos__model" @click="gotoMap(row.msg.content)"></view>  
                                                <view class="card_area__pos__title">  
                                                    <view>{{row.msg.content.name}}</view>  
                                                    <view>{{row.msg.content.address}}</view>  
                                                </view>  
                                                <view class="card_area__pos__map">  
                                                    <image style="width: 410rpx;height: 300rpx;" :src="`https://restapi.amap.com/v3/staticmap?markers=mid,0xFF0000,A:${row.msg.content.longitude},${row.msg.content.latitude}&zoom=14&scale=2&size=205*150&key=661503be0d42eed6673de1bf0da14476`" mode="aspectFill"></image>  
                                                    <!-- <map :latitude="row.msg.content.latitude" :longitude="row.msg.content.longitude" :markers="[{longitude:row.msg.content.longitude,latitude:row.msg.content.latitude}]"></map> -->  
                                                </view>  
                                            </view>  
                                        </view>  
                                        <!-- 语言消息 -->  
                                        <view v-if="row.msg.type=='voice'" class="bubble voice" @tap="playVoice(row.msg)" :class="playMsgid == row.msg.id?'play':''">  
                                            <view class="length">{{row.msg.content.length}}</view>  
                                            <view class="icon my-voice"></view>  
                                        </view>  
                                        <!-- 图片消息 -->  
                                        <view v-if="row.msg.type=='image'" class="bubble img" @tap="showPic(row.msg)">  
                                            <image :src="row.msg.content.url" :style="{'width': row.msg.content.w+'px','height': row.msg.content.h+'px'}"></image>  
                                        </view>  
                                        <!-- 红包 -->  
                                        <view v-if="row.msg.type=='redEnvelope'" class="bubble red-envelope" @tap="openRedEnvelope(row.msg,index)">  
                                            <image src="/static/img/red-envelope.png"></image>  
                                            <view class="tis">  
                                                <!-- 点击开红包 -->  
                                            </view>  
                                            <view class="blessing">  
                                                {{row.msg.content.blessing}}  
                                            </view>  
                                        </view>  

                                    </view>  
                                    <!-- 右-头像 -->  
                                    <view class="right">  
                                        <image :src="row.msg.userinfo.face"></image>  
                                    </view>  
                                </view>  
                                <!-- 别人发出的消息 -->  
                                <view class="other" v-if="row.msg.userinfo.uid ==msgBody.touid">  
                                    <!-- 左-头像 -->  
                                    <view class="left">  

                                        <image @click="gotoResume(msgBody.touid.replace('driver_',''),'message')" :src="row.msg.userinfo.face"></image>  
                                    </view>  
                                    <!-- 右-用户名称-时间-消息 -->  
                                    <view class="right">  
                                        <!-- <view class="username">  
                                            <view class="name">{{row.msg.userinfo.username}}</view> <view class="time">{{row.msg.time}}</view>  
                                        </view> -->  
                                        <!-- 发送请求 -->  
                                        <view v-if="row.msg.type=='mobile' && row.msg.userinfo.uid!=msgBody.uid" class=" card_area">  
                                            <view>  
                                                <view class="card_area__top">  
                                                    <view class="card_area__top__icon"></view>  
                                                    <text class="card_area__top__text">我想和您交换电话号码,您是否同意</text>  
                                                </view>  
                                                <view class="card_area__bottom">  
                                                    <view @click="handlePhone(2,row.msg.content.id)">拒绝</view>  
                                                    <view @click="handlePhone(1,row.msg.content.id)">同意</view>  
                                                </view>  
                                            </view>  
                                        </view>  
                                        <!-- 文字消息 -->  
                                        <view v-if="row.msg.type=='text'" class="bubble">  
                                            <rich-text :nodes="row.msg.content.text"></rich-text>  
                                        </view>  

                                        <!-- 名片 -->  
                                    <!--    <view v-if="row.msg.type=='card'">  
                                            <dcp-resume-card class="sj-card-info" :info="row.msg.content"></dcp-resume-card>  
                                        </view> -->  
                                        <view v-if="row.msg.type=='location'" class=" card_area">  
                                            <view class="card_area__pos">  
                                                <view class="card_area__pos__model" @click="gotoMap(row.msg.content)"></view>  
                                                <view class="card_area__pos__title">  
                                                    <view>{{row.msg.content.name}}</view>  
                                                    <view>{{row.msg.content.address}}</view>  
                                                </view>  
                                                <view class="card_area__pos__map">  
                                                    <image style="width: 410rpx;height: 300rpx;" :src="`https://restapi.amap.com/v3/staticmap?markers=mid,0xFF0000,A:${row.msg.content.longitude},${row.msg.content.latitude}&zoom=14&scale=2&size=205*150&key=661503be0d42eed6673de1bf0da14476`" mode="aspectFill"></image>  
                                                    <!-- <map :latitude="row.msg.content.latitude" :longitude="row.msg.content.longitude" :markers="[{longitude:row.msg.content.longitude,latitude:row.msg.content.latitude}]"></map> -->  
                                                </view>  
                                            </view>  
                                        </view>  
                                        <!-- 语音消息 -->  
                                        <view v-if="row.msg.type=='voice'" class="bubble voice" @tap="playVoice(row.msg)" :class="playMsgid == row.msg.id?'play':''">  
                                            <view class="icon other-voice"></view>  
                                            <view class="length">{{row.msg.content.length}}</view>  
                                        </view>  
                                        <!-- 图片消息 -->  
                                        <view v-if="row.msg.type=='image'" class="bubble img" @tap="showPic(row.msg)">  
                                            <image :src="row.msg.content.url" :style="{'width': row.msg.content.w+'px','height': row.msg.content.h+'px'}"></image>  
                                        </view>  
                                        <!-- 红包 -->  
                                        <view v-if="row.msg.type=='redEnvelope'" class="bubble red-envelope" @tap="openRedEnvelope(row.msg,index)">  
                                            <image src="/static/img/red-envelope.png"></image>  
                                            <view class="tis">  
                                                <!-- 点击开红包 -->  
                                            </view>  
                                            <view class="blessing">  
                                                {{row.msg.content.blessing}}  
                                            </view>  
                                        </view>  
                                    </view>  
                                </view>  
                            </block>  
                        </view>  
                    </view>  

                </scroll-view>  

        <!-- </view> -->  
    </view>  
    <!-- 抽屉栏 -->  
    <view class="popup-layer" :class="popupLayerClass" @touchmove.stop.prevent="discard">  
        <!-- 表情 -->   
        <swiper class="emoji-swiper" :class="{hidden:hideEmoji}" indicator-dots="true" duration="150">  
            <swiper-item v-for="(page,pid) in emojiList" :key="pid">  
                <view v-for="(em,eid) in page" :key="eid" @tap="addEmoji(em)">  
                    <!-- <image mode="widthFix" :src="`${imgUrl}/img/emoji/${em.url}`"></image> -->  
                    <image mode="widthFix"  :src="`${imgUrl}/emjoy/${em.url}`"></image>  
                </view>  
            </swiper-item>  
        </swiper>  
        <!-- 常用语 -->  
        <view class="cyy_box" :class="{hidden:hidecyy}">  
            <view >  
                <scroll-view class="cyy_box__list" :refresher-enabled="false" :scroll-y="true" >  
                    <view class="scroll-view-item uni-bg-red" v-for="(item,index) of phrase" :key="index" @click="sendCyy(item.content)">  
                        <view class="cyy_box__list__item">  
                            <view>{{item.content}}</view>  
                            <view v-if="item.is_default == 1">默认招呼语</view>  
                            </view>  
                    </view>  

                </scroll-view>  
            </view>  

            <view class="cyy_box__bottom">  
                <view class="cyy_box__bottom__item" @click="gotoCommonWords('add')">  
                    <view class="cyy_box__bottom__item__add"></view>  
                    <text class="cyy_box__bottom__item__text">添加</text>  
                </view>  
                <view class="cyy_box__bottom__item" @click="gotoCommonWords('guanli')">  
                    <view class="cyy_box__bottom__item__guanli"></view>  
                    <text class="cyy_box__bottom__item__text">管理</text>  
                </view>  
            </view>  

        </view>  
        <!-- 更多功能 相册-拍照-红包 -->  
        <view class="more-layer" :class="{hidden:hideMore}">  
            <view class="list">  
                <view class="box" @tap="camera">  
                    <!-- <view class="icon paizhao"></view> -->  
                    <view class="more_box">  
                        <view class="more_box__xj"></view>  
                        <text class="more_box__text">打开相机</text>  
                    </view>  
                </view>  
                <view class="box" @tap="chooseImage">  
                    <!-- <view class="icon tupian2"></view> -->  

                    <view class="more_box">  
                        <view class="more_box__tk"></view>  
                        <text class="more_box__text">打开图库</text>  
                    </view>  
                </view>  

                <!-- <view class="box" @tap="handRedEnvelopes">  
                    <view class="icon yuyin"></view>  
                    红包  
                </view> -->  
                <view class="box" @touchstart="voiceBegin" @touchmove.stop.prevent="voiceIng" @touchend="voiceEnd" @touchcancel="voiceCancel">  
                    <!-- <view class="icon hongbao"></view> -->  
                    <view class="more_box">  
                        <view class="more_box__yuyin"></view>  
                        <text class="more_box__text">语音</text>  
                    </view>  
                </view>  
                <view class="box" @tap="handleSendPos">  
                    <!-- <view class="icon hongbao"></view> -->  
                    <view class="more_box">  
                        <view class="more_box__pos"></view>  
                        <text class="more_box__text">发送定位</text>  
                    </view>  
                </view>  
                <view class="box" @tap="handleReport">  
                    <!-- <view class="icon hongbao"></view> -->  
                    <view class="more_box">  
                        <view class="more_box__tous"></view>  
                        <text class="more_box__text">举报投诉</text>  
                    </view>  
                </view>  
            </view>  
        </view>  
    </view>  
    <!-- 底部输入栏 -->  
    <view class="input-box" :class="[popupLayerClass,fiexdKeyboard]" :style="{bottom:inputBottom+'px'}" @touchmove.stop.prevent="discard">  
        <!-- H5下不能录音,输入栏布局改动一下 -->  
        <!-- #ifndef H5 -->  
        <view class="voice">  
            <!-- <view class="icon" :class="isVoice?'jianpan':'yuyin'" @tap="switchVoice"></view> -->  
            <view @tap="openCyyDrawer" class="cyy">常用语</view>  
        </view>  
        <!-- #endif -->  
        <!-- #ifdef H5 -->  
        <view class="more" @tap="showMore">  
            <view class="icon add"></view>  
        </view>  
        <!-- #endif -->  
        <view class="textbox">  
            <view class="voice-mode" :class="[isVoice?'':'hidden',recording?'recording':'']" @touchstart="voiceBegin" @touchmove.stop.prevent="voiceIng" @touchend="voiceEnd" @touchcancel="voiceCancel">{{voiceTis}}</view>  
            <view class="text-mode"  :class="isVoice?'hidden':''">  
                <view class="box">  
                    <textarea auto-height="true" class="uni-input" :cursor-spacing="20" :show-confirm-bar="false" :adjust-position="false" v-model="textMsg" @focus="textareaFocus" @blur="textareaBlur"/>  
                </view>  
                <view class="em" @tap="chooseEmoji">  
                    <view class="icon biaoqingicon"></view>  
                </view>  
            </view>  
        </view>  
        <!-- #ifndef H5 -->  
        <view class="more" @tap="showMore">  
            <view class="icon addIcon"></view>  
        </view>  
        <!-- #endif -->  
        <view class="send" :class="isVoice?'hidden':''" @tap="sendText">  
            <view class="btn">发送</view>  
        </view>  
    </view>  
    <!-- 录音UI效果 -->  
    <view class="record" :class="recording?'':'hidden'">  
        <view class="ing" :class="willStop?'hidden':''"><view class="icon luyin2" ></view></view>  
        <view class="cancel" :class="willStop?'':'hidden'"><view class="icon chehui" ></view></view>  
        <view class="tis" :class="willStop?'change':''">{{recordTis}}</view>  
    </view>  
    <!-- 红包弹窗 -->  
    <view class="windows" :class="windowsState">  
        <!-- 遮罩层 -->  
        <view class="mask" @touchmove.stop.prevent="discard" @tap="closeRedEnvelope"></view>  
        <view class="layer" @touchmove.stop.prevent="discard">  
            <view class="open-redenvelope">  
                <view class="top">  
                    <view class="close-btn">  
                        <view class="icon close" @tap="closeRedEnvelope"></view>  
                    </view>  
                    <image src="/static/img/im/face/face_1.jpg"></image>  
                </view>  
                <view class="from">来自{{redenvelopeData.from}}</view>  
                <view class="blessing">{{redenvelopeData.blessing}}</view>  
                <view class="money">{{redenvelopeData.money}}</view>  
                <view class="showDetails" @tap="toDetails(redenvelopeData.rid)">  
                    查看领取详情 <view class="icon to"></view>  
                </view>  
            </view>  
        </view>  

    </view>  
</view>  

</template>
<script>
import { mapActions } from 'vuex'
import socket from '@/socket/index.js'
import {emjoyList} from '@/utils/emjoyData.js'
export default {
data() {
return {
covers: [{
latitude: 22.945249899,
longitude: 113.88829245,
// iconPath: '/static/images/icons/dingwei.png'
}],
//文字消息
textMsg:'',
//消息列表
isHistoryLoading:false,
scrollAnimation:false,
scrollTop:0,
scrollToView:'',
msgList:[],
msgImgList:[],
myuid:0,

            //录音相关参数  
            // #ifndef H5  
            //H5不能录音  
            RECORDER:uni.getRecorderManager(),  
            // #endif  
            isVoice:false,  
            voiceTis:'按住 说话',  
            recordTis:"手指上滑 取消发送",  
            recording:false,  
            willStop:false,  
            initPoint:{identifier:0,Y:0},  
            recordTimer:null,  
            recordLength:0,  

            //播放语音相关参数  
            AUDIO:uni.createInnerAudioContext(),  
            playMsgid:null,  
            VoiceTimer:null,  
            // 抽屉参数  
            popupLayerClass:'',  
            fiexdKeyboard:'',  
            // more参数  
            hideMore:true,  
            //表情定义  
            hideEmoji:true,  
            hidecyy:true,  
            // emojiList:[  
            //  [{"url":"100.gif",alt:"[微笑]"},{"url":"101.gif",alt:"[伤心]"},{"url":"102.gif",alt:"[美女]"},{"url":"103.gif",alt:"[发呆]"},{"url":"104.gif",alt:"[墨镜]"},{"url":"105.gif",alt:"[哭]"},{"url":"106.gif",alt:"[羞]"},{"url":"107.gif",alt:"[哑]"},{"url":"108.gif",alt:"[睡]"},{"url":"109.gif",alt:"[哭]"},{"url":"110.gif",alt:"[囧]"},{"url":"111.gif",alt:"[怒]"},{"url":"112.gif",alt:"[调皮]"},{"url":"113.gif",alt:"[笑]"},{"url":"114.gif",alt:"[惊讶]"},{"url":"115.gif",alt:"[难过]"},{"url":"116.gif",alt:"[酷]"},{"url":"117.gif",alt:"[汗]"},{"url":"118.gif",alt:"[抓狂]"},{"url":"119.gif",alt:"[吐]"},{"url":"120.gif",alt:"[笑]"},{"url":"121.gif",alt:"[快乐]"},{"url":"122.gif",alt:"[奇]"},{"url":"123.gif",alt:"[傲]"}],  
            //  [{"url":"124.gif",alt:"[饿]"},{"url":"125.gif",alt:"[累]"},{"url":"126.gif",alt:"[吓]"},{"url":"127.gif",alt:"[汗]"},{"url":"128.gif",alt:"[高兴]"},{"url":"129.gif",alt:"[闲]"},{"url":"130.gif",alt:"[努力]"},{"url":"131.gif",alt:"[骂]"},{"url":"132.gif",alt:"[疑问]"},{"url":"133.gif",alt:"[秘密]"},{"url":"134.gif",alt:"[乱]"},{"url":"135.gif",alt:"[疯]"},{"url":"136.gif",alt:"[哀]"},{"url":"137.gif",alt:"[鬼]"},{"url":"138.gif",alt:"[打击]"},{"url":"139.gif",alt:"[bye]"},{"url":"140.gif",alt:"[汗]"},{"url":"141.gif",alt:"[抠]"},{"url":"142.gif",alt:"[鼓掌]"},{"url":"143.gif",alt:"[糟糕]"},{"url":"144.gif",alt:"[恶搞]"},{"url":"145.gif",alt:"[什么]"},{"url":"146.gif",alt:"[什么]"},{"url":"147.gif",alt:"[累]"}],  
            //  [{"url":"148.gif",alt:"[看]"},{"url":"149.gif",alt:"[难过]"},{"url":"150.gif",alt:"[难过]"},{"url":"151.gif",alt:"[坏]"},{"url":"152.gif",alt:"[亲]"},{"url":"153.gif",alt:"[吓]"},{"url":"154.gif",alt:"[可怜]"},{"url":"155.gif",alt:"[刀]"},{"url":"156.gif",alt:"[水果]"},{"url":"157.gif",alt:"[酒]"},{"url":"158.gif",alt:"[篮球]"},{"url":"159.gif",alt:"[乒乓]"},{"url":"160.gif",alt:"[咖啡]"},{"url":"161.gif",alt:"[美食]"},{"url":"162.gif",alt:"[动物]"},{"url":"163.gif",alt:"[鲜花]"},{"url":"164.gif",alt:"[枯]"},{"url":"165.gif",alt:"[唇]"},{"url":"166.gif",alt:"[爱]"},{"url":"167.gif",alt:"[分手]"},{"url":"168.gif",alt:"[生日]"},{"url":"169.gif",alt:"[电]"},{"url":"170.gif",alt:"[炸弹]"},{"url":"171.gif",alt:"[刀子]"}],  
            //  [{"url":"172.gif",alt:"[足球]"},{"url":"173.gif",alt:"[瓢虫]"},{"url":"174.gif",alt:"[翔]"},{"url":"175.gif",alt:"[月亮]"},{"url":"176.gif",alt:"[太阳]"},{"url":"177.gif",alt:"[礼物]"},{"url":"178.gif",alt:"[抱抱]"},{"url":"179.gif",alt:"[拇指]"},{"url":"180.gif",alt:"[贬低]"},{"url":"181.gif",alt:"[握手]"},{"url":"182.gif",alt:"[剪刀手]"},{"url":"183.gif",alt:"[抱拳]"},{"url":"184.gif",alt:"[勾引]"},{"url":"185.gif",alt:"[拳头]"},{"url":"186.gif",alt:"[小拇指]"},{"url":"187.gif",alt:"[拇指八]"},{"url":"188.gif",alt:"[食指]"},{"url":"189.gif",alt:"[ok]"},{"url":"190.gif",alt:"[情侣]"},{"url":"191.gif",alt:"[爱心]"},{"url":"192.gif",alt:"[蹦哒]"},{"url":"193.gif",alt:"[颤抖]"},{"url":"194.gif",alt:"[怄气]"},{"url":"195.gif",alt:"[跳舞]"}],  
            //  [{"url":"196.gif",alt:"[发呆]"},{"url":"197.gif",alt:"[背着]"},{"url":"198.gif",alt:"[伸手]"},{"url":"199.gif",alt:"[耍帅]"},{"url":"200.png",alt:"[微笑]"},{"url":"201.png",alt:"[生病]"},{"url":"202.png",alt:"[哭泣]"},{"url":"203.png",alt:"[吐舌]"},{"url":"204.png",alt:"[迷糊]"},{"url":"205.png",alt:"[瞪眼]"},{"url":"206.png",alt:"[恐怖]"},{"url":"207.png",alt:"[忧愁]"},{"url":"208.png",alt:"[眨眉]"},{"url":"209.png",alt:"[闭眼]"},{"url":"210.png",alt:"[鄙视]"},{"url":"211.png",alt:"[阴暗]"},{"url":"212.png",alt:"[小鬼]"},{"url":"213.png",alt:"[礼物]"},{"url":"214.png",alt:"[拜佛]"},{"url":"215.png",alt:"[力量]"},{"url":"216.png",alt:"[金钱]"},{"url":"217.png",alt:"[蛋糕]"},{"url":"218.png",alt:"[彩带]"},{"url":"219.png",alt:"[礼物]"},]                
            // ],  
            emojiList:emjoyList.emojiList,  
            //表情图片图床名称 ,由于我上传的第三方图床名称会有改变,所以有此数据来做对应,您实际应用中应该不需要  
            onlineEmoji:{"100.gif":"AbNQgA.gif","101.gif":"AbN3ut.gif","102.gif":"AbNM3d.gif","103.gif":"AbN8DP.gif","104.gif":"AbNljI.gif","105.gif":"AbNtUS.gif","106.gif":"AbNGHf.gif","107.gif":"AbNYE8.gif","108.gif":"AbNaCQ.gif","109.gif":"AbNN4g.gif","110.gif":"AbN0vn.gif","111.gif":"AbNd3j.gif","112.gif":"AbNsbV.gif","113.gif":"AbNwgs.gif","114.gif":"AbNrD0.gif","115.gif":"AbNDuq.gif","116.gif":"AbNg5F.gif","117.gif":"AbN6ET.gif","118.gif":"AbNcUU.gif","119.gif":"AbNRC4.gif","120.gif":"AbNhvR.gif","121.gif":"AbNf29.gif","122.gif":"AbNW8J.gif","123.gif":"AbNob6.gif","124.gif":"AbN5K1.gif","125.gif":"AbNHUO.gif","126.gif":"AbNIDx.gif","127.gif":"AbN7VK.gif","128.gif":"AbNb5D.gif","129.gif":"AbNX2d.gif","130.gif":"AbNLPe.gif","131.gif":"AbNjxA.gif","132.gif":"AbNO8H.gif","133.gif":"AbNxKI.gif","134.gif":"AbNzrt.gif","135.gif":"AbU9Vf.gif","136.gif":"AbUSqP.gif","137.gif":"AbUCa8.gif","138.gif":"AbUkGQ.gif","139.gif":"AbUFPg.gif","140.gif":"AbUPIS.gif","141.gif":"AbUZMn.gif","142.gif":"AbUExs.gif","143.gif":"AbUA2j.gif","144.gif":"AbUMIU.gif","145.gif":"AbUerq.gif","146.gif":"AbUKaT.gif","147.gif":"AbUmq0.gif","148.gif":"AbUuZV.gif","149.gif":"AbUliF.gif","150.gif":"AbU1G4.gif","151.gif":"AbU8z9.gif","152.gif":"AbU3RJ.gif","153.gif":"AbUYs1.gif","154.gif":"AbUJMR.gif","155.gif":"AbUadK.gif","156.gif":"AbUtqx.gif","157.gif":"AbUUZ6.gif","158.gif":"AbUBJe.gif","159.gif":"AbUdIO.gif","160.gif":"AbU0iD.gif","161.gif":"AbUrzd.gif","162.gif":"AbUDRH.gif","163.gif":"AbUyQA.gif","164.gif":"AbUWo8.gif","165.gif":"AbU6sI.gif","166.gif":"AbU2eP.gif","167.gif":"AbUcLt.gif","168.gif":"AbU4Jg.gif","169.gif":"AbURdf.gif","170.gif":"AbUhFS.gif","171.gif":"AbU5WQ.gif","172.gif":"AbULwV.gif","173.gif":"AbUIzj.gif","174.gif":"AbUTQs.gif","175.gif":"AbU7yn.gif","176.gif":"AbUqe0.gif","177.gif":"AbUHLq.gif","178.gif":"AbUOoT.gif","179.gif":"AbUvYF.gif","180.gif":"AbUjFU.gif","181.gif":"AbaSSJ.gif","182.gif":"AbUxW4.gif","183.gif":"AbaCO1.gif","184.gif":"Abapl9.gif","185.gif":"Aba9yR.gif","186.gif":"AbaFw6.gif","187.gif":"Abaiex.gif","188.gif":"AbakTK.gif","189.gif":"AbaZfe.png","190.gif":"AbaEFO.gif","191.gif":"AbaVYD.gif","192.gif":"AbamSH.gif","193.gif":"AbaKOI.gif","194.gif":"Abanld.gif","195.gif":"Abau6A.gif","196.gif":"AbaQmt.gif","197.gif":"Abal0P.gif","198.gif":"AbatpQ.gif","199.gif":"Aba1Tf.gif","200.png":"Aba8k8.png","201.png":"AbaGtS.png","202.png":"AbaJfg.png","203.png":"AbaNlj.png","204.png":"Abawmq.png","205.png":"AbaU6s.png","206.png":"AbaaXn.png","207.png":"Aba000.png","208.png":"AbarkT.png","209.png":"AbastU.png","210.png":"AbaB7V.png","211.png":"Abafn1.png","212.png":"Abacp4.png","213.png":"AbayhF.png","214.png":"Abag1J.png","215.png":"Aba2c9.png","216.png":"AbaRXR.png","217.png":"Aba476.png","218.png":"Abah0x.png","219.png":"Abdg58.png"},  
            //红包相关参数  
            windowsState:'',  
            redenvelopeData:{  
                rid:null,   //红包ID  
                from:null,  
                face:null,  
                blessing:null,  
                money:null  
            },  
            msgBody:{  
                uid:'',  
                uname:'',  
                touid:'',  
                toname:'',  
            },  
            params:{  
                uid:'',  
                touid:'',  
                page:1,  
                limit:20  
            },  
            touid:'',  
            isLoading:true,  
            phrase:[],  
            imgUrl:getApp().globalData.imgUrl,  
            role:uni.getStorageSync('userRole'),  
            scrollHeight:0,  
            scrollBottom:0,  
            lineId:'',  
            lineInfo:{},  
            interviewInfo:{},  
            isShowWarn:false,  
            inputBottom:''  
        };  
    },  
    onLoad(option) {  

        //语音自然播放结束  
        this.AUDIO.onEnded((res)=>{  
            this.playMsgid=null;  
        });  
        // #ifndef H5  
        //录音开始事件  
        this.RECORDER.onStart((e)=>{  
            this.recordBegin(e);  
        })  
        //录音结束事件  
        this.RECORDER.onStop((e)=>{  
            this.recordEnd(e);  
        })  
        // #endif  
        console.log(option)  
        const socketUserInfo = this.$getStorageSync('socketUserInfo')  
        let row = {  
            uid:socketUserInfo.uid,  
            uname:socketUserInfo.realname,  
            thumb:socketUserInfo.avatar == "" ? `${this.imgUrl}/bavator.png` :socketUserInfo.avatar,  
            touid: option.touid,  
            toname:option.toname,  
            toavatar:decodeURIComponent(option.avatar)  
        }  
        uni.setStorageSync('toatatar',decodeURIComponent(option.avatar))  
        this.touid = option.touid  
        if (option.lineId){  
            this.lineId = option.lineId  
        }  

        Object.assign(this.msgBody,row)  
        this.getMessage()  
        // this.checkUserStatus(option.touid)  
        this.onMessage()  
    },  

    onShow(){  
        this.userReadMsg()  
        this.scrollTop = 9999999;  

        //模板借由本地缓存实现发红包效果,实际应用中请不要使用此方法。  
        //  
        // uni.getStorage({  
        //  key: 'redEnvelopeData',  
        //  success:  (res)=>{  
        //      console.log(res.data);  
        //      let nowDate = new Date();  
        //      let lastid = this.msgList[this.msgList.length-1].msg.id;  
        //      lastid++;  
        //      let row = {type:"user",msg:{id:lastid,type:"redEnvelope",time:nowDate.getHours()+":"+nowDate.getMinutes(),userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{blessing:res.data.blessing,rid:Math.floor(Math.random()*1000+1),isReceived:false}}};  
        //      this.screenMsg(row);  
        //      uni.removeStorage({key: 'redEnvelopeData'});  
        //  }  
        // });  
        uni.onKeyboardHeightChange(res => {  

          if (res.height>0){  
              this.inputBottom = res.height  

          }else{  
               this.inputBottom = 0  
          }  

        })  
    },  
    async mounted() {  
        this.scrollHeight = await this.initViewHeight({self:this,dom:['.scrollTop']})  
        const data = await this.getDomStyle({self:this,dom:['.scrollTop']})  
        const inputHeight = await this.getDomStyle({self:this,dom:['.input-box']})  
        this.scrollBottom = data.bottom  
        this.scrollHeight = this.scrollHeight - inputHeight.height  
        uni.$once('watchInterview',async data=>{  

            if (data.data.line_id && data.data.line_id != ''){  
                this.interviewInfo = data.data  
                await this.sendMsg({data:data.data},'invitation')  
            }  
        })  
        uni.$once('updateCYY',()=>{  
            this.getphrase()  
        })  

    },  
    onUnload() {  

        uni.$off(['onMessage'])  
    },  
    methods:{  
        ...mapActions(['dcpChooseImage','dcpvoice','initViewHeight','getDomStyle']),  
        //判断对方 资料完善度  
        checkUserStatus(touid){  
            let userInfo = touid.split('_')  
            let uid = userInfo[1]  
            let role = userInfo[0]  
            let type = 0  
            if (role == 'company') type = 2  
            if (role == 'driver') type = 1  
            this.$http._get('/api/user/info-percents',{uid,type},false).then(res=>{  
                const { code,data } = res  
                if (code == 200){  
                    if (type == 1){  
                        if (data.driving_licence == 0 || data.xinshi_licence == 0 || data.percents<70 || data.status == 0 || data.status == 2){  
                            this.isShowWarn = true  
                        }  
                    }  
                    this.isShowWarn = true  

                }  
            })  
        },  
        gotoResume(uid,type){  

            uni.navigateTo({  
                url:`/Bpages/pages/index/resume?id=${uid}&type=${type}`  
            })  
        },  
        async closeWarn(){  
            // let warnHei = await this.getDomStyle({self:this,dom:['.warn']})  
            // this.scrollHeight = this.scrollHeight+Number(warnHei.height)  
            // this.scrollBottom = this.scrollBottom - Number(warnHei.height)  

            this.isShowWarn = false  
        },  
        userReadMsg(){  
            this.$http._post('/api/chat/message-clear-unread',{uid:this.msgBody.uid,touid:this.msgBody.touid},false).then(()=>{  
                const socketUserInfo = this.$getStorageSync('socketUserInfo')  
                if (socketUserInfo){  
                    socket.send('pullUnreads',socketUserInfo)  
                }  
            })  
        },  
        // 头部点击事件  
        handleEvent(type){  
            let content = ''   
            type == 'moblie' && (content = '您确定要交换电话吗?')  

            type == 'invitation' && (content = '您确定要发邀请洽谈给对方吗?')  
            type == 'uninterested' && (content = '您确定要对该司机设置为不感兴趣吗?')  
            uni.showModal({  
                title: '提示',  
                content,  
                success: (res) => {  
                    if (res.confirm) {  
                        switch (type){  
                            case 'moblie':  
                                this.sendmoblie()  
                                break;  

                            case 'invitation':  
                                this.invitation()  
                                break;  
                            case 'uninterested':  
                                this.setUninterested()  
                                break;  
                            default:  
                                break;  
                        }  
                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            });  
        },  
        makePhoneCall(phone){  
            uni.makePhoneCall({  
                phoneNumber: phone  
            });  
        },  
        // 发送电话号码  
        async sendmoblie(){  
            let params = {  
                role:this.role,  
                type:1,  
                uid:this.touid.replace("driver_",'')  
            }  

            const result = await this.$http._post('/api/chat/request-create',params)  
            const { code,data } = result  
            if (code == 200){  
                if (data.status == 2){  
                    const msg = {driver_mobile:data.mobile,type:'card'}  
                    this.sendSelfMsg(msg,'mobile')  
                    return false  
                }  
                const row = {text:'交换电话号码请求已发送',id:data.id,type:'system'}  
                this.sendMsg(row,'mobile')  

            }  
        },  
        sendSelfMsg(msg,type){  
            let msgs = {  
                type:'system',  
                msg:{  
                    id:new Date().getTime(),  
                    type:type,  
                    userinfo:{  
                        uid:this.msgBody.uid,  
                        username:this.msgBody.uname,  
                        face: this.msgBody.thumb,  
                    },  
                    content:msg,  
                },  
            }  
            this.screenMsg(msgs)  
        },  
        async handlePhone(status,id){  
            const result = await this.$http._post('/api/chat/request-edit',{role:this.role,id,status})  

                const {code,data} = result  
                if (code == 200){  
                    if(status == 1){  
                        await this.sendMsg({status},'mobile')  
                        await this.sendMsg({company_mobile:data.company_mobile,driver_mobile:data.driver_mobile,type:'card'},'mobile')  
                    }else{  
                        await this.sendMsg({status},'mobile')  
                    }  

                }     
        },  
        invitation(){  
            this.$http._get('/api/company/line-invite-list').then(res=>{  
                const { code,data } = res  
                if (code == 200){  
                    if (data.length>0){  
                        uni.navigateTo({  
                            url:`/Bpages/pages/message/edInterview?touid=${this.msgBody.touid}&toname=${this.msgBody.toname}`  
                        })  
                    }else{  
                        uni.showModal({  
                            title: '提示',  
                            content: '您还没发布过货源,是否立即前往发布?',  
                            success: (res)=> {  
                                if (res.confirm) {  
                                    uni.navigateTo({  
                                        url:'/Bpages/pages/index/release'  
                                    })  
                                } else if (res.cancel) {  
                                    console.log('用户点击取消');  
                                }  
                            }  
                        });  
                    }  
                }  
            })  

        },  
        // 设置不感兴趣  
        async setUninterested(){  
            let uid = this.touid.replace('driver_','')  
            const {code} = await this.$http._post('/api/chat/uninterested-create',{type:this.role,uid})  
            if (code == 200){  
                this.$showToast('设置成功','',()=>{  
                    uni.navigateBack()  
                })  
            }  
        },  
        // 获取常用语  
        async getphrase(){  
            const {code,data} = await this.$http._get('/api/chat/phrase-list',{type:this.role},false)  
            if (code == 200){  
                this.phrase = data  
                if (this.msgList.length == 0){  
                    await this.sendLineInfo()  
                    let textMsg = data.filter(item=>item.is_default == 1)  
                    if (textMsg.length == 0){  
                        this.textMsg = data[0].content  
                    }else{  
                        this.textMsg = textMsg[0].content  
                    }  
                    this.sendText()  
                }  
            }  
        },  
        // 获取历史消息  
        getMessage(){  
            Object.assign(this.params,{uid:this.msgBody.uid,touid:this.msgBody.touid})  
            this.$http._get('/api/chat/message-list',this.params).then(res=>{  
                this.isLoading = false  
                const { code , data } = res  
                if (code == 200){  
                    if (data.data.length>0){  
                        this.getMsgList(data.data);  
                    }  
                    this.getphrase()  
                }  
            }).catch(err=>{  
                this.isLoading = false  
            })  
        },  
        sendLineInfo(){  
            return new Promise(async(resolve,reject) => {  
                const {code, data} = await this.$http._get('/api/company/line-detail',{id:this.lineId})  
                if (code == 200){  
                    this.lineInfo = data  
                    data.company_pic = data.pic  
                    const resume =  await this.getResume()  
                    const row = {  
                        line:data,  
                        resume  
                    }  
                    await this.sendMsg(row,'line')  
                    resolve()  
                }  
            })  

        },  
        getResume(){  
            return new Promise((resolve,reject)=>{  
                let uid = this.msgBody.touid.replace('driver_','')  
                this.$http._get('/api/user/look-driver-detail',{uid}).then( async res=>{  
                    const {code,data} = res  

                    resolve(data)  
                })  
            })  

        },  
        gotoCommonWords(type){  
            let url = '/pages/setup/common-words/common-words-add'  
            if (type == 'guanli') {  
                url = '/pages/setup/common-words/common-words-guanli'  
            }  
            uni.navigateTo({  
                url  
            })  
        },  
        handleReport(){  
            this.hideDrawer();  
            uni.navigateTo({  
                url:`/pages/setup/report/report?complain_uid=${this.touid}`  
            })  
        },  
        gotoMap({latitude,longitude}){  
            uni.openLocation({  
                latitude,  
                longitude  
            })  
        },  
        // 发送定位  
        handleSendPos(){  
            this.hideDrawer();  
            uni.chooseLocation({  
                success: (res) => {  

                    this.sendMsg(res,'location')  
                }  
            });  
        },  
        // 接受消息(筛选处理)  
        screenMsg(msg){  
            //从长连接处转发给这个方法,进行筛选处理  
            if(msg.type=='system'){  
                // 系统消息  
                switch (msg.msg.type){  
                    case 'text':  
                        this.addSystemTextMsg(msg);  
                        break;  
                    case 'redEnvelope':  
                        this.addSystemRedEnvelopeMsg(msg);  
                        break;  
                    case 'mobile':  
                        this.addSystemTextMsg(msg);  
                        break;  
                    case 'card':  
                        this.addSystemTextMsg(msg);  
                        break;  
                    case 'line':  
                        this.addSystemTextMsg(msg);  
                        break;  
                    case 'invitation':  
                        this.addSystemTextMsg(msg);  
                        break;  
                }  
            }else if(msg.type=='user'){  
                // 用户消息  
                switch (msg.msg.type){  
                    case 'text':  
                        this.addTextMsg(msg);  
                        break;  
                    case 'voice':  
                        this.addVoiceMsg(msg);  
                        break;  
                    case 'image':  
                        this.addImgMsg(msg);  
                        break;  
                    case 'redEnvelope':  
                        this.addRedEnvelopeMsg(msg);  
                        break;  
                    case 'location':  
                        this.addLocation(msg);  
                        break;  
                    case 'mobile':  
                        this.addSystemTextMsg(msg);  
                        break;  
                }  
                console.log('用户消息');  
                //非自己的消息震动  
                if(msg.msg.userinfo.uid!=this.msgBody.uid){  
                    console.log('振动');  
                    uni.vibrateLong();  
                }  
            }  
            this.$nextTick(() => {  
                // 滚动到底  
                this.scrollToView = 'msg'+msg.msg.id  
            });  
        },  
        makeCallUser(){  
            let touid = this.msgBody.touid.replace('driver_','')  
            this.$http._post('/api/company/call-create',{uid:touid}).then(res=>{  
                const { code, data } = res  
                if (code == 200){  
                    uni.showModal({  
                        title: '提示',  
                        content: `确定拨打虚拟电话:${data.mobile}?`,  
                        success: (res) => {  
                            if (res.confirm) {  
                                uni.makePhoneCall({  
                                    phoneNumber: data.mobile   
                                });  
                            } else if (res.cancel) {  
                                console.log('用户点击取消');  
                            }  
                        }  
                    });  

                }  
            }).catch(err=>{  
                const {code,message} = err  
                if ( code == 502 || code == 503 || code == 504 || code == 505){  
                    this.errShowModel(code,message)  
                }  
            })  
        },  
        errShowModel(code,content){  
            let confirmText = '去完善'  
            // if(code == 505) confirmText = '去充值'  
            uni.showModal({  
                title: '提示',  
                content,  
                confirmText,  
                confirmColor:'#FE1212',  
                success: function (res) {  
                    if (res.confirm) {  

                        let url = '/Bpages/pages/home/autoUserInfo'  
                        // if (code == 505) url = '/Cpages/pages/home/openMember'  
                        uni.navigateTo({  
                            url  
                        })  
                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            });  
        },  
        //触发滑动到顶部(加载历史信息记录)  
        loadHistory(e){  

            if(this.isHistoryLoading){  
                return ;  
            }  
            if (this.msgList.length<=0){  
                return ;  
            }  
            this.isHistoryLoading = true;//参数作为进入请求标识,防止重复请求  
            this.scrollAnimation = false;//关闭滑动动画  
            this.isLoading = true  

            let Viewid = this.msgList[0].msg.id;//记住第一个信息ID  
            let page = this.params.page + 1  
            Object.assign(this.params,{page})  
            this.$http._get('/api/chat/message-list',this.params).then(res=>{  
                this.isLoading = false  
                const { code, data } = res  
                if (code == 200){  
                    if (data.data.length > 0) {  
                        let list = []  
                        data.data.map(item => {  
                            let cjson = item.cjson  
                            if (item.type == 'text'){  
                                cjson.text = this.replaceEmoji(cjson.text)  
                            }  
                            let type = 'user'  

                            if (!cjson.id){  
                                if (item.type == 'line' || item.type == 'mobile' || item.type == 'invitation' || item.type == 'card'){  
                                    type = 'system'  
                                }  
                            }  
                            if (cjson.id && cjson.type){  
                                if (item.type == 'mobile'){  
                                    type = 'system'  
                                }  
                            }  
                            if (item.type == 'line'){  
                                type = 'system'  
                            }  
                            let msg = {  
                                type,  
                                msg:{  
                                    id:item.id,  
                                    time:item.atime,  
                                    type:item.type,  
                                    userinfo:{  
                                        uid:item.uid,  
                                        username:item.uname,  
                                        face: this.msgBody.uid == item.uid ? this.msgBody.thumb : this.msgBody.toavatar,  
                                    },  
                                    content:cjson,  
                                },  
                            }  
                            list.push(msg)  
                        })  
                        // 获取消息中的图片,并处理显示尺寸  
                        for(let i=0;i<list.length;i++){  
                            if(list[i].type=='user'&&list[i].msg.type=='image'){  
                                list[i].msg.content = this.setPicSize(list[i].msg.content);  
                                this.msgImgList.unshift(list[i].msg.content.url);  
                            }  
                            // list[i].msg.id = Math.floor(Math.random()*1000+1);  
                            this.msgList.unshift(list[i]);  
                        }  

                        //这段代码很重要,不然每次加载历史数据都会跳到顶部  
                        this.$nextTick(function() {  
                            this.scrollToView = 'msg'+Viewid;//跳转上次的第一行信息位置  
                            this.$nextTick(function() {  
                                this.scrollAnimation = true;//恢复滚动动画  
                            });  

                        });  
                        this.isHistoryLoading = false;  

                    }else{  
                        // this.$showToast('没有更多了')  
                    }  
                }  
            }).catch(err=>{  
                this.isLoading = false  
                this.scrollAnimation = true;//恢复滚动动画  
                this.isHistoryLoading = false;  
            })  

        },  
        // 加载初始页面消息  
        getMsgList(Hlist){  

            let list = []  
            Hlist.map(item => {  

                let cjson = item.cjson  
                if (item.type == 'text'){  
                    cjson.text = this.replaceEmoji(cjson.text)  
                }  
                let type = 'user'  

                if (!cjson.id){  
                    if (item.type == 'line' || item.type == 'mobile' || item.type == 'invitation' || item.type == 'card'){  
                        type = 'system'  
                    }  
                }  
                if (cjson.id && cjson.type){  
                    if (item.type == 'mobile'){  
                        type = 'system'  
                    }  
                }  
                if (item.type == 'line'){  
                    type = 'system'  
                }  
                let msg = {  
                    type,  
                    msg:{  
                        id:item.id,  
                        time:item.atime,  
                        type:item.type,  
                        userinfo:{  
                            uid:item.uid,  
                            username:item.uname,  
                            face: this.msgBody.uid == item.uid ? this.msgBody.thumb : this.msgBody.toavatar,  
                        },  
                        content:cjson,  
                    },  
                }  
                list.push(msg)  
            })  

            // 消息列表  
            // let list = [  
            //  {type:"system",msg:{id:0,type:"text",content:{text:"欢迎进入HM-chat聊天室"}}},  
            //  {type:"user",msg:{id:1,type:"text",time:"12:56",userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{text:"为什么温度会相差那么大?"}}},  
            //  {type:"user",msg:{id:2,type:"text",time:"12:57",userinfo:{uid:1,username:"售后客服008",face:"/static/img/im/face/face_2.jpg"},content:{text:"这个是有偏差的,两个温度相差十几二十度是很正常的,如果相差五十度,那即是质量问题了。"}}},  
            //  {type:"user",msg:{id:3,type:"voice",time:"12:59",userinfo:{uid:1,username:"售后客服008",face:"/static/img/im/face/face_2.jpg"},content:{url:"/static/voice/1.mp3",length:"00:06"}}},  
            //  {type:"user",msg:{id:4,type:"voice",time:"13:05",userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{url:"/static/voice/2.mp3",length:"00:06"}}},  
            //  {type:"user",msg:{id:5,type:'image',time:"13:05",userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{url:"/static/img/p10.jpg",w:200,h:200}}},  
            //  {type:"user",msg:{id:6,type:'image',time:"12:59",userinfo:{uid:1,username:"售后客服008",face:"/static/img/im/face/face_2.jpg"},content:{url:"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3251877128,2349018740&fm=26&gp=0.jpg",w:1920,h:1080}}},  
            //  {type:"system",msg:{id:7,type:"text",content:{text:"欢迎进入HM-chat聊天室"}}},  

            //  {type:"system",msg:{id:9,type:"redEnvelope",content:{text:"售后客服008领取了你的红包"}}},  
            //  {type:"user",msg:{id:10,type:"redEnvelope",time:"12:56",userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{blessing:"恭喜发财,大吉大利,万事如意",rid:0,isReceived:false}}},  
            //  {type:"user",msg:{id:11,type:"redEnvelope",time:"12:56",userinfo:{uid:1,username:"售后客服008",face:"/static/img/im/face/face_2.jpg"},content:{blessing:"恭喜发财",rid:1,isReceived:false}}},  
            //  {type:"user",msg:{id:1,type:"req",time:"12:56",userinfo:{uid:1,username:"售后客服",face:"/static/img/im/face/face_2.jpg"},content:{text:"ssss?"}}},  
            //  {type:"user",msg:{id:1,type:"pos",time:"12:56",userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:{text:"ssss?"}}},  

            // ]  
            // 获取消息中的图片,并处理显示尺寸  
            for(let i=0;i<list.length;i++){  
                if(list[i].type=='user'&&list[i].msg.type=='image'){  
                    list[i].msg.content = this.setPicSize(list[i].msg.content);  
                    this.msgImgList.push(list[i].msg.content.url);  
                }  
            }  
            this.msgList = list;  
            this.msgList.reverse()  

            // 滚动到底部  
            this.$nextTick(() => {  
                //进入页面滚动到底部  
                // this.scrollTop = 99999999999;  
                this.scrollToView = 'msg'+this.msgList[this.msgList.length-1].msg.id  
                this.$nextTick(() => {  
                    this.scrollAnimation = true;  
                });  

            });  
        },  
        //处理图片尺寸,如果不处理宽高,新进入页面加载图片时候会闪  
        setPicSize(content){  
            // 让图片最长边等于设置的最大长度,短边等比例缩小,图片控件真实改变,区别于aspectFit方式。  
            let maxW = uni.upx2px(350);//350是定义消息图片最大宽度  
            let maxH = uni.upx2px(350);//350是定义消息图片最大高度  
            if(content.w>maxW||content.h>maxH){  
                let scale = content.w/content.h;  
                content.w = scale>1?maxW:maxH*scale;  
                content.h = scale>1?maxW/scale:maxH;  
            }  
            return content;  
        },  

        //更多功能(点击+弹出)   
        showMore(){  
            this.isVoice = false;  
            this.hideEmoji = true;  
            this.hidecyy = true  
            if(this.hideMore){  
                this.hideMore = false;  
                this.openDrawer();  
            }else{  
                this.hideDrawer();  
            }  
        },  
        // 点击常用语  
        openCyyDrawer(){  
            this.hideEmoji = true;  
            this.hideMore = true  
            if(this.hidecyy){  
                this.hidecyy = false  
                // this.hideMore = true;  
                // this.hideEmoji = true;  

                this.openDrawer();  
            }else{  

                this.hideDrawer();  
            }  
        },  
        // 选择表情  
        chooseEmoji(){  
            this.hidecyy = true  
            this.hideMore = true;  
            if(this.hideEmoji){  
                this.hideEmoji = false;  
                this.openDrawer();  
            }else{  
                this.hideDrawer();  
            }  
        },  
        // 打开抽屉  
        openDrawer(){  
            this.popupLayerClass = 'showLayer';  
        },  
        // 隐藏抽屉  
        hideDrawer(){  
            this.popupLayerClass = '';  
            setTimeout(()=>{  
                this.hideMore = true;  
                this.hideEmoji = true;  
                this.hidecyy = true  
            },150);  
        },  

        // 选择图片发送  
        chooseImage(){  
            this.getImage('album');  
        },  
        //拍照发送  
        camera(){  
            this.getImage('camera');  
        },  
        //发红包  
        handRedEnvelopes(){  
            uni.navigateTo({  
                url:'HM-hand/HM-hand'  
            });  
            this.hideDrawer();  
        },  
        getImageInfo(res){  
            return new Promise((resolve,reject) =>{  
                uni.getImageInfo({  
                    src: res.tempFilePaths,  
                    success: (image)=>{  
                        let msg = {url:res.data.url,w:image.width,h:image.height};  
                        resolve(msg)  
                    },  
                    fail(err) {  
                        console.log('err',err)  
                    }  
                });  
            })  
        },  
        //选照片 or 拍照  
        async getImage(type){  
            this.hideDrawer();  
            const result = await this.dcpChooseImage({type:3,count:9,sourceType:type})  

            for(let i=0;i<result.length;i++){  
                let msg = {url:result[i].data.url};  
                let row = await this.getImageInfo(result[i])  
                await this.sendMsg(row,'image');      
            }  
        },  

        //添加表情  
        addEmoji(em){  
            this.textMsg+=em.alt;  
        },  

        //获取焦点,如果不是选表情ing,则关闭抽屉  
        textareaFocus(){  

            if(this.popupLayerClass=='showLayer' ){  
                this.hideDrawer();  
                this.fiexdKeyboard = 'fiexdKeyboard'  
            }  

            // this.hideMore = false;  
            // this.hideEmoji = false;  
        },    
        textareaBlur(){  
            this.fiexdKeyboard = ''  
        },  
        sendCyy(content){  
            this.textMsg = content  
            this.sendText()  
        },  
        // 发送文字消息  
        sendText(){  
            console.log('sendtext')  
            this.hideDrawer();//隐藏抽屉  
            if(!this.textMsg){  
                return;  
            }  
            // let content = this.replaceEmoji(this.textMsg);  
            let reg = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig  
            if (reg.test(this.textMsg)){  
                this.$showToast('内容包含非法字符,请重新输入')  

                return false  
            }  
            let content = this.textMsg;  
            let msg = {text:content}  
            this.sendMsg(msg,'text');  
            this.textMsg = '';//清空输入框  
        },  

        //替换表情符号为图片  
        replaceEmoji(str){  
            let isreplace = true  
            let replacedStr = str.replace(/\[([^(\]|\[)]*)\]/g,(item, index)=>{  
                console.log("item: " + item);  

                for(let i=0;i<this.emojiList.length;i++){  
                    let row = this.emojiList[i];  
                    for(let j=0;j<row.length;j++){  
                        let EM = row[j];  
                        if(EM.alt==item){  
                            isreplace = true  
                            //在线表情路径,图文混排必须使用网络路径,请上传一份表情到你的服务器后再替换此路径   
                            //比如你上传服务器后,你的100.gif路径为https://www.xxx.com/emoji/100.gif 则替换onlinePath填写为https://www.xxx.com/emoji/  

                            // let onlinePath = `${this.imgUrl}/img/emoji/`  
                            let onlinePath = `${emjoyList.emojiPath}`  
                            // let imgstr = '<img src="'+onlinePath+this.onlineEmoji[EM.url]+'">';  
                            let imgstr = '<img style="width:23px;height:23px;margin:0 2px;flex-shrink: 0;" src="'+onlinePath+EM.url+'">';  

                            if (imgstr.length>0){  
                                console.log("imgstr: " + imgstr);  
                                return imgstr;  
                            }  

                        }else{  
                            isreplace = false  
                        }  

                    }  
                }  
                if (!isreplace){  
                    return item  
                }  
            });  

            return '<div >'+replacedStr+'</div>';  
            // return '<div style="display: flex;align-items: center;flex-wrap: wrap;justify-content: flex-start;">'+replacedStr+'</div>';  
        },  

        //  
        onMessage(){  
            return new Promise((resolve,reject) =>{  
                uni.$on("onMessage",data => {  

                    if (data.uid == this.msgBody.uid) return false  
                    this.userReadMsg()  
                    let sendType = 'user'  

                    if (data.type == 'mobile' && !data.cjson.id) sendType = 'system'  
                    if (data.type == 'card' ) sendType = 'system'  
                    if (data.type == 'line' ) sendType = 'system'  
                    if (data.type == 'invitation' ) sendType = 'system'  

                    if (data.cjson.line_id){  
                        this.msgBody.line_id = data.cjson.line_id  
                    }  

                    if (data.cjson.driver_mobile){  

                        const msg = {driver_mobile:data.cjson.driver_mobile,type:'card'}  
                        this.sendSelfMsg(msg,'mobile')  
                    }  

                    let msg = {  
                        type:sendType,  
                        msg:{  
                            id:data.id,  
                            time:'',  
                            type:data.type,  
                            userinfo:{  
                                uid:data.uid,  
                                username:data.uname,  
                                face:data.thumb,  
                            },  
                            content:data.cjson,  
                        },  
                    }  
                    console.log('监听到一条消息',msg)  
                    this.screenMsg(msg);  
                    // this.onMessage()  
                    resolve()  

                })  
            })  

        },  
        // 发送消息  
        sendMsg(cjson,type){  
            return new Promise(async (resolve,reject) => {  
                //实际应用中,此处应该提交长连接,模板仅做本地处理。  
                cjson.toname = this.msgBody.toname  
                cjson.toavatar = this.msgBody.toavatar  
                cjson.uname = this.msgBody.uname  
                cjson.thumb = this.msgBody.thumb  
                cjson.role = 2  
                cjson.line_id = this.lineId  
                Object.assign(this.msgBody,{cjson,type})  
                socket.send('sendMsg',this.msgBody)  
                // socket.send('setNowConversation', this.msgBody)  
                uni.$once("onMessage",data => {  

                    let sendType = 'user'  

                    if (type == 'mobile' && this.msgBody.uid == data.uid) sendType = 'system'  
                    if (type == 'card' && this.msgBody.uid == data.uid) sendType = 'system'  
                    if (type == 'line' && this.msgBody.uid == data.uid) sendType = 'system'  
                    if (type == 'invitation' && this.msgBody.uid == data.uid) sendType = 'system'  
                    let msg = {  
                        type:sendType,  
                        msg:{  
                            id:data.id,  
                            time:'',  
                            type:type,  
                            userinfo:{  
                                uid:data.uid,  
                                username:data.uname,  
                                face:data.thumb,  
                            },  
                            content:data.cjson,  
                        },  
                    }  
                    console.log('自己发送一条消息',msg)  
                    this.screenMsg(msg);  
                    resolve()  
                })  

            })  

            // var nowDate = new Date();  
            // let lastid = this.msgList[this.msgList.length-1].msg.id;  
            // lastid++;  
            // let msg = {type:'user',msg:{id:lastid,time:nowDate.getHours()+":"+nowDate.getMinutes(),type:type,userinfo:{uid:0,username:"大黑哥",face:"/static/img/face.jpg"},content:content}}  
            // // 发送消息  
            // this.screenMsg(msg);  
            // 定时器模拟对方回复,三秒  
            // setTimeout(()=>{  
            //  lastid = this.msgList[this.msgList.length-1].msg.id;  
            //  lastid++;  
            //  msg = {type:'user',msg:{id:lastid,time:nowDate.getHours()+":"+nowDate.getMinutes(),type:type,userinfo:{uid:1,username:"售后客服008",face:"/static/img/im/face/face_2.jpg"},content:content}}  
            //  // 本地模拟发送消息  
            //  this.screenMsg(msg);  
            // },3000)  
        },  

        // 添加文字消息到列表  
        addTextMsg(msg){  
            msg.msg.content.text = this.replaceEmoji(msg.msg.content.text)  
            this.msgList.push(msg)  

        },  
        // 添加语音消息到列表  
        addVoiceMsg(msg){  
            this.msgList.push(msg);  
        },  
        // 添加图片消息到列表  
        addImgMsg(msg){  
            console.log('addImgMsg',msg)  
            msg.msg.content = this.setPicSize(msg.msg.content);  
            this.msgImgList.push(msg.msg.content.url);  
            this.msgList.push(msg);  
        },  
        addRedEnvelopeMsg(msg){  
            this.msgList.push(msg);  
        },  
        // 添加定位  
        addLocation(msg){  
            this.msgList.push(msg);  
        },  
        // 添加系统文字消息到列表  
        addSystemTextMsg(msg){  
            this.msgList.push(msg);  
        },  
        // 添加系统红包消息到列表  
        addSystemRedEnvelopeMsg(msg){  
            this.msgList.push(msg);  
        },  
        // 打开红包  
        openRedEnvelope(msg,index){  
            let rid = msg.content.rid;  
            uni.showLoading({  
                title:'加载中...'  
            });  
            console.log("index: " + index);  
            //模拟请求服务器效果  
            setTimeout(()=>{  
                //加载数据  
                if(rid==0){  
                    this.redenvelopeData={  
                        rid:0,  //红包ID  
                        from:"大黑哥",  
                        face:"/static/img/im/face/face.jpg",  
                        blessing:"恭喜发财,大吉大利",  
                        money:"已领完"  
                    }  
                }else{  
                    this.redenvelopeData={  
                        rid:1,  //红包ID  
                        from:"售后客服008",  
                        face:"/static/img/im/face/face_2.jpg",  
                        blessing:"恭喜发财",  
                        money:"0.01"  
                    }  
                    if(!msg.content.isReceived){  
                        // {type:"system",msg:{id:8,type:"redEnvelope",content:{text:"你领取了售后客服008的红包"}}},  
                        this.sendSystemMsg({text:"你领取了"+(msg.userinfo.uid==this.myuid?"自己":msg.userinfo.username)+"的红包"},'redEnvelope');  
                        console.log("this.msgList[index]: " + JSON.stringify(this.msgList[index]));  
                        this.msgList[index].msg.content.isReceived = true;  
                    }  
                }  
                uni.hideLoading();  
                this.windowsState = 'show';  

            },200)  

        },  
        // 关闭红包弹窗  
        closeRedEnvelope(){  
            this.windowsState = 'hide';  
            setTimeout(()=>{  
                this.windowsState = '';  
            },200)  
        },  
        sendSystemMsg(content,type){  
            let lastid = this.msgList[this.msgList.length-1].msg.id;  
            lastid++;  
            let row = {type:"system",msg:{id:lastid,type:type,content:content}};  
            this.screenMsg(row)  
        },  
        //领取详情  
        toDetails(rid){  
            uni.navigateTo({  
                url:'HM-details/HM-details?rid='+rid  
            })  
        },  
        // 预览图片  
        showPic(msg){  
            console.log(msg)  
            uni.previewImage({  
                indicator:"none",  
                current:msg.content.url,  
                urls: this.msgImgList  
            });  
        },  
        // 播放语音  
        playVoice(msg){  
            this.playMsgid=msg.id;  
            this.AUDIO.src = msg.content.url;  
            this.$nextTick(function() {  
                this.AUDIO.play();  
            });  
        },  
        // 录音开始  
        voiceBegin(e){  
            if(e.touches.length>1){  
                return ;  
            }  
            this.initPoint.Y = e.touches[0].clientY;  
            this.initPoint.identifier = e.touches[0].identifier;  
            this.RECORDER.start({format:"mp3"});//录音开始,  
        },  
        //录音开始UI效果  
        recordBegin(e){  
            this.recording = true;  
            this.voiceTis='松开 结束';  
            this.recordLength = 0;  
            this.recordTimer = setInterval(()=>{  
                this.recordLength++;  
            },1000)  
        },  
        // 录音被打断  
        voiceCancel(){  
            this.recording = false;  
            this.voiceTis='按住 说话';  
            this.recordTis = '手指上滑 取消发送'  
            this.willStop = true;//不发送录音  
            this.RECORDER.stop();//录音结束  
        },  
        // 录音中(判断是否触发上滑取消发送)  
        voiceIng(e){  
            if(!this.recording){  
                return;  
            }  
            let touche = e.touches[0];  
            //上滑一个导航栏的高度触发上滑取消发送  
            if(this.initPoint.Y - touche.clientY>=uni.upx2px(100)){  
                this.willStop = true;  
                this.recordTis = '松开手指 取消发送'  
            }else{  
                this.willStop = false;  
                this.recordTis = '手指上滑 取消发送'  
            }  
        },  
        // 结束录音  
        voiceEnd(e){  
            if(!this.recording){  
                return;  
            }  
            this.recording = false;  
            this.voiceTis='按住 说话';  
            this.recordTis = '手指上滑 取消发送'  
            this.RECORDER.stop();//录音结束  
        },  
        //录音结束(回调文件)  
        async recordEnd(e){  
            clearInterval(this.recordTimer);  
            if(!this.willStop){  
                console.log("e: ",e);  
                const file = await this.dcpvoice(e)  
                let msg = {  
                    length:0,  
                    url:file  
                }  
                let min = parseInt(this.recordLength/60);  
                let sec = this.recordLength%60;  
                min = min<10?'0'+min:min;  
                sec = sec<10?'0'+sec:sec;  
                msg.length = min+':'+sec;  
                this.sendMsg(msg,'voice');  
            }else{  
                console.log('取消发送录音');  
            }  
            this.willStop = false;  
        },  
        // 切换语音/文字输入  
        switchVoice(){  
            this.hideDrawer();  
            this.isVoice = this.isVoice?false:true;  
        },  
        discard(){  
            return;  
        }  
    }  
}  

</script>
<style lang="scss">
@import "@/static/HM-chat/css/style.scss";
.warn{
z-index: 99;
width: 100%;
height: 120rpx;
position: absolute;
// top: 275rpx;

}  
.msg-list-box{  
    margin: 20rpx 30rpx;  
}  
.sj-card-info{  
    width: 70%;  
    box-shadow: 0px 0px 10px 0px #f2f2f2;  
    // margin: 40rpx auto;  
    /deep/ .card_item{  
        width: 90% !important;  
        margin: 40rpx auto !important;  
        border-radius: 10rpx;  
        overflow: hidden;  
    }  

}  
.cyy_box{  
    background-color: #FFFFFF;  
    width: 100%;  
    height: 58vw;  
    // height: auto;  
    // overflow: hidden;  
    &__list{  
        background-color: #FFFFFF;  
        width: 100%;  
        height: 320rpx;  
        // overflow: auto;  

        &__item{  
            width: 100%;  
            padding: 20rpx 0;  
            text-indent: 40rpx;  
            margin: 0rpx auto;  
            border-bottom: 1px solid #f2f2f2;  
            color: #333333;  
            font-size: 28rpx;  
            display: flex;  
            justify-content: space-between;  
            align-items: center;  
        }  
    }  
    &__bottom{  
        display: flex;  
        justify-content: space-between;  
        align-items: center;  
        // height: 100%;  
        border-top: 1px solid #f2f2f2f2;  
        &__item{  
            flex: 1;  
            display: flex;  
            justify-content: center;  
            align-items: center;  
            width: 50%;  
            margin-top: 20rpx;  
            // height: 200rpx;  
            // line-height: 200rpx;  
            &__add{  
                background-image: url(#{$dcp-imgUrl}/icons/tianjia.png);  
                background-repeat: no-repeat;  
                background-size: contain;  
                width:44rpx ;  
                height:44rpx ;  
            }  
            &__guanli{  
                background-image: url(#{$dcp-imgUrl}/icons/guanli.png);  
                background-repeat: no-repeat;  
                background-size: contain;  
                width:44rpx ;  
                height:44rpx ;  
            }  
            &__text{  
                color: #333333;  
                font-size: 28rpx;  
                margin-left: 20rpx;  
            }  
        }  
    }  

}  
.biaoqingicon{  
    background-image: url(#{$dcp-imgUrl}/icons/biaoqing.png);  
    background-repeat: no-repeat;  
    background-size: contain;  
    width: 54rpx;  
    height: 54rpx;  
}  
.addIcon{  
    background-image: url(#{$dcp-imgUrl}/icons/jia.png);  
    background-repeat: no-repeat;  
    background-size: contain;  
    width: 54rpx;  
    height: 54rpx;  
}  
.message_header{  
    background-color: #FFFFFF;  
    padding: 20rpx 0;  
    position: relative;  
    z-index: 99;  

    >view{  
        width: 80%;  
        margin: 10rpx auto;  
        display: flex;  
        justify-content: space-between;  
        align-items: center;  
    }  
    &__item{  
        display: flex;  
        flex-direction: column;  
        justify-content: center;  
        align-items: center;  

        &__phone{  
            background-image: url(#{$dcp-imgUrl}/icons/dianhua.png);  
            background-size: cover;  
            height: 48rpx;  
            width: 46rpx;  
        }  
        &__card{  
            background-image: url(#{$dcp-imgUrl}/icons/mingpian.png);  
            background-size: cover;  
            height: 48rpx;  
            width: 45rpx;  
        }  
        &__interview{  
            background-image: url(#{$dcp-imgUrl}/icons/mianshi.png);  
            background-size: cover;  
            height: 50rpx;  
            width: 50rpx;  
        }  
        &__nofeel{  
            background-image: url(#{$dcp-imgUrl}/icons/buganxingqu.png);  
            background-size: cover;  
            height: 48rpx;  
            width: 44rpx;  
        }  
        &__text{  
            margin-top: 10rpx;  
            color: #555555;  
            font-size: 24rpx;  
        }  
    }  
}  
.card_area{  
    background-color: #FFFFFF !important;  
    width: 410rpx;  
    height: auto;  
    overflow: hidden;  
    border-radius: 10rpx;  
    box-shadow: 0px 0px 10px 0px #f2f2f2;  
    &__pos{  
        position: relative;  
        &__model{  
            position: absolute;  
            width: 100%;  
            height: 100%;  
            top: 0;  
            left: 0;  
            z-index: 9;  
        }  

        &__map{  
            width: 100% !important;  
            height: 300rpx !important;  
            /deep/ map{  
                width: 100% !important;  
                height: 100% !important;  
                position: absolute !important;  
            }  

        }  
        &__title{  
            padding: 20rpx 0;  
            padding-left: 10rpx;  
            >view:first-child{  
                font-size: 28rpx;  
                color: #000000;  
                overflow: hidden;  
                text-overflow:ellipsis;  
                white-space: nowrap;  
                margin-bottom: 10rpx;  
            }  
            >view:last-child{  
                overflow: hidden;  
                text-overflow:ellipsis;  
                white-space: nowrap;  
                font-size: 24rpx;  
                color: #c2c2c2;  
            }  
        }  
    }  
    &__top{  
        display: flex;  
        justify-content: flex-start;  
        align-items: center;  
        width: 100%;  
        height: auto;  
        overflow: hidden;  
        width: 90%;  
        margin: 20rpx auto;  
        &__icon{  
            background-image: url(#{$dcp-imgUrl}/icons/dianhua.png);  
            background-repeat: no-repeat;  
            background-size: contain;  
            height: 68rpx;  
            width: 56rpx;  
            margin-right: 20rpx;  
        }  
        &__text{  
            color: #333333;  
            font-size: 28rpx;  
        }  
    }  
    &__bottom{  
        display: flex;  
        justify-content: space-between;  
        align-items: center;  
        width: 100%;  
        height: auto;  
        overflow: hidden;  
        border-top: 1px solid #f2f2f2f2;  
        view{  
            font-size: 28rpx;  
            color: #333333;  
            width: 50%;  
            text-align: center;  
            height: 80rpx;  
            line-height: 80rpx;  
        }  
        view:first-child{  
            border-right: 1px solid #f2f2f2;  
        }  
    }  

}  
.more_box{  
    display: flex;  
    flex-direction: column;  
    justify-content: center;  
    align-items: center;  
    &__xj{  
        background-image: url(#{$dcp-imgUrl}/icons/xiangji.png);  
        background-repeat: no-repeat;  
        background-size: contain;  
        height: 54rpx;  
        width: 62rpx;  
    }  
    &__tk{  
        background-image: url(#{$dcp-imgUrl}/icons/tuku.png);  
        background-repeat: no-repeat;  
        background-size: contain;  
        height: 54rpx;  
        width: 62rpx;  
    }  
    &__yuyin{  
        background-image: url(#{$dcp-imgUrl}/icons/yuyin.png);  
        background-repeat: no-repeat;  
        background-size: contain;  
        height: 56rpx;  
        width: 44rpx;  
    }  
    &__pos{  
        background-image: url(#{$dcp-imgUrl}/icons/fasongdingwei.png);  
        background-repeat: no-repeat;  
        background-size: contain;  
        height: 54rpx;  
        width: 40rpx;  
    }  
    &__tous{  
        background-image:

操作步骤:

进入消息聊天窗口,连续发送三条信息后srcoll-view就会卡住

预期结果:

进入消息聊天窗口,发送信息正常滚动

实际结果:

不能滚动卡住

bug描述:

开发的消息系统 srcoll-view 在ios14下通过数组push数据,添加两三条信息后就卡住不能滑动 安卓以及ios14以下正常,app和小程序有一样的bug

2020-09-29 17:30 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复