初始化

This commit is contained in:
liut
2021-10-12 11:06:24 +08:00
commit ff0b4d5b12
1270 changed files with 405680 additions and 0 deletions
+80
View File
@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
<title> {$Think.config.app_name} 后台管理 </title>
<!-- 样 式 文 件 -->
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
<link rel="stylesheet" href="/static/admin/css/other/login.css" />
</head>
<!-- 代 码 结 构 -->
<body style="background-size: cover;">
<form class="layui-form" action="javascript:void(0);">
<div class="layui-form-item">
<img class="logo" src="/static/admin/images/logo.png" />
<div class="title">{$Think.config.app_name}Yun</div>
<div class="desc">
{$Think.config.app_name} 后台管理
</div>
</div>
<div class="layui-form-item">
<input placeholder="账 户" type="text" name="username" hover class="layui-input"/>
</div>
<div class="layui-form-item">
<input placeholder="密 码" type="password" name="password" hover class="layui-input"/>
</div>
<div class="layui-form-item">
<input placeholder="验证码 : " type="text" maxlength="4" name="captcha" hover class="code layui-input layui-input-inline"/>
<img id="codeimg" class="codeImage" style="cursor: pointer;width: calc(100% - 192px);"/>
</div>
<br>
<div class="layui-form-item">
<button class="pear-btn pear-btn-success login" lay-submit lay-filter="login">
登 入
</button>
</div>
</form>
<!-- 资 源 引 入 -->
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form', 'layer', 'jquery', 'element'], function () {
var $ = layui.jquery
, layer = layui.layer
, element = layui.element
, form = layui.form;
// 登 录 提 交
form.on('submit(login)', function(data) {
layer.load();
$.ajax({
type: "POST",
data: data.field,
success: function (res) {
layer.closeAll('loading');
if (res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function () {
location.href = "{:url('index/index')}";
})
} else {
layer.msg(res.msg,{icon:2,time:1000},function () {
initCode();
})
}
}
});
return false;
});
initCode();
function initCode() {
$('#codeimg').attr("src","{:url('auth/verify')}?data=" + new Date().getTime());
}
$('#codeimg').on('click', function () {
initCode();
});
})
</script>
</body>
</html>
+151
View File
@@ -0,0 +1,151 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
<script type="text/html" id="user-toolbar"></script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-survey"></i></button>
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script type="text/html" id="user-auth">
{{#if (d.status == 0) { }}
<span class="layui-badge layui-bg-orange">未审核</span>
{{# }else if(d.status == 1){ }}
<span class="layui-badge layui-bg-blue">已审核</span>
{{# } }}
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['table', 'form', 'jquery','common'], function() {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let common = layui.common;
let cols = [
[{type: 'checkbox'},
{title: 'ID', field: 'id', align: 'center'},
{title: '用户帐号', field: 'uid', align: 'center'},
{title: '真实姓名', field: 'name', align: 'center'},
{title: '身份证号码', field: 'idcard', align: 'center'},
{title: '处理状态', field: 'status', align: 'center', templet: '#user-auth'},
{title: '创建时间', field: 'create_time', align: 'center'},
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
]
]
table.render({
elem: '#user-table',
url: "{:url('certify/index')}",
page: true,
limit:20,
cols: cols,
skin: 'line',
toolbar: '#user-toolbar',
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'filter', 'print', 'exports']
});
table.on('tool(user-table)', function(obj) {
if (obj.event === 'remove') {
window.remove(obj);
} else if (obj.event === 'edit') {
window.edit(obj);
}
});
table.on('toolbar(user-table)', function(obj) {
if (obj.event === 'refresh') {
window.refresh();
}
});
window.edit = function(obj) {
layer.confirm('确认通过该条实名认证请求吗?', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('certify/edit')}?id=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
},function(){
window.refresh();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.remove = function(obj) {
layer.confirm('确定要删除该认证内容吗?', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('certify/delete')}?id=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.refresh = function(param) {
table.reload('user-table');
}
})
</script>
</body>
</html>
+177
View File
@@ -0,0 +1,177 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>控制后台</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
<link rel="stylesheet" href="/static/admin/css/other/console1.css" />
</head>
<body class="pear-container">
<div>
<div class="layui-row layui-col-space10">
<div class="layui-col-xs6 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">用户数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs8 layui-col-md8 top-panel-number" style="color: #28333E;">
{$count.user}
</div>
<div class="layui-col-xs4 layui-col-md4 top-panel-tips">
<span class="icon pear-icon" style="font-size: 40px">&#xe6e0;</span>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">VIP用户</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs8 layui-col-md8 top-panel-number" style="color: #28333E;">
{$count.vip}
</div>
<div class="layui-col-xs4 layui-col-md4 top-panel-tips">
<span class="icon pear-icon" style="font-size: 40px">&#xe697;</span>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">文件数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs8 layui-col-md8 top-panel-number" style="color: #28333E;">
{$count.file}
</div>
<div class="layui-col-xs4 layui-col-md4 top-panel-tips">
<span class="icon pear-icon" style="font-size: 40px">&#xe6a4;</span>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">文件大小</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs8 layui-col-md8 top-panel-number" style="color: #28333E;">
{$count.size}
</div>
<div class="layui-col-xs4 layui-col-md4 top-panel-tips">
<span class="icon pear-icon" style="font-size: 40px">&#xe6ad;</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-row layui-col-space10">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-tab custom-tab layui-tab-brief" lay-filter="docDemoTabBrief">
<div id="echarts-records" style="background-color:#ffffff;min-height:400px;padding: 10px"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--</div>-->
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['layer', 'echarts', 'element'], function() {
var $ = layui.jquery,
layer = layui.layer,
element = layui.element,
echarts = layui.echarts;
var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'walden');
var option = {
tooltip: {
trigger: 'axis'
},
xAxis: [{
type: 'category',
data: [{$time_type|raw}],
axisLine: {
lineStyle: {
color: "#999"
}
}
}],
yAxis: [{
type: 'value',
splitNumber: 4,
splitLine: {
lineStyle: {
type: 'dashed',
color: '#DDD'
}
},
axisLine: {
show: false,
lineStyle: {
color: "#333"
},
},
nameTextStyle: {
color: "#999"
},
splitArea: {
show: false
}
}],
tooltip: {
valueSuffix: ' 个',
crosshairs: true,
shared: true
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
series: [
{
name: '注册',
type: 'line',
color: 'rgba(0,242,59,246)', marker: { radius: 6 }, data: [{$series_reg|raw}]
},
{
name: '成功订单',
type: 'line',
color: 'rgba(0,15,182,59)', marker: { radius: 6 }, data: [{$series_order|raw}]
},
{
name: '金额',
type: 'line',
color: 'rgba(0,92,219,192)', marker: { radius: 6 }, data: [{$series_money|raw}]
}
]
};
echartsRecords.setOption(option);
window.onresize = function() {
echartsRecords.resize();
}
});
</script>
</body>
</html>
+288
View File
@@ -0,0 +1,288 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<form class="layui-form" action="">
<div class="layui-form-item">
<div id="test6">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">开始日期</label>
<div class="layui-input-inline">
<input type="text" autocomplete="off" name="start_time" id="test-startDate-1" class="layui-input" placeholder="开始日期">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">结束日期</label>
<div class="layui-input-inline">
<input type="text" autocomplete="off" name="end_time" id="test-endDate-1" class="layui-input" placeholder="结束日期">
</div>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">排序字段</label>
<div class="layui-input-inline">
<select name="sort_key" lay-verify="required">
<option value="create_time">上传时间排序</option>
<option value="update_time">更新时间排序</option>
<option value="id">ID排序</option>
<option value="size">文件大小排序</option>
<option value="count_down">下载量排序</option>
<option value="count_open">浏览量排序</option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">排序方式</label>
<div class="layui-input-inline">
<select name="sort" lay-verify="required">
<option value="0">降序</option>
<option value="1">升序</option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">存储筛选</label>
<div class="layui-input-inline">
<select name="policy" lay-verify="required">
{volist name="$policy" id="vo"}
<option value="{$vo.id}">{$vo.name}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">文件后缀</label>
<div class="layui-input-inline">
<input type="text" name="ext" placeholder="请输入文件后缀 如 png jpg 等" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">用户UID</label>
<div class="layui-input-inline">
<input type="number" name="uid" placeholder="请输入UID" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">文件名称</label>
<div class="layui-input-inline">
<input type="text" name="origin_name" placeholder="请输入文件名称" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<button class="pear-btn pear-btn-md pear-btn-primary" style="margin-left: 36px;" lay-submit lay-filter="user-query">
<i class="layui-icon layui-icon-search"></i>
搜索结果
</button>
<button type="reset" class="pear-btn pear-btn-md">
<i class="layui-icon layui-icon-refresh"></i>
重置搜索
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
<script type="text/html" id="user-toolbar">
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
<i class="layui-icon layui-icon-delete"></i>
批量删除
</button>
</script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-primary pear-btn-sm" title="下载文件" lay-event="download"><i class="layui-icon layui-icon-download-circle"></i></button>
<button class="pear-btn pear-btn-primary pear-btn-sm" title="查看文件" lay-event="info"><i class="layui-icon layui-icon-form"></i></button>
<button class="pear-btn pear-btn-danger pear-btn-sm" title="删除文件" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script type="text/html" id="file-icon">
<img src="{{ d.icon }}">
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['table', 'form', 'jquery','common','laydate'], function() {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let common = layui.common;
var laydate = layui.laydate;
laydate.render({
elem: '#test6'
,range: ['#test-startDate-1', '#test-endDate-1']
});
let cols = [
[{type: 'checkbox'},
{title: '', field: 'icon', align: 'center',width: 40,templet: '#file-icon'},
{title: '文件名', field: 'origin_name',width: 300, align: 'left'},
{title: '大小', field: 'size', align: 'center'},
{title: '上传用户', field: 'uid', align: 'center'},
{title: '储存服务器', field: 'policy_id', align: 'center'},
{title: '文件后缀', field: 'ext', align: 'center'},
{title: '下载量', field: 'count_down', align: 'center'},
{title: '浏览量', field: 'count_open', align: 'center'},
{title: '上传时间', field: 'create_time', align: 'center'},
{title: '操作', toolbar: '#user-bar', align: 'center', width: 160}
]
]
table.render({
elem: '#user-table',
url: "{:url('file/index')}",
page: true,
cols: cols,
skin: 'line',
limit:20,
toolbar: '#user-toolbar',
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'print', 'exports']
});
table.on('tool(user-table)', function(obj) {
if (obj.event === 'remove') {
window.remove(obj);
} else if(obj.event === 'info'){
window.info(obj);
} else if (obj.event === 'download') {
window.download(obj);
}
});
table.on('toolbar(user-table)', function(obj) {
if (obj.event === 'refresh') {
window.refresh();
} else if (obj.event === 'batchRemove') {
window.batchRemove(obj);
}
});
form.on('submit(user-query)', function(data) {
table.reload('user-table', {
where: data.field
})
return false;
});
window.info = function(obj) {
layer.open({
type: 2,
title: '文件信息',
shade: 0.1,
area: ['600px', '600px'],
content: "{:url('file/info')}?id=" + obj.data['id']
});
}
window.download = function(obj) {
window.open("{:url('file/download')}?id=" + obj.data['id']);
}
window.remove = function(obj) {
layer.confirm('确定要删除该文件吗?', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('file/delete')}?ids=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.batchRemove = function(obj) {
var checkIds = common.checkField(obj,'id');
if (checkIds === "") {
layer.msg("未选中数据", {
icon: 3,
time: 1000
});
return false;
}
layer.confirm('确定要删除这些文件[' + checkIds + ']吗?', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('file/delete')}?ids=" + checkIds,
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
table.reload('user-table');
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.refresh = function(param) {
table.reload('user-table');
}
})
</script>
</body>
</html>
+71
View File
@@ -0,0 +1,71 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<div class="layui-form-item">
<label class="layui-form-label">文件名</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$info.origin_name}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文件大小</label>
<div class="layui-input-block">
<div class="layui-form-mid">{:countSize($info.size)}</div>
</div>
</div>
<br>
<div class="layui-form-item">
<label class="layui-form-label">储存策略</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$policy_name}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所属用户</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$username}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">储存地址</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$file_path}</div>
</div>
</div>
<br>
<div class="layui-form-item">
<label class="layui-form-label">上传时间</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$info.create_time}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">更新时间</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$info.update_time}</div>
</div>
</div>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
</body>
</html>
+119
View File
@@ -0,0 +1,119 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<div class="layui-form-item">
<label class="layui-form-label">用户组名</label>
<div class="layui-input-block">
<input type="text" name="group_name" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">用户组的名称</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">存储策略</label>
<div class="layui-input-block">
<select name="policy_id" lay-verify="required">
{volist name="$policy" id="vo"}
<option value="{$vo.id}">{$vo.name}</option>
{/volist}
</select>
<div class="layui-form-mid layui-word-aux">为该用户组绑定一个上传策略</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上传大小</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<input type="number" name="max_storage" required value="10" lay-verify="required" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid">单位:</div>
<div class="layui-input-inline">
<select name="storage_size" lay-verify="required">
<option value="1">B</option>
<option value="1024">KB</option>
<option value="1048576" selected>MB</option>
<option value="1073741824">GB</option>
</select>
</div>
<div class="layui-form-mid layui-word-aux">限制用户组单文件上传大小</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">下载限速</label>
<div class="layui-input-inline">
<input type="text" name="speed" min="0" placeholder="留空表示不限速" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"><b>KB/s</b> 填写0表示禁止下载</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分享文件</label>
<div class="layui-input-inline">
<input type="radio" name="allow_share" value="1" title="允许">
<input type="radio" name="allow_share" value="0" title="禁止" checked>
</div>
<div class="layui-form-mid layui-word-aux">是否允许创建文件分享链接</div>
</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
<i class="layui-icon layui-icon-ok"></i>
提交
</button>
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">
<i class="layui-icon layui-icon-refresh"></i>
重置
</button>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery'],function(){
let form = layui.form;
let $ = layui.jquery;
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
parent.layui.table.reload("user-table");
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+118
View File
@@ -0,0 +1,118 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<div class="layui-form-item">
<label class="layui-form-label">用户组名</label>
<div class="layui-input-block">
<input type="text" name="group_name" value="{$info.group_name}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">用户组的名称</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">存储策略</label>
<div class="layui-input-block">
<select name="policy_id" lay-verify="required">
{volist name="$policy" id="vo"}
<option value="{$vo.id}" {eq name="$vo.id" value="$info.policy_id"}selected{/eq}>{$vo.name}</option>
{/volist}
</select>
<div class="layui-form-mid layui-word-aux">为该用户组绑定一个上传策略</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上传大小</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<input type="number" name="max_storage" required value="{:countSize($info.max_storage,true)[0]}" lay-verify="required" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid">单位:</div>
<div class="layui-input-inline">
<select name="storage_size" lay-verify="required">
{php}
$storage_size = countSize($info['max_storage'],true)[1];
{/php}
<option value="1" {eq name="$storage_size" value="1"}selected{/eq}>B</option>
<option value="1024" {eq name="$storage_size" value="1024"}selected{/eq}>KB</option>
<option value="1048576" {eq name="$storage_size" value="1048576"}selected{/eq}>MB</option>
<option value="1073741824" {eq name="$storage_size" value="1073741824"}selected{/eq}>GB</option>
</select>
</div>
<div class="layui-form-mid layui-word-aux">限制用户组单文件上传大小</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">下载限速</label>
<div class="layui-input-inline">
<input type="text" name="speed" min="0" value="{$info.speed}" placeholder="留空表示不限速" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"><b>KB/s</b> 填写0表示禁止下载</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分享文件</label>
<div class="layui-input-inline">
<input type="radio" name="allow_share" value="1" title="允许" {eq name="$info.allow_share" value="1"}checked{/eq}>
<input type="radio" name="allow_share" value="0" title="禁止" {eq name="$info.allow_share" value="0"}checked{/eq}>
</div>
<div class="layui-form-mid layui-word-aux">是否允许创建文件分享链接</div>
</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
<i class="layui-icon layui-icon-ok"></i>
提交
</button>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery'],function(){
let form = layui.form;
let $ = layui.jquery;
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
parent.layui.table.reload("user-table");
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+158
View File
@@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户组管理</title>
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
<script type="text/html" id="user-toolbar">
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
<i class="layui-icon layui-icon-add-1"></i>
新增用户组
</button>
</script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button>
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script type="text/html" id="user-speed">
{{#if (d.speed == '') { }}
<span class="layui-badge layui-bg-blue">不限速</span>
{{# }else if(d.speed == 0){ }}
<span class="layui-badge layui-bg-orange">禁止下载</span>
{{# }else if(d.speed > 0){ }}
<span class="layui-badge-rim">{{ d.speed }} KB/s</span>
{{# } }}
</script>
<script type="text/html" id="user-share">
{{#if (d.allow_share == 0) { }}
<span class="layui-badge layui-bg-orange">禁止</span>
{{# }else if(d.allow_share == 1){ }}
<span class="layui-badge layui-bg-blue">允许</span>
{{# } }}
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['table', 'form', 'jquery','common'], function() {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let common = layui.common;
let cols = [
[{type: 'checkbox'},
{title: 'ID', field: 'id', align: 'center'},
{title: '用户组名称', field: 'group_name', align: 'center'},
{title: '类型', field: 'is_sys', align: 'center'},
{title: '存储策略', field: 'policy_id', align: 'center'},
{title: '用户数量', field: 'user_num', align: 'center'},
{title: '上传大小限制', field: 'max_storage', align: 'center'},
{title: '下载限速', field: 'speed', align: 'center', templet: '#user-speed'},
{title: '允许分享', field: 'allow_share', align: 'center', templet: '#user-share'},
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
]
]
table.render({
elem: '#user-table',
url: window.location.href,
page: true,
cols: cols,
skin: 'line',
toolbar: '#user-toolbar',
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'print', 'exports']
});
table.on('tool(user-table)', function(obj) {
if (obj.event === 'remove') {
window.remove(obj);
} else if (obj.event === 'edit') {
window.edit(obj);
}
});
table.on('toolbar(user-table)', function(obj) {
if (obj.event === 'add') {
window.add();
} else if (obj.event === 'refresh') {
window.refresh();
}
});
window.add = function() {
layer.open({
type: 2,
title: '新增用户组',
shade: 0.1,
area: [common.isModile()?'100%':'600px', common.isModile()?'100%':'500px'],
content: "{:url('group/add')}"
});
}
window.edit = function(obj) {
layer.open({
type: 2,
title: '修改用户组',
shade: 0.1,
area: ['600px', '500px'],
content: "{:url('group/edit')}?id=" + obj.data['id']
});
}
window.remove = function(obj) {
layer.confirm('确定要删除该用户组吗?', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('group/delete')}?id=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.refresh = function(param) {
table.reload('user-table');
}
})
</script>
</body>
</html>
+93
View File
@@ -0,0 +1,93 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title> {$Think.config.app_name} 后台管理 </title>
<!-- 依 赖 样 式 -->
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
<!-- 加 载 样 式-->
<link rel="stylesheet" href="/static/admin/css/load.css" />
<!-- 布 局 样 式 -->
<link rel="stylesheet" href="/static/admin/css/admin.css" />
<script>
if(window!=top){ top.location.href = location.href; }
var skpan_config = {
title:"{$theme.title}",
logo:"{$theme.logo}",
menu: {$theme.menu|raw},
menu_select:"{$theme.menu_select}",
home_url:"{$theme.home_url}",
index_url:"{$theme.index_url}",
logout_url:"{$theme.logout_url}",
pass_url:"{$theme.pass_url}",
clear_cache_url:"{$theme.clear_cache_url}"
}
</script>
</head>
<!-- 结 构 代 码 -->
<body class="layui-layout-body pear-admin">
<!-- 布 局 框 架 -->
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<!-- 顶 部 左 侧 功 能 -->
<ul class="layui-nav layui-layout-left">
<li class="collaspe layui-nav-item"><a href="#" class="layui-icon layui-icon-shrink-right"></a></li>
<li class="refresh layui-nav-item"><a href="#" class="layui-icon layui-icon-refresh-1" loading=600></a></li>
</ul>
<!-- 顶 部 右 侧 菜 单 -->
<div id="control" class="layui-layout-control"></div>
<ul class="layui-nav layui-layout-right" lay-filter="layui_nav_right">
<li class="layui-nav-item layui-hide-xs"><a href="#" class="fullScreen layui-icon layui-icon-screen-full"></a></li>
<li class="layui-nav-item user">
<!-- 头 像 -->
<a href="javascript:;">
<img src="{$theme.admin.avatar}" class="layui-nav-img">
{$theme.admin.nickname}
</a>
<!-- 功 能 菜 单 -->
<dl class="layui-nav-child">
<dd>
<a href="javascript:void(0);" class="logout">
退出登录
</a>
</dd>
</dl>
</li>
</ul>
</div>
<!-- 侧 边 区 域 -->
<div class="layui-side layui-bg-black">
<!-- 顶 部 图 标 -->
<div class="layui-logo">
<!-- 图 表 -->
<img class="logo">
<!-- 标 题 -->
<span class="title"></span>
</div>
<!-- 侧 边 菜 单 -->
<div class="layui-side-scroll">
<div id="sideMenu"></div>
</div>
</div>
<!-- 视 图 页 面 -->
<div class="layui-body">
<!-- 内 容 页 面 -->
<div id="content"></div>
</div>
</div>
<!-- 遮 盖 层 -->
<div class="pear-cover"></div>
<!-- 移 动 端 便 捷 操 作 -->
<div class="pear-collasped-pe collaspe"><a href="#" class="layui-icon layui-icon-shrink-right"></a></div>
<!-- 加 载 动 画-->
<div class="loader-main">
<div class="loader"></div>
</div>
<!-- 依 赖 脚 本 -->
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<!-- 框 架 初 始 化 -->
<script src="/static/admin/js/boostrap.js"></script>
</body>
</html>
+222
View File
@@ -0,0 +1,222 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<form class="layui-form" action="">
<div class="layui-form-item">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">搜索类型</label>
<div class="layui-input-inline">
<select name="search_type" lay-verify="required">
<option value="trade_no">订单号</option>
<option value="out_trade_no">易支付订单号</option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">支付状态</label>
<div class="layui-input-inline">
<select name="status" lay-verify="required">
<option value="0">等待支付</option>
<option value="1">支付成功</option>
<option value="2">订单关闭</option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">搜索内容</label>
<div class="layui-input-inline">
<input type="text" name="search_value" placeholder="请输入搜索内容" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="user-query">
<i class="layui-icon layui-icon-search"></i>
搜索结果
</button>
<button type="reset" class="pear-btn pear-btn-md">
<i class="layui-icon layui-icon-refresh"></i>
重置搜索
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
<script type="text/html" id="user-toolbar">
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
<i class="layui-icon layui-icon-delete"></i>
批量删除
</button>
</script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script type="text/html" id="user-auth">
{{#if (d.status == 0) { }}
<span class="layui-badge layui-bg-orange">等待支付</span>
{{# }else if(d.status == 1){ }}
<span class="layui-badge layui-bg-blue">支付完成</span>
{{# }else if(d.status == 2){ }}
<span class="layui-badge layui-bg-red">订单关闭</span>
{{# } }}
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['table', 'form', 'jquery','common'], function() {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let common = layui.common;
let cols = [
[{type: 'checkbox'},
{title: '订单号', field: 'trade_no', align: 'center', width: 250},
{title: '开通用户', field: 'uid', align: 'center'},
{title: '支付方式', field: 'type', align: 'center'},
{title: '支付金额', field: 'money', align: 'center'},
{title: '开通时长', field: 'vip_day', align: 'center'},
{title: '易支付订单号', field: 'out_trade_no', align: 'center'},
{title: '支付状态', field: 'status', align: 'center', templet: '#user-auth'},
{title: '发起时间', field: 'create_time', align: 'center'},
{title: '支付时间', field: 'pay_time', align: 'center'},
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
]
]
table.render({
elem: '#user-table',
url: "{:url('order/index')}",
page: true,
limit: 20,
cols: cols,
skin: 'line',
toolbar: '#user-toolbar',
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'filter', 'print', 'exports']
});
table.on('tool(user-table)', function(obj) {
if (obj.event === 'remove') {
window.remove(obj);
}
});
table.on('toolbar(user-table)', function(obj) {
if (obj.event === 'refresh') {
window.refresh();
} else if (obj.event === 'batchRemove') {
window.batchRemove(obj);
}
});
form.on('submit(user-query)', function(data) {
table.reload('user-table', {
where: data.field
})
return false;
});
window.remove = function(obj) {
layer.confirm('确定要删除订单吗?<br><b style="color: red">请勿删除正在等待支付或者支付完成的订单</b>', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('order/delete')}?ids=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.batchRemove = function(obj) {
var checkIds = common.checkField(obj,'id');
if (checkIds === "") {
layer.msg("未选中数据", {
icon: 3,
time: 1000
});
return false;
}
layer.confirm('确定要批量删除这些订单吗?<br><b style="color: red">请勿删除正在等待支付或者支付完成的订单</b>', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('order/delete')}?ids=" + checkIds,
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
table.reload('user-table');
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.refresh = function(param) {
table.reload('user-table');
}
})
</script>
</body>
</html>
+241
View File
@@ -0,0 +1,241 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
<style>
.remote_field{
display: none;
}
</style>
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<div class="layui-form-item">
<label class="layui-form-label">策略名称</label>
<div class="layui-input-block">
<input type="text" name="name" lay-verify="required" placeholder="请输入上传策略的名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">允许后缀</label>
<div class="layui-input-block">
<input type="text" name="filetype" placeholder="请输入文件后缀" class="layui-input">
<div class="layui-form-mid layui-word-aux">多个请以半角逗号","隔开,留空表示不限制。如"png,jpg"</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">存储服务器</label>
<div class="layui-input-block">
<select name="type" lay-verify="required" lay-filter="server_select">
<option value="local">本地</option>
<option value="remote">远程</option>
<option value="aliyunoss">阿里云OSS</option>
<option value="txyunoss">腾讯云COS</option>
</select>
<div class="layui-form-mid layui-word-aux">文件存储的服务器</div>
</div>
</div>
<div class="other-field">
</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
<i class="layui-icon layui-icon-ok"></i>
提交
</button>
</div>
</div>
</form>
<script id="field_local" type="text/html">
<div class="layui-form-item">
<label class="layui-form-label">存储目录</label>
<div class="layui-input-block">
<input type="text" name="save_dir" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始结尾要加"/"例如/uploads/</div>
</div>
</div>
</script>
<script id="field_remote" type="text/html">
<div class="layui-form-item">
<label class="layui-form-label">存储目录</label>
<div class="layui-input-block">
<input type="text" name="save_dir" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始结尾要加"/"例如/uploads/</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">远程Token</label>
<div class="layui-input-block">
<input type="text" name="access_token" placeholder="AccessToken" lay-verify="required" class="layui-input">
<div class="layui-form-mid layui-word-aux">请与远程服务端配置文件中保持一致</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">服务端URL</label>
<div class="layui-input-block">
<input type="text" name="server_uri" placeholder="服务端URL" lay-verify="required" class="layui-input">
<div class="layui-form-mid layui-word-aux">请填写合法的URL地址结尾要加"/"</div>
</div>
</div>
</script>
<script id="field_aliyunoss" type="text/html">
<div class="layui-form-item">
<label class="layui-form-label">存储目录</label>
<div class="layui-input-block">
<input type="text" name="save_dir" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始结尾要加"/"例如/uploads/</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Endpoint</label>
<div class="layui-input-block">
<input type="text" name="endpoint" placeholder="Endpoint" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">OSS Endpoint</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Bucket</label>
<div class="layui-input-block">
<input type="text" name="bucket" placeholder="Bucket" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">OSS Bucket</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">AccessKey</label>
<div class="layui-input-block">
<input type="text" name="access_key" placeholder="AccessKey" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">OSS AccessKey</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">AccessKeySecret</label>
<div class="layui-input-block">
<input type="text" name="access_secret" placeholder="AccessKeySecret" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">OSS AccessKeySecret</div>
</div>
</div>
</script>
<script id="field_txyunoss" type="text/html">
<div class="layui-form-item">
<label class="layui-form-label">存储目录</label>
<div class="layui-input-block">
<input type="text" name="save_dir" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始结尾要加"/"例如/uploads/</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SecretId</label>
<div class="layui-input-block">
<input type="text" name="secret_id" placeholder="SecretId" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">COS SecretId</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SecretKey</label>
<div class="layui-input-block">
<input type="text" name="secret_key" placeholder="SecretKey" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">COS SecretKey</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Bucket</label>
<div class="layui-input-block">
<input type="text" name="bucket" placeholder="Bucket" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">COS Bucket</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Region</label>
<div class="layui-input-block">
<input type="text" name="region" placeholder="Region" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">COS Region 存储桶地域</div>
</div>
</div>
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery'],function(){
let form = layui.form;
let $ = layui.jquery;
setFieldHtml('local');
function setFieldHtml(field){
let field_name = '#field_' + field;
let html = $(field_name).html();
if(typeof html !== "undefined"){
$(".other-field").html(html);
return true;
}
$(".other-field").html("");
return false;
}
form.on('select(server_select)',function(obj){
setFieldHtml(obj.value);
});
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
parent.layui.table.reload("user-table");
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+241
View File
@@ -0,0 +1,241 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
<style>
.remote_field{
display: none;
}
</style>
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<div class="layui-form-item">
<label class="layui-form-label">策略名称</label>
<div class="layui-input-block">
<input type="text" name="name" lay-verify="required" value="{$info.name}" placeholder="请输入上传策略的名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">允许后缀</label>
<div class="layui-input-block">
<input type="text" name="filetype" value="{$info.filetype}" placeholder="请输入文件后缀" class="layui-input">
<div class="layui-form-mid layui-word-aux">多个请以半角逗号","隔开,留空表示不限制。如"png,jpg"</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">存储服务器</label>
<div class="layui-input-block">
<select name="type" lay-verify="required" lay-filter="server_select" disabled>
<option value="local" {eq name="$info.type" value="local"}selected{/eq}>本地</option>
<option value="remote" {eq name="$info.type" value="remote"}selected{/eq}>远程</option>
<option value="aliyunoss" {eq name="$info.type" value="aliyunoss"}selected{/eq}>阿里云OSS</option>
<option value="txyunoss" {eq name="$info.type" value="txyunoss"}selected{/eq}>腾讯云C0S</option>
</select>
<div class="layui-form-mid layui-word-aux">文件存储的服务器</div>
</div>
</div>
<div class="other-field">
</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
<i class="layui-icon layui-icon-ok"></i>
保存修改
</button>
</div>
</div>
</form>
{eq name="$info.type" value="local"}
<script id="field_local" type="text/html">
<div class="layui-form-item">
<label class="layui-form-label">存储目录</label>
<div class="layui-input-block">
<input type="text" name="save_dir" value="{$info.config.save_dir}" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始结尾要加"/"例如/uploads/</div>
</div>
</div>
</script>
{/eq}
{eq name="$info.type" value="remote"}
<script id="field_remote" type="text/html">
<div class="layui-form-item">
<label class="layui-form-label">存储目录</label>
<div class="layui-input-block">
<input type="text" name="save_dir" value="{$info.config.save_dir}" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始结尾要加"/"例如/uploads/</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">远程Token</label>
<div class="layui-input-block">
<input type="text" name="access_token" value="{$info.config.access_token}" placeholder="AccessToken" lay-verify="required" class="layui-input">
<div class="layui-form-mid layui-word-aux">请与远程服务端配置文件中保持一致</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">服务端URL</label>
<div class="layui-input-block">
<input type="text" name="server_uri" value="{$info.config.server_uri}" placeholder="服务端URL" lay-verify="required" class="layui-input">
<div class="layui-form-mid layui-word-aux">请填写合法的URL地址结尾要加"/"</div>
</div>
</div>
</script>
{/eq}
{eq name="$info.type" value="aliyunoss"}
<script id="field_aliyunoss" type="text/html">
<div class="layui-form-item">
<label class="layui-form-label">存储目录</label>
<div class="layui-input-block">
<input type="text" name="save_dir" value="{$info.config.save_dir}" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始结尾要加"/"例如/uploads/</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Endpoint</label>
<div class="layui-input-block">
<input type="text" name="endpoint" value="{$info.config.endpoint}" placeholder="Endpoint" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">OSS Endpoint</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Bucket</label>
<div class="layui-input-block">
<input type="text" name="bucket" value="{$info.config.bucket}" placeholder="Bucket" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">OSS Bucket</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">AccessKey</label>
<div class="layui-input-block">
<input type="text" name="access_key" value="{$info.config.access_key}" placeholder="AccessKey" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">OSS AccessKey</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">AccessKeySecret</label>
<div class="layui-input-block">
<input type="text" name="access_secret" value="{$info.config.access_secret}" placeholder="AccessKeySecret" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">OSS AccessKeySecret</div>
</div>
</div>
</script>
{/eq}
{eq name="$info.type" value="txyunoss"}
<script id="field_txyunoss" type="text/html">
<div class="layui-form-item">
<label class="layui-form-label">存储目录</label>
<div class="layui-input-block">
<input type="text" name="save_dir" value="{$info.config.save_dir}" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始结尾要加"/"例如/uploads/</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SecretId</label>
<div class="layui-input-block">
<input type="text" name="secret_id" value="{$info.config.secret_id}" placeholder="SecretId" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">COS SecretId</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SecretKey</label>
<div class="layui-input-block">
<input type="text" name="secret_key" value="{$info.config.secret_key}" placeholder="SecretKey" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">COS SecretKey</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Bucket</label>
<div class="layui-input-block">
<input type="text" name="bucket" value="{$info.config.bucket}" placeholder="Bucket" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">COS Bucket</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Region</label>
<div class="layui-input-block">
<input type="text" name="region" value="{$info.config.region}" placeholder="Region" lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">COS Region 存储桶地域</div>
</div>
</div>
</script>
{/eq}
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery'],function(){
let form = layui.form;
let $ = layui.jquery;
function setFieldHtml(field){
let field_name = '#field_' + field;
let html = $(field_name).html();
if(typeof html !== "undefined"){
$(".other-field").html(html);
return true;
}
$(".other-field").html("");
return false;
}
setFieldHtml('{$info.type}');
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
parent.layui.table.reload("user-table");
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+136
View File
@@ -0,0 +1,136 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
<script type="text/html" id="user-toolbar">
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
<i class="layui-icon layui-icon-add-1"></i>
添加策略
</button>
</script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button>
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['table', 'form', 'jquery','common'], function() {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let common = layui.common;
let cols = [
[{type: 'checkbox'},
{title: '策略名称', field: 'name', align: 'center'},
{title: '类型', field: 'type', align: 'center'},
{title: '文件数量', field: 'file_num', align: 'center'},
{title: '存储数据量', field: 'store_num', align: 'center'},
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
]
]
table.render({
elem: '#user-table',
url: "{:url('policy/index')}",
page: true,
cols: cols,
skin: 'line',
toolbar: '#user-toolbar',
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'filter', 'print', 'exports']
});
table.on('tool(user-table)', function(obj) {
if (obj.event === 'remove') {
window.remove(obj);
} else if (obj.event === 'edit') {
window.edit(obj);
}
});
table.on('toolbar(user-table)', function(obj) {
if (obj.event === 'add') {
window.add();
} else if (obj.event === 'refresh') {
window.refresh();
}
});
window.add = function() {
layer.open({
type: 2,
title: '添加策略',
shade: 0.1,
area: [common.isModile()?'100%':'600px', common.isModile()?'100%':'600px'],
content: "{:url('Policy/add')}"
});
}
window.edit = function(obj) {
layer.open({
type: 2,
title: '修改策略',
shade: 0.1,
area: [common.isModile()?'100%':'600px', common.isModile()?'100%':'600px'],
content: "{:url('policy/edit')}?id=" + obj.data['id']
});
}
window.remove = function(obj) {
layer.confirm('确定要删除该储存策略吗?<b style="color: red">删除后会导致上传文件不能下载,且不可恢复</b>', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('policy/delete')}?id=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.refresh = function(param) {
table.reload('user-table');
}
})
</script>
</body>
</html>
+351
View File
@@ -0,0 +1,351 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<form class="layui-form" action="">
<div class="layui-form-item">
<div id="test6">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">开始日期</label>
<div class="layui-input-inline">
<input type="text" autocomplete="off" name="start_time" id="test-startDate-1" class="layui-input" placeholder="开始日期">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">结束日期</label>
<div class="layui-input-inline">
<input type="text" autocomplete="off" name="end_time" id="test-endDate-1" class="layui-input" placeholder="结束日期">
</div>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">排序字段</label>
<div class="layui-input-inline">
<select name="sort_key" lay-verify="required">
<option value="delete_time">删除时间排序</option>
<option value="update_time">更新时间排序</option>
<option value="id">ID排序</option>
<option value="size">文件大小排序</option>
<option value="count_down">下载量排序</option>
<option value="count_open">浏览量排序</option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">排序方式</label>
<div class="layui-input-inline">
<select name="sort" lay-verify="required">
<option value="0">降序</option>
<option value="1">升序</option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">存储筛选</label>
<div class="layui-input-inline">
<select name="policy" lay-verify="required">
{volist name="$policy" id="vo"}
<option value="{$vo.id}">{$vo.name}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">文件后缀</label>
<div class="layui-input-inline">
<input type="text" name="ext" placeholder="请输入文件后缀 如 png jpg 等" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">用户UID</label>
<div class="layui-input-inline">
<input type="number" name="uid" placeholder="请输入UID" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">文件名称</label>
<div class="layui-input-inline">
<input type="text" name="origin_name" placeholder="请输入文件名称" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<button class="pear-btn pear-btn-md pear-btn-primary" style="margin-left: 36px;" lay-submit lay-filter="user-query">
<i class="layui-icon layui-icon-search"></i>
搜索结果
</button>
<button type="reset" class="pear-btn pear-btn-md">
<i class="layui-icon layui-icon-refresh"></i>
重置搜索
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
<script type="text/html" id="user-toolbar">
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="batchBack">
<i class="layui-icon layui-icon-time"></i>
批量还原
</button>
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
<i class="layui-icon layui-icon-delete"></i>
彻底删除
</button>
</script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="back"><i class="layui-icon layui-icon-time"></i></button>
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script type="text/html" id="file-icon">
<img src="{{ d.icon }}">
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['table', 'form', 'jquery','common','laydate'], function() {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let common = layui.common;
var laydate = layui.laydate;
laydate.render({
elem: '#test6'
,range: ['#test-startDate-1', '#test-endDate-1']
});
let cols = [
[{type: 'checkbox'},
{title: '', field: 'icon', align: 'center',width: 40,templet: '#file-icon'},
{title: '文件名', field: 'origin_name',width: 300, align: 'left'},
{title: '大小', field: 'size', align: 'center'},
{title: '上传用户', field: 'uid', align: 'center'},
{title: '储存服务器', field: 'policy_id', align: 'center'},
{title: '文件后缀', field: 'ext', align: 'center'},
{title: '下载量', field: 'count_down', align: 'center'},
{title: '浏览量', field: 'count_open', align: 'center'},
{title: '删除时间', field: 'create_time', align: 'center'},
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
]
]
table.render({
elem: '#user-table',
url: "{:url('recycle/index')}",
page: true,
cols: cols,
skin: 'line',
limit:20,
toolbar: '#user-toolbar',
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'print', 'exports']
});
table.on('tool(user-table)', function(obj) {
if (obj.event === 'remove') {
window.remove(obj);
}else if(obj.event === 'back'){
window.restore(obj);
}
});
table.on('toolbar(user-table)', function(obj) {
if (obj.event === 'refresh') {
window.refresh();
} else if (obj.event === 'batchRemove') {
window.batchRemove(obj);
} else if (obj.event === 'batchBack'){
window.batchRestore(obj);
}
});
form.on('submit(user-query)', function(data) {
table.reload('user-table', {
where: data.field
})
return false;
});
window.restore = function(obj){
layer.confirm('确认要恢复该文件吗?', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('recycle/restore')}?ids=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.remove = function(obj) {
layer.confirm('确定要彻底删除该文件吗?<b style="color: red">删除后储存数据会被清空,且不可恢复</b>', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('recycle/delete')}?ids=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.batchRemove = function(obj) {
var checkIds = common.checkField(obj,'id');
if (checkIds === "") {
layer.msg("未选中数据", {
icon: 3,
time: 1000
});
return false;
}
layer.confirm('确定要删除这些文件[' + checkIds + ']吗,<b style="color: red">删除后数据不可恢复</b>', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('recycle/delete')}?ids=" + checkIds,
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
table.reload('user-table');
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.batchRestore = function(obj){
var checkIds = common.checkField(obj,'id');
if (checkIds === "") {
layer.msg("未选中数据", {
icon: 3,
time: 1000
});
return false;
}
layer.confirm('确定要恢复这些文件[' + checkIds + ']吗?', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('recycle/restore')}?ids=" + checkIds,
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
table.reload('user-table');
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.refresh = function(param) {
table.reload('user-table');
}
})
</script>
</body>
</html>
+113
View File
@@ -0,0 +1,113 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<div class="layui-form-item">
<label class="layui-form-label">文件/目录名</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$info.source_name}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">储存类型</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$info.source_type?'文件':'目录'}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所属用户</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$info.source_username}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">链接地址</label>
<div class="layui-input-block">
<div class="layui-form-mid"><a href="{$info.source_url}" target="_blank">{$info.source_url}</a></div>
</div>
</div>
<br>
<div class="layui-form-item">
<label class="layui-form-label">举报类型</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$info.type}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系方式</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$info.contact}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">举报理由</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$info.content}</div>
</div>
</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
<i class="layui-icon layui-icon-ok"></i>
完成处理
</button>
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">
<i class="layui-icon layui-icon-refresh"></i>
取消处理
</button>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery'],function(){
let form = layui.form;
let $ = layui.jquery;
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify({status:1}),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
parent.layui.table.reload("user-table");
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+135
View File
@@ -0,0 +1,135 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
<script type="text/html" id="user-toolbar"></script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-survey"></i></button>
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script type="text/html" id="user-auth">
{{#if (d.status == 0) { }}
<span class="layui-badge layui-bg-orange">未处理</span>
{{# }else if(d.status == 1){ }}
<span class="layui-badge layui-bg-blue">已处理</span>
{{# } }}
</script>
<script type="text/html" id="user-url">
<a href="{{ d.source_url }}" target="_blank">{{ d.source_url }}</a>
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['table', 'form', 'jquery','common'], function() {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let common = layui.common;
let cols = [
[{type: 'checkbox'},
{title: '文件/目录名', field: 'source_name', align: 'center'},
{title: '链接地址', field: 'source_url', align: 'center', templet: '#user-url'},
{title: '所属用户', field: 'source_username', align: 'center'},
{title: '危害类别', field: 'type', align: 'center'},
{title: '联系方式', field: 'contact', align: 'center'},
{title: '举报IP', field: 'real_ip', align: 'center'},
{title: '处理状态', field: 'status', align: 'center', templet: '#user-auth'},
{title: '创建时间', field: 'create_time', align: 'center'},
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
]
]
table.render({
elem: '#user-table',
url: "{:url('report/index')}",
page: true,
limit:20,
cols: cols,
skin: 'line',
toolbar: '#user-toolbar',
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'filter', 'print', 'exports']
});
table.on('tool(user-table)', function(obj) {
if (obj.event === 'remove') {
window.remove(obj);
} else if (obj.event === 'edit') {
window.edit(obj);
}
});
table.on('toolbar(user-table)', function(obj) {
if (obj.event === 'refresh') {
window.refresh();
}
});
window.edit = function(obj) {
layer.open({
type: 2,
title: '处理举报',
shade: 0.1,
area: ['600px', '520px'],
content: "{:url('report/edit')}?id=" + obj.data['id']
});
}
window.remove = function(obj) {
layer.confirm('确定要删除该举报内容吗?', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('report/delete')}?id=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.refresh = function(param) {
table.reload('user-table');
}
})
</script>
</body>
</html>
+145
View File
@@ -0,0 +1,145 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<br>
<br>
<div class="layui-form-item">
<label class="layui-form-label">站点名称</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="site_title" value="{$option.site_title}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">站点的名称,将会展示在个页面的标题尾部、邮件中。</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">站点LOGO</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="site_logo" value="{$option.site_logo}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">站点logo路径</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">网站首页</label>
<div class="layui-input-block" style="max-width: 800px;">
<select name="index_theme" lay-verify="required">
<option value="default" {eq name="$option.index_theme" value="default"}selected{/eq}>旧版主题</option>
<option value="new1" {eq name="$option.index_theme" value="new1"}selected{/eq}>新版主题</option>
</select>
<div class="layui-form-mid layui-word-aux">网站首页主题</div>
</div>
</div>
<br>
<div class="layui-form-item">
<label class="layui-form-label">SEO标题</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="site_name" value="{$option.site_name}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">位于首页meta标签内的站点标题</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO关键词</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="site_keywords" value="{$option.site_keywords}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">位于首页meta标签内的站点关键词</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">SEO描述</label>
<div class="layui-input-block" style="max-width: 800px;">
<textarea name="site_desc" placeholder="位于首页meta标签内的SEO描述" class="layui-textarea">{$option.site_desc}</textarea>
</div>
</div>
<br>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">网站头部</label>
<div class="layui-input-block" style="max-width: 800px;">
<textarea name="site_head" placeholder="网站头部代码,用于百度站长等工具验证" class="layui-textarea">{$option.site_head}</textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">网站底部</label>
<div class="layui-input-block" style="max-width: 800px;">
<textarea name="site_foot" placeholder="网站底部代码,你可以在此放置统计代码" class="layui-textarea">{$option.site_foot}</textarea>
</div>
</div>
<br>
<div class="layui-form-item">
<label class="layui-form-label">站点邮箱</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="site_email" value="{$option.site_email}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">站点的用户投诉举报邮箱</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">客服信息</label>
<div class="layui-input-block" style="max-width: 800px;">
<textarea name="site_kefu" placeholder="" class="layui-textarea">{$option.site_kefu}</textarea>
</div>
</div>
<br>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存设置</button>
</div>
</div>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery'],function(){
let form = layui.form;
let $ = layui.jquery;
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+122
View File
@@ -0,0 +1,122 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<br>
<br>
<div class="layui-form-item">
<label class="layui-form-label">邮件服务器</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="smtp_host" value="{$option.smtp_host}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">邮箱的SMTP服务器地址</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SMTP端口</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="smtp_port" value="{$option.smtp_port}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">SSL连接SMTP服务器的远程服务器端口号</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发信昵称</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="nickname" value="{$option.nickname}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">显示在收件人邮件的发件人邮箱地址前的发件人姓名</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱帐号</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="username" value="{$option.username}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">SMTP登录的账号</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱密码</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="password" value="{$option.password}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">SMTP登录的密码 使用生成的授权码</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">找回密码模板</label>
<div class="layui-input-block" style="max-width: 800px;">
<textarea name="template_forget" id="edit" cols="30" rows="10">{$option.template_forget}</textarea>
<div class="layui-form-mid layui-word-aux">
模板内变量:
{username} 用户帐号
{literal}{url}{/literal} 重设密码url地址
{site_name} 站点名称
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存设置</button>
</div>
</div>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery','tinymce'],function(){
let form = layui.form;
let $ = layui.jquery;
var tinymce = layui.tinymce
var edit = tinymce.render({
elem: "#edit",
height: 400,
menubar: false, //隐藏菜单栏
plugins: "code",
toolbar: "code",
});
form.on('submit(save)', function(data){
data.field['template_forget'] = edit.getContent()
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+91
View File
@@ -0,0 +1,91 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<br>
<br>
<div class="layui-form-item">
<label class="layui-form-label">易支付网关</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="api_gateway" value="{$option.api_gateway}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">
支付网关注册地址:只要是易支付即可
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">易支付商户</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="api_pid" value="{$option.api_pid}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">
请填写易支付的商户ID
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">易支付密钥</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="text" name="api_key" value="{$option.api_key}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">
请填写易支付的商户密钥
</div>
</div>
</div>
<br>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存设置</button>
</div>
</div>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery'],function(){
let form = layui.form;
let $ = layui.jquery;
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
@@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<br>
<br>
<div class="layui-form-item">
<label class="layui-form-label">允许注册</label>
<div class="layui-input-block">
<input type="radio" name="allow_register" value="1" title="允许" {eq name="$option.allow_register" value="1"}checked{/eq}>
<input type="radio" name="allow_register" value="0" title="禁止" {eq name="$option.allow_register" value="0"}checked{/eq}>
</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-block" style="max-width: 800px;">
<select name="default_group" lay-verify="required">
{volist name="$group" id="vo"}
<option value="{$vo.id}" {eq name="$option.default_group" value="$vo.id"}selected{/eq}>{$vo.group_name}</option>
{/volist}
</select>
<div class="layui-form-mid layui-word-aux">用户注册后默认属于的用户组</div>
</div>
</div>
<br>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存设置</button>
</div>
</div>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery'],function(){
let form = layui.form;
let $ = layui.jquery;
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+93
View File
@@ -0,0 +1,93 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<br>
<br>
<div class="layui-form-item">
<label class="layui-form-label">VIP用户组</label>
<div class="layui-input-block" style="max-width: 800px;">
<select name="vip_group" lay-verify="required">
{volist name="$group" id="vo"}
<option value="{$vo.id}" {eq name="$option.vip_group" value="$vo.id"}selected{/eq}>{$vo.group_name}</option>
{/volist}
</select>
<div class="layui-form-mid layui-word-aux">开通VIP后属于的用户组</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">VIP分成</label>
<div class="layui-input-block" style="max-width: 800px;">
<input type="number" name="vip_profit" value="{$option.vip_profit}" required lay-verify="required" autocomplete="off" class="layui-input">
<div class="layui-form-mid layui-word-aux">
游客通过分享者的链接开通VIP后,分享者获得的提成。请填写百分比如50%那么就填写50
</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">VIP价格规则</label>
<div class="layui-input-block" style="max-width: 800px;">
<textarea name="vip_rule" placeholder="VIP价格规则" rows="10" class="layui-textarea">{$option.vip_rule}</textarea>
<div class="layui-form-mid layui-word-aux">
价格规则,一行一条,规则格式为:
价格名称|开通价格|开通时长(单位天)|显示单位|折扣显示|省钱显示|描述内容|是否推荐(推荐填写1,不推荐填写0)
</div>
</div>
</div>
<br>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存设置</button>
</div>
</div>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery'],function(){
let form = layui.form;
let $ = layui.jquery;
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+116
View File
@@ -0,0 +1,116 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<div class="layui-form-item">
<label class="layui-form-label">用户帐号</label>
<div class="layui-input-block">
<input type="text" name="username" lay-verify="required" placeholder="请输入用户帐号" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">当前用户组</label>
<div class="layui-input-block">
<select name="group" lay-verify="required">
{volist name="$group" id="vo"}
<option value="{$vo.id}" {eq name="$default_group" value="$vo.id"}selected{/eq}>{$vo.group_name}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">设置VIP时间</label>
<div class="layui-input-block">
<input type="text" name="group_expire" value="" placeholder="非VIP默认不选" class="layui-input" id="group_expire">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">登录密码</label>
<div class="layui-input-block">
<input type="password" name="password" placeholder="请输入密码" lay-verify="required" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">重复密码</label>
<div class="layui-input-block">
<input type="password" name="repassword" placeholder="请再次输入密码" lay-verify="required" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">安全邮箱</label>
<div class="layui-input-block">
<input type="email" name="email" placeholder="请输入密码邮箱账号 " lay-verify="required" autocomplete="off" class="layui-input">
</div>
</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
<i class="layui-icon layui-icon-ok"></i>
提交
</button>
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">
<i class="layui-icon layui-icon-refresh"></i>
重置
</button>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery','laydate'],function(){
let form = layui.form;
let $ = layui.jquery;
let laydate = layui.laydate;
laydate.render({
elem: '#group_expire', //指定元素
type:'datetime'
});
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
parent.layui.table.reload("user-table");
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+154
View File
@@ -0,0 +1,154 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<div class="layui-form-item">
<label class="layui-form-label">用户帐号</label>
<div class="layui-input-block">
<div class="layui-form-mid layui-word-aux">{$info.username}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">安全邮箱</label>
<div class="layui-input-block">
<input type="email" name="email" value="{$info.email}" placeholder="请输入安全邮箱,如果不修改请忽略本参数" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">修改密码</label>
<div class="layui-input-block">
<input type="password" name="password" placeholder="请输入密码,如果不修改请忽略本参数" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">实名认证</label>
<div class="layui-input-block">
<div class="layui-form-mid layui-word-aux">{$info.is_auth ? '<span class="layui-badge layui-bg-blue">认证成功</span>' : '未认证'}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">注册时间</label>
<div class="layui-input-block">
<div class="layui-form-mid layui-word-aux">{$info.create_time|date="Y-m-d H:i:s"}</div>
</div>
</div>
<hr>
<div class="layui-form-item">
<label class="layui-form-label">账户余额</label>
<div class="layui-input-block">
<div class="layui-form-mid">{$info.amount} ¥</div>
</div>
</div>
<hr>
<div class="layui-form-item">
<label class="layui-form-label">当前用户组</label>
<div class="layui-input-block">
<select name="group" lay-verify="required">
{volist name="$group" id="vo"}
<option value="{$vo.id}" {eq name="$info.group" value="$vo.id"}selected{/eq}>{$vo.group_name}</option>
{/volist}
</select>
</div>
</div>
<hr>
<div class="layui-form-item">
<label class="layui-form-label">设置VIP时间</label>
<div class="layui-input-block">
<input type="text" name="group_expire" value="<?=$info['group_expire']<time()?'':date('Y-m-d h:i:s',$info['group_expire'])?>" placeholder="非VIP默认不选" class="layui-input" id="group_expire">
</div>
</div>
<hr>
<div class="layui-form-item">
<label class="layui-form-label">最近登录</label>
<div class="layui-input-block">
<div class="layui-form-mid layui-word-aux">{:getNotNullTime($info.login_time,'暂无登录信息')}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">登录IP地址</label>
<div class="layui-input-block">
<div class="layui-form-mid layui-word-aux">{$info.login_real_ip|default='暂无登录信息'}</div>
</div>
</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
<i class="layui-icon layui-icon-ok"></i>
保存更改
</button>
</div>
</div>
</form>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['form','jquery','laydate'],function(){
let form = layui.form;
let $ = layui.jquery;
let laydate = layui.laydate;
// laydate.render({
// elem: '#grade_time',
// type:'date'
// });
laydate.render({
elem: '#group_expire', //指定元素
type:'datetime'
});
form.on('submit(save)', function(data){
$.ajax({
data:JSON.stringify(data.field),
dataType:'json',
contentType:'application/json',
type:'post',
success:function(res){
//判断有没有权限
if(res && res.code == 999){
layer.msg(res.msg, {
icon: 5,
time: 2000,
})
return false;
}else if(res.code == 200){
layer.msg(res.msg,{icon:1,time:1000},function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
parent.layui.table.reload("user-table");
});
}else{
layer.msg(res.msg,{icon:2,time:1000});
}
}
})
return false;
});
})
</script>
</body>
</html>
+267
View File
@@ -0,0 +1,267 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户管理</title>
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<form class="layui-form" action="">
<div class="layui-form-item">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">搜索类型</label>
<div class="layui-input-inline">
<select name="search_type" lay-verify="required">
<option value="username">帐号搜索</option>
<option value="email">邮箱搜索</option>
<option value="nickname">昵称搜索</option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">搜索内容</label>
<div class="layui-input-inline">
<input type="text" name="search_value" placeholder="请输入搜索内容" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="user-query">
<i class="layui-icon layui-icon-search"></i>
搜索结果
</button>
<button type="reset" class="pear-btn pear-btn-md">
<i class="layui-icon layui-icon-refresh"></i>
重置搜索
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
<script type="text/html" id="user-toolbar">
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
<i class="layui-icon layui-icon-add-1"></i>
新增账号
</button>
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
<i class="layui-icon layui-icon-delete"></i>
批量删除
</button>
</script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button>
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script type="text/html" id="user-enable">
<input type="checkbox" name="status" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="user-enable" {{ d.status == 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="user-auth">
{{#if (d.is_auth == 0) { }}
<span class="layui-badge layui-bg-orange">未实名</span>
{{# }else if(d.is_auth == 1){ }}
<span class="layui-badge layui-bg-blue">已认证</span>
{{# } }}
</script>
<script type="text/html" id="user-createTime">
{{layui.util.toDateString(d.createTime, 'yyyy-MM-dd')}}
</script>
<script type="text/html" id="user-avatar">
<img src="{{ d.avatar }}" style="width: 30px;height: 30px;border-radius: 50%">
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['table', 'form', 'jquery','common'], function() {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let common = layui.common;
let cols = [
[{type: 'checkbox'},
{title: 'UID', field: 'id', align: 'center'},
{title: '',field:'avatar',align: 'center',templet: '#user-avatar',width: 45},
{title: '昵称', field: 'nickname', align: 'left'},
{title: '用户帐号', field: 'username', align: 'center'},
{title: '用户等级', field: 'group', align: 'center'},
{title: '余额', field: 'amount', align: 'center'},
{title: '安全邮箱', field: 'email', align: 'center'},
{title: '实名认证', field: 'is_auth', align: 'center', templet: '#user-auth'},
{title: '账号状态', field: 'status', align: 'center', templet: '#user-enable'},
{title: '注册时间', field: 'create_time', align: 'center', templet: '#user-createTime'},
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
]
]
table.render({
elem: '#user-table',
url: "{:url('user/index')}",
page: true,
cols: cols,
skin: 'line',
toolbar: '#user-toolbar',
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'filter', 'print', 'exports']
});
table.on('tool(user-table)', function(obj) {
if (obj.event === 'remove') {
window.remove(obj);
} else if (obj.event === 'edit') {
window.edit(obj);
}
});
table.on('toolbar(user-table)', function(obj) {
if (obj.event === 'add') {
window.add();
} else if (obj.event === 'refresh') {
window.refresh();
} else if (obj.event === 'batchRemove') {
window.batchRemove(obj);
}
});
form.on('submit(user-query)', function(data) {
table.reload('user-table', {
where: data.field
})
return false;
});
form.on('switch(user-enable)', function(obj) {
let status = obj.elem.checked ? 1 : 0;
$.ajax({
url:"{:url('user/change_status')}",
type:'get',
data:{
id:this.value,
status:status
},
dataType:'JSON',
success:function(result){
layer.tips(result.msg, obj.othis);
}
})
});
window.add = function() {
layer.open({
type: 2,
title: '新增',
shade: 0.1,
area: [common.isModile()?'100%':'600px', common.isModile()?'100%':'400px'],
content: "{:url('user/add')}"
});
}
window.edit = function(obj) {
layer.open({
type: 2,
title: '修改',
shade: 0.1,
area: ['600px', '500px'],
content: "{:url('user/edit')}?id=" + obj.data['id']
});
}
window.remove = function(obj) {
layer.confirm('确定要删除该用户吗?<b style="color: red">删除后用户的储存数据会被清空,且不可恢复</b>', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('user/del')}?ids=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.batchRemove = function(obj) {
var checkIds = common.checkField(obj,'id');
if (checkIds === "") {
layer.msg("未选中数据", {
icon: 3,
time: 1000
});
return false;
}
layer.confirm('确定要删除这些用户[' + checkIds + ']吗,<b style="color: red">删除后数据不可恢复</b>', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('user/del')}?ids=" + checkIds,
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
table.reload('user-table');
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.refresh = function(param) {
table.reload('user-table');
}
})
</script>
</body>
</html>
+170
View File
@@ -0,0 +1,170 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
<script type="text/html" id="user-toolbar"></script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="status_yes"><i class="layui-icon layui-icon-ok"></i></button>
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="status_no"><i class="layui-icon layui-icon-close"></i></button>
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script type="text/html" id="user-auth">
{{#if (d.status == 0) { }}
<span class="layui-badge layui-bg-orange">等待处理</span>
{{# }else if(d.status == 1){ }}
<span class="layui-badge layui-bg-blue">提现成功</span>
{{# }else if(d.status == 2){ }}
<span class="layui-badge layui-bg-red">退回金额</span>
{{# } }}
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['table', 'form', 'jquery','common'], function() {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let common = layui.common;
let cols = [
[{type: 'checkbox'},
{title: 'ID', field: 'id', align: 'center'},
{title: '用户帐号', field: 'uid', align: 'center'},
{title: '提现金额', field: 'money', align: 'center'},
{title: '支付宝帐号', field: 'alipay_account', align: 'center'},
{title: '支付宝姓名', field: 'alipay_name', align: 'center'},
{title: '处理状态', field: 'status', align: 'center', templet: '#user-auth'},
{title: '创建时间', field: 'create_time', align: 'center'},
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
]
]
table.render({
elem: '#user-table',
url: "{:url('withdraw/index')}",
page: true,
limit:20,
cols: cols,
skin: 'line',
toolbar: '#user-toolbar',
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'filter', 'print', 'exports']
});
table.on('tool(user-table)', function(obj) {
if (obj.event === 'remove') {
window.remove(obj);
} else if (obj.event === 'status_yes') {
window.edit(obj,1);
} else if (obj.event === 'status_no') {
window.edit(obj,2);
}
});
table.on('toolbar(user-table)', function(obj) {
if (obj.event === 'refresh') {
window.refresh();
}
});
window.edit = function(obj,status) {
if(status){
var msg = '确认进行提现成功操作吗?操作前请转账至对应的支付宝帐号';
}else{
var msg = '确认拒绝提现吗?拒绝后资金会退回到用户帐号内';
}
if(obj.data['status'] !== 0){
layer.msg('已经处理成功的记录禁止操作',{icon:2});
return false;
}
layer.confirm(msg, {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('withdraw/change')}?status="+status+"&id=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
window.refresh();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.remove = function(obj) {
layer.confirm('确定要删除该举报内容吗?', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('withdraw/delete')}?id=" + obj.data['id'],
dataType: 'json',
type: 'get',
success: function(result) {
layer.close(loading);
if (result.code == 200) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.refresh = function(param) {
table.reload('user-table');
}
})
</script>
</body>
</html>