chore: 添加多个图片和资源文件
添加了管理后台所需的图片资源、Excel文件、安装程序以及设计相关的图片文件
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 公共业务
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
layui.define(function(exports){
|
||||
var $ = layui.$
|
||||
,layer = layui.layer
|
||||
,laytpl = layui.laytpl
|
||||
,setter = layui.setter
|
||||
,view = layui.view
|
||||
,admin = layui.admin
|
||||
|
||||
//公共业务的逻辑处理可以写在此处,切换任何页面都会执行
|
||||
//……
|
||||
//默认关闭左侧菜单
|
||||
//admin.sideFlexible();
|
||||
|
||||
//对外暴露的接口
|
||||
exports('common', {});
|
||||
});
|
||||
@@ -0,0 +1,219 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 主页控制台
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:GPL-2
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(function(exports){
|
||||
|
||||
/*
|
||||
下面通过 layui.use 分段加载不同的模块,实现不同区域的同时渲染,从而保证视图的快速呈现
|
||||
*/
|
||||
|
||||
|
||||
//区块轮播切换
|
||||
layui.use(['admin', 'carousel'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,carousel = layui.carousel
|
||||
,element = layui.element
|
||||
,device = layui.device();
|
||||
|
||||
//轮播切换
|
||||
$('.layadmin-carousel').each(function(){
|
||||
var othis = $(this);
|
||||
carousel.render({
|
||||
elem: this
|
||||
,width: '100%'
|
||||
,arrow: 'none'
|
||||
,interval: othis.data('interval')
|
||||
,autoplay: othis.data('autoplay') === true
|
||||
,trigger: (device.ios || device.android) ? 'click' : 'hover'
|
||||
,anim: othis.data('anim')
|
||||
});
|
||||
});
|
||||
|
||||
element.render('progress');
|
||||
|
||||
});
|
||||
|
||||
//数据概览
|
||||
layui.use(['carousel', 'echarts'], function(){
|
||||
var $ = layui.$
|
||||
,carousel = layui.carousel
|
||||
,echarts = layui.echarts;
|
||||
|
||||
var echartsApp = [], options = [
|
||||
//今日流量趋势
|
||||
{
|
||||
title: {
|
||||
text: '今日流量趋势',
|
||||
x: 'center',
|
||||
textStyle: {
|
||||
fontSize: 14
|
||||
}
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:['','']
|
||||
},
|
||||
xAxis : [{
|
||||
type : 'category',
|
||||
boundaryGap : false,
|
||||
data: ['06:00','06:30','07:00','07:30','08:00','08:30','09:00','09:30','10:00','11:30','12:00','12:30','13:00','13:30','14:00','14:30','15:00','15:30','16:00','16:30','17:00','17:30','18:00','18:30','19:00','19:30','20:00','20:30','21:00','21:30','22:00','22:30','23:00','23:30']
|
||||
}],
|
||||
yAxis : [{
|
||||
type : 'value'
|
||||
}],
|
||||
series : [{
|
||||
name:'PV',
|
||||
type:'line',
|
||||
smooth:true,
|
||||
itemStyle: {normal: {areaStyle: {type: 'default'}}},
|
||||
data: [111,222,333,444,555,666,3333,33333,55555,66666,33333,3333,6666,11888,26666,38888,56666,42222,39999,28888,17777,9666,6555,5555,3333,2222,3111,6999,5888,2777,1666,999,888,777]
|
||||
},{
|
||||
name:'UV',
|
||||
type:'line',
|
||||
smooth:true,
|
||||
itemStyle: {normal: {areaStyle: {type: 'default'}}},
|
||||
data: [11,22,33,44,55,66,333,3333,5555,12666,3333,333,666,1188,2666,3888,6666,4222,3999,2888,1777,966,655,555,333,222,311,699,588,277,166,99,88,77]
|
||||
}]
|
||||
},
|
||||
|
||||
//访客浏览器分布
|
||||
{
|
||||
title : {
|
||||
text: '访客浏览器分布',
|
||||
x: 'center',
|
||||
textStyle: {
|
||||
fontSize: 14
|
||||
}
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: "{a} <br/>{b} : {c} ({d}%)"
|
||||
},
|
||||
legend: {
|
||||
orient : 'vertical',
|
||||
x : 'left',
|
||||
data:['Chrome','Firefox','IE 8.0','Safari','其它浏览器']
|
||||
},
|
||||
series : [{
|
||||
name:'访问来源',
|
||||
type:'pie',
|
||||
radius : '55%',
|
||||
center: ['50%', '50%'],
|
||||
data:[
|
||||
{value:9052, name:'Chrome'},
|
||||
{value:1610, name:'Firefox'},
|
||||
{value:3200, name:'IE 8.0'},
|
||||
{value:535, name:'Safari'},
|
||||
{value:1700, name:'其它浏览器'}
|
||||
]
|
||||
}]
|
||||
},
|
||||
|
||||
//新增的用户量
|
||||
{
|
||||
title: {
|
||||
text: '最近一周新增的用户量',
|
||||
x: 'center',
|
||||
textStyle: {
|
||||
fontSize: 14
|
||||
}
|
||||
},
|
||||
tooltip : { //提示框
|
||||
trigger: 'axis',
|
||||
formatter: "{b}<br>新增用户:{c}"
|
||||
},
|
||||
xAxis : [{ //X轴
|
||||
type : 'category',
|
||||
data : ['11-07', '11-08', '11-09', '11-10', '11-11', '11-12', '11-13']
|
||||
}],
|
||||
yAxis : [{ //Y轴
|
||||
type : 'value'
|
||||
}],
|
||||
series : [{ //内容
|
||||
type: 'line',
|
||||
data:[200, 300, 400, 610, 150, 270, 380],
|
||||
}]
|
||||
}
|
||||
]
|
||||
,elemDataView = $('#LAY-index-dataview').children('div')
|
||||
,renderDataView = function(index){
|
||||
echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme);
|
||||
echartsApp[index].setOption(options[index]);
|
||||
window.onresize = echartsApp[index].resize;
|
||||
};
|
||||
|
||||
|
||||
//没找到DOM,终止执行
|
||||
if(!elemDataView[0]) return;
|
||||
|
||||
|
||||
|
||||
renderDataView(0);
|
||||
|
||||
//监听数据概览轮播
|
||||
var carouselIndex = 0;
|
||||
carousel.on('change(LAY-index-dataview)', function(obj){
|
||||
renderDataView(carouselIndex = obj.index);
|
||||
});
|
||||
|
||||
//监听侧边伸缩
|
||||
layui.admin.on('side', function(){
|
||||
setTimeout(function(){
|
||||
renderDataView(carouselIndex);
|
||||
}, 300);
|
||||
});
|
||||
|
||||
//监听路由
|
||||
layui.admin.on('hash(tab)', function(){
|
||||
layui.router().path.join('') || renderDataView(carouselIndex);
|
||||
});
|
||||
});
|
||||
|
||||
//最新订单
|
||||
layui.use('table', function(){
|
||||
var $ = layui.$
|
||||
,table = layui.table;
|
||||
|
||||
//今日热搜
|
||||
table.render({
|
||||
elem: '#LAY-index-topSearch'
|
||||
,url: layui.setter.base + 'json/console/top-search.js' //模拟接口
|
||||
,page: true
|
||||
,cols: [[
|
||||
{type: 'numbers', fixed: 'left'}
|
||||
,{field: 'keywords', title: '关键词', minWidth: 300, templet: '<div><a href="https://www.baidu.com/s?wd={{ d.keywords }}" target="_blank" class="layui-table-link">{{ d.keywords }}</div>'}
|
||||
,{field: 'frequency', title: '搜索次数', minWidth: 120, sort: true}
|
||||
,{field: 'userNums', title: '用户数', sort: true}
|
||||
]]
|
||||
,skin: 'line'
|
||||
});
|
||||
|
||||
//今日热贴
|
||||
table.render({
|
||||
elem: '#LAY-index-topCard'
|
||||
,url: layui.setter.base + 'json/console/top-card.js' //模拟接口
|
||||
,page: true
|
||||
,cellMinWidth: 120
|
||||
,cols: [[
|
||||
{type: 'numbers', fixed: 'left'}
|
||||
,{field: 'title', title: '标题', minWidth: 300, templet: '<div><a href="{{ d.href }}" target="_blank" class="layui-table-link">{{ d.title }}</div>'}
|
||||
,{field: 'username', title: '发帖者'}
|
||||
,{field: 'channel', title: '类别'}
|
||||
,{field: 'crt', title: '点击率', sort: true}
|
||||
]]
|
||||
,skin: 'line'
|
||||
});
|
||||
});
|
||||
|
||||
exports('console', {})
|
||||
});
|
||||
@@ -0,0 +1,187 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 内容系统
|
||||
@Author:star1029
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(['table', 'form'], function(exports){
|
||||
var $ = layui.$
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
|
||||
//文章管理
|
||||
table.render({
|
||||
elem: '#LAY-app-content-list'
|
||||
,url: layui.setter.base + 'json/content/list.js' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 100, title: '文章ID', sort: true}
|
||||
,{field: 'label', title: '文章标签', minWidth: 100}
|
||||
,{field: 'title', title: '文章标题'}
|
||||
,{field: 'author', title: '作者'}
|
||||
,{field: 'uploadtime', title: '上传时间', sort: true}
|
||||
,{field: 'status', title: '发布状态', templet: '#buttonTpl', minWidth: 80, align: 'center'}
|
||||
,{title: '操作', minWidth: 150, align: 'center', fixed: 'right', toolbar: '#table-content-list'}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 10
|
||||
,limits: [10, 15, 20, 25, 30]
|
||||
,text: '对不起,加载出现异常!'
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-app-content-list)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定删除此文章?', function(index){
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
});
|
||||
} else if(obj.event === 'edit'){
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑文章'
|
||||
,content: '../../../views/app/content/listform.html?id='+ data.id
|
||||
,maxmin: true
|
||||
,area: ['550px', '550px']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submit = layero.find('iframe').contents().find("#layuiadmin-app-form-edit");
|
||||
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit(layuiadmin-app-form-edit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,静态更新表格中的数据
|
||||
//$.ajax({});
|
||||
obj.update({
|
||||
label: field.label
|
||||
,title: field.title
|
||||
,author: field.author
|
||||
,status: field.status
|
||||
}); //数据更新
|
||||
|
||||
form.render();
|
||||
layer.close(index); //关闭弹层
|
||||
});
|
||||
|
||||
submit.trigger('click');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//分类管理
|
||||
table.render({
|
||||
elem: '#LAY-app-content-tags'
|
||||
,url: layui.setter.base + 'json/content/tags.js' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'numbers', fixed: 'left'}
|
||||
,{field: 'id', width: 100, title: 'ID', sort: true}
|
||||
,{field: 'tags', title: '分类名', minWidth: 100}
|
||||
,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#layuiadmin-app-cont-tagsbar'}
|
||||
]]
|
||||
,text: '对不起,加载出现异常!'
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-app-content-tags)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定删除此分类?', function(index){
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
});
|
||||
} else if(obj.event === 'edit'){
|
||||
var tr = $(obj.tr);
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑分类'
|
||||
,content: '../../../views/app/content/tagsform.html?id='+ data.id
|
||||
,area: ['450px', '200px']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
//获取iframe元素的值
|
||||
var othis = layero.find('iframe').contents().find("#layuiadmin-app-form-tags")
|
||||
,tags = othis.find('input[name="tags"]').val();
|
||||
|
||||
if(!tags.replace(/\s/g, '')) return;
|
||||
|
||||
obj.update({
|
||||
tags: tags
|
||||
});
|
||||
layer.close(index);
|
||||
}
|
||||
,success: function(layero, index){
|
||||
//给iframe元素赋值
|
||||
var othis = layero.find('iframe').contents().find("#layuiadmin-app-form-tags").click();
|
||||
othis.find('input[name="tags"]').val(data.tags);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//评论管理
|
||||
table.render({
|
||||
elem: '#LAY-app-content-comm'
|
||||
,url: layui.setter.base + 'json/content/comment.js' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 100, title: 'ID', sort: true}
|
||||
,{field: 'reviewers', title: '评论者', minWidth: 100}
|
||||
,{field: 'content', title: '评论内容', minWidth: 100}
|
||||
,{field: 'commtime', title: '评论时间', minWidth: 100, sort: true}
|
||||
,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-content-com'}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 10
|
||||
,limits: [10, 15, 20, 25, 30]
|
||||
,text: '对不起,加载出现异常!'
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-app-content-comm)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定删除此条评论?', function(index){
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
});
|
||||
} else if(obj.event === 'edit') {
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑评论'
|
||||
,content: '../../../views/app/content/contform.html'
|
||||
,area: ['450px', '300px']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submitID = 'layuiadmin-app-comm-submit'
|
||||
,submit = layero.find('iframe').contents().find('#'+ submitID);
|
||||
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,静态更新表格中的数据
|
||||
//$.ajax({});
|
||||
table.reload('LAY-app-content-comm'); //数据刷新
|
||||
layer.close(index); //关闭弹层
|
||||
});
|
||||
|
||||
submit.trigger('click');
|
||||
}
|
||||
,success: function(layero, index){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
exports('contlist', {})
|
||||
});
|
||||
@@ -0,0 +1,136 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 社区系统
|
||||
@Author:star1029
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(['table', 'form'], function(exports){
|
||||
var $ = layui.$
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
|
||||
//帖子管理
|
||||
table.render({
|
||||
elem: '#LAY-app-forum-list'
|
||||
,url: layui.setter.base + 'json/forum/list.js' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 100, title: 'ID', sort: true}
|
||||
,{field: 'poster', title: '发帖人'}
|
||||
,{field: 'avatar', title: '头像', width: 100, templet: '#imgTpl'}
|
||||
,{field: 'content', title: '发帖内容'}
|
||||
,{field: 'posttime', title: '发帖时间', sort: true}
|
||||
,{field: 'top', title: '置顶', templet: '#buttonTpl', minWidth: 80, align: 'center'}
|
||||
,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-forum-list'}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 10
|
||||
,limits: [10, 15, 20, 25, 30]
|
||||
,text: '对不起,加载出现异常!'
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-app-forum-list)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定删除此条帖子?', function(index){
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
});
|
||||
} else if(obj.event === 'edit'){
|
||||
var tr = $(obj.tr);
|
||||
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑帖子'
|
||||
,content: '../../../views/app/forum/listform.html'
|
||||
,area: ['550px', '400px']
|
||||
,btn: ['确定', '取消']
|
||||
,resize: false
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submitID = 'LAY-app-forum-submit'
|
||||
,submit = layero.find('iframe').contents().find('#'+ submitID);
|
||||
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,静态更新表格中的数据
|
||||
//$.ajax({});
|
||||
table.reload('LAY-app-forum-list'); //数据刷新
|
||||
layer.close(index); //关闭弹层
|
||||
});
|
||||
|
||||
submit.trigger('click');
|
||||
}
|
||||
,success: function(layero, index){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//回帖管理
|
||||
table.render({
|
||||
elem: '#LAY-app-forumreply-list'
|
||||
,url: layui.setter.base + 'json/forum/replys.js' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 100, title: 'ID', sort: true}
|
||||
,{field: 'replyer', title: '回帖人'}
|
||||
,{field: 'cardid', title: '回帖ID', sort: true}
|
||||
,{field: 'avatar', title: '头像', width: 100, templet: '#imgTpl'}
|
||||
,{field: 'content', title: '回帖内容', width: 200}
|
||||
,{field: 'replytime', title: '回帖时间', sort: true}
|
||||
,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-forum-replys'}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 10
|
||||
,limits: [10, 15, 20, 25, 30]
|
||||
,text: '对不起,加载出现异常!'
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-app-forumreply-list)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定删除此条评论?', function(index){
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
});
|
||||
} else if(obj.event === 'edit'){
|
||||
var tr = $(obj.tr);
|
||||
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑评论'
|
||||
,content: '../../../views/app/forum/replysform.html'
|
||||
,area: ['550px', '350px']
|
||||
,btn: ['确定', '取消']
|
||||
,resize: false
|
||||
,yes: function(index, layero){
|
||||
//获取iframe元素的值
|
||||
var othis = layero.find('iframe').contents().find("#layuiadmin-form-replys");
|
||||
var content = othis.find('textarea[name="content"]').val();
|
||||
|
||||
//数据更新
|
||||
obj.update({
|
||||
content: content
|
||||
});
|
||||
layer.close(index);
|
||||
}
|
||||
,success: function(layero, index){
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
exports('forum', {})
|
||||
});
|
||||
@@ -0,0 +1,418 @@
|
||||
/**
|
||||
|
||||
@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', {});
|
||||
});
|
||||
@@ -0,0 +1,132 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin(iframe版) 消息中心
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(['admin', 'table', 'util'], function(exports){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,table = layui.table
|
||||
,element = layui.element;
|
||||
|
||||
var DISABLED = 'layui-btn-disabled'
|
||||
|
||||
//区分各选项卡中的表格
|
||||
,tabs = {
|
||||
all: {
|
||||
text: '全部消息'
|
||||
,id: 'LAY-app-message-all'
|
||||
}
|
||||
,notice: {
|
||||
text: '通知'
|
||||
,id: 'LAY-app-message-notice'
|
||||
}
|
||||
,direct: {
|
||||
text: '私信'
|
||||
,id: 'LAY-app-message-direct'
|
||||
}
|
||||
};
|
||||
|
||||
//标题内容模板
|
||||
var tplTitle = function(d){
|
||||
return '<a href="detail.html?id='+ d.id +'">'+ d.title;
|
||||
};
|
||||
|
||||
//全部消息
|
||||
table.render({
|
||||
elem: '#LAY-app-message-all'
|
||||
,url: layui.setter.base + 'json/message/all.js' //模拟接口
|
||||
,page: true
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'title', title: '标题内容', minWidth: 300, templet: tplTitle}
|
||||
,{field: 'time', title: '时间', width: 170, templet: '<div>{{ layui.util.timeAgo(d.time) }}</div>'}
|
||||
]]
|
||||
,skin: 'line'
|
||||
});
|
||||
|
||||
//通知
|
||||
table.render({
|
||||
elem: '#LAY-app-message-notice'
|
||||
,url: layui.setter.base + 'json/message/notice.js' //模拟接口
|
||||
,page: true
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'title', title: '标题内容', minWidth: 300, templet: tplTitle}
|
||||
,{field: 'time', title: '时间', width: 170, templet: '<div>{{ layui.util.timeAgo(d.time) }}</div>'}
|
||||
]]
|
||||
,skin: 'line'
|
||||
});
|
||||
|
||||
//私信
|
||||
table.render({
|
||||
elem: '#LAY-app-message-direct'
|
||||
,url: layui.setter.base + 'json/message/direct.js' //模拟接口
|
||||
,page: true
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'title', title: '标题内容', minWidth: 300, templet: tplTitle}
|
||||
,{field: 'time', title: '时间', width: 170, templet: '<div>{{ layui.util.timeAgo(d.time) }}</div>'}
|
||||
]]
|
||||
,skin: 'line'
|
||||
});
|
||||
|
||||
|
||||
//事件处理
|
||||
var events = {
|
||||
del: function(othis, type){
|
||||
var thisTabs = tabs[type]
|
||||
,checkStatus = table.checkStatus(thisTabs.id)
|
||||
,data = checkStatus.data; //获得选中的数据
|
||||
if(data.length === 0) return layer.msg('未选中行');
|
||||
|
||||
layer.confirm('确定删除选中的数据吗?', function(){
|
||||
/*
|
||||
admin.req('url', {}, function(){ //请求接口
|
||||
//do somethin
|
||||
});
|
||||
*/
|
||||
//此处只是演示,实际应用需把下述代码放入上述Ajax回调中
|
||||
layer.msg('删除成功', {
|
||||
icon: 1
|
||||
});
|
||||
table.reload(thisTabs.id); //刷新表格
|
||||
});
|
||||
}
|
||||
,ready: function(othis, type){
|
||||
var thisTabs = tabs[type]
|
||||
,checkStatus = table.checkStatus(thisTabs.id)
|
||||
,data = checkStatus.data; //获得选中的数据
|
||||
if(data.length === 0) return layer.msg('未选中行');
|
||||
|
||||
//此处只是演示
|
||||
layer.msg('标记已读成功', {
|
||||
icon: 1
|
||||
});
|
||||
table.reload(thisTabs.id); //刷新表格
|
||||
}
|
||||
,readyAll: function(othis, type){
|
||||
var thisTabs = tabs[type];
|
||||
|
||||
//do somethin
|
||||
|
||||
layer.msg(thisTabs.text + ':全部已读', {
|
||||
icon: 1
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$('.LAY-app-message-btns .layui-btn').on('click', function(){
|
||||
var othis = $(this)
|
||||
,thisEvent = othis.data('events')
|
||||
,type = othis.data('type');
|
||||
events[thisEvent] && events[thisEvent].call(this, othis, type);
|
||||
});
|
||||
|
||||
exports('message', {});
|
||||
});
|
||||
@@ -0,0 +1,299 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 主页示例
|
||||
@Author:star1029
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:GPL-2
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(function(exports){
|
||||
var admin = layui.admin;
|
||||
|
||||
//区块轮播切换
|
||||
layui.use(['admin', 'carousel'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,carousel = layui.carousel
|
||||
,element = layui.element
|
||||
,device = layui.device();
|
||||
|
||||
//轮播切换
|
||||
$('.layadmin-carousel').each(function(){
|
||||
var othis = $(this);
|
||||
carousel.render({
|
||||
elem: this
|
||||
,width: '100%'
|
||||
,arrow: 'none'
|
||||
,interval: othis.data('interval')
|
||||
,autoplay: othis.data('autoplay') === true
|
||||
,trigger: (device.ios || device.android) ? 'click' : 'hover'
|
||||
,anim: othis.data('anim')
|
||||
});
|
||||
});
|
||||
|
||||
element.render('progress');
|
||||
|
||||
});
|
||||
|
||||
//八卦新闻
|
||||
layui.use(['carousel', 'echarts'], function(){
|
||||
var $ = layui.$
|
||||
,carousel = layui.carousel
|
||||
,echarts = layui.echarts;
|
||||
|
||||
var echartsApp = [], options = [
|
||||
{
|
||||
title : {
|
||||
subtext: '完全实况球员数据',
|
||||
textStyle: {
|
||||
fontSize: 14
|
||||
}
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
x : 'left',
|
||||
data:['罗纳尔多','舍普琴科']
|
||||
},
|
||||
polar : [
|
||||
{
|
||||
indicator : [
|
||||
{text : '进攻', max : 100},
|
||||
{text : '防守', max : 100},
|
||||
{text : '体能', max : 100},
|
||||
{text : '速度', max : 100},
|
||||
{text : '力量', max : 100},
|
||||
{text : '技巧', max : 100}
|
||||
],
|
||||
radius : 130
|
||||
}
|
||||
],
|
||||
series : [
|
||||
{
|
||||
type: 'radar',
|
||||
center : ['50%', '50%'],
|
||||
itemStyle: {
|
||||
normal: {
|
||||
areaStyle: {
|
||||
type: 'default'
|
||||
}
|
||||
}
|
||||
},
|
||||
data:[
|
||||
{value : [97, 42, 88, 94, 90, 86], name : '舍普琴科'},
|
||||
{value : [97, 32, 74, 95, 88, 92], name : '罗纳尔多'}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
,elemDataView = $('#LAY-index-pageone').children('div')
|
||||
,renderDataView = function(index){
|
||||
echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme);
|
||||
echartsApp[index].setOption(options[index]);
|
||||
window.onresize = echartsApp[index].resize;
|
||||
};
|
||||
//没找到DOM,终止执行
|
||||
if(!elemDataView[0]) return;
|
||||
|
||||
renderDataView(0);
|
||||
});
|
||||
|
||||
//访问量
|
||||
layui.use(['carousel', 'echarts'], function(){
|
||||
var $ = layui.$
|
||||
,carousel = layui.carousel
|
||||
,echarts = layui.echarts;
|
||||
|
||||
var echartsApp = [], options = [
|
||||
{
|
||||
tooltip : {
|
||||
trigger: 'axis'
|
||||
},
|
||||
calculable : true,
|
||||
legend: {
|
||||
data:['访问量','下载量','平均访问量']
|
||||
},
|
||||
|
||||
xAxis : [
|
||||
{
|
||||
type : 'category',
|
||||
data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
|
||||
}
|
||||
],
|
||||
yAxis : [
|
||||
{
|
||||
type : 'value',
|
||||
name : '访问量',
|
||||
axisLabel : {
|
||||
formatter: '{value} 万'
|
||||
}
|
||||
},
|
||||
{
|
||||
type : 'value',
|
||||
name : '下载量',
|
||||
axisLabel : {
|
||||
formatter: '{value} 万'
|
||||
}
|
||||
}
|
||||
],
|
||||
series : [
|
||||
{
|
||||
name:'访问量',
|
||||
type:'line',
|
||||
data:[900, 850, 950, 1000, 1100, 1050, 1000, 1150, 1250, 1370, 1250, 1100]
|
||||
},
|
||||
{
|
||||
name:'下载量',
|
||||
type:'line',
|
||||
yAxisIndex: 1,
|
||||
data:[850, 850, 800, 950, 1000, 950, 950, 1150, 1100, 1240, 1000, 950]
|
||||
},
|
||||
{
|
||||
name:'平均访问量',
|
||||
type:'line',
|
||||
data:[870, 850, 850, 950, 1050, 1000, 980, 1150, 1000, 1300, 1150, 1000]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
,elemDataView = $('#LAY-index-pagetwo').children('div')
|
||||
,renderDataView = function(index){
|
||||
echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme);
|
||||
echartsApp[index].setOption(options[index]);
|
||||
window.onresize = echartsApp[index].resize;
|
||||
};
|
||||
//没找到DOM,终止执行
|
||||
if(!elemDataView[0]) return;
|
||||
renderDataView(0);
|
||||
|
||||
});
|
||||
|
||||
//地图
|
||||
layui.use(['carousel', 'echarts'], function(){
|
||||
var $ = layui.$
|
||||
,carousel = layui.carousel
|
||||
,echarts = layui.echarts;
|
||||
|
||||
var echartsApp = [], options = [
|
||||
{
|
||||
title : {
|
||||
text: '全国的 layui 用户分布',
|
||||
subtext: '不完全统计'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'item'
|
||||
},
|
||||
dataRange: {
|
||||
orient: 'horizontal',
|
||||
min: 0,
|
||||
max: 60000,
|
||||
text:['高','低'],
|
||||
splitNumber:0
|
||||
},
|
||||
series : [
|
||||
{
|
||||
name: '全国的 layui 用户分布',
|
||||
type: 'map',
|
||||
mapType: 'china',
|
||||
selectedMode : 'multiple',
|
||||
itemStyle:{
|
||||
normal:{label:{show:true}},
|
||||
emphasis:{label:{show:true}}
|
||||
},
|
||||
data:[
|
||||
{name:'西藏', value:60},
|
||||
{name:'青海', value:167},
|
||||
{name:'宁夏', value:210},
|
||||
{name:'海南', value:252},
|
||||
{name:'甘肃', value:502},
|
||||
{name:'贵州', value:570},
|
||||
{name:'新疆', value:661},
|
||||
{name:'云南', value:8890},
|
||||
{name:'重庆', value:10010},
|
||||
{name:'吉林', value:5056},
|
||||
{name:'山西', value:2123},
|
||||
{name:'天津', value:9130},
|
||||
{name:'江西', value:10170},
|
||||
{name:'广西', value:6172},
|
||||
{name:'陕西', value:9251},
|
||||
{name:'黑龙江', value:5125},
|
||||
{name:'内蒙古', value:1435},
|
||||
{name:'安徽', value:9530},
|
||||
{name:'北京', value:51919},
|
||||
{name:'福建', value:3756},
|
||||
{name:'上海', value:59190},
|
||||
{name:'湖北', value:37109},
|
||||
{name:'湖南', value:8966},
|
||||
{name:'四川', value:31020},
|
||||
{name:'辽宁', value:7222},
|
||||
{name:'河北', value:3451},
|
||||
{name:'河南', value:9693},
|
||||
{name:'浙江', value:62310},
|
||||
{name:'山东', value:39231},
|
||||
{name:'江苏', value:35911},
|
||||
{name:'广东', value:55891}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
,elemDataView = $('#LAY-index-pagethree').children('div')
|
||||
,renderDataView = function(index){
|
||||
echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme);
|
||||
echartsApp[index].setOption(options[index]);
|
||||
window.onresize = echartsApp[index].resize;
|
||||
};
|
||||
//没找到DOM,终止执行
|
||||
if(!elemDataView[0]) return;
|
||||
|
||||
renderDataView(0);
|
||||
});
|
||||
|
||||
//项目进展
|
||||
layui.use('table', function(){
|
||||
var $ = layui.$
|
||||
,table = layui.table;
|
||||
|
||||
table.render({
|
||||
elem: '#LAY-index-prograss'
|
||||
,url: layui.setter.base + 'json/console/prograss.js' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'prograss', title: '任务'}
|
||||
,{field: 'time', title: '所需时间'}
|
||||
,{field: 'complete', title: '完成情况'
|
||||
,templet: function(d){
|
||||
if(d.complete == '已完成'){
|
||||
return '<del style="color: #5FB878;">'+ d.complete +'</del>'
|
||||
}else if(d.complete == '进行中'){
|
||||
return '<span style="color: #FFB800;">'+ d.complete +'</span>'
|
||||
}else{
|
||||
return '<span style="color: #FF5722;">'+ d.complete +'</span>'
|
||||
}
|
||||
}
|
||||
}
|
||||
]]
|
||||
,skin: 'line'
|
||||
});
|
||||
});
|
||||
|
||||
//回复留言
|
||||
admin.events.replyNote = function(othis){
|
||||
var nid = othis.data('id');
|
||||
layer.prompt({
|
||||
title: '回复留言 ID:'+ nid
|
||||
,formType: 2
|
||||
}, function(value, index){
|
||||
//这里可以请求 Ajax
|
||||
//…
|
||||
layer.msg('得到:'+ value);
|
||||
layer.close(index);
|
||||
});
|
||||
};
|
||||
|
||||
exports('sample', {})
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,153 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin(iframe版) 设置
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License: LPPL
|
||||
|
||||
*/
|
||||
|
||||
layui.define(['form', 'upload'], function(exports){
|
||||
var $ = layui.$
|
||||
,layer = layui.layer
|
||||
,laytpl = layui.laytpl
|
||||
,setter = layui.setter
|
||||
,view = layui.view
|
||||
,admin = layui.admin
|
||||
,form = layui.form
|
||||
,upload = layui.upload;
|
||||
|
||||
var $body = $('body');
|
||||
|
||||
//自定义验证
|
||||
form.verify({
|
||||
nickname: function(value, item){ //value:表单的值、item:表单的DOM对象
|
||||
if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){
|
||||
return '用户名不能有特殊字符';
|
||||
}
|
||||
if(/(^\_)|(\__)|(\_+$)/.test(value)){
|
||||
return '用户名首尾不能出现下划线\'_\'';
|
||||
}
|
||||
if(/^\d+\d+\d$/.test(value)){
|
||||
return '用户名不能全为数字';
|
||||
}
|
||||
}
|
||||
|
||||
//我们既支持上述函数式的方式,也支持下述数组的形式
|
||||
//数组的两个值分别代表:[正则匹配、匹配不符时的提示文字]
|
||||
,pass: [
|
||||
/^[\S]{6,12}$/
|
||||
,'密码必须6到12位,且不能出现空格'
|
||||
]
|
||||
|
||||
//确认密码
|
||||
,repass: function(value){
|
||||
if(value !== $('#LAY_password').val()){
|
||||
return '两次密码输入不一致';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//网站设置
|
||||
form.on('submit(set_website)', function(obj){
|
||||
layer.msg(JSON.stringify(obj.field));
|
||||
|
||||
//提交修改
|
||||
/*
|
||||
admin.req({
|
||||
url: ''
|
||||
,data: obj.field
|
||||
,success: function(){
|
||||
|
||||
}
|
||||
});
|
||||
*/
|
||||
return false;
|
||||
});
|
||||
|
||||
//邮件服务
|
||||
form.on('submit(set_system_email)', function(obj){
|
||||
layer.msg(JSON.stringify(obj.field));
|
||||
|
||||
//提交修改
|
||||
/*
|
||||
admin.req({
|
||||
url: ''
|
||||
,data: obj.field
|
||||
,success: function(){
|
||||
|
||||
}
|
||||
});
|
||||
*/
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
//设置我的资料
|
||||
form.on('submit(setmyinfo)', function(obj){
|
||||
layer.msg(JSON.stringify(obj.field));
|
||||
|
||||
//提交修改
|
||||
/*
|
||||
admin.req({
|
||||
url: ''
|
||||
,data: obj.field
|
||||
,success: function(){
|
||||
|
||||
}
|
||||
});
|
||||
*/
|
||||
return false;
|
||||
});
|
||||
|
||||
//上传头像
|
||||
var avatarSrc = $('#LAY_avatarSrc');
|
||||
upload.render({
|
||||
url: '/api/upload/'
|
||||
,elem: '#LAY_avatarUpload'
|
||||
,done: function(res){
|
||||
if(res.status == 0){
|
||||
avatarSrc.val(res.url);
|
||||
} else {
|
||||
layer.msg(res.msg, {icon: 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//查看头像
|
||||
admin.events.avartatPreview = function(othis){
|
||||
var src = avatarSrc.val();
|
||||
layer.photos({
|
||||
photos: {
|
||||
"title": "查看头像" //相册标题
|
||||
,"data": [{
|
||||
"src": src //原图地址
|
||||
}]
|
||||
}
|
||||
,shade: 0.01
|
||||
,closeBtn: 1
|
||||
,anim: 5
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
//设置密码
|
||||
form.on('submit(setmypass)', function(obj){
|
||||
layer.msg(JSON.stringify(obj.field));
|
||||
|
||||
//提交修改
|
||||
/*
|
||||
admin.req({
|
||||
url: ''
|
||||
,data: obj.field
|
||||
,success: function(){
|
||||
|
||||
}
|
||||
});
|
||||
*/
|
||||
return false;
|
||||
});
|
||||
|
||||
//对外暴露的接口
|
||||
exports('set', {});
|
||||
});
|
||||
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 用户登入和注册等
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License: LPPL
|
||||
|
||||
*/
|
||||
|
||||
layui.define('form', function(exports){
|
||||
var $ = layui.$
|
||||
,layer = layui.layer
|
||||
,laytpl = layui.laytpl
|
||||
,setter = layui.setter
|
||||
,view = layui.view
|
||||
,admin = layui.admin
|
||||
,form = layui.form;
|
||||
|
||||
var $body = $('body');
|
||||
|
||||
//自定义验证
|
||||
form.verify({
|
||||
nickname: function(value, item){ //value:表单的值、item:表单的DOM对象
|
||||
if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){
|
||||
return '用户名不能有特殊字符';
|
||||
}
|
||||
if(/(^\_)|(\__)|(\_+$)/.test(value)){
|
||||
return '用户名首尾不能出现下划线\'_\'';
|
||||
}
|
||||
if(/^\d+\d+\d$/.test(value)){
|
||||
return '用户名不能全为数字';
|
||||
}
|
||||
}
|
||||
|
||||
//我们既支持上述函数式的方式,也支持下述数组的形式
|
||||
//数组的两个值分别代表:[正则匹配、匹配不符时的提示文字]
|
||||
,pass: [
|
||||
/^[\S]{6,12}$/
|
||||
,'密码必须6到12位,且不能出现空格'
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
//发送短信验证码
|
||||
admin.sendAuthCode({
|
||||
elem: '#LAY-user-getsmscode'
|
||||
,elemPhone: '#LAY-user-login-cellphone'
|
||||
,elemVercode: '#LAY-user-login-vercode'
|
||||
,ajax: {
|
||||
url: layui.setter.base + 'json/user/sms.js' //实际使用请改成服务端真实接口
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
//更换图形验证码
|
||||
$body.on('click', '#LAY-user-get-vercode', function(){
|
||||
var othis = $(this);
|
||||
this.src = 'https://www.oschina.net/action/user/captcha?t='+ new Date().getTime()
|
||||
});
|
||||
|
||||
//对外暴露的接口
|
||||
exports('user', {});
|
||||
});
|
||||
@@ -0,0 +1,209 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 用户管理 管理员管理 角色管理
|
||||
@Author:star1029
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(['table', 'form'], function(exports){
|
||||
var $ = layui.$
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
|
||||
//用户管理
|
||||
table.render({
|
||||
elem: '#LAY-user-manage'
|
||||
,url: layui.setter.base + 'json/useradmin/webuser.js' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 100, title: 'ID', sort: true}
|
||||
,{field: 'username', title: '用户名', minWidth: 100}
|
||||
,{field: 'avatar', title: '头像', width: 100, templet: '#imgTpl'}
|
||||
,{field: 'phone', title: '手机'}
|
||||
,{field: 'email', title: '邮箱'}
|
||||
,{field: 'sex', width: 80, title: '性别'}
|
||||
,{field: 'ip', title: 'IP'}
|
||||
,{field: 'jointime', title: '加入时间', sort: true}
|
||||
,{title: '操作', width: 150, align:'center', fixed: 'right', toolbar: '#table-useradmin-webuser'}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 30
|
||||
,height: 'full-220'
|
||||
,text: '对不起,加载出现异常!'
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-user-manage)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.prompt({
|
||||
formType: 1
|
||||
,title: '敏感操作,请验证口令'
|
||||
}, function(value, index){
|
||||
layer.close(index);
|
||||
|
||||
layer.confirm('真的删除行么', function(index){
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
} else if(obj.event === 'edit'){
|
||||
var tr = $(obj.tr);
|
||||
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑用户'
|
||||
,content: '../../../views/user/user/userform.html'
|
||||
,maxmin: true
|
||||
,area: ['500px', '450px']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submitID = 'LAY-user-front-submit'
|
||||
,submit = layero.find('iframe').contents().find('#'+ submitID);
|
||||
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,静态更新表格中的数据
|
||||
//$.ajax({});
|
||||
table.reload('LAY-user-front-submit'); //数据刷新
|
||||
layer.close(index); //关闭弹层
|
||||
});
|
||||
|
||||
submit.trigger('click');
|
||||
}
|
||||
,success: function(layero, index){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//管理员管理
|
||||
table.render({
|
||||
elem: '#LAY-user-back-manage'
|
||||
,url: layui.setter.base + 'json/useradmin/mangadmin.js' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 80, title: 'ID', sort: true}
|
||||
,{field: 'loginname', title: '登录名'}
|
||||
,{field: 'telphone', title: '手机'}
|
||||
,{field: 'email', title: '邮箱'}
|
||||
,{field: 'role', title: '角色'}
|
||||
,{field: 'jointime', title: '加入时间', sort: true}
|
||||
,{field: 'check', title:'审核状态', templet: '#buttonTpl', minWidth: 80, align: 'center'}
|
||||
,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'}
|
||||
]]
|
||||
,text: '对不起,加载出现异常!'
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-user-back-manage)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.prompt({
|
||||
formType: 1
|
||||
,title: '敏感操作,请验证口令'
|
||||
}, function(value, index){
|
||||
layer.close(index);
|
||||
layer.confirm('确定删除此管理员?', function(index){
|
||||
console.log(obj)
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
}else if(obj.event === 'edit'){
|
||||
var tr = $(obj.tr);
|
||||
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑管理员'
|
||||
,content: '../../../views/user/administrators/adminform.html'
|
||||
,area: ['420px', '420px']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submitID = 'LAY-user-back-submit'
|
||||
,submit = layero.find('iframe').contents().find('#'+ submitID);
|
||||
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,静态更新表格中的数据
|
||||
//$.ajax({});
|
||||
table.reload('LAY-user-front-submit'); //数据刷新
|
||||
layer.close(index); //关闭弹层
|
||||
});
|
||||
|
||||
submit.trigger('click');
|
||||
}
|
||||
,success: function(layero, index){
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
//角色管理
|
||||
table.render({
|
||||
elem: '#LAY-user-back-role'
|
||||
,url: layui.setter.base + 'json/useradmin/role.js' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 80, title: 'ID', sort: true}
|
||||
,{field: 'rolename', title: '角色名'}
|
||||
,{field: 'limits', title: '拥有权限'}
|
||||
,{field: 'descr', title: '具体描述'}
|
||||
,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'}
|
||||
]]
|
||||
,text: '对不起,加载出现异常!'
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-user-back-role)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定删除此角色?', function(index){
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
});
|
||||
}else if(obj.event === 'edit'){
|
||||
var tr = $(obj.tr);
|
||||
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑角色'
|
||||
,content: '../../../views/user/administrators/roleform.html'
|
||||
,area: ['500px', '480px']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submit = layero.find('iframe').contents().find("#LAY-user-role-submit");
|
||||
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit(LAY-user-role-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,静态更新表格中的数据
|
||||
//$.ajax({});
|
||||
table.reload('LAY-user-back-role'); //数据刷新
|
||||
layer.close(index); //关闭弹层
|
||||
});
|
||||
|
||||
submit.trigger('click');
|
||||
}
|
||||
,success: function(layero, index){
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
exports('useradmin', {})
|
||||
});
|
||||
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 工单系统
|
||||
@Author:star1029
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:GPL-2
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(['table', 'form', 'element'], function(exports){
|
||||
var $ = layui.$
|
||||
,table = layui.table
|
||||
,form = layui.form
|
||||
,element = layui.element;
|
||||
|
||||
table.render({
|
||||
elem: '#LAY-app-system-order'
|
||||
,url: layui.setter.base + 'json/workorder/demo.js' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'numbers', fixed: 'left'}
|
||||
,{field: 'orderid', width: 100, title: '工单号', sort: true}
|
||||
,{field: 'attr', width: 100, title: '业务性质'}
|
||||
,{field: 'title', width: 100, title: '工单标题', width: 300}
|
||||
,{field: 'progress', title: '进度', width: 200, align: 'center', templet: '#progressTpl'}
|
||||
,{field: 'submit', width: 100, title: '提交者'}
|
||||
,{field: 'accept', width: 100, title: '受理人员'}
|
||||
,{field: 'state', title: '工单状态', templet: '#buttonTpl', minWidth: 80, align: 'center'}
|
||||
,{title: '操作', align: 'center', fixed: 'right', toolbar: '#table-system-order'}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 10
|
||||
,limits: [10, 15, 20, 25, 30]
|
||||
,text: '对不起,加载出现异常!'
|
||||
,done: function(){
|
||||
element.render('progress')
|
||||
}
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-app-system-order)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'edit'){
|
||||
var tr = $(obj.tr);
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑工单'
|
||||
,content: '../../../views/app/workorder/listform.html'
|
||||
,area: ['450px', '450px']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submitID = 'LAY-app-workorder-submit'
|
||||
,submit = layero.find('iframe').contents().find('#'+ submitID);
|
||||
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,静态更新表格中的数据
|
||||
//$.ajax({});
|
||||
table.reload('LAY-user-front-submit'); //数据刷新
|
||||
layer.close(index); //关闭弹层
|
||||
});
|
||||
|
||||
submit.trigger('click');
|
||||
}
|
||||
,success: function(layero, index){
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
exports('workorder', {})
|
||||
});
|
||||
Reference in New Issue
Block a user