<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>消息盒子</title> <link rel="stylesheet" href="../../../layui.css?v=1"> <style> .layim-msgbox{margin: 15px;} .layim-msgbox li{position: relative; margin-bottom: 10px; padding: 0 130px 10px 60px; padding-bottom: 10px; line-height: 22px; border-bottom: 1px dotted #e2e2e2;} .layim-msgbox .layim-msgbox-tips{margin: 0; padding: 10px 0; border: none; text-align: center; color: #999;} .layim-msgbox .layim-msgbox-system{padding: 0 10px 10px 10px;} .layim-msgbox li p span{padding-left: 5px; color: #999;} .layim-msgbox li p em{font-style: normal; color: #FF5722;} .layim-msgbox-avatar{position: absolute; left: 0; top: 0; width: 50px; height: 50px;} .layim-msgbox-user{padding-top: 5px;} .layim-msgbox-content{margin-top: 3px;} .layim-msgbox .layui-btn-small{padding: 0 15px; margin-left: 5px;} .layim-msgbox-btn{position: absolute; right: 0; top: 12px; color: #999;} </style> </head> <body> <ul class="layim-msgbox" id="LAY_view"></ul> <div style="margin: 0 15px;"> <blockquote class="layui-elem-quote">注意:这些都是模拟数据,实际使用时,需将其中的模拟接口改为你的项目真实接口。 <br>该模版文件所在目录(相对于layui.js):/css/modules/layim/html/msgbox.html</blockquote> </div> <textarea title="消息模版" id="LAY_tpl" style="display:none;"> {{# layui.each(d.data, function(index, item){ if(item.from){ }} <li data-uid="{{ item.from }}" data-fromGroup="{{ item.from_group }}"> <a href="/u/{{ item.from }}/" target="_blank"> <img src="{{ item.user.avatar }}" class="layui-circle layim-msgbox-avatar"> </a> <p class="layim-msgbox-user"> <a href="/u/{{ item.from }}/" target="_blank">{{ item.user.username||'' }}</a> <span>{{ item.time }}</span> </p> <p class="layim-msgbox-content"> {{ item.content }} <span>{{ item.remark ? '附言: '+item.remark : '' }}</span> </p> <p class="layim-msgbox-btn"> <button class="layui-btn layui-btn-small" data-type="agree">同意</button> <button class="layui-btn layui-btn-small layui-btn-primary" data-type="refuse">拒绝</button> </p> </li> {{# } else { }} <li class="layim-msgbox-system"> <p><em>系统:</em>{{ item.content }}<span>{{ item.time }}</span></p> </li> {{# } }); }} </textarea> <!-- 上述模版采用了 laytpl 语法,不了解的同学可以去看下文档:http://www.layui.com/doc/modules/laytpl.html --> <script src="../../../../layui.js?v=1"></script> <script> layui.use(['layim', 'flow'], function(){ var layim = layui.layim ,layer = layui.layer ,laytpl = layui.laytpl ,$ = layui.jquery ,flow = layui.flow; var cache = {}; //用于临时记录请求到的数据 //请求消息 var renderMsg = function(page, callback){ //实际部署时,请将下述 getmsg.json 改为你的接口地址 $.get('getmsg.json', { page: page || 1 }, function(res){ if(res.code != 0){ return layer.msg(res.msg); } //记录来源用户信息 layui.each(res.data, function(index, item){ cache[item.from] = item.user; }); callback && callback(res.data, res.pages); }); }; //消息信息流 flow.load({ elem: '#LAY_view' //流加载容器 ,isAuto: false ,end: '<li class="layim-msgbox-tips">暂无更多新消息</li>' ,done: function(page, next){ //加载下一页 renderMsg(page, function(data, pages){ var html = laytpl(LAY_tpl.value).render({ data: data ,page: page }); next(html, page < pages); }); } }); //打开页面即把消息标记为已读 /* $.post('/message/read', { type: 1 }); */ //操作 var active = { //同意 agree: function(othis){ var li = othis.parents('li') ,uid = li.data('uid') ,from_group = li.data('fromGroup') ,user = cache[uid]; //选择分组 parent.layui.layim.setFriendGroup({ type: 'friend' ,username: user.username ,avatar: user.avatar ,group: parent.layui.layim.cache().friend //获取好友分组数据 ,submit: function(group, index){ //将好友追加到主面板 parent.layui.layim.addList({ type: 'friend' ,avatar: user.avatar //好友头像 ,username: user.username //好友昵称 ,groupid: group //所在的分组id ,id: uid //好友ID ,sign: user.sign //好友签名 }); parent.layer.close(index); othis.parent().html('已同意'); //实际部署时,请开启下述注释,并改成你的接口地址 /* $.post('/im/agreeFriend', { uid: uid //对方用户ID ,from_group: from_group //对方设定的好友分组 ,group: group //我设定的好友分组 }, function(res){ if(res.code != 0){ return layer.msg(res.msg); } //将好友追加到主面板 parent.layui.layim.addList({ type: 'friend' ,avatar: user.avatar //好友头像 ,username: user.username //好友昵称 ,groupid: group //所在的分组id ,id: uid //好友ID ,sign: user.sign //好友签名 }); parent.layer.close(index); othis.parent().html('已同意'); }); */ } }); } //拒绝 ,refuse: function(othis){ var li = othis.parents('li') ,uid = li.data('uid'); layer.confirm('确定拒绝吗?', function(index){ $.post('/im/refuseFriend', { uid: uid //对方用户ID }, function(res){ if(res.code != 0){ return layer.msg(res.msg); } layer.close(index); othis.parent().html('<em>已拒绝</em>'); }); }); } }; $('body').on('click', '.layui-btn', function(){ var othis = $(this), type = othis.data('type'); active[type] ? active[type].call(this, othis) : ''; }); }); </script> </body> </html>