Commit 5d0127b4 authored by 李博今's avatar 李博今

增加客服管理功能

parent 664cb6c5
/** layui-v1.0.7 MIT License By http://www.layui.com */ /** layui-v1.0.7 MIT License By http://www.layui.com */
;layui.define(["layer","laytpl","upload"],function(i){var a="3.0.1 Pro",e=layui.jquery,t=layui.layer,n=layui.laytpl,l=layui.device(),s="layui-show",o="layim-this",r=20,d={},c=function(){this.v=a,e("body").on("click","*[layim-event]",function(i){var a=e(this),t=a.attr("layim-event");ei[t]?ei[t].call(this,a,i):""})};c.prototype.config=function(i){var a=[];if(layui.each(Array(5),function(i){a.push(layui.cache.dir+"css/modules/layim/skin/"+(i+1)+".jpg")}),i=i||{},i.skin=i.skin||[],layui.each(i.skin,function(i,e){a.unshift(e)}),i.skin=a,i=e.extend({isfriend:!0,isgroup:!0,voice:"default.wav"},i),window.JSON&&window.JSON.parse)return H(i),this},c.prototype.on=function(i,a){return"function"==typeof a&&(d[i]?d[i].push(a):d[i]=[a]),this},c.prototype.cache=function(){return j},c.prototype.chat=function(i){if(window.JSON&&window.JSON.parse)return T(i),this},c.prototype.setChatMin=function(){return A(),this},c.prototype.setChatStatus=function(i){var a=O();if(a){var e=a.elem.find(".layim-chat-status");return e.html(i),this}},c.prototype.getMessage=function(i){return Y(i),this},c.prototype.notice=function(i){return J(i),this},c.prototype.add=function(i){return E(i),this},c.prototype.setFriendGroup=function(i){return E(i,"setGroup"),this},c.prototype.msgbox=function(i){return F(i),this},c.prototype.addList=function(i){return U(i),this},c.prototype.removeList=function(i){return V(i),this},c.prototype.setFriendStatus=function(i,a){var t=e("#layim-friend"+i);t["online"===a?"removeClass":"addClass"]("layim-list-gray")},c.prototype.content=function(i){return layui.data.content(i)};var u=function(i){var a={friend:"该分组下暂无好友",group:"暂无群组",history:"暂无历史会话"};return i=i||{},i.item=i.item||"d."+i.type,["{{# var length = 0; layui.each("+i.item+", function(i, data){ length++; }}",'<li layim-event="chat" data-type="'+i.type+'" data-index="{{ '+(i.index||"i")+' }}" id="layim-'+i.type+'{{ data.id }}" {{ data.status === "offline" ? "class=layim-list-gray" : "" }}><img src="{{ data.avatar }}"><span>{{ data.username||data.groupname||data.name||"游客" }}</span><p>{{ data.remark||data.sign||"" }}</p></li>',"{{# }); if(length === 0){ }}",'<li class="layim-null">'+(a[i.type]||"暂无数据")+"</li>","{{# } }}"].join("")},y=['<div class="layui-layim-main">','<div class="layui-layim-info">','<div class="layui-layim-user">{{ d.mine.username }}</div>','<div class="layui-layim-status">','{{# if(d.mine.status === "online"){ }}','<span class="layui-icon layim-status-online" layim-event="status" lay-type="show">&#xe617;</span>','{{# } else if(d.mine.status === "hide") { }}','<span class="layui-icon layim-status-hide" layim-event="status" lay-type="show">&#xe60f;</span>',"{{# } }}",'<ul class="layui-anim layim-menu-box">','<li {{d.mine.status === "online" ? "class=layim-this" : ""}} layim-event="status" lay-type="online"><i class="layui-icon">&#xe618;</i><cite class="layui-icon layim-status-online">&#xe617;</cite>在线</li>','<li {{d.mine.status === "hide" ? "class=layim-this" : ""}} layim-event="status" lay-type="hide"><i class="layui-icon">&#xe618;</i><cite class="layui-icon layim-status-hide">&#xe60f;</cite>隐身</li>',"</ul>","</div>",'<input class="layui-layim-remark" placeholder="编辑签名" value="{{ d.mine.remark||d.mine.sign||"" }}"></p>',"</div>",'<ul class="layui-unselect layui-layim-tab{{# if(!d.base.isfriend || !d.base.isgroup){ }}'," layim-tab-two",'{{# } }}">','<li class="layui-icon',"{{# if(!d.base.isfriend){ }}"," layim-hide","{{# } else { }}"," layim-this","{{# } }}",'" title="联系人" layim-event="tab" lay-type="friend">&#xe612;</li>','<li style="display:none" class="layui-icon',"{{# if(!d.base.isgroup){ }}"," layim-hide","{{# } else if(!d.base.isfriend) { }}"," layim-this","{{# } }}" ;layui.define(["layer","laytpl","upload"],function(i){var a="3.0.1 Pro",e=layui.jquery,t=layui.layer,n=layui.laytpl,l=layui.device(),s="layui-show",o="layim-this",r=20,d={},c=function(){this.v=a,e("body").on("click","*[layim-event]",function(i){var a=e(this),t=a.attr("layim-event");ei[t]?ei[t].call(this,a,i):""})};c.prototype.config=function(i){var a=[];if(layui.each(Array(5),function(i){a.push(layui.cache.dir+"css/modules/layim/skin/"+(i+1)+".jpg")}),i=i||{},i.skin=i.skin||[],layui.each(i.skin,function(i,e){a.unshift(e)}),i.skin=a,i=e.extend({isfriend:!0,isgroup:!0,voice:"default.wav"},i),window.JSON&&window.JSON.parse)return H(i),this},c.prototype.on=function(i,a){return"function"==typeof a&&(d[i]?d[i].push(a):d[i]=[a]),this},c.prototype.cache=function(){return j},c.prototype.chat=function(i){if(window.JSON&&window.JSON.parse)return T(i),this},c.prototype.setChatMin=function(){return A(),this},c.prototype.setChatStatus=function(i){var a=O();if(a){var e=a.elem.find(".layim-chat-status");return e.html(i),this}},c.prototype.getMessage=function(i){return Y(i),this},c.prototype.notice=function(i){return J(i),this},c.prototype.add=function(i){return E(i),this},c.prototype.setFriendGroup=function(i){return E(i,"setGroup"),this},c.prototype.msgbox=function(i){return F(i),this},c.prototype.addList=function(i){return U(i),this},c.prototype.removeList=function(i){return V(i),this},c.prototype.setFriendStatus=function(i,a){var t=e("#layim-friend"+i);t["online"===a?"removeClass":"addClass"]("layim-list-gray")},c.prototype.content=function(i){return layui.data.content(i)};var u=function(i){var a={friend:"该分组下暂无好友",group:"暂无群组",history:"暂无历史会话"};return i=i||{},i.item=i.item||"d."+i.type,["{{# var length = 0; layui.each("+i.item+", function(i, data){ length++; }}",'<li layim-event="chat" data-type="'+i.type+'" data-index="{{ '+(i.index||"i")+' }}" id="layim-'+i.type+'{{ data.id }}" {{ data.status === "offline" ? "class=layim-list-gray" : "" }}><img src="{{ data.avatar }}"><span>{{ data.username||data.groupname||data.name||"游客" }}</span><p>{{ data.remark||data.sign||"" }}</p></li>',"{{# }); if(length === 0){ }}",'<li class="layim-null">'+(a[i.type]||"暂无数据")+"</li>","{{# } }}"].join("")},y=['<div class="layui-layim-main">','<div class="layui-layim-info">','<div class="layui-layim-user">{{ d.mine.username }}</div>','<div class="layui-layim-status">','{{# if(d.mine.status === "online"){ }}','<span class="layui-icon layim-status-online" layim-event="status" lay-type="show">&#xe617;</span>','{{# } else if(d.mine.status === "hide") { }}','<span class="layui-icon layim-status-hide" layim-event="status" lay-type="show">&#xe60f;</span>',"{{# } }}",'<ul class="layui-anim layim-menu-box">','<li {{d.mine.status === "online" ? "class=layim-this" : ""}} layim-event="status" lay-type="online"><i class="layui-icon">&#xe618;</i><cite class="layui-icon layim-status-online">&#xe617;</cite>在线</li>','<li {{d.mine.status === "hide" ? "class=layim-this" : ""}} layim-event="status" lay-type="hide"><i class="layui-icon">&#xe618;</i><cite class="layui-icon layim-status-hide">&#xe60f;</cite>隐身</li>',"</ul>","</div>",'<input class="layui-layim-remark" placeholder="编辑签名" value="{{ d.mine.remark||d.mine.sign||"" }}"></p>',"</div>",'<ul class="layui-unselect layui-layim-tab{{# if(!d.base.isfriend || !d.base.isgroup){ }}'," layim-tab-two",'{{# } }}">','<li class="layui-icon',"{{# if(!d.base.isfriend){ }}"," layim-hide","{{# } else { }}"," layim-this","{{# } }}",'" title="联系人" layim-event="tab" lay-type="friend">&#xe612;</li>','<li style="display:none" class="layui-icon',"{{# if(!d.base.isgroup){ }}"," layim-hide","{{# } else if(!d.base.isfriend) { }}"," layim-this","{{# } }}"
,'" title="群组" layim-event="tab" lay-type="group">&#xe613;</li>' ,'" title="群组" layim-event="tab" lay-type="group">&#xe613;</li>'
,'<li class="layui-icon" title="历史会话" layim-event="tab" lay-type="history">&#xe611;</li>',"</ul>",'<ul id="friendsList" class="layui-unselect layim-tab-content {{# if(d.base.isfriend){ }}layui-show{{# } }} layim-list-friend">','{{# layui.each(d.friend, function(index, item){ var spread = d.local["spread"+index]; }}',"<li>",'<h5 layim-event="spread" lay-type="{{ spread }}"><i class="layui-icon">{{# if(spread === "true"){ }}&#xe61a;{{# } else { }}&#xe602;{{# } }}</i><span>{{ item.groupname||"未命名分组"+index }}</span><em>(<cite class="layim-count"> {{ (item.list||[]).length }}</cite>)</em></h5>','<ul class="layui-layim-list {{# if(spread === "true"){ }}'," layui-show",'{{# } }}">',u({type:"friend",item:"item.list",index:"index"}),"</ul>","</li>","{{# }); if(d.friend.length === 0){ }}",'<li><ul class="layui-layim-list layui-show"><li class="layim-null">暂无联系人</li></ul>',"{{# } }}","</ul>",'<ul class="layui-unselect layim-tab-content {{# if(!d.base.isfriend && d.base.isgroup){ }}layui-show{{# } }}">',"<li>",'<ul class="layui-layim-list layui-show layim-list-group">',u({type:"group"}),"</ul>","</li>","</ul>",'<ul class="layui-unselect layim-tab-content {{# if(!d.base.isfriend && !d.base.isgroup){ }}layui-show{{# } }}">',"<li>",'<ul class="layui-layim-list layui-show layim-list-history">',u({type:"history"}),"</ul>","</li>","</ul>",'<ul class="layui-unselect layim-tab-content">',"<li>",'<ul class="layui-layim-list layui-show" id="layui-layim-search"></ul>',"</li>","</ul>",'<ul class="layui-unselect layui-layim-tool">','<li class="layui-icon layim-tool-search" layim-event="search" title="搜索">&#xe615;</li>',"{{# if(d.base.msgbox){ }}",'<li style="display:none" class="layui-icon layim-tool-msgbox" layim-event="msgbox" title="消息盒子">&#xe645;<span class="layui-anim"></span></li>',"{{# } }}","{{# if(d.base.find){ }}",'<li class="layui-icon layim-tool-find" layim-event="find" title="查找">&#xe608;</li>',"{{# } }}",/*'<li class="layui-icon layim-tool-skin" layim-event="skin" title="更换背景">&#xe61b;</li>',*/"{{# if(!d.base.copyright){ }}",'<li class="layui-icon layim-tool-about" layim-event="about" title="关于">&#xe60b;</li>',"{{# } }}","</ul>",'<div class="layui-layim-search"><input><label class="layui-icon" layim-event="closeSearch">&#x1007;</label></div>',"</div>"].join(""),m=['<ul class="layui-layim-skin">',"{{# layui.each(d.skin, function(index, item){ }}",'<li><img layim-event="setSkin" src="{{ item }}"></li>',"{{# }); }}",'<li layim-event="setSkin"><cite>简约</cite></li>',"</ul>"].join(""),f=['<div class="layim-chat layim-chat-{{d.data.type}}{{d.first ? " layui-show" : ""}}">','<div class="layui-unselect layim-chat-title">','<div class="layim-chat-other">','<img src="{{ d.data.avatar }}"><span class="layim-chat-username" layim-event="{{ d.data.type==="group" ? "groupMembers" : "" }}">{{ d.data.name||"游客" }} {{d.data.temporary ? "<cite>临时会话</cite>" : ""}} {{# if(d.data.type==="group"){ }} <em class="layim-chat-members"></em><i class="layui-icon">&#xe61a;</i> {{# } }}</span>','<p class="layim-chat-status"></p>',"</div>","</div>",'<div class="layim-chat-main">',"<ul></ul>","</div>",'<div class="layim-chat-footer">','<div class="layui-unselect layim-chat-tool" data-json="{{encodeURIComponent(JSON.stringify(d.data))}}">','<span class="layui-icon layim-tool-face" title="选择表情" layim-event="face">&#xe60c;</span>',"{{# if(d.base && d.base.uploadImage){ }}",'<span class="layui-icon layim-tool-image" title="上传图片" layim-event="image">&#xe60d;<input type="file" name="file"></span>',"{{# }; }}","{{# if(d.base && d.base.uploadFile){ }}", ,'<li class="layui-icon" title="历史会话" layim-event="tab" lay-type="history">&#xe611;</li>',"</ul>",'<ul id="friendsList" class="layui-unselect layim-tab-content {{# if(d.base.isfriend){ }}layui-show{{# } }} layim-list-friend">','{{# layui.each(d.friend, function(index, item){ var spread = d.local["spread"+index]; }}',"<li>",'<h5 layim-event="spread" lay-type="{{ spread }}"><i class="layui-icon">{{# if(spread === "true"){ }}&#xe61a;{{# } else { }}&#xe602;{{# } }}</i><span>{{ item.groupname||"未命名分组"+index }}</span><em>(<cite class="layim-count"> {{ (item.list||[]).length }}</cite>)</em></h5>','<ul class="layui-layim-list {{# if(spread === "true"){ }}'," layui-show",'{{# } }}">',u({type:"friend",item:"item.list",index:"index"}),"</ul>","</li>","{{# }); if(d.friend.length === 0){ }}",'<li><ul class="layui-layim-list layui-show"><li class="layim-null">暂无联系人</li></ul>',"{{# } }}","</ul>",'<ul class="layui-unselect layim-tab-content {{# if(!d.base.isfriend && d.base.isgroup){ }}layui-show{{# } }}">',"<li>",'<ul class="layui-layim-list layui-show layim-list-group">',u({type:"group"}),"</ul>","</li>","</ul>",'<ul class="layui-unselect layim-tab-content {{# if(!d.base.isfriend && !d.base.isgroup){ }}layui-show{{# } }}">',"<li>",'<ul class="layui-layim-list layui-show layim-list-history">',u({type:"history"}),"</ul>","</li>","</ul>",'<ul class="layui-unselect layim-tab-content">',"<li>",'<ul class="layui-layim-list layui-show" id="layui-layim-search"></ul>',"</li>","</ul>",'<ul class="layui-unselect layui-layim-tool">','<li class="layui-icon layim-tool-search" layim-event="search" title="搜索">&#xe615;</li>',"{{# if(d.base.msgbox){ }}",'<li style="display:none" class="layui-icon layim-tool-msgbox" layim-event="msgbox" title="消息盒子">&#xe645;<span class="layui-anim"></span></li>',"{{# } }}","{{# if(d.base.find){ }}",'<li class="layui-icon layim-tool-find" layim-event="find" title="查找">&#xe608;</li>',"{{# } }}",/*'<li class="layui-icon layim-tool-skin" layim-event="skin" title="更换背景">&#xe61b;</li>',*/"{{# if(!d.base.copyright){ }}",'<li class="layui-icon layim-tool-about" layim-event="about" title="关于">&#xe60b;</li>',"{{# } }}","</ul>",'<div class="layui-layim-search"><input><label class="layui-icon" layim-event="closeSearch">&#x1007;</label></div>',"</div>"].join(""),m=['<ul class="layui-layim-skin">',"{{# layui.each(d.skin, function(index, item){ }}",'<li><img layim-event="setSkin" src="{{ item }}"></li>',"{{# }); }}",'<li layim-event="setSkin"><cite>简约</cite></li>',"</ul>"].join(""),f=['<div class="layim-chat layim-chat-{{d.data.type}}{{d.first ? " layui-show" : ""}}">','<div class="layui-unselect layim-chat-title">','<div class="layim-chat-other">','<img src="{{ d.data.avatar }}"><span class="layim-chat-username" layim-event="{{ d.data.type==="group" ? "groupMembers" : "" }}">{{ d.data.name ||"游客" }}' +
' {{d.data.telephone || ""}} {{d.data.temporary ? "<cite>临时会话</cite>" : ""}} {{# if(d.data.type==="group"){ }} <em class="layim-chat-members"></em><i class="layui-icon">&#xe61a;</i> {{# } }}</span>','<p class="layim-chat-status"></p>',"</div>","</div>",'<div class="layim-chat-main">',"<ul></ul>","</div>",'<div class="layim-chat-footer">','<div class="layui-unselect layim-chat-tool" data-json="{{encodeURIComponent(JSON.stringify(d.data))}}">','<span class="layui-icon layim-tool-face" title="选择表情" layim-event="face">&#xe60c;</span>',"{{# if(d.base && d.base.uploadImage){ }}",'<span class="layui-icon layim-tool-image" title="上传图片" layim-event="image">&#xe60d;<input type="file" name="file"></span>',"{{# }; }}","{{# if(d.base && d.base.uploadFile){ }}",
// '<span class="layui-icon layim-tool-image" title="发送文件" layim-event="image" data-type="file">&#xe61d;<input type="file" name="file"></span>', // '<span class="layui-icon layim-tool-image" title="发送文件" layim-event="image" data-type="file">&#xe61d;<input type="file" name="file"></span>',
"{{# }; }}","{{# layui.each(d.base.tool, function(index, item){ }}",'<span class="layui-icon layim-tool-{{item.alias}}" title="{{item.title}}" layim-event="extend" lay-filter="{{ item.alias }}">{{item.icon}}</span>',"{{# }); }}","{{# if(d.base && d.base.chatLog){ }}",'<span class="layim-tool-log" layim-event="chatLog"><i class="layui-icon">&#xe60e;</i>聊天记录</span>',"{{# }; }}","</div>",'<div class="layim-chat-textarea"><textarea></textarea></div>','<div class="layim-chat-bottom">','<div class="layim-chat-send">',"{{# if(!d.base.brief){ }}",'<span class="layim-send-close" layim-event="closeThisChat">关闭</span>',"{{# } }}",'<span class="layim-send-btn" layim-event="send">发送</span>','<span class="layim-send-set" layim-event="setSend" lay-type="show"><em class="layui-edge"></em></span>','<ul class="layui-anim layim-menu-box">','<li {{d.local.sendHotKey !== "Ctrl+Enter" ? "class=layim-this" : ""}} layim-event="setSend" lay-type="Enter"><i class="layui-icon">&#xe618;</i>按Enter键发送消息</li>','<li {{d.local.sendHotKey === "Ctrl+Enter" ? "class=layim-this" : ""}} layim-event="setSend" lay-type="Ctrl+Enter"><i class="layui-icon">&#xe618;</i>按Ctrl+Enter键发送消息</li>',"</ul>","</div>","</div>","</div>","</div>"].join(""),p=['<div class="layim-add-box">','<div class="layim-add-img"><img class="layui-circle" src="{{ d.data.avatar }}"><p>{{ d.data.name||"" }}</p></div>','<div class="layim-add-remark">','{{# if(d.data.type === "friend" && d.type === "setGroup"){ }}',"<p>选择分组</p>",'{{# } if(d.data.type === "friend"){ }}','<select class="layui-select" id="LAY_layimGroup">',"{{# layui.each(d.data.group, function(index, item){ }}",'<option value="{{ item.id }}">{{ item.groupname }}</option>',"{{# }); }}","</select>","{{# } }}",'{{# if(d.data.type === "group"){ }}',"<p>请输入验证信息</p>",'{{# } if(d.type !== "setGroup"){ }}','<textarea id="LAY_layimRemark" placeholder="验证信息" class="layui-textarea"></textarea>',"{{# } }}","</div>","</div>"].join(""),h=['<li {{ d.mine ? "class=layim-chat-mine" : "" }} {{# if(d.cid){ }}data-cid="{{d.cid}}"{{# } }}>','<div class="layim-chat-user"><img src="{{ d.avatar }}"><cite>',"{{# if(d.mine){ }}",'<i>{{ layui.data.date(d.timestamp) }}</i>{{ d.username||"游客" }}',"{{# } else { }}",'{{ d.username||"游客" }}<i>{{ layui.data.date(d.timestamp) }}</i>',"{{# } }}","</cite></div>",'<div class="layim-chat-text">{{ layui.data.content(d.content||"&nbsp") }}</div>',"</li>"].join(""),v='<li class="layim-chatlist-{{ d.data.type }}{{ d.data.id }} layim-this" layim-event="tabChat"><img src="{{ d.data.avatar }}"><span>{{ d.data.name||"游客" }}</span>{{# if(!d.base.brief){ }}<i class="layui-icon" layim-event="closeChat">&#x1007;</i>{{# } }}</li>',g=function(i){return i<10?"0"+(0|i):i};layui.data.date=function(i){var a=new Date(i||new Date);return a.getFullYear()+"-"+g(a.getMonth()+1)+"-"+g(a.getDate())+" "+g(a.getHours())+":"+g(a.getMinutes())+":"+g(a.getSeconds())},layui.data.content=function(i){var a=function(i){return new RegExp("\\n*\\["+(i||"")+"(pre|div|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*","g")};return i=(i||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;").replace(/@(\S+)(\s+?|$)/g,'@<a href="javascript:;">$1</a>$2').replace(/\s{2}/g,"&nbsp").replace(/img\[([^\s]+?)\]/g,function(i){return'<img class="layui-layim-photos" src="'+i.replace(/(^img\[)|(\]$)/g,"")+'">'}).replace(/file\([\s\S]+?\)\[[\s\S]*?\]/g,function(i){var a=(i.match(/file\(([\s\S]+?)\)\[/)||[])[1],e=(i.match(/\)\[([\s\S]*?)\]/)||[])[1];return a?'<a class="layui-layim-file" href="'+a+'" download target="_blank"><i class="layui-icon">&#xe61e;</i><cite>'+(e||a)+"</cite></a>":i}).replace(/face\[([^\s\[\]]+?)\]/g,function(i){var a=i.replace(/^face/g,"");return'<img alt="'+a+'" title="'+a+'" src="'+Q[a]+'">'}).replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g,function(i){var a=(i.match(/a\(([\s\S]+?)\)\[/)||[])[1],e=(i.match(/\)\[([\s\S]*?)\]/)||[])[1];return a?'<a href="'+a+'" target="_blank">'+(e||a)+"</a>":i}).replace(a(),"<$1 $2>").replace(a("/"),"</$1>").replace(/\n/g,"<br>")};var x,b,w,k,C,S=function(i,a,n){return i=i||{},e.ajax({url:i.url,type:i.type||"get",data:i.data,dataType:i.dataType||"json",cache:!1,success:function(i){0==i.code?a&&a(i.data||{}):t.msg(i.msg||(n||"Error")+": LAYIM_NOT_GET_DATA",{time:5e3})},error:function(i,a){window.console&&console.log&&console.error("LAYIM_DATE_ERROR:"+a)}})},j={message:{},chat:[]},H=function(i){var a=i.init||{};return mine=a.mine||{},local=layui.data("layim")[mine.id]||{},obj={base:i,local:local,mine:mine,history:local.history||{}},create=function(a){var t=a.mine||{},l=layui.data("layim")[t.id]||{},s={base:i,local:l,mine:t,friend:a.friend||[],group:a.group||[],history:l.history||{}};j=e.extend(j,s),L(n(y).render(s)),(l.close||i.min)&&I(),layui.each(d.ready,function(i,a){a&&a(s)})},j=e.extend(j,obj),i.brief?layui.each(d.ready,function(i,a){a&&a(obj)}):void(a.url?S(a,create,"INIT"):create(a))},L=function(i){return t.open({type:1,area:["260px","520px"],skin:"layui-box layui-layim",title:"&#8203;",offset:"rb",id:"layui-layim",shade:!1,anim:2,resize:!1,content:i,success:function(i){x=i,_(i),j.base.right&&i.css("margin-left","-"+j.base.right),b&&t.close(b.attr("times"));var a=[],n=i.find(".layim-list-history");n.find("li").each(function(){a.push(e(this).prop("outerHTML"))}),a.length>0&&(a.reverse(),n.html(a.join(""))),z(),ei.sign()},cancel:function(i){I();var a=layui.data("layim")[j.mine.id]||{};return a.close=!0,layui.data("layim",{key:j.mine.id,value:a}),!1}})},z=function(){x.on("contextmenu",function(i){return i.cancelBubble=!0,i.returnValue=!1,!1});var i=function(){t.closeAll("tips")};x.find(".layim-list-history").on("contextmenu","li",function(a){var n=e(this),l='<ul data-id="'+n[0].id+'" data-index="'+n.data("index")+'"><li layim-event="menuHistory" data-type="one">移除该会话</li><li layim-event="menuHistory" data-type="all">清空全部会话列表</li></ul>';n.hasClass("layim-null")||(t.tips(l,this,{tips:1,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-contextmenu",success:function(i){var a=function(i){X(i)};i.off("mousedown",a).on("mousedown",a)}}),e(document).off("mousedown",i).on("mousedown",i),e(window).off("resize",i).on("resize",i))})},I=function(i){return b&&t.close(b.attr("times")),x&&x.hide(),j.mine=j.mine||{},t.open({type:1,title:!1,id:"layui-layim-close",skin:"layui-box layui-layim-min layui-layim-close",shade:!1,closeBtn:!1,anim:2,offset:"rb",resize:!1,content:'<img src="'+(j.mine.avatar||layui.cache.dir+"css/pc/layim/skin/logo.jpg")+'"><span>'+(i||j.base.title||"我的LayIM")+"</span>",move:"#layui-layim-close img",success:function(i,a){b=i,j.base.right&&i.css("margin-left","-"+j.base.right),i.on("click",function(){t.close(a),x.show();var i=layui.data("layim")[j.mine.id]||{};delete i.close,layui.data("layim",{key:j.mine.id,value:i})})}})},T=function(i){i=i||{};var a=e("#layui-layim-chat"),l={data:i,base:j.base,local:j.local};if(!i.id)return t.msg("非法用户");if(a[0]){var s=w.find(".layim-chat-list"),o=s.find(".layim-chatlist-"+i.type+i.id),r=w.find(".layui-layer-max").hasClass("layui-layer-maxmin"),c=a.children(".layim-chat-box");return"none"===w.css("display")&&w.show(),k&&t.close(k.attr("times")),1!==s.find("li").length||o[0]||(r||w.css("width",800),s.css({height:w.height()}).show(),c.css("margin-left","200px")),o[0]||(s.append(n(v).render(l)),c.append(n(f).render(l)),N()),M(s.find(".layim-chatlist-"+i.type+i.id)),o[0]||P(),R(i),Z(),C}l.first=!0;var u=C=t.open({type:1,area:"600px",skin:"layui-box layui-layim-chat",id:"layui-layim-chat",title:"&#8203;",shade:!1,maxmin:!0,offset:i.offset||"auto",anim:i.anim||0,closeBtn:!j.base.brief&&1,content:n('<ul class="layui-unselect layim-chat-list">'+v+'</ul><div class="layim-chat-box">'+f+"</div>").render(l),success:function(a){w=a,a.css({"min-width":"500px","min-height":"420px"}),"function"==typeof i.success&&i.success(a),Z(),_(a),R(i),P(),q(),layui.each(d.chatChange,function(i,a){a&&a(O())}),a.on("dblclick",".layui-layim-photos",function(){var i=this.src;t.close(T.photosIndex),t.photos({photos:{data:[{alt:"大图模式",src:i}]},shade:.01,closeBtn:2,anim:0,resize:!1,success:function(i,a){T.photosIndex=a}})})},full:function(i){t.style(u,{width:"100%",height:"100%"},!0),N()},resizing:N,restore:N,min:function(){return A(),!1},end:function(){t.closeAll("tips"),w=null}});return u},N=function(){var i=w.find(".layim-chat-list"),a=w.find(".layim-chat-main"),e=w.height();i.css({height:e}),a.css({height:e-20-80-158})},A=function(i){var a=i||O().data,n=layui.layim.cache().base;w&&!i&&w.hide(),t.close(A.index),A.index=t.open({type:1,title:!1,skin:"layui-box layui-layim-min",shade:!1,closeBtn:!1,anim:a.anim||2,offset:"b",move:"#layui-layim-min",resize:!1,area:["182px","50px"],content:'<img id="layui-layim-min" src="'+a.avatar+'"><span>'+a.name+"</span>",success:function(a,l){i||(k=a),n.minRight&&t.style(l,{left:e(window).width()-a.outerWidth()-parseFloat(n.minRight)}),a.find(".layui-layer-content span").on("click",function(){t.close(l),i?layui.each(j.chat,function(i,a){T(a)}):w.show(),i&&(j.chat=[],W())}),a.find(".layui-layer-content img").on("click",function(i){X(i)})}})},E=function(i,a){return i=i||{},t.close(E.index),E.index=t.open({type:1,area:"430px",title:{friend:"添加好友",group:"加入群组"}[i.type]||"",shade:!1,resize:!1,btn:a?["确认","取消"]:["发送申请","关闭"],content:n(p).render({data:{name:i.username||i.groupname,avatar:i.avatar,group:i.group||parent.layui.layim.cache().friend||[],type:i.type},type:a}),yes:function(e,t){var n=t.find("#LAY_layimGroup"),l=t.find("#LAY_layimRemark");a?i.submit&&i.submit(n.val(),e):i.submit&&i.submit(n.val(),l.val(),e)}})},M=function(i,a){i=i||e(".layim-chat-list ."+o);var n=i.index()===-1?0:i.index(),l=".layim-chat",r=w.find(l).eq(n),c=w.find(".layui-layer-max").hasClass("layui-layer-maxmin");if(a){i.hasClass(o)&&M(0===n?i.next():i.prev()),i.remove(),r.remove();var u=w.find(l).length;return 1===u&&(w.find(".layim-chat-list").hide(),c||w.css("width","600px"),w.find(".layim-chat-box").css("margin-left",0)),0===u&&t.close(C),!1}i.addClass(o).siblings().removeClass(o),r.addClass(s).siblings(l).removeClass(s),r.find("textarea").focus(),layui.each(d.chatChange,function(i,a){a&&a(O())}),q()},q=function(){var i=O(),a=j.message[i.data.type+i.data.id];a&&delete j.message[i.data.type+i.data.id]},O=function(){if(w){var i=e(".layim-chat-list ."+o).index(),a=w.find(".layim-chat").eq(i),t=JSON.parse(decodeURIComponent(a.find(".layim-chat-tool").data("json")));return{elem:a,data:t,textarea:a.find("textarea")}}},_=function(i){var a=layui.data("layim")[j.mine.id]||{},e=a.skin;i.css({"background-image":e?"url("+e+")":function(){return j.base.initSkin?"url("+(layui.cache.dir+"css/modules/layim/skin/"+j.base.initSkin)+")":"none"}()})},R=function(i){var a=layui.data("layim")[j.mine.id]||{},e={},t=a.history||{},l=t[i.type+i.id];if(x){var s=x.find(".layim-list-history");if(i.historyTime=(new Date).getTime(),t[i.type+i.id]=i,a.history=t,layui.data("layim",{key:j.mine.id,value:a}),!l){e[i.type+i.id]=i;var o=n(u({type:"history",item:"d.data"})).render({data:e});s.prepend(o),s.find(".layim-null").remove()}}},D=function(){var i={username:j.mine?j.mine.username:"访客",avatar:j.mine?j.mine.avatar:layui.cache.dir+"css/pc/layim/skin/logo.jpg",id:j.mine?j.mine.id:null,mine:!0},a=O(),e=a.elem.find(".layim-chat-main ul"),l=j.base.maxLength||3e3;if(i.content=a.textarea.val(),""!==i.content.replace(/\s/g,"")){if(i.content.length>l)return t.msg("内容最长不能超过"+l+"个字符");e.append(n(h).render(i));var s={mine:i,to:a.data},o={username:s.mine.username,avatar:s.mine.avatar,id:s.to.id,type:s.to.type,content:s.mine.content,timestamp:(new Date).getTime(),mine:!0};B(o),layui.each(d.sendMessage,function(i,a){a&&a(s)})}W(),a.textarea.val("").focus()},J=function(i){if(i=i||{},window.Notification)if("granted"===Notification.permission){new Notification(i.title||"",{body:i.content||"",icon:i.avatar||"http://tp2.sinaimg.cn/5488749285/50/5719808192/1"})}else Notification.requestPermission()},G=function(){if(!(l.ie&&l.ie<9)){var i=document.createElement("audio");i.src=layui.cache.dir+"css/modules/layim/voice/"+j.base.voice,i.play()}},K={},Y=function(i){i=i||{};var a=e(".layim-chatlist-"+i.type+i.id),t={},l=a.index();if(i.timestamp=i.timestamp||(new Date).getTime(),i.fromid==j.mine.id&&(i.mine=!0),i.system||B(i),K=JSON.parse(JSON.stringify(i)),j.base.voice&&G(),!w&&i.content||l===-1){if(j.message[i.type+i.id])j.message[i.type+i.id].push(i);else if(j.message[i.type+i.id]=[i],"friend"===i.type){var s;layui.each(j.friend,function(a,e){if(layui.each(e.list,function(a,e){if(e.id==i.id)return e.type="friend",e.name=e.username,j.chat.push(e),s=!0}),s)return!0}),s||(i.name=i.username,i.temporary=!0,j.chat.push(i))}else if("group"===i.type){var o;layui.each(j.group,function(a,e){if(e.id==i.id)return e.type="group",e.name=e.groupname,j.chat.push(e),o=!0}),o||(i.name=i.groupname,j.chat.push(i))}else i.name=i.name||i.username||i.groupname,j.chat.push(i);if("group"===i.type&&layui.each(j.group,function(a,e){if(e.id==i.id)return t.avatar=e.avatar,!0}),!i.system)return j.base.notice&&J({title:"来自 "+i.username+" 的消息",content:i.content,avatar:t.avatar||i.avatar}),A({name:"收到新消息",avatar:t.avatar||i.avatar,anim:6})}if(w){var r=O();r.data.type+r.data.id!==i.type+i.id&&(a.addClass("layui-anim layer-anim-06"),setTimeout(function(){a.removeClass("layui-anim layer-anim-06")},300));var d=w.find(".layim-chat").eq(l),c=d.find(".layim-chat-main ul");i.system?l!==-1&&c.append('<li class="layim-chat-system"><span>'+i.content+"</span></li>"):""!==i.content.replace(/\s/g,"")&&c.append(n(h).render(i)),W()}},$="layui-anim-loop layer-anim-05",F=function(i){var a=x.find(".layim-tool-msgbox");a.find("span").addClass($).html(i)},B=function(i){var a=layui.data("layim")[j.mine.id]||{};a.chatlog=a.chatlog||{};var e=a.chatlog[i.type+i.id];if(e){var t;layui.each(e,function(a,e){e.timestamp===i.timestamp&&e.type===i.type&&e.id===i.id&&e.content===i.content&&(t=!0)}),t||i.fromid==j.mine.id||e.push(i),e.length>r&&e.shift()}else a.chatlog[i.type+i.id]=[i];layui.data("layim",{key:j.mine.id,value:a})},P=function(){var i=layui.data("layim")[j.mine.id]||{},a=O(),e=i.chatlog||{},t=a.elem.find(".layim-chat-main ul");layui.each(e[a.data.type+a.data.id],function(i,a){t.append(n(h).render(a))}),W()},U=function(i){var a,e={},l=x.find(".layim-list-"+i.type);if(j[i.type])if("friend"===i.type)layui.each(j.friend,function(n,l){if(i.groupid==l.id)return layui.each(j.friend[n].list,function(e,t){if(t.id==i.id)return a=!0}),a?t.msg("好友 ["+(i.username||"")+"] 已经存在列表中",{anim:6}):(j.friend[n].list=j.friend[n].list||[],e[j.friend[n].list.length]=i,i.groupIndex=n,j.friend[n].list.push(i),!0)});else if("group"===i.type){if(layui.each(j.group,function(e,t){if(t.id==i.id)return a=!0}),a)return t.msg("您已是 ["+(i.groupname||"")+"] 的群成员",{anim:6});e[j.group.length]=i,j.group.push(i)}if(!a){var s=n(u({type:i.type,item:"d.data",index:"friend"===i.type?"data.groupIndex":null})).render({data:e});if("friend"===i.type){var o=l.find(">li").eq(i.groupIndex);o.find(".layui-layim-list").append(s),o.find(".layim-count").html(j.friend[i.groupIndex].list.length),o.find(".layim-null")[0]&&o.find(".layim-null").remove()}else"group"===i.type&&(l.append(s),l.find(".layim-null")[0]&&l.find(".layim-null").remove())}},V=function(i){var a=x.find(".layim-list-"+i.type);j[i.type]&&("friend"===i.type?layui.each(j.friend,function(e,t){layui.each(t.list,function(t,n){if(i.id==n.id){var l=a.find(">li").eq(e);l.find(".layui-layim-list>li");return l.find(".layui-layim-list>li").eq(t).remove(),j.friend[e].list.splice(t,1),l.find(".layim-count").html(j.friend[e].list.length),0===j.friend[e].list.length&&l.find(".layui-layim-list").html('<li class="layim-null">该分组下已无好友了</li>'),!0}})}):"group"===i.type&&layui.each(j.group,function(e,t){if(i.id==t.id)return a.find(">li").eq(e).remove(),j.group.splice(e,1),0===j.group.length&&a.html('<li class="layim-null">暂无群组</li>'),!0}))},W=function(){var i=O(),a=i.elem.find(".layim-chat-main"),e=a.find("ul"),t=e.find("li").length;if(t>=r){var n=e.find("li").eq(0);e.prev().hasClass("layim-chat-system")||e.before('<div class="layim-chat-system"><span layim-event="chatLog">查看更多记录</span></div>'),t>r&&n.remove()}a.scrollTop(a[0].scrollHeight+1e3),a.find("ul li:last").find("img").load(function(){a.scrollTop(a[0].scrollHeight)})},Z=function(){var i=O(),a=i.textarea;a.focus(),a.off("keydown").on("keydown",function(i){var e=layui.data("layim")[j.mine.id]||{},t=i.keyCode;if("Ctrl+Enter"===e.sendHotKey)return void(i.ctrlKey&&13===t&&D());if(13===t){if(i.ctrlKey)return a.val(a.val()+"\n");if(i.shiftKey)return;i.preventDefault(),D()}})},Q=function(){var i=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],a={};return layui.each(i,function(i,e){a[e]=layui.cache.dir+"images/face/"+i+".gif"}),a}(),X=layui.stope,ii=function(i,a){var e,t=i.value;i.focus(),document.selection?(e=document.selection.createRange(),document.selection.empty(),e.text=a):(e=[t.substring(0,i.selectionStart),a,t.substr(i.selectionEnd)],i.focus(),i.value=e.join(""))},ai="layui-anim-upbit",ei={status:function(i,a){var t=function(){i.next().hide().removeClass(ai)},n=i.attr("lay-type");if("show"===n)X(a),i.next().show().addClass(ai),e(document).off("click",t).on("click",t);else{var l=i.parent().prev();i.addClass(o).siblings().removeClass(o),l.html(i.find("cite").html()),l.removeClass("layim-status-"+("online"===n?"hide":"online")).addClass("layim-status-"+n),layui.each(d.online,function(i,a){a&&a(n)})}},sign:function(){var i=x.find(".layui-layim-remark");i.on("change",function(){var i=this.value;layui.each(d.sign,function(a,e){e&&e(i)})}),i.on("keyup",function(i){var a=i.keyCode;13===a&&this.blur()})},tab:function(i){var a,e=".layim-tab-content",t=x.find(".layui-layim-tab>li");"number"==typeof i?(a=i,i=t.eq(a)):a=i.index(),a>2?t.removeClass(o):(ei.tab.index=a,i.addClass(o).siblings().removeClass(o)),x.find(e).eq(a).addClass(s).siblings(e).removeClass(s)},spread:function(i){var a=i.attr("lay-type"),e="true"===a?"false":"true",t=layui.data("layim")[j.mine.id]||{};i.next()["true"===a?"removeClass":"addClass"](s),t["spread"+i.parent().index()]=e,layui.data("layim",{key:j.mine.id,value:t}),i.attr("lay-type",e),i.find(".layui-icon").html("true"===e?"&#xe61a;":"&#xe602;")},search:function(i){var a=x.find(".layui-layim-search"),e=x.find("#layui-layim-search"),t=a.find("input"),n=function(i){var a=t.val().replace(/\s/);if(""===a)ei.tab(0|ei.tab.index);else{for(var n=[],l=j.friend||[],s=j.group||[],o="",r=0;r<l.length;r++)for(var d=0;d<(l[r].list||[]).length;d++)l[r].list[d].username.indexOf(a)!==-1&&(l[r].list[d].type="friend",l[r].list[d].index=r,l[r].list[d].list=d,n.push(l[r].list[d]));for(var c=0;c<s.length;c++)s[c].groupname.indexOf(a)!==-1&&(s[c].type="group",s[c].index=c,s[c].list=c,n.push(s[c]));if(n.length>0)for(var u=0;u<n.length;u++)o+='<li layim-event="chat" data-type="'+n[u].type+'" data-index="'+n[u].index+'" data-list="'+n[u].list+'"><img src="'+n[u].avatar+'"><span>'+(n[u].username||n[u].groupname||"游客")+"</span><p>"+(n[u].remark||n[u].sign||"")+"</p></li>";else o='<li class="layim-null">无搜索结果</li>';e.html(o),ei.tab(3)}};!j.base.isfriend&&j.base.isgroup?ei.tab.index=1:j.base.isfriend||j.base.isgroup||(ei.tab.index=2),a.show(),t.focus(),t.off("keyup",n).on("keyup",n)},closeSearch:function(i){i.parent().hide(),ei.tab(0|ei.tab.index)},msgbox:function(){var i=x.find(".layim-tool-msgbox");return t.close(ei.msgbox.index),i.find("span").removeClass($).html(""),ei.msgbox.index=t.open({type:2,title:"消息盒子",shade:!1,maxmin:!0,area:["600px","520px"],skin:"layui-box layui-layer-border",resize:!1,content:j.base.msgbox})},find:function(){return t.close(ei.find.index),ei.find.index=t.open({type:2,title:"查找",shade:!1,maxmin:!0,area:["1000px","520px"],skin:"layui-box layui-layer-border",resize:!1,content:j.base.find})},skin:function(){t.open({type:1,title:"更换背景",shade:!1,area:"300px",skin:"layui-box layui-layer-border",id:"layui-layim-skin",zIndex:66666666,resize:!1,content:n(m).render({skin:j.base.skin})})},about:function(){t.alert("版本: "+a+'<br>版权所有:<a href="http://layim.layui.com" target="_blank">layim.layui.com</a>',{title:"关于 LayIM",shade:!1})},setSkin:function(i){var a=i.attr("src"),e=layui.data("layim")[j.mine.id]||{};e.skin=a,a||delete e.skin,layui.data("layim",{key:j.mine.id,value:e});try{x.css({"background-image":a?"url("+a+")":"none"}),w.css({"background-image":a?"url("+a+")":"none"})}catch(t){}},chat:function(i){var a=layui.data("layim")[j.mine.id]||{},e=i.data("type"),t=i.data("index"),n=i.attr("data-list")||i.index(),l={};"friend"===e?l=j[e][t].list[n]:"group"===e?l=j[e][n]:"history"===e&&(l=(a.history||{})[t]||{}),l.name=l.name||l.username||l.groupname,"history"!==e&&(l.type=e),T(l)},tabChat:function(i){M(i)},closeChat:function(i){M(i.parent(),1)},closeThisChat:function(){M(null,1)},groupMembers:function(i,a){var n=i.find(".layui-icon"),l=function(){n.html("&#xe61a;"),i.data("down",null),t.close(ei.groupMembers.index)},s=function(i){X(i)};i.data("down")?l():(n.html("&#xe619;"),i.data("down",!0),ei.groupMembers.index=t.tips('<ul class="layim-members-list"></ul>',i,{tips:3,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-members",success:function(a){var t=j.base.members||{},n=O(),s=a.find(".layim-members-list"),o="",r={},c=w.find(".layui-layer-max").hasClass("layui-layer-maxmin"),u="none"===w.find(".layim-chat-list").css("display");c&&s.css({width:e(window).width()-22-(u||200)}),t.data=e.extend(t.data,{id:n.data.id}),S(t,function(a){layui.each(a.list,function(i,a){o+='<li data-uid="'+a.id+'"><a href="javascript:;"><img src="'+a.avatar+'"><cite>'+a.username+"</cite></a></li>",r[a.id]=a}),s.html(o),i.find(".layim-chat-members").html(a.members||(a.list||[]).length+"人"),s.find("li").on("click",function(){var i=e(this).data("uid"),a=r[i];T({name:a.username,type:"friend",avatar:a.avatar,id:a.id}),l()}),layui.each(d.members,function(i,e){e&&e(a)})}),a.on("mousedown",function(i){X(i)})}}),e(document).off("mousedown",l).on("mousedown",l),e(window).off("resize",l).on("resize",l),i.off("mousedown",s).on("mousedown",s))},send:function(){D()},setSend:function(i,a){var t=ei.setSend.box=i.siblings(".layim-menu-box"),n=i.attr("lay-type");if("show"===n)X(a),t.show().addClass(ai),e(document).off("click",ei.setSendHide).on("click",ei.setSendHide);else{i.addClass(o).siblings().removeClass(o);var l=layui.data("layim")[j.mine.id]||{};l.sendHotKey=n,layui.data("layim",{key:j.mine.id,value:l}),ei.setSendHide(a,i.parent())}},setSendHide:function(i,a){(a||ei.setSend.box).hide().removeClass(ai)},face:function(i,a){var n="",l=O();for(var s in Q)n+='<li title="'+s+'"><img src="'+Q[s]+'"></li>';n='<ul class="layui-clear layim-face-list">'+n+"</ul>",ei.face.index=t.tips(n,i,{tips:1,time:0,fixed:!0,skin:"layui-box layui-layim-face",success:function(i){i.find(".layim-face-list>li").on("mousedown",function(i){X(i)}).on("click",function(){ii(l.textarea[0],"face"+this.title+" "),t.close(ei.face.index)})}}),e(document).off("mousedown",ei.faceHide).on("mousedown",ei.faceHide),e(window).off("resize",ei.faceHide).on("resize",ei.faceHide),X(a)},faceHide:function(){t.close(ei.face.index)},image:function(i){var a=i.data("type")||"images",e={images:"uploadImage",file:"uploadFile"},n=O(),l=j.base[e[a]]||{};layui.upload({url:l.url||"",method:l.type,elem:i.find("input")[0],unwrap:!0,type:a,success:function(i){0==i.code?(i.data=i.data||{},"images"===a?ii(n.textarea[0],"img["+(i.data.src||"")+"]"):"file"===a&&ii(n.textarea[0],"file("+(i.data.src||"")+")["+(i.data.name||"下载文件")+"]"),D()):t.msg(i.msg||"上传失败")}})},extend:function(i){var a=i.attr("lay-filter"),e=O();layui.each(d["tool("+a+")"],function(a,t){t&&t.call(i,function(i){ii(e.textarea[0],i)},D,e)})},chatLog:function(i){var a=O();return j.base.chatLog?(t.close(ei.chatLog.index),ei.chatLog.index=t.open({type:2,maxmin:!0,title:"与 "+a.data.name+" 的聊天记录",area:["450px","100%"],shade:!1,offset:"rb",skin:"layui-box",anim:2,id:"layui-layim-chatlog",content:j.base.chatLog+"?id="+a.data.id+"&type="+a.data.type})):t.msg("未开启更多聊天记录")},menuHistory:function(i,a){var n=layui.data("layim")[j.mine.id]||{},l=i.parent(),s=i.data("type"),o=x.find(".layim-list-history"),r='<li class="layim-null">暂无历史会话</li>'; "{{# }; }}","{{# layui.each(d.base.tool, function(index, item){ }}",'<span class="layui-icon layim-tool-{{item.alias}}" title="{{item.title}}" layim-event="extend" lay-filter="{{ item.alias }}">{{item.icon}}</span>',"{{# }); }}","{{# if(d.base && d.base.chatLog){ }}",'<span class="layim-tool-log" layim-event="chatLog"><i class="layui-icon">&#xe60e;</i>聊天记录</span>',"{{# }; }}","</div>",'<div class="layim-chat-textarea"><textarea></textarea></div>','<div class="layim-chat-bottom">','<div class="layim-chat-send">',"{{# if(!d.base.brief){ }}",'<span class="layim-send-close" layim-event="closeThisChat">关闭</span>',"{{# } }}",'<span class="layim-send-btn" layim-event="send">发送</span>','<span class="layim-send-set" layim-event="setSend" lay-type="show"><em class="layui-edge"></em></span>','<ul class="layui-anim layim-menu-box">','<li {{d.local.sendHotKey !== "Ctrl+Enter" ? "class=layim-this" : ""}} layim-event="setSend" lay-type="Enter"><i class="layui-icon">&#xe618;</i>按Enter键发送消息</li>','<li {{d.local.sendHotKey === "Ctrl+Enter" ? "class=layim-this" : ""}} layim-event="setSend" lay-type="Ctrl+Enter"><i class="layui-icon">&#xe618;</i>按Ctrl+Enter键发送消息</li>',"</ul>","</div>","</div>","</div>","</div>"].join(""),p=['<div class="layim-add-box">','<div class="layim-add-img"><img class="layui-circle" src="{{ d.data.avatar }}"><p>{{ d.data.name||"" }}</p></div>','<div class="layim-add-remark">','{{# if(d.data.type === "friend" && d.type === "setGroup"){ }}',"<p>选择分组</p>",'{{# } if(d.data.type === "friend"){ }}','<select class="layui-select" id="LAY_layimGroup">',"{{# layui.each(d.data.group, function(index, item){ }}",'<option value="{{ item.id }}">{{ item.groupname }}</option>',"{{# }); }}","</select>","{{# } }}",'{{# if(d.data.type === "group"){ }}',"<p>请输入验证信息</p>",'{{# } if(d.type !== "setGroup"){ }}','<textarea id="LAY_layimRemark" placeholder="验证信息" class="layui-textarea"></textarea>',"{{# } }}","</div>","</div>"].join(""),h=['<li {{ d.mine ? "class=layim-chat-mine" : "" }} {{# if(d.cid){ }}data-cid="{{d.cid}}"{{# } }}>','<div class="layim-chat-user"><img src="{{ d.avatar }}"><cite>',"{{# if(d.mine){ }}",'<i>{{ layui.data.date(d.timestamp) }}</i>{{ d.username||"游客" }}',"{{# } else { }}",'{{ d.username||"游客" }}<i>{{ layui.data.date(d.timestamp) }}</i>',"{{# } }}","</cite></div>",'<div class="layim-chat-text">{{ layui.data.content(d.content||"&nbsp") }}</div>',"</li>"].join(""),v='<li class="layim-chatlist-{{ d.data.type }}{{ d.data.id }} layim-this" layim-event="tabChat"><img src="{{ d.data.avatar }}"><span>{{ d.data.name||"游客" }}</span>{{# if(!d.base.brief){ }}<i class="layui-icon" layim-event="closeChat">&#x1007;</i>{{# } }}</li>',g=function(i){return i<10?"0"+(0|i):i};layui.data.date=function(i){var a=new Date(i||new Date);return a.getFullYear()+"-"+g(a.getMonth()+1)+"-"+g(a.getDate())+" "+g(a.getHours())+":"+g(a.getMinutes())+":"+g(a.getSeconds())},layui.data.content=function(i){var a=function(i){return new RegExp("\\n*\\["+(i||"")+"(pre|div|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*","g")};return i=(i||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;").replace(/@(\S+)(\s+?|$)/g,'@<a href="javascript:;">$1</a>$2').replace(/\s{2}/g,"&nbsp").replace(/img\[([^\s]+?)\]/g,function(i){return'<img class="layui-layim-photos" src="'+i.replace(/(^img\[)|(\]$)/g,"")+'">'}).replace(/file\([\s\S]+?\)\[[\s\S]*?\]/g,function(i){var a=(i.match(/file\(([\s\S]+?)\)\[/)||[])[1],e=(i.match(/\)\[([\s\S]*?)\]/)||[])[1];return a?'<a class="layui-layim-file" href="'+a+'" download target="_blank"><i class="layui-icon">&#xe61e;</i><cite>'+(e||a)+"</cite></a>":i}).replace(/face\[([^\s\[\]]+?)\]/g,function(i){var a=i.replace(/^face/g,"");return'<img alt="'+a+'" title="'+a+'" src="'+Q[a]+'">'}).replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g,function(i){var a=(i.match(/a\(([\s\S]+?)\)\[/)||[])[1],e=(i.match(/\)\[([\s\S]*?)\]/)||[])[1];return a?'<a href="'+a+'" target="_blank">'+(e||a)+"</a>":i}).replace(a(),"<$1 $2>").replace(a("/"),"</$1>").replace(/\n/g,"<br>")};var x,b,w,k,C,S=function(i,a,n){return i=i||{},e.ajax({url:i.url,type:i.type||"get",data:i.data,dataType:i.dataType||"json",cache:!1,success:function(i){0==i.code?a&&a(i.data||{}):t.msg(i.msg||(n||"Error")+": LAYIM_NOT_GET_DATA",{time:5e3})},error:function(i,a){window.console&&console.log&&console.error("LAYIM_DATE_ERROR:"+a)}})},j={message:{},chat:[]},H=function(i){var a=i.init||{};return mine=a.mine||{},local=layui.data("layim")[mine.id]||{},obj={base:i,local:local,mine:mine,history:local.history||{}},create=function(a){var t=a.mine||{},l=layui.data("layim")[t.id]||{},s={base:i,local:l,mine:t,friend:a.friend||[],group:a.group||[],history:l.history||{}};j=e.extend(j,s),L(n(y).render(s)),(l.close||i.min)&&I(),layui.each(d.ready,function(i,a){a&&a(s)})},j=e.extend(j,obj),i.brief?layui.each(d.ready,function(i,a){a&&a(obj)}):void(a.url?S(a,create,"INIT"):create(a))},L=function(i){return t.open({type:1,area:["260px","520px"],skin:"layui-box layui-layim",title:"&#8203;",offset:"rb",id:"layui-layim",shade:!1,anim:2,resize:!1,content:i,success:function(i){x=i,_(i),j.base.right&&i.css("margin-left","-"+j.base.right),b&&t.close(b.attr("times"));var a=[],n=i.find(".layim-list-history");n.find("li").each(function(){a.push(e(this).prop("outerHTML"))}),a.length>0&&(a.reverse(),n.html(a.join(""))),z(),ei.sign()},cancel:function(i){I();var a=layui.data("layim")[j.mine.id]||{};return a.close=!0,layui.data("layim",{key:j.mine.id,value:a}),!1}})},z=function(){x.on("contextmenu",function(i){return i.cancelBubble=!0,i.returnValue=!1,!1});var i=function(){t.closeAll("tips")};x.find(".layim-list-history").on("contextmenu","li",function(a){var n=e(this),l='<ul data-id="'+n[0].id+'" data-index="'+n.data("index")+'"><li layim-event="menuHistory" data-type="one">移除该会话</li><li layim-event="menuHistory" data-type="all">清空全部会话列表</li></ul>';n.hasClass("layim-null")||(t.tips(l,this,{tips:1,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-contextmenu",success:function(i){var a=function(i){X(i)};i.off("mousedown",a).on("mousedown",a)}}),e(document).off("mousedown",i).on("mousedown",i),e(window).off("resize",i).on("resize",i))})},I=function(i){return b&&t.close(b.attr("times")),x&&x.hide(),j.mine=j.mine||{},t.open({type:1,title:!1,id:"layui-layim-close",skin:"layui-box layui-layim-min layui-layim-close",shade:!1,closeBtn:!1,anim:2,offset:"rb",resize:!1,content:'<img src="'+(j.mine.avatar||layui.cache.dir+"css/pc/layim/skin/logo.jpg")+'"><span>'+(i||j.base.title||"我的LayIM")+"</span>",move:"#layui-layim-close img",success:function(i,a){b=i,j.base.right&&i.css("margin-left","-"+j.base.right),i.on("click",function(){t.close(a),x.show();var i=layui.data("layim")[j.mine.id]||{};delete i.close,layui.data("layim",{key:j.mine.id,value:i})})}})},T=function(i){i=i||{};var a=e("#layui-layim-chat"),l={data:i,base:j.base,local:j.local};if(!i.id)return t.msg("非法用户");if(a[0]){var s=w.find(".layim-chat-list"),o=s.find(".layim-chatlist-"+i.type+i.id),r=w.find(".layui-layer-max").hasClass("layui-layer-maxmin"),c=a.children(".layim-chat-box");return"none"===w.css("display")&&w.show(),k&&t.close(k.attr("times")),1!==s.find("li").length||o[0]||(r||w.css("width",800),s.css({height:w.height()}).show(),c.css("margin-left","200px")),o[0]||(s.append(n(v).render(l)),c.append(n(f).render(l)),N()),M(s.find(".layim-chatlist-"+i.type+i.id)),o[0]||P(),R(i),Z(),C}l.first=!0;var u=C=t.open({type:1,area:"600px",skin:"layui-box layui-layim-chat",id:"layui-layim-chat",title:"&#8203;",shade:!1,maxmin:!0,offset:i.offset||"auto",anim:i.anim||0,closeBtn:!j.base.brief&&1,content:n('<ul class="layui-unselect layim-chat-list">'+v+'</ul><div class="layim-chat-box">'+f+"</div>").render(l),success:function(a){w=a,a.css({"min-width":"500px","min-height":"420px"}),"function"==typeof i.success&&i.success(a),Z(),_(a),R(i),P(),q(),layui.each(d.chatChange,function(i,a){a&&a(O())}),a.on("dblclick",".layui-layim-photos",function(){var i=this.src;t.close(T.photosIndex),t.photos({photos:{data:[{alt:"大图模式",src:i}]},shade:.01,closeBtn:2,anim:0,resize:!1,success:function(i,a){T.photosIndex=a}})})},full:function(i){t.style(u,{width:"100%",height:"100%"},!0),N()},resizing:N,restore:N,min:function(){return A(),!1},end:function(){t.closeAll("tips"),w=null}});return u},N=function(){var i=w.find(".layim-chat-list"),a=w.find(".layim-chat-main"),e=w.height();i.css({height:e}),a.css({height:e-20-80-158})},A=function(i){var a=i||O().data,n=layui.layim.cache().base;w&&!i&&w.hide(),t.close(A.index),A.index=t.open({type:1,title:!1,skin:"layui-box layui-layim-min",shade:!1,closeBtn:!1,anim:a.anim||2,offset:"b",move:"#layui-layim-min",resize:!1,area:["182px","50px"],content:'<img id="layui-layim-min" src="'+a.avatar+'"><span>'+a.name+"</span>",success:function(a,l){i||(k=a),n.minRight&&t.style(l,{left:e(window).width()-a.outerWidth()-parseFloat(n.minRight)}),a.find(".layui-layer-content span").on("click",function(){t.close(l),i?layui.each(j.chat,function(i,a){T(a)}):w.show(),i&&(j.chat=[],W())}),a.find(".layui-layer-content img").on("click",function(i){X(i)})}})},E=function(i,a){return i=i||{},t.close(E.index),E.index=t.open({type:1,area:"430px",title:{friend:"添加好友",group:"加入群组"}[i.type]||"",shade:!1,resize:!1,btn:a?["确认","取消"]:["发送申请","关闭"],content:n(p).render({data:{name:i.username||i.groupname,avatar:i.avatar,group:i.group||parent.layui.layim.cache().friend||[],type:i.type},type:a}),yes:function(e,t){var n=t.find("#LAY_layimGroup"),l=t.find("#LAY_layimRemark");a?i.submit&&i.submit(n.val(),e):i.submit&&i.submit(n.val(),l.val(),e)}})},M=function(i,a){i=i||e(".layim-chat-list ."+o);var n=i.index()===-1?0:i.index(),l=".layim-chat",r=w.find(l).eq(n),c=w.find(".layui-layer-max").hasClass("layui-layer-maxmin");if(a){i.hasClass(o)&&M(0===n?i.next():i.prev()),i.remove(),r.remove();var u=w.find(l).length;return 1===u&&(w.find(".layim-chat-list").hide(),c||w.css("width","600px"),w.find(".layim-chat-box").css("margin-left",0)),0===u&&t.close(C),!1}i.addClass(o).siblings().removeClass(o),r.addClass(s).siblings(l).removeClass(s),r.find("textarea").focus(),layui.each(d.chatChange,function(i,a){a&&a(O())}),q()},q=function(){var i=O(),a=j.message[i.data.type+i.data.id];a&&delete j.message[i.data.type+i.data.id]},O=function(){if(w){var i=e(".layim-chat-list ."+o).index(),a=w.find(".layim-chat").eq(i),t=JSON.parse(decodeURIComponent(a.find(".layim-chat-tool").data("json")));return{elem:a,data:t,textarea:a.find("textarea")}}},_=function(i){var a=layui.data("layim")[j.mine.id]||{},e=a.skin;i.css({"background-image":e?"url("+e+")":function(){return j.base.initSkin?"url("+(layui.cache.dir+"css/modules/layim/skin/"+j.base.initSkin)+")":"none"}()})},R=function(i){var a=layui.data("layim")[j.mine.id]||{},e={},t=a.history||{},l=t[i.type+i.id];if(x){var s=x.find(".layim-list-history");if(i.historyTime=(new Date).getTime(),t[i.type+i.id]=i,a.history=t,layui.data("layim",{key:j.mine.id,value:a}),!l){e[i.type+i.id]=i;var o=n(u({type:"history",item:"d.data"})).render({data:e});s.prepend(o),s.find(".layim-null").remove()}}},D=function(){var i={username:j.mine?j.mine.username:"访客",avatar:j.mine?j.mine.avatar:layui.cache.dir+"css/pc/layim/skin/logo.jpg",id:j.mine?j.mine.id:null,mine:!0},a=O(),e=a.elem.find(".layim-chat-main ul"),l=j.base.maxLength||3e3;if(i.content=a.textarea.val(),""!==i.content.replace(/\s/g,"")){if(i.content.length>l)return t.msg("内容最长不能超过"+l+"个字符");e.append(n(h).render(i));var s={mine:i,to:a.data},o={username:s.mine.username,avatar:s.mine.avatar,id:s.to.id,type:s.to.type,content:s.mine.content,timestamp:(new Date).getTime(),mine:!0};B(o),layui.each(d.sendMessage,function(i,a){a&&a(s)})}W(),a.textarea.val("").focus()},J=function(i){if(i=i||{},window.Notification)if("granted"===Notification.permission){new Notification(i.title||"",{body:i.content||"",icon:i.avatar||"http://tp2.sinaimg.cn/5488749285/50/5719808192/1"})}else Notification.requestPermission()},G=function(){if(!(l.ie&&l.ie<9)){var i=document.createElement("audio");i.src=layui.cache.dir+"css/modules/layim/voice/"+j.base.voice,i.play()}},K={},Y=function(i){i=i||{};var a=e(".layim-chatlist-"+i.type+i.id),t={},l=a.index();if(i.timestamp=i.timestamp||(new Date).getTime(),i.fromid==j.mine.id&&(i.mine=!0),i.system||B(i),K=JSON.parse(JSON.stringify(i)),j.base.voice&&G(),!w&&i.content||l===-1){if(j.message[i.type+i.id])j.message[i.type+i.id].push(i);else if(j.message[i.type+i.id]=[i],"friend"===i.type){var s;layui.each(j.friend,function(a,e){if(layui.each(e.list,function(a,e){if(e.id==i.id)return e.type="friend",e.name=e.username,j.chat.push(e),s=!0}),s)return!0}),s||(i.name=i.username,i.temporary=!0,j.chat.push(i))}else if("group"===i.type){var o;layui.each(j.group,function(a,e){if(e.id==i.id)return e.type="group",e.name=e.groupname,j.chat.push(e),o=!0}),o||(i.name=i.groupname,j.chat.push(i))}else i.name=i.name||i.username||i.groupname,j.chat.push(i);if("group"===i.type&&layui.each(j.group,function(a,e){if(e.id==i.id)return t.avatar=e.avatar,!0}),!i.system)return j.base.notice&&J({title:"来自 "+i.username+" 的消息",content:i.content,avatar:t.avatar||i.avatar}),A({name:"收到新消息",avatar:t.avatar||i.avatar,anim:6})}if(w){var r=O();r.data.type+r.data.id!==i.type+i.id&&(a.addClass("layui-anim layer-anim-06"),setTimeout(function(){a.removeClass("layui-anim layer-anim-06")},300));var d=w.find(".layim-chat").eq(l),c=d.find(".layim-chat-main ul");i.system?l!==-1&&c.append('<li class="layim-chat-system"><span>'+i.content+"</span></li>"):""!==i.content.replace(/\s/g,"")&&c.append(n(h).render(i)),W()}},$="layui-anim-loop layer-anim-05",F=function(i){var a=x.find(".layim-tool-msgbox");a.find("span").addClass($).html(i)},B=function(i){var a=layui.data("layim")[j.mine.id]||{};a.chatlog=a.chatlog||{};var e=a.chatlog[i.type+i.id];if(e){var t;layui.each(e,function(a,e){e.timestamp===i.timestamp&&e.type===i.type&&e.id===i.id&&e.content===i.content&&(t=!0)}),t||i.fromid==j.mine.id||e.push(i),e.length>r&&e.shift()}else a.chatlog[i.type+i.id]=[i];layui.data("layim",{key:j.mine.id,value:a})},P=function(){var i=layui.data("layim")[j.mine.id]||{},a=O(),e=i.chatlog||{},t=a.elem.find(".layim-chat-main ul");layui.each(e[a.data.type+a.data.id],function(i,a){t.append(n(h).render(a))}),W()},U=function(i){var a,e={},l=x.find(".layim-list-"+i.type);if(j[i.type])if("friend"===i.type)layui.each(j.friend,function(n,l){if(i.groupid==l.id)return layui.each(j.friend[n].list,function(e,t){if(t.id==i.id)return a=!0}),a?t.msg("好友 ["+(i.username||"")+"] 已经存在列表中",{anim:6}):(j.friend[n].list=j.friend[n].list||[],e[j.friend[n].list.length]=i,i.groupIndex=n,j.friend[n].list.push(i),!0)});else if("group"===i.type){if(layui.each(j.group,function(e,t){if(t.id==i.id)return a=!0}),a)return t.msg("您已是 ["+(i.groupname||"")+"] 的群成员",{anim:6});e[j.group.length]=i,j.group.push(i)}if(!a){var s=n(u({type:i.type,item:"d.data",index:"friend"===i.type?"data.groupIndex":null})).render({data:e});if("friend"===i.type){var o=l.find(">li").eq(i.groupIndex);o.find(".layui-layim-list").append(s),o.find(".layim-count").html(j.friend[i.groupIndex].list.length),o.find(".layim-null")[0]&&o.find(".layim-null").remove()}else"group"===i.type&&(l.append(s),l.find(".layim-null")[0]&&l.find(".layim-null").remove())}},V=function(i){var a=x.find(".layim-list-"+i.type);j[i.type]&&("friend"===i.type?layui.each(j.friend,function(e,t){layui.each(t.list,function(t,n){if(i.id==n.id){var l=a.find(">li").eq(e);l.find(".layui-layim-list>li");return l.find(".layui-layim-list>li").eq(t).remove(),j.friend[e].list.splice(t,1),l.find(".layim-count").html(j.friend[e].list.length),0===j.friend[e].list.length&&l.find(".layui-layim-list").html('<li class="layim-null">该分组下已无好友了</li>'),!0}})}):"group"===i.type&&layui.each(j.group,function(e,t){if(i.id==t.id)return a.find(">li").eq(e).remove(),j.group.splice(e,1),0===j.group.length&&a.html('<li class="layim-null">暂无群组</li>'),!0}))},W=function(){var i=O(),a=i.elem.find(".layim-chat-main"),e=a.find("ul"),t=e.find("li").length;if(t>=r){var n=e.find("li").eq(0);e.prev().hasClass("layim-chat-system")||e.before('<div class="layim-chat-system"><span layim-event="chatLog">查看更多记录</span></div>'),t>r&&n.remove()}a.scrollTop(a[0].scrollHeight+1e3),a.find("ul li:last").find("img").load(function(){a.scrollTop(a[0].scrollHeight)})},Z=function(){var i=O(),a=i.textarea;a.focus(),a.off("keydown").on("keydown",function(i){var e=layui.data("layim")[j.mine.id]||{},t=i.keyCode;if("Ctrl+Enter"===e.sendHotKey)return void(i.ctrlKey&&13===t&&D());if(13===t){if(i.ctrlKey)return a.val(a.val()+"\n");if(i.shiftKey)return;i.preventDefault(),D()}})},Q=function(){var i=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],a={};return layui.each(i,function(i,e){a[e]=layui.cache.dir+"images/face/"+i+".gif"}),a}(),X=layui.stope,ii=function(i,a){var e,t=i.value;i.focus(),document.selection?(e=document.selection.createRange(),document.selection.empty(),e.text=a):(e=[t.substring(0,i.selectionStart),a,t.substr(i.selectionEnd)],i.focus(),i.value=e.join(""))},ai="layui-anim-upbit",ei={status:function(i,a){var t=function(){i.next().hide().removeClass(ai)},n=i.attr("lay-type");if("show"===n)X(a),i.next().show().addClass(ai),e(document).off("click",t).on("click",t);else{var l=i.parent().prev();i.addClass(o).siblings().removeClass(o),l.html(i.find("cite").html()),l.removeClass("layim-status-"+("online"===n?"hide":"online")).addClass("layim-status-"+n),layui.each(d.online,function(i,a){a&&a(n)})}},sign:function(){var i=x.find(".layui-layim-remark");i.on("change",function(){var i=this.value;layui.each(d.sign,function(a,e){e&&e(i)})}),i.on("keyup",function(i){var a=i.keyCode;13===a&&this.blur()})},tab:function(i){var a,e=".layim-tab-content",t=x.find(".layui-layim-tab>li");"number"==typeof i?(a=i,i=t.eq(a)):a=i.index(),a>2?t.removeClass(o):(ei.tab.index=a,i.addClass(o).siblings().removeClass(o)),x.find(e).eq(a).addClass(s).siblings(e).removeClass(s)},spread:function(i){var a=i.attr("lay-type"),e="true"===a?"false":"true",t=layui.data("layim")[j.mine.id]||{};i.next()["true"===a?"removeClass":"addClass"](s),t["spread"+i.parent().index()]=e,layui.data("layim",{key:j.mine.id,value:t}),i.attr("lay-type",e),i.find(".layui-icon").html("true"===e?"&#xe61a;":"&#xe602;")},search:function(i){var a=x.find(".layui-layim-search"),e=x.find("#layui-layim-search"),t=a.find("input"),n=function(i){var a=t.val().replace(/\s/);if(""===a)ei.tab(0|ei.tab.index);else{for(var n=[],l=j.friend||[],s=j.group||[],o="",r=0;r<l.length;r++)for(var d=0;d<(l[r].list||[]).length;d++)l[r].list[d].username.indexOf(a)!==-1&&(l[r].list[d].type="friend",l[r].list[d].index=r,l[r].list[d].list=d,n.push(l[r].list[d]));for(var c=0;c<s.length;c++)s[c].groupname.indexOf(a)!==-1&&(s[c].type="group",s[c].index=c,s[c].list=c,n.push(s[c]));if(n.length>0)for(var u=0;u<n.length;u++)o+='<li layim-event="chat" data-type="'+n[u].type+'" data-index="'+n[u].index+'" data-list="'+n[u].list+'"><img src="'+n[u].avatar+'"><span>'+(n[u].username||n[u].groupname||"游客")+"</span><p>"+(n[u].remark||n[u].sign||"")+"</p></li>";else o='<li class="layim-null">无搜索结果</li>';e.html(o),ei.tab(3)}};!j.base.isfriend&&j.base.isgroup?ei.tab.index=1:j.base.isfriend||j.base.isgroup||(ei.tab.index=2),a.show(),t.focus(),t.off("keyup",n).on("keyup",n)},closeSearch:function(i){i.parent().hide(),ei.tab(0|ei.tab.index)},msgbox:function(){var i=x.find(".layim-tool-msgbox");return t.close(ei.msgbox.index),i.find("span").removeClass($).html(""),ei.msgbox.index=t.open({type:2,title:"消息盒子",shade:!1,maxmin:!0,area:["600px","520px"],skin:"layui-box layui-layer-border",resize:!1,content:j.base.msgbox})},find:function(){return t.close(ei.find.index),ei.find.index=t.open({type:2,title:"查找",shade:!1,maxmin:!0,area:["1000px","520px"],skin:"layui-box layui-layer-border",resize:!1,content:j.base.find})},skin:function(){t.open({type:1,title:"更换背景",shade:!1,area:"300px",skin:"layui-box layui-layer-border",id:"layui-layim-skin",zIndex:66666666,resize:!1,content:n(m).render({skin:j.base.skin})})},about:function(){t.alert("版本: "+a+'<br>版权所有:<a href="http://layim.layui.com" target="_blank">layim.layui.com</a>',{title:"关于 LayIM",shade:!1})},setSkin:function(i){var a=i.attr("src"),e=layui.data("layim")[j.mine.id]||{};e.skin=a,a||delete e.skin,layui.data("layim",{key:j.mine.id,value:e});try{x.css({"background-image":a?"url("+a+")":"none"}),w.css({"background-image":a?"url("+a+")":"none"})}catch(t){}},chat:function(i){var a=layui.data("layim")[j.mine.id]||{},e=i.data("type"),t=i.data("index"),n=i.attr("data-list")||i.index(),l={};"friend"===e?l=j[e][t].list[n]:"group"===e?l=j[e][n]:"history"===e&&(l=(a.history||{})[t]||{}),l.name=l.name||l.username||l.groupname,"history"!==e&&(l.type=e),T(l)},tabChat:function(i){M(i)},closeChat:function(i){M(i.parent(),1)},closeThisChat:function(){M(null,1)},groupMembers:function(i,a){var n=i.find(".layui-icon"),l=function(){n.html("&#xe61a;"),i.data("down",null),t.close(ei.groupMembers.index)},s=function(i){X(i)};i.data("down")?l():(n.html("&#xe619;"),i.data("down",!0),ei.groupMembers.index=t.tips('<ul class="layim-members-list"></ul>',i,{tips:3,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-members",success:function(a){var t=j.base.members||{},n=O(),s=a.find(".layim-members-list"),o="",r={},c=w.find(".layui-layer-max").hasClass("layui-layer-maxmin"),u="none"===w.find(".layim-chat-list").css("display");c&&s.css({width:e(window).width()-22-(u||200)}),t.data=e.extend(t.data,{id:n.data.id}),S(t,function(a){layui.each(a.list,function(i,a){o+='<li data-uid="'+a.id+'"><a href="javascript:;"><img src="'+a.avatar+'"><cite>'+a.username+"</cite></a></li>",r[a.id]=a}),s.html(o),i.find(".layim-chat-members").html(a.members||(a.list||[]).length+"人"),s.find("li").on("click",function(){var i=e(this).data("uid"),a=r[i];T({name:a.username,type:"friend",avatar:a.avatar,id:a.id}),l()}),layui.each(d.members,function(i,e){e&&e(a)})}),a.on("mousedown",function(i){X(i)})}}),e(document).off("mousedown",l).on("mousedown",l),e(window).off("resize",l).on("resize",l),i.off("mousedown",s).on("mousedown",s))},send:function(){D()},setSend:function(i,a){var t=ei.setSend.box=i.siblings(".layim-menu-box"),n=i.attr("lay-type");if("show"===n)X(a),t.show().addClass(ai),e(document).off("click",ei.setSendHide).on("click",ei.setSendHide);else{i.addClass(o).siblings().removeClass(o);var l=layui.data("layim")[j.mine.id]||{};l.sendHotKey=n,layui.data("layim",{key:j.mine.id,value:l}),ei.setSendHide(a,i.parent())}},setSendHide:function(i,a){(a||ei.setSend.box).hide().removeClass(ai)},face:function(i,a){var n="",l=O();for(var s in Q)n+='<li title="'+s+'"><img src="'+Q[s]+'"></li>';n='<ul class="layui-clear layim-face-list">'+n+"</ul>",ei.face.index=t.tips(n,i,{tips:1,time:0,fixed:!0,skin:"layui-box layui-layim-face",success:function(i){i.find(".layim-face-list>li").on("mousedown",function(i){X(i)}).on("click",function(){ii(l.textarea[0],"face"+this.title+" "),t.close(ei.face.index)})}}),e(document).off("mousedown",ei.faceHide).on("mousedown",ei.faceHide),e(window).off("resize",ei.faceHide).on("resize",ei.faceHide),X(a)},faceHide:function(){t.close(ei.face.index)},image:function(i){var a=i.data("type")||"images",e={images:"uploadImage",file:"uploadFile"},n=O(),l=j.base[e[a]]||{};layui.upload({url:l.url||"",method:l.type,elem:i.find("input")[0],unwrap:!0,type:a,success:function(i){0==i.code?(i.data=i.data||{},"images"===a?ii(n.textarea[0],"img["+(i.data.src||"")+"]"):"file"===a&&ii(n.textarea[0],"file("+(i.data.src||"")+")["+(i.data.name||"下载文件")+"]"),D()):t.msg(i.msg||"上传失败")}})},extend:function(i){var a=i.attr("lay-filter"),e=O();layui.each(d["tool("+a+")"],function(a,t){t&&t.call(i,function(i){ii(e.textarea[0],i)},D,e)})},chatLog:function(i){var a=O();return j.base.chatLog?(t.close(ei.chatLog.index),ei.chatLog.index=t.open({type:2,maxmin:!0,title:"与 "+a.data.name+" 的聊天记录",area:["450px","100%"],shade:!1,offset:"rb",skin:"layui-box",anim:2,id:"layui-layim-chatlog",content:j.base.chatLog+"?id="+a.data.id+"&type="+a.data.type})):t.msg("未开启更多聊天记录")},menuHistory:function(i,a){var n=layui.data("layim")[j.mine.id]||{},l=i.parent(),s=i.data("type"),o=x.find(".layim-list-history"),r='<li class="layim-null">暂无历史会话</li>';
if("one"===s){var d=n.history;delete d[l.data("index")],n.history=d,layui.data("layim",{key:j.mine.id,value:n}),e("#"+l.data("id")).remove(),0===o.find("li").length&&o.html(r)}else"all"===s&&(delete n.history,layui.data("layim",{key:j.mine.id,value:n}),o.html(r));t.closeAll("tips")}};i("layim",new c)}).addcss("modules/layim/layim.css?v=3.01Pro","skinlayimcss"); if("one"===s){var d=n.history;delete d[l.data("index")],n.history=d,layui.data("layim",{key:j.mine.id,value:n}),e("#"+l.data("id")).remove(),0===o.find("li").length&&o.html(r)}else"all"===s&&(delete n.history,layui.data("layim",{key:j.mine.id,value:n}),o.html(r));t.closeAll("tips")}};i("layim",new c)}).addcss("modules/layim/layim.css?v=3.01Pro","skinlayimcss");
\ No newline at end of file
...@@ -9,5 +9,7 @@ public interface FilesInfoService { ...@@ -9,5 +9,7 @@ public interface FilesInfoService {
public String savePicture(MultipartFile file, String newname, String path); public String savePicture(MultipartFile file, String newname, String path);
public String saveFiles(MultipartFile file,String newname, String path) ; public String saveFiles(MultipartFile file,String newname, String path) ;
public String saveHeadPic(MultipartFile file, String newname, String path);
} }
...@@ -79,6 +79,28 @@ public class FilesInfoServiceImpl implements FilesInfoService { ...@@ -79,6 +79,28 @@ public class FilesInfoServiceImpl implements FilesInfoService {
} }
} }
return fileUrl; return fileUrl;
} }
@Override
public String saveHeadPic(MultipartFile file, String newname, String path) {
String fileUrl = "";
if(StringUtils.isEmpty(file.getOriginalFilename())){
return fileUrl;
}
String[] name= FileUtil.splitFileName(file.getOriginalFilename());
boolean b = FileUtil.validateImgType(name[1]);
//文件类型验证通过
if(b){
try{
File tempFile = new File(path, newname+"."+name[1]);
FileUtils.copyInputStreamToFile(file.getInputStream(),tempFile );
fileUrl = newname+"."+name[1];
//大图裁剪
}catch(Exception e){
e.printStackTrace();
}
}
return fileUrl;
}
} }
...@@ -12,6 +12,7 @@ import com.qiqiim.webserver.user.dao.UserAdminInfoDao; ...@@ -12,6 +12,7 @@ import com.qiqiim.webserver.user.dao.UserAdminInfoDao;
import com.qiqiim.webserver.user.model.*; import com.qiqiim.webserver.user.model.*;
import com.qiqiim.webserver.user.service.*; import com.qiqiim.webserver.user.service.*;
import org.apache.commons.lang.time.DateFormatUtils; import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.ibatis.annotations.Param;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -61,6 +62,30 @@ public class ImController extends BaseController { ...@@ -61,6 +62,30 @@ public class ImController extends BaseController {
private static Logger logger = LoggerFactory.getLogger(ImController.class); private static Logger logger = LoggerFactory.getLogger(ImController.class);
/**
* 列表
*/
@RequestMapping("/consultantlist")
public String consultantlist(@RequestParam Map<String, Object> params,HttpServletRequest request){
request.setAttribute("allsession", userAccountServiceImpl.getAllConsultant(0l));
return "user/consultantlist";
}
@RequestMapping("/consultantlist1")
public String consultantlist1(@RequestParam Map<String, Object> params,HttpServletRequest request){
request.setAttribute("allsession", userAccountServiceImpl.getAllConsultant(1l));
return "user/conljtycsultant";
}
@RequestMapping("/consultantlist3")
public String consultantlist3(@RequestParam Map<String, Object> params,HttpServletRequest request){
request.setAttribute("allsession", userAccountServiceImpl.getAllConsultant(3l));
return "user/conljjlwsultant";
}
@RequestMapping("/consultantlist4")
public String consultantlist4(@RequestParam Map<String, Object> params,HttpServletRequest request){
request.setAttribute("allsession", userAccountServiceImpl.getAllConsultant(4l));
return "user/conljjyfsultant";
}
/** /**
* 单聊 * 单聊
*/ */
...@@ -491,6 +516,86 @@ public class ImController extends BaseController { ...@@ -491,6 +516,86 @@ public class ImController extends BaseController {
} }
return resultList; return resultList;
} }
/**
* 头像上传
*
* @param file
* @param response
* @param request
* @param redirectAttributes
* @param uid
* @return
* @throws Exception
*/
@RequestMapping(value = "/headpicupload", produces = "multipart/form-data", method = RequestMethod.POST)
@ResponseBody
public ModelAndView uploadHeadPic(@RequestParam MultipartFile file,
HttpServletResponse response, HttpServletRequest request,
RedirectAttributes redirectAttributes, @Param(value = "fileName") Long uid,
@Param(value = "whereToGo") String whereToGo) throws Exception {
String fileName = uid + "hp";
String path = request.getSession().getServletContext().getRealPath("/layui/images/headpic/");
String files = filesInfoServiceImpl.saveHeadPic(file, fileName, path);
Map<String, Object> map = new HashMap<String, Object>();
Map<String, String> submap = new HashMap<String, String>();
if(whereToGo == null){
whereToGo = "";
}
if (files.length() > 0) {
userInfoServiceImpl.updateHeadPic("layui/images/headpic/" + fileName + ".jpg", uid);
return new ModelAndView("redirect:/consultantlist" + whereToGo);
}
return new ModelAndView("redirect:/consultantlist" + whereToGo);
}
@RequestMapping(value = "/updateConsultantDetail",produces = "text/html;charset=UTF-8", method = RequestMethod.POST)
public ModelAndView userHistoryMessagesPage(ConsultantManagerEntity consultantManagerEntity) throws Exception {
userAccountServiceImpl.updateDetail(consultantManagerEntity);
if(consultantManagerEntity.getWhereToGo() == null){
consultantManagerEntity.setWhereToGo("");
}
return new ModelAndView("redirect:/consultantlist" + consultantManagerEntity.getWhereToGo());
}
@RequestMapping(value = "/addConsultant", method = RequestMethod.POST)
public ModelAndView addConsultant(@Param(value = "whereToGo")String whereToGo,
@Param(value = "account")String account,
@Param(value = "password")String password,
@Param(value = "phone")String phone,
@Param(value = "deptid")Long deptid,
@Param(value = "name")String name){
UserAccountEntity userAccountEntity = new UserAccountEntity();
userAccountEntity.setAccount(account);
userAccountEntity.setPassword(password);
UserInfoEntity userInfoEntity = new UserInfoEntity();
userInfoEntity.setDeptid(deptid);
userInfoEntity.setName(name);
userInfoEntity.setPhone(phone);
userAccountEntity.setUserInfo(userInfoEntity);
userAccountServiceImpl.save(userAccountEntity);
if(whereToGo == null){
whereToGo = "";
}
return new ModelAndView("redirect:/consultantlist" + whereToGo);
}
@RequestMapping(value = "/delConsultant", method = RequestMethod.POST)
public ModelAndView delConsultant(@Param(value = "whereToGo")String whereToGo,
@Param(value = "id")long id){
userAdminInfoServiceImpl.delByUid(id);
userInfoServiceImpl.delByUid(id);
userAccountServiceImpl.delete(id);
if(whereToGo == null){
whereToGo = "";
}
return new ModelAndView("redirect:/consultantlist" + whereToGo);
}
} }
......
...@@ -35,7 +35,6 @@ public class SessionController extends BaseController{ ...@@ -35,7 +35,6 @@ public class SessionController extends BaseController{
private SessionManager sessionManager; private SessionManager sessionManager;
@Autowired @Autowired
private ImConnertor connertor; private ImConnertor connertor;
/** /**
...@@ -46,6 +45,8 @@ public class SessionController extends BaseController{ ...@@ -46,6 +45,8 @@ public class SessionController extends BaseController{
request.setAttribute("allsession", sessionManager.getSessions()); request.setAttribute("allsession", sessionManager.getSessions());
return "user/userlist"; return "user/userlist";
} }
/** /**
* 列表 * 列表
......
...@@ -3,7 +3,9 @@ import java.util.List; ...@@ -3,7 +3,9 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import com.qiqiim.webserver.base.dao.BaseDao; import com.qiqiim.webserver.base.dao.BaseDao;
import com.qiqiim.webserver.user.model.ConsultantManagerEntity;
import com.qiqiim.webserver.user.model.UserAccountEntity; import com.qiqiim.webserver.user.model.UserAccountEntity;
import org.apache.ibatis.annotations.Param;
/** /**
* 用户帐号 * 用户帐号
...@@ -20,4 +22,12 @@ public interface UserAccountDao extends BaseDao<UserAccountEntity> { ...@@ -20,4 +22,12 @@ public interface UserAccountDao extends BaseDao<UserAccountEntity> {
public List getAllLongTimeUserId(); public List getAllLongTimeUserId();
public int deleteLongTimeUser(List<Long> list); public int deleteLongTimeUser(List<Long> list);
public List<ConsultantManagerEntity> getAllConsultant(@Param(value = "tiaojian") String tiaojian);
public int updateConsultantDept(@Param(value = "deptName") String deptName, @Param(value = "id") long id);
public int updateConsultantPhone(@Param(value = "phone") String phone, @Param(value = "id") long id);
public int updateConsultantName(@Param(value = "name") String name, @Param(value = "id") long id);
} }
...@@ -21,6 +21,11 @@ ...@@ -21,6 +21,11 @@
<!-- 一对多查询 --> <!-- 一对多查询 -->
<!-- <collection property="*list" column="id" select="*"></collection> --> <!-- <collection property="*list" column="id" select="*"></collection> -->
</resultMap> </resultMap>
<resultMap id="consultantMap" type="com.qiqiim.webserver.user.model.ConsultantManagerEntity">
<result property="id" column="id"/>
<result property="account" column="account"/>
</resultMap>
<sql id="Base_Column_List" > <sql id="Base_Column_List" >
id , id ,
...@@ -131,4 +136,26 @@ ...@@ -131,4 +136,26 @@
#{arr} #{arr}
</foreach> </foreach>
</delete> </delete>
<select id="getAllConsultant" resultMap="consultantMap">
select ua.id, ua.account, ud.name as deptName, ui.name as name, ui.phone as phone, ui.profilephoto as headPic
from user_account ua
left join user_info ui on ua.id = ui.uid
left join user_department ud on ui.deptid = ud.id
where ${tiaojian}
</select>
<update id="updateConsultantName">
update user_info set name = #{name} where uid = #{id}
</update>
<update id="updateConsultantDept">
update user_info set deptid =
#{deptName}
where uid = #{id}
</update>
<update id="updateConsultantPhone">
update user_info set phone = #{phone} where uid = #{id}
</update>
</mapper> </mapper>
\ No newline at end of file
...@@ -18,4 +18,6 @@ public interface UserAdminInfoDao extends BaseDao<UserAdminInfoEntity> { ...@@ -18,4 +18,6 @@ public interface UserAdminInfoDao extends BaseDao<UserAdminInfoEntity> {
int save(long uid); int save(long uid);
List<UserAdminInfoEntity> sortOnlineAdmin(List list); List<UserAdminInfoEntity> sortOnlineAdmin(List list);
int delByUid(long uid);
} }
...@@ -57,4 +57,8 @@ ...@@ -57,4 +57,8 @@
<insert id="save"> <insert id="save">
INSERT INTO user_admin_info (uid,reply_user_num,reply_message_num) VALUE (#{uid},0,0); INSERT INTO user_admin_info (uid,reply_user_num,reply_message_num) VALUE (#{uid},0,0);
</insert> </insert>
<delete id="delByUid">
delete from user_admin_info where uid = #{uid}
</delete>
</mapper> </mapper>
\ No newline at end of file
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
</select> </select>
<select id="queryFriendUser" resultType="com.qiqiim.webserver.user.model.ImFriendUserInfoData"> <select id="queryFriendUser" resultType="com.qiqiim.webserver.user.model.ImFriendUserInfoData">
select uid as id ,name as username , signature as sign , profilephoto as avatar from user_info where deptid = #{id} select uid as id ,name as username , signature as sign , profilephoto as avatar , phone as telephone from user_info where deptid = #{id}
</select> </select>
<select id="queryGroupAndUser" resultMap="userFriendMap"> <select id="queryGroupAndUser" resultMap="userFriendMap">
...@@ -68,12 +68,12 @@ ...@@ -68,12 +68,12 @@
</select> </select>
<select id="usersQueryUser" resultType="com.qiqiim.webserver.user.model.ImFriendUserInfoData"> <select id="usersQueryUser" resultType="com.qiqiim.webserver.user.model.ImFriendUserInfoData">
select uid as id ,name as username , signature as sign , profilephoto as avatar from user_info where deptid = #{id} select uid as id ,name as username , signature as sign , profilephoto as avatar , phone as telephone from user_info where deptid = #{id}
and uid = #{uid} and uid = #{uid}
</select> </select>
<select id="usersQueryUser2" resultType="com.qiqiim.webserver.user.model.ImFriendUserInfoData"> <select id="usersQueryUser2" resultType="com.qiqiim.webserver.user.model.ImFriendUserInfoData">
select uid as id ,name as username , signature as sign , profilephoto as avatar from user_info where deptid = #{id} select uid as id ,name as username , signature as sign , profilephoto as avatar , phone as telephone from user_info where deptid = #{id}
</select> </select>
<select id="adminsQueryGroupAndUser" resultMap="userFriendMapWithoutCollection"> <select id="adminsQueryGroupAndUser" resultMap="userFriendMapWithoutCollection">
...@@ -81,13 +81,13 @@ ...@@ -81,13 +81,13 @@
</select> </select>
<select id="adminsGetHistoryUser" resultType="com.qiqiim.webserver.user.model.ImFriendUserInfoData"> <select id="adminsGetHistoryUser" resultType="com.qiqiim.webserver.user.model.ImFriendUserInfoData">
select DISTINCT uid as id ,name as username , signature as sign , profilephoto as avatar from user_info select DISTINCT uid as id ,name as username , signature as sign , profilephoto as avatar , phone as telephone from user_info
left join user_message um on um.senduser = user_info.uid or um.receiveuser = user_info.uid left join user_message um on um.senduser = user_info.uid or um.receiveuser = user_info.uid
where deptid = #{id} and (senduser = #{userId} or receiveuser =#{userId}) where deptid = #{id} and (senduser = #{userId} or receiveuser =#{userId})
</select> </select>
<select id="adminsGetAllUser" resultType="com.qiqiim.webserver.user.model.ImFriendUserInfoData"> <select id="adminsGetAllUser" resultType="com.qiqiim.webserver.user.model.ImFriendUserInfoData">
select DISTINCT uid as id ,name as username , signature as sign , profilephoto as avatar from user_info select DISTINCT uid as id ,name as username , signature as sign , profilephoto as avatar , phone as telephone from user_info
where deptid = #{id} ${allId} where deptid = #{id} ${allId}
</select> </select>
......
...@@ -17,4 +17,8 @@ public interface UserInfoDao extends BaseDao<UserInfoEntity> { ...@@ -17,4 +17,8 @@ public interface UserInfoDao extends BaseDao<UserInfoEntity> {
int deleteLongTimeInfo(List<Long> list); int deleteLongTimeInfo(List<Long> list);
List getAllAdminId(@Param(value = "deptId") String deptId); List getAllAdminId(@Param(value = "deptId") String deptId);
int updateHeadPic(@Param(value = "path") String path, @Param(value = "id") long id);
int delByUid(@Param(value = "id") long id);
} }
...@@ -81,6 +81,10 @@ ...@@ -81,6 +81,10 @@
<select id="getAllAdminId" resultType="long"> <select id="getAllAdminId" resultType="long">
select uid from user_info where ${deptId} select uid from user_info where ${deptId}
</select> </select>
<update id="updateHeadPic" >
update user_info set profilephoto = #{path} where uid = #{id};
</update>
<insert id="save" parameterType="com.qiqiim.webserver.user.model.UserInfoEntity" useGeneratedKeys="true" keyProperty="id"> <insert id="save" parameterType="com.qiqiim.webserver.user.model.UserInfoEntity" useGeneratedKeys="true" keyProperty="id">
insert into user_info insert into user_info
...@@ -158,6 +162,10 @@ ...@@ -158,6 +162,10 @@
<delete id="delete"> <delete id="delete">
delete from user_info where id = #{value} delete from user_info where id = #{value}
</delete> </delete>
<delete id="delByUid">
delete from user_info where uid = #{id}
</delete>
<delete id="deleteBatch"> <delete id="deleteBatch">
delete from user_info where id in delete from user_info where id in
......
/**
* createby : lbj
* date : 2018/7/13
* desc :
**/
package com.qiqiim.webserver.user.model;
public class ConsultantManagerEntity {
private String id;
private String account;
private String deptName;
private String name;
private String phone;
private String headPic;
private String whereToGo;
public String getWhereToGo() {
return whereToGo;
}
public void setWhereToGo(String whereToGo) {
this.whereToGo = whereToGo;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getHeadPic() {
return headPic;
}
public void setHeadPic(String headPic) {
this.headPic = headPic;
}
}
...@@ -9,6 +9,7 @@ public class ImFriendUserInfoData { ...@@ -9,6 +9,7 @@ public class ImFriendUserInfoData {
public String avatar;//好友头像 public String avatar;//好友头像
public String sign;//签名 public String sign;//签名
public String status="offline"; //若值为offline代表离线,online或者不填为在线 public String status="offline"; //若值为offline代表离线,online或者不填为在线
public String telephone;
public Long getId() { public Long getId() {
return id; return id;
...@@ -42,7 +43,12 @@ public class ImFriendUserInfoData { ...@@ -42,7 +43,12 @@ public class ImFriendUserInfoData {
public void setStatus(String status) { public void setStatus(String status) {
this.status = status; this.status = status;
} }
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
} }
package com.qiqiim.webserver.user.service; package com.qiqiim.webserver.user.service;
import com.qiqiim.webserver.user.model.ConsultantManagerEntity;
import com.qiqiim.webserver.user.model.UserAccountEntity; import com.qiqiim.webserver.user.model.UserAccountEntity;
import java.io.UnsupportedEncodingException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -33,4 +35,8 @@ public interface UserAccountService { ...@@ -33,4 +35,8 @@ public interface UserAccountService {
int deleteBatch(Long[] ids); int deleteBatch(Long[] ids);
long getUserDept(long deptId); long getUserDept(long deptId);
List<ConsultantManagerEntity> getAllConsultant(Long deptId);
int updateDetail(ConsultantManagerEntity consultantManagerEntity) throws UnsupportedEncodingException;
} }
...@@ -17,4 +17,6 @@ public interface UserAdminInfoService { ...@@ -17,4 +17,6 @@ public interface UserAdminInfoService {
List<UserAdminInfoEntity> sortOnlineAdmin(List<Long> list); List<UserAdminInfoEntity> sortOnlineAdmin(List<Long> list);
int save(long uid); int save(long uid);
int delByUid(long uid);
} }
...@@ -29,4 +29,8 @@ public interface UserInfoService { ...@@ -29,4 +29,8 @@ public interface UserInfoService {
int deleteBatch(Long[] ids); int deleteBatch(Long[] ids);
List getAllAdminId(String deptId); List getAllAdminId(String deptId);
int updateHeadPic(String path, long id);
int delByUid(long uid);
} }
package com.qiqiim.webserver.user.service.impl; package com.qiqiim.webserver.user.service.impl;
import java.io.UnsupportedEncodingException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.qiqiim.webserver.user.model.ConsultantManagerEntity;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -79,6 +81,37 @@ public class UserAccountServiceImpl implements UserAccountService { ...@@ -79,6 +81,37 @@ public class UserAccountServiceImpl implements UserAccountService {
return userAccountDao.getUserDept(deptId); return userAccountDao.getUserDept(deptId);
} }
@Override
public List<ConsultantManagerEntity> getAllConsultant(Long deptId) {
String tiaojian = "";
if(deptId == 1L){
tiaojian = " deptid = 1";
}else if(deptId == 3L){
tiaojian = " deptid = 3";
}else if(deptId == 4L){
tiaojian = " deptid = 4";
}else{
tiaojian = " deptid != 2";
}
return userAccountDao.getAllConsultant(tiaojian);
}
@Override
public int updateDetail(ConsultantManagerEntity consultantManagerEntity) throws UnsupportedEncodingException {
int i = 0;
if(consultantManagerEntity.getDeptName() != null && !"".equals(consultantManagerEntity.getDeptName())){
i += userAccountDao.updateConsultantDept( new String (consultantManagerEntity.getDeptName().getBytes("iso8859-1"),"UTF-8"), Long.parseLong(consultantManagerEntity.getId()));
}
if(consultantManagerEntity.getName() != null && !"".equals(consultantManagerEntity.getName())){
i += userAccountDao.updateConsultantName( new String (consultantManagerEntity.getName().getBytes("iso8859-1"),"UTF-8"), Long.parseLong(consultantManagerEntity.getId()));
}
if(consultantManagerEntity.getPhone() != null && !"".equals(consultantManagerEntity.getPhone())){
i += userAccountDao.updateConsultantPhone( new String (consultantManagerEntity.getPhone().getBytes("iso8859-1"),"UTF-8"), Long.parseLong(consultantManagerEntity.getId()));
}
return i;
}
@Override @Override
public UserAccountEntity queryObjectByAccount(Map<String, Object> map) { public UserAccountEntity queryObjectByAccount(Map<String, Object> map) {
return userAccountDao.queryObjectByAccount(map); return userAccountDao.queryObjectByAccount(map);
......
...@@ -31,4 +31,9 @@ public class UserAdminInfoServiceImpl implements UserAdminInfoService { ...@@ -31,4 +31,9 @@ public class UserAdminInfoServiceImpl implements UserAdminInfoService {
public int save(long uid) { public int save(long uid) {
return userAdminInfoDao.save(uid); return userAdminInfoDao.save(uid);
} }
@Override
public int delByUid(long uid) {
return userAdminInfoDao.delByUid(uid);
}
} }
...@@ -57,4 +57,14 @@ public class UserInfoServiceImpl implements UserInfoService { ...@@ -57,4 +57,14 @@ public class UserInfoServiceImpl implements UserInfoService {
return userInfoDao.getAllAdminId(deptId); return userInfoDao.getAllAdminId(deptId);
} }
@Override
public int updateHeadPic(String path, long id) {
return userInfoDao.updateHeadPic(path, id);
}
@Override
public int delByUid(long uid) {
return userInfoDao.delByUid(uid);
}
} }
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ include file="/WEB-INF/page/public/taglib.jsp" %>
<!doctype html>
<html>
<head>
<title>顾问管理</title>
<%@ include file="/WEB-INF/page/public/meta.jsp" %>
<link rel="stylesheet" href="layui/css/layui.css">
</head>
<body>
<button class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg" onclick="add()" id="add">添加</button>
<div style="margin: 20px;">
<div id="list">
<table class="layui-table" lay-size="lg">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<tr>
<th>头像</th>
<th>顾问ID</th>
<th>顾问账号</th>
<th>顾问姓名</th>
<th>所属部门</th>
<th>联系电话</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${allsession}" var="user">
<tr>
<td><img src="${user.headPic}"/></td>
<td>${user.id}</td>
<td>${user.account}</td>
<td>${user.name}</td>
<td>${user.deptName}</td>
<td>${user.phone}</td>
<td>
<a class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg"
onclick="updatePic(this)">上传头像</a>
<div id="updatePic" style="display: none">
<form action="headpicupload.action" method="post" enctype="multipart/form-data">
<input type="text" id="uid" name="uid" style="display: none"/>
<input type="text" name="whereToGo" value="3" style="display: none">
修改头像:<input type="file" name="file" id="file"/>
<input type="submit"/>
</form>
</div>
<a class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg" onclick="update(this)">修改</a>
<a class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg" onclick="del(this)">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div id="updateDetail" style="display: none">
<form action="updateConsultantDetail.action" method="post" accept-charset="UTF-8">
<input type="text" id="uid1" name="id" style="display: none"/>
<input type="text" name="whereToGo" value="3" style="display: none">
<fieldset class="layui-elem-field index-button" style="margin-top: 30px">
<legend>修改</legend>
<div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="name" id="name1" lay-verify="required" autocomplete="off"
placeholder="请输入账号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系电话</label>
<div class="layui-input-block">
<input type="text" name="phone" id="phone1" lay-verify="required" autocomplete="off"
placeholder="请输入联系电话" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input type="submit" class="layui-btn" lay-submit="" lay-filter="reg" value="修改"/>
<button class="layui-btn layui-btn-primary" onclick="cancel()" target="_blank"><i
class="layui-icon">&#xe613;</i>取消
</button>
</div>
</div>
</div>
</fieldset>
</form>
</div>
<div id="addForm" style="display: none">
<fieldset class="layui-elem-field index-button" style="margin-top: 30px">
<legend>注册</legend>
<div>
<form class="layui-form" action="addConsultant" method="post">
<div class="layui-form-item">
<label class="layui-form-label">账号</label>
<div class="layui-input-block">
<input type="text" name="account" id="account2" lay-verify="required" autocomplete="off"
placeholder="请输入账号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="password" id="password2" lay-verify="required" placeholder="请输入密码"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="name" id="name2" lay-verify="required" placeholder="请输入姓名"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系电话</label>
<div class="layui-input-block">
<input type="text" name="phone" id="phone2" lay-verify="required" placeholder="请输入姓名"
autocomplete="off" class="layui-input">
</div>
</div>
<input name="deptid" id="deptid2" value="3" style="display: none">
<input type="text" name="whereToGo" value="3" style="display: none"/>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="reg">立即注册</button>
<button class="layui-btn layui-btn-primary" onclick="cancel()" target="_blank"><i
class="layui-icon">&#xe613;</i>取消
</button>
</div>
</div>
</form>
</div>
</fieldset>
</div>
<div id="deldiv" style="display: none">
<form id="delForm" action="delConsultant" method="post" style="display: none">
<input name="whereToGo" value="3" type="text">
<input name="id" id="id3" type="text"/>
</form>
</div>
</div>
<script>
var addForm = document.getElementById("addForm");
var list = document.getElementById("list");
var updatePicForm = document.getElementById("updatePic");
var updateDetailForm = document.getElementById("updateDetail");
function del(e){
document.getElementById("id3").value = e.parentElement.parentElement.children[1].innerHTML;
document.getElementById("delForm").submit();
}
function update(e) {
var tr = e.parentElement.parentElement;
console.log(tr);
document.getElementById("uid1").value = tr.children[1].innerHTML;
document.getElementById("name1").value = tr.children[3].innerHTML;
document.getElementById("phone1").value = tr.children[5].innerHTML;
list.style.display = 'none';
updateDetailForm.style.display = 'block';
}
function cancel() {
list.style.display = 'block';
addForm.style.display = 'none';
updateDetailForm.style.display = 'none';
}
function updatePic(e) {
var tr = e.parentElement.parentElement.children[1].innerHTML;
console.log(tr);
document.getElementById("uid").value = tr;
e.parentElement.children[1].style.display = 'block';
e.parentElement.children[1].children[0].children[0].value = tr;
// updatePicForm.style.display = 'block';
}
function add() {
list.style.display = 'none';
addForm.style.display = 'block';
}
updatePicForm.onsubmit = function () {
if (document.getElementById("file").value !== "") {
document.getElementById("updatePic").submit();
document.getElementById("updatePic").style.display = 'none';
} else {
alert("图片不能为空");
}
}
updateDetailForm.onsubmit = function () {
if (document.getElementById("name1").value !== "" &&
document.getElementById("deptName1").value !== "" &&
document.getElementById("phone1").value !== "") {
document.getElementById("updateDetail").submit();
} else {
alert("数据不能为空");
}
}
addForm.onsubmit = function () {
if (document.getElementById("account2").value !== "" &&
document.getElementById("password2").value !== "" &&
document.getElementById("deptid2").value !== "" &&
document.getElementById("name2").value !== "") {
document.getElementById("addForm").submit();
} else {
alert("数据不能为空");
}
}
</script>
</body>
</html>
\ No newline at end of file
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ include file="/WEB-INF/page/public/taglib.jsp" %>
<!doctype html>
<html>
<head>
<title>顾问管理</title>
<%@ include file="/WEB-INF/page/public/meta.jsp" %>
<link rel="stylesheet" href="layui/css/layui.css">
</head>
<body>
<button class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg" onclick="add()" id="add">添加</button>
<div style="margin: 20px;">
<div id="list">
<table class="layui-table" lay-size="lg">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<tr>
<th>头像</th>
<th>顾问ID</th>
<th>顾问账号</th>
<th>顾问姓名</th>
<th>所属部门</th>
<th>联系电话</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${allsession}" var="user">
<tr>
<td><img src="${user.headPic}"/></td>
<td>${user.id}</td>
<td>${user.account}</td>
<td>${user.name}</td>
<td>${user.deptName}</td>
<td>${user.phone}</td>
<td>
<a class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg"
onclick="updatePic(this)">上传头像</a>
<div id="updatePic" style="display: none">
<form action="headpicupload.action" method="post" enctype="multipart/form-data">
<input type="text" id="uid" name="uid" style="display: none"/>
<input type="text" name="whereToGo" value="4" style="display: none">
修改头像:<input type="file" name="file" id="file"/>
<input type="submit"/>
</form>
</div>
<a class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg" onclick="update(this)">修改</a>
<a class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg" onclick="del(this)">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div id="updateDetail" style="display: none">
<form action="updateConsultantDetail.action" method="post" accept-charset="UTF-8">
<input type="text" id="uid1" name="id" style="display: none"/>
<input type="text" name="whereToGo" value="4" style="display: none">
<fieldset class="layui-elem-field index-button" style="margin-top: 30px">
<legend>修改</legend>
<div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="name" id="name1" lay-verify="required" autocomplete="off"
placeholder="请输入账号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系电话</label>
<div class="layui-input-block">
<input type="text" name="phone" id="phone1" lay-verify="required" autocomplete="off"
placeholder="请输入联系电话" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input type="submit" class="layui-btn" lay-submit="" lay-filter="reg" value="修改"/>
<button class="layui-btn layui-btn-primary" onclick="cancel()" target="_blank"><i
class="layui-icon">&#xe613;</i>取消
</button>
</div>
</div>
</div>
</fieldset>
</form>
</div>
<div id="addForm" style="display: none">
<fieldset class="layui-elem-field index-button" style="margin-top: 30px">
<legend>注册</legend>
<div>
<form class="layui-form" action="addConsultant" method="post">
<div class="layui-form-item">
<label class="layui-form-label">账号</label>
<div class="layui-input-block">
<input type="text" name="account" id="account2" lay-verify="required" autocomplete="off"
placeholder="请输入账号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="password" id="password2" lay-verify="required" placeholder="请输入密码"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="name" id="name2" lay-verify="required" placeholder="请输入姓名"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系电话</label>
<div class="layui-input-block">
<input type="text" name="phone" id="phone2" lay-verify="required" placeholder="请输入姓名"
autocomplete="off" class="layui-input">
</div>
</div>
<input name="deptid" id="deptid2" value="4" style="display: none">
<input type="text" name="whereToGo" value="4" style="display: none"/>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="reg">立即注册</button>
<button class="layui-btn layui-btn-primary" onclick="cancel()" target="_blank"><i
class="layui-icon">&#xe613;</i>取消
</button>
</div>
</div>
</form>
</div>
</fieldset>
</div>
<div id="deldiv" style="display: none">
<form id="delForm" action="delConsultant" method="post" style="display: none">
<input name="whereToGo" value="4" type="text">
<input name="id" id="id3" type="text"/>
</form>
</div>
</div>
<script>
var addForm = document.getElementById("addForm");
var list = document.getElementById("list");
var updatePicForm = document.getElementById("updatePic");
var updateDetailForm = document.getElementById("updateDetail");
function del(e){
document.getElementById("id3").value = e.parentElement.parentElement.children[1].innerHTML;
document.getElementById("delForm").submit();
}
function update(e) {
var tr = e.parentElement.parentElement;
console.log(tr);
document.getElementById("uid1").value = tr.children[1].innerHTML;
document.getElementById("name1").value = tr.children[3].innerHTML;
document.getElementById("phone1").value = tr.children[5].innerHTML;
list.style.display = 'none';
updateDetailForm.style.display = 'block';
}
function cancel() {
list.style.display = 'block';
addForm.style.display = 'none';
updateDetailForm.style.display = 'none';
}
function updatePic(e) {
var tr = e.parentElement.parentElement.children[1].innerHTML;
console.log(tr);
document.getElementById("uid").value = tr;
e.parentElement.children[1].style.display = 'block';
e.parentElement.children[1].children[0].children[0].value = tr;
// updatePicForm.style.display = 'block';
}
function add() {
list.style.display = 'none';
addForm.style.display = 'block';
}
updatePicForm.onsubmit = function () {
if (document.getElementById("file").value !== "") {
document.getElementById("updatePic").submit();
document.getElementById("updatePic").style.display = 'none';
} else {
alert("图片不能为空");
}
}
updateDetailForm.onsubmit = function () {
if (document.getElementById("name1").value !== "" &&
document.getElementById("deptName1").value !== "" &&
document.getElementById("phone1").value !== "") {
document.getElementById("updateDetail").submit();
} else {
alert("数据不能为空");
}
}
addForm.onsubmit = function () {
if (document.getElementById("account2").value !== "" &&
document.getElementById("password2").value !== "" &&
document.getElementById("deptid2").value !== "" &&
document.getElementById("name2").value !== "") {
document.getElementById("addForm").submit();
} else {
alert("数据不能为空");
}
}
</script>
</body>
</html>
\ No newline at end of file
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ include file="/WEB-INF/page/public/taglib.jsp" %>
<!doctype html>
<html>
<head>
<title>顾问管理</title>
<%@ include file="/WEB-INF/page/public/meta.jsp" %>
<link rel="stylesheet" href="layui/css/layui.css">
</head>
<body>
<button class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg" onclick="add()" id="add">添加</button>
<div style="margin: 20px;">
<div id="list">
<table class="layui-table" lay-size="lg">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<tr>
<th>头像</th>
<th>顾问ID</th>
<th>顾问账号</th>
<th>顾问姓名</th>
<th>所属部门</th>
<th>联系电话</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${allsession}" var="user">
<tr>
<td><img src="${user.headPic}"/></td>
<td>${user.id}</td>
<td>${user.account}</td>
<td>${user.name}</td>
<td>${user.deptName}</td>
<td>${user.phone}</td>
<td>
<a class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg"
onclick="updatePic(this)">上传头像</a>
<div id="updatePic" style="display: none">
<form action="headpicupload.action" method="post" enctype="multipart/form-data">
<input type="text" id="uid" name="uid" style="display: none"/>
修改头像:<input type="file" name="file" id="file"/>
<input type="submit"/>
</form>
</div>
<a class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg" onclick="update(this)">修改</a>
<a class="layui-btn layui-btn-primary layui-btn-xs sendUserMsg" onclick="del(this)">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div id="updateDetail" style="display: none">
<form action="updateConsultantDetail.action" method="post" accept-charset="UTF-8">
<input type="text" id="uid1" name="id" style="display: none"/>
<fieldset class="layui-elem-field index-button" style="margin-top: 30px">
<legend>修改</legend>
<div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="name" id="name1" lay-verify="required" autocomplete="off"
placeholder="请输入账号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系电话</label>
<div class="layui-input-block">
<input type="text" name="phone" id="phone1" lay-verify="required" autocomplete="off"
placeholder="请输入联系电话" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所在部门</label>
<div class="layui-input-block">
<select name="deptName" id="deptName1" lay-verify="required">
<option value="1" selected>
路劲太阳城
</option>
<option value="3">
路劲隽澜湾
</option>
<option value="4">路劲隽悦府</option>
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input type="submit" class="layui-btn" lay-submit="" lay-filter="reg" value="修改"/>
<button class="layui-btn layui-btn-primary" onclick="cancel()" target="_blank"><i
class="layui-icon">&#xe613;</i>取消
</button>
</div>
</div>
</div>
</fieldset>
</form>
</div>
<div id="addForm" style="display: none">
<fieldset class="layui-elem-field index-button" style="margin-top: 30px">
<legend>注册</legend>
<div>
<form class="layui-form" action="addConsultant" method="post">
<div class="layui-form-item">
<label class="layui-form-label">账号</label>
<div class="layui-input-block">
<input type="text" name="account" id="account2" lay-verify="required" autocomplete="off"
placeholder="请输入账号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="password" id="password2" lay-verify="required" placeholder="请输入密码"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="name" id="name2" lay-verify="required" placeholder="请输入姓名"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系电话</label>
<div class="layui-input-block">
<input type="text" name="phone" id="phone2" lay-verify="required" placeholder="请输入姓名"
autocomplete="off" class="layui-input">
</div>
</div>
<label class="layui-form-label">所在部门</label>
<select name="deptid" id="deptid2" lay-verify="required" style="display: block">
<option value="1" selected>
路劲太阳城
</option>
<option value="3">
路劲隽澜湾
</option>
<option value="4">路劲隽悦府</option>
</select>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="reg">立即注册</button>
<button class="layui-btn layui-btn-primary" onclick="cancel()" target="_blank"><i
class="layui-icon">&#xe613;</i>取消
</button>
</div>
</div>
</form>
</div>
</fieldset>
</div>
<div id="deldiv" style="display: none">
<form id="delForm" action="delConsultant" method="post" style="display: none">
<input name="id" id="id3" type="text"/>
</form>
</div>
</div>
<script>
var delForm = document.getElementById("delForm");
var addForm = document.getElementById("addForm");
var list = document.getElementById("list");
var updatePicForm = document.getElementById("updatePic");
var updateDetailForm = document.getElementById("updateDetail");
function del(e){
document.getElementById("id3").value = e.parentElement.parentElement.children[1].innerHTML;
document.getElementById("delForm").submit();
}
function update(e) {
var tr = e.parentElement.parentElement;
console.log(tr);
document.getElementById("uid1").value = tr.children[1].innerHTML;
document.getElementById("name1").value = tr.children[3].innerHTML;
if (tr.children[4].innerHTML === "路劲太阳城置业顾问") {
alert("路劲太阳城置业顾问");
} else if (tr.children[4].innerHTML === "路劲隽澜湾置业顾问") {
alert("路劲隽澜湾置业顾问");
} else if (tr.children[4].innerHTML === "路劲隽悦府置业顾问") {
alert("路劲隽悦府置业顾问");
}
document.getElementById("deptName1").value = tr.children[4].innerHTML;
document.getElementById("phone1").value = tr.children[5].innerHTML;
list.style.display = 'none';
updateDetailForm.style.display = 'block';
}
function cancel() {
list.style.display = 'block';
addForm.style.display = 'none';
updateDetailForm.style.display = 'none';
}
function updatePic(e) {
var tr = e.parentElement.parentElement.children[1].innerHTML;
console.log(tr);
document.getElementById("uid").value = tr;
e.parentElement.children[1].style.display = 'block';
e.parentElement.children[1].children[0].children[0].value = tr;
// updatePicForm.style.display = 'block';
}
function add() {
list.style.display = 'none';
addForm.style.display = 'block';
}
updatePicForm.onsubmit = function () {
if (document.getElementById("file").value !== "") {
document.getElementById("updatePic").submit();
document.getElementById("updatePic").style.display = 'none';
} else {
alert("图片不能为空");
}
}
updateDetailForm.onsubmit = function () {
if (document.getElementById("name1").value !== "" &&
document.getElementById("deptName1").value !== "" &&
document.getElementById("phone1").value !== "") {
document.getElementById("updateDetail").submit();
} else {
alert("数据不能为空");
}
}
addForm.onsubmit = function () {
if (document.getElementById("account2").value !== "" &&
document.getElementById("password2").value !== "" &&
document.getElementById("deptid2").value !== "" &&
document.getElementById("name2").value !== "") {
document.getElementById("addForm").submit();
} else {
alert("数据不能为空");
}
}
</script>
</body>
</html>
\ No newline at end of file
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>置业顾问系统</title>
<link href="img/icon.ico" rel="SHORTCUT ICON" />
<link rel="stylesheet" href="layui/css/layui.css">
</head>
<body>
<div style="margin: 30px;">
<fieldset class="layui-elem-field index-button" style="margin-top: 30px">
<legend>注册</legend>
<div>
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">账号</label>
<div class="layui-input-block">
<input type="text" name="account" lay-verify="required" autocomplete="off" placeholder="请输入账号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="password" lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="userInfo.name" lay-verify="required" placeholder="请输入姓名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所在部门</label>
<div class="layui-input-block">
<select name="userInfo.deptid" lay-verify="required">
<option value="1">
路劲太阳城</option>
<option value="3">
路劲隽澜湾</option>
<option value="4">路劲隽悦府</option>
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="reg">立即注册</button>
<a class="layui-btn layui-btn-primary" href="consultantlist" target="_blank"><i class="layui-icon">&#xe613;</i>返回</a>
</div>
</div>
</form>
</div>
</fieldset>
</div>
<script src="layui/layui.js"></script>
<script>
layui.use(['form'], function(){
var form = layui.form
,$ = layui.jquery
,layer = layui.layer;
//自定义验证规则
form.verify({
account: function(value){
if(value.length < 1){
return '请输入账号';
}
}
,password: [/(.+){6,12}$/, '密码必须6到12位']
,'userInfo.name': function(value){
if(value.length < 1){
return '请输入姓名';
}
}
});
form.on('button(loginbtn)', function(data){
layer.alert(JSON.stringify(data.field), {
title: '最终的提交信息'
})
return false;
})
//监听提交
form.on('submit(reg)', function(data){
/* layer.alert(JSON.stringify(data.field), {
title: '最终的提交信息'
}) */
$.ajax({
type : "post",
url : "useraccount/save",
data :data.field,
dataType : "json",
async : false,
success : function(data){
if(data.data!=null&&data.data.id!=null){
$.ajax({
type : "get",
url : "consultantlist"
});
}else{
layer.msg("注册失败,请检查用户名是否重复!");
}
}
});
return false;
});
});
</script>
</body>
</html>
\ No newline at end of file
/** layui-v1.0.7 MIT License By http://www.layui.com */ /** layui-v1.0.7 MIT License By http://www.layui.com */
;layui.define(["layer","laytpl","upload"],function(i){var a="3.0.1 Pro",e=layui.jquery,t=layui.layer,n=layui.laytpl,l=layui.device(),s="layui-show",o="layim-this",r=20,d={},c=function(){this.v=a,e("body").on("click","*[layim-event]",function(i){var a=e(this),t=a.attr("layim-event");ei[t]?ei[t].call(this,a,i):""})};c.prototype.config=function(i){var a=[];if(layui.each(Array(5),function(i){a.push(layui.cache.dir+"css/modules/layim/skin/"+(i+1)+".jpg")}),i=i||{},i.skin=i.skin||[],layui.each(i.skin,function(i,e){a.unshift(e)}),i.skin=a,i=e.extend({isfriend:!0,isgroup:!0,voice:"default.wav"},i),window.JSON&&window.JSON.parse)return H(i),this},c.prototype.on=function(i,a){return"function"==typeof a&&(d[i]?d[i].push(a):d[i]=[a]),this},c.prototype.cache=function(){return j},c.prototype.chat=function(i){if(window.JSON&&window.JSON.parse)return T(i),this},c.prototype.setChatMin=function(){return A(),this},c.prototype.setChatStatus=function(i){var a=O();if(a){var e=a.elem.find(".layim-chat-status");return e.html(i),this}},c.prototype.getMessage=function(i){return Y(i),this},c.prototype.notice=function(i){return J(i),this},c.prototype.add=function(i){return E(i),this},c.prototype.setFriendGroup=function(i){return E(i,"setGroup"),this},c.prototype.msgbox=function(i){return F(i),this},c.prototype.addList=function(i){return U(i),this},c.prototype.removeList=function(i){return V(i),this},c.prototype.setFriendStatus=function(i,a){var t=e("#layim-friend"+i);t["online"===a?"removeClass":"addClass"]("layim-list-gray")},c.prototype.content=function(i){return layui.data.content(i)};var u=function(i){var a={friend:"该分组下暂无好友",group:"暂无群组",history:"暂无历史会话"};return i=i||{},i.item=i.item||"d."+i.type,["{{# var length = 0; layui.each("+i.item+", function(i, data){ length++; }}",'<li layim-event="chat" data-type="'+i.type+'" data-index="{{ '+(i.index||"i")+' }}" id="layim-'+i.type+'{{ data.id }}" {{ data.status === "offline" ? "class=layim-list-gray" : "" }}><img src="{{ data.avatar }}"><span>{{ data.username||data.groupname||data.name||"游客" }}</span><p>{{ data.remark||data.sign||"" }}</p></li>',"{{# }); if(length === 0){ }}",'<li class="layim-null">'+(a[i.type]||"暂无数据")+"</li>","{{# } }}"].join("")},y=['<div class="layui-layim-main">','<div class="layui-layim-info">','<div class="layui-layim-user">{{ d.mine.username }}</div>','<div class="layui-layim-status">','{{# if(d.mine.status === "online"){ }}','<span class="layui-icon layim-status-online" layim-event="status" lay-type="show">&#xe617;</span>','{{# } else if(d.mine.status === "hide") { }}','<span class="layui-icon layim-status-hide" layim-event="status" lay-type="show">&#xe60f;</span>',"{{# } }}",'<ul class="layui-anim layim-menu-box">','<li {{d.mine.status === "online" ? "class=layim-this" : ""}} layim-event="status" lay-type="online"><i class="layui-icon">&#xe618;</i><cite class="layui-icon layim-status-online">&#xe617;</cite>在线</li>','<li {{d.mine.status === "hide" ? "class=layim-this" : ""}} layim-event="status" lay-type="hide"><i class="layui-icon">&#xe618;</i><cite class="layui-icon layim-status-hide">&#xe60f;</cite>隐身</li>',"</ul>","</div>",'<input class="layui-layim-remark" placeholder="编辑签名" value="{{ d.mine.remark||d.mine.sign||"" }}"></p>',"</div>",'<ul class="layui-unselect layui-layim-tab{{# if(!d.base.isfriend || !d.base.isgroup){ }}'," layim-tab-two",'{{# } }}">','<li class="layui-icon',"{{# if(!d.base.isfriend){ }}"," layim-hide","{{# } else { }}"," layim-this","{{# } }}",'" title="联系人" layim-event="tab" lay-type="friend">&#xe612;</li>','<li style="display:none" class="layui-icon',"{{# if(!d.base.isgroup){ }}"," layim-hide","{{# } else if(!d.base.isfriend) { }}"," layim-this","{{# } }}" ;layui.define(["layer","laytpl","upload"],function(i){var a="3.0.1 Pro",e=layui.jquery,t=layui.layer,n=layui.laytpl,l=layui.device(),s="layui-show",o="layim-this",r=20,d={},c=function(){this.v=a,e("body").on("click","*[layim-event]",function(i){var a=e(this),t=a.attr("layim-event");ei[t]?ei[t].call(this,a,i):""})};c.prototype.config=function(i){var a=[];if(layui.each(Array(5),function(i){a.push(layui.cache.dir+"css/modules/layim/skin/"+(i+1)+".jpg")}),i=i||{},i.skin=i.skin||[],layui.each(i.skin,function(i,e){a.unshift(e)}),i.skin=a,i=e.extend({isfriend:!0,isgroup:!0,voice:"default.wav"},i),window.JSON&&window.JSON.parse)return H(i),this},c.prototype.on=function(i,a){return"function"==typeof a&&(d[i]?d[i].push(a):d[i]=[a]),this},c.prototype.cache=function(){return j},c.prototype.chat=function(i){if(window.JSON&&window.JSON.parse)return T(i),this},c.prototype.setChatMin=function(){return A(),this},c.prototype.setChatStatus=function(i){var a=O();if(a){var e=a.elem.find(".layim-chat-status");return e.html(i),this}},c.prototype.getMessage=function(i){return Y(i),this},c.prototype.notice=function(i){return J(i),this},c.prototype.add=function(i){return E(i),this},c.prototype.setFriendGroup=function(i){return E(i,"setGroup"),this},c.prototype.msgbox=function(i){return F(i),this},c.prototype.addList=function(i){return U(i),this},c.prototype.removeList=function(i){return V(i),this},c.prototype.setFriendStatus=function(i,a){var t=e("#layim-friend"+i);t["online"===a?"removeClass":"addClass"]("layim-list-gray")},c.prototype.content=function(i){return layui.data.content(i)};var u=function(i){var a={friend:"该分组下暂无好友",group:"暂无群组",history:"暂无历史会话"};return i=i||{},i.item=i.item||"d."+i.type,["{{# var length = 0; layui.each("+i.item+", function(i, data){ length++; }}",'<li layim-event="chat" data-type="'+i.type+'" data-index="{{ '+(i.index||"i")+' }}" id="layim-'+i.type+'{{ data.id }}" {{ data.status === "offline" ? "class=layim-list-gray" : "" }}><img src="{{ data.avatar }}"><span>{{ data.username||data.groupname||data.name||"游客" }}</span><p>{{ data.remark||data.sign||"" }}</p></li>',"{{# }); if(length === 0){ }}",'<li class="layim-null">'+(a[i.type]||"暂无数据")+"</li>","{{# } }}"].join("")},y=['<div class="layui-layim-main">','<div class="layui-layim-info">','<div class="layui-layim-user">{{ d.mine.username }}</div>','<div class="layui-layim-status">','{{# if(d.mine.status === "online"){ }}','<span class="layui-icon layim-status-online" layim-event="status" lay-type="show">&#xe617;</span>','{{# } else if(d.mine.status === "hide") { }}','<span class="layui-icon layim-status-hide" layim-event="status" lay-type="show">&#xe60f;</span>',"{{# } }}",'<ul class="layui-anim layim-menu-box">','<li {{d.mine.status === "online" ? "class=layim-this" : ""}} layim-event="status" lay-type="online"><i class="layui-icon">&#xe618;</i><cite class="layui-icon layim-status-online">&#xe617;</cite>在线</li>','<li {{d.mine.status === "hide" ? "class=layim-this" : ""}} layim-event="status" lay-type="hide"><i class="layui-icon">&#xe618;</i><cite class="layui-icon layim-status-hide">&#xe60f;</cite>隐身</li>',"</ul>","</div>",'<input class="layui-layim-remark" placeholder="编辑签名" value="{{ d.mine.remark||d.mine.sign||"" }}"></p>',"</div>",'<ul class="layui-unselect layui-layim-tab{{# if(!d.base.isfriend || !d.base.isgroup){ }}'," layim-tab-two",'{{# } }}">','<li class="layui-icon',"{{# if(!d.base.isfriend){ }}"," layim-hide","{{# } else { }}"," layim-this","{{# } }}",'" title="联系人" layim-event="tab" lay-type="friend">&#xe612;</li>','<li style="display:none" class="layui-icon',"{{# if(!d.base.isgroup){ }}"," layim-hide","{{# } else if(!d.base.isfriend) { }}"," layim-this","{{# } }}"
,'" title="群组" layim-event="tab" lay-type="group">&#xe613;</li>' ,'" title="群组" layim-event="tab" lay-type="group">&#xe613;</li>'
,'<li class="layui-icon" title="历史会话" layim-event="tab" lay-type="history">&#xe611;</li>',"</ul>",'<ul id="friendsList" class="layui-unselect layim-tab-content {{# if(d.base.isfriend){ }}layui-show{{# } }} layim-list-friend">','{{# layui.each(d.friend, function(index, item){ var spread = d.local["spread"+index]; }}',"<li>",'<h5 layim-event="spread" lay-type="{{ spread }}"><i class="layui-icon">{{# if(spread === "true"){ }}&#xe61a;{{# } else { }}&#xe602;{{# } }}</i><span>{{ item.groupname||"未命名分组"+index }}</span><em>(<cite class="layim-count"> {{ (item.list||[]).length }}</cite>)</em></h5>','<ul class="layui-layim-list {{# if(spread === "true"){ }}'," layui-show",'{{# } }}">',u({type:"friend",item:"item.list",index:"index"}),"</ul>","</li>","{{# }); if(d.friend.length === 0){ }}",'<li><ul class="layui-layim-list layui-show"><li class="layim-null">暂无联系人</li></ul>',"{{# } }}","</ul>",'<ul class="layui-unselect layim-tab-content {{# if(!d.base.isfriend && d.base.isgroup){ }}layui-show{{# } }}">',"<li>",'<ul class="layui-layim-list layui-show layim-list-group">',u({type:"group"}),"</ul>","</li>","</ul>",'<ul class="layui-unselect layim-tab-content {{# if(!d.base.isfriend && !d.base.isgroup){ }}layui-show{{# } }}">',"<li>",'<ul class="layui-layim-list layui-show layim-list-history">',u({type:"history"}),"</ul>","</li>","</ul>",'<ul class="layui-unselect layim-tab-content">',"<li>",'<ul class="layui-layim-list layui-show" id="layui-layim-search"></ul>',"</li>","</ul>",'<ul class="layui-unselect layui-layim-tool">','<li class="layui-icon layim-tool-search" layim-event="search" title="搜索">&#xe615;</li>',"{{# if(d.base.msgbox){ }}",'<li style="display:none" class="layui-icon layim-tool-msgbox" layim-event="msgbox" title="消息盒子">&#xe645;<span class="layui-anim"></span></li>',"{{# } }}","{{# if(d.base.find){ }}",'<li class="layui-icon layim-tool-find" layim-event="find" title="查找">&#xe608;</li>',"{{# } }}",/*'<li class="layui-icon layim-tool-skin" layim-event="skin" title="更换背景">&#xe61b;</li>',*/"{{# if(!d.base.copyright){ }}",'<li class="layui-icon layim-tool-about" layim-event="about" title="关于">&#xe60b;</li>',"{{# } }}","</ul>",'<div class="layui-layim-search"><input><label class="layui-icon" layim-event="closeSearch">&#x1007;</label></div>',"</div>"].join(""),m=['<ul class="layui-layim-skin">',"{{# layui.each(d.skin, function(index, item){ }}",'<li><img layim-event="setSkin" src="{{ item }}"></li>',"{{# }); }}",'<li layim-event="setSkin"><cite>简约</cite></li>',"</ul>"].join(""),f=['<div class="layim-chat layim-chat-{{d.data.type}}{{d.first ? " layui-show" : ""}}">','<div class="layui-unselect layim-chat-title">','<div class="layim-chat-other">','<img src="{{ d.data.avatar }}"><span class="layim-chat-username" layim-event="{{ d.data.type==="group" ? "groupMembers" : "" }}">{{ d.data.name||"游客" }} {{d.data.temporary ? "<cite>临时会话</cite>" : ""}} {{# if(d.data.type==="group"){ }} <em class="layim-chat-members"></em><i class="layui-icon">&#xe61a;</i> {{# } }}</span>','<p class="layim-chat-status"></p>',"</div>","</div>",'<div class="layim-chat-main">',"<ul></ul>","</div>",'<div class="layim-chat-footer">','<div class="layui-unselect layim-chat-tool" data-json="{{encodeURIComponent(JSON.stringify(d.data))}}">','<span class="layui-icon layim-tool-face" title="选择表情" layim-event="face">&#xe60c;</span>',"{{# if(d.base && d.base.uploadImage){ }}",'<span class="layui-icon layim-tool-image" title="上传图片" layim-event="image">&#xe60d;<input type="file" name="file"></span>',"{{# }; }}","{{# if(d.base && d.base.uploadFile){ }}", ,'<li class="layui-icon" title="历史会话" layim-event="tab" lay-type="history">&#xe611;</li>',"</ul>",'<ul id="friendsList" class="layui-unselect layim-tab-content {{# if(d.base.isfriend){ }}layui-show{{# } }} layim-list-friend">','{{# layui.each(d.friend, function(index, item){ var spread = d.local["spread"+index]; }}',"<li>",'<h5 layim-event="spread" lay-type="{{ spread }}"><i class="layui-icon">{{# if(spread === "true"){ }}&#xe61a;{{# } else { }}&#xe602;{{# } }}</i><span>{{ item.groupname||"未命名分组"+index }}</span><em>(<cite class="layim-count"> {{ (item.list||[]).length }}</cite>)</em></h5>','<ul class="layui-layim-list {{# if(spread === "true"){ }}'," layui-show",'{{# } }}">',u({type:"friend",item:"item.list",index:"index"}),"</ul>","</li>","{{# }); if(d.friend.length === 0){ }}",'<li><ul class="layui-layim-list layui-show"><li class="layim-null">暂无联系人</li></ul>',"{{# } }}","</ul>",'<ul class="layui-unselect layim-tab-content {{# if(!d.base.isfriend && d.base.isgroup){ }}layui-show{{# } }}">',"<li>",'<ul class="layui-layim-list layui-show layim-list-group">',u({type:"group"}),"</ul>","</li>","</ul>",'<ul class="layui-unselect layim-tab-content {{# if(!d.base.isfriend && !d.base.isgroup){ }}layui-show{{# } }}">',"<li>",'<ul class="layui-layim-list layui-show layim-list-history">',u({type:"history"}),"</ul>","</li>","</ul>",'<ul class="layui-unselect layim-tab-content">',"<li>",'<ul class="layui-layim-list layui-show" id="layui-layim-search"></ul>',"</li>","</ul>",'<ul class="layui-unselect layui-layim-tool">','<li class="layui-icon layim-tool-search" layim-event="search" title="搜索">&#xe615;</li>',"{{# if(d.base.msgbox){ }}",'<li style="display:none" class="layui-icon layim-tool-msgbox" layim-event="msgbox" title="消息盒子">&#xe645;<span class="layui-anim"></span></li>',"{{# } }}","{{# if(d.base.find){ }}",'<li class="layui-icon layim-tool-find" layim-event="find" title="查找">&#xe608;</li>',"{{# } }}",/*'<li class="layui-icon layim-tool-skin" layim-event="skin" title="更换背景">&#xe61b;</li>',*/"{{# if(!d.base.copyright){ }}",'<li class="layui-icon layim-tool-about" layim-event="about" title="关于">&#xe60b;</li>',"{{# } }}","</ul>",'<div class="layui-layim-search"><input><label class="layui-icon" layim-event="closeSearch">&#x1007;</label></div>',"</div>"].join(""),m=['<ul class="layui-layim-skin">',"{{# layui.each(d.skin, function(index, item){ }}",'<li><img layim-event="setSkin" src="{{ item }}"></li>',"{{# }); }}",'<li layim-event="setSkin"><cite>简约</cite></li>',"</ul>"].join(""),f=['<div class="layim-chat layim-chat-{{d.data.type}}{{d.first ? " layui-show" : ""}}">','<div class="layui-unselect layim-chat-title">','<div class="layim-chat-other">','<img src="{{ d.data.avatar }}"><span class="layim-chat-username" layim-event="{{ d.data.type==="group" ? "groupMembers" : "" }}">' +
'{{ d.data.name ||"游客" }} {{d.data.telephone || ""}} {{d.data.temporary ? "<cite>临时会话</cite>" : ""}} {{# if(d.data.type==="group"){ }} <em class="layim-chat-members"></em><i class="layui-icon">&#xe61a;</i> {{# } }}</span>','<p class="layim-chat-status"></p>',"</div>","</div>",'<div class="layim-chat-main">',"<ul></ul>","</div>",'<div class="layim-chat-footer">','<div class="layui-unselect layim-chat-tool" data-json="{{encodeURIComponent(JSON.stringify(d.data))}}">','<span class="layui-icon layim-tool-face" title="选择表情" layim-event="face">&#xe60c;</span>',"{{# if(d.base && d.base.uploadImage){ }}",'<span class="layui-icon layim-tool-image" title="上传图片" layim-event="image">&#xe60d;<input type="file" name="file"></span>',"{{# }; }}","{{# if(d.base && d.base.uploadFile){ }}",
// '<span class="layui-icon layim-tool-image" title="发送文件" layim-event="image" data-type="file">&#xe61d;<input type="file" name="file"></span>', // '<span class="layui-icon layim-tool-image" title="发送文件" layim-event="image" data-type="file">&#xe61d;<input type="file" name="file"></span>',
"{{# }; }}","{{# layui.each(d.base.tool, function(index, item){ }}",'<span class="layui-icon layim-tool-{{item.alias}}" title="{{item.title}}" layim-event="extend" lay-filter="{{ item.alias }}">{{item.icon}}</span>',"{{# }); }}","{{# if(d.base && d.base.chatLog){ }}",'<span class="layim-tool-log" layim-event="chatLog"><i class="layui-icon">&#xe60e;</i>聊天记录</span>',"{{# }; }}","</div>",'<div class="layim-chat-textarea"><textarea></textarea></div>','<div class="layim-chat-bottom">','<div class="layim-chat-send">',"{{# if(!d.base.brief){ }}",'<span class="layim-send-close" layim-event="closeThisChat">关闭</span>',"{{# } }}",'<span class="layim-send-btn" layim-event="send">发送</span>','<span class="layim-send-set" layim-event="setSend" lay-type="show"><em class="layui-edge"></em></span>','<ul class="layui-anim layim-menu-box">','<li {{d.local.sendHotKey !== "Ctrl+Enter" ? "class=layim-this" : ""}} layim-event="setSend" lay-type="Enter"><i class="layui-icon">&#xe618;</i>按Enter键发送消息</li>','<li {{d.local.sendHotKey === "Ctrl+Enter" ? "class=layim-this" : ""}} layim-event="setSend" lay-type="Ctrl+Enter"><i class="layui-icon">&#xe618;</i>按Ctrl+Enter键发送消息</li>',"</ul>","</div>","</div>","</div>","</div>"].join(""),p=['<div class="layim-add-box">','<div class="layim-add-img"><img class="layui-circle" src="{{ d.data.avatar }}"><p>{{ d.data.name||"" }}</p></div>','<div class="layim-add-remark">','{{# if(d.data.type === "friend" && d.type === "setGroup"){ }}',"<p>选择分组</p>",'{{# } if(d.data.type === "friend"){ }}','<select class="layui-select" id="LAY_layimGroup">',"{{# layui.each(d.data.group, function(index, item){ }}",'<option value="{{ item.id }}">{{ item.groupname }}</option>',"{{# }); }}","</select>","{{# } }}",'{{# if(d.data.type === "group"){ }}',"<p>请输入验证信息</p>",'{{# } if(d.type !== "setGroup"){ }}','<textarea id="LAY_layimRemark" placeholder="验证信息" class="layui-textarea"></textarea>',"{{# } }}","</div>","</div>"].join(""),h=['<li {{ d.mine ? "class=layim-chat-mine" : "" }} {{# if(d.cid){ }}data-cid="{{d.cid}}"{{# } }}>','<div class="layim-chat-user"><img src="{{ d.avatar }}"><cite>',"{{# if(d.mine){ }}",'<i>{{ layui.data.date(d.timestamp) }}</i>{{ d.username||"游客" }}',"{{# } else { }}",'{{ d.username||"游客" }}<i>{{ layui.data.date(d.timestamp) }}</i>',"{{# } }}","</cite></div>",'<div class="layim-chat-text">{{ layui.data.content(d.content||"&nbsp") }}</div>',"</li>"].join(""),v='<li class="layim-chatlist-{{ d.data.type }}{{ d.data.id }} layim-this" layim-event="tabChat"><img src="{{ d.data.avatar }}"><span>{{ d.data.name||"游客" }}</span>{{# if(!d.base.brief){ }}<i class="layui-icon" layim-event="closeChat">&#x1007;</i>{{# } }}</li>',g=function(i){return i<10?"0"+(0|i):i};layui.data.date=function(i){var a=new Date(i||new Date);return a.getFullYear()+"-"+g(a.getMonth()+1)+"-"+g(a.getDate())+" "+g(a.getHours())+":"+g(a.getMinutes())+":"+g(a.getSeconds())},layui.data.content=function(i){var a=function(i){return new RegExp("\\n*\\["+(i||"")+"(pre|div|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*","g")};return i=(i||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;").replace(/@(\S+)(\s+?|$)/g,'@<a href="javascript:;">$1</a>$2').replace(/\s{2}/g,"&nbsp").replace(/img\[([^\s]+?)\]/g,function(i){return'<img class="layui-layim-photos" src="'+i.replace(/(^img\[)|(\]$)/g,"")+'">'}).replace(/file\([\s\S]+?\)\[[\s\S]*?\]/g,function(i){var a=(i.match(/file\(([\s\S]+?)\)\[/)||[])[1],e=(i.match(/\)\[([\s\S]*?)\]/)||[])[1];return a?'<a class="layui-layim-file" href="'+a+'" download target="_blank"><i class="layui-icon">&#xe61e;</i><cite>'+(e||a)+"</cite></a>":i}).replace(/face\[([^\s\[\]]+?)\]/g,function(i){var a=i.replace(/^face/g,"");return'<img alt="'+a+'" title="'+a+'" src="'+Q[a]+'">'}).replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g,function(i){var a=(i.match(/a\(([\s\S]+?)\)\[/)||[])[1],e=(i.match(/\)\[([\s\S]*?)\]/)||[])[1];return a?'<a href="'+a+'" target="_blank">'+(e||a)+"</a>":i}).replace(a(),"<$1 $2>").replace(a("/"),"</$1>").replace(/\n/g,"<br>")};var x,b,w,k,C,S=function(i,a,n){return i=i||{},e.ajax({url:i.url,type:i.type||"get",data:i.data,dataType:i.dataType||"json",cache:!1,success:function(i){0==i.code?a&&a(i.data||{}):t.msg(i.msg||(n||"Error")+": LAYIM_NOT_GET_DATA",{time:5e3})},error:function(i,a){window.console&&console.log&&console.error("LAYIM_DATE_ERROR:"+a)}})},j={message:{},chat:[]},H=function(i){var a=i.init||{};return mine=a.mine||{},local=layui.data("layim")[mine.id]||{},obj={base:i,local:local,mine:mine,history:local.history||{}},create=function(a){var t=a.mine||{},l=layui.data("layim")[t.id]||{},s={base:i,local:l,mine:t,friend:a.friend||[],group:a.group||[],history:l.history||{}};j=e.extend(j,s),L(n(y).render(s)),(l.close||i.min)&&I(),layui.each(d.ready,function(i,a){a&&a(s)})},j=e.extend(j,obj),i.brief?layui.each(d.ready,function(i,a){a&&a(obj)}):void(a.url?S(a,create,"INIT"):create(a))},L=function(i){return t.open({type:1,area:["260px","520px"],skin:"layui-box layui-layim",title:"&#8203;",offset:"rb",id:"layui-layim",shade:!1,anim:2,resize:!1,content:i,success:function(i){x=i,_(i),j.base.right&&i.css("margin-left","-"+j.base.right),b&&t.close(b.attr("times"));var a=[],n=i.find(".layim-list-history");n.find("li").each(function(){a.push(e(this).prop("outerHTML"))}),a.length>0&&(a.reverse(),n.html(a.join(""))),z(),ei.sign()},cancel:function(i){I();var a=layui.data("layim")[j.mine.id]||{};return a.close=!0,layui.data("layim",{key:j.mine.id,value:a}),!1}})},z=function(){x.on("contextmenu",function(i){return i.cancelBubble=!0,i.returnValue=!1,!1});var i=function(){t.closeAll("tips")};x.find(".layim-list-history").on("contextmenu","li",function(a){var n=e(this),l='<ul data-id="'+n[0].id+'" data-index="'+n.data("index")+'"><li layim-event="menuHistory" data-type="one">移除该会话</li><li layim-event="menuHistory" data-type="all">清空全部会话列表</li></ul>';n.hasClass("layim-null")||(t.tips(l,this,{tips:1,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-contextmenu",success:function(i){var a=function(i){X(i)};i.off("mousedown",a).on("mousedown",a)}}),e(document).off("mousedown",i).on("mousedown",i),e(window).off("resize",i).on("resize",i))})},I=function(i){return b&&t.close(b.attr("times")),x&&x.hide(),j.mine=j.mine||{},t.open({type:1,title:!1,id:"layui-layim-close",skin:"layui-box layui-layim-min layui-layim-close",shade:!1,closeBtn:!1,anim:2,offset:"rb",resize:!1,content:'<img src="'+(j.mine.avatar||layui.cache.dir+"css/pc/layim/skin/logo.jpg")+'"><span>'+(i||j.base.title||"我的LayIM")+"</span>",move:"#layui-layim-close img",success:function(i,a){b=i,j.base.right&&i.css("margin-left","-"+j.base.right),i.on("click",function(){t.close(a),x.show();var i=layui.data("layim")[j.mine.id]||{};delete i.close,layui.data("layim",{key:j.mine.id,value:i})})}})},T=function(i){i=i||{};var a=e("#layui-layim-chat"),l={data:i,base:j.base,local:j.local};if(!i.id)return t.msg("非法用户");if(a[0]){var s=w.find(".layim-chat-list"),o=s.find(".layim-chatlist-"+i.type+i.id),r=w.find(".layui-layer-max").hasClass("layui-layer-maxmin"),c=a.children(".layim-chat-box");return"none"===w.css("display")&&w.show(),k&&t.close(k.attr("times")),1!==s.find("li").length||o[0]||(r||w.css("width",800),s.css({height:w.height()}).show(),c.css("margin-left","200px")),o[0]||(s.append(n(v).render(l)),c.append(n(f).render(l)),N()),M(s.find(".layim-chatlist-"+i.type+i.id)),o[0]||P(),R(i),Z(),C}l.first=!0;var u=C=t.open({type:1,area:"600px",skin:"layui-box layui-layim-chat",id:"layui-layim-chat",title:"&#8203;",shade:!1,maxmin:!0,offset:i.offset||"auto",anim:i.anim||0,closeBtn:!j.base.brief&&1,content:n('<ul class="layui-unselect layim-chat-list">'+v+'</ul><div class="layim-chat-box">'+f+"</div>").render(l),success:function(a){w=a,a.css({"min-width":"500px","min-height":"420px"}),"function"==typeof i.success&&i.success(a),Z(),_(a),R(i),P(),q(),layui.each(d.chatChange,function(i,a){a&&a(O())}),a.on("dblclick",".layui-layim-photos",function(){var i=this.src;t.close(T.photosIndex),t.photos({photos:{data:[{alt:"大图模式",src:i}]},shade:.01,closeBtn:2,anim:0,resize:!1,success:function(i,a){T.photosIndex=a}})})},full:function(i){t.style(u,{width:"100%",height:"100%"},!0),N()},resizing:N,restore:N,min:function(){return A(),!1},end:function(){t.closeAll("tips"),w=null}});return u},N=function(){var i=w.find(".layim-chat-list"),a=w.find(".layim-chat-main"),e=w.height();i.css({height:e}),a.css({height:e-20-80-158})},A=function(i){var a=i||O().data,n=layui.layim.cache().base;w&&!i&&w.hide(),t.close(A.index),A.index=t.open({type:1,title:!1,skin:"layui-box layui-layim-min",shade:!1,closeBtn:!1,anim:a.anim||2,offset:"b",move:"#layui-layim-min",resize:!1,area:["182px","50px"],content:'<img id="layui-layim-min" src="'+a.avatar+'"><span>'+a.name+"</span>",success:function(a,l){i||(k=a),n.minRight&&t.style(l,{left:e(window).width()-a.outerWidth()-parseFloat(n.minRight)}),a.find(".layui-layer-content span").on("click",function(){t.close(l),i?layui.each(j.chat,function(i,a){T(a)}):w.show(),i&&(j.chat=[],W())}),a.find(".layui-layer-content img").on("click",function(i){X(i)})}})},E=function(i,a){return i=i||{},t.close(E.index),E.index=t.open({type:1,area:"430px",title:{friend:"添加好友",group:"加入群组"}[i.type]||"",shade:!1,resize:!1,btn:a?["确认","取消"]:["发送申请","关闭"],content:n(p).render({data:{name:i.username||i.groupname,avatar:i.avatar,group:i.group||parent.layui.layim.cache().friend||[],type:i.type},type:a}),yes:function(e,t){var n=t.find("#LAY_layimGroup"),l=t.find("#LAY_layimRemark");a?i.submit&&i.submit(n.val(),e):i.submit&&i.submit(n.val(),l.val(),e)}})},M=function(i,a){i=i||e(".layim-chat-list ."+o);var n=i.index()===-1?0:i.index(),l=".layim-chat",r=w.find(l).eq(n),c=w.find(".layui-layer-max").hasClass("layui-layer-maxmin");if(a){i.hasClass(o)&&M(0===n?i.next():i.prev()),i.remove(),r.remove();var u=w.find(l).length;return 1===u&&(w.find(".layim-chat-list").hide(),c||w.css("width","600px"),w.find(".layim-chat-box").css("margin-left",0)),0===u&&t.close(C),!1}i.addClass(o).siblings().removeClass(o),r.addClass(s).siblings(l).removeClass(s),r.find("textarea").focus(),layui.each(d.chatChange,function(i,a){a&&a(O())}),q()},q=function(){var i=O(),a=j.message[i.data.type+i.data.id];a&&delete j.message[i.data.type+i.data.id]},O=function(){if(w){var i=e(".layim-chat-list ."+o).index(),a=w.find(".layim-chat").eq(i),t=JSON.parse(decodeURIComponent(a.find(".layim-chat-tool").data("json")));return{elem:a,data:t,textarea:a.find("textarea")}}},_=function(i){var a=layui.data("layim")[j.mine.id]||{},e=a.skin;i.css({"background-image":e?"url("+e+")":function(){return j.base.initSkin?"url("+(layui.cache.dir+"css/modules/layim/skin/"+j.base.initSkin)+")":"none"}()})},R=function(i){var a=layui.data("layim")[j.mine.id]||{},e={},t=a.history||{},l=t[i.type+i.id];if(x){var s=x.find(".layim-list-history");if(i.historyTime=(new Date).getTime(),t[i.type+i.id]=i,a.history=t,layui.data("layim",{key:j.mine.id,value:a}),!l){e[i.type+i.id]=i;var o=n(u({type:"history",item:"d.data"})).render({data:e});s.prepend(o),s.find(".layim-null").remove()}}},D=function(){var i={username:j.mine?j.mine.username:"访客",avatar:j.mine?j.mine.avatar:layui.cache.dir+"css/pc/layim/skin/logo.jpg",id:j.mine?j.mine.id:null,mine:!0},a=O(),e=a.elem.find(".layim-chat-main ul"),l=j.base.maxLength||3e3;if(i.content=a.textarea.val(),""!==i.content.replace(/\s/g,"")){if(i.content.length>l)return t.msg("内容最长不能超过"+l+"个字符");e.append(n(h).render(i));var s={mine:i,to:a.data},o={username:s.mine.username,avatar:s.mine.avatar,id:s.to.id,type:s.to.type,content:s.mine.content,timestamp:(new Date).getTime(),mine:!0};B(o),layui.each(d.sendMessage,function(i,a){a&&a(s)})}W(),a.textarea.val("").focus()},J=function(i){if(i=i||{},window.Notification)if("granted"===Notification.permission){new Notification(i.title||"",{body:i.content||"",icon:i.avatar||"http://tp2.sinaimg.cn/5488749285/50/5719808192/1"})}else Notification.requestPermission()},G=function(){if(!(l.ie&&l.ie<9)){var i=document.createElement("audio");i.src=layui.cache.dir+"css/modules/layim/voice/"+j.base.voice,i.play()}},K={},Y=function(i){i=i||{};var a=e(".layim-chatlist-"+i.type+i.id),t={},l=a.index();if(i.timestamp=i.timestamp||(new Date).getTime(),i.fromid==j.mine.id&&(i.mine=!0),i.system||B(i),K=JSON.parse(JSON.stringify(i)),j.base.voice&&G(),!w&&i.content||l===-1){if(j.message[i.type+i.id])j.message[i.type+i.id].push(i);else if(j.message[i.type+i.id]=[i],"friend"===i.type){var s;layui.each(j.friend,function(a,e){if(layui.each(e.list,function(a,e){if(e.id==i.id)return e.type="friend",e.name=e.username,j.chat.push(e),s=!0}),s)return!0}),s||(i.name=i.username,i.temporary=!0,j.chat.push(i))}else if("group"===i.type){var o;layui.each(j.group,function(a,e){if(e.id==i.id)return e.type="group",e.name=e.groupname,j.chat.push(e),o=!0}),o||(i.name=i.groupname,j.chat.push(i))}else i.name=i.name||i.username||i.groupname,j.chat.push(i);if("group"===i.type&&layui.each(j.group,function(a,e){if(e.id==i.id)return t.avatar=e.avatar,!0}),!i.system)return j.base.notice&&J({title:"来自 "+i.username+" 的消息",content:i.content,avatar:t.avatar||i.avatar}),A({name:"收到新消息",avatar:t.avatar||i.avatar,anim:6})}if(w){var r=O();r.data.type+r.data.id!==i.type+i.id&&(a.addClass("layui-anim layer-anim-06"),setTimeout(function(){a.removeClass("layui-anim layer-anim-06")},300));var d=w.find(".layim-chat").eq(l),c=d.find(".layim-chat-main ul");i.system?l!==-1&&c.append('<li class="layim-chat-system"><span>'+i.content+"</span></li>"):""!==i.content.replace(/\s/g,"")&&c.append(n(h).render(i)),W()}},$="layui-anim-loop layer-anim-05",F=function(i){var a=x.find(".layim-tool-msgbox");a.find("span").addClass($).html(i)},B=function(i){var a=layui.data("layim")[j.mine.id]||{};a.chatlog=a.chatlog||{};var e=a.chatlog[i.type+i.id];if(e){var t;layui.each(e,function(a,e){e.timestamp===i.timestamp&&e.type===i.type&&e.id===i.id&&e.content===i.content&&(t=!0)}),t||i.fromid==j.mine.id||e.push(i),e.length>r&&e.shift()}else a.chatlog[i.type+i.id]=[i];layui.data("layim",{key:j.mine.id,value:a})},P=function(){var i=layui.data("layim")[j.mine.id]||{},a=O(),e=i.chatlog||{},t=a.elem.find(".layim-chat-main ul");layui.each(e[a.data.type+a.data.id],function(i,a){t.append(n(h).render(a))}),W()},U=function(i){var a,e={},l=x.find(".layim-list-"+i.type);if(j[i.type])if("friend"===i.type)layui.each(j.friend,function(n,l){if(i.groupid==l.id)return layui.each(j.friend[n].list,function(e,t){if(t.id==i.id)return a=!0}),a?t.msg("好友 ["+(i.username||"")+"] 已经存在列表中",{anim:6}):(j.friend[n].list=j.friend[n].list||[],e[j.friend[n].list.length]=i,i.groupIndex=n,j.friend[n].list.push(i),!0)});else if("group"===i.type){if(layui.each(j.group,function(e,t){if(t.id==i.id)return a=!0}),a)return t.msg("您已是 ["+(i.groupname||"")+"] 的群成员",{anim:6});e[j.group.length]=i,j.group.push(i)}if(!a){var s=n(u({type:i.type,item:"d.data",index:"friend"===i.type?"data.groupIndex":null})).render({data:e});if("friend"===i.type){var o=l.find(">li").eq(i.groupIndex);o.find(".layui-layim-list").append(s),o.find(".layim-count").html(j.friend[i.groupIndex].list.length),o.find(".layim-null")[0]&&o.find(".layim-null").remove()}else"group"===i.type&&(l.append(s),l.find(".layim-null")[0]&&l.find(".layim-null").remove())}},V=function(i){var a=x.find(".layim-list-"+i.type);j[i.type]&&("friend"===i.type?layui.each(j.friend,function(e,t){layui.each(t.list,function(t,n){if(i.id==n.id){var l=a.find(">li").eq(e);l.find(".layui-layim-list>li");return l.find(".layui-layim-list>li").eq(t).remove(),j.friend[e].list.splice(t,1),l.find(".layim-count").html(j.friend[e].list.length),0===j.friend[e].list.length&&l.find(".layui-layim-list").html('<li class="layim-null">该分组下已无好友了</li>'),!0}})}):"group"===i.type&&layui.each(j.group,function(e,t){if(i.id==t.id)return a.find(">li").eq(e).remove(),j.group.splice(e,1),0===j.group.length&&a.html('<li class="layim-null">暂无群组</li>'),!0}))},W=function(){var i=O(),a=i.elem.find(".layim-chat-main"),e=a.find("ul"),t=e.find("li").length;if(t>=r){var n=e.find("li").eq(0);e.prev().hasClass("layim-chat-system")||e.before('<div class="layim-chat-system"><span layim-event="chatLog">查看更多记录</span></div>'),t>r&&n.remove()}a.scrollTop(a[0].scrollHeight+1e3),a.find("ul li:last").find("img").load(function(){a.scrollTop(a[0].scrollHeight)})},Z=function(){var i=O(),a=i.textarea;a.focus(),a.off("keydown").on("keydown",function(i){var e=layui.data("layim")[j.mine.id]||{},t=i.keyCode;if("Ctrl+Enter"===e.sendHotKey)return void(i.ctrlKey&&13===t&&D());if(13===t){if(i.ctrlKey)return a.val(a.val()+"\n");if(i.shiftKey)return;i.preventDefault(),D()}})},Q=function(){var i=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],a={};return layui.each(i,function(i,e){a[e]=layui.cache.dir+"images/face/"+i+".gif"}),a}(),X=layui.stope,ii=function(i,a){var e,t=i.value;i.focus(),document.selection?(e=document.selection.createRange(),document.selection.empty(),e.text=a):(e=[t.substring(0,i.selectionStart),a,t.substr(i.selectionEnd)],i.focus(),i.value=e.join(""))},ai="layui-anim-upbit",ei={status:function(i,a){var t=function(){i.next().hide().removeClass(ai)},n=i.attr("lay-type");if("show"===n)X(a),i.next().show().addClass(ai),e(document).off("click",t).on("click",t);else{var l=i.parent().prev();i.addClass(o).siblings().removeClass(o),l.html(i.find("cite").html()),l.removeClass("layim-status-"+("online"===n?"hide":"online")).addClass("layim-status-"+n),layui.each(d.online,function(i,a){a&&a(n)})}},sign:function(){var i=x.find(".layui-layim-remark");i.on("change",function(){var i=this.value;layui.each(d.sign,function(a,e){e&&e(i)})}),i.on("keyup",function(i){var a=i.keyCode;13===a&&this.blur()})},tab:function(i){var a,e=".layim-tab-content",t=x.find(".layui-layim-tab>li");"number"==typeof i?(a=i,i=t.eq(a)):a=i.index(),a>2?t.removeClass(o):(ei.tab.index=a,i.addClass(o).siblings().removeClass(o)),x.find(e).eq(a).addClass(s).siblings(e).removeClass(s)},spread:function(i){var a=i.attr("lay-type"),e="true"===a?"false":"true",t=layui.data("layim")[j.mine.id]||{};i.next()["true"===a?"removeClass":"addClass"](s),t["spread"+i.parent().index()]=e,layui.data("layim",{key:j.mine.id,value:t}),i.attr("lay-type",e),i.find(".layui-icon").html("true"===e?"&#xe61a;":"&#xe602;")},search:function(i){var a=x.find(".layui-layim-search"),e=x.find("#layui-layim-search"),t=a.find("input"),n=function(i){var a=t.val().replace(/\s/);if(""===a)ei.tab(0|ei.tab.index);else{for(var n=[],l=j.friend||[],s=j.group||[],o="",r=0;r<l.length;r++)for(var d=0;d<(l[r].list||[]).length;d++)l[r].list[d].username.indexOf(a)!==-1&&(l[r].list[d].type="friend",l[r].list[d].index=r,l[r].list[d].list=d,n.push(l[r].list[d]));for(var c=0;c<s.length;c++)s[c].groupname.indexOf(a)!==-1&&(s[c].type="group",s[c].index=c,s[c].list=c,n.push(s[c]));if(n.length>0)for(var u=0;u<n.length;u++)o+='<li layim-event="chat" data-type="'+n[u].type+'" data-index="'+n[u].index+'" data-list="'+n[u].list+'"><img src="'+n[u].avatar+'"><span>'+(n[u].username||n[u].groupname||"游客")+"</span><p>"+(n[u].remark||n[u].sign||"")+"</p></li>";else o='<li class="layim-null">无搜索结果</li>';e.html(o),ei.tab(3)}};!j.base.isfriend&&j.base.isgroup?ei.tab.index=1:j.base.isfriend||j.base.isgroup||(ei.tab.index=2),a.show(),t.focus(),t.off("keyup",n).on("keyup",n)},closeSearch:function(i){i.parent().hide(),ei.tab(0|ei.tab.index)},msgbox:function(){var i=x.find(".layim-tool-msgbox");return t.close(ei.msgbox.index),i.find("span").removeClass($).html(""),ei.msgbox.index=t.open({type:2,title:"消息盒子",shade:!1,maxmin:!0,area:["600px","520px"],skin:"layui-box layui-layer-border",resize:!1,content:j.base.msgbox})},find:function(){return t.close(ei.find.index),ei.find.index=t.open({type:2,title:"查找",shade:!1,maxmin:!0,area:["1000px","520px"],skin:"layui-box layui-layer-border",resize:!1,content:j.base.find})},skin:function(){t.open({type:1,title:"更换背景",shade:!1,area:"300px",skin:"layui-box layui-layer-border",id:"layui-layim-skin",zIndex:66666666,resize:!1,content:n(m).render({skin:j.base.skin})})},about:function(){t.alert("版本: "+a+'<br>版权所有:<a href="http://layim.layui.com" target="_blank">layim.layui.com</a>',{title:"关于 LayIM",shade:!1})},setSkin:function(i){var a=i.attr("src"),e=layui.data("layim")[j.mine.id]||{};e.skin=a,a||delete e.skin,layui.data("layim",{key:j.mine.id,value:e});try{x.css({"background-image":a?"url("+a+")":"none"}),w.css({"background-image":a?"url("+a+")":"none"})}catch(t){}},chat:function(i){var a=layui.data("layim")[j.mine.id]||{},e=i.data("type"),t=i.data("index"),n=i.attr("data-list")||i.index(),l={};"friend"===e?l=j[e][t].list[n]:"group"===e?l=j[e][n]:"history"===e&&(l=(a.history||{})[t]||{}),l.name=l.name||l.username||l.groupname,"history"!==e&&(l.type=e),T(l)},tabChat:function(i){M(i)},closeChat:function(i){M(i.parent(),1)},closeThisChat:function(){M(null,1)},groupMembers:function(i,a){var n=i.find(".layui-icon"),l=function(){n.html("&#xe61a;"),i.data("down",null),t.close(ei.groupMembers.index)},s=function(i){X(i)};i.data("down")?l():(n.html("&#xe619;"),i.data("down",!0),ei.groupMembers.index=t.tips('<ul class="layim-members-list"></ul>',i,{tips:3,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-members",success:function(a){var t=j.base.members||{},n=O(),s=a.find(".layim-members-list"),o="",r={},c=w.find(".layui-layer-max").hasClass("layui-layer-maxmin"),u="none"===w.find(".layim-chat-list").css("display");c&&s.css({width:e(window).width()-22-(u||200)}),t.data=e.extend(t.data,{id:n.data.id}),S(t,function(a){layui.each(a.list,function(i,a){o+='<li data-uid="'+a.id+'"><a href="javascript:;"><img src="'+a.avatar+'"><cite>'+a.username+"</cite></a></li>",r[a.id]=a}),s.html(o),i.find(".layim-chat-members").html(a.members||(a.list||[]).length+"人"),s.find("li").on("click",function(){var i=e(this).data("uid"),a=r[i];T({name:a.username,type:"friend",avatar:a.avatar,id:a.id}),l()}),layui.each(d.members,function(i,e){e&&e(a)})}),a.on("mousedown",function(i){X(i)})}}),e(document).off("mousedown",l).on("mousedown",l),e(window).off("resize",l).on("resize",l),i.off("mousedown",s).on("mousedown",s))},send:function(){D()},setSend:function(i,a){var t=ei.setSend.box=i.siblings(".layim-menu-box"),n=i.attr("lay-type");if("show"===n)X(a),t.show().addClass(ai),e(document).off("click",ei.setSendHide).on("click",ei.setSendHide);else{i.addClass(o).siblings().removeClass(o);var l=layui.data("layim")[j.mine.id]||{};l.sendHotKey=n,layui.data("layim",{key:j.mine.id,value:l}),ei.setSendHide(a,i.parent())}},setSendHide:function(i,a){(a||ei.setSend.box).hide().removeClass(ai)},face:function(i,a){var n="",l=O();for(var s in Q)n+='<li title="'+s+'"><img src="'+Q[s]+'"></li>';n='<ul class="layui-clear layim-face-list">'+n+"</ul>",ei.face.index=t.tips(n,i,{tips:1,time:0,fixed:!0,skin:"layui-box layui-layim-face",success:function(i){i.find(".layim-face-list>li").on("mousedown",function(i){X(i)}).on("click",function(){ii(l.textarea[0],"face"+this.title+" "),t.close(ei.face.index)})}}),e(document).off("mousedown",ei.faceHide).on("mousedown",ei.faceHide),e(window).off("resize",ei.faceHide).on("resize",ei.faceHide),X(a)},faceHide:function(){t.close(ei.face.index)},image:function(i){var a=i.data("type")||"images",e={images:"uploadImage",file:"uploadFile"},n=O(),l=j.base[e[a]]||{};layui.upload({url:l.url||"",method:l.type,elem:i.find("input")[0],unwrap:!0,type:a,success:function(i){0==i.code?(i.data=i.data||{},"images"===a?ii(n.textarea[0],"img["+(i.data.src||"")+"]"):"file"===a&&ii(n.textarea[0],"file("+(i.data.src||"")+")["+(i.data.name||"下载文件")+"]"),D()):t.msg(i.msg||"上传失败")}})},extend:function(i){var a=i.attr("lay-filter"),e=O();layui.each(d["tool("+a+")"],function(a,t){t&&t.call(i,function(i){ii(e.textarea[0],i)},D,e)})},chatLog:function(i){var a=O();return j.base.chatLog?(t.close(ei.chatLog.index),ei.chatLog.index=t.open({type:2,maxmin:!0,title:"与 "+a.data.name+" 的聊天记录",area:["450px","100%"],shade:!1,offset:"rb",skin:"layui-box",anim:2,id:"layui-layim-chatlog",content:j.base.chatLog+"?id="+a.data.id+"&type="+a.data.type})):t.msg("未开启更多聊天记录")},menuHistory:function(i,a){var n=layui.data("layim")[j.mine.id]||{},l=i.parent(),s=i.data("type"),o=x.find(".layim-list-history"),r='<li class="layim-null">暂无历史会话</li>'; "{{# }; }}","{{# layui.each(d.base.tool, function(index, item){ }}",'<span class="layui-icon layim-tool-{{item.alias}}" title="{{item.title}}" layim-event="extend" lay-filter="{{ item.alias }}">{{item.icon}}</span>',"{{# }); }}","{{# if(d.base && d.base.chatLog){ }}",'<span class="layim-tool-log" layim-event="chatLog"><i class="layui-icon">&#xe60e;</i>聊天记录</span>',"{{# }; }}","</div>",'<div class="layim-chat-textarea"><textarea></textarea></div>','<div class="layim-chat-bottom">','<div class="layim-chat-send">',"{{# if(!d.base.brief){ }}",'<span class="layim-send-close" layim-event="closeThisChat">关闭</span>',"{{# } }}",'<span class="layim-send-btn" layim-event="send">发送</span>','<span class="layim-send-set" layim-event="setSend" lay-type="show"><em class="layui-edge"></em></span>','<ul class="layui-anim layim-menu-box">','<li {{d.local.sendHotKey !== "Ctrl+Enter" ? "class=layim-this" : ""}} layim-event="setSend" lay-type="Enter"><i class="layui-icon">&#xe618;</i>按Enter键发送消息</li>','<li {{d.local.sendHotKey === "Ctrl+Enter" ? "class=layim-this" : ""}} layim-event="setSend" lay-type="Ctrl+Enter"><i class="layui-icon">&#xe618;</i>按Ctrl+Enter键发送消息</li>',"</ul>","</div>","</div>","</div>","</div>"].join(""),p=['<div class="layim-add-box">','<div class="layim-add-img"><img class="layui-circle" src="{{ d.data.avatar }}"><p>{{ d.data.name||"" }}</p></div>','<div class="layim-add-remark">','{{# if(d.data.type === "friend" && d.type === "setGroup"){ }}',"<p>选择分组</p>",'{{# } if(d.data.type === "friend"){ }}','<select class="layui-select" id="LAY_layimGroup">',"{{# layui.each(d.data.group, function(index, item){ }}",'<option value="{{ item.id }}">{{ item.groupname }}</option>',"{{# }); }}","</select>","{{# } }}",'{{# if(d.data.type === "group"){ }}',"<p>请输入验证信息</p>",'{{# } if(d.type !== "setGroup"){ }}','<textarea id="LAY_layimRemark" placeholder="验证信息" class="layui-textarea"></textarea>',"{{# } }}","</div>","</div>"].join(""),h=['<li {{ d.mine ? "class=layim-chat-mine" : "" }} {{# if(d.cid){ }}data-cid="{{d.cid}}"{{# } }}>','<div class="layim-chat-user"><img src="{{ d.avatar }}"><cite>',"{{# if(d.mine){ }}",'<i>{{ layui.data.date(d.timestamp) }}</i>{{ d.username||"游客" }}',"{{# } else { }}",'{{ d.username||"游客" }}<i>{{ layui.data.date(d.timestamp) }}</i>',"{{# } }}","</cite></div>",'<div class="layim-chat-text">{{ layui.data.content(d.content||"&nbsp") }}</div>',"</li>"].join(""),v='<li class="layim-chatlist-{{ d.data.type }}{{ d.data.id }} layim-this" layim-event="tabChat"><img src="{{ d.data.avatar }}"><span>{{ d.data.name||"游客" }}</span>{{# if(!d.base.brief){ }}<i class="layui-icon" layim-event="closeChat">&#x1007;</i>{{# } }}</li>',g=function(i){return i<10?"0"+(0|i):i};layui.data.date=function(i){var a=new Date(i||new Date);return a.getFullYear()+"-"+g(a.getMonth()+1)+"-"+g(a.getDate())+" "+g(a.getHours())+":"+g(a.getMinutes())+":"+g(a.getSeconds())},layui.data.content=function(i){var a=function(i){return new RegExp("\\n*\\["+(i||"")+"(pre|div|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*","g")};return i=(i||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;").replace(/@(\S+)(\s+?|$)/g,'@<a href="javascript:;">$1</a>$2').replace(/\s{2}/g,"&nbsp").replace(/img\[([^\s]+?)\]/g,function(i){return'<img class="layui-layim-photos" src="'+i.replace(/(^img\[)|(\]$)/g,"")+'">'}).replace(/file\([\s\S]+?\)\[[\s\S]*?\]/g,function(i){var a=(i.match(/file\(([\s\S]+?)\)\[/)||[])[1],e=(i.match(/\)\[([\s\S]*?)\]/)||[])[1];return a?'<a class="layui-layim-file" href="'+a+'" download target="_blank"><i class="layui-icon">&#xe61e;</i><cite>'+(e||a)+"</cite></a>":i}).replace(/face\[([^\s\[\]]+?)\]/g,function(i){var a=i.replace(/^face/g,"");return'<img alt="'+a+'" title="'+a+'" src="'+Q[a]+'">'}).replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g,function(i){var a=(i.match(/a\(([\s\S]+?)\)\[/)||[])[1],e=(i.match(/\)\[([\s\S]*?)\]/)||[])[1];return a?'<a href="'+a+'" target="_blank">'+(e||a)+"</a>":i}).replace(a(),"<$1 $2>").replace(a("/"),"</$1>").replace(/\n/g,"<br>")};var x,b,w,k,C,S=function(i,a,n){return i=i||{},e.ajax({url:i.url,type:i.type||"get",data:i.data,dataType:i.dataType||"json",cache:!1,success:function(i){0==i.code?a&&a(i.data||{}):t.msg(i.msg||(n||"Error")+": LAYIM_NOT_GET_DATA",{time:5e3})},error:function(i,a){window.console&&console.log&&console.error("LAYIM_DATE_ERROR:"+a)}})},j={message:{},chat:[]},H=function(i){var a=i.init||{};return mine=a.mine||{},local=layui.data("layim")[mine.id]||{},obj={base:i,local:local,mine:mine,history:local.history||{}},create=function(a){var t=a.mine||{},l=layui.data("layim")[t.id]||{},s={base:i,local:l,mine:t,friend:a.friend||[],group:a.group||[],history:l.history||{}};j=e.extend(j,s),L(n(y).render(s)),(l.close||i.min)&&I(),layui.each(d.ready,function(i,a){a&&a(s)})},j=e.extend(j,obj),i.brief?layui.each(d.ready,function(i,a){a&&a(obj)}):void(a.url?S(a,create,"INIT"):create(a))},L=function(i){return t.open({type:1,area:["260px","520px"],skin:"layui-box layui-layim",title:"&#8203;",offset:"rb",id:"layui-layim",shade:!1,anim:2,resize:!1,content:i,success:function(i){x=i,_(i),j.base.right&&i.css("margin-left","-"+j.base.right),b&&t.close(b.attr("times"));var a=[],n=i.find(".layim-list-history");n.find("li").each(function(){a.push(e(this).prop("outerHTML"))}),a.length>0&&(a.reverse(),n.html(a.join(""))),z(),ei.sign()},cancel:function(i){I();var a=layui.data("layim")[j.mine.id]||{};return a.close=!0,layui.data("layim",{key:j.mine.id,value:a}),!1}})},z=function(){x.on("contextmenu",function(i){return i.cancelBubble=!0,i.returnValue=!1,!1});var i=function(){t.closeAll("tips")};x.find(".layim-list-history").on("contextmenu","li",function(a){var n=e(this),l='<ul data-id="'+n[0].id+'" data-index="'+n.data("index")+'"><li layim-event="menuHistory" data-type="one">移除该会话</li><li layim-event="menuHistory" data-type="all">清空全部会话列表</li></ul>';n.hasClass("layim-null")||(t.tips(l,this,{tips:1,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-contextmenu",success:function(i){var a=function(i){X(i)};i.off("mousedown",a).on("mousedown",a)}}),e(document).off("mousedown",i).on("mousedown",i),e(window).off("resize",i).on("resize",i))})},I=function(i){return b&&t.close(b.attr("times")),x&&x.hide(),j.mine=j.mine||{},t.open({type:1,title:!1,id:"layui-layim-close",skin:"layui-box layui-layim-min layui-layim-close",shade:!1,closeBtn:!1,anim:2,offset:"rb",resize:!1,content:'<img src="'+(j.mine.avatar||layui.cache.dir+"css/pc/layim/skin/logo.jpg")+'"><span>'+(i||j.base.title||"我的LayIM")+"</span>",move:"#layui-layim-close img",success:function(i,a){b=i,j.base.right&&i.css("margin-left","-"+j.base.right),i.on("click",function(){t.close(a),x.show();var i=layui.data("layim")[j.mine.id]||{};delete i.close,layui.data("layim",{key:j.mine.id,value:i})})}})},T=function(i){i=i||{};var a=e("#layui-layim-chat"),l={data:i,base:j.base,local:j.local};if(!i.id)return t.msg("非法用户");if(a[0]){var s=w.find(".layim-chat-list"),o=s.find(".layim-chatlist-"+i.type+i.id),r=w.find(".layui-layer-max").hasClass("layui-layer-maxmin"),c=a.children(".layim-chat-box");return"none"===w.css("display")&&w.show(),k&&t.close(k.attr("times")),1!==s.find("li").length||o[0]||(r||w.css("width",800),s.css({height:w.height()}).show(),c.css("margin-left","200px")),o[0]||(s.append(n(v).render(l)),c.append(n(f).render(l)),N()),M(s.find(".layim-chatlist-"+i.type+i.id)),o[0]||P(),R(i),Z(),C}l.first=!0;var u=C=t.open({type:1,area:"600px",skin:"layui-box layui-layim-chat",id:"layui-layim-chat",title:"&#8203;",shade:!1,maxmin:!0,offset:i.offset||"auto",anim:i.anim||0,closeBtn:!j.base.brief&&1,content:n('<ul class="layui-unselect layim-chat-list">'+v+'</ul><div class="layim-chat-box">'+f+"</div>").render(l),success:function(a){w=a,a.css({"min-width":"500px","min-height":"420px"}),"function"==typeof i.success&&i.success(a),Z(),_(a),R(i),P(),q(),layui.each(d.chatChange,function(i,a){a&&a(O())}),a.on("dblclick",".layui-layim-photos",function(){var i=this.src;t.close(T.photosIndex),t.photos({photos:{data:[{alt:"大图模式",src:i}]},shade:.01,closeBtn:2,anim:0,resize:!1,success:function(i,a){T.photosIndex=a}})})},full:function(i){t.style(u,{width:"100%",height:"100%"},!0),N()},resizing:N,restore:N,min:function(){return A(),!1},end:function(){t.closeAll("tips"),w=null}});return u},N=function(){var i=w.find(".layim-chat-list"),a=w.find(".layim-chat-main"),e=w.height();i.css({height:e}),a.css({height:e-20-80-158})},A=function(i){var a=i||O().data,n=layui.layim.cache().base;w&&!i&&w.hide(),t.close(A.index),A.index=t.open({type:1,title:!1,skin:"layui-box layui-layim-min",shade:!1,closeBtn:!1,anim:a.anim||2,offset:"b",move:"#layui-layim-min",resize:!1,area:["182px","50px"],content:'<img id="layui-layim-min" src="'+a.avatar+'"><span>'+a.name+"</span>",success:function(a,l){i||(k=a),n.minRight&&t.style(l,{left:e(window).width()-a.outerWidth()-parseFloat(n.minRight)}),a.find(".layui-layer-content span").on("click",function(){t.close(l),i?layui.each(j.chat,function(i,a){T(a)}):w.show(),i&&(j.chat=[],W())}),a.find(".layui-layer-content img").on("click",function(i){X(i)})}})},E=function(i,a){return i=i||{},t.close(E.index),E.index=t.open({type:1,area:"430px",title:{friend:"添加好友",group:"加入群组"}[i.type]||"",shade:!1,resize:!1,btn:a?["确认","取消"]:["发送申请","关闭"],content:n(p).render({data:{name:i.username||i.groupname,avatar:i.avatar,group:i.group||parent.layui.layim.cache().friend||[],type:i.type},type:a}),yes:function(e,t){var n=t.find("#LAY_layimGroup"),l=t.find("#LAY_layimRemark");a?i.submit&&i.submit(n.val(),e):i.submit&&i.submit(n.val(),l.val(),e)}})},M=function(i,a){i=i||e(".layim-chat-list ."+o);var n=i.index()===-1?0:i.index(),l=".layim-chat",r=w.find(l).eq(n),c=w.find(".layui-layer-max").hasClass("layui-layer-maxmin");if(a){i.hasClass(o)&&M(0===n?i.next():i.prev()),i.remove(),r.remove();var u=w.find(l).length;return 1===u&&(w.find(".layim-chat-list").hide(),c||w.css("width","600px"),w.find(".layim-chat-box").css("margin-left",0)),0===u&&t.close(C),!1}i.addClass(o).siblings().removeClass(o),r.addClass(s).siblings(l).removeClass(s),r.find("textarea").focus(),layui.each(d.chatChange,function(i,a){a&&a(O())}),q()},q=function(){var i=O(),a=j.message[i.data.type+i.data.id];a&&delete j.message[i.data.type+i.data.id]},O=function(){if(w){var i=e(".layim-chat-list ."+o).index(),a=w.find(".layim-chat").eq(i),t=JSON.parse(decodeURIComponent(a.find(".layim-chat-tool").data("json")));return{elem:a,data:t,textarea:a.find("textarea")}}},_=function(i){var a=layui.data("layim")[j.mine.id]||{},e=a.skin;i.css({"background-image":e?"url("+e+")":function(){return j.base.initSkin?"url("+(layui.cache.dir+"css/modules/layim/skin/"+j.base.initSkin)+")":"none"}()})},R=function(i){var a=layui.data("layim")[j.mine.id]||{},e={},t=a.history||{},l=t[i.type+i.id];if(x){var s=x.find(".layim-list-history");if(i.historyTime=(new Date).getTime(),t[i.type+i.id]=i,a.history=t,layui.data("layim",{key:j.mine.id,value:a}),!l){e[i.type+i.id]=i;var o=n(u({type:"history",item:"d.data"})).render({data:e});s.prepend(o),s.find(".layim-null").remove()}}},D=function(){var i={username:j.mine?j.mine.username:"访客",avatar:j.mine?j.mine.avatar:layui.cache.dir+"css/pc/layim/skin/logo.jpg",id:j.mine?j.mine.id:null,mine:!0},a=O(),e=a.elem.find(".layim-chat-main ul"),l=j.base.maxLength||3e3;if(i.content=a.textarea.val(),""!==i.content.replace(/\s/g,"")){if(i.content.length>l)return t.msg("内容最长不能超过"+l+"个字符");e.append(n(h).render(i));var s={mine:i,to:a.data},o={username:s.mine.username,avatar:s.mine.avatar,id:s.to.id,type:s.to.type,content:s.mine.content,timestamp:(new Date).getTime(),mine:!0};B(o),layui.each(d.sendMessage,function(i,a){a&&a(s)})}W(),a.textarea.val("").focus()},J=function(i){if(i=i||{},window.Notification)if("granted"===Notification.permission){new Notification(i.title||"",{body:i.content||"",icon:i.avatar||"http://tp2.sinaimg.cn/5488749285/50/5719808192/1"})}else Notification.requestPermission()},G=function(){if(!(l.ie&&l.ie<9)){var i=document.createElement("audio");i.src=layui.cache.dir+"css/modules/layim/voice/"+j.base.voice,i.play()}},K={},Y=function(i){i=i||{};var a=e(".layim-chatlist-"+i.type+i.id),t={},l=a.index();if(i.timestamp=i.timestamp||(new Date).getTime(),i.fromid==j.mine.id&&(i.mine=!0),i.system||B(i),K=JSON.parse(JSON.stringify(i)),j.base.voice&&G(),!w&&i.content||l===-1){if(j.message[i.type+i.id])j.message[i.type+i.id].push(i);else if(j.message[i.type+i.id]=[i],"friend"===i.type){var s;layui.each(j.friend,function(a,e){if(layui.each(e.list,function(a,e){if(e.id==i.id)return e.type="friend",e.name=e.username,j.chat.push(e),s=!0}),s)return!0}),s||(i.name=i.username,i.temporary=!0,j.chat.push(i))}else if("group"===i.type){var o;layui.each(j.group,function(a,e){if(e.id==i.id)return e.type="group",e.name=e.groupname,j.chat.push(e),o=!0}),o||(i.name=i.groupname,j.chat.push(i))}else i.name=i.name||i.username||i.groupname,j.chat.push(i);if("group"===i.type&&layui.each(j.group,function(a,e){if(e.id==i.id)return t.avatar=e.avatar,!0}),!i.system)return j.base.notice&&J({title:"来自 "+i.username+" 的消息",content:i.content,avatar:t.avatar||i.avatar}),A({name:"收到新消息",avatar:t.avatar||i.avatar,anim:6})}if(w){var r=O();r.data.type+r.data.id!==i.type+i.id&&(a.addClass("layui-anim layer-anim-06"),setTimeout(function(){a.removeClass("layui-anim layer-anim-06")},300));var d=w.find(".layim-chat").eq(l),c=d.find(".layim-chat-main ul");i.system?l!==-1&&c.append('<li class="layim-chat-system"><span>'+i.content+"</span></li>"):""!==i.content.replace(/\s/g,"")&&c.append(n(h).render(i)),W()}},$="layui-anim-loop layer-anim-05",F=function(i){var a=x.find(".layim-tool-msgbox");a.find("span").addClass($).html(i)},B=function(i){var a=layui.data("layim")[j.mine.id]||{};a.chatlog=a.chatlog||{};var e=a.chatlog[i.type+i.id];if(e){var t;layui.each(e,function(a,e){e.timestamp===i.timestamp&&e.type===i.type&&e.id===i.id&&e.content===i.content&&(t=!0)}),t||i.fromid==j.mine.id||e.push(i),e.length>r&&e.shift()}else a.chatlog[i.type+i.id]=[i];layui.data("layim",{key:j.mine.id,value:a})},P=function(){var i=layui.data("layim")[j.mine.id]||{},a=O(),e=i.chatlog||{},t=a.elem.find(".layim-chat-main ul");layui.each(e[a.data.type+a.data.id],function(i,a){t.append(n(h).render(a))}),W()},U=function(i){var a,e={},l=x.find(".layim-list-"+i.type);if(j[i.type])if("friend"===i.type)layui.each(j.friend,function(n,l){if(i.groupid==l.id)return layui.each(j.friend[n].list,function(e,t){if(t.id==i.id)return a=!0}),a?t.msg("好友 ["+(i.username||"")+"] 已经存在列表中",{anim:6}):(j.friend[n].list=j.friend[n].list||[],e[j.friend[n].list.length]=i,i.groupIndex=n,j.friend[n].list.push(i),!0)});else if("group"===i.type){if(layui.each(j.group,function(e,t){if(t.id==i.id)return a=!0}),a)return t.msg("您已是 ["+(i.groupname||"")+"] 的群成员",{anim:6});e[j.group.length]=i,j.group.push(i)}if(!a){var s=n(u({type:i.type,item:"d.data",index:"friend"===i.type?"data.groupIndex":null})).render({data:e});if("friend"===i.type){var o=l.find(">li").eq(i.groupIndex);o.find(".layui-layim-list").append(s),o.find(".layim-count").html(j.friend[i.groupIndex].list.length),o.find(".layim-null")[0]&&o.find(".layim-null").remove()}else"group"===i.type&&(l.append(s),l.find(".layim-null")[0]&&l.find(".layim-null").remove())}},V=function(i){var a=x.find(".layim-list-"+i.type);j[i.type]&&("friend"===i.type?layui.each(j.friend,function(e,t){layui.each(t.list,function(t,n){if(i.id==n.id){var l=a.find(">li").eq(e);l.find(".layui-layim-list>li");return l.find(".layui-layim-list>li").eq(t).remove(),j.friend[e].list.splice(t,1),l.find(".layim-count").html(j.friend[e].list.length),0===j.friend[e].list.length&&l.find(".layui-layim-list").html('<li class="layim-null">该分组下已无好友了</li>'),!0}})}):"group"===i.type&&layui.each(j.group,function(e,t){if(i.id==t.id)return a.find(">li").eq(e).remove(),j.group.splice(e,1),0===j.group.length&&a.html('<li class="layim-null">暂无群组</li>'),!0}))},W=function(){var i=O(),a=i.elem.find(".layim-chat-main"),e=a.find("ul"),t=e.find("li").length;if(t>=r){var n=e.find("li").eq(0);e.prev().hasClass("layim-chat-system")||e.before('<div class="layim-chat-system"><span layim-event="chatLog">查看更多记录</span></div>'),t>r&&n.remove()}a.scrollTop(a[0].scrollHeight+1e3),a.find("ul li:last").find("img").load(function(){a.scrollTop(a[0].scrollHeight)})},Z=function(){var i=O(),a=i.textarea;a.focus(),a.off("keydown").on("keydown",function(i){var e=layui.data("layim")[j.mine.id]||{},t=i.keyCode;if("Ctrl+Enter"===e.sendHotKey)return void(i.ctrlKey&&13===t&&D());if(13===t){if(i.ctrlKey)return a.val(a.val()+"\n");if(i.shiftKey)return;i.preventDefault(),D()}})},Q=function(){var i=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],a={};return layui.each(i,function(i,e){a[e]=layui.cache.dir+"images/face/"+i+".gif"}),a}(),X=layui.stope,ii=function(i,a){var e,t=i.value;i.focus(),document.selection?(e=document.selection.createRange(),document.selection.empty(),e.text=a):(e=[t.substring(0,i.selectionStart),a,t.substr(i.selectionEnd)],i.focus(),i.value=e.join(""))},ai="layui-anim-upbit",ei={status:function(i,a){var t=function(){i.next().hide().removeClass(ai)},n=i.attr("lay-type");if("show"===n)X(a),i.next().show().addClass(ai),e(document).off("click",t).on("click",t);else{var l=i.parent().prev();i.addClass(o).siblings().removeClass(o),l.html(i.find("cite").html()),l.removeClass("layim-status-"+("online"===n?"hide":"online")).addClass("layim-status-"+n),layui.each(d.online,function(i,a){a&&a(n)})}},sign:function(){var i=x.find(".layui-layim-remark");i.on("change",function(){var i=this.value;layui.each(d.sign,function(a,e){e&&e(i)})}),i.on("keyup",function(i){var a=i.keyCode;13===a&&this.blur()})},tab:function(i){var a,e=".layim-tab-content",t=x.find(".layui-layim-tab>li");"number"==typeof i?(a=i,i=t.eq(a)):a=i.index(),a>2?t.removeClass(o):(ei.tab.index=a,i.addClass(o).siblings().removeClass(o)),x.find(e).eq(a).addClass(s).siblings(e).removeClass(s)},spread:function(i){var a=i.attr("lay-type"),e="true"===a?"false":"true",t=layui.data("layim")[j.mine.id]||{};i.next()["true"===a?"removeClass":"addClass"](s),t["spread"+i.parent().index()]=e,layui.data("layim",{key:j.mine.id,value:t}),i.attr("lay-type",e),i.find(".layui-icon").html("true"===e?"&#xe61a;":"&#xe602;")},search:function(i){var a=x.find(".layui-layim-search"),e=x.find("#layui-layim-search"),t=a.find("input"),n=function(i){var a=t.val().replace(/\s/);if(""===a)ei.tab(0|ei.tab.index);else{for(var n=[],l=j.friend||[],s=j.group||[],o="",r=0;r<l.length;r++)for(var d=0;d<(l[r].list||[]).length;d++)l[r].list[d].username.indexOf(a)!==-1&&(l[r].list[d].type="friend",l[r].list[d].index=r,l[r].list[d].list=d,n.push(l[r].list[d]));for(var c=0;c<s.length;c++)s[c].groupname.indexOf(a)!==-1&&(s[c].type="group",s[c].index=c,s[c].list=c,n.push(s[c]));if(n.length>0)for(var u=0;u<n.length;u++)o+='<li layim-event="chat" data-type="'+n[u].type+'" data-index="'+n[u].index+'" data-list="'+n[u].list+'"><img src="'+n[u].avatar+'"><span>'+(n[u].username||n[u].groupname||"游客")+"</span><p>"+(n[u].remark||n[u].sign||"")+"</p></li>";else o='<li class="layim-null">无搜索结果</li>';e.html(o),ei.tab(3)}};!j.base.isfriend&&j.base.isgroup?ei.tab.index=1:j.base.isfriend||j.base.isgroup||(ei.tab.index=2),a.show(),t.focus(),t.off("keyup",n).on("keyup",n)},closeSearch:function(i){i.parent().hide(),ei.tab(0|ei.tab.index)},msgbox:function(){var i=x.find(".layim-tool-msgbox");return t.close(ei.msgbox.index),i.find("span").removeClass($).html(""),ei.msgbox.index=t.open({type:2,title:"消息盒子",shade:!1,maxmin:!0,area:["600px","520px"],skin:"layui-box layui-layer-border",resize:!1,content:j.base.msgbox})},find:function(){return t.close(ei.find.index),ei.find.index=t.open({type:2,title:"查找",shade:!1,maxmin:!0,area:["1000px","520px"],skin:"layui-box layui-layer-border",resize:!1,content:j.base.find})},skin:function(){t.open({type:1,title:"更换背景",shade:!1,area:"300px",skin:"layui-box layui-layer-border",id:"layui-layim-skin",zIndex:66666666,resize:!1,content:n(m).render({skin:j.base.skin})})},about:function(){t.alert("版本: "+a+'<br>版权所有:<a href="http://layim.layui.com" target="_blank">layim.layui.com</a>',{title:"关于 LayIM",shade:!1})},setSkin:function(i){var a=i.attr("src"),e=layui.data("layim")[j.mine.id]||{};e.skin=a,a||delete e.skin,layui.data("layim",{key:j.mine.id,value:e});try{x.css({"background-image":a?"url("+a+")":"none"}),w.css({"background-image":a?"url("+a+")":"none"})}catch(t){}},chat:function(i){var a=layui.data("layim")[j.mine.id]||{},e=i.data("type"),t=i.data("index"),n=i.attr("data-list")||i.index(),l={};"friend"===e?l=j[e][t].list[n]:"group"===e?l=j[e][n]:"history"===e&&(l=(a.history||{})[t]||{}),l.name=l.name||l.username||l.groupname,"history"!==e&&(l.type=e),T(l)},tabChat:function(i){M(i)},closeChat:function(i){M(i.parent(),1)},closeThisChat:function(){M(null,1)},groupMembers:function(i,a){var n=i.find(".layui-icon"),l=function(){n.html("&#xe61a;"),i.data("down",null),t.close(ei.groupMembers.index)},s=function(i){X(i)};i.data("down")?l():(n.html("&#xe619;"),i.data("down",!0),ei.groupMembers.index=t.tips('<ul class="layim-members-list"></ul>',i,{tips:3,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-members",success:function(a){var t=j.base.members||{},n=O(),s=a.find(".layim-members-list"),o="",r={},c=w.find(".layui-layer-max").hasClass("layui-layer-maxmin"),u="none"===w.find(".layim-chat-list").css("display");c&&s.css({width:e(window).width()-22-(u||200)}),t.data=e.extend(t.data,{id:n.data.id}),S(t,function(a){layui.each(a.list,function(i,a){o+='<li data-uid="'+a.id+'"><a href="javascript:;"><img src="'+a.avatar+'"><cite>'+a.username+"</cite></a></li>",r[a.id]=a}),s.html(o),i.find(".layim-chat-members").html(a.members||(a.list||[]).length+"人"),s.find("li").on("click",function(){var i=e(this).data("uid"),a=r[i];T({name:a.username,type:"friend",avatar:a.avatar,id:a.id}),l()}),layui.each(d.members,function(i,e){e&&e(a)})}),a.on("mousedown",function(i){X(i)})}}),e(document).off("mousedown",l).on("mousedown",l),e(window).off("resize",l).on("resize",l),i.off("mousedown",s).on("mousedown",s))},send:function(){D()},setSend:function(i,a){var t=ei.setSend.box=i.siblings(".layim-menu-box"),n=i.attr("lay-type");if("show"===n)X(a),t.show().addClass(ai),e(document).off("click",ei.setSendHide).on("click",ei.setSendHide);else{i.addClass(o).siblings().removeClass(o);var l=layui.data("layim")[j.mine.id]||{};l.sendHotKey=n,layui.data("layim",{key:j.mine.id,value:l}),ei.setSendHide(a,i.parent())}},setSendHide:function(i,a){(a||ei.setSend.box).hide().removeClass(ai)},face:function(i,a){var n="",l=O();for(var s in Q)n+='<li title="'+s+'"><img src="'+Q[s]+'"></li>';n='<ul class="layui-clear layim-face-list">'+n+"</ul>",ei.face.index=t.tips(n,i,{tips:1,time:0,fixed:!0,skin:"layui-box layui-layim-face",success:function(i){i.find(".layim-face-list>li").on("mousedown",function(i){X(i)}).on("click",function(){ii(l.textarea[0],"face"+this.title+" "),t.close(ei.face.index)})}}),e(document).off("mousedown",ei.faceHide).on("mousedown",ei.faceHide),e(window).off("resize",ei.faceHide).on("resize",ei.faceHide),X(a)},faceHide:function(){t.close(ei.face.index)},image:function(i){var a=i.data("type")||"images",e={images:"uploadImage",file:"uploadFile"},n=O(),l=j.base[e[a]]||{};layui.upload({url:l.url||"",method:l.type,elem:i.find("input")[0],unwrap:!0,type:a,success:function(i){0==i.code?(i.data=i.data||{},"images"===a?ii(n.textarea[0],"img["+(i.data.src||"")+"]"):"file"===a&&ii(n.textarea[0],"file("+(i.data.src||"")+")["+(i.data.name||"下载文件")+"]"),D()):t.msg(i.msg||"上传失败")}})},extend:function(i){var a=i.attr("lay-filter"),e=O();layui.each(d["tool("+a+")"],function(a,t){t&&t.call(i,function(i){ii(e.textarea[0],i)},D,e)})},chatLog:function(i){var a=O();return j.base.chatLog?(t.close(ei.chatLog.index),ei.chatLog.index=t.open({type:2,maxmin:!0,title:"与 "+a.data.name+" 的聊天记录",area:["450px","100%"],shade:!1,offset:"rb",skin:"layui-box",anim:2,id:"layui-layim-chatlog",content:j.base.chatLog+"?id="+a.data.id+"&type="+a.data.type})):t.msg("未开启更多聊天记录")},menuHistory:function(i,a){var n=layui.data("layim")[j.mine.id]||{},l=i.parent(),s=i.data("type"),o=x.find(".layim-list-history"),r='<li class="layim-null">暂无历史会话</li>';
if("one"===s){var d=n.history;delete d[l.data("index")],n.history=d,layui.data("layim",{key:j.mine.id,value:n}),e("#"+l.data("id")).remove(),0===o.find("li").length&&o.html(r)}else"all"===s&&(delete n.history,layui.data("layim",{key:j.mine.id,value:n}),o.html(r));t.closeAll("tips")}};i("layim",new c)}).addcss("modules/layim/layim.css?v=3.01Pro","skinlayimcss"); if("one"===s){var d=n.history;delete d[l.data("index")],n.history=d,layui.data("layim",{key:j.mine.id,value:n}),e("#"+l.data("id")).remove(),0===o.find("li").length&&o.html(r)}else"all"===s&&(delete n.history,layui.data("layim",{key:j.mine.id,value:n}),o.html(r));t.closeAll("tips")}};i("layim",new c)}).addcss("modules/layim/layim.css?v=3.01Pro","skinlayimcss");
\ No newline at end of file
...@@ -21,52 +21,10 @@ ...@@ -21,52 +21,10 @@
<legend>管理</legend> <legend>管理</legend>
<div> <div>
<a class="layui-btn layui-btn-primary" href="user/imuser/list" target="_blank"><i class="layui-icon">&#xe613;</i>在线用户管理</a> <a class="layui-btn layui-btn-primary" href="user/imuser/list" target="_blank"><i class="layui-icon">&#xe613;</i>在线用户管理</a>
<a class="layui-btn layui-btn-primary" href="consultantlist" target="_blank"><i class="layui-icon">&#xe613;</i>顾问管理</a>
<a class="layui-btn layui-btn-primary" href="usermessage/page" target="_blank"><i class="layui-icon">&#xe63a;</i>消息管理</a> <a class="layui-btn layui-btn-primary" href="usermessage/page" target="_blank"><i class="layui-icon">&#xe63a;</i>消息管理</a>
<a class="layui-btn layui-btn-primary showform" ><i class="layui-icon">&#xe63a;</i>顾问注册</a>
</div> </div>
</fieldset> </fieldset>
<fieldset class="layui-elem-field index-button" style="margin-top: 30px;display:none">
<legend>注册</legend>
<div>
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">账号</label>
<div class="layui-input-block">
<input type="text" name="account" lay-verify="required" autocomplete="off" placeholder="请输入账号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="password" lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="userInfo.name" lay-verify="required" placeholder="请输入姓名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所在部门</label>
<div class="layui-input-block">
<select name="userInfo.deptid" lay-verify="required">
<option value="1">路劲太阳城置业顾问</option>
<option value="3">路劲隽澜湾置业顾问</option>
<option value="4">路劲隽悦府置业顾问</option>
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="reg">立即注册</button>
<button type="button" class="layui-btn layui-btn-primary showform" >取消注册</button>
</div>
</div>
</form>
</div>
</fieldset>
</div> </div>
</body> </body>
<script src="layui/layui.js"></script> <script src="layui/layui.js"></script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment