<template>
  <div style="position: relative;" ref="firstParent">
    <div class="nav">
      <div class="nav-left">
        <img class="GroupPic" src="../assets/img/daxiang.png" />
      </div>
      <div class="nav-middle SupplierIndex_Nav">
        <ul class="clearfix" :style="{width:`${allWindowWidth}px`}">
          <li v-for="(item,index) in menuList" v-if="item.URL!=''" :class="{active:item.Id==chosenIndex}"
            @click="goUrl(item.URL,item.Id,index)">
            <span class="big_tittle"><i :class="[fontPub,item.icon]"></i>{{item.MenuName}}</span>
            <div class="hoverNote"></div>
          </li>
        </ul>
      </div>
      <div class="Supplier_nav_rightList">
        <ul>
          <li class="user_head" @click='hideIM'>
            <el-dropdown trigger="click">
              <div class="el-dropdown-link">
                <img src="../assets/img/default_head_img.jpg" />
                <span class="SupplierName" :title="userInfo.SupplierName">{{userInfo.SupplierName}}</span>
              </div>
              <el-dropdown-menu slot="dropdown" class="_dropdown _more_dropdown">
                <el-dropdown-item class="clearfix _dropdown_other" @click.native="settingSys">
                  <i class="iconfont icon-menu-shezhi1"></i>
                  设置
                </el-dropdown-item>
                <el-dropdown-item class="clearfix _dropdown_other" @click.native="exit">
                  <i class="iconfont icon-menu-tuichu"></i>
                  退出
                </el-dropdown-item>
              </el-dropdown-menu>
            </el-dropdown>
          </li>
          <li style="position: relative;">
            <i class="iconfont icon-imessage_top"
              :class="[hasNewMsg>0&&!IM_bodyIsShow?'animation red':'',IM_bodyIsShow?'red':'']"
              @click="IM_bodyIsShow=!IM_bodyIsShow,IM_navType=1"></i>
          </li>
          <!-- <li><i class="iconfont icon-gonggao" @click="IM_bodyIsShow=!IM_bodyIsShow, IM_navType=52"></i></li> -->
          <li>
            <el-dropdown trigger="click">
              <span class="el-dropdown-link">
                <i v-if="language=='zh-CN'" class="iconfont icon-language_top"></i>
                <i v-if="language=='Japanese'" class="iconfont icon-icon-riyu"></i>
              </span>
              <el-dropdown-menu class="changelanguage" slot="dropdown">
                <el-dropdown-item @click.native="ChangeLan('Japanese')">日语 <i v-if="language=='Japanese'"
                    class="iconfont icon-duigou"></i></el-dropdown-item>
                <el-dropdown-item @click.native="ChangeLan('zh-CN')">简体中文 <i v-if="language=='zh-CN'"
                    class="iconfont icon-duigou"></i></el-dropdown-item>
              </el-dropdown-menu>
            </el-dropdown>
          </li>
        </ul>
      </div>
    </div>

    <div class="IM_body" id="IM_body" v-show="IM_bodyIsShow">
      <div class="IM_nav">
        <ul>
          <li @click="IM_navType=1,imToolsType=0,changeTools(0)" :class="{checked:IM_navType==1}">
            <span class="txt">
              消息
              <div class="unreadMsg" v-show="IM_navType!=1&&hasNewMsg>0">{{hasNewMsg}}</div>
            </span>
            <div class="lihoverNote"></div>
          </li>
          <li @click="IM_navType=2,imToolsType=0,changeTools(0)" :class="{checked:IM_navType==2}">
            通讯录
            <div class="lihoverNote"></div>
          </li>
          <!-- <li @click="IM_navType=3,imToolsType=0,changeTools(0)" :class="{checked:IM_navType==3}">
              空间
              <div class="lihoverNote"></div>
            </li>
             <li @click="IM_navType=52,imToolsType=0,changeTools(0)" :class="{checked:IM_navType==52}">
              公告
              <div class="lihoverNote"></div>
            </li> -->
        </ul>
      </div>
      <div class="IM_tool" style='top: 41px;z-index: 1;' v-if="IM_navType!==3 && IM_navType!==52">
        <div class="search">
          <i class='iconfont icon-search search'></i>
          <input type="text" class='s-box' placeholder='搜索' v-model="newSearchContent" @keyup.enter="searchNameV2" />
          <i class="close iconfont icon-close" v-if='newSearchContent.length>0' @click="changeTools(0)"></i>
        </div>
      </div>
      <div v-show="imToolsType!=-1 && imToolsType!=52">
        <div v-show="IM_navType==1" class="IM_messageList ">
          <ul>
            <li v-for="(session, index) in sysMsgList" class="u-list-item"
              @click="enterSystemChat(session),refreshSysNoteDate()">
              <div
                style="float: left; width: 38px; height: 38px; border-radius: 19px;background: #6694DC;font-size: 14px; text-align: center; line-height: 38px; color: #fff; margin-right:10px">
                系统</div>
              <div class="cont">
                <p class="name">{{session.name}}</p>
                <p class="msg">{{session.lastMsgShow}}</p>
              </div>
              <div style="float: right; font-size: 12px; color: #999; margin: 0px 10px 0;">{{session.updateTimeShow}}
              </div>
              <div
                style="float: right; background: #E95252;font-size: 12px;color: #fff;height:17px; min-width:17px; text-align:center;border-radius:17px;vertical-align: middle;"
                v-show="session.unread > 0">{{session.unread}}</div>
            </li>

            <li v-for="(session, index) in sessionlist" class="u-list-item" :inline-desc="session.lastMsgShow"
              :key="session.id" :sessionId="session.id" @dblclick="enterChat(session)" v-if="session.to!=''">
              <img :src="session.avatar" width="24" />
              <div class="cont">
                <p class="name">{{session.name}}</p>
                <p class="msg">{{session.lastMsgShow}}</p>
              </div>
              <div style="float: right; font-size: 12px; color: #999;">
                {{session.updateTimeShow}}&nbsp;
                <i @click.stop="deleteSession(session)" style="color: #999; font-size: 14px!important; display: none;"
                  class="el-icon-circle-close-outline"></i>
              </div>
              <div
                style="position: absolute; right: 19px; bottom: 16px; background: #E95252; font-size: 12px; color: #fff;height:17px; min-width:17px; text-align:center;border-radius:17px;vertical-align: middle;"
                v-show="session.unread > 0">{{session.unread}}</div>
            </li>
          </ul>
        </div>
      </div>
      <div v-show="imToolsType==-1" class="IM_messageList IM_searchListBox">
        <loading v-show="isLoading"></loading>
        <ul v-show="!isLoading">
          <li v-for="item in searchList" @click="lt(item)">
            <img v-if="!item.icon" src="../assets/img/litheader.png" alt="" width="24">
            <img v-else :src="item.icon" alt="" :onerror="defaultImg" width="24">
            <div class="cont">
              <p class="name">
                {{item.name}}
              </p>
              <p class="msg">{{item.lastMsg}}</p>
            </div>
            <div class="tag-box">
              <span class="tag-company">{{item.companyName}}</span>
            </div>
          </li>
        </ul>
        <div class="search-none-data" v-show="!isLoading&&searchList.length==0">
          <i class="iconfont icon-zanwushuju"></i><br />
          抱歉，没有找到这位{{newSearchContent}}大侠
        </div>
      </div>
      <div v-show="IM_navType==1" class="IM_tool">
        <ul v-show="imToolsType==0">
          <li><i class="iconfont icon-sousuo" @click="changeTools(1)"></i></li>
          <li><i class="iconfont icon-pifu1"></i></li>
          <li><i class="iconfont icon-wuraomoshi"></i></li>
          <li><i class="iconfont icon-icon-"></i></li>
        </ul>
        <div class="search" v-show="imToolsType==1||imToolsType==-1">
          <input type="text" v-model="newSearchContent" @keyup.enter="searchNameV2" />
          <i class="close iconfont icon-close" @click="changeTools(0)"></i>
        </div>
      </div>
      <div v-show="IM_navType==52" class="IM_messageList IM_messageList2">
        <ul class="_SysNoteDate_ul" v-loading="SystemLog">
          <li @click="redNotice(item.noticeId, item.title)" v-for="item in NoticeList" class="u-list-item">
            <div style="float: left; width: 38px; height: 38px; border-radius: 19px;background: #6694DC;
		 					margin: 0px 10px;	font-size: 14px; text-align: center; line-height: 38px; color: #fff;">通知</div>
            <div class="cont sys_cont">
              <p class="name">{{item.groupName}}</p>
              <p class="msg sys_msg">{{item.title}}</p>
            </div>
            <div style="float: right; font-size: 12px; color: #999; margin: 12px 0 0;">{{item.noticeDate}}</div>
          </li>
          <li class="sysMsg_lod_more" @click="getNoticeList(2)" v-if="AllNoticeCount < NoticeListMsg.pageIndex">
            <p>加载更多...</p>
          </li>
        </ul>
      </div>
      <div class='IM_contacts contact-box' v-show="IM_navType==2 && searchList.length===0">
        <div class="contacts-type-box">
          <div class="contacts-type-item" :class="{active:contactsType==0}" @click="changeContactGroup(0)">同事</div>
          <div class="contacts-type-item" :class="{active:contactsType==1}" @click="changeContactGroup(1)">群聊</div>
          <el-tooltip effect="dark" content="新建群聊" placement="top-start">
            <i class="plus iconfont icon-img_jiahao_big" v-if="contactsType==1" @click="createGroup"></i>
          </el-tooltip>
        </div>
        <div v-show='contactsType==0' class="el-tree-style-div">
          <el-tree :data='webAllpartList' :props="defaultProps1">
            <span class="custom-tree-node" slot-scope="{ node, data }">
              <span class="fz14" v-if="data.Type==1">{{ node.label }}</span>
              <span class="fz14" v-if="data.Type==2" @dblclick="lt(data)">
                <img v-if='!data.Icon' src="../assets/img/litheader.png"
                  style="width: 24px; height: 24px; border-radius: 12px; display: inline-block; vertical-align: middle;" />
                <img v-if='data.Icon' :onerror="defaultImg" :src='data.Icon'
                  style="width: 24px; height: 24px; border-radius: 12px; display: inline-block; vertical-align: middle;" />
                {{ node.label }} <span
                  style="font-size: 12px; color: rgb(105, 105, 105);">{{data.IMAccount}}</span></span>
            </span>
          </el-tree>
        </div>
        <div v-show="contactsType==1" class="IM_messageList" style='top:41px'>
          <ul>
            <li v-for="(session, index) in teamList" class="u-list-item" :inline-desc="session.lastMsgShow"
              :key="session.id" :sessionId="session.id" @dblclick="enterChat(session)">
              <img :src="session.avatar" width="24" />
              <div class="cont">
                <p class="name team" :title='session.name'>{{session.name}}</p>
              </div>
              <div style="float: right; font-size: 12px; color: #999;height: 38px;line-height: 38px;">
                {{diaplayTime(session.updateTime)}}
              </div>
              <div
                style="position: absolute; right: 19px; bottom: 16px; background: #E95252; font-size: 12px; color: #fff;height:17px; min-width:17px; text-align:center;border-radius:17px;vertical-align: middle;"
                v-show="session.unread > 0">{{session.unread}}</div>
            </li>
          </ul>
        </div>
      </div>


      <div class='IM_contacts' v-show="IM_navType==4">
        <div style="padding: 10px; border-bottom: 1px dashed rgba(134,142,148,.4); overflow: hidden;">
          <div class="fl" style="width: 300px; margin-right: 10px;">
            <el-input prefix-icon="el-icon-search" placeholder='员工姓名，回车搜索' v-model='searchKey' @input='isSearchType'
              @keyup.enter.native="searchName"></el-input>
          </div>
          <div class="fl" style="font-size: 12px; color: #1BC594; margin-top: 2px; text-align: center;">
            <i class="iconfont icon-ico_commodity_defaul" @click="saveGroup" style="cursor: pointer;"></i>
            <br />
            确定
          </div>
        </div>
        <div v-if='!searchType' class="el-tree-style-div">
          <el-tree :data='webAllpartList' :props="defaultProps1">
            <span class="custom-tree-node" slot-scope="{ node, data }">
              <span class="fz14" v-if="data.Type==1">{{ node.label }}</span>
              <!--<span v-if='data.Type==1' class="fz14">({{data.Count}})</span>-->
              <span class="fz14" v-if="data.Type==2">
                <label>
                  <input type="checkbox" :value="data.IMAccount" v-model="IMList" @click="addFriend(data)" />
                  <img v-if='!data.Icon' src="../assets/img/litheader.png"
                    style="width: 24px; height: 24px; border-radius: 12px; display: inline-block; vertical-align: middle;" />
                  <img v-if='data.Icon' :onerror="defaultImg" :src='data.Icon'
                    style="width: 24px; height: 24px; border-radius: 12px; display: inline-block; vertical-align: middle;" />
                  {{ node.label }}
                </label>
              </span>
            </span>
          </el-tree>
        </div>
        <div v-if='searchType' class="IM_searchList">
          <ul>
            <li v-for="item in searchList">
              <label>
                <input type="checkbox" :value="item.imAccount" v-model="IMList" @click="addSearchFriend(item)" />
                <img v-if="!item.icon" src="../assets/img/litheader.png" alt="">
                <img v-else :src="item.icon" alt="" :onerror="defaultImg">
                {{item.name}}
                <el-tag v-if='item.departmentName'>{{item.departmentName}}</el-tag>
              </label>`
            </li>
          </ul>
        </div>
      </div>
      <div v-show="IM_navType==5" class="IM_messageList">
        <div class="sysMsgDiv">系统消息<span v-show="msglist">(共{{this.msgList.length}}条)</span>
          <span class="fr">
            <i @click="deletMsg(0)" class="iconfont icon-xingzhuang"></i>
            &nbsp;
            <i class="iconfont icon-img_caidan" @click="IM_navType=1"></i>
          </span>
        </div>
        <ul class="_SysNoteDate_ul" v-loading="SystemLog">
          <li @click="LogSetReadStatus(session)" v-for="(session, index) in msgList" class="u-list-item">
            <div style="float: left; width: 38px; height: 38px; border-radius: 19px;background: #6694DC;
		 					margin: 0px 10px;	font-size: 14px; text-align: center; line-height: 38px; color: #fff;">系统</div>
            <div class="cont sys_cont">
              <p class="name">{{session.Title}}</p>
              <p class="msg sys_msg">{{session.Content}}</p>
            </div>
            <div style="float: right; font-size: 12px; color: #999; margin: 12px 0 0;">{{session.CreateTime}}</div>
            <div
              style="float: right; background: #00B5E9; margin: 2px 10px 0 0; font-size: 12px; padding:2px 7px; border-radius: 50%; color: #fff;"
              v-show="session.unread > 0">{{session.unread}}</div>
          </li>
          <li class="sysMsg_lod_more" @click="refreshSysNoteDate('a')">
            <p>加载更多...</p>
          </li>
        </ul>
      </div>
      <div v-show="IM_navType==3">
        <div class="IM_myNav">
          <ul>
            <li :class="{cked:dynamicType==1}" @click="dynamicType=1"><i class="iconfont icon-suoyoudongtai"></i>
              全部动态</li>
            <li :class="{cked:dynamicType==2}" @click="dynamicType=2"><i class="iconfont icon-ico-wofabude"></i>
              我发布的</li>
            <li :class="{cked:dynamicType==3}" @click="dynamicType=3"><i class="iconfont icon-ico_yuwoxiangguan"></i>
              与我相关</li>
          </ul>
        </div>
        <div class="IM_cont" id='allDynamic' v-show="dynamicType==1">
          <div class="IM_cont_item" v-for="(item,index) in dynamicList">
            <p class="userAndTime">
              <img v-if="!item.crearteEmPhoto" src="../assets/img/litheader.png" alt="">
              <img v-else :src="item.crearteEmPhoto" alt="" :onerror="defaultImg">
              &nbsp;
              {{item.createEmName}}
              <span class="fr"
                style="font-size: 12px; color: #999;">{{item.createTime|diaplayTime(item.createTime)}}</span>
            </p>
            <p class="artcleCont">{{item.content|decodeURIComponent(item.content)}}</p>
            <p class="artclePic" v-if='item.fileType==1'>
              <img @click="getPic(item.files,index)" v-if='item.files.length==1' v-for="(i,index) in item.files"
                :src="i+'?x-oss-process=image/resize,m_mfit,h_100,w_300'" />
              <img @click="getPic(item.files,index)" v-if='item.files.length==2||item.files.length==4'
                style="margin-right: 5px;" v-for="(i,index) in item.files"
                :src="i+'?x-oss-process=image/resize,m_pad,w_148,h_150,color_333333'" />
              <img @click="getPic(item.files,index)" v-if='item.files.length==3||item.files.length>=5'
                style="margin: 1px;" v-for="(i,index) in item.files"
                :src="i+'?x-oss-process=image/resize,m_pad,h_100,w_100,color_333333'" />
            </p>
            <p v-if='item.fileType==2&&item.files.length==1'>
              <video :src="item.files[0]" controls="controls" style="width: 100%;">
                your browser does not support the video tag
              </video>
            </p>
            <p class="artcleAddress">
              <span v-if="item.address!=''"><i class="iconfont icon-img_dizhi_small"></i>{{item.address}}</span>
              <span class="fr">
                <!--{{item.hasLike}}-->
                <i class="iconfont icon-zan_" style="cursor: pointer;" v-if='!item.hasLike'
                  @click="likeArticle(item.id,index)"></i>
                <i class="iconfont icon-zan_" style="cursor: pointer; color: #E95252;" v-if='item.hasLike'
                  @click="disLikeArticle(item.id,index)"></i>
                <i class="iconfont icon-ico_pinglun1" style="cursor: pointer;"
                  @click="reviewIndex=index,reviewCont=''"></i>
              </span>
            </p>
            <div class="praiseAndReview">

              <div class="praise" v-if='item.likeList.length>0'>
                <i class="iconfont icon-zan_" style="color: #FF6868; vertical-align:initial;font-size: 14px;"></i>
                <span v-for="i in item.likeList">{{i.empName}}、</span>
              </div>

              <div class="review" v-if="item.commentList.length>0">
                <span class="reviewIcon">
                  <span class="sjx"></span>
                </span>
                <ul>
                  <li v-for="(i,index) in item.commentList">
                    <p v-if="i.byReplayEmpName==null">
                      <span>{{i.empName}}</span>：{{i.content|decodeURIComponent(i.content)}}
                      <i class="iconfont icon-ico_pinglun1"
                        @click="reviewIndex=i.outIndex,reviewMsg.commentId=i.commentId"></i>
                      <i v-if='userId==i.empId' class='iconfont icon-img_delete_small'
                        @click="deleteComments(i.commentId,i.outIndex,item.id)"></i>
                    </p>
                    <p v-if="i.byReplayEmpName!=null">
                      <span>{{i.empName}}</span>&nbsp;回复&nbsp;
                      <span>{{i.byReplayEmpName}}</span>：{{i.content|decodeURIComponent(i.content)}}
                      <i class="iconfont icon-ico_pinglun1"
                        @click="reviewIndex=i.outIndex,reviewMsg.commentId=i.commentId"></i>
                      <i v-if='userId==i.empId' class='iconfont icon-img_delete_small'
                        @click="deleteComments(i.commentId,i.outIndex,item.id)"></i>
                    </p>
                  </li>

                </ul>
              </div>
            </div>

            <div class="reviewInput" v-if='reviewIndex==index'>
              <el-input :placeholder="placeholder" maxlength='50' v-model='reviewCont'>
                <el-button slot="append" @click='reviewArticle(item.id,index)'>确定</el-button>
              </el-input>
            </div>
          </div>
        </div>

        <div class="IM_cont" id='myDynamic' v-show="dynamicType==2">
          <div class="myDynamicTop"></div>
          <div class='myDynamicItem' v-for="(item,index) in myDynamicList">
            <div class="iconOut">
              <div class="iconIn"></div>
            </div>
            <div
              style="position: absolute; font-size: 14px; left: -60px; top:3px; width: 50px; height: 24px; text-align: right;">
              {{item.createTime|diaplayTime(item.createTime)}}</div>
            <p class="artcleCont">{{item.content|decodeURIComponent(item.content)}}</p>
            <p class="artclePic" v-if='item.fileType==1'>
              <img @click="getPic(item.files,index)" v-if='item.files.length==1' v-for="(i,index) in item.files"
                :src="i+'?x-oss-process=image/resize,m_mfit,h_100,w_273'" />
              <img @click="getPic(item.files,index)" v-if='item.files.length==2||item.files.length==4'
                style="margin-right: 5px;" v-for="(i,index) in item.files"
                :src="i+'?x-oss-process=image/resize,m_pad,w_130,h_120,color_333333'" />
              <img @click="getPic(item.files,index)" v-if='item.files.length==3||item.files.length>=5'
                style="margin: 1px;" v-for="(i,index) in item.files"
                :src="i+'?x-oss-process=image/resize,m_pad,h_80,w_90,color_333333'" />
            </p>
            <p v-if='item.fileType==2&&item.files.length==1'>
              <video :src="item.files[0]" controls="controls" style="width: 100%;">
                your browser does not support the video tag
              </video>
            </p>
            <p class="artcleAddress">
              <span v-if="item.address!=''"><i class="iconfont icon-img_dizhi_small"></i>{{item.address}}</span>
              <span class="fr">
                <i class="iconfont icon-zan_" style="cursor: pointer;" v-if='!item.hasLike'
                  @click="likeArticleOne(item.id,index)"></i>
                <i class="iconfont icon-zan_" style="cursor: pointer; color: #E95252;" v-if='item.hasLike'
                  @click="disLikeArticleOne(item.id,index)"></i>
                <i class="iconfont icon-ico_pinglun1" style="cursor: pointer;"
                  @click="reviewIndex=index,reviewCont=''"></i>
                <i class="iconfont icon-img_delete_small" style="cursor: pointer;" @click="deleteArticle(item.id)"></i>
              </span>
            </p>

            <div class="praiseAndReview">

              <div class="praise" v-if='item.likeList.length>0'>
                <i class="iconfont icon-zan_" style="color: #FF6868; vertical-align:initial;font-size: 14px;"></i>
                <span v-for="i in item.likeList">{{i.empName}}、</span>
              </div>

              <div class="review" v-if="item.commentList.length>0">
                <span class="reviewIcon">
                  <span class="sjx"></span>
                </span>
                <ul>
                  <li v-for="i in item.commentList">
                    <p v-if="i.byReplayEmpName==null">
                      <span>{{i.empName}}</span>：{{i.content|decodeURIComponent(i.content)}}
                      <i class="iconfont icon-ico_pinglun1"
                        @click="reviewIndex=i.outIndex,reviewMsg.commentId=i.commentId"></i>
                      <i v-if='userId==i.empId' class='iconfont icon-img_delete_small'
                        @click="deleteCommentsOne(i.commentId,i.outIndex,item.id)"></i>
                    </p>
                    <p v-if="i.byReplayEmpName!=null">
                      <span>{{i.empName}}</span>&nbsp;回复&nbsp;
                      <span>{{i.byReplayEmpName}}</span>：{{i.content|decodeURIComponent(i.content)}}
                      <i class="iconfont icon-ico_pinglun1"
                        @click="reviewIndex=i.outIndex,reviewMsg.commentId=i.commentId"></i>
                      <i v-if='userId==i.empId' class='iconfont icon-img_delete_small'
                        @click="deleteCommentsOne(i.commentId,i.outIndex,item.id)"></i>
                    </p>
                  </li>
                </ul>
              </div>
            </div>


            <div class="reviewInput" v-if='reviewIndex==index'>
              <el-input :placeholder="placeholder" maxlength='50' v-model='reviewCont'>
                <el-button slot="append" @click='reviewArticleOne(item.id,index)'>确定</el-button>
              </el-input>
            </div>

          </div>


        </div>
        <div class="IM_cont" id='aboutMeDynamic' v-show="dynamicType==3">
          <div class="aboutMeDynamicItem" v-for='(item,index) in aboutMyDynamicList'>
            <div class="dynamicItemTop">
              <div class="leftDiv">
                <img :src="item.crearteEmPhoto" />
              </div>
              <div class="middleDiv">
                <p>{{item.createEmName}}</p>
                <p v-if='item.realtionType==1' style="line-height: 18px; font-size: 12px; color: #666;">
                  {{item.commentContent|decodeURIComponent(item.commentContent)}}</p>
                <p v-if='item.realtionType==2'><i class="iconfont icon-zan_"
                    style="color: #E95252; font-size: 12px;"></i></p>
                <p style="line-height: 18px; font-size: 12px; color: #999;">
                  {{item.createTime|diaplayTime(item.createTime)}}</p>
              </div>
              <div class="rightDiv" v-if='item.fileList.length>0'>
                <img :src="item.fileList[0]" width="60" height="60" />
              </div>
            </div>
            <div class="dynamicItembottom" v-if='item.realtionType==1'>
              <i class="iconfont icon-ico_pinglun1" style="cursor: pointer; font-size: 12px; color: #666;"
                @click="reviewIndex=index,reviewMsg.commentId=item.commentId,reviewCont=''"></i>
              <el-input v-if='reviewIndex==index' :placeholder="placeholder" maxlength='50' v-model='reviewCont'>
                <el-button slot="append" @click='reviewArticleTwo(item.id,index)'>确定</el-button>
              </el-input>
            </div>
          </div>
        </div>

        <div class="IM_cont" v-show="dynamicType==4">
          <p
            style="line-height: 14px; height: 14px; border-left:3px solid #E95252; margin-bottom: 10px; font-size: 14px; text-indent: 10px;">
            发布动态</p>
          <el-input type="textarea" :rows="4" maxlength='50' placeholder="这一刻你的想法..." v-model='dynamicCont'> </el-input>
          <p style="margin: 10px 0;">
            <el-upload action="" :file-list="imgList" :http-request="uploadImg" :multiple="false" :limit="9"
              accept="image/jpeg,image/gif,image/png,image/bmp" list-type="picture-card" :on-remove="handleRemoveImg">
              <i class="el-icon-plus"></i>
            </el-upload>
          </p>
          <input type="button" value="发布" class="normalBtn fr" @click="SaveDynamic" />
        </div>

        <i v-show="dynamicType!=4" class="iconfont icon-fabu" @click="dynamicType=4"
          style="position: fixed; right: 10px; color: #E95252; font-size: 30px; bottom: 50px; cursor: pointer; z-index: 999999;"></i>
        <div style="width: 100%; height: 50px;"></div>
      </div>
    </div>
    <div class="logsBack" v-if="logsShow">
      <div class="updateLogs">
        <img src="../assets/img/logsImg.png" alt="" class="logsImg" />
        <div class="logsTitle">
          {{versionList[0].UpdateTitle}}版本更新
        </div>
        <div class="inlogs_Content" v-html="versionList[0].UpdateContent">

        </div>
        <input type="button" value="我知道了" class="normalBtn" style="margin:10px 0 15px 155px;" @click="logsShow=false" />
      </div>
    </div>
    <div class="listen">
      <audio ref="audio">
        <source src="/static/music/msgMusic.mp3" type="audio/mpeg">
      </audio>
    </div>
    <div class="temDivs">
      <!-- :key="key" -->
      <router-view></router-view>
      <template v-if="showPage">
        <div>
          <div class="query-box" style="border-bottom: none;display:none;">
            <ul>
              <li>
                <span>
                  <em>{{$t('system.quety_area')}}</em>
                  <el-select v-model="Hotelmsg.Province" filterable @change="getProvinceList(Hotelmsg.Province,2)"
                    :placeholder="$t('hotel.hotel_province')">
                    <el-option :key="0" :value="0" label="请选择"></el-option>
                    <el-option v-for="item in provinceList" :key="item.ID" :label="item.Name" :value="item.ID">
                    </el-option>
                  </el-select>
                  <el-select v-model="Hotelmsg.City" filterable :placeholder="$t('hotel.hotel_city')">
                    <el-option :key="0" :value="0" label="请选择"></el-option>
                    <el-option v-for="item in cityList" :key="item.ID" :label="item.Name" :value="item.ID"></el-option>
                  </el-select>
                </span>
              </li>
              <li>
                <span><em>{{$t('admin.admin_company')}}</em>
                  <el-select filterable v-model='Hotelmsg.OutBranchId' :placeholder="$t('pub.unlimitedSel')">
                    <el-option :label="$t('pub.unlimitedSel')" :value='-1'></el-option>
                    <el-option v-for='item in companyList' :label='item.BName' :value='item.Id' :key="item.Id">
                    </el-option>
                  </el-select>
                </span>
              </li>
              <li>
                <span>
                  <em>星级</em>
                  <el-select v-model="Hotelmsg.Star" :placeholder="$t('pub.pleaseSel')">
                    <el-option :label="$t('pub.unlimitedSel')" :value='0'></el-option>
                    <el-option label="3星或商务" :value='3'></el-option>
                    <el-option label="4星" :value='4'></el-option>
                    <el-option label="5星" :value='5'></el-option>
                  </el-select>
                </span>
              </li>
              <li>
                <span>
                  <em>价格区间</em>
                  <el-select v-model="Hotelmsg.PriceLevel" :placeholder="$t('pub.pleaseSel')">
                    <el-option :label="$t('pub.unlimitedSel')" :value='0'></el-option>
                    <el-option label="5000以下" :value='1'></el-option>
                    <el-option label="5000~6000" :value='2'></el-option>
                    <el-option label="6000~7000" :value='3'></el-option>
                    <el-option label="7000~8000" :value='4'></el-option>
                    <el-option label="8000~9000" :value='5'></el-option>
                    <el-option label="9000~10000" :value='6'></el-option>
                    <el-option label="10000以上" :value='7'></el-option>
                  </el-select>
                </span>
              </li>
              <li><span><em>日期</em>
                  <el-date-picker v-model='Hotelmsg.StartDate' value-format="yyyy-MM-dd" type="date"
                    :picker-options="beforeCheck">
                  </el-date-picker>
                  <el-date-picker v-model='Hotelmsg.EndDate' value-format="yyyy-MM-dd" type="date"
                    :picker-options="afterCheck">
                  </el-date-picker>
                </span>
              </li>
              <li>
                <span>
                  <em>酒店</em>
                  <el-select v-model="Hotelmsg.HotelChooseArray" :placeholder="$t('pub.pleaseSel')"
                    class="multiple_input w300" filterable multiple :multiple-limit="3">
                    <el-option v-for="item in HotelList" :key="item.ID" :label="item.Name" :value="item.ID"></el-option>
                  </el-select>
                </span>
              </li>
              <li>
                <input type="button" class="normalBtn" value="温馨提示"
                  @click="showNotice=true,resetPageIndex(),GetHotelTipList()" />
                <input type="button" class="normalBtn" value="查询" @click="getList2()" />
                <input type="button" class="normalBtn" value="下载" @click="DownLoadHotelQuery()" />
              </li>
            </ul>
          </div>

          <div style="width: 100%;min-height:200px;  overflow-x: auto;padding:0 20px; " class="HotelQueryList"
            v-loading="loading">
            <div style="margin:20px 0">
              <!-- 红日 -->
              <span style="color:#fff;background-color: #ff3737;padding:2px 4px;border-radius:5px">赤い日</span>
              <!-- 旺季 -->
              <span style="color:#000000;background-color: #ff99cc;padding:2px 4px;border-radius:5px">ハイシーズン</span>
              <!-- 平季 -->
              <span style="color:#000000;background-color: #bcd6ee;padding:2px 4px;border-radius:5px">フラットシーズン</span>
              <!-- 淡季 -->
              <span style="color:#000000;background-color: #DDDDDD;padding:2px 4px;border-radius:5px">ローシーズン</span>
              <!-- 特别价 -->
              <span style="color:#000000;background-color: #02F78E;padding:2px 4px;border-radius:5px">特別価格</span>
            </div>
            <template v-if="isShow">
              <el-table v-if="dataList.length>0" :data="dataList" style="width:100%" border v-loading='loading'
                :height="tableHeight">
                <!-- 酒店名称 -->
                <el-table-column fixed label="ホテル名" min-width="180">
                  <template slot-scope="scope">
                    <div>
                      {{scope.row.HotelName}}</div>
                    <div>{{scope.row.TotalInventory}}</div>
                  </template>
                </el-table-column>
                <!-- 价格库存 -->
                <el-table-column label="価格&在庫" fixed min-width="120">
                  <template slot-scope="scope">
                    <!-- 价格 -->
                    <div class="Hotel_kong">価格</div>
                    <!-- 总/用/剩 -->
                    <div class="Hotel_kong" style="min-width:60px;">合計/使用する/残り</div>
                    <!-- 超定 -->
                    <div class="Hotel_kong">過剰決定</div>
                  </template>
                </el-table-column>
                <el-table-column v-for='(item,index) in dataList[0].subList' :label="getDateList(item.DateStr)"
                  :key='index' min-width="120">
                  <template slot-scope="scope">
                    <div class="Hotel_kong Com_hoteldiv">
                      <template v-if="scope.row.subList[index].PriceList.length>0">
                        <template v-for="childItem in scope.row.subList[index].PriceList">
                          <div :class="getClass(1,childItem.InventoryType)" style="height:100%;float:left;width:100%"
                            :style="{width:(100/scope.row.subList[index].PriceList.length)+'%'}">{{childItem.CostPrice}}
                          </div>
                        </template>
                      </template>
                      <template v-else>
                        <div :class="getClass(0,0)" style="width:100%;height:100%">&nbsp;</div>
                      </template>
                    </div>
                    <div class="Hotel_kong Com_hoteldiv">
                      {{scope.row.subList[index].Inventory}}/{{scope.row.subList[index].UseInventory}}/{{scope.row.subList[index].RemainingInventory}}
                    </div>
                    <div class="Hotel_kong Com_hoteldiv">
                      <span v-if="scope.row.subList[index].UseInventory-scope.row.subList[index].Inventory>0"
                        style="color:red;">
                        {{scope.row.subList[index].UseInventory-scope.row.subList[index].Inventory}}
                      </span>
                    </div>
                  </template>
                </el-table-column>
              </el-table>
              <div class="noDataNotice" v-else>
                <i class="iconfont icon-kong"></i>
                <p>{{$t("active.ld_noData")}}</p>
              </div>
            </template>

          </div>

          <div class="combottomDiv HqCom_bottom" v-if="showNotice">
            <el-form label-width="80px">
              <el-row>
                <el-col :span="20">
                  <el-form-item label="日期">
                    <el-date-picker class="w150" type="date" v-model="queryMsg.QStartDate"
                      :picker-options="pickerBeginDateBefore" value-format="yyyy-MM-dd" placeholder></el-date-picker>
                    <el-date-picker class="w150" type="date" v-model="queryMsg.QEndDate"
                      :picker-options="pickerBeginDateAfter" value-format="yyyy-MM-dd" placeholder></el-date-picker>
                  </el-form-item>
                </el-col>
                <el-col :span="4">
                  <input type="button" class="normalBtn" value="查询" @click="resetPageIndex(),GetHotelTipList()" />
                  <input type="button" class="normalBtn" value="关闭" @click="showNotice=false" />
                </el-col>
              </el-row>
              <div class="Hq_addDetail">
                <el-row>
                  <el-col :span="12">
                    <el-form-item label="说明">
                      <quill-editor class="w595" :options="editorOption" v-model="postMsg.TipContent"></quill-editor>
                    </el-form-item>
                  </el-col>
                  <el-col :span="12">
                    <input type="button" class="normalBtn" value="保存" @click="SaveHotelTip()" />
                  </el-col>
                </el-row>
              </div>
            </el-form>
            <div>
              <table border="0" cellspacing="1" cellpadding="0" class="HouseTypeList Hq_addTable" style="width:97%;">
                <tr>
                  <th width="50">编号</th>
                  <th>内容</th>
                  <th width="70">操作人</th>
                  <th width="150">操作时间</th>
                  <th width="80">操作</th>
                </tr>
                <template v-if="queryMsg.total>0">
                  <tr v-for="(item,index) in HotelTipList">
                    <td>{{item.Id}}</td>
                    <td>
                      <p style="text-align:left;padding-left:5px;" v-html="item.TipContent"></p>
                    </td>
                    <td>{{item.CreateByName}}</td>
                    <td>{{item.CreateTimeStr}}</td>
                    <td>
                      <el-tooltip class="item" effect="dark" content="编辑" placement="top">
                        <el-button type="primary" icon="el-icon-edit" circle @click="GetHotelTip(item.Id)"></el-button>
                      </el-tooltip>
                      <el-tooltip class="item" effect="dark" content="删除" placement="top">
                        <el-button type="danger" icon="el-icon-delete" circle @click="RemoveHotelTip(item.Id)">
                        </el-button>
                      </el-tooltip>
                    </td>
                  </tr>
                </template>
                <tr v-else>
                  <!-- 暂无数据 -->
                  <td colspan="5">まだデータがありません...</td>
                </tr>
              </table>
              <el-pagination background @current-change="handleCurrentChange" :current-page.sync="queryMsg.currentPage"
                :page-size="queryMsg.pageSize" layout="total,prev, pager, next, jumper" :total="queryMsg.total">
              </el-pagination>
            </div>
          </div>
          <el-dialog custom-class="w800" title="信息" :visible.sync="showHQinfo" center>
            <el-form>
              <table border="0" cellspacing="1" cellpadding="0" class="HouseTypeList Hq_addTable" style="width:100%;">
                <tr>
                  <!-- 编号 -->
                  <th width="50">数</th>
                  <th>内容</th>
                  <!-- 运营商 -->
                  <th width="70">オペレーター</th>
                  <!-- 运营时间 -->
                  <th width="140">稼働時間</th>
                </tr>
                <template v-if="queryMsg.total>0">
                  <tr v-for="(item,index) in HotelTipList">
                    <td>{{item.Id}}</td>
                    <td>
                      <p style="text-align:left;padding:0 5px;" v-html="item.TipContent"></p>
                    </td>
                    <td>{{item.CreateByName}}</td>
                    <td>{{item.CreateTimeStr}}</td>
                  </tr>
                </template>
                <tr v-else>
                  <!-- 暂无数据 -->
                  <td colspan="5">まだデータがありません...</td>
                </tr>
              </table>
              <el-pagination background @current-change="handleCurrentChange" :current-page.sync="queryMsg.currentPage"
                :page-size="queryMsg.pageSize" layout="total,prev, pager, next, jumper" :total="queryMsg.total">
              </el-pagination>
            </el-form>
            <div slot="footer" class="dialog-footer">
              <!-- 关闭 -->
              <button class="hollowFixedBtn" @click="showHQinfo = false">閉じる</button>
            </div>
          </el-dialog>
        </div>
      </template>
    </div>


    <div :class="{viewBigPicLayer:true,viewBigPicLayerDisplayNone:dspNone}" @click="closePicLayer">
      <i @click="closePicLayer" class="el-icon-circle-close-outline clolseViewBigPicLayer"></i>
      <el-carousel height="600px" :initial-index='initialIndex' :interval="5000" trigger="click">
        <el-carousel-item v-for="(item,index) in picObj" :key="index">
          <div class="inlineDiv ownScrollbarStyle"><img :src="item" /></div>
        </el-carousel-item>
      </el-carousel>
    </div>

    <vue-draggable-resizable v-show="IM_Chatlayer" ref="resizeBox" class="im-box" style="z-index:9999999" active
      :parent="true" :minw="478" :minh="300" :w="boxInfo.width" :h="boxInfo.height" :x="boxInfo.x" :y="boxInfo.y"
      :z="9999" :handles="['bm','br','mr']" :drag-handle="'.drag-title'" @resizestop="onResizstop"
      @dragstop="onDragstop">
      <div class="IM_message_box_left" v-if="openSessions.length>1">
        <ul>
          <li v-for="(item,index) in openSessions" :class="{active:item.id==currentSession.id}"
            @click="enterChat(item)">
            <img :src="item.avatar" v-if='item.avatar' :alt='item.name' />
            <img src="../assets/img/litheader.png" v-if='!item.avatar' :alt='item.name' />
            <span class="name">{{item.name}}</span>
            <i class="iconfont icon-close1" v-show="item.id==currentSession.id"
              @click.stop="deleteOpenSession(index)"></i>
            <div
              style="position: absolute; right: 5px; bottom: 16px; background: #E95252; font-size: 12px; color: #fff;height:17px; min-width:17px; text-align:center;border-radius:17px;vertical-align: middle;line-height:17px;padding: 0px 3px;"
              v-if="item.unread>0">{{item.unread}}</div>
          </li>
        </ul>
      </div>
      <div class="IM_message_box" :class="{right:openSessions.length>1}">
        <div class="drag-title">
          <div class="user-box">
            <img :src="currentSession.avatar" v-if='currentSession.avatar' v-show="openSessions.length==1" />
            <img src="../assets/img/litheader.png" v-if='!currentSession.avatar' v-show="openSessions.length==1" />
            <span class="name">{{currentSession.name}}</span>
            <span class="name arrow-down-box" @click="changeTheDown" v-if="currentSession.scene=='team'">
              {{oldGroupMemberList.length}} 人
              <span class="trans-box-down" :class="{'trans-box-down2':isDownOpen==true}">
                <i class="iconfont icon-arrow-down"></i>
              </span>
            </span>
          </div>
          <ul class="btn-box">
            <!-- <li><i class="iconfont icon-zuixiaohua"></i></li>
            <li @click="msgWindowsChange">
              <i class="iconfont icon-zuidahua" v-if="!isMax"></i>
              <i class="iconfont icon-icon-test4" v-if="isMax"></i>
            </li> -->
            <li @click="showUpdateTeam(1)" v-show="currentSession.scene=='team'">
              <i class="iconfont icon-ico_shezhi" style="color:#888"></i>
            </li>
            <li class="close" @click="closeOpenSession">
              <i class="iconfont icon-Close"></i>
            </li>
          </ul>
        </div>
        <div class="drag-body">
          <div class="team-member-box" v-if="currentSession.scene=='team'" v-show="isDownOpen">
            <ul>
              <li v-for="item in oldGroupMemberList" @dbclick="lt(item)">
                <img :src="item.avatar" />
                <span>
                  <span
                    style="background:rgb(32, 191, 107);padding:0px 5px; border-radius:5px;color:#F1f1f1;font-size:12px;magin-right:10px;display:inline"
                    v-if="currentSession.teamInfo.owner==item.account">群主</span>
                  {{item.alias}}
                </span>
              </li>
              <li v-if="currentSession.teamInfo.owner==userInfo.ImAccount && oldGroupMemberList.length<100">
                <div class="add" @click="addNewMember">
                  <i class="iconfont icon-mui-icon-add"></i>
                </div>
                <span style="color:rgb(30, 144, 255);margin-top: 4px;">邀请新成员</span>
              </li>
            </ul>
          </div>
          <div class="msg-content-box" id="msg-content">
            <chat-list type="session" :msglist="msglist" :userInfos="userInfos" :robotInfos="robotInfos"
              :myInfo="myInfo" :isRobot="isRobot" :canLoadMore="canLoadMore"></chat-list>
          </div>
          <div class="msg-foot-box">
            <chat-editor type="session" :isRobot="isRobot"></chat-editor>
          </div>
        </div>
      </div>
    </vue-draggable-resizable>
    <el-dialog :visible.sync="isAddGroup" class="addGroupByAlex" :modal="false">
      <div class="title">
        {{addOrUpdate==0?'邀请新成员':'新建群聊'}}
      </div>
      <div class="new-group-name" v-if="addOrUpdate==1">
        <input type="text" placeholder="请输入群名称" v-model="groupName" class="search-input" />
      </div>
      <div class="group-body">
        <div class="group-body-item">
          <input type="text" placeholder="搜索同事" v-model="newSearchContent" class="search-input"
            @keyup.enter="searchNameV3" @keyup="emptyChangeBox" />
          <div class="search-result-box">
            <el-tree :data='webAllpartList' v-show="groupboxSearch==0" :props="defaultProps1">
              <span class="custom-tree-node" slot-scope="{ node, data }" :style="{'padding':data.Type==2?'5px 0':''}">
                <span class="fz14" v-if="data.Type==1">{{ node.label }}</span>
                <span class="fz14" v-if="data.Type==2" @click="addFriend(0,data)">
                  <img v-if='!data.Icon' src="../assets/img/litheader.png"
                    style="width: 24px; height: 24px; border-radius: 12px; display: inline-block; vertical-align: middle;" />
                  <img v-if='data.Icon' :onerror="defaultImg" :src='data.Icon'
                    style="width: 24px; height: 24px; border-radius: 12px; display: inline-block; vertical-align: middle;" />
                  {{ node.label }}</span>
              </span>
            </el-tree>
            <div v-show="groupboxSearch==1" class="IM_messageList IM_searchListBox">
              <loading v-show="isLoading"></loading>
              <ul v-show="!isLoading">
                <li v-for="item in groupSearchBox" @click="addFriend(1,item)">
                  <img v-if="!item.icon" src="../assets/img/litheader.png" alt="" width="24">
                  <img v-else :src="item.icon" alt="" :onerror="defaultImg" width="24">
                  <div class="cont">
                    <p class="name">
                      {{item.name}}
                    </p>
                  </div>
                  <div class="tag-box">
                    <span class="tag-company">{{item.companyName}}</span>
                  </div>
                </li>
              </ul>
              <div class="search-none-data" v-show="!isLoading&&groupSearchBox.length==0">
                <i class="iconfont icon-zanwushuju"></i><br />
                抱歉，没有找到这位无名的大侠
              </div>
            </div>
          </div>
        </div>
        <div class="group-body-item">
          <div>已选择联系人：{{GroupMemberList.length}}/100</div>
          <div class="search-result-box">
            <div class="IM_messageList IM_searchListBox">
              <ul>
                <li v-for="item in GroupMemberList">
                  <img v-if="!item.Icon" src="../assets/img/litheader.png" alt="" width="24">
                  <img v-else :src="item.Icon" alt="" :onerror="defaultImg" width="24">
                  <div class="cont">
                    <p class="name">
                      {{item.Name}}
                    </p>
                  </div>
                  <i class="close iconfont icon-close" @click="deleteFriend(item.IMAccount)"
                    v-if="item.IMAccount!=userInfo.ImAccount"></i>
                </li>
              </ul>
            </div>
          </div>
        </div>
      </div>
      <div class="group-foot" v-if="addOrUpdate==1">
        <button class="hollowFixedBtn" @click="isAddGroup=false">取消</button>
        <button class="normalBtn" @click="addNewGroup">创建</button>
      </div>
    </el-dialog>
    <el-dialog :visible.sync="isUpdateGroup" class="addGroupByAlex" :modal="false">
      <div class="title">
        修改群组信息
        <i class="iconfont icon-jiesan" @click="dismissTeam" title="解散该群"></i>
      </div>
      <div class="cl-name">群组名称</div>
      <div class="new-group-name">
        <input type="text" placeholder="请输入群名称" v-model="currentSession.name" class="search-input" />
      </div>
      <div class="cl-name">群组成员</div>
      <div class="group-body" style="height:200px;position: relative;margin-bottom:15px;border-bottom: 1px solid #eee">
        <div class="team-member-box" v-if="currentSession.scene=='team'">
          <ul>
            <li v-for="item in oldGroupMemberList" v-if="delAccountList.indexOf(item.account)==-1">
              <img :src="item.avatar" style="border-radius:0px" />
              <span>
                {{item.alias}}
              </span>
              <i class="iconfont icon-close1" v-if="currentSession.teamInfo.owner!=item.account"
                @click="addDelAccount(item.account)"></i>
              <!--  -->
            </li>
          </ul>
        </div>
      </div>
      <div class="group-foot">
        <button class="hollowFixedBtn" @click="showUpdateTeam(0)">取消</button>
        <button class="normalBtn" @click="updateTeamName">保存</button>
      </div>
    </el-dialog>
    <el-dialog custom-class='w800 PingFangSC' :title="dialogTitleNot" :visible.sync="outerVisibleNot" center
      :before-close="closeChangeMachie2">
      <div>
        <p style="text-align: right; padding: 5px 0;font-size: 12px;">
          {{detailMessage.EmName}}&nbsp;&nbsp;&nbsp;&nbsp;{{detailMessage.UpdateTime}}</p>
        <div v-html="detailMessage.Content">

        </div>
        <!-- <pre style="letter-spacing: 1px; font-size: 14px; color: #333;line-height: 30px;">{{detailMessage.Content}}</pre> -->
        <p style="padding:0 10px; margin: 10px 0; background: #f1f1f1;">{{$t('adm.adm_fujian')}}：</p>
        <p style="height: 28px; padding: 0 10px; line-height: 28px;    color: blue;" v-for="item in downLoadList"
          class="AnnFileListPMeta">
          <i class="iconfont icon-xiazai"></i>--<span @click="downloadSingle(item)">{{item.Name}}</span>
        </p>
      </div>
    </el-dialog>
    <a class="weOytour" ref="weOytour" href="http://we.oytour.com:8110/" target="view_window">Preface</a>
    <el-dialog custom-class='w800 PingFangSC _saleRnk' title="销售排行" :visible.sync="saleRnkShow" center
      :before-close="closeChangeMachie">
      <saleRnk :detail='NewSaleRnkInfo' @closeChangeMachie="closeChangeMachie" />
    </el-dialog>
    <div v-show="mazip==0" id="downzip">
      <div>
        <div>
          <a href="http://im.oytour.com/麦子助手.exe">
            <img @click="CloseZip" src="../assets/img/mzzip.png" alt="">
          </a>
          <img @click="CloseZip" class="close" src="../assets/img/close.png" alt="">
        </div>

      </div>
    </div>
    <a id='groupTourOrderByTuan_DownLoad' target="_blank" style="display:none"></a>
  </div>
</template>

<script>
  import util from "../utils";
  import config from "../configs";
  import pageUtil from "../utils/page";
  import ChatList from "./Chat/chatList";
  import ChatEditor from "./Chat/ChatEditor";
  //import md5 from 'js-md5'
  import emojiObj from "../configs/emoji";
  // import Vue from 'vue'
  import loading from "./commonPage/loading";
  import VueDraggableResizable from "vue-draggable-resizable";
  import {
    setInterval,
    clearInterval
  } from 'timers';
  import saleRnk from "./SalesModule/saleRnk";
  export default {
    components: {
      ChatList,
      ChatEditor,
      loading,
      VueDraggableResizable,
      saleRnk
    },
    data() {
      return {
        tableHeight: 0,
        saleRnkShow: false,
        dialogTitleNot: '',
        outerVisibleNot: false,
        mazip: localStorage.getItem("mazip") ? localStorage.getItem("mazip") : 0,
        language: 'zh-CN',
        douTimer: null,
        defaultHeadImg: 'this.src="' + require("../assets/img/default_head_img.jpg") + '"',
        delAccountList: [],
        isUpdateGroup: false,
        groupName: "",
        isDownOpen: false,
        isAddGroup: false,
        SystemLog: false,
        openSessions: [],
        currentSession: {},
        boxInfo: {
          width: 600,
          height: 400,
          x: 560,
          y: 280
        },
        groupboxSearch: 0,
        groupSearchBox: [],
        addOrUpdate: 0,
        //IM
        contactsType: 0,
        imToolsType: 0,
        isLoading: false,
        newSearchContent: "",
        isUpdateTeamName: false,
        editorTeam: false,
        hasNewMsg: 0,
        sysMsgList: [],
        teamName: "",
        isDrag: false,
        delSessionId: null,
        stopBubble: false,
        noticeIcon: config.noticeIcon,
        myPhoneIcon: config.myPhoneIcon,
        myGroupIcon: config.defaultGroupIcon,
        myAdvancedIcon: config.defaultAdvancedIcon,
        IM_bodyIsShow: false,
        IM_Chatlayer: false,
        sessionName: "",
        IMList: [],
        GroupMemberList: [],
        oldGroupMemberList: [],
        groupName: "",
        IMIsTeam: false,
        newGroup: true,
        hasManagePermission: false,
        hasSearched: false,
        //
        placeholder: "请输入",
        reviewIndex: "-1",
        filterText: "",
        defaultProps: {
          children: "ChildList",
          label: "DepartmentName",
          disabled: "Disabled"
        },
        defaultProps1: {
          children: "ChildList",
          label: "Name",
          disabled: "Disabled",
        },
        isAppend: true,
        isAppendOne: true,
        isAppendTwo: true,
        IM_navType: 1,
        searchType: false,
        searchKey: "",
        companyCurrentIndex: "-1",
        departmentCurrentIndex: "-1",
        userId: "",
        initialIndex: 0,
        imgList: [],
        fileList: [],
        picObj: [],
        dspNone: true,
        workFlowId: "",
        templateType: "",
        agree: true,
        outerVisible: false,
        outerVisible1: false,
        dialogTitle: "",
        dialogTitle1: "",
        IsAudit: "",
        IsCancel: "",
        IsUpdate: "",
        defaultImg: 'this.src="' + require("../assets/img/litheader.png") + '"',
        showlayer: false,
        isTransition: false,
        displayNone: true,
        dialogTitle: "",
        outerVisible: false,
        logsShow: false,
        newVersion: '',
        versionList: [],
        msg: {
          ParentId: 0,
          MenuStatus: "",
          MenuName: ""
        },
        appMsg: {
          WorkFlowId: "",
          TemplateType: "",
          Description: "",
          Image: []
        },
        transferMsg: {
          WorkFlowId: "",
          TemplateType: "",
          Description: "",
          CareOfEmId: "-1"
        },
        dynamicMsg: {
          groupId: "",
          pageIndex: 1,
          pageSize: 10
        },
        myDynamicMsg: {
          pageIndex: 1,
          pageSize: 10
        },
        aboutMeDynamicMsg: {
          pageIndex: 1,
          pageSize: 10
        },
        addDynamicMsg: {
          content: "",
          fileList: [],
          latAndLong: "",
          address: "",
          rB_GroupId: "-1",
          rB_BranchId: "-1",
          coverPhoto: ""
        },
        reviewMsg: {
          articleId: "",
          commentId: "0",
          content: ""
        },
        likeMsg: {
          groupId: "-1",
          articleId: ""
        },
        disLikeMsg: {
          articleId: ""
        },
        deleteMsg: {
          groupId: "-1",
          articleId: ""
        },
        allPartMsg: {
          Status: 0,
          is_show: 0,
          RB_Group_Id: "-1"
        },
        reviewCont: "",
        dynamicCont: "",
        dynamicType: "1 ",
        boxshow: false,
        userInfo: {},
        menuList: [],
        chosenIndex: 1,
        fontPub: "iconfont",
        websock: null,
        msgList: [],
        newMsg: false,
        icon: 'this.src="' + require("../assets/img/NotificationIcon.png") + '"',
        MsgCount: "",
        //返回数据
        memberList: [],
        detailList: {},
        arr: [],
        dynamicList: [],
        myDynamicList: [],
        aboutMyDynamicList: [],
        allPartList: [],
        webAllpartList: [],
        allPartOldList: [],
        searchList: [],
        isFirstLoad: true,
        unReadMsgId: [],
        isFocus: true,
        NotDealCount: "",
        MyAuditCount: "",
        sysMsgPageIndex: 1,
        firstMenuList: [],
        allSsionList: [],
        allWindowWidth: '',
        SetTimeout: null,
        NoticeList: [],
        AllNoticeCount: 0,
        NoticeListMsg: {
          pageIndex: 1,
          pageSize: 10,
          noticeType: 0,
        },
        detailMessage: {},
        downLoadList: [],
        NewSaleRnkInfo: {},


        showPage: false,
        tableHeight: 0,
        Hotelmsg: {
          //酒店选择数组
          HotelChooseArray: [],
          StartDate: new Date().Format("yyyy-MM-dd"),
          EndDate: this.setEdate(),
          //只查询日本
          Country: "651",
          Province: 0,
          City: 0,
          OutBranchId: -1,
          //星级
          Star: 0,
          //价格等级
          PriceLevel: 0,
        },
        beforeCheck: {
          disabledDate: time => {
            if (this.Hotelmsg.StartDate) {
              let endTime = new Date(this.Hotelmsg.EndDate);
              return time && endTime.getTime() < time.getTime();
            } else {
              return false;
            }
          }
        },
        afterCheck: {
          disabledDate: time => {
            if (this.Hotelmsg.StartDate) {
              let startTime = new Date(this.Hotelmsg.StartDate);
              //可以选择当天
              return time && time.getTime() < startTime.getTime() - 1 * 24 * 60 * 60 * 1000;
            } else {
              return false;
            }
          }
        },
        //分公司列表
        companyList: [],
        defaultSelectValue: 0,
        //国家 省市 区
        provinceList: [],
        cityList: [],
        district: [],
        queryMsg: {
          QStartDate: '',
          QEndDate: '',
          pageIndex: 1,
          pageSize: 5,
          currentPage: 1,
          total: 0,
          OpType: 1,
        },
        postMsg: {
          Id: 0,
          TipContent: ''
        },
        //默认显示弹窗信息
        showHQinfo: true,
        //酒店温馨提示列表
        HotelTipList: [],
        HotelList: [],
        dataList: [],
        isShow: false,
        loading: false,
        showNotice: false,
        pickerBeginDateBefore: {
          disabledDate: time => {
            let endTime = new Date(this.queryMsg.QStartDate)
            return endTime.getTime() < time.getTime()
          }
        },
        pickerBeginDateAfter: {
          disabledDate: time => {
            let startTime = new Date(this.queryMsg.QEndDate)
            return startTime.getTime() >= time.getTime()
          }
        },
        editorOption: {
          placeholder: '请输入内容',
          modules: {
            toolbar: [
              ['bold', 'italic', 'underline', 'strike'], // toggled buttons
              ['blockquote', 'code-block', 'align']
            ]
          }
        }
      };
    },
    filters: {
      decodeURIComponent(val) {
        return decodeURIComponent(val);
      },
      diaplayTime(data) {
        var str = data;
        // 将字符串转换成时间格式
        var timePublish = new Date(str);
        var timeNow = new Date();
        var minute = 1000 * 60;
        var hour = minute * 60;
        var day = hour * 24;
        var month = day * 30;
        var diffValue = timeNow - timePublish;
        var diffMonth = diffValue / month;
        var diffWeek = diffValue / (7 * day);
        var diffDay = diffValue / day;
        var diffHour = diffValue / hour;
        var diffMinute = diffValue / minute;
        var result = "";
        if (diffValue < 0) {} else if (diffMonth > 3) {
          result = timePublish.getFullYear() + "-";
          result += timePublish.getMonth() + "-";
          result += timePublish.getDate();
        } else if (diffMonth > 1) {
          result = parseInt(diffMonth) + "月前";
        } else if (diffWeek > 1) {
          result = parseInt(diffWeek) + "周前";
        } else if (diffDay > 1) {
          result = parseInt(diffDay) + "天前";
        } else if (diffHour > 1) {
          result = parseInt(diffHour) + "小时前";
        } else if (diffMinute > 1) {
          result = parseInt(diffMinute) + "分钟前";
        } else {
          result = "刚刚";
        }
        return result;
      }
    },
    computed: {
      key() {
        return this.$route.path + Math.random();
      },
      sysMsgUnread() {
        let temp = this.$store.state.sysMsgUnread;
        let sysMsgUnread = temp.addFriend || 0;
        sysMsgUnread += temp.team || 0;
        let customSysMsgUnread = this.$store.state.customSysMsgUnread;
        return sysMsgUnread + customSysMsgUnread;
      },
      canLoadMore() {
        return !this.$store.state.noMoreHistoryMsgs;
      },
      userInfos() {
        return this.$store.state.userInfos;
      },
      myInfo() {
        return this.$store.state.myInfo;
      },
      myPhoneId() {
        return `${this.$store.state.userUID}`;
      },
      teamList() {
        this.$store.state.teamlist.filter(x => {
          x.avatar =
            "http://yx-web.nos.netease.com/webdoc/h5/im/default-group.png";
          x.id = "team-" + x.teamId;
          x.scene = "team";
          x.to = x.teamId;
          return x;
        });
        return this.$store.state.teamlist;
      },
      sessionlist() {
        let tempCount = 0;
        let sessionlist = this.$store.state.sessionlist.filter(item => {
          if (item.to === "684cb79fe92f46877777") return;
          if (item.unread > 0) {
            tempCount = tempCount + item.unread;
            this.openSessions.forEach(x => {
              if (x.id == item.id) x.unread = item.unread;
            });
          } else {
            this.openSessions.forEach(x => {
              if (x.id == item.id) x.unread = 0;
            });
          }
          let that = this;
          item.name = "";
          item.avatar = "";
          for (let i = 0; i < this.sysMsgList.length; i++) {
            let x = this.sysMsgList[i];
            if (x.IMID === item.to) {
              if (x.unread != item.unread) {
                tempCount = 1;
              }
              x.unread = item.unread;
              x.lastMsgShow = item.lastMsg.text;
              x.sessionid = item.id;
              x.updateTimeShow = item.updateTimeShow;
              return false;
            }
          }
          if (item.scene === "p2p") {
            let userInfo = null;
            if (item.to !== this.myPhoneId) {
              userInfo = this.userInfos[item.to];
            } else {
              return false;
            }
            if (userInfo) {
              item.name = util.getFriendAlias(userInfo);
              item.avatar = userInfo.avatar;
            }
          } else if (item.scene === "team") {
            let teamInfo = null;
            teamInfo = this.$store.state.teamlist.find(team => {
              return team.teamId === item.to;
            });
            if (teamInfo) {
              item.name = teamInfo.name;
              item.avatar =
                "http://yx-web.nos.netease.com/webdoc/h5/im/default-group.png";
            } else {
              item.name = "讨论组";
              item.avatar =
                "http://yx-web.nos.netease.com/webdoc/h5/im/default-group.png";
            }
            if (
              !this.$store.state.teamMembers[item.to] ||
              this.$store.state.teamMembers[item.to].length == 0
            ) {
              this.$store.dispatch("getTeamMembers", item.to);
            }
          }
          let lastMsg = item.lastMsg || {};
          if (lastMsg.type === "text") {
            item.lastMsgShow = lastMsg.text || "";
          } else if (lastMsg.type === "custom") {
            item.lastMsgShow = util.parseCustomMsg(lastMsg);
          } else if (
            lastMsg.scene === "team" &&
            lastMsg.type === "notification"
          ) {
            item.lastMsgShow = util.generateTeamSysmMsg(lastMsg);
          } else if (util.mapMsgType(lastMsg)) {
            item.lastMsgShow = `[${util.mapMsgType(lastMsg)}]`;
          } else {
            item.lastMsgShow = "";
          }
          if (item.updateTime) {
            item.updateTimeShow = util.formatDate(item.updateTime, true);
          }
          if (item.unread > 0) {
            if (this.unReadMsgId.indexOf(item.lastMsg.idServer) == -1) {
              if (!this.isFirst) {
                this.msgGet(item);
              }
              this.unReadMsgId.push(item.lastMsg.idServer);
            }
            if (item.lastMsg.tip && item.lastMsg.tip.indexOf('抖了一下') != -1) {
              this.dou()
              this.enterChat(item)
            }
          }
          return item;
        });
        this.hasNewMsg = tempCount;
        this.isFirstLoad = false;
        return sessionlist;
      },
      sessionId() {
        let sessionId = this.$route.params.sessionId;
        return sessionId;
      },
      getsessionName() {
        let sessionId = this.sessionId;
        let user = null;
        if (/^p2p-/.test(sessionId)) {
          user = sessionId.replace(/^p2p-/, "");
          if (user === this.$store.state.userUID) {
            return "我的手机";
          } else if (this.isRobot) {
            return this.robotInfos[user].nick;
          } else {
            let userInfo = this.userInfos[user] || {};
            return util.getFriendAlias(userInfo);
          }
        } else if (/^team-/.test(sessionId)) {
          return "群";
        }
      },
      scene() {
        return util.parseSession(this.sessionId).scene;
      },
      to() {
        return util.parseSession(this.sessionId).to;
      },
      // 判断是否是机器人
      isRobot() {
        let sessionId = this.sessionId;
        let user = null;
        if (/^p2p-/.test(sessionId)) {
          user = sessionId.replace(/^p2p-/, "");
          if (this.robotInfos[user]) {
            return true;
          }
        }
        return false;
      },
      robotInfos() {
        return this.$store.state.robotInfos;
      },
      msglist() {
        let msgs = this.$store.state.currSessionMsgs;
        return msgs;
      },
    },
    // mounted() {
    //   let that = this;
    //   this.MsgBus.$on('doudong', function () {
    //     that.dou()
    //   });
    //   this.MsgBus.$on('openChat', function (obj) {
    //     that.lt(obj)
    //   });
    //   const permissionNow = Notification.requestPermission();
    //   var hiddenProperty =
    //     "hidden" in document ?
    //     "hidden" :
    //     "webkitHidden" in document ?
    //     "webkitHidden" :
    //     "mozHidden" in document ?
    //     "mozHidden" :
    //     null;
    //   var visibilityChangeEvent = hiddenProperty.replace(
    //     /hidden/i,
    //     "visibilitychange"
    //   );
    //   var onVisibilityChange = function () {
    //     if (!document[hiddenProperty]) {
    //       that.isFocus = true;
    //     } else {
    //       that.isFocus = false;
    //     }
    //   };
    //   document.addEventListener(visibilityChangeEvent, onVisibilityChange);
    //   if (!localStorage.menu)
    //     this.$store.dispatch("connect");
    //   else {
    //     this.firstMenuList = JSON.parse(localStorage.menu)
    //     if (this.firstMenuList.indexOf('IM') != -1) {
    //       this.$store.dispatch("connect");
    //     }
    //   }

    //   this.getDynamic();
    //   this.getMyDynamic();
    //   this.getAboutMeDynamic();
    //   this.getWebAllPart();
    //   this.getNoticeList()
    //   document
    //     .getElementById("allDynamic")
    //     .addEventListener("scroll", function () {
    //       //全部动态
    //       if (this.scrollHeight - this.scrollTop === this.clientHeight) {
    //         that.isAppend = true;
    //         that.dynamicMsg.pageIndex =
    //           Math.ceil(that.dynamicList.length / 10) + 1;
    //         that.getDynamic();
    //       }
    //     });

    //   document.getElementById("myDynamic").addEventListener("scroll", function () {
    //     //我的动态
    //     if (this.scrollHeight - this.scrollTop === this.clientHeight) {
    //       that.isAppendOne = true;
    //       that.myDynamicMsg.pageIndex =
    //         Math.ceil(that.myDynamicList.length / 10) + 1;
    //       that.getMyDynamic();
    //     }
    //   });

    //   document
    //     .getElementById("aboutMeDynamic")
    //     .addEventListener("scroll", function () {
    //       //与我相关
    //       if (this.scrollHeight - this.scrollTop === this.clientHeight) {
    //         that.isAppendTwo = true;
    //         that.aboutMeDynamicMsg.pageIndex =
    //           Math.ceil(that.aboutMyDynamicList.length / 10) + 1;
    //         that.getAboutMeDynamic();
    //       }
    //     });
    //   if (
    //     window.localStorage.msgBoxInfo &&
    //     window.localStorage.msgBoxInfo != ""
    //   ) {
    //     this.boxInfo = JSON.parse(window.localStorage.msgBoxInfo);
    //   }
    //   if (this.boxInfo.x == 0) {
    //     this.boxInfo.x = 560;
    //   }
    //   if (this.boxInfo.y == 0) {
    //     this.boxInfo.y = 280;
    //   }
    //   document.title = this.userInfo.GroupName;
    //   this.getMenu();
    //   this.getBranchList();
    //   this.getProvinceList(651, 1);
    //   this.GetHotelList();
    //   this.getList2();
    //   this.GetHotelTipList();
    //   var url = window.location.href;
    //   if (String(url).indexOf('SupplierIndex') >= 0) {
    //     this.showPage = true;
    //   } else {
    //     this.showPage = false;
    //   };
    //   this.com_onresize();
    //   window.onresize = () => {
    //     this.com_onresize();
    //   }
    // },
    created() {
      //页面刚进入时开启长连接
      //  this.initWebSocket()
      this.userInfo = this.getLocalStorageSupplier();
      let language = localStorage.language
      if (!language) {
        this.language = 'zh-CN';
        this.$i18n.locale = 'zh-CN';
      } else {
        this.language = language
        this.$i18n.locale = language;
      }
      //IM_body
      let allWindowWidth = window.innerWidth;
      this.allWindowWidth = allWindowWidth - 50 - 220 - 60;
      let maxLength = parseInt(allWindowWidth / 100);
      this.maxLength = maxLength;
      // this.new();
    },
    watch: {
      filterText(val) {
        this.$refs.tree.filter(val);
      }
    },
    methods: {
      goUrl(url, id, index) {
        this.showPage = false;
        this.chosenIndex = id;
        if (localStorage.openMode && localStorage.openMode == 1)
          this.$router.push({
            path: url,
            query: {
              blank: 'y'
            }
          });
        else
          this.$router.push({
            path: url,
            query: {}
          });
      },
      getMenu() {
        this.menuList = this.userInfo.UserMenu;
      },
      exit() {
        this.$store.dispatch("logout")
        localStorage.removeItem("userInfo");
        localStorage.removeItem("previousPathInfo");
        this.$router.push({
          path: "/SupplierLogin"
        });
      },
      settingSys: function () {
        this.MsgBus.$emit('settingOpen')
      },
      GotoHotel(HotelId) {
        this.$router.push({
          path: "HotelManagement",
          query: {
            ID: HotelId,
            tab: "酒店查询",
            blank: 'y',
          }
        });
      },
      GotoUrl(item, subIndex, UseInventory) {
        if (UseInventory > 0) {
          this.$router.push({
            path: "TravelControlList",
            query: {
              HotelId: item.HotelId,
              HotelUseTime: item.subList[subIndex].DateStr,
              blank: 'y',
              tab: "团控查询",
            }
          });
        }
      },
      getList2() {
        this.loading = true;
        if (this.msg.StartDate == null) {
          this.msg.StartDate = new Date().Format("yyyy-MM-dd");
        }
        if (this.msg.EndDate == null) {
          this.msg.EndDate = this.setEdate();
        }
        this.ApiPost2("dict_post_HotelOffer_GetHotelStatics_Supplier", this.Hotelmsg,
          res => {
            this.loading = false;
            if (res.data.resultCode == 1) {
              this.dataList = res.data.data;
              this.isShow = true;
            } else {
              this.Error(res.data.message);
            }
          },
          err => {}
        );
      },
      //获取酒店列表
      GetHotelList() {
        this.ApiPost2(
          "hotel_post_GetHasStockHotelList_Supplier", {
            Country: 651,
            IsMoreThanZero: 1
          },
          res => {
            if (res.data.resultCode == 1) {
              this.HotelList = res.data.data;
            }
          },
          err => {}
        );
      },
      setEdate() {
        return this.addMoth(new Date().Format("yyyy-MM-dd"), 1)
      },
      addMoth(d, m) {
        let ds = d.split('-'),
          _d = ds[2] - 0;
        let nextM = new Date(ds[0], ds[1] - 1 + m + 1, 0);
        let max = nextM.getDate();
        d = new Date(ds[0], ds[1] - 1 + m, _d > max ? max : _d);
        return d.toLocaleDateString().match(/\d+/g).join('-')
      },
      //格式化返回显示日期
      getDateList(dateStr) {
        var str = dateStr.split('-');
        var weekDay = ["天", "一", "二", "三", "四", "五", "六"];
        var myDate = new Date(Date.parse(dateStr));

        return str[1] + '/' + str[2] + "（" + weekDay[myDate.getDay()] + "）";
      },
      //获取星期几
      getWeek(dateStr) {
        var weekDay = ["天", "一", "二", "三", "四", "五", "六"];
        var myDate = new Date(Date.parse(dateStr));
        return weekDay[myDate.getDay()]
      },
      //获取颜色状态
      getClass(Status, InventoryType) {
        var classStr = "";
        if (Status == 0) {
          classStr = 'noKucun';
        }
        switch (InventoryType) {
          case 1:
            classStr = "classHong";
            break;
          case 2:
            classStr = "classWang";
            break;
          case 3:
            classStr = "classPing";
            break;
          case 4:
            classStr = "classDan";
            break;
          case 5:
            classStr = "classTe";
            break;
        }
        return classStr;
      },
      handleCurrentChange(val) {
        this.queryMsg.pageIndex = val;
        this.GetHotelTipList();
      },
      resetPageIndex() {
        this.queryMsg.pageIndex = 1;
        this.queryMsg.currentPage = 1;
      },
      //获取酒店列表
      GetHotelTipList() {
        this.ApiPost2(
          "hoteltip_get_GetPageList", this.queryMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.HotelTipList = res.data.data.pageData;
              this.queryMsg.total = res.data.data.count;
            }
          },
          err => {}
        );
      },
      SaveHotelTip() {
        this.ApiPost2(
          "hoteltip_post_SetHotelTip", this.postMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.Success("保存成功!");
              this.postMsg.Id = 0;
              this.postMsg.TipContent = "";
              this.GetHotelTipList();
            } else {
              this.Error("保存失败!");
            }
          },
          err => {}
        );
      },
      RemoveHotelTip(Id) {
        var that = this;
        this.Confirm('是否要删除此数据?', function () {
          that.ApiPost2(
            "hoteltip_post_RemoveHotelTip", {
              ID: Id
            },
            res => {
              if (res.data.resultCode == 1) {
                that.Success("删除成功!");
                that.GetHotelTipList();
              } else {
                that.Error("删除失败!");
              }
            },
            err => {}
          );
        })
      },
      GetHotelTip(Id) {
        this.ApiPost2(
          "hoteltip_get_GetHotelTip", {
            ID: Id
          },
          res => {
            if (res.data.resultCode == 1) {
              this.postMsg.Id = res.data.data.Id;
              this.postMsg.TipContent = res.data.data.TipContent;
            } else {
              this.Error("获取数据失败!");
            }
          },
          err => {}
        );
      },
      getProvinceList(ID, type) {
        //根据省份获取城市
        let msg = {
          Id: ID
        };
        if (type == 1) {
          this.msg.Province = 0;
          this.msg.City = 0;
          this.provinceList = [];
          this.cityList = [];
        } else if (type == 2) {
          this.msg.City = 0;
          this.cityList = [];
        }
        this.ApiPost2(
          "dict_post_Destination_GetChildList",
          msg,
          res => {
            if (type == 1) {
              this.provinceList = res.data.data;
            } else if (type == 2) {
              this.cityList = res.data.data;
            }
          },
          err => {}
        );
      },
      getBranchList() {
        this.ApiPost2('admin_get_BranchGetList', {
          RB_Group_Id: '2',
          Status: 0,
        }, res => {
          if (res.data.resultCode == 1) {
            this.companyList = res.data.data;
          }
        }, err => {})
      },
      //Excel下载
      DownLoadHotelQuery() {
        this.loading = true;
        let qMsg = {
          queryMsg: this.msg,
          uid: this.getLocalStorageSupplier().SupplierAccountId
        };
        let fileName = "酒店查询统计" + this.$commonUtils.getCurrentDate() + ".xls";
        this.GetLocalFile("hotel_get_downloadHotelQuery_Supplier", qMsg, fileName,
          res => {
            this.loading = false;
          });
      },
      com_onresize() {
        //clientHeight的值由DIV内容的实际高度和CSS中的padding值决定，
        var contentsHeight = document.body.clientHeight;
        var h = contentsHeight - 50 - 80;
        if (h < 110) {
          return;
        }
        //设置table的行高
        this.tableHeight = h;
      },

      getNewSaleRnkInfo: function () {
        let msg = {
          StartDate: ''
        }
        this.ApiPost2(
          "orderank_post_GetDetails",
          msg,
          res => {
            if (res.data.resultCode == 1) {
              this.NewSaleRnkInfo = res.data.data
              let New = this.NewSaleRnkInfo.StartDateMonth + this.NewSaleRnkInfo.StartDateDay
              let arr = localStorage.saleRnkInfo ? JSON.parse(localStorage.saleRnkInfo) : []
              let rep = false
              for (let i = 0; i < arr.length; i++) {
                if (arr[i] === New) {
                  rep = true
                  return
                }
              }
              if (!rep) {
                this.saleRnkShow = true
                arr.push(this.NewSaleRnkInfo.StartDateMonth + this.NewSaleRnkInfo.StartDateDay)
              }
              localStorage.saleRnkInfo = JSON.stringify(arr)
            }
          },
          err => {}
        );
      },
      downloadSingle(obj) {
        let dom = document.querySelector("#groupTourOrderByTuan_DownLoad");
        dom.href = obj.Url;
        dom.click();
      },
      closeChangeMachie2(done) {
        this.outerVisibleNot = false
      },
      closeChangeMachie(done) { //弹出框关闭初始化弹框内表单
        this.saleRnkShow = false
      },
      GetUserIsRead() {
        this.ApiPost2('app_user_notice_GetUserIsRead', {}, res => {
          if (res.data.resultCode == 1) {
            if (res.data.data.IsRead === 0) {
              this.dialogTitleNot = res.data.data.title;
              this.getNotDetail(res.data.data.noticeId)
            }
          } else {
            this.$message.error(res.data.message)
          }
        }, err => {})
      },
      getNotDetail: function (id) {
        this.ApiPost2('User_get_NoticeGet', {
          noticeId: id
        }, res => {
          if (res.data.resultCode == 1) {
            this.detailMessage = res.data.data
            this.downLoadList = res.data.data.File_url ? JSON.parse(res.data.data.File_url) : []
            this.downLoadList.forEach(item => {
              item.Url = this.domainManager().ViittoFileUrl + item.Url
            })
            this.outerVisibleNot = true;
          } else {
            this.$message.error(res.data.message)
          }
        }, err => {})
      },
      // 阅读公告
      redNotice: function (id, tit) {
        this.dialogTitleNot = tit;
        this.ApiPost2('app_user_notice_detial', {
          noticeId: id
        }, res => {
          if (res.data.resultCode == 1) {
            this.getNotDetail(id)
            this.getNoticeList()
          } else {
            this.$message.error(res.data.message)
          }
        })
      },
      // 获取公告列表
      getNoticeList: function (t) {
        if (t) {
          this.NoticeListMsg.pageIndex += 1
        }
        this.ApiPost2("app_user_notice_list", this.NoticeListMsg, res => {
          if (res.data.resultCode == 1) {
            this.NoticeList = res.data.data.pageData;
            this.AllNoticeCount = res.data.data.pageCount;
          }
        }, err => {});
      },
      CloseZip() {
        this.mazip = 1;
        localStorage.setItem("mazip", 1);
      },
      ChangeLan(str) {
        this.language = str;
        this.$i18n.locale = str;
        localStorage.language = str;
      },
      settingSys: function () {
        this.MsgBus.$emit('settingOpen')
      },
      hideIM() {
        if (this.IM_bodyIsShow) {
          this.IM_bodyIsShow = false
        }
      },
      dou() {
        if (!this.douTimer) {
          let x = this.boxInfo.x;
          let y = this.boxInfo.y;
          let t = 0;
          let c = 0;
          this.douTimer = setInterval(() => {
            if (t == 0)
              this.$refs.resizeBox._data.top = y + 2
            if (t == 2)
              this.$refs.resizeBox._data.top = y - 2
            if (t == 1)
              this.$refs.resizeBox._data.left = x - 2
            if (t == 3) {
              this.$refs.resizeBox._data.left = x + 2
              t = 0
            } else {
              t++
            }
            c++
            if (c == 40) {
              this.$refs.resizeBox._data.top = y
              this.$refs.resizeBox._data.left = x
              clearInterval(this.douTimer)
              this.douTimer = null
            }

          }, 25)
        }
      },
      LogSetReadStatus(s) {
        this.ApiPost2(
          "SystemLog_post_LogSetReadStatus", {
            LogId: s.ID
          },
          r => {
            if (s.Link) {
              this.goUrl(s.Link);
            }
            this.IM_bodyIsShow = false;
            this.refreshSysNoteDate();
          },
          null
        );
      },
      refreshSysNoteDate(add) {
        this.sysMsgList = [];
        if (add) {
          this.sysMsgPageIndex = this.sysMsgPageIndex + 1;
        }
        // todo 实现加载系统通知
        //获取消息列表
        let msg = {
          pageIndex: this.sysMsgPageIndex,
          pageSize: "5",
          RB_BranchId: parseInt(this.$cookie.get("RB_Branch_id")),
          IsRead: 0,
          IsSys: 1,
          Recipient: parseInt(this.$cookie.get("EmployeeId")),
          RecPlatform: 2,
          Title: "",
          Type: "0",
          ShowShortcut: "1"
        };
        this.SystemLog = true;
        this.ApiPost2(
          "SystemLog_get_LogGetPageList",
          msg,
          res => {
            if (res.data.resultCode == 1) {
              this.MsgCount = res.data.data.count;
              if (res.data.data.count > 0) {
                let data = res.data.data.pageData;
                data.forEach(x => {
                  x.CreateTime = this.$commonUtils.formatMsgTime(
                    x.CreateTime.replace("T", " ")
                  );
                  if (add) {
                    this.msgList.push(x);
                  }
                });
                if (!add) {
                  this.msgList = data;
                }
                let sysMsg = {
                  name: "通知消息",
                  updateTimeShow: "",
                  unread: 0,
                  lastMsgShow: "条未读消息",
                  IMID: "684cb79fe92f46888888",
                  type: "system",
                  dataAPI: "/components/administrative/forMyApproval",
                  sessionid: ""
                };
                this.sysMsgList.push(sysMsg);
              }
            }
            this.SystemLog = false;
          },
          err => {}
        );
      },
      diaplayTime(data) {
        var str = data;
        // 将字符串转换成时间格式
        var timePublish = new Date(str);
        var timeNow = new Date();
        var minute = 1000 * 60;
        var hour = minute * 60;
        var day = hour * 24;
        var month = day * 30;
        var diffValue = timeNow - timePublish;
        var diffMonth = diffValue / month;
        var diffWeek = diffValue / (7 * day);
        var diffDay = diffValue / day;
        var diffHour = diffValue / hour;
        var diffMinute = diffValue / minute;
        var result = "";
        if (diffValue < 0) {} else if (diffMonth > 3) {
          result = timePublish.getFullYear() + "-";
          result += timePublish.getMonth() + "-";
          result += timePublish.getDate();
        } else if (diffMonth > 1) {
          result = parseInt(diffMonth) + "月前";
        } else if (diffWeek > 1) {
          result = parseInt(diffWeek) + "周前";
        } else if (diffDay > 1) {
          result = parseInt(diffDay) + "天前";
        } else if (diffHour > 1) {
          result = parseInt(diffHour) + "小时前";
        } else if (diffMinute > 1) {
          result = parseInt(diffMinute) + "分钟前";
        } else {
          result = "刚刚";
        }
        return result;
      },
      Financial_post_GetNotDealCount() {
        this.ApiPost2(
          "Financial_post_GetNotDealCount", {},
          r => {
            if (r.data.resultCode == 1) {
              this.NotDealCount = r.data.data;
            }
          },
          null
        );
      },
      app_user_workflow_MyAuditCount() {
        this.ApiPost2(
          "app_user_workflow_MyAuditCount", {},
          r => {
            if (r.data.resultCode == 1) {
              this.MyAuditCount = r.data.data;
            }
          },
          null
        );
      },
      zhishiquan() {
        this.$refs.weOytour.click();
      },
      addDelAccount(account) {
        this.delAccountList.push(account);
      },
      showUpdateTeam(type) {
        this.delAccountList = [];
        this.isUpdateGroup = type == 1;
      },
      addNewGroup() {
        if (this.groupName == "") {
          this.$message.error("请输入群名称");
          return;
        }
        if (this.GroupMemberList.length > 1) {
          let accouts = [];
          this.GroupMemberList.forEach(x => {
            accouts.push(x.IMAccount);
          });
          this.$store.dispatch("delegateTeamFunction", {
            functionName: "createTeam",
            options: {
              type: "normal",
              name: this.groupName,
              avatar: "",
              accounts: accouts,
              done: (error, obj) => {
                this.isAddGroup = false;
                this.groupName = "";
                this.s;
                if (error) {
                  this.$message.error("创建群失败");
                }
                if (!error) {
                  this.$store.state.teamlist.push(obj.team);
                  this.newSearchContent = "";
                  this.$store.dispatch("createTeam", obj);
                  if (!this.$store.state.teamMembers[obj.team.teamId]) {
                    this.$store.state.teamMembers[obj.team.teamId] = [];
                  }
                  this.GroupMemberList.forEach(x => {
                    let memberOjb = {};
                    memberOjb.account = x.IMAccount;
                    memberOjb.active = true;
                    memberOjb.alias = x.Name;
                    memberOjb.avatar = x.Icon;
                    memberOjb.id = obj.team.teamId + "-" + x.IMAccount;
                    memberOjb.joinTime = 0;
                    memberOjb.mute = false;
                    memberOjb.nickInTeam = "";
                    memberOjb.teamId = obj.team.teamId;
                    memberOjb.type = "normal";
                    memberOjb.updateTime = 0;
                    memberOjb.valid = true;
                    this.$store.state.teamMembers[obj.team.teamId].push(
                      memberOjb
                    );
                  });
                  obj.team.id = "team-" + obj.team.teamId;
                  this.enterTeamChat(obj.team);
                }
              }
            }
          });
        } else {
          this.$message.error("请选择群员");
        }
      },
      createGroup() {
        this.isAddGroup = true;
        this.addOrUpdate = 1;
        this.GroupMemberList = [];
        let obj = {};
        obj.Icon = this.userInfo.UserPhoto;
        obj.IMAccount = this.userInfo.ImAccount;
        obj.Name = this.userInfo.emName;
        this.GroupMemberList.push(obj);
      },
      changeContactGroup(type) {
        this.contactsType = type;
      },
      emptyChangeBox() {
        if (this.newSearchContent == "") this.groupboxSearch = 0;
      },
      addNewMember() {
        this.isAddGroup = true;
        this.addOrUpdate = 0;
        this.GroupMemberList = [];
        this.oldGroupMemberList.forEach(x => {
          //Icon:obj.Icon,IMAccount:obj.IMAccount,Name:obj.Name
          let obj = {};
          obj.Icon = x.avatar;
          obj.IMAccount = x.account;
          obj.Name = x.alias;
          this.GroupMemberList.push(obj);
        });
      },
      changeTheDown() {
        this.isDownOpen = !this.isDownOpen;
      },
      deleteOpenSession(index) {
        if (this.openSessions[index].id == this.currentSession.id) {
          this.openSessions.splice(index, 1);
          this.currentSession = this.openSessions[0];
          this.enterChat(this.openSessions[0]);
        } else {
          this.openSessions.splice(index, 1);
        }
      },
      closeOpenSession() {
        this.$store.dispatch("resetCurrSession");
        this.IM_Chatlayer = false;
        this.openSessions.splice(0, this.openSessions.length);
      },
      onResizstop(x, y, w, h) {
        this.boxInfo.x = x;
        this.boxInfo.y = y;
        this.boxInfo.width = w;
        this.boxInfo.height = h;
        window.localStorage.msgBoxInfo = JSON.stringify(this.boxInfo);
      },
      onDragstop(x, y) {
        this.boxInfo.x = x;
        this.boxInfo.y = y;
        window.localStorage.msgBoxInfo = JSON.stringify(this.boxInfo);
      },
      changeTools(index) {
        if (index == 0)
          this.newSearchContent = '';
        this.imToolsType = index;
        this.searchList = [];
      },
      updateTeamName() {
        if (this.currentSession.name == "") {
          this.$message.error("请输入群名称");
          return;
        }
        this.$store.dispatch("delegateTeamFunction", {
          functionName: "updateTeam",
          options: {
            teamId: this.currentSession.teamInfo.teamId,
            name: this.currentSession.name,
            done: (error, team) => {
              this.isUpdateGroup = false;
              if (error) {
                this.$message.error("失败！");
              } else {
                this.$store.state.teamlist.forEach(x => {
                  if (x.teamId == this.currentSession.teamInfo.teamId) {
                    x.name = this.currentSession.name;
                  }
                });

                this.delAccountList.forEach(x => {
                  this.deleteFriend(x);
                });
              }
            }
          }
        });
      },
      dismissTeam() {
        let teamId = this.currentSession.id.split("-")[1];
        this.$store.dispatch("delegateTeamFunction", {
          functionName: "dismissTeam",
          options: {
            teamId: teamId,
            done: (error, team) => {
              this.openSessions.forEach((x, index) => {
                if (x.id == "team-" + teamId) {
                  this.deleteOpenSession(index);
                }
              });
              let i = 0;
              this.$store.state.teamlist.forEach((x, index) => {
                if (x.teamId == teamId) {
                  i = index;
                }
              });
              this.$store.state.teamlist.splice(i, 1);
            }
          }
        });
      },
      dragDiv() {
        if (this.isDrag == true) {
          document.onmousemove = function (e) {
            if (document.getElementById("IM_chatLayer").offsetWidth >= 600) {
              document.getElementById("IM_chatLayer").style.width =
                document.body.clientWidth - 360 - e.pageX + "px";
            } else {
              document.getElementById("IM_chatLayer").style.width = "600px";
            }
          };
        }
      },
      searchUsers(Accounts) {
        this.$store.dispatch("searchUsers", {
          accounts: Accounts,
          done: users => {
            this.updateTeamMember(users);
            users.forEach(x => {
              this.$store.state.userInfos[x.account] = x;
            });
          }
        });
      },
      updateTeamMember(users) {
        users.forEach(user => {
          var member = this.oldGroupMemberList.find(member => {
            return member.account === user.account;
          });
          if (member) {
            member.avatar = user.avatar;
            member.alias = member.nickInTeam || user.nick;
          }
        });
      },
      leaveTeam() {
        let that = this;
        this.editorTeam = false;
        this.$confirm("是否退群?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
          .then(() => {
            that.$store.dispatch("delegateTeamFunction", {
              functionName: "leaveTeam",
              options: {
                teamId: window.localStorage.sessionId.substring(
                  5,
                  window.localStorage.sessionId.length
                ),
                done: (error, obj) => {
                  if (!error) {
                    this.$message.success("你已经成功退群！");
                    this.IM_Chatlayer = false;
                    this.IM_navType = 2;
                    this.$store.dispatch(
                      "deleteSession",
                      window.localStorage.sessionId
                    );
                  } else {
                    this.$message.error("退群失败！");
                  }
                }
              }
            });
          })
          .catch(() => {
            this.$message.info("已取消！");
          });
      },
      deleteFriend(account) {
        this.GroupMemberList.forEach((item, index) => {
          if (item.IMAccount == account) {
            this.GroupMemberList.splice(index, 1);
          }
        });
        let isOld = false;
        this.oldGroupMemberList.forEach((item, index) => {
          if (item.account == account) {
            isOld = true;
          }
        });
        this.$store.dispatch("delegateTeamFunction", {
          functionName: "removeTeamMembers",
          options: {
            teamId: this.currentSession.teamInfo.teamId,
            accounts: [account],
            done: (error, obj) => {
              if (error) {
                this.$message.error("你没有该操作权限！");
              } else {
                this.oldGroupMemberList.forEach((item, index) => {
                  if (item.account == account) {
                    this.oldGroupMemberList.splice(index, 1);
                  }
                });

                this.$store.state.teamMembers[
                  this.currentSession.teamInfo.teamId
                ] = this.oldGroupMemberList;
                //this.$message.success('移除成功!')
                this.$store.dispatch(
                  "removeTeamMembers",
                  obj.teamId,
                  obj.account
                );
              }
            }
          }
        });
      },

      deleteOldFriend(obj) {},
      addFriend(type, obj) {
        if (obj.imAccount) {
          obj.IMAccount = obj.imAccount;
        }
        if (obj.IMAccount != null) {
          let _index = -1;
          this.GroupMemberList.forEach((item, index) => {
            if (obj.IMAccount == item.IMAccount) {
              _index = index;
            }
          });

          if (_index == -1) {
            //添加
            if (this.addOrUpdate == 0) {
              let imList = [];
              imList.push(obj.IMAccount);
              this.$store.dispatch("delegateTeamFunction", {
                functionName: "addTeamMembers",
                options: {
                  teamId: this.currentSession.teamInfo.teamId,
                  accounts: imList,
                  done: (error, obj2) => {
                    if (!error) {
                      // this.$message.success('成功！')
                      // this.clearBuildGroup()
                      // this.IM_navType=1
                      let demoObj = {
                        Icon: obj.icon,
                        IMAccount: obj.imAccount,
                        Name: obj.name
                      };
                      this.GroupMemberList.push(demoObj);
                      let memberOjb = {};
                      memberOjb.account = obj.imAccount;
                      memberOjb.active = true;
                      memberOjb.alias = obj.name;
                      memberOjb.avatar = obj.icon;
                      memberOjb.id =
                        this.currentSession.teamInfo.teamId + "-" + obj.imAccount;
                      memberOjb.joinTime = 0;
                      memberOjb.mute = false;
                      memberOjb.nickInTeam = "";
                      memberOjb.teamId = this.currentSession.teamInfo.teamId;
                      memberOjb.type = "normal";
                      memberOjb.updateTime = 0;
                      memberOjb.valid = true;
                      this.$store.state.teamMembers[memberOjb.teamId].push(
                        memberOjb
                      );
                      this.updateFriend();
                    }
                  }
                }
              });
            } else {
              let demoObj = {
                Icon: obj.icon,
                IMAccount: obj.imAccount,
                Name: obj.name
              };
              this.GroupMemberList.push(demoObj);
            }
          }
        } else {
          this.$message.warning("该员工暂时不可进群，请联系管理员！");
          if (this.IMList.findIndex(item => item === null) != -1) {
            this.IMList.splice(this.IMList.findIndex(item => item === null), 1);
          }
        }
      },
      addSearchFriend(obj) {
        if (obj.imAccount != null) {
          let _index = -1;
          this.IMList.forEach((item, index) => {
            if (obj.imAccount == item) {
              _index = index;
            }
          });
          if (_index == -1) {
            //添加
            this.GroupMemberList.push({
              Icon: obj.icon,
              IMAccount: obj.imAccount,
              Name: obj.name
            });
          } else {
            this.GroupMemberList.splice(_index, 1);
          }
        } else {
          this.$message.warning("该员工暂时不可进群，请联系管理员！");
          if (this.IMList.findIndex(item => item === null) != -1) {
            this.IMList.splice(this.IMList.findIndex(item => item === null), 1);
          }
        }
      },
      updateFriend() {
        this.newGroup = false;
        this.editorTeam = false;
        this.IMList = [];
        let userInfos = this.$store.state.userInfos;
        let teamId = window.localStorage.sessionId.substring(
          5,
          window.localStorage.sessionId.length
        );
        let members = this.$store.state.teamMembers[teamId];
        let needSearchAccounts = [];
        this.oldGroupMemberList = [];
        if (members === undefined) {
          this.$store.dispatch("getTeamMembers", teamId);
          members = this.$store.state.teamMembers[teamId];
        }
        if (members) {
          members = members.map(item => {
            this.IMList.push(item.account);
            let member = Object.assign({}, item); //重新创建一个对象，用于存储展示数据，避免对vuex数据源的修改
            //member.valid = true //被管理员移除后，标记为false
            if (
              userInfos[member.account] === undefined ||
              userInfos[member.account].avatar === undefined
            ) {
              needSearchAccounts.push(member.account);
              member.avatar = member.avatar || this.avatar;
              member.alias = member.nickInTeam || member.account;
            } else {
              member.avatar = userInfos[member.account].avatar;
              member.alias = member.nickInTeam || userInfos[member.account].nick;
            }
            return member;
          });
          if (needSearchAccounts.length > 0) {
            this.searchUsers(needSearchAccounts.splice(0, 150));
          }
          this.oldGroupMemberList = members;
        }
      },
      saveGroup() {
        if (this.newGroup) {
          if (this.IMList.length < 1) {
            //
            this.$message.warning("建群至少要有一个成员！");
            return;
          }
          this.$store.dispatch("delegateTeamFunction", {
            functionName: "createTeam",
            options: {
              type: "normal",
              name: "讨论组",
              avatar: "",
              accounts: this.IMList,
              done: (error, obj) => {
                if (error) {
                  this.$message.error("创建群失败");
                }
                if (!error) {
                  this.$message.success("成功！");
                  this.$store.state.teamlist.push(obj.team);
                  this.searchUsers(obj.accounts);

                  this.clearBuildGroup();
                  this.IM_navType = 2;
                  this.$store.dispatch("createTeam", obj);
                }
              }
            }
          });
        } else {
          this.$store.dispatch("delegateTeamFunction", {
            functionName: "addTeamMembers",
            options: {
              teamId: window.localStorage.sessionId.substring(
                5,
                window.localStorage.sessionId.length
              ),
              accounts: this.IMList,
              done: (error, obj) => {
                if (error) {
                  this.$message.error("修改成员失败！");
                  return;
                }
                if (!error) {
                  this.$store.dispatch(
                    "addTeamMembers",
                    window.localStorage.sessionId.substring(
                      5,
                      window.localStorage.sessionId.length
                    ),
                    this.IMList
                  );
                  this.$message.success("成功！");
                  this.clearBuildGroup();
                  this.IM_navType = 2;
                }
              }
            }
          });
        }
      },

      buildGroup() {
        this.IM_Chatlayer = false;
        this.IM_navType = 4;
        this.newGroup = true;
        this.searchKey = "";
        this.searchType = false;
        this.clearBuildGroup();
      },
      clearBuildGroup() {
        this.GroupMemberList = [];
        this.oldGroupMemberList = [];
        this.IMList = [];
      },
      enterSystemChat(session) {
        this.IM_navType = 5;
        this.IM_Chatlayer = false;
        let id = "p2p-" + session.IMID;
        session.unread = 0;
        this.$store.dispatch("setCurrSession", id);
        window.localStorage.sessionId = id;
        this.teamName = session.name;
      },
      enterChat(session) {
        this.MsgBus.$emit('imgprevclear')
        this.isDownOpen = false;
        this.clearBuildGroup();
        this.isUpdateTeamName = false;
        this.editorTeam = false;
        this.$store.dispatch("setCurrSession", session.id);
        window.localStorage.sessionId = session.id;
        this.IM_Chatlayer = true;
        this.teamName = session.name;
        if (session.scene == "team") {
          this.IMIsTeam = true;
          this.$store.dispatch(
            "getTeamMembers",
            session.id.substring(5, window.localStorage.sessionId.length)
          );
          let teamInfo = null;
          teamInfo = this.$store.state.teamlist.find(team => {
            return (
              team.teamId ===
              session.id.substring(5, window.localStorage.sessionId.length)
            );
          });
          this.teamName = teamInfo.name;
          this.$store.state.teamlist.forEach(x => {
            if (x.teamId == session.to) {
              session.teamInfo = x;
            }
          });
          this.updateFriend();
        } else {
          this.IMIsTeam = false;
        }
        let isExsit = false;
        this.openSessions.forEach(x => {
          if (x.id == session.id) {
            isExsit = true;
            x.isCurrent = true;
          } else {
            x.isCurrent = false;
          }
        });
        if (!isExsit) {
          session.isCurrent = true;
          this.openSessions.push(session);
        }
        this.currentSession = session;
        if (!session.name || session.name == '') {
          setTimeout(() => {
            this.sessionlist.forEach(x => {
              if (session.id == x.id)
                this.currentSession = x;
            })
          }, 1000);
        }
        pageUtil.scrollChatListDown();
      },
      deleteSession(session) {
        if (session.id !== null) {
          this.$store.dispatch("deleteSession", session.id);
        }
      },
      lt(obj) {
        this.MsgBus.$emit('imgprevclear')
        if (obj.account && obj.account != "") {

          obj.imAccount = obj.account;
          obj.name = obj.alias;
          obj.avatar = obj.avatar;
        } else if (obj.IMAccount && obj.IMAccount != "") {
          obj.imAccount = obj.IMAccount;
          obj.name = obj.Name;
          obj.avatar = obj.Icon;
        }
        if (!obj.avatar && obj.icon) {
          obj.avatar = obj.icon
        }
        if (obj.imAccount != null) { // 判断是否有im账号
          let session = null;
          this.$store.state.sessionlist.forEach(x => { // 判断是否已在会话列表存在的会话
            if (x.id == "p2p-" + obj.imAccount) {
              session = x; // 存在
            }
          });
          if (!session) { // 不存在 组装数据
            session = {};
            session.id = "p2p-" + obj.imAccount;
            session.name = obj.name;
            session.avatar = obj.avatar;
          }
          this.isDownOpen = false;
          this.clearBuildGroup();
          this.isUpdateTeamName = false;
          this.editorTeam = false;
          this.$store.dispatch("setCurrSession", session.id);
          window.localStorage.sessionId = session.id;
          this.IM_Chatlayer = true;
          this.IMIsTeam = false;
          let isExsit = false;
          this.openSessions.forEach(x => {
            if (x.id == session.id) {
              isExsit = true;
              x.isCurrent = true;
            } else {
              x.isCurrent = false;
            }
          });
          if (!isExsit) {
            session.isCurrent = true;
            this.openSessions.push(session);
          }
          this.currentSession = session;
          pageUtil.scrollChatListDown();
        } else {
          this.$message.warning("该员工暂时不可聊天，请联系管理员");
        }
      },
      dbChat(obj) {
        if (obj.IMAccount != null) {
          this.teamName = obj.Name;
          this.IM_Chatlayer = true;
          pageUtil.scrollChatListDown();
        } else {
          this.$message.warning("该员工暂时不可聊天，请联系管理员");
        }
      },
      enterTeamChat(teamInfo) {
        this.MsgBus.$emit('imgprevclear')
        let session = {};
        session.id = teamInfo.id;
        session.to = teamInfo.teamId;
        session.name = teamInfo.name;
        session.teamInfo = teamInfo;
        session.scene = "team";
        session.avatar =
          "http://yx-web.nos.netease.com/webdoc/h5/im/default-group.png";
        this.isDownOpen = false;
        this.clearBuildGroup();
        this.isUpdateTeamName = false;
        this.editorTeam = false;
        this.$store.dispatch("setCurrSession", session.id);
        window.localStorage.sessionId = session.id;
        this.IM_Chatlayer = true;
        pageUtil.scrollChatListDown();
        this.teamName = session.name;

        this.$store.dispatch("getTeamMembers", session.to);
        this.$store.state.teamlist.forEach(x => {
          if (x.teamId == session.to) {
            session.teamInfo = x;
          }
        });
        this.updateFriend();
        let isExsit = false;
        this.openSessions.forEach(x => {
          if (x.id == session.id) {
            isExsit = true;
            x.isCurrent = true;
          } else {
            x.isCurrent = false;
          }
        });
        if (!isExsit) {
          session.isCurrent = true;
          this.openSessions.push(session);
        }
        this.currentSession = session;
      },
      isSearchType() {
        if (this.searchKey == "") {
          this.searchType = false;
        }
      },
      searchName() {
        if (this.searchKey != "") {
          this.searchType = true;
          this.ApiPost2(
            "admin_Get_Chat_All_SelectEmpName", {
              EmName: this.searchKey
            },
            res => {
              if (res.data.resultCode == 1) {
                this.searchList = res.data.data;
              }
            },
            err => {}
          );
        }
      },
      searchNameV2() {
        if (this.newSearchContent != "") {
          this.imToolsType = -1;
          this.searchType = true;
          this.searchList = [];
          this.isLoading = true;
          this.ApiPost2(
            "admin_Get_Chat_All_SelectEmpName", {
              EmName: this.newSearchContent
            },
            res => {
              if (res.data.resultCode == 1) {
                if (res.data.data.length > 1) {
                  this.searchList = [];
                }
                this.searchList = res.data.data;
                this.searchList.forEach(x => {
                  x.lastMsg = "没有他和你的聊天信息哦";
                  if (!x.imAccount || x.imAccount == "")
                    x.lastMsg = "该同事还没有开通聊天功能呢";
                  else {
                    this.sessionlist.forEach(y => {
                      if (y.id.indexOf(x.imAccount) != -1) {
                        x.lastMsg = y.lastMsgShow;
                        return false;
                      }
                    });
                  }
                });
                this.searchList.forEach((x, index) => {
                  this.$set(this.searchList, index, x);
                });
              }
              this.isLoading = false;
            },
            err => {}
          );
        }
      },
      searchNameV3() {
        if (this.newSearchContent != "") {
          this.groupboxSearch = 1;
          this.groupSearchBox = [];
          this.isLoading = true;
          this.ApiPost2(
            "admin_Get_Chat_All_SelectEmpName", {
              EmName: this.newSearchContent
            },
            res => {
              if (res.data.resultCode == 1) {
                if (res.data.data.length > 1) {
                  this.groupSearchBox = [];
                }
                this.groupSearchBox = res.data.data;
                this.groupSearchBox.forEach(x => {
                  x.lastMsg = "";
                  if (x.imAccount && x.imAccount != "") {
                    this.sessionlist.forEach(y => {
                      if (y.id.indexOf(x.imAccount) != -1) {
                        x.lastMsg = y.lastMsgShow;
                        return false;
                      }
                    });
                  }
                });
                this.groupSearchBox.forEach((x, index) => {
                  this.$set(this.groupSearchBox, index, x);
                });
              }
              this.isLoading = false;
            },
            err => {}
          );
        }
      },
      getAllpart() {
        this.ApiPost2(
          "admin_chat_get_all_brunch_info",
          this.allPartMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.allPartList = res.data.data;
              this.allPartOldList = JSON.parse(JSON.stringify(res.data.data));
            }
          },
          err => {}
        );
      },

      getWebAllPart() {
        let msg = {
          RB_Department_Id: 240
        }
        this.ApiPost2(
          "admin_Get_GetCompanyDepartMentEmployeeForChar_V2", msg,
          res => {
            if (res.data.resultCode == 1) {
              this.webAllpartList = res.data.data;
            } else {}
          },
          err => {}
        );
      },

      deleteComments(id, index, aId) {
        //从全部动态删除评论
        this.isAppend = false;
        this.isAppendOne = false;
        this.dynamicMsg.pageIndex = Math.ceil((index + 1) / 10);
        this.ApiPost2(
          "user_dynamic_delete_comment", {
            commentId: id
          },
          res => {
            if (res.data.resultCode == 1) {
              this.getDynamic(index);
              this.myDynamicList.forEach((item, index) => {
                if (item.id == aId) {
                  this.getMyDynamic(index);
                }
              });
            } else {
              this.$message.error(res.data.message);
            }
          },
          err => {}
        );
      },
      deleteCommentsOne(id, index, aId) {
        //从我发布的删除评论
        this.isAppend = false;
        this.isAppendOne = false;
        this.myDynamicMsg.pageIndex = Math.ceil((index + 1) / 10);
        this.ApiPost2(
          "user_dynamic_delete_comment", {
            commentId: id
          },
          res => {
            if (res.data.resultCode == 1) {
              this.getMyDynamic(index);
              this.dynamicList.forEach((item, index) => {
                if (item.id == aId) {
                  this.getDynamic(index);
                }
              });
            } else {
              this.$message.error(res.data.message);
            }
          },
          err => {}
        );
      },
      deleteArticle(id) {
        //删除动态
        this.deleteMsg.articleId = id;
        this.$confirm("是否删除?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
          .then(() => {
            this.ApiPost2(
              "delete_dynamic",
              this.deleteMsg,
              res => {
                if (res.data.resultCode == 1) {
                  this.$message.success(res.data.message);
                  this.myDynamicList.forEach((item, index) => {
                    if (item.id == id) {
                      this.myDynamicList.splice(index, 1);
                    }
                  });
                } else {
                  this.$message.error(res.data.message);
                }
              },
              err => {}
            );
          })
          .catch(() => {
            this.$message.info("已取消删除！");
          });
      },
      likeArticle(id, index) {
        //从全部动态点赞
        this.isAppend = false;
        this.isAppendOne = false;
        this.dynamicMsg.pageIndex = Math.ceil((index + 1) / 10);
        //this.myDynamicMsg.pageIndex=Math.ceil((index+1)/10)
        this.likeMsg.articleId = id;
        this.ApiPost2(
          "user_dynamic_like",
          this.likeMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.getDynamic(index);
              this.myDynamicList.forEach((item, index) => {
                if (item.id == id) {
                  this.getMyDynamic(index);
                }
              });
            } else {
              this.$message.error(res.data.message);
            }
          },
          err => {}
        );
      },
      likeArticleOne(id, index) {
        //从我发布的点赞
        this.isAppend = false;
        this.isAppendOne = false;
        this.myDynamicMsg.pageIndex = Math.ceil((index + 1) / 10);
        this.likeMsg.articleId = id;
        this.ApiPost2(
          "user_dynamic_like",
          this.likeMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.getMyDynamic(index);
              this.dynamicList.forEach((item, index) => {
                if (item.id == id) {
                  this.getDynamic(index);
                }
              });
            } else {
              this.$message.error(res.data.message);
            }
          },
          err => {}
        );
      },

      disLikeArticle(id, index) {
        //从全部取消点赞
        this.isAppend = false;
        this.isAppendOne = false;
        this.dynamicMsg.pageIndex = Math.ceil((index + 1) / 10);
        this.disLikeMsg.articleId = id;
        this.ApiPost2(
          "user_dynamic_cancel_like",
          this.disLikeMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.getDynamic(index);
              this.myDynamicList.forEach((item, index) => {
                if (item.id == id) {
                  this.getMyDynamic(index);
                }
              });
            } else {
              this.$message.error(res.data.message);
            }
          },
          err => {}
        );
      },

      disLikeArticleOne(id, index) {
        //从我发布的取消点赞
        this.isAppend = false;
        this.isAppendOne = false;
        this.dynamicMsg.pageIndex = Math.ceil((index + 1) / 10);
        this.disLikeMsg.articleId = id;
        this.ApiPost2(
          "user_dynamic_cancel_like",
          this.disLikeMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.getMyDynamic(index);
              this.dynamicList.forEach((item, index) => {
                if (item.id == id) {
                  this.getDynamic(index);
                }
              });
            } else {
              this.$message.error(res.data.message);
            }
          },
          err => {}
        );
      },

      SaveDynamic() {
        //发布动态
        this.addDynamicMsg.content = encodeURIComponent(this.dynamicCont);
        this.ApiPost2(
          "user_publish_dynamic",
          this.addDynamicMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.dynamicType = 1;
              this.getDynamic();
              this.getMyDynamic();
              this.$message.success(res.data.message);
            }
          },
          err => {}
        );
      },

      reviewArticle(id, index) {
        //从全部动态回复
        this.isAppend = false;
        this.isAppendOne = false;
        this.dynamicMsg.pageIndex = Math.ceil((index + 1) / 10);
        //this.myDynamicMsg.pageIndex=Math.ceil((index+1)/10)
        this.reviewMsg.articleId = id;
        this.reviewMsg.content = encodeURIComponent(this.reviewCont); //编码
        this.ApiPost2(
          "user_dynamic_comment",
          this.reviewMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.$message.success(res.data.message);
              this.reviewCont = "";
              this.getDynamic(index);
              this.myDynamicList.forEach((item, index) => {
                if (item.id == id) {
                  this.getMyDynamic(index);
                }
              });
            }
          },
          err => {}
        );
      },

      reviewArticleOne(id, index) {
        //从我发布的回复
        this.isAppend = false;
        this.isAppendOne = false;
        //this.dynamicMsg.pageIndex=Math.ceil((index+1)/10)
        this.myDynamicMsg.pageIndex = Math.ceil((index + 1) / 10);
        this.reviewMsg.articleId = id;
        this.reviewMsg.content = encodeURIComponent(this.reviewCont); //编码
        this.ApiPost2(
          "user_dynamic_comment",
          this.reviewMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.$message.success(res.data.message);
              this.reviewCont = "";
              this.getMyDynamic(index);
              this.dynamicList.forEach((item, index) => {
                if (item.id == id) {
                  this.getDynamic(index);
                }
              });
            }
          },
          err => {}
        );
      },

      reviewArticleTwo(id, index) {
        //从与我相关回复
        this.isAppend = false;
        this.isAppendOne = false;
        this.reviewMsg.articleId = id;
        this.reviewMsg.content = encodeURIComponent(this.reviewCont); //编码
        this.ApiPost2(
          "user_dynamic_comment",
          this.reviewMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.$message.success(res.data.message);
              this.reviewCont = "";
              this.dynamicList.forEach((item, index) => {
                if (item.id == id) {
                  this.getDynamic(index);
                }
              });
              this.myDynamicList.forEach((item, index) => {
                if (item.id == id) {
                  this.getMyDynamic(index);
                }
              });
            }
          },
          err => {}
        );
      },

      getDynamic(index) {
        //获取全部动态
        this.ApiPost2(
          "dynamic_list",
          this.dynamicMsg,
          res => {
            if (res.data.resultCode == 1) {
              res.data.data.pageData.forEach((item, index) => {
                let i = index + (this.dynamicMsg.pageIndex - 1) * 10;
                if (item.commentList.length > 0) {
                  item.commentList.forEach(x => {
                    x["outIndex"] = i;
                  });
                }
              });
              if (this.isAppend) {
                //追加
                this.dynamicList = this.dynamicList.concat(
                  res.data.data.pageData
                );
              } else {
                //替换
                let replaceItem = res.data.data.pageData[index % 10];
                this.dynamicList.splice(index, 1, replaceItem);
              }
            }
          },
          err => {}
        );
      },

      getMyDynamic(index) {
        //获取我的动态
        this.ApiPost2(
          "user_web_my_dynamic_list",
          this.myDynamicMsg,
          res => {
            if (res.data.resultCode == 1) {
              res.data.data.pageData.forEach((item, index) => {
                let i = index + (this.myDynamicMsg.pageIndex - 1) * 10;
                if (item.commentList.length > 0) {
                  item.commentList.forEach(x => {
                    x["outIndex"] = i;
                  });
                }
              });
              if (this.isAppendOne) {
                this.myDynamicList = this.myDynamicList.concat(
                  res.data.data.pageData
                );
              } else {
                let replaceItem = res.data.data.pageData[index % 10];
                this.myDynamicList.splice(index, 1, replaceItem);
              }
            }
          },
          err => {}
        );
      },
      getAboutMeDynamic() {
        this.ApiPost2(
          "user_about_me_dynamic_list",
          this.aboutMeDynamicMsg,
          res => {
            if (res.data.resultCode == 1) {
              if (this.isAppendTwo) {
                this.aboutMyDynamicList = this.aboutMyDynamicList.concat(
                  res.data.data.pageData
                );
              } else {}
            }
          },
          err => {}
        );
      },
      uploadImg(file) {
        //上传
        let newArr = [];
        newArr.push(file.file);
        let path = "/Upload/Temporary/";
        this.UploadSelfFileT(path, newArr, x => {
          let url = this.domainManager().ViittoFileUrl + x.data.FilePath
          this.addDynamicMsg.fileList.push(url);
          this.imgList.push({
            url: url
          });
        });
      },
      handleRemoveImg(file) {
        //删除
        this.imgList.forEach((item, index) => {
          if (item.url == file.url) {
            this.imgList.splice(index, 1);
          }
        });
        this.addDynamicMsg.fileList.forEach((item, index) => {
          if (item == file.url) {
            this.addDynamicMsg.fileList.splice(index, 1);
          }
        });
      },
      uploadTest(file) {
        //上传
        let newArr = [];
        newArr.push(file.file);
        let path = "/Upload/Temporary/";
        this.UploadSelfFileT(path, newArr, x => {
          let src = this.domainManager().ViittoFileUrl + x.data.FilePath
          this.appMsg.Image.push(src);
          this.fileList.push({
            url: src
          });
        });
      },
      handleRemove(file) {
        //删除
        this.fileList.forEach((item, index) => {
          if (item.url == file.url) {
            this.fileList.splice(index, 1);
          }
        });
        this.appMsg.Image.forEach((item, index) => {
          if (item == file.url) {
            this.appMsg.Image.splice(index, 1);
          }
        });
      },
      handleExceed(files, fileList) {
        this.$message.warning("最多只能上传9张图片！");
      },
      clearDialogMsg(done) {
        done();
        this.appMsg.Description = "";
        //	this.appMsg.Image=[]
      },
      btnClearDialogMsg() {
        this.outerVisible = false;
        this.appMsg.Description = "";
      },
      btnClearTransferDialog(done) {
        this.outerVisible1 = false;
        this.filterText = "";
        this.transferMsg.WorkFlowId = "";
        this.transferMsg.TemplateType = "";
        this.transferMsg.Description = "";
        this.transferMsg.CareOfEmId = "-1";
        this.$refs.tree.setCheckedKeys([]);
      },
      closePicLayer() {
        this.dspNone = true;
      },
      getPic(obj, index) {
        this.initialIndex = index;
        this.picObj = obj;
        this.dspNone = false;
      },
      filterNode(value, data) {
        if (!value) return true;
        return data.DepartmentName.indexOf(value) !== -1;
      },
      openDialog(IsAgree, workFlowId, templateType) {
        this.agree = IsAgree;
        this.dialogTitle = "审批流程";
        this.outerVisible = true;
        this.workFlowId = workFlowId;
        this.templateType = templateType;
      },
      agreeApproval() {
        this.appMsg.WorkFlowId = this.workFlowId;
        this.appMsg.TemplateType = this.templateType;
        this.ApiPost2(
          "WorkFlow_post_SetConsent",
          this.appMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.$message.success(res.data.message);
              this.outerVisible = false;
            } else {
              this.$message.error(res.data.message);
            }
          },
          err => {}
        );
      },
      rejectApproval() {
        this.appMsg.WorkFlowId = this.workFlowId;
        this.appMsg.TemplateType = this.templateType;
        this.ApiPost2(
          "WorkFlow_post_SetNotConsent",
          this.appMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.$message.success(res.data.message);
              this.outerVisible = false;
            } else {
              this.$message.error(res.data.message);
            }
          },
          err => {}
        );
      },
      withdrawAapproval(workFlowId, templateType) {
        this.$confirm("是否撤回?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
          .then(() => {
            this.ApiPost2(
              "app_user_workflow_wndoaudit", {
                workFlowId: workFlowId,
                templateType: templateType
              },
              res => {
                if (res.data.resultCode == 1) {
                  this.$message.success("撤回成功。");
                  this.getList();
                }
              },
              err => {}
            );
          })
          .catch(() => {
            this.$message.info("已取消撤回。");
          });
      },
      updateAapproval(path, cmd, submitCmd, workFlowId, templateId) {
        this.$router.push({
          name: path,
          query: {
            cmd: cmd,
            submitCmd: submitCmd,
            workFlowId: workFlowId,
            templateId: templateId
          }
        });
      },
      transferDialog(workFlowId, templateType) {
        this.dialogTitle1 = "转交流程";
        this.outerVisible1 = true;
        this.workFlowId = workFlowId;
        this.templateType = templateType;
        this.ApiPost2(
          "WorkFlow_get_GetDepartMentEmployee", {},
          res => {
            if (res.data.resultCode == 1) {
              this.memberList = res.data.data;
            }
          },
          err => {}
        );
      },
      clearTransferDialog() {
        this.filterText = "";
        this.transferMsg.WorkFlowId = "";
        this.transferMsg.TemplateType = "";
        this.transferMsg.Description = "";
        this.transferMsg.CareOfEmId = "-1";
        this.$refs.tree.setCheckedKeys([]);
      },
      handleNodeChange(data, checked, node) {
        if (checked) {
          if (data.DepartmentId != 0) {
            this.arr.push(data.DepartmentId);
            this.$refs.tree.setCheckedKeys([data.DepartmentId]);
            this.transferMsg.CareOfEmId = data.DepartmentId;
          }
        } else {
          if (this.arr.length == 1) {
            this.arr = [];
            this.transferMsg.CareOfEmId = "-1";
          } else {
            this.arr = this.arr.slice(this.arr.length - 1);
            this.transferMsg.CareOfEmId = this.arr[this.arr.length - 1];
          }
        }
      },

      transferApproval() {
        this.transferMsg.WorkFlowId = this.workFlowId;
        this.transferMsg.TemplateType = this.templateType;
        if (this.transferMsg.CareOfEmId == "-1") {
          this.$message.warning("请选择转交人！");
          return;
        }
        this.ApiPost2(
          "WorkFlow_post_SetCareOf",
          this.transferMsg,
          res => {
            if (res.data.resultCode == 1) {
              this.$message.success(res.data.message);
              this.outerVisible1 = false;
              this.getList();
            } else {
              this.$message.error(res.data.message);
            }
          },
          err => {}
        );
      },
      getDetail(title, id, link) {
        this.boxshow = false;
        this.showLayer();
        let WorkFlowId = JSON.parse(link).workFlowId;
        let TemplateType = JSON.parse(link).templateType;
        this.ApiPost2(
          "app_user_workflow_GetAuditInfo", {
            SysLogId: id,
            WorkFlowId: WorkFlowId,
            TemplateType: TemplateType
          },
          res => {
            if (res.data.resultCode == 1) {
              this.detailList = res.data.data;
              this.IsAudit = res.data.data.IsAudit;
              this.IsCancel = res.data.data.IsCancel;
              this.IsUpdate = res.data.data.IsUpdate;
            }
          }
        );
      },
      showLayer() {
        this.showlayer = true;
        this.isTransition = true;
        this.displayNone = false;
      },
      closeLayer() {
        let _this = this;
        setTimeout(function () {
          _this.showlayer = false;
        }, 300);
        this.isTransition = false;
        this.displayNone = true;
      },
      goUrlT(url, index, name) {
        let query = {
          Conditon: index
        }
        if (localStorage.openMode && localStorage.openMode == 1) {
          query.tab = name
          query.blank = 'y'
        }
        // if (index!=-1) {
        this.$router.push({
          path: url,
          query
        });
        // } else {
        //   this.$router.push({ path: url });
        // }
      },
      goUrlPayment() {
        let eid = this.getLocalStorage().EmployeeId;
        this.$router.push({
          path: 'empBankAccount',
          query: {
            id: eid,
            type: 10,
            blank: 'y'
          }
        });
      },

      exit() {
        this.$store.dispatch("logout")
        localStorage.removeItem("userInfo");
        localStorage.removeItem("previousPathInfo");
        this.$router.push({
          path: "/SupplierLogin"
        });
      },
      togglebox(e) {
        if (
          e.target.className == "box" ||
          e.target.className == "iconfont icon-imessage_top" ||
          e.target.className == "iconfont icon-imessage_top animation"
        ) {
          this.newMsg = false;
          this.boxshow = !this.boxshow;
        }
      },
      setMsgRead(id) {
        this.ApiPost2(
          "SystemLog_post_LogSetReadStatus", {
            LogId: id
          },
          res => {},
          err => {}
        );
      },
      readyState() {
        var _this = this;
      },
      sleep(numberMillis) {
        var now = new Date();
        var exitTime = now.getTime() + numberMillis;
        while (true) {
          now = new Date();
          if (now.getTime() > exitTime) return;
        }
      },
      msgGet(msg) {
        if (this.isFocus) return;
        var _this = this;
        const NotificationInstance = Notification || window.Notification;

        if (!!NotificationInstance) {
          const permissionNow = NotificationInstance.permission;
          if (permissionNow === "granted") {
            //允许通知
            CreatNotification();
          } else if (permissionNow === "denied") {

          } else {
            setPermission();
          }

          function setPermission() {
            //请求获取通知权限
            NotificationInstance.requestPermission(function (PERMISSION) {
              if (PERMISSION === "granted") {
                CreatNotification();
              }
            });
          }

          function CreatNotification() {
            const n = new NotificationInstance(msg.name, {
              body: msg.lastMsgShow,
              tag: "聊天",
              icon: msg.avatar,
              silent: true,
              data: {
                session: msg
              }
            });
            n.onshow = function () {};
            n.onclick = function (e) {
              //可以直接通过实例的方式获取data内自定义的数据
              //也可以通过访问回调参数e来获取data的数据
              _that.enterChat(e.data.session);
              _that.imToolsType = 0;
              _that.IM_navType = 2;
              _that.IM_bodyIsShow = true;
              n.close();
            };
            n.onclose = function () {};
            n.onerror = function (err) {
              throw err;
            };
            setTimeout(() => {
              n.close();
            }, 5000);
          }
        }
      },
      deletMsg(type) {
        let LogStr = [],
          ContentType = [];
        this.msgList.forEach(x => {
          LogStr.push(x.ID)
          ContentType.push(x.ContentType)
        })
        this.ApiPost2('SystemLog_post_SetReadStatusBatch', {
          LogStr: LogStr,
          ContentType: ContentType
        }, r => {
          if (r.data.resultCode == 1) {
            this.msgList = [];
            this.MsgCount = this.msgList.length;
          } else {
            this.$message.error(r.data.message);
          }
        }, null)
      }
    },

  };

</script>
<style lang="less">
  @import "../assets/css/main.less";
  @import "../assets/css/cssReset.css";
  @import "../assets/css/message.css";

  .downmz .khd a {
    color: #fff;
  }

  .downmz .khd {
    display: inline-block;
    width: 162px;
    height: 32px;
    line-height: 32px;
    text-align: center;
    background: rgba(0, 0, 0, 0.5);
    font-family: "PingFangR";
    font-weight: 400;
    color: rgb(66, 25, 25);
    box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.21);
    border-radius: 4px;
    cursor: pointer;
  }

  .downmz .im_bottom {
    width: 100%;
    height: 114px;
    background: url('../assets/img/im/bottom.png') no-repeat;
    position: absolute;
    bottom: 0;
    left: 0;
  }

  .downmz .downlist>div {
    position: relative;
    text-align: center;
  }

  .downmz .downlist>div>p {
    position: absolute;
    bottom: 7px;
    color: #333333;
    font-size: 14px;
    width: 100%;
    font-weight: 400;

  }

  .downmz .downlist {
    width: 165px;
    height: 210px;
    margin: 25px auto;
    background: #fff;
  }

  .downmz .top_1 {
    width: 100%;
    height: 59px;
    background: url('../assets/img/im/yun.png') no-repeat;
    background-size: 100% 100%;
  }

  .downmz {
    position: fixed;
    top: 50px;
    right: 0px;
    width: 192px;
    background: #FFD607;
    height: calc(100% - 50px);
    z-index: 5000;
    min-height: 727px;

  }

  #downzip {
    width: 100%;
    height: 100%;
    position: fixed;
    background: rgba(0, 0, 0, 0.3);
    top: 0;
    left: 0;
    z-index: 2000;
    display: table;
  }

  #downzip>div {
    display: table-cell;
    vertical-align: middle;
    margin-top: 200px;
  }

  #downzip>div>div {
    width: 285px;
    height: 260px;
    margin: 0 auto;
    position: relative;
    cursor: pointer;

  }

  .close {
    position: absolute;
    top: 0;
    right: 0px;
    width: 25px;
    height: 25px;
  }

  .changelanguage {
    width: 124px;
  }

  .changelanguage .el-dropdown-menu__item .icon-duigou {
    color: #000000;
    position: absolute;
    right: 10px;
    font-size: 12px;
  }

  .changelanguage .el-dropdown-menu__item {
    padding: 0;
    padding-left: 15px;
    font-size: 14px;
    position: relative;
    color: #333333;
  }

  .changelanguage .el-dropdown-menu__item:hover {
    background: #D9D9D9;
    color: #333333;
  }

  ._dropdown.el-dropdown-menu {
    padding: 0;
    background-color: #FFF !important;
    border-radius: 4px;
    overflow: hidden;
    width: 210px;
    top: 40px !important;
    box-shadow: 0px 0px 50px 0px rgba(82, 63, 105, 0.15);
  }

  ._dropdown_f1.el-dropdown-menu__item {
    color: #ffffff !important;
    height: 120px;
    background: url("../assets/img/persion/bg-1.jpg");
    background-size: cover;
    background-repeat: no-repeat;
  }

  ._dropdown_f1 .h-info-box {
    display: flex;
  }

  ._dropdown_f1 .h-info-box .h-info {
    flex: 1;
  }

  ._dropdown_f1 .h-info-box .h-info .k {
    color: #8a8894;
    height: 16px;
    line-height: 16px;
    font-size: 14px;
    font-family: "pingfangR";
    text-align: right;
    display: block;
    margin-top: 10px;
  }

  ._dropdown_f1 .h-info-box .h-info .v {
    color: #ddd;
    // height: 20;
    line-height: 18px;
    font-size: 18px;
    font-family: "pingfangR";
    text-align: right;
    display: block;
    margin-top: 10px;
  }

  ._dropdown_f1 .h-info-box .h-img {
    width: 100px;
    height: 100px;
    position: relative;
    align-items: center;
    justify-content: center;
    margin-left: 20px;
    display: flex;
    margin-top: 10px;
    background: rgba(44, 39, 57, .3);
    border-radius: 100px;
  }

  ._dropdown_f1 .h-info-box .h-img img {
    width: 82px;
    height: 82px;
    border-radius: 82px;
  }

  ._dropdown_f1.el-dropdown-menu__item .company {
    font-size: 14px;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }

  ._dropdown_f1.el-dropdown-menu__item .company span:nth-child(2) {
    display: inline-block;
    padding: 3px 8px;
    background-color: #007eff;
    border-radius: 9px;
    line-height: 18px;
    font-size: 12px;
  }

  ._dropdown_f1.el-dropdown-menu__item:hover,
  ._dropdown_f1.el-dropdown-menu__item:focus {
    background-color: #4d515b !important;
    color: #ffffff !important;
  }

  ._dropdown_other {
    line-height: 42px !important;
  }

  ._dropdown_other.el-dropdown-menu__item {
    color: #6c7293;
    position: relative;
  }

  ._dropdown_other.el-dropdown-menu__item .el-badge {
    position: absolute;
    right: 35px;
    top: 5px;
  }

  ._dropdown_other.el-dropdown-menu__item .icon-right1 {
    position: absolute;
    right: 4px;
    top: 3px;
    font-size: 12px;
  }

  ._dropdown_other.el-dropdown-menu__item i {
    display: inline-block;
    margin-right: 6px;
  }

  ._dropdown_other.el-dropdown-menu__item:hover,
  ._dropdown_other.el-dropdown-menu__item:focus {
    transition: background-color 0.3s ease;
    background-color: #f7f8fa;
    color: #5d78ff;
  }

  ._dropdown .popper__arrow::after {
    border-bottom-color: transparent !important;
  }

  .IM_body {
    position: absolute;
    z-index: 9999;
    right: 0;
    top: 50px;
    bottom: 0;
    width: 362px;
    overflow-y: hidden;
    border: 1px solid #d9d9d9;
    border-color: rgba(0, 0, 0, 0.05);
    background-repeat: no-repeat;
    background-color: #f6f6f6;
    background-image: url("../assets/img/imbg/1.png");
    box-shadow: 1px 1px 50px rgba(0, 0, 0, 0.3);
    background-clip: content-box;
  }

  .myDocumentsLink {
    margin: 25px 0;
  }

  .myDocumentsLink>span {
    font-size: 12px;
    cursor: pointer;
    color: #e95252;
  }

  .myDocumentsLink>span:not(:last-of-type):hover {
    text-decoration: underline;
  }

  .myDocumentsLink>span:not(:last-of-type):after {
    content: ">";
    margin: 0 3px;
    color: #e95252;
    pointer-events: none;
  }

  .myDocumentsLink>span:last-child {
    color: #666;
    cursor: default;
  }

  .dsyNone {
    display: none;
  }

  .indexMsgLayer {
    position: fixed;
    z-index: 999;
    background: rgba(0, 0, 0, 0.2);
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
  }

  .indexMsgLayerContent {
    width: 400px;
    background: #fff;
    z-index: 1100;
    height: 100%;
    overflow: auto;
    top: 0;
    right: -400px;
    position: absolute;
    box-shadow: 4px 0px 10px rgba(0, 0, 0, 0.1);
    transition: right 0.5s;
  }

  .indexMsgLayerContent.rightZero {
    right: 0px;
  }

  .indexMsgLayerContent .title {
    height: 48px;
    background: #edeef0;
    line-height: 48px;
    font-size: 16px;
    color: #333;
    text-indent: 30px;
  }

  .indexMsgLayerContent .user {
    width: 340px;
    margin: 0 30px;
    border-bottom: 1px solid #e6e6e6;
    height: 60px;
    padding: 30px 0;
    box-sizing: content-box;
  }

  .indexMsgLayerContent .user>p {
    line-height: 28px;
  }

  .indexMsgLayerContent .user>img {
    width: 58px;
    height: 58px;
    border-radius: 29px;
    float: left;
    margin: 0 12px 0 0;
  }

  .indexMsgLayerContent .detail {
    width: 340px;
    margin: 0 30px;
    padding: 25px 0;
    border-bottom: 1px solid #e6e6e6;
    min-height: 120px;
  }

  .indexMsgLayerContent .audit {
    width: 340px;
    margin: 30px 30px 0;
    min-height: 120px;
    border-bottom: 1px solid #e6e6e6;
  }

  .indexMsgLayerContent .audit .auditItem {
    min-height: 80px;
    width: 320px;
    margin-left: 20px;
    border-left: 1px solid #ededed;
    position: relative;
    font-size: 14px;
  }

  .indexMsgLayerContent .audit .auditItem:last-child {
    border-left: none;
  }

  .indexMsgLayerContent .audit .auditItem>p {
    line-height: 40px;
    text-indent: 40px;
  }

  .indexMsgLayerContent .audit .auditItem>img {
    width: 40px;
    height: 40px;
    border-radius: 20px;
    position: absolute;
    left: -20px;
  }

  .indexMsgLayerContent .send {
    width: 340px;
    margin: 30px 30px 0;
    min-height: 120px;
  }

  .indexMsgLayerContent .send .sentTitle {
    height: 14px;
    line-height: 14px;
    text-indent: 10px;
    border-left: 3px solid #e95252;
    font-size: 14px;
  }

  .indexMsgLayerContent .send .sentTitle span {
    color: #666;
    margin-left: 20px;
  }

  .indexMsgLayerContent .send .sendList>div {
    float: left;
    margin: 10px 10px 0 0;
    font-size: 12px;
    color: #666;
    width: 40px;
    text-align: center;
  }

  .indexMsgLayerContent .send .sendList>div>img {
    width: 40px;
    height: 40px;
    border-radius: 20px;
  }

  .indexMsgLayerContent .myApprovalTable tr {
    height: 40px;
    font-size: 14px;
  }

  .indexMsgLayerContent .myApprovalTable tr td:nth-child(1) {
    text-align: right;
    color: #666;
  }

  .indexMsgLayerContentBtn {
    position: fixed;
    bottom: 0;
    background: #fff;
    width: 100%;
    height: 40px;
    line-height: 40px;
    padding: 0 30px;
    border-top: 1px solid #f0f3fa;
  }

  .indexMsgLayerContentBtn input {
    margin-right: 10px;
  }

  .nav-right ul li.user_head .el-dropdown-link {
    display: flex;
    align-items: center;
    cursor: pointer;
  }

  .nav-right ul li.user_head span.name {
    color: #99a7b3;
    font-size: 12px;
    display: inline-block;
    margin-left: 10px;
    overflow: hidden;
    width: 45px;
    height: 50px;
  }

  .nav-right ul li.user_head img {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    margin-top: 13px;
  }

  .nav {
    display: -webkit-box;
    .size(100%, 50px);
    .min-width(1366px);
    background: #1f1e2e;
  }

  .nav-left {
    width: 56px;
    line-height: 50px;
    color: #e73828;
    text-align: center;
  }

  .nav-left .GroupPic {
    width: 36px;
    height: 36px;
    -webkit-border-radius: 36px;
    margin: 7px 0px 0px 15px;

  }

  .nav-left i.iconfont {
    font-size: 24px;
  }

  .nav-left img {
    .fl();
    .size(50px; 50px);
    .circle(25px);
  }

  .nav-left p.name {
    .fz(14px, 18px);
    color: #444;
    margin: 20px 0 5px 0;
  }

  .nav-left p.company {
    .fz(12px);
    color: #444;
  }

  .nav-middle {
    /*width: calc(100% - 140px);*/
    display: flex;
  }

  .nav-middle ul {
    width: 100%;
    margin: 0 auto;
    height: 100%;
    z-index: 2019128;
  }

  .nav-middle ul li {
    .min-size(100px, 100%);
    .fz(14px);
    .center(text-x);
    .hover-bg(#f1f1f1);
    color: #a6adb4;
    position: relative;
    padding: 12px 10px;
    float: left;
    z-index: 2019128;
  }

  .nav-middle ul li i {
    font-size: 16px;
    color: #a6adb4;
  }

  .nav-middle ul li img {
    height: 40px;
    margin: 32px 0 14px;
  }

  .nav-middle ul li:hover .menuList_son {
    // display: block;
    width: 1000px;
    z-index: 999999;
    opacity: 1;
    // padding: 20px 0 20px 20px;
    height: auto;
    // transition: all .5s linear .5s;
    animation: ttt .5s forwards;
  }

  @keyframes ttt {
    0% {
      opacity: 0;
    }

    66% {
      opacity: 0;
    }

    100% {
      opacity: 1;
    }
  }

  .nav-middle ul li .menuList_son {
    position: fixed;
    z-index: 9000;
    background-color: #FFF;
    top: 50px;
    // display: none;
    opacity: 0;
    padding: 0;
    overflow: hidden;
    height: 0;
    box-shadow: 0px 0px 50px 0px rgba(82, 63, 105, 0.15);
  }

  .menuList_tittle_box {
    line-height: 30px;
    // padding-top: 15px;
  }

  .menuList_son_one_tittle {
    color: #5f6281;
    font-size: 16px;
    padding-bottom: 15px;
    /* border-bottom: 1px solid #495165; */
    text-align: left;
    padding: 9px 10px;
    font-family: "pingfangR";
  }

  .menuList_son_two_tittle {
    color: #a1aad0;
    text-align: left;
    font-family: pingfangR;
    padding: 0 9px;
  }

  .menuList_son_three_tittle {
    cursor: pointer;
    -webkit-transition: all linear 0.3s;
    transition: all linear 0.3s;
    text-align: left;
    padding: 0 9px;
    color: #494d5f;
    /* font-family: pingfangR; */
    font-size: 12px;
  }

  .menuList_son_three_tittle i {
    color: #494d5f;
    display: inline-block;
    margin-right: 10px;
    font-size: 13px;
  }

  .menuList_son_three_tittle:hover {
    color: #5867dd;
    background: #f8f8fb;
  }

  .menuList_son_three_tittle:hover i {
    color: #5867dd;
  }

  .menuList_son_item {
    width: 100%;
    display: flex;
    justify-content: flex-start;
  }

  .menuList_son_item div:last-child {
    border: none;
  }

  .hoverNote {
    width: 0;
    height: 4px;
    background: #e95252;
    position: absolute;
    left: 0;
    bottom: -2px;
  }

  .nav-middle ul li:hover {
    background-color: #232337;
  }

  .nav-middle ul li:hover .hoverNote {
    width: 100%;
    transition: width 0.5s;
  }

  .nav-middle ul li i {
    display: inline-block;
    margin-right: 8px;
  }

  .big_tittle {
    cursor: pointer;
    font-size: 15px;
    font-family: pingfangR;
  }

  .nav-middle ul li.active .big_tittle {
    color: #ffffff;
    // background: #2f384d;
    cursor: pointer;
  }

  .nav-middle ul li.active .hoverNote {
    width: 100%;
  }

  .nav-right {
    width: 220px;
    position: absolute;
    right: 0;
  }

  .nav-right ul {
    display: flex;
    line-height: 50px;
    justify-content: flex-end;
  }

  .nav-right ul li {
    height: 50px;
    margin-right: 20px;
    text-align: center;
    justify-content: flex-end;
  }

  .nav-right ul li i {
    cursor: pointer;
    .fz(18px);
    color: #e4e4e4;
  }

  .nav-right ul li i:hover {
    color: #999;
  }

  .hide {
    display: none;
  }

  #message_box {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 1889;
    font-family: "PingFangSC-fine" !important;
  }

  .box {
    height: 100%;
    background-color: rgba(255, 255, 255, 0);
    overflow: hidden;
    position: fixed;
    right: 0;
    top: 0;
    z-index: 180;
    width: 100%;
  }

  .mybox-leave-active {
    transition: all 1s ease;
  }

  .mybox-enter-active {
    transition: all 0.5s ease;
  }

  .mybox-leave-active,
  .mybox-enter {
    right: -100% !important;
  }

  .mybox-leave,
  .mybox-enter-active {
    right: 0;
  }

  .noNewMsg {
    font-size: 16px;
    color: #999;
    text-align: center;
  }

  @keyframes zy {
    10% {
      transform: rotate(15deg);
    }

    20% {
      transform: rotate(-10deg);
    }

    30% {
      transform: rotate(5deg);
    }

    40% {
      transform: rotate(-5deg);
    }

    50%,
    100% {
      transform: rotate(0deg);
    }
  }

  .animation::before {
    color: #e95252;
    float: left;
    width: 18px;
    height: 27px;
    animation: zy 2.5s 0.15s linear infinite;
    -moz-animation: zy 2.5s 0.15s linear infinite;
    /* Firefox */
    -webkit-animation: zy 2.5s 0.15s linear infinite;
    /* Safari and Chrome */
    -o-animation: zy 2.5s 0.15s linear infinite;
    /* Opera */
  }

  #message_box .content {
    width: 350px;
    height: 100%;
    background-image: url("../assets/img/message_bg@3x.png");
    background-size: cover;
    position: absolute;
    right: 0;
    top: 0;
    z-index: 200;
  }

  #message_box .header {
    padding: 18px 20px;
    height: 6%;
  }

  #message_box .header i {
    color: #e95252;
    font-size: 18px;
    cursor: pointer;
  }

  #message_box .header>div {
    width: 50%;
    float: left;
  }

  #message_box .header>div:nth-child(2) {
    text-align: right;
  }

  #message_box .header i.icon-img_caidan {
    font-size: 16px;
  }

  #message_box .header>div:nth-child(2) .icon-img_delete_small {
    display: inline-block;
    margin-right: 38px;
  }

  .msgItem_box {
    height: 94%;
    overflow: auto;
  }

  #message_box .msgItem {
    padding: 20px;
    transition: all linear 0.5s;
    cursor: pointer;
  }

  #message_box .msgItem:hover {
    background: rgba(0, 0, 0, 0.1);
  }

  #message_box .msgItem:hover .icon-ego-guanbi {
    display: inline-block;
  }

  .msgItem_left {
    width: 40px;
  }

  .msgItem_right {
    width: 250px;
  }

  .msgItem_right>div>div {
    float: left;
  }

  .msgItem_right>div>div:nth-child(2) {
    float: right;
  }

  .msgItem_tit {
    padding-left: 10px;
    font-size: 14px;
    color: #333333;
    max-width: 175px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .msgItem_left,
  .msgItem_right {
    height: 80px;
    float: left;
  }

  .msgItem_radius {
    height: 38px;
    width: 38px;
    line-height: 38px;
    text-align: center;
    border-radius: 50%;
    background-color: #6694dc;
    font-size: 12px;
    color: white;
  }

  .msgItem_time {
    font-size: 14px;
    color: #999999;
  }

  .icon-ego-guanbi {
    font-size: 12px;
    color: #999999;
    cursor: pointer;
    display: inline-block;
    padding-left: 20px;
    display: none;
  }

  .msgItem_conten {
    padding: 10px;
    font-size: 12px;
    color: #666666;
    padding-bottom: 0;
  }

  .icon-imessage_top {
    animation: mymove 5s infinite;
    -webkit-animation: mymove 5s infinite;
    /*Safari and Chrome*/
  }

  @keyframes mymove {
    from {
      left: 0px;
    }

    to {
      left: 200px;
    }
  }

  @-webkit-keyframes mymove

  /*Safari and Chrome*/
    {
    from {
      left: 0px;
    }

    to {
      left: 200px;
    }
  }

  .temDivs {
    /*flex:1;margin-top: 2px;*/
    position: absolute;
    top: 50px;
    bottom: 0px;
    left: 0px;
    right: 0px;
  }

  .red {
    color: #e95252 !important;
  }

  .weOytour {
    display: none;
  }

  .sysMsg_lod_more {
    text-align: center;
    font-size: 12px;
    color: #999999;
  }

  .IM_messageList2 {
    top: 41px;
  }

  .IM_messageList ul li.sysMsg_lod_more:hover {
    background-color: inherit;
    height: auto;
    line-height: 35px;
  }

  .IM_messageList ._SysNoteDate_ul li {
    height: auto;
  }

  ._more_dropdown._dropdown.el-dropdown-menu {
    top: 50px !important;
    border-radius: 0;
    border-color: #ddd;
  }

  .logsBack {
    position: fixed;
    z-index: 999;
    background: rgba(0, 0, 0, 0.2);
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
  }

  .updateLogs {
    position: absolute;
    width: 400px;
    // height:400px;
    left: 50%;
    top: 50%;
    margin-left: -200px;
    margin-top: -200px;
    border-radius: 4px;
    border: 1px solid #DCDCDC;
    z-index: 9999;
    background-color: #fff;
  }

  .logsTitle {
    width: 100%;
    padding: 0 10px;
    text-align: center;
    color: #333333;
    font-size: 14px;
    margin-top: 10px;
    font-weight: bold;
  }

  .inlogs_Content {
    width: 100%;
    padding: 0 15px;
    // height:260px;
    overflow: auto;
    margin-top: 20px;
    color: #666666;
    font-size: 12px;
  }

  .inlogs_Content p {
    margin-bottom: 10px;
  }

  .logsImg {
    margin-top: -30px;
    margin-left: 155px;
  }

  ._saleRnk.el-dialog--center {
    z-index: 2019523;
  }

  ._saleRnk.el-dialog--center .el-dialog__body {
    padding: 0;
    max-height: 800px;
  }

  ._saleRnk.el-dialog--center {
    margin-top: 45px !important;
    margin-bottom: 0 !important;
    height: 850px;
  }

  .MenuConfirm {
    display: inline-block;
    width: 15px;
    height: 15px;
    font-size: 12px;
    text-align: center;
    border-radius: 2px;
    background-color: #E95252;
    color: #fff;
    line-height: 15px;
  }

  .Supplier_nav_rightList {
    position: absolute;
    right: 0;
  }

  .Supplier_nav_rightList ul li {
    height: 50px;
    margin-right: 20px;
    text-align: center;
    -webkit-box-pack: end;
    -ms-flex-pack: end;
    float: left;
    line-height: 50px;
    justify-content: flex-end;
    cursor: pointer;
  }

  .Supplier_nav_rightList ul li.user_head img {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    margin-top: 13px;
  }

  .Supplier_nav_rightList ul li i {
    color: #fff;
  }

  .Supplier_nav_rightList .SupplierName {
    position: relative;
    top: -6px;
  }

</style>
