|
|
/**
|
|
|
|
|
|
@Name:layuiAdmin 用户登入和注册等
|
|
|
@Author:贤心
|
|
|
@Site:http://www.layui.com/admin/
|
|
|
@License: LPPL
|
|
|
|
|
|
*/
|
|
|
|
|
|
layui.define(['index', 'layim'], function(exports){
|
|
|
var $ = layui.$
|
|
|
,admin = layui.admin
|
|
|
,element = layui.element
|
|
|
,router = layui.router();
|
|
|
|
|
|
|
|
|
var layim = layui.layim;
|
|
|
|
|
|
//演示自动回复
|
|
|
var autoReplay = [
|
|
|
'您好,我现在有事不在,一会再和您联系。',
|
|
|
'你没发错吧?face[微笑] ',
|
|
|
'洗澡中,请勿打扰,偷窥请购票,个体四十,团体八折,订票电话:一般人我不告诉他!face[哈哈] ',
|
|
|
'你好,我是主人的美女秘书,有什么事就跟我说吧,等他回来我会转告他的。face[心] face[心] face[心] ',
|
|
|
'face[威武] face[威武] face[威武] face[威武] ',
|
|
|
'<(@ ̄︶ ̄@)>',
|
|
|
'你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复。',
|
|
|
'face[黑线] 你慢慢说,别急……',
|
|
|
'(*^__^*) face[嘻嘻] ,是贤心吗?'
|
|
|
];
|
|
|
|
|
|
//基础配置
|
|
|
layim.config({
|
|
|
//初始化接口
|
|
|
init: {
|
|
|
url: layui.setter.base + 'json/layim/getList.js'
|
|
|
,data: {}
|
|
|
}
|
|
|
//查看群员接口
|
|
|
,members: {
|
|
|
url: layui.setter.base + 'json/layim/getMembers.js'
|
|
|
,data: {}
|
|
|
}
|
|
|
|
|
|
,uploadImage: {
|
|
|
url: '' //(返回的数据格式见下文)
|
|
|
,type: '' //默认post
|
|
|
}
|
|
|
,uploadFile: {
|
|
|
url: '' //(返回的数据格式见下文)
|
|
|
,type: '' //默认post
|
|
|
}
|
|
|
|
|
|
,isAudio: true //开启聊天工具栏音频
|
|
|
,isVideo: true //开启聊天工具栏视频
|
|
|
|
|
|
//扩展工具栏
|
|
|
,tool: [{
|
|
|
alias: 'code'
|
|
|
,title: '代码'
|
|
|
,icon: ''
|
|
|
}]
|
|
|
|
|
|
//,brief: true //是否简约模式(若开启则不显示主面板)
|
|
|
|
|
|
//,title: 'WebIM' //自定义主面板最小化时的标题
|
|
|
//,right: '100px' //主面板相对浏览器右侧距离
|
|
|
//,minRight: '90px' //聊天面板最小化时相对浏览器右侧距离
|
|
|
,initSkin: '3.jpg' //1-5 设置初始背景
|
|
|
//,skin: ['aaa.jpg'] //新增皮肤
|
|
|
//,isfriend: false //是否开启好友
|
|
|
//,isgroup: false //是否开启群组
|
|
|
//,min: true //是否始终最小化主面板,默认false
|
|
|
//,notice: true //是否开启桌面消息提醒,默认false
|
|
|
//,voice: false //声音提醒,默认开启,声音文件为:default.mp3
|
|
|
|
|
|
,msgbox: '/layim/demo/msgbox.html' //消息盒子页面地址,若不开启,剔除该项即可
|
|
|
,find: '/layim/demo/find.html' //发现页面地址,若不开启,剔除该项即可
|
|
|
,chatLog: '/layim/demo/chatlog.html' //聊天记录页面地址,若不开启,剔除该项即可
|
|
|
|
|
|
});
|
|
|
//监听在线状态的切换事件
|
|
|
layim.on('online', function(status){
|
|
|
layer.msg(status);
|
|
|
});
|
|
|
|
|
|
//监听签名修改
|
|
|
layim.on('sign', function(value){
|
|
|
layer.msg(value);
|
|
|
});
|
|
|
//监听自定义工具栏点击,以添加代码为例
|
|
|
layim.on('tool(code)', function(insert){
|
|
|
layer.prompt({
|
|
|
title: '插入代码 - 工具栏扩展示例'
|
|
|
,formType: 2
|
|
|
,shade: 0
|
|
|
}, function(text, index){
|
|
|
layer.close(index);
|
|
|
insert('[pre class=layui-code]' + text + '[/pre]'); //将内容插入到编辑器
|
|
|
});
|
|
|
});
|
|
|
|
|
|
//监听layim建立就绪
|
|
|
layim.on('ready', function(res){
|
|
|
//console.log(res.mine);
|
|
|
layim.msgbox(5); //模拟消息盒子有新消息,实际使用时,一般是动态获得
|
|
|
});
|
|
|
//监听发送消息
|
|
|
layim.on('sendMessage', function(data){
|
|
|
var To = data.to;
|
|
|
//console.log(data);
|
|
|
|
|
|
if(To.type === 'friend'){
|
|
|
layim.setChatStatus('<span style="color:#FF5722;">对方正在输入。。。</span>');
|
|
|
}
|
|
|
|
|
|
//演示自动回复
|
|
|
setTimeout(function(){
|
|
|
var obj = {};
|
|
|
if(To.type === 'group'){
|
|
|
obj = {
|
|
|
username: '模拟群员'+(Math.random()*100|0)
|
|
|
,avatar: layui.cache.dir + 'images/face/'+ (Math.random()*72|0) + '.gif'
|
|
|
,id: To.id
|
|
|
,type: To.type
|
|
|
,content: autoReplay[Math.random()*9|0]
|
|
|
}
|
|
|
} else {
|
|
|
obj = {
|
|
|
username: To.name
|
|
|
,avatar: To.avatar
|
|
|
,id: To.id
|
|
|
,type: To.type
|
|
|
,content: autoReplay[Math.random()*9|0]
|
|
|
}
|
|
|
layim.setChatStatus('<span style="color:#FF5722;">在线</span>');
|
|
|
}
|
|
|
layim.getMessage(obj);
|
|
|
}, 1000);
|
|
|
});
|
|
|
//监听查看群员
|
|
|
layim.on('members', function(data){
|
|
|
//console.log(data);
|
|
|
});
|
|
|
|
|
|
//监听聊天窗口的切换
|
|
|
layim.on('chatChange', function(res){
|
|
|
var type = res.data.type;
|
|
|
console.log(res.data.id)
|
|
|
if(type === 'friend'){
|
|
|
//模拟标注好友状态
|
|
|
//layim.setChatStatus('<span style="color:#FF5722;">在线</span>');
|
|
|
} else if(type === 'group'){
|
|
|
//模拟系统消息
|
|
|
layim.getMessage({
|
|
|
system: true
|
|
|
,id: res.data.id
|
|
|
,type: "group"
|
|
|
,content: '模拟群员'+(Math.random()*100|0) + '加入群聊'
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
//面板外的操作
|
|
|
var $ = layui.jquery, active = {
|
|
|
chat: function(){
|
|
|
//自定义会话
|
|
|
layim.chat({
|
|
|
name: '小闲'
|
|
|
,type: 'friend'
|
|
|
,avatar: '//tva3.sinaimg.cn/crop.0.0.180.180.180/7f5f6861jw1e8qgp5bmzyj2050050aa8.jpg'
|
|
|
,id: 1008612
|
|
|
});
|
|
|
layer.msg('也就是说,此人可以不在好友面板里');
|
|
|
}
|
|
|
,message: function(){
|
|
|
//制造好友消息
|
|
|
layim.getMessage({
|
|
|
username: "贤心"
|
|
|
,avatar: "//tp1.sinaimg.cn/1571889140/180/40030060651/1"
|
|
|
,id: "100001"
|
|
|
,type: "friend"
|
|
|
,content: "嗨,你好!欢迎体验LayIM。演示标记:"+ new Date().getTime()
|
|
|
,timestamp: new Date().getTime()
|
|
|
});
|
|
|
}
|
|
|
,messageAudio: function(){
|
|
|
//接受音频消息
|
|
|
layim.getMessage({
|
|
|
username: "林心如"
|
|
|
,avatar: "//tp3.sinaimg.cn/1223762662/180/5741707953/0"
|
|
|
,id: "76543"
|
|
|
,type: "friend"
|
|
|
,content: "audio[http://gddx.sc.chinaz.com/Files/DownLoad/sound1/201510/6473.mp3]"
|
|
|
,timestamp: new Date().getTime()
|
|
|
});
|
|
|
}
|
|
|
,messageVideo: function(){
|
|
|
//接受视频消息
|
|
|
layim.getMessage({
|
|
|
username: "林心如"
|
|
|
,avatar: "//tp3.sinaimg.cn/1223762662/180/5741707953/0"
|
|
|
,id: "76543"
|
|
|
,type: "friend"
|
|
|
,content: "video[http://www.w3school.com.cn//i/movie.ogg]"
|
|
|
,timestamp: new Date().getTime()
|
|
|
});
|
|
|
}
|
|
|
,messageTemp: function(){
|
|
|
//接受临时会话消息
|
|
|
layim.getMessage({
|
|
|
username: "小酱"
|
|
|
,avatar: "//tva1.sinaimg.cn/crop.7.0.736.736.50/bd986d61jw8f5x8bqtp00j20ku0kgabx.jpg"
|
|
|
,id: "198909151014"
|
|
|
,type: "friend"
|
|
|
,content: "临时:"+ new Date().getTime()
|
|
|
});
|
|
|
}
|
|
|
,add: function(){
|
|
|
//实际使用时数据由动态获得
|
|
|
layim.add({
|
|
|
type: 'friend'
|
|
|
,username: '麻花疼'
|
|
|
,avatar: '//tva1.sinaimg.cn/crop.0.0.720.720.180/005JKVuPjw8ers4osyzhaj30k00k075e.jpg'
|
|
|
,submit: function(group, remark, index){
|
|
|
layer.msg('好友申请已发送,请等待对方确认', {
|
|
|
icon: 1
|
|
|
,shade: 0.5
|
|
|
}, function(){
|
|
|
layer.close(index);
|
|
|
});
|
|
|
|
|
|
//通知对方
|
|
|
/*
|
|
|
$.post('/im-applyFriend/', {
|
|
|
uid: info.uid
|
|
|
,from_group: group
|
|
|
,remark: remark
|
|
|
}, function(res){
|
|
|
if(res.status != 0){
|
|
|
return layer.msg(res.msg);
|
|
|
}
|
|
|
layer.msg('好友申请已发送,请等待对方确认', {
|
|
|
icon: 1
|
|
|
,shade: 0.5
|
|
|
}, function(){
|
|
|
layer.close(index);
|
|
|
});
|
|
|
});
|
|
|
*/
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
,addqun: function(){
|
|
|
layim.add({
|
|
|
type: 'group'
|
|
|
,username: 'LayIM会员群'
|
|
|
,avatar: '//tva2.sinaimg.cn/crop.0.0.180.180.50/6ddfa27bjw1e8qgp5bmzyj2050050aa8.jpg'
|
|
|
,submit: function(group, remark, index){
|
|
|
layer.msg('申请已发送,请等待管理员确认', {
|
|
|
icon: 1
|
|
|
,shade: 0.5
|
|
|
}, function(){
|
|
|
layer.close(index);
|
|
|
});
|
|
|
|
|
|
//通知对方
|
|
|
/*
|
|
|
$.post('/im-applyGroup/', {
|
|
|
uid: info.uid
|
|
|
,from_group: group
|
|
|
,remark: remark
|
|
|
}, function(res){
|
|
|
|
|
|
});
|
|
|
*/
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
,addFriend: function(){
|
|
|
var user = {
|
|
|
type: 'friend'
|
|
|
,id: 1234560
|
|
|
,username: '李彦宏' //好友昵称,若申请加群,参数为:groupname
|
|
|
,avatar: '//tva4.sinaimg.cn/crop.0.0.996.996.180/8b2b4e23jw8f14vkwwrmjj20ro0rpjsq.jpg' //头像
|
|
|
,sign: '全球最大的中文搜索引擎'
|
|
|
}
|
|
|
layim.setFriendGroup({
|
|
|
type: user.type
|
|
|
,username: user.username
|
|
|
,avatar: user.avatar
|
|
|
,group: layim.cache().friend //获取好友列表数据
|
|
|
,submit: function(group, index){
|
|
|
//一般在此执行Ajax和WS,以通知对方已经同意申请
|
|
|
//……
|
|
|
|
|
|
//同意后,将好友追加到主面板
|
|
|
layim.addList({
|
|
|
type: user.type
|
|
|
,username: user.username
|
|
|
,avatar: user.avatar
|
|
|
,groupid: group //所在的分组id
|
|
|
,id: user.id //好友ID
|
|
|
,sign: user.sign //好友签名
|
|
|
});
|
|
|
|
|
|
layer.close(index);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
,addGroup: function(){
|
|
|
layer.msg('已成功把[Angular开发]添加到群组里', {
|
|
|
icon: 1
|
|
|
});
|
|
|
//增加一个群组
|
|
|
layim.addList({
|
|
|
type: 'group'
|
|
|
,avatar: "//tva3.sinaimg.cn/crop.64.106.361.361.50/7181dbb3jw8evfbtem8edj20ci0dpq3a.jpg"
|
|
|
,groupname: 'Angular开发'
|
|
|
,id: "12333333"
|
|
|
,members: 0
|
|
|
});
|
|
|
}
|
|
|
,removeFriend: function(){
|
|
|
layer.msg('已成功删除[凤姐]', {
|
|
|
icon: 1
|
|
|
});
|
|
|
//删除一个好友
|
|
|
layim.removeList({
|
|
|
id: 121286
|
|
|
,type: 'friend'
|
|
|
});
|
|
|
}
|
|
|
,removeGroup: function(){
|
|
|
layer.msg('已成功删除[前端群]', {
|
|
|
icon: 1
|
|
|
});
|
|
|
//删除一个群组
|
|
|
layim.removeList({
|
|
|
id: 101
|
|
|
,type: 'group'
|
|
|
});
|
|
|
}
|
|
|
//置灰离线好友
|
|
|
,setGray: function(){
|
|
|
layim.setFriendStatus(168168, 'offline');
|
|
|
|
|
|
layer.msg('已成功将好友[马小云]置灰', {
|
|
|
icon: 1
|
|
|
});
|
|
|
}
|
|
|
//取消好友置灰
|
|
|
,unGray: function(){
|
|
|
layim.setFriendStatus(168168, 'online');
|
|
|
|
|
|
layer.msg('成功取消好友[马小云]置灰状态', {
|
|
|
icon: 1
|
|
|
});
|
|
|
}
|
|
|
|
|
|
,kefu1: function(){
|
|
|
layim.chat({
|
|
|
name: '在线客服一' //名称
|
|
|
,type: 'kefu' //聊天类型
|
|
|
,avatar: '//tp1.sinaimg.cn/5619439268/180/40030060651/1' //头像
|
|
|
,id: 1111111 //定义唯一的id方便你处理信息
|
|
|
})
|
|
|
}
|
|
|
,kefu2: function(){
|
|
|
layim.chat({
|
|
|
name: '在线客服二' //名称
|
|
|
,type: 'kefu' //聊天类型
|
|
|
,avatar: '//tp1.sinaimg.cn/5619439268/180/40030060651/1' //头像
|
|
|
,id: 2222222 //定义唯一的id方便你处理信息
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//移动端版本
|
|
|
,mobile: function(){
|
|
|
var device = layui.device();
|
|
|
var mobileHome = '/layim/demo/mobile.html';
|
|
|
if(device.android || device.ios){
|
|
|
return location.href = mobileHome;
|
|
|
}
|
|
|
var index = layer.open({
|
|
|
type: 2
|
|
|
,title: '移动版演示 (或手机扫右侧二维码预览)'
|
|
|
,content: mobileHome
|
|
|
,area: ['375px', '667px']
|
|
|
,shadeClose: true
|
|
|
,shade: 0.8
|
|
|
,end: function(){
|
|
|
layer.close(index + 2);
|
|
|
}
|
|
|
});
|
|
|
layer.photos({
|
|
|
photos: {
|
|
|
"data": [{
|
|
|
"src": "http://cdn.layui.com/upload/2016_12/168_1481056358469_50288.png",
|
|
|
}]
|
|
|
}
|
|
|
,anim: 0
|
|
|
,shade: false
|
|
|
,success: function(layero){
|
|
|
layero.css('margin-left', '350px');
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
$('.LAY-senior-im-chat-demo .layui-btn').on('click', function(){
|
|
|
var type = $(this).data('type');
|
|
|
active[type] ? active[type].call(this) : '';
|
|
|
});
|
|
|
|
|
|
|
|
|
exports('im', {});
|
|
|
}); |