init: 从宝塔同步到 Gitea

This commit is contained in:
root
2026-02-25 01:50:31 +08:00
commit e633c8e27d
2444 changed files with 399341 additions and 0 deletions
+145
View File
@@ -0,0 +1,145 @@
{include file="public/header"}
<style>
.x-body .layui-row{ margin-top:-10px; line-height:25px; background:#f5f5f5; border-radius:10px; }
.x-body .layui-row .xblock button{ margin-top:-20px; }
.x-body .layui-form{ margin-top:15px; margin-bottom:12px; }
.x-body .layui-form .layui-input-block{ display:inline-block; width:150px; margin-left:0; }
.x-body .layui-form .layui-form-item{ display:inline-block; margin-left:0; }
.x-body .layui-form .layui-form-item .layui-form-label{ width:48px; }
.x-body .layui-form .layui-form-item .layui-input-block{ margin-left:-10px; width:100px; }
.x-body .layui-form .layui-form-item .layui-input-block .layui-form-radio i{ margin-right:4px; }
.x-body .layui-form .layui-form-item .layui-form-radio{ margin-top:6px; margin-right:-8px; }
.layui-input-block dl{ text-align:left; }
.x-so{ margin:0; }
.x-so input.layui-input{ width:150px; }
.x-nav{overflow: inherit; } .x-nav .refresh{margin-right: 20px; }
.change_box .actived{border-right:1px solid #e5e5e5;border-left:1px solid #e5e5e5;border-top:1px solid #e5e5e5; position: relative; color: #3daae9; }
.change_box .actived:after{content: ""; bottom: -2px; background: #fff; width: 100%; height: 5px; position: absolute; left: 0; }
.change_box a{font-size: 14px;padding: 10.5px 10px;}
</style>
<body>
<div class="x-nav" style="padding: 0px;">
<span class="change_box">
<a href="javascript:;" class="list-one actived" data-id="1">操作日志列表</a>
<!--<a href="javascript:;" class="list-two" data-id="2">添加代理</a>-->
</span>
<a class="layui-btn layui-btn-small refresh" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px"></i></a>
</div>
<br>
<div class="x-body">
<div class="layui-row">
<form class="layui-form layui-col-md12 x-so float-left" action="/log/admin" method="get">
<input class="layui-input" placeholder="开始时间" name="startDate" id="start" value="<?php if(isset($get['startDate'])) {echo $get['startDate'];} ?>">
<input class="layui-input" placeholder="结束时间" name="endDate" id="end" value="<?php if(isset($get['endDate'])) {echo $get['endDate'];} ?>">
<input type="text" name="username" id="username" placeholder="请输入操作人" autocomplete="off" class="layui-input" value="<?php if(isset($get['username'])) {echo $get['username'];} ?>">
<button class="layui-btn" lay-submit="" lay-filter="sreach"><i class="layui-icon">&#xe615;</i></button>
<span class="layui-btn" id="export">导出excel</span>
<!-- <span class="layui-btn" id="print">打印</span> -->
</form>
</div>
<table class="layui-table">
<thead>
<tr>
<th>编号</th>
<th>操作人</th>
<th>操作类型</th>
<th>操作描述</th>
<th>操作时间</th>
</tr>
</thead>
<tbody>
{foreach name="log_list" item="vo"}
<tr>
<td>{$vo.id}</td>
<td>{$vo.space_admin}</td>
<td>{$vo.control}</td>
<td>{$vo.remake}</td>
<td>{$vo.control_time}</td>
</tr>
{/foreach}
</tbody>
</table>
{$log_list->render()}
</div>
</body>
<script>
// 代理列表和添加代理切换
$('.x-nav .change_box a').click(function(){
// 样式切换
$('.x-nav .change_box a').removeClass('actived');
$(this).addClass('actived');
// 页面切换
var id = $(this).attr('data-id');
if(id == "1") location.href = '/log/admin';
// if(id == "2") location.href = '/agent/agent_add';
});
// 时间选择器
layui.use('laydate', function () {
var laydate = layui.laydate;
// 开始时间
laydate.render({
elem: '#start',
type: 'datetime'
});
// 结束时间
laydate.render({
elem: '#end',
type: 'datetime'
});
});
$('#print').click(function(){
var qs = getQueryString();
var startDate = qs["startDate"];
var endDate = qs["endDate"];
var username = qs["username"];
if(startDate == undefined){
startDate = '';
}
if(endDate == undefined){
endDate = '';
}
if(username == undefined){
username = '';
}
layer.open({
type: 2,
title:'操作日志列表打印',
content: '/log/admin_print?startDate='+startDate+'&endDate='+endDate+'&username='+username,
area: ['95%', '95%']
});
});
function getQueryString() {
var qs = location.search.substr(1), // 获取url中"?"符后的字串
args = {}, // 保存参数数据的对象
items = qs.length ? qs.split("&") : [], // 取得每一个参数项,
item = null,
len = items.length;
for(var i = 0; i < len; i++) {
item = items[i].split("=");
var name = decodeURIComponent(item[0]),
value = decodeURIComponent(item[1]);
if(name) {
args[name] = value;
}
}
return args;
}
// 导出excel
$('#export').click(function(){
var startDate = $('#start').val();
var endDate = $('#end').val();
var username = $('#username').val();
layer.confirm('确定导出 excel 吗?',function(index){
location.href = "/log/admin?export=1&&startDate="+startDate+"&&endDate="+endDate+"&&username="+username;
layer.close(index);
});
})
</script>
</html>
@@ -0,0 +1,30 @@
{include file="public/header"}
<body>
<div class="x-body">
<div class="layui-btn no-print" onclick="jQuery('html').print()">打印</div>
<table class="layui-table">
<div style="text-align: center;font-size: 18px;font-weight:bold;">操作日志列表</div>
<thead>
<tr>
<th style="text-align: center;">编号</th>
<th style="text-align: center;">操作人</th>
<th style="text-align: center;">操作类型</th>
<th style="text-align: center;">操作描述</th>
<th style="text-align: center;">操作时间</th>
</tr>
</thead>
<tbody>
{foreach name="log_list" item="vo"}
<tr>
<td>{$vo.id}</td>
<td>{$vo.space_admin}</td>
<td>{$vo.control}</td>
<td>{$vo.remake}</td>
<td>{$vo.control_time}</td>
</tr>
{/foreach}
</tbody>
</div>
</body>
</html>
+148
View File
@@ -0,0 +1,148 @@
{include file="public/header"}
<style>
.x-body .layui-row{ margin-top:-10px; line-height:25px; background:#f5f5f5; border-radius:10px; }
.x-body .layui-row .xblock button{ margin-top:-20px; }
.x-body .layui-form{ margin-top:15px; margin-bottom:10px; }
.x-body .layui-form .layui-input-block{ display:inline-block; width:150px; margin-left:0; }
.x-body .layui-form .layui-form-item{ display:inline-block; margin-left:0; }
.x-body .layui-form .layui-form-item .layui-form-label{ width:48px; }
.x-body .layui-form .layui-form-item .layui-input-block{ margin-left:-10px; width:100px; }
.x-body .layui-form .layui-form-item .layui-input-block .layui-form-radio i{ margin-right:4px; }
.x-body .layui-form .layui-form-item .layui-form-radio{ margin-top:6px; margin-right:-8px; }
.layui-input-block dl{ text-align:left; }
.x-so{ margin:0; }
.x-so input.layui-input{ width:150px; }
.x-nav{overflow: inherit; } .x-nav .refresh{margin-right: 20px; }
.change_box .actived{border-right:1px solid #e5e5e5;border-left:1px solid #e5e5e5;border-top:1px solid #e5e5e5; position: relative; color: #3daae9; }
.change_box .actived:after{content: ""; bottom: -2px; background: #fff; width: 100%; height: 5px; position: absolute; left: 0; }
.change_box a{font-size: 14px;padding: 10.5px 10px;}
</style>
<body>
<div class="x-nav" style="padding: 0px;">
<span class="change_box">
<a href="javascript:;" class="list-one actived" data-id="1">用户列表</a>
<a href="javascript:;" class="list-two" data-id="2">用户添加</a>
</span>
<a class="layui-btn layui-btn-small refresh" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px"></i></a>
</div>
<br>
<div class="x-body">
<table class="layui-table">
<thead>
<tr>
<th>编号</th>
<th>appid</th>
<th>秘钥</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{foreach name="admin_list" item="vo"}
<tr>
<td>{$vo.id}</td>
<td>{$vo.appid}</td>
<td>{$vo.appsecret}</td>
<td><?php if($vo['status'] == 1){echo '<span style="color:#43A72D">生效</span>';}else{echo '<span style="color:#f00">禁用</span>';} ?></td>
<td class="td-manage">
<a href="/log/api_admin_edit?id={$vo.id}">
<span class="layui-btn layui-btn-normal layui-btn-mini" style="background:#009688;">修改</span>
</a>
<a onclick="change_status(this,'{$vo.id}')" href="javascript:;">
<span class="layui-btn layui-btn-normal layui-btn-mini" style="background:#ADB6FF;">状态</span>
</a>
<a onclick="member_del(this,'{$vo.id}')" href="javascript:;">
<span class="layui-btn layui-btn-normal layui-btn-mini" style="background:#ff5050;">删除</span>
</a>
</td>
</tr>
{/foreach}
</tbody>
</table>
{$admin_list->render()}
</div>
<script>
// 代理列表和添加代理切换
$('.x-nav .change_box a').click(function(){
// 样式切换
$('.x-nav .change_box a').removeClass('actived');
$(this).addClass('actived');
// 页面切换
var id = $(this).attr('data-id');
if(id == "1") location.href = '/log/api_admin';
if(id == "2") location.href = '/log/api_admin_add';
});
/*用户-删除*/
function member_del(obj, id) {
layer.confirm('确认要删除吗?',function () {
// 数据验证
if(id <= 0){
layer.msg('删除用户出错!');
return false;
}
// 拼装数据
var query = new Object;
query.id = id;
// 发送数据到后台删除会员
var result = ajax('/log/api_admin_del',query);
if(result.code == 1){
layer.msg(result.msg, {icon: 1, time: 1000},function(){
location.reload();
});
}else if(result.code == 0){
layer.msg(result.msg, {icon: 2, time: 1000});
}
});
}
function change_status(obj, id) {
layer.confirm('确认要更改状态吗?',function () {
// 数据验证
if(id <= 0){
layer.msg('更改用户出错!');
return false;
}
// 拼装数据
var query = new Object;
query.id = id;
// 发送数据到后台删除会员
var result = ajax('/log/api_admin_status',query);
if(result.code == 1){
layer.msg(result.msg, {icon: 1, time: 1000},function(){
location.reload();
});
}else if(result.code == 0){
layer.msg(result.msg, {icon: 2, time: 1000});
}
});
}
/**
* 封装 AJAX 函数
* @param url 目标地址
* @param query 参数
* @returns {string}
*/
function ajax(url, query) {
var returnData = "";
$.ajax({
url: url,
data: query,
type: 'POST',
dataType: 'JSON',
async: false,
success: function (data) {
returnData = data;
}
});
return returnData;
}
</script>
</body>
</html>
@@ -0,0 +1,143 @@
{include file="public/header"}
<style type="text/css">
textarea, input[type="text"], input[type="password"],
.uneditable-input{border: 1px solid #ccc;background-color: #fff; }
.change_box a{font-size: 14px;padding: 10.5px 10px;}
.change_box .actived{border-right:1px solid #e5e5e5;border-left:1px solid #e5e5e5;border-top:1px solid #e5e5e5; position: relative; color: #3daae9; }
.change_box .actived:after{content: ""; bottom: -2px; background: #fff; width: 100%; height: 5px; position: absolute; left: 0; }
.x-nav{overflow: inherit; }
.x-nav .refresh{margin-right: 20px; }
.control-group{overflow: hidden; margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px dotted #dddddd; }
.control-label{float: left; padding-top: 3px; width: 160px; text-align: right; font-size: 14px; }
.controls{text-align: left; overflow-x: auto; overflow-y: hidden; margin-left: 180px; }
.controls input{width: 300px; height: 24px; font-size: 14px; border-radius: 4px; padding-left:6px; }
.controls select{width: 300px; height: 24px; font-size: 14px; border-radius: 4px; padding-left:6px; }
.controls textarea{width: 400px; height: 90px; border-radius: 4px; } .form-horizontal{margin: 0 10px; }
.bottom-buttom{border-top: 1px solid #e5e5e5; margin-top: 20px; background-color: #f5f5f5; padding: 30px 0; }
.submit{width: 50px; text-align: center; background-color:#3daae9; color: #fff; padding: 5px 10px; font-size: 16px; border-radius: 4px; cursor:pointer; }
</style>
<body>
<div class="x-nav" style="padding: 0px;">
<span class="change_box">
<a href="javascript:;" class="list-one" data-id="1">用户列表</a>
<a href="javascript:;" class="list-two actived" data-id="2">用户添加</a>
</span>
<a class="layui-btn layui-btn-small refresh" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px"></i></a>
</div>
<br>
<div class="info_from form-horizontal">
<div class="control-group">
<label class="control-label">appid:</label>
<div class="controls">
<input id="L_username" name="L_username" type="text" value maxlength="50" minlength="3" class="required">
<span class="help-inline">
<font color="red"> * </font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">秘钥:</label>
<div class="controls">
<input id="L_pass" name="L_pass" type="text" value maxlength="50" minlength="3" class="required">
<span class="help-inline">
<font color="red"> * </font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">确认秘钥:</label>
<div class="controls">
<input id="L_repass" name="L_repass" type="text" value maxlength="50" minlength="3" class="required">
<span class="help-inline">
<font color="red"> * 与秘钥保持一致</font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">名称:</label>
<div class="controls">
<input id="L_name" name="L_name" type="text" value maxlength="50" minlength="3" class="required"><span class="help-inline">
<font color="red"> *</font>
</span>
</div>
</div>
<div class="bottom-buttom">
<label class="control-label"></label>
<div class="controls">
<div class='submit'>保存</div>
</div>
</div>
</div>
<script>
// 代理列表和添加代理切换
$('.x-nav .change_box a').click(function(){
// 样式切换
$('.x-nav .change_box a').removeClass('actived');
$(this).addClass('actived');
// 页面切换
var id = $(this).attr('data-id');
if(id == "1") location.href = '/log/api_admin';
if(id == "2") location.href = '/log/api_admin_add';
});
//监听提交
$('.submit').click(function (data) {
// 获取和拼装添加代理的数据
var query = new Object();
query.appid = $('#L_username').val();
query.pass = $('#L_pass').val();
query.repass = $('#L_repass').val();
query.name = $('#L_name').val();
// 验证数据
if(query.appid.length == 0){
layer.alert("请填写APPID");
return false;
}
if(query.pass.length < 6){
layer.alert("请填写超过6个字符串的秘钥");
return false;
}
if(query.pass != query.repass){
layer.alert("两次秘钥不一致!");
return false;
}
if(query.name.length <= 0){
layer.alert("请填写名称!");
return false;
}
// 发送数据到后台添加会员
var result = ajax('/log/do_api_admin_add',query);
if(result.code == 1){
layer.alert(result.msg, {icon: 6}, function () {
location.href = "/log/api_admin";
});
}else{
layer.alert(result.msg,{icon:2});
}
return false;
});
// AJAX函数封装
function ajax(url,query){
var returnData = 0;
$.ajax({
url:url,
data:query,
type:'POST',
dataType:'JSON',
async:false,
success:function(data){
returnData = data;
}
});
return returnData;
}
</script>
</body>
</html>
@@ -0,0 +1,137 @@
{include file="public/header"}
<style type="text/css">
textarea, input[type="text"], input[type="password"],.uneditable-input{border: 1px solid #ccc;background-color: #fff; }
.change_box a{font-size: 14px;padding: 10.5px 10px;}
.change_box .actived{border-right:1px solid #e5e5e5;border-left:1px solid #e5e5e5;border-top:1px solid #e5e5e5; position: relative; color: #3daae9; }
.change_box .actived:after{content: ""; bottom: -2px; background: #fff; width: 100%; height: 5px; position: absolute; left: 0; }
.x-nav{overflow: inherit; } .x-nav .refresh{margin-right: 20px; }
.control-group{overflow: hidden; margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px dotted #dddddd; }
.control-label{float: left; padding-top: 3px; width: 160px; text-align: right; font-size: 14px; }
.controls{text-align: left; overflow-x: auto; overflow-y: hidden; margin-left: 180px; }
.controls input{width: 300px; height: 24px; font-size: 14px; border-radius: 4px; padding-left:6px; }
.controls select{width: 300px; height: 24px; font-size: 14px; border-radius: 4px; padding-left:6px; }
.controls textarea{width: 400px; height: 90px; border-radius: 4px; } .form-horizontal{margin: 0 10px; }
.bottom-buttom{border-top: 1px solid #e5e5e5; margin-top: 20px; background-color: #f5f5f5; padding: 30px 0; }
.submit{width: 50px; text-align: center; background-color:#3daae9; color: #fff; padding: 5px 10px; font-size: 16px; border-radius: 4px; cursor:pointer; }
</style>
<body>
<div class="x-nav" style="padding: 0px;">
<span class="change_box">
<a href="javascript:;" class="list-one" data-id="1">用户列表</a>
<a href="javascript:;" class="list-two actived" data-id="2">用户修改</a>
</span>
<a class="layui-btn layui-btn-small refresh" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px"></i></a>
</div>
<br>
<div class="info_from form-horizontal">
<div class="control-group">
<label class="control-label">appid:</label>
<div class="controls">
<input id="L_username" name="L_username" type="text" value="{$admin.appid}" readonly maxlength="50" minlength="3" class="required">
<span class="help-inline">
<font color="red"> * </font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">秘钥:</label>
<div class="controls">
<input id="L_pass" name="L_pass" type="text" value="{$admin.appsecret}" maxlength="50" minlength="3" class="required">
<span class="help-inline">
<font color="red"> * </font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">确认密码:</label>
<div class="controls">
<input id="L_repass" name="L_repass" type="text" value="{$admin.appsecret}" maxlength="50" minlength="3" class="required"><span class="help-inline">
<font color="red"> * 与秘钥保持一致</font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">名称:</label>
<div class="controls">
<input id="L_name" name="L_name" type="text" value="{$admin.name}" maxlength="50" minlength="3" class="required"><span class="help-inline">
<font color="red"> *</font>
</span>
</div>
</div>
<div class="bottom-buttom">
<label class="control-label"></label>
<div class="controls">
<div class='submit'>保存</div>
</div>
</div>
</div>
<!-- 隐藏参数 -->
<input type="hidden" id="id" value="{$admin.id}">
<script>
// 代理列表和添加代理切换
$('.x-nav .change_box a').click(function(){
// 样式切换
$('.x-nav .change_box a').removeClass('actived');
$(this).addClass('actived');
// 页面切换
var id = $(this).attr('data-id');
if(id == "1") location.href = '/log/api_admin';
if(id == "2") location.href = '/log/api_admin_edit';
});
//监听提交
$('.submit').click(function () {
// 获取和拼装添加代理的数据
var query = new Object();
query.id = $('#id').val();
query.appid = $('#L_username').val();
query.pass = $('#L_pass').val();
query.repass = $('#L_repass').val();
query.name = $('#L_name').val();
// 验证数据
if(query.pass.length > 0){
if(query.pass.length >= 6){
if(query.pass != query.repass){
layer.msg("两次密码不一致!");
return false;
}
}else{
layer.msg("密码不能少于6位字符!");
return false;
}
}
// 发送数据到后台添加会员
var result = ajax('/log/do_api_admin_edit',query);
if(result.code == 1){
layer.alert(result.msg, {icon: 6}, function () {
location.href = '/log/api_admin';
});
}else{
layer.msg(result.msg,{icon:2});
}
return false;
});
// AJAX函数封装
function ajax(url,query){
var returnData = 0;
$.ajax({
url:url,
data:query,
type:'POST',
dataType:'JSON',
async:false,
success:function(data){
returnData = data;
}
});
return returnData;
}
</script>
</body>
</html>
+145
View File
@@ -0,0 +1,145 @@
{include file="public/header"}
<style>
.x-body .layui-row{ margin-top:-10px; line-height:25px; background:#f5f5f5; border-radius:10px; }
.x-body .layui-row .xblock button{ margin-top:-20px; }
.x-body .layui-form{ margin-top:15px; margin-bottom:12px; }
.x-body .layui-form .layui-input-block{ display:inline-block; width:150px; margin-left:0; }
.x-body .layui-form .layui-form-item{ display:inline-block; margin-left:0; }
.x-body .layui-form .layui-form-item .layui-form-label{ width:48px; }
.x-body .layui-form .layui-form-item .layui-input-block{ margin-left:-10px; width:100px; }
.x-body .layui-form .layui-form-item .layui-input-block .layui-form-radio i{ margin-right:4px; }
.x-body .layui-form .layui-form-item .layui-form-radio{ margin-top:6px; margin-right:-8px; }
.layui-input-block dl{ text-align:left; }
.x-so{ margin:0; }
.x-so input.layui-input{ width:150px; }
.x-nav{overflow: inherit; } .x-nav .refresh{margin-right: 20px; }
.change_box .actived{border-right:1px solid #e5e5e5;border-left:1px solid #e5e5e5;border-top:1px solid #e5e5e5; position: relative; color: #3daae9; }
.change_box .actived:after{content: ""; bottom: -2px; background: #fff; width: 100%; height: 5px; position: absolute; left: 0; }
.change_box a{font-size: 14px;padding: 10.5px 10px;}
</style>
<body>
<div class="x-nav" style="padding: 0px;">
<span class="change_box">
<a href="javascript:;" class="list-one actived" data-id="1">操作日志列表</a>
<!--<a href="javascript:;" class="list-two" data-id="2">添加代理</a>-->
</span>
<a class="layui-btn layui-btn-small refresh" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px"></i></a>
</div>
<br>
<div class="x-body">
<div class="layui-row">
<form class="layui-form layui-col-md12 x-so float-left" action="/log/index" method="get">
<input class="layui-input" placeholder="开始时间" name="startDate" id="start" value="<?php if(isset($get['startDate'])) {echo $get['startDate'];} ?>">
<input class="layui-input" placeholder="结束时间" name="endDate" id="end" value="<?php if(isset($get['endDate'])) {echo $get['endDate'];} ?>">
<input type="text" name="username" id="username" placeholder="请输入操作人" autocomplete="off" class="layui-input" value="<?php if(isset($get['username'])) {echo $get['username'];} ?>">
<button class="layui-btn" lay-submit="" lay-filter="sreach"><i class="layui-icon">&#xe615;</i></button>
<span class="layui-btn" id="export">导出 excel</span>
<!-- <span class="layui-btn" id="print">打印</span> -->
</form>
</div>
<table class="layui-table">
<thead>
<tr>
<th>编号</th>
<th>操作人</th>
<th>操作类型</th>
<th>操作描述</th>
<th>操作时间</th>
</tr>
</thead>
<tbody>
{foreach name="log_list" item="vo"}
<tr>
<td>{$vo.id}</td>
<td>{$vo.username}</td>
<td>{$vo.control}</td>
<td>{$vo.remake}</td>
<td>{$vo.control_time}</td>
</tr>
{/foreach}
</tbody>
</table>
{$log_list->render()}
</div>
</body>
<script>
// 代理列表和添加代理切换
$('.x-nav .change_box a').click(function(){
// 样式切换
$('.x-nav .change_box a').removeClass('actived');
$(this).addClass('actived');
// 页面切换
var id = $(this).attr('data-id');
if(id == "1") location.href = '/log/index';
// if(id == "2") location.href = '/agent/agent_add';
});
// 时间选择器
layui.use('laydate', function () {
var laydate = layui.laydate;
// 开始时间
laydate.render({
elem: '#start',
type: 'datetime'
});
// 结束时间
laydate.render({
elem: '#end',
type: 'datetime'
});
});
// 导出excel
$('#export').click(function(){
var startDate = $('#start').val();
var endDate = $('#end').val();
var username = $('#username').val();
layer.confirm('确定导出 excel 吗?',function(index){
location.href = "/log/index?export=1&&startDate="+startDate+"&&endDate="+endDate+"&&username="+username;
layer.close(index);
});
})
$('#print').click(function(){
var qs = getQueryString();
var startDate = qs["startDate"];
var endDate = qs["endDate"];
var username = qs["username"];
if(startDate == undefined){
startDate = '';
}
if(endDate == undefined){
endDate = '';
}
if(username == undefined){
username = '';
}
layer.open({
type: 2,
title:'操作日志列表打印',
content: '/log/user_print?startDate='+startDate+'&endDate='+endDate+'&username='+username,
area: ['95%', '95%']
});
});
function getQueryString() {
var qs = location.search.substr(1), // 获取url中"?"符后的字串
args = {}, // 保存参数数据的对象
items = qs.length ? qs.split("&") : [], // 取得每一个参数项,
item = null,
len = items.length;
for(var i = 0; i < len; i++) {
item = items[i].split("=");
var name = decodeURIComponent(item[0]),
value = decodeURIComponent(item[1]);
if(name) {
args[name] = value;
}
}
return args;
}
</script>
</html>
+176
View File
@@ -0,0 +1,176 @@
{include file="public/header"}
<style>
.x-body .layui-row{ margin-top:-10px; line-height:25px; background:#f5f5f5; border-radius:10px; }
.x-body .layui-row .xblock button{ margin-top:-20px; }
.x-body .layui-form{ margin-top:15px; margin-bottom:10px; }
.x-body .layui-form .layui-input-block{ display:inline-block; width:150px; margin-left:0; }
.x-body .layui-form .layui-form-item{ display:inline-block; margin-left:0; }
.x-body .layui-form .layui-form-item .layui-form-label{ width:48px; }
.x-body .layui-form .layui-form-item .layui-input-block{ margin-left:-10px; width:100px; }
.x-body .layui-form .layui-form-item .layui-input-block .layui-form-radio i{ margin-right:4px; }
.x-body .layui-form .layui-form-item .layui-form-radio{ margin-top:6px; margin-right:-8px; }
.layui-input-block dl{ text-align:left; }
.x-so{ margin:0; }
.x-so input.layui-input{ width:150px; }
.x-nav{overflow: inherit; } .x-nav .refresh{margin-right: 20px; }
.change_box .actived{border-right:1px solid #e5e5e5;border-left:1px solid #e5e5e5;border-top:1px solid #e5e5e5; position: relative; color: #3daae9; }
.change_box .actived:after{content: ""; bottom: -2px; background: #fff; width: 100%; height: 5px; position: absolute; left: 0; }
.change_box a{font-size: 14px;padding: 10.5px 10px;}
</style>
<body>
<div class="x-nav" style="padding: 0px;">
<span class="change_box">
<a href="javascript:;" class="list-one actived" data-id="1">用户列表</a>
<a href="javascript:;" class="list-two" data-id="2">用户添加</a>
</span>
<a class="layui-btn layui-btn-small refresh" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px"></i></a>
</div>
<br>
<div class="x-body">
<table class="layui-table">
<thead>
<tr>
<th>编号</th>
<th>appid</th>
<th>名称</th>
<th>备注</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{foreach name="admin_list" item="vo"}
<tr>
<td>{$vo.id}</td>
<td>{$vo.appid}</td>
<td>{$vo.name}</td>
<td>{$vo.remake}</td>
<td class="td-manage">
<a href="/log/scan_admin_edit?id={$vo.id}">
<span class="layui-btn layui-btn-normal layui-btn-mini" style="background:#009688;">修改</span>
</a>
<a onclick="member_del(this,'{$vo.id}')" href="javascript:;">
<span class="layui-btn layui-btn-normal layui-btn-mini" style="background:#ff5050;">删除</span>
</a>
</td>
</tr>
{/foreach}
</tbody>
</table>
{$admin_list->render()}
</div>
<script>
// 代理列表和添加代理切换
$('.x-nav .change_box a').click(function(){
// 样式切换
$('.x-nav .change_box a').removeClass('actived');
$(this).addClass('actived');
// 页面切换
var id = $(this).attr('data-id');
if(id == "1") location.href = '/log/scan_admin';
if(id == "2") location.href = '/log/scan_admin_add';
});
/*用户-删除*/
function member_del(obj, id) {
layer.confirm('确认要删除吗?',function () {
// 数据验证
if(id <= 0){
layer.msg('删除用户出错!');
return false;
}
// 拼装数据
var query = new Object;
query.scan_admin_id = id;
// 发送数据到后台删除会员
var result = ajax('/log/scan_admin_del',query);
if(result.code == 1){
layer.msg(result.msg, {icon: 1, time: 1000},function(){
location.reload();
});
}else if(result.code == 0){
layer.msg(result.msg, {icon: 2, time: 1000});
}
});
}
/**
* 封装 AJAX 函数
* @param url 目标地址
* @param query 参数
* @returns {string}
*/
function ajax(url, query) {
var returnData = "";
$.ajax({
url: url,
data: query,
type: 'POST',
dataType: 'JSON',
async: false,
success: function (data) {
returnData = data;
}
});
return returnData;
}
$('#print').click(function(){
var qs = getQueryString();
var startDate = qs["startDate"];
var endDate = qs["endDate"];
var status = qs["status"];
var username = qs["username"];
if(startDate == undefined){
startDate = '';
}
if(endDate == undefined){
endDate = '';
}
if(status == undefined){
status = '';
}
if(username == undefined){
username = '';
}
layer.open({
type: 2,
title:'用户列表打印',
content: '/log/admin_print?startDate='+startDate+'&endDate='+endDate+'&status='+status+'&username='+username,
area: ['95%', '95%']
});
});
function getQueryString() {
var qs = location.search.substr(1), // 获取url中"?"符后的字串
args = {}, // 保存参数数据的对象
items = qs.length ? qs.split("&") : [], // 取得每一个参数项,
item = null,
len = items.length;
for(var i = 0; i < len; i++) {
item = items[i].split("=");
var name = decodeURIComponent(item[0]),
value = decodeURIComponent(item[1]);
if(name) {
args[name] = value;
}
}
return args;
}
// 导出excel
$('#export').click(function(){
var startDate = $('#start').val();
var endDate = $('#end').val();
var status = $('#status').val();
var username = $('#username').val();
layer.confirm('确定导出 excel 吗?',function(index){
location.href = "/log/index?export=1&&startDate="+startDate+"&&endDate="+endDate+"&&status="+status+"&&username="+username;
layer.close(index);
});
})
</script>
</body>
</html>
@@ -0,0 +1,154 @@
{include file="public/header"}
<style type="text/css">
textarea, input[type="text"], input[type="password"],
.uneditable-input{border: 1px solid #ccc;background-color: #fff; }
.change_box a{font-size: 14px;padding: 10.5px 10px;}
.change_box .actived{border-right:1px solid #e5e5e5;border-left:1px solid #e5e5e5;border-top:1px solid #e5e5e5; position: relative; color: #3daae9; }
.change_box .actived:after{content: ""; bottom: -2px; background: #fff; width: 100%; height: 5px; position: absolute; left: 0; }
.x-nav{overflow: inherit; }
.x-nav .refresh{margin-right: 20px; }
.control-group{overflow: hidden; margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px dotted #dddddd; }
.control-label{float: left; padding-top: 3px; width: 160px; text-align: right; font-size: 14px; }
.controls{text-align: left; overflow-x: auto; overflow-y: hidden; margin-left: 180px; }
.controls input{width: 300px; height: 24px; font-size: 14px; border-radius: 4px; padding-left:6px; }
.controls select{width: 300px; height: 24px; font-size: 14px; border-radius: 4px; padding-left:6px; }
.controls textarea{width: 400px; height: 90px; border-radius: 4px; } .form-horizontal{margin: 0 10px; }
.bottom-buttom{border-top: 1px solid #e5e5e5; margin-top: 20px; background-color: #f5f5f5; padding: 30px 0; }
.submit{width: 50px; text-align: center; background-color:#3daae9; color: #fff; padding: 5px 10px; font-size: 16px; border-radius: 4px; cursor:pointer; }
</style>
<body>
<div class="x-nav" style="padding: 0px;">
<span class="change_box">
<a href="javascript:;" class="list-one" data-id="1">用户列表</a>
<a href="javascript:;" class="list-two actived" data-id="2">用户添加</a>
</span>
<a class="layui-btn layui-btn-small refresh" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px"></i></a>
</div>
<br>
<div class="info_from form-horizontal">
<div class="control-group">
<label class="control-label">appid:</label>
<div class="controls">
<input id="L_username" name="L_username" type="text" value maxlength="50" minlength="3" class="required">
<span class="help-inline">
<font color="red"> * 将会成为您唯一的登入名</font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">密码:</label>
<div class="controls">
<input id="L_pass" name="L_pass" type="password" value maxlength="50" minlength="3" class="required">
<span class="help-inline">
<font color="red"> * 6到16个字符</font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">确认密码:</label>
<div class="controls">
<input id="L_repass" name="L_repass" type="password" value maxlength="50" minlength="3" class="required"><span class="help-inline">
<font color="red"> * 与密码保持一致</font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">名称:</label>
<div class="controls">
<input id="L_name" name="L_name" type="text" value maxlength="50" minlength="3" class="required"><span class="help-inline">
<font color="red"> *</font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">备注:</label>
<div class="controls">
<textarea id="L_remake" name="L_remake" type="text" value maxlength="50" minlength="3" class="required"></textarea>
</div>
</div>
<div class="bottom-buttom">
<label class="control-label"></label>
<div class="controls">
<div class='submit'>保存</div>
</div>
</div>
</div>
<script>
// 代理列表和添加代理切换
$('.x-nav .change_box a').click(function(){
// 样式切换
$('.x-nav .change_box a').removeClass('actived');
$(this).addClass('actived');
// 页面切换
var id = $(this).attr('data-id');
if(id == "1") location.href = '/log/scan_admin';
if(id == "2") location.href = '/log/scan_admin_add';
});
//监听提交
$('.submit').click(function (data) {
// 获取和拼装添加代理的数据
var query = new Object();
query.appid = $('#L_username').val();
query.pass = $('#L_pass').val();
query.repass = $('#L_repass').val();
query.name = $('#L_name').val();
query.remake = $('#L_remake').val();
// 验证数据
if(query.appid.length == 0){
layer.alert("请填写账号!");
return false;
}
if(query.pass.length <= 0){
layer.alert("请填写密码!");
return false;
}
if(query.pass.length > 0 && query.pass.length < 6){
layer.alert("密码长度为6到16个字符!");
return false;
}
if(query.pass != query.repass){
layer.alert("两次密码不一致!");
return false;
}
if(query.name.length <= 0){
layer.alert("请填写名称!");
return false;
}
// console.log(query);return false;
// 发送数据到后台添加会员
var result = ajax('/log/do_scan_admin_add',query);
if(result.code == 1){
layer.alert(result.msg, {icon: 6}, function () {
location.href = "/log/scan_admin";
});
}else{
layer.alert(result.msg,{icon:2});
}
return false;
});
// AJAX函数封装
function ajax(url,query){
var returnData = 0;
$.ajax({
url:url,
data:query,
type:'POST',
dataType:'JSON',
async:false,
success:function(data){
returnData = data;
}
});
return returnData;
}
</script>
</body>
</html>
@@ -0,0 +1,144 @@
{include file="public/header"}
<style type="text/css">
textarea, input[type="text"], input[type="password"],.uneditable-input{border: 1px solid #ccc;background-color: #fff; }
.change_box a{font-size: 14px;padding: 10.5px 10px;}
.change_box .actived{border-right:1px solid #e5e5e5;border-left:1px solid #e5e5e5;border-top:1px solid #e5e5e5; position: relative; color: #3daae9; }
.change_box .actived:after{content: ""; bottom: -2px; background: #fff; width: 100%; height: 5px; position: absolute; left: 0; }
.x-nav{overflow: inherit; } .x-nav .refresh{margin-right: 20px; }
.control-group{overflow: hidden; margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px dotted #dddddd; }
.control-label{float: left; padding-top: 3px; width: 160px; text-align: right; font-size: 14px; }
.controls{text-align: left; overflow-x: auto; overflow-y: hidden; margin-left: 180px; }
.controls input{width: 300px; height: 24px; font-size: 14px; border-radius: 4px; padding-left:6px; }
.controls select{width: 300px; height: 24px; font-size: 14px; border-radius: 4px; padding-left:6px; }
.controls textarea{width: 400px; height: 90px; border-radius: 4px; } .form-horizontal{margin: 0 10px; }
.bottom-buttom{border-top: 1px solid #e5e5e5; margin-top: 20px; background-color: #f5f5f5; padding: 30px 0; }
.submit{width: 50px; text-align: center; background-color:#3daae9; color: #fff; padding: 5px 10px; font-size: 16px; border-radius: 4px; cursor:pointer; }
</style>
<body>
<div class="x-nav" style="padding: 0px;">
<span class="change_box">
<a href="javascript:;" class="list-one" data-id="1">用户列表</a>
<a href="javascript:;" class="list-two actived" data-id="2">用户修改</a>
</span>
<a class="layui-btn layui-btn-small refresh" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px"></i></a>
</div>
<br>
<div class="info_from form-horizontal">
<div class="control-group">
<label class="control-label">appid:</label>
<div class="controls">
<input id="L_username" name="L_username" type="text" value="{$admin.appid}" readonly maxlength="50" minlength="3" class="required">
<span class="help-inline">
<font color="red"> * 将会成为您唯一的登入名</font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">密码:</label>
<div class="controls">
<input id="L_pass" name="L_pass" type="password" value maxlength="50" minlength="3" class="required">
<span class="help-inline">
<font color="red"> * 6到16个字符</font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">确认密码:</label>
<div class="controls">
<input id="L_repass" name="L_repass" type="password" value maxlength="50" minlength="3" class="required"><span class="help-inline">
<font color="red"> * 与密码保持一致</font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">名称:</label>
<div class="controls">
<input id="L_name" name="L_name" type="text" value="{$admin.name}" maxlength="50" minlength="3" class="required"><span class="help-inline">
<font color="red"> *</font>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">备注:</label>
<div class="controls">
<textarea id="L_remake" name="L_remake" type="text" maxlength="50" minlength="3" class="required">{$admin.remake}</textarea>
</div>
</div>
<div class="bottom-buttom">
<label class="control-label"></label>
<div class="controls">
<div class='submit'>保存</div>
</div>
</div>
</div>
<!-- 隐藏参数 -->
<input type="hidden" id="scan_admin_id" value="{$admin.id}">
<script>
// 代理列表和添加代理切换
$('.x-nav .change_box a').click(function(){
// 样式切换
$('.x-nav .change_box a').removeClass('actived');
$(this).addClass('actived');
// 页面切换
var id = $(this).attr('data-id');
if(id == "1") location.href = '/log/scan_admin';
if(id == "2") location.href = '/log/scan_admin_edit';
});
//监听提交
$('.submit').click(function () {
// 获取和拼装添加代理的数据
var query = new Object();
query.scan_admin_id = $('#scan_admin_id').val();
query.appid = $('#L_username').val();
query.pass = $('#L_pass').val();
query.repass = $('#L_repass').val();
query.name = $('#L_name').val();
query.remake = $('#L_remake').val();
// 验证数据
if(query.pass.length > 0){
if(query.pass.length >= 6){
if(query.pass != query.repass){
layer.msg("两次密码不一致!");
return false;
}
}else{
layer.msg("密码不能少于6位字符!");
return false;
}
}
// 发送数据到后台添加会员
var result = ajax('/log/do_scan_admin_edit',query);
if(result.code == 1){
layer.alert(result.msg, {icon: 6}, function () {
location.href = '/log/scan_admin';
});
}else{
layer.msg(result.msg,{icon:2});
}
return false;
});
// AJAX函数封装
function ajax(url,query){
var returnData = 0;
$.ajax({
url:url,
data:query,
type:'POST',
dataType:'JSON',
async:false,
success:function(data){
returnData = data;
}
});
return returnData;
}
</script>
</body>
</html>
+162
View File
@@ -0,0 +1,162 @@
{include file="public/header"}
<style>
.x-body .layui-row{ margin-top:-10px; line-height:25px; background:#f5f5f5; border-radius:10px; }
.x-body .layui-row .xblock button{ margin-top:-20px; }
.x-body .layui-form{ margin-top:15px; margin-bottom:12px; }
.x-body .layui-form .layui-input-block{ display:inline-block; width:150px; margin-left:0; }
.x-body .layui-form .layui-form-item{ display:inline-block; margin-left:0; }
.x-body .layui-form .layui-form-item .layui-form-label{ width:48px; }
.x-body .layui-form .layui-form-item .layui-input-block{ margin-left:-10px; width:100px; }
.x-body .layui-form .layui-form-item .layui-input-block .layui-form-radio i{ margin-right:4px; }
.x-body .layui-form .layui-form-item .layui-form-radio{ margin-top:6px; margin-right:-8px; }
.layui-input-block dl{ text-align:left; }
.x-so{ margin:0; }
.x-so input.layui-input{ width:150px; }
.x-nav{overflow: inherit; } .x-nav .refresh{margin-right: 20px; }
.change_box .actived{border-right:1px solid #e5e5e5;border-left:1px solid #e5e5e5;border-top:1px solid #e5e5e5; position: relative; color: #3daae9; }
.change_box .actived:after{content: ""; bottom: -2px; background: #fff; width: 100%; height: 5px; position: absolute; left: 0; }
.change_box a{font-size: 14px;padding: 10.5px 10px;}
</style>
<body>
<div class="x-nav" style="padding: 0px;">
<span class="change_box">
<a href="javascript:;" class="list-one actived" data-id="1">用户登录日志列表</a>
<!--<a href="javascript:;" class="list-two" data-id="2">添加代理</a>-->
</span>
<a class="layui-btn layui-btn-small refresh" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px"></i></a>
</div>
<br>
<div class="x-body">
<div class="layui-row">
<form class="layui-form layui-col-md12 x-so float-left" action="/log/user_login" method="get">
<input class="layui-input" placeholder="开始时间" name="startDate" id="start" value="<?php if(isset($get['startDate'])) {echo $get['startDate'];} ?>">
<input class="layui-input" placeholder="结束时间" name="endDate" id="end" value="<?php if(isset($get['endDate'])) {echo $get['endDate'];} ?>">
<input type="text" name="username" id="username" placeholder="请输入账号" autocomplete="off" class="layui-input" value="<?php if(isset($get['username'])) {echo $get['username'];} ?>">
<div class="layui-input-block" >
<select name="remark" id="remark">
<option value="" selected>请选择操作类型</option>
<option value="登录" <?php if(isset($get['remark']) && $get['remark'] == '登录') {echo 'selected';} ?>>登录</option>
<option value="退出登录" <?php if(isset($get['remark']) && $get['remark'] == '退出登录') {echo 'selected';} ?>>退出登录</option>
<option value="强制退出登录" <?php if(isset($get['remark']) && $get['remark'] == '强制退出登录') {echo 'selected';} ?>>强制退出登录</option>
</select>
</div>
<button class="layui-btn" lay-submit="" lay-filter="sreach"><i class="layui-icon">&#xe615;</i></button>
<span class="layui-btn" id="export">导出excel</span>
<!-- <span class="layui-btn" id="print">打印</span> -->
</form>
</div>
<table class="layui-table">
<thead>
<tr>
<th>账号</th>
<th>姓名</th>
<th>IP</th>
<th>IP所属国家/地区</th>
<th>登录客户端</th>
<th>操作类型</th>
<th>操作时间</th>
</tr>
</thead>
<tbody>
{foreach name="log_list" item="vo"}
<tr>
<td>{$vo.username}</td>
<td>{$vo.nickname}</td>
<td>{$vo.ip}</td>
<td>{$vo.ip_location}</td>
<td>{$vo.client}</td>
<td>{$vo.remark}</td>
<td>{$vo.create_time}</td>
</tr>
{/foreach}
</tbody>
</table>
{$log_list->render()}
</div>
</body>
<script>
// 代理列表和添加代理切换
$('.x-nav .change_box a').click(function(){
// 样式切换
$('.x-nav .change_box a').removeClass('actived');
$(this).addClass('actived');
// 页面切换
var id = $(this).attr('data-id');
if(id == "1") location.href = '/log/user_login';
// if(id == "2") location.href = '/agent/agent_add';
});
// 时间选择器
layui.use('laydate', function () {
var laydate = layui.laydate;
// 开始时间
laydate.render({
elem: '#start',
type: 'datetime'
});
// 结束时间
laydate.render({
elem: '#end',
type: 'datetime'
});
});
$('#print').click(function(){
var qs = getQueryString();
var startDate = qs["startDate"];
var endDate = qs["endDate"];
var username = qs["username"];
var remark = qs["remark"];
if(startDate == undefined){
startDate = '';
}
if(endDate == undefined){
endDate = '';
}
if(username == undefined){
username = '';
}
if(remark == undefined){
remark = '';
}
layer.open({
type: 2,
title:'用户登录日志列表打印',
content: '/log/user_login_print?startDate='+startDate+'&endDate='+endDate+'&username='+username+'&remark='+remark,
area: ['95%', '95%']
});
});
function getQueryString() {
var qs = location.search.substr(1), // 获取url中"?"符后的字串
args = {}, // 保存参数数据的对象
items = qs.length ? qs.split("&") : [], // 取得每一个参数项,
item = null,
len = items.length;
for(var i = 0; i < len; i++) {
item = items[i].split("=");
var name = decodeURIComponent(item[0]),
value = decodeURIComponent(item[1]);
if(name) {
args[name] = value;
}
}
return args;
}
// 导出excel
$('#export').click(function(){
var startDate = $('#start').val();
var endDate = $('#end').val();
var username = $('#username').val();
var remark = $('#remark').val();
layer.confirm('确定导出 excel 吗?',function(index){
location.href = "/log/user_login?export=1&&startDate="+startDate+"&&endDate="+endDate+"&&username="+username+"&remark="+remark;
layer.close(index);
});
})
</script>
</html>
@@ -0,0 +1,34 @@
{include file="public/header"}
<body>
<div class="x-body">
<div class="layui-btn no-print" onclick="jQuery('html').print()">打印</div>
<table class="layui-table">
<div style="text-align: center;font-size: 18px;font-weight:bold;">用户登录列表</div>
<thead>
<tr>
<th style="text-align: center;">账号</th>
<th style="text-align: center;">姓名</th>
<th style="text-align: center;">IP</th>
<th style="text-align: center;">IP所属国家/地区</th>
<th style="text-align: center;">登录客户端</th>
<th style="text-align: center;">操作类型</th>
<th style="text-align: center;">操作时间</th>
</tr>
</thead>
<tbody>
{foreach name="log_list" item="vo"}
<tr>
<td>{$vo.username}</td>
<td>{$vo.nickname}</td>
<td>{$vo.ip}</td>
<td>{$vo.ip_location}</td>
<td>{$vo.client}</td>
<td>{$vo.remark}</td>
<td>{$vo.create_time}</td>
</tr>
{/foreach}
</tbody>
</div>
</body>
</html>
@@ -0,0 +1,30 @@
{include file="public/header"}
<body>
<div class="x-body">
<div class="layui-btn no-print" onclick="jQuery('html').print()">打印</div>
<table class="layui-table">
<div style="text-align: center;font-size: 18px;font-weight:bold;">操作日志列表</div>
<thead>
<tr>
<th style="text-align: center;">编号</th>
<th style="text-align: center;">操作人</th>
<th style="text-align: center;">操作类型</th>
<th style="text-align: center;">操作描述</th>
<th style="text-align: center;">操作时间</th>
</tr>
</thead>
<tbody>
{foreach name="log_list" item="vo"}
<tr>
<td>{$vo.id}</td>
<td>{$vo.username}</td>
<td>{$vo.control}</td>
<td>{$vo.remake}</td>
<td>{$vo.control_time}</td>
</tr>
{/foreach}
</tbody>
</div>
</body>
</html>