|   | 
|   | 
| <!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> |