<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> {{$t('leader.leader_Set')}} </el-dropdown-item> <el-dropdown-item class="clearfix _dropdown_other" @click.native="exit"> <i class="iconfont icon-menu-tuichu"></i> {{$t('objFill.tuichu')}} </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')">{{$t('objFill.v101.header.lang.t1')}} <i v-if="language=='Japanese'" class="iconfont icon-duigou"></i></el-dropdown-item> <el-dropdown-item @click.native="ChangeLan('zh-CN')">{{$t('objFill.v101.header.lang.t2')}} <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"> {{$t('objFill.v101.header.xiaoxi')}} <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}"> {{$t('objFill.tongxunlu')}} <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}"> {{$t('objFill.gonggao')}} <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="$t('objFill.v101.header.sousuo')" 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"> {{$t('restaurant.res_system')}}</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}} <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 /> {{$t('objFill.v101.header.baoqmyz')}}{{newSearchContent}}{{$t('objFill.v101.header.daxia')}} </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;">{{$t('objFill.tongzi')}}</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>{{$t('objFill.v101.header.jiazagd')}}...</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)">{{$t('objFill.v101.header.tongshi')}}</div> <div class="contacts-type-item" :class="{active:contactsType==1}" @click="changeContactGroup(1)">{{$t('objFill.v101.header.qunliao')}}</div> <el-tooltip effect="dark" :content="$t('objFill.v101.header.xinjianqunl')" 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="$t('objFill.v101.header.yuanghcqss')" 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 /> {{$t('pub.sureBtn')}} </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">{{$t('objFill.v101.xitongxiaoxi')}}<span v-show="msglist">({{$t('hotel.hotel_totalRoom')}}{{this.msgList.length}}{{$t('hotel.hotel_item')}})</span> <span class="fr"> <i @click="deletMsg(0)" class="iconfont icon-xingzhuang"></i> <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;">{{$t('restaurant.res_system')}}</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>{{$t('objFill.v101.header.jiazagd')}}...</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> {{$t('objFill.v101.header.quanbudt')}}</li> <li :class="{cked:dynamicType==2}" @click="dynamicType=2"><i class="iconfont icon-ico-wofabude"></i> {{$t('objFill.v101.header.wofabud')}}</li> <li :class="{cked:dynamicType==3}" @click="dynamicType=3"><i class="iconfont icon-ico_yuwoxiangguan"></i> {{$t('objFill.v101.header.yuwoxiang')}}</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"> {{item.createEmName}} <span class="fr" style="font-size: 12px; color: #999;">{{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> {{$t('objFill.v101.header.huifu')}} <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)'>{{$t('pub.sureBtn')}}</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;"> {{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> {{$t('objFill.v101.header.huifu')}} <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)'>{{$t('pub.sureBtn')}}</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;"> {{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)'>{{$t('pub.sureBtn')}}</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;"> {{$t('objFill.v101.header.fabudongt')}}</p> <el-input type="textarea" :rows="4" maxlength='50' :placeholder="$t('objFill.v101.header.zheyikxf')+'...'" v-model='dynamicCont'> </el-input> <p style="margin: 10px 0;"> <el-upload action="" :file-list="imgList" :http-request="UploadAttachment" :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="$t('objFill.v101.header.fabu')" 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}}{{$t('objFill.v101.header.banbengx')}} </div> <div class="inlogs_Content" v-html="versionList[0].UpdateContent"> </div> <input type="button" :value="$t('objFill.v101.header.wozhidl')" 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="$t('pub.pleaseSel')"></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="$t('pub.pleaseSel')"></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>{{$t('hotel.hotel_starlevel')}}</em> <el-select v-model="Hotelmsg.Star" :placeholder="$t('pub.pleaseSel')"> <el-option :label="$t('pub.unlimitedSel')" :value='0'></el-option> <el-option :label="$t('objFill.sanxingsw')" :value='3'></el-option> <el-option :label="$t('objFill.sixing')" :value='4'></el-option> <el-option :label="$t('objFill.wuxing')" :value='5'></el-option> </el-select> </span> </li> <li> <span> <em>{{$t('objFill.jiagequjian')}}</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+$t('objFill.v101.hote.yixia')" :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+$t('objFill.v101.hote.yishang')" :value='7'></el-option> </el-select> </span> </li> <li><span><em>{{$t('pub.date')}}</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>{{$t('hotel.hotel')}}</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="$t('Operation.Op_Warmprompt')" @click="showNotice=true,resetPageIndex(),GetHotelTipList()" /> <input type="button" class="normalBtn" :value="$t('pub.searchBtn')" @click="getList2()" /> <input type="button" class="normalBtn" :value="$t('objFill.xz')" @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">{{$t('objFill.v101.rywanjdj')[0]}}</span> <!-- 旺季 --> <span style="color:#000000;background-color: #ff99cc;padding:2px 4px;border-radius:5px">{{$t('objFill.v101.rywanjdj')[1]}}</span> <!-- 平季 --> <span style="color:#000000;background-color: #bcd6ee;padding:2px 4px;border-radius:5px">{{$t('objFill.v101.rywanjdj')[2]}}</span> <!-- 淡季 --> <span style="color:#000000;background-color: #DDDDDD;padding:2px 4px;border-radius:5px">{{$t('objFill.v101.rywanjdj')[3]}}</span> <!-- 特别价 --> <span style="color:#000000;background-color: #02F78E;padding:2px 4px;border-radius:5px">{{$t('objFill.v101.rywanjdj')[4]}}</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="$t('objFill.v101.ryjdminc')" 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="$t('objFill.v101.ryjgkuc')" fixed min-width="120"> <template slot-scope="scope"> <!-- 价格 --> <div class="Hotel_kong">{{$t('objFill.v101.ryjiage')}}</div> <!-- 总/用/剩 --> <div class="Hotel_kong" style="min-width:60px;">{{$t('objFill.v101.ryhejsy')}}</div> <!-- 超定 --> <div class="Hotel_kong">{{$t('objFill.v101.ryshenyu')}}</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%"> </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="$t('pub.date')"> <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="$t('pub.searchBtn')" @click="resetPageIndex(),GetHotelTipList()" /> <input type="button" class="normalBtn" :value="$t('pub.closeSel')" @click="showNotice=false" /> </el-col> </el-row> <div class="Hq_addDetail"> <el-row> <el-col :span="12"> <el-form-item :label="$t('fnc.shuoming')"> <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="$t('pub.saveBtn')" @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">{{$t('hotel.hotel_SerialNumber')}}</th> <th>{{$t('objFill.neirong')}}</th> <th width="70">{{$t('admin.admin_czPerson')}}</th> <th width="150">{{$t('hotel.table_operattime')}}</th> <th width="80">{{$t('hotel.table_operat')}}</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="$t('pub.edit')" 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="$t('system.table_delete')" 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">{{$t('objFill.v101.commissonBill.womenhmysj')}}...</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="$t('objFill.xinxi')" :visible.sync="showHQinfo" center> <el-form> <table border="0" cellspacing="1" cellpadding="0" class="HouseTypeList Hq_addTable" style="width:100%;"> <tr> <!-- 编号 --> <th width="50">{{$t('objFill.v101.shu')}}</th> <th>{{$t('objFill.neirong')}}</th> <!-- 运营商 --> <th width="70">{{$t('objFill.v101.rychazrn')}}</th> <!-- 运营时间 --> <th width="140">{{$t('objFill.v101.rychaozshij')}}</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">{{$t('objFill.v101.commissonBill.womenhmysj')}}...</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">{{$t('objFill.v101.ryguanbi')}}</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}} {{$t('hotel.hotel_people')}} <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">{{$t('objFill.v101.header.qunzhu')}}</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;">{{$t('objFill.v101.header.yaoqingxcy')}}</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?$t('objFill.v101.header.yaoqingxcy'):$t('objFill.v101.header.xinjianqunl')}} </div> <div class="new-group-name" v-if="addOrUpdate==1"> <input type="text" :placeholder="$t('objFill.v101.header.qingsrqmc')" v-model="groupName" class="search-input" /> </div> <div class="group-body"> <div class="group-body-item"> <input type="text" :placeholder="$t('objFill.v101.header.sosuots')" 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 /> {{$t('objFill.v101.header.baoqianmyzwwmdx')}} </div> </div> </div> </div> <div class="group-body-item"> <div>{{$t('objFill.v101.header.yixuanlxr')}}:{{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">{{$t('pub.cancelBtn')}}</button> <button class="normalBtn" @click="addNewGroup">{{$t('objFill.v101.header.chuanjian')}}</button> </div> </el-dialog> <el-dialog :visible.sync="isUpdateGroup" class="addGroupByAlex" :modal="false"> <div class="title"> {{$t('objFill.v101.header.xiugaiqunzxx')}} <i class="iconfont icon-jiesan" @click="dismissTeam" :title="$t('objFill.v101.header.jieshangq')"></i> </div> <div class="cl-name" >{{$t('objFill.v101.header.qunzhumc')}}</div> <div class="new-group-name"> <input type="text" :placeholder="$t('objFill.v101.header.qingsrqmc')" v-model="currentSession.name" class="search-input" /> </div> <div class="cl-name" >{{$t('objFill.v101.header.qunzhucy')}}</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)">{{$t('pub.cancelBtn')}}</button> <button class="normalBtn" @click="updateTeamName" >{{$t('pub.saveBtn')}}</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}} {{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="$t('sm.saleRank')" :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: this.$t('pub.pleaseImport'), 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: this.$t('fnc.qsrneirong'), modules: { toolbar: [ ['bold', 'italic', 'underline', 'strike'], // toggled buttons ['blockquote', 'code-block', 'align'] ] } } }; }, filters: { decodeURIComponent(val) { return decodeURIComponent(val); }, }, 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 this.$t('objFill.wodeshouji'); } 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 this.$t('objFill.qun'); } }, 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; }, }, created() { 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: { 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) + this.$t('objFill.duojiuqians')[0]; } else if (diffWeek > 1) { result = parseInt(diffWeek) + this.$t('objFill.duojiuqians')[1]; } else if (diffDay > 1) { result = parseInt(diffDay) + this.$t('objFill.duojiuqians')[2]; } else if (diffHour > 1) { result = parseInt(diffHour) + this.$t('objFill.duojiuqians')[3]; } else if (diffMinute > 1) { result = parseInt(diffMinute) + this.$t('objFill.duojiuqians')[4]; } else { result = this.$t('objFill.duojiuqians')[5]; } return result; }, 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.$t('tips.baocunchenggong')); this.postMsg.Id = 0; this.postMsg.TipContent = ""; this.GetHotelTipList(); } else { this.Error(this.$t('objFill.baocunshibai')); } }, err => {} ); }, RemoveHotelTip(Id) { var that = this; this.Confirm(that.$t('objFill.v101.hote.shifysccsj'), function () { that.ApiPost2( "hoteltip_post_RemoveHotelTip", { ID: Id }, res => { if (res.data.resultCode == 1) { that.Success(this.$t('objFill.v101.hote.shanchucg')); that.GetHotelTipList(); } else { that.Error(this.$t('objFill.v101.hote.shanchusb')); } }, 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(this.$t('objFill.v101.hote.huoqusjsb')); } }, 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.$t('objFill.jiudianchaxuntj')+ 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; }, 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: this.$t('objFill.v101.header.tongxiaoxi'), updateTimeShow: "", unread: 0, lastMsgShow: this.$t('objFill.v101.header.tiaoweidxx'), 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) + this.$t('objFill.duojiuqians')[0]; } else if (diffWeek > 1) { result = parseInt(diffWeek) + this.$t('objFill.duojiuqians')[1]; } else if (diffDay > 1) { result = parseInt(diffDay) + this.$t('objFill.duojiuqians')[2]; } else if (diffHour > 1) { result = parseInt(diffHour) + this.$t('objFill.duojiuqians')[3]; } else if (diffMinute > 1) { result = parseInt(diffMinute) + this.$t('objFill.duojiuqians')[4]; } else { result = this.$t('objFill.duojiuqians')[5]; } 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(this.$t('objFill.v101.header.qingshurqmc')); 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(this.$t('objFill.v101.header.chuanjqzsb')); } 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(this.$t('objFill.v101.header.qingxuanzqy')); } }, 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(this.$t('objFill.v101.header.qingshurqmc')); 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(this.$t('objFill.v101.header.shibai')+'!'); } 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(this.$t('objFill.v101.header.shifoutuiq')+'?', this.$t('tips.tips'), { confirmButtonText: this.$t('pub.sureBtn'), cancelButtonText: this.$t('pub.cancelBtn'), 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.$t('objFill.v101.header.niyicgtuiq')+'!'); this.IM_Chatlayer = false; this.IM_navType = 2; this.$store.dispatch( "deleteSession", window.localStorage.sessionId ); } else { this.$message.error(this.$t('objFill.v101.header.tuiquanshib')+'!'); } } } }); }) .catch(() => { this.$message.info(this.$t('hotel.hotel_HasBeenCancelled')); }); }, 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(this.$t('objFill.v101.header.nimeiygczqx')+"!"); } 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.$t('objFill.chenggong')+'!') // 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(this.$t('objFill.v101.header.nimeiygczqx')+"!"); 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(this.$t('objFill.v101.header.nimeiygczqx')+"!"); 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(this.$t('objFill.v101.header.jianqunzsyygcy')+"!"); return; } let textName = this.$t('objFill.taolunzhu') this.$store.dispatch("delegateTeamFunction", { functionName: "createTeam", options: { type: "normal", name: textName, avatar: "", accounts: this.IMList, done: (error, obj) => { if (error) { this.$message.error(this.$t('objFill.v101.header.chuanjqzsb')); } if (!error) { this.$message.success(this.$t('objFill.chenggong')+"!"); 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(this.$t('objFill.v101.header.xiugaicysb')+"!"); return; } if (!error) { this.$store.dispatch( "addTeamMembers", window.localStorage.sessionId.substring( 5, window.localStorage.sessionId.length ), this.IMList ); this.$message.success(this.$t('objFill.chenggong')+"!"); 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(this.$t('objFill.v101.header.gaiygbklt')); } }, dbChat(obj) { if (obj.IMAccount != null) { this.teamName = obj.Name; this.IM_Chatlayer = true; pageUtil.scrollChatListDown(); } else { this.$message.warning(this.$t('objFill.v101.header.gaiygbklt')); } }, 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 = this.$t('objFill.v101.header.meiythndltxx'); if (!x.imAccount || x.imAccount == "") x.lastMsg = this.$t('objFill.v101.header.gaiygwktltgn'); 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(this.$t('tips.shifoushanchu'), this.$t('tips.tips'), { confirmButtonText: this.$t('pub.sureBtn'), cancelButtonText: this.$t('pub.cancelBtn'), 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(this.$t('tips.cancleDelete')); }); }, 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 => {} ); }, UploadAttachment(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(this.$t('objFill.v101.header.zuiduoscjzt')); }, 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.$t('fnc.spliucheng') 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.$confirmm(this.$t('adm.adm_sfchehui')+"?", this.$t('tips.tips'), { confirmButtonText: this.$t('pub.sureBtn'), cancelButtonText: this.$t('pub.cancelBtn'), type: "warning" }) .then(() => { this.ApiPost2( "app_user_workflow_wndoaudit", { workFlowId: workFlowId, templateType: templateType }, res => { if (res.data.resultCode == 1) { this.$message.success(this.$t('adm.adm_chsuccess')); this.getList(); } }, err => {} ); }) .catch(() => { this.$message.info(this.$t('objFill.v101.header.yiquxiaoch'));; }); }, 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.$t('objFill.v101.header.zhuanjialiuc'); 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(this.$t('rule.qxzzjiaoren')); 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: this.$t('objFill.v101.header.liaotian'), 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>