初始化项目

This commit is contained in:
augushong
2020-08-07 23:49:50 +08:00
parent 30d8c3b64b
commit 3bc46a4b9c
304 changed files with 29675 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>应用管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Admin';
var currentLeftNavItem = 'log';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_admin_manage"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>操作日志</cite></a>
</span>
</div>
<div class="main-container">
<div>
</div>
<div style="overflow: auto;">
<table class="layui-table">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<thead>
<tr>
<th>ID</th>
<th>访问地址</th>
<th>访问信息</th>
<th>操作管理员</th>
<!-- <th>操作</th> -->
</tr>
</thead>
<tbody>
{volist name='list' id='vo'}
<tr data-id="{$vo.id}" data-param="{$vo->getData('param')}">
<td>{$vo.id}</td>
<td>
<p>{$vo.url.name}</p>
<p>{$vo.key}</p>
</td>
<td>
<p>访问时间:{$vo.create_time}</p>
<p>访问IP:{$vo.ip}</p>
</td>
<td>
<img src="{$vo.admin.avatar}" alt="" style="width: 50px;">
{$vo.admin_id}/{$vo.admin.nickname}
</td>
<!-- <td>
<div class="layui-btn-container">
<div class="layui-btn layui-btn-sm delete">删除</div>
</div>
</td> -->
</tr>
{/volist}
{if condition="count($list) eq 0" }
<tr>
<td colspan="6">暂无操作记录</td>
</tr>
{/if}
</tbody>
</table>
<div>
{$list->render()|raw}
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
</body>
</html>

View File

@@ -0,0 +1,142 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>基本资料</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Admin';
var currentLeftNavItem = 'index';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_admin_manage"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>添加管理员</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>添加管理员</legend>
<div class="layui-field-box">
<form action="{:url('Admin/save')}" method="POST" class="layui-form">
<div class="layui-form-item">
<div class="layui-form-label">登录账号</div>
<div class="layui-input-block">
<input type="text" name="account" required lay-verify="required"
value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">昵称</div>
<div class="layui-input-block">
<input type="text" name="nickname" required lay-verify="required"
value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">密码</div>
<div class="layui-input-block">
<input type="password" name="password"
value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">管理组</div>
<div class="layui-input-block">
<select name="group_id" lay-verify="">
<option value="">请选择一个分组</option>
{volist name='group_list' id='group'}
<option value="{$group.id}">{$group.name}</option>
{/volist}
</select>
<div class="layui-form-mid layui-word-aux">
不设置分组,帐号拥有所有权限
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">头像</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-admin-avatar">上传</div>
</div>
<div>
<img class="layui-circle admin-avatar" style="width: 80px" src=""
alt="" srcset="">
</div>
<input type="hidden" name="avatar" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">创建</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.config({
base: '/static/lib/layui/lib/cropper/'
}).use(['layer', 'upload', 'croppers','form'], function () {
var upload = layui.upload;
var croppers = layui.croppers;
var uploadSiteLogo = croppers.render({
elem: '.upload-admin-avatar',
url: '{:url("File/save")}',
data: {
type: 2,
dir: 'admin_avatar'
},
saveW: 150 //保存宽度
,
saveH: 150,
mark: 1 / 1 //选取比例
,
area: '900px' //弹窗宽度
,
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="avatar"]').val(result.data.save_name);
$('.admin-avatar').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</div>
</body>
</html>

112
view/admin/admin/edit.html Normal file
View File

@@ -0,0 +1,112 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>基本资料</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Login';
var currentLeftNavItem = 'account';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_admin"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>基本资料</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>资料管理</legend>
<div class="layui-field-box">
<form action="{:url('Admin/update')}" method="POST" class="layui-form">
<div class="layui-form-item">
<div class="layui-form-label">登录账号</div>
<div class="layui-input-block">
<input type="text" name="account" value="{$admin.account}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">昵称</div>
<div class="layui-input-block">
<input type="text" name="nickname" value="{$admin.nickname}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">头像</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-admin-avatar">上传</div>
</div>
<div>
<img class="layui-circle admin-avatar" style="width: 80px" src="{$admin.avatar}" alt="" srcset="">
</div>
<input type="hidden" name="avatar" value="{$admin->getData('avatar')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.config({
base:'/static/lib/layui/lib/cropper/'
}).use(['layer','upload','croppers'],function(){
var upload = layui.upload;
var croppers = layui.croppers;
var uploadSiteLogo = croppers.render({
elem:'.upload-admin-avatar',
url:'{:url("File/save")}',
data:{
type:2,
dir:'admin_avatar'
}
,saveW:150 //保存宽度
,saveH:150
,mark:1/1 //选取比例
,area:'900px' //弹窗宽度
,accept:'images',
done:function(result){
if(result.code == 0){
layer.msg('上传成功');
$('input[name="avatar"]').val(result.data.save_name);
$('.admin-avatar').attr('src',result.data.src);
}else{
layer.msg(result.msg)
}
}
})
})
</script>
</div>
</body>
</html>

View File

@@ -0,0 +1,146 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>应用管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Admin';
var currentLeftNavItem = 'index';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_admin_manage"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite> 编辑管理员</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>添加管理员</legend>
<div class="layui-field-box">
<form action="{:url('Admin/updateAccount')}" method="POST" class="layui-form">
<input type="hidden" name="id" value="{$admin.id}">
<div class="layui-form-item">
<div class="layui-form-label">登录账号</div>
<div class="layui-input-block">
<input type="text" name="account" required lay-verify="required"
value="{$admin.account}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">昵称</div>
<div class="layui-input-block">
<input type="text" name="nickname" required lay-verify="required"
value="{$admin.nickname}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">密码</div>
<div class="layui-input-block">
<input type="password" name="password" value="" class="layui-input">
<div class="layui-form-mid layui-word-aux">
留空不修改
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">管理组</div>
<div class="layui-input-block">
<select name="group_id" lay-verify="">
<option value="">请选择一个分组</option>
{volist name='group_list' id='group'}
{if condition="$group.id eq $admin.group_id" }
<option value="{$group.id}" selected="selected">{$group.name}</option>
{else /}
<option value="{$group.id}">{$group.name}</option>
{/if}
{/volist}
</select>
<div class="layui-form-mid layui-word-aux">
不设置分组,帐号拥有所有权限
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">头像</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-admin-avatar">上传</div>
</div>
<div>
<img class="layui-circle admin-avatar" style="width: 80px" src="{$admin.avatar}"
alt="{$admin.avatar}" srcset="">
</div>
<input type="hidden" name="avatar" value="{$admin->getData('avatar')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">创建</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.config({
base: '/static/lib/layui/lib/cropper/'
}).use(['layer', 'upload', 'croppers','form'], function () {
var upload = layui.upload;
var croppers = layui.croppers;
var uploadSiteLogo = croppers.render({
elem: '.upload-admin-avatar',
url: '{:url("File/save")}',
data: {
type: 2,
dir: 'admin_avatar'
},
saveW: 150 //保存宽度
,
saveH: 150,
mark: 1 / 1 //选取比例
,
area: '900px' //弹窗宽度
,
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="avatar"]').val(result.data.save_name);
$('.admin-avatar').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</div>
</body>
</html>

102
view/admin/admin/index.html Normal file
View File

@@ -0,0 +1,102 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>管理员管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Admin';
var currentLeftNavItem = 'index';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_admin_manage"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>管理员管理</cite></a>
</span>
</div>
<div class="main-container">
<div>
<a class="layui-btn" href="{:url('Admin/create')}">添加管理员</a>
</div>
<div style="overflow: auto;">
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>头像</th>
<th>账号</th>
<th>昵称</th>
<th>分组</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name='$list' id='vo'}
<tr class="item" data-id="{$vo.id}">
<td>{$vo.id}</td>
<td><img src="{$vo.avatar}" alt=""></td>
<td>{$vo.account}</td>
<td>{$vo.nickname}</td>
<td>{$vo.group.name|default="未分组"}</td>
<td>
<div class="layui-btn-container">
<a class="layui-btn layui-btn-sm" href="{:url('Admin/editAccount',['id'=>$vo.id])}">编辑</a>
<div class="layui-btn layui-btn-sm delete">
删除
</div>
</div>
</td>
</tr>
{/volist}
{if condition="count($list) eq 0" }
<tr>
<td colspan="6">暂无数据</td>
</tr>
{/if}
</tbody>
</table>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
$('.delete').click(function(){
var item = this;
layer.confirm('确定要删除吗?',function(){
$.get('{:url("delete")}',{
id:$(item).parents('.item').data('id')
},function(result){
layer.msg('删除成功');
$(item).parents('.item').remove();
})
})
})
</script>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>基本资料</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Login';
var currentLeftNavItem = 'password';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_admin"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>密码管理</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>密码管理</legend>
<div class="layui-field-box">
<form action="{:url('Admin/passwordUpdate')}" method="POST" class="layui-form">
<div class="layui-form-item">
<div class="layui-form-label">原密码</div>
<div class="layui-input-block">
<input type="password" name="original_password" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">新密码</div>
<div class="layui-input-block">
<input type="password" name="new_password" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">确认密码</div>
<div class="layui-input-block">
<input type="password" name="check_password" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
</body>
</html>

View File

@@ -0,0 +1,72 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>应用管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Admin';
var currentLeftNavItem = 'group';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_admin_manage"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>添加分组</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>添加分组</legend>
<div class="layui-field-box">
<form action="{:url('save')}" class="layui-form" method="POST" >
<div class="layui-form-item">
<div class="layui-form-label">分组名称</div>
<div class="layui-input-block">
<input type="text" name="name" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">分组权限</div>
<div class="layui-input-block">
{volist name='permission_list' id='vo'}
<input type="checkbox" name="permissions[]" title="{$vo.name}({$vo->getData('key')})" value="{$vo.id}" lay-skin="primary" checked>
{/volist}
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">创建分组</button>
</div>
</form>
</div>
</legend>
</fieldset>
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
layui.use(['form'])
</script>
</body>
</html>

View File

@@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>应用管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Admin';
var currentLeftNavItem = 'group';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_admin_manage"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>添加分组</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>添加分组</legend>
<div class="layui-field-box">
<form action="{:url('update',['id'=>$admin_group.id])}" class="layui-form" method="POST" >
<div class="layui-form-item">
<div class="layui-form-label">分组名称</div>
<div class="layui-input-block">
<input type="text" name="name" class="layui-input" value="{$admin_group.name}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">分组权限</div>
<div class="layui-input-block">
{volist name='permission_list' id='vo'}
{if condition="empty($vo->getData('name'))" }
<input type="checkbox" name="permissions[]" title="{$vo.name}" value="{$vo.id}" lay-skin="primary" {if condition="in_array($vo.id,$admin_group.permissions)"}checked{/if}>
{else /}
<input type="checkbox" name="permissions[]" title="{$vo.name}({$vo->getData('key')})" value="{$vo.id}" lay-skin="primary" {if condition="in_array($vo.id,$admin_group.permissions)"}checked{/if}>
{/if}
{/volist}
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">保存分组</button>
</div>
</form>
</div>
</legend>
</fieldset>
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
layui.use(['form'])
</script>
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>应用管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Admin';
var currentLeftNavItem = 'group';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_admin_manage"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>分组管理</cite></a>
</span>
</div>
<div class="main-container">
<div>
<div class="layui-btn-container">
<a class="layui-btn" href="{:url('AdminGroup/create')}">添加分组</a>
</div>
</div>
<div style="overflow: auto;">
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>分组名称</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name='list' id='vo'}
<tr class="item">
<td>{$vo.id}</td>
<td>{$vo.name}</td>
<td>
<div class="layui-btn-container">
<a href="{:url('edit',['id'=>$vo.id])}" class="layui-btn layui-btn-sm">编辑</a>
<div data-href="{:url('delete',['id'=>$vo.id])}" class="layui-btn layui-btn-sm delete">删除</div>
</div>
</td>
</tr>
{/volist}
{if condition="count($list) eq 0" }
<tr>
<td colspan="3">暂无数据</td>
</tr>
{/if}
</tbody>
</table>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
$('.delete').click(function(){
var item = this;
layer.confirm('确定要删除吗?',function(){
$.get($(item).data('href'),function(result){
if(result.code == 0){
$(item).parents('.item').remove();
}
layer.msg(result.msg);
})
})
})
</script>
</div>
</body>
</html>

View File

@@ -0,0 +1,162 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>应用管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Admin';
var currentLeftNavItem = 'premission';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_admin_manage"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>权限管理</cite></a>
</span>
</div>
<div class="main-container">
<div style="overflow: auto;">
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>权限名称</th>
<th>权限标识</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name='list' id='vo'}
<tr class="item" data-id="{$vo.id}" data-is-log="{$vo->getData('is_log')}">
<td>{$vo.id}</td>
<td>
<span>{$vo.name}</span>
<div class="layui-btn layui-btn-sm set-name" data-name="{$vo.name}">设置</div>
</td>
<td>
<span>{$vo.key}</span>
<div class="layui-btn layui-btn-sm set-url"
data-url="{$vo.key}">设置</div>
</td>
<td>
<div class="layui-btn-container">
<div class="layui-btn layui-btn-sm is-log">{$vo.is_log}</div>
<div class="layui-btn layui-btn-sm delete">删除</div>
</div>
</td>
</tr>
{/volist}
{if condition="count($list) eq 0" }
<tr>
<td colspan="3">暂无数据</td>
</tr>
{/if}
</tbody>
</table>
<div>
{$list->render()|raw}
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.use(['layer'], function () {
$('.set-name').click(function () {
var item = this;
layer.prompt({
value: $(item).data('name')
}, function (value, index) {
$.post('{:url("AdminPermission/update")}', {
id: $(item).parents('.item').data('id'),
name: value
}, function (result) {
layer.close(index)
$(item).siblings('span').text(value)
})
})
})
$('.set-url').click(function () {
var item = this;
layer.prompt({
value: $(item).data('url')
}, function (value, index) {
$.post('{:url("AdminPermission/update")}', {
id: $(item).parents('.item').data('id'),
url: value
}, function (result) {
layer.close(index)
$(item).siblings('span').text(value)
})
})
})
$('.delete').click(function () {
var item = this;
layer.confirm('确定要删除吗?', function () {
$.get('{:url("AdminPermission/delete")}', {
id: $(item).parents('.item').data('id')
}, function (result) {
if (result.code == 0) {
layer.msg('删除成功');
$(item).parents('.item').remove();
} else {
layer.msg(result.msg)
}
})
})
})
$('.is-log').click(function () {
var item = this;
var isLog = $(item).parents('.item').data('is-log')
if (isLog == 0) {
isLog = 1
} else {
isLog = 0
}
$.post('{:url("AdminPermission/update")}', {
id: $(item).parents('.item').data('id'),
is_log: isLog
}, function () {
if (isLog == 1) {
$(item).text('记录')
} else {
$(item).text('不记录')
}
$(item).parents('.item').data('is-log',isLog)
})
})
})
</script>
</div>
</body>
</html>

View File

@@ -0,0 +1,137 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>分类管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Post-{$Request.param.type|default="1"}';
var currentLeftNavItem = 'category-{$Request.param.type|default="1"}';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_post"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>分类管理</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>新增分类</legend>
<div class="layui-field-box">
<form class="layui-form" action="{:url('save')}" method="post">
<input type="hidden" name="type" value="{$Request.param.type}">
<div class="layui-form-item">
<div class="layui-form-label">分类名称</div>
<div class="layui-input-block">
<input type="text" name="title" value="" required lay-verify="required" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">上级分类</div>
<div class="layui-input-block">
<select name="pid">
<option value="0">--无上级分类--</option>
{volist name='$list_category' id='category'}
<option value="{$category.id}">{:str_repeat('|--',$category.level)}{$category.title}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">副标题/描述</div>
<div class="layui-input-block">
<textarea name="desc" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">附图</div>
<div class="layui-input-block">
<input type="hidden" name="title_img">
<div>
<div class="layui-btn upload-title-img">上传</div>
</div>
<div>
<img src="" class="title-img" style="display: none;max-width: 200px;max-height: 200px;;" alt="">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">模板</div>
<div class="layui-input-block">
<select name="tpl_name">
{volist name=':config("view_type.category")' id='view_type'}
<option value="{$key}">{$view_type}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">状态</div>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示" checked>
<input type="radio" name="status" value="0" title="不显示">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">提交</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
layui.use(['form', 'upload'], function () {
var upload = layui.upload;
upload.render({
elem: '.upload-title-img',
url: '{:url("File/save")}',
data: {
type: 4,
dir: 'article'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="title_img"]').val(result.data.save_name)
$('.title-img').attr('src', result.data.src).show();
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</body>
</html>

View File

@@ -0,0 +1,145 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>分类管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Post-{$Request.param.type|default="1"}';
var currentLeftNavItem = 'category-{$Request.param.type|default="1"}';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_post"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>分类管理</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>编辑分类</legend>
<div class="layui-field-box">
<form class="layui-form" action="{:url('update')}" method="post" lay-filter="*">
<input type="hidden" name="id" value="{$category.id}">
<div class="layui-form-item">
<div class="layui-form-label">分类名称</div>
<div class="layui-input-block">
<input type="text" name="title" value="{$category.title}" required lay-verify="required" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">上级分类</div>
<div class="layui-input-block">
<select name="pid">
<option value="0">--无上级分类--</option>
{volist name='$list_category' id='vo'}
{if $category.id != $vo.id}
<option value="{$vo.id}">{:str_repeat('|--',$vo.level)}{$vo.title}</option>
{/if}
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">副标题/描述</div>
<div class="layui-input-block">
<textarea name="desc" class="layui-textarea">{$category->getData('desc')}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">附图</div>
<div class="layui-input-block">
<input type="hidden" name="title_img" value="{$category->getData('title_img')}">
<div>
<div class="layui-btn upload-title-img">上传</div>
</div>
<div>
<img src="{$category.title_img}" class="title-img" style="max-width: 200px;max-height: 200px;;" alt="">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">模板</div>
<div class="layui-input-block">
<select name="tpl_name">
{volist name=':config("view_type.category")' id='view_type'}
<option value="{$key}">{$view_type}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">状态</div>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示">
<input type="radio" name="status" value="0" title="不显示">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">提交</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
layui.use(['form','upload'],function(){
var form = layui.form;
var upload = layui.upload;
form.val('*',{
pid:'{$category.pid}',
tpl_name:'{$category->getData("tpl_name")}',
status:'{$category->getData("status")}',
})
upload.render({
elem: '.upload-title-img',
url: '{:url("File/save")}',
data: {
type: 4,
dir: 'article'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="title_img"]').val(result.data.save_name)
$('.title-img').attr('src', result.data.src).show();
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</body>
</html>

View File

@@ -0,0 +1,98 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>分类管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Post-{$Request.param.type|default="1"}';
var currentLeftNavItem = 'category-{$Request.param.type|default="1"}';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_post"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>分类管理</cite></a>
</span>
</div>
<div class="main-container">
<div>
<a href="{:url('create',['type'=>$Request.param.type])}" class="layui-btn">新增</a>
</div>
<div>
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th>模板</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr class="item" data-id="{$vo.id}">
<td>{$vo.id}</td>
<td> {:str_repeat('|--',$vo.level)} {$vo.title}</td>
<td>{$vo.tpl_name}</td>
<td>
<div class="layui-btn-container">
<a class="layui-btn layui-btn-sm" href="{:url('index/Category/read',['id'=>$vo.id,'type'=>$Request.param.type])}">查看</a>
<a class="layui-btn layui-btn-sm" href="{:url('edit',['id'=>$vo.id])}">编辑</a>
<div class="layui-btn layui-btn-sm delete">删除</div>
</div>
</td>
</tr>
{/volist}
</tbody>
</table>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
$('.delete').click(function () {
var item = this;
layer.confirm('确定要删除吗?子分类将向上挪动一级', function () {
$.get('{:url("delete")}', {
id: $(item).parents('.item').data('id')
}, function (result) {
layer.msg('删除成功');
$(item).parents('.item').remove();
})
})
})
</script>
</body>
</html>

View File

@@ -0,0 +1,4 @@
<div class="layui-footer">
<!-- 底部固定区域 -->
© www.ulthon.com - <a href="http://www.ulthon.com">奥宏网络科技有限公司</a>
</div>

View File

@@ -0,0 +1,99 @@
<div class="layui-header">
<a class="layui-logo" href="{:url('index/Index/index')}" target="_blank">{:get_system_config('site_name')}</a>
<!-- 头部区域可配合layui已有的水平导航 PC端显示 -->
<ul class="layui-nav layui-layout-left layui-hide-xs pc-nav-container">
<li class="layui-nav-item header-nav-item" data-name="Index" ><a href="{:url('admin/Index/index')}">首页</a></li>
<li class="layui-nav-item header-nav-item" data-name="User" ><a href="{:url('admin/User/index')}">用户管理</a></li>
{if check_permission('file_list') }
<li class="layui-nav-item header-nav-item" data-name="File" ><a href="{:url('admin/File/index')}">文件管理</a></li>
{/if}
<li class="layui-nav-item header-nav-item" data-name="Post-1" ><a href="{:url('admin/Post/index')}">内容管理</a></li>
{if get_system_config('index_tpl_name') == 'easy_blue_' }
<li class="layui-nav-item header-nav-item" data-name="Post-2" ><a href="{:url('admin/Post/index',['type'=>2])}">官网文章管理</a></li>
{/if}
{if get_system_config('index_tpl_name') == 'articles_' }
<li class="layui-nav-item header-nav-item" data-name="Post-3" ><a href="{:url('admin/Post/index',['type'=>3])}">头条资讯管理</a></li>
{/if}
{if get_system_config('index_tpl_name') == 'documents_' }
<li class="layui-nav-item header-nav-item" data-name="Post-4" ><a href="{:url('admin/Post/index',['type'=>4])}">文档管理</a></li>
{/if}
{if get_system_config('index_tpl_name') == 'blog_' }
<li class="layui-nav-item header-nav-item" data-name="Post-blog_post" ><a href="{:url('admin/Post/index',['type'=>'blog_post'])}">博客管理</a></li>
{/if}
<li class="layui-nav-item header-nav-item" data-name="Admin" ><a href="{:url('admin/Admin/index')}">管理员管理</a></li>
<li class="layui-nav-item header-nav-item" data-name="System" ><a href="{:url('admin/System/index')}">系统设置</a></li>
</ul>
<ul class="layui-nav layui-layout-right layui-hide-xs">
<li class="layui-nav-item header-nav-item" data-name="Login">
<a href="javascript:;">
<img src="{$admin.avatar}" class="layui-nav-img">
{$admin.nickname}
</a>
<dl class="layui-nav-child">
<dd><a href="{:url('Admin/edit')}">基本资料</a></dd>
<dd><a href="{:url('Admin/password')}">安全设置</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="{:url('Login/logout')}">退出</a></li>
</ul>
<!-- 手机端显示 -->
<div class="left-bottom-options layui-show-xs-block layui-hide-md layui-icon layui-icon-right">
</div>
<div class="layui-nav layui-layout-right layui-show-xs-block layui-hide-md">
<li class="layui-nav-item">
<a href="javascript:;" class="mobile-nav-current-title">菜单</a>
<dl class="layui-nav-child mobile-nav-container"> <!-- 二级菜单 -->
</dl>
</li>
<li class="layui-nav-item header-nav-item" data-name="Login">
<a href="javascript:;">
<img src="{$admin.avatar}" class="layui-nav-img">
</a>
<dl class="layui-nav-child">
<dd><a href="{:url('Admin/edit')}">基本资料</a></dd>
<dd><a href="{:url('Admin/password')}">安全设置</a></dd>
<dd><a href="{:url('Login/logout')}">退出</a></dd>
</dl>
</li>
</div>
</div>
<div class="tpl" style="display: none;">
<dd class="mobile-nav-item header-nav-item"><a href="{:url('Admin/edit')}">基本资料</a></dd>
</div>
<script>
$(function(){
$('.pc-nav-container').children().each(function(n,e){
var nav = $('.tpl .mobile-nav-item').clone();
nav.data('name',$(e).data('name'))
nav.html($(e).html())
nav.appendTo('.mobile-nav-container')
})
$('.left-bottom-options').click(function(){
layer.open({
type:1,
content:$('.layui-side'),
anim:3,
offset:'l',
area:['140px','100%'],
shadeClose:true,
title:false,
closeBtn:false,
})
})
})
</script>

View File

@@ -0,0 +1,119 @@
<link rel="stylesheet" href="/static/css/reset.css">
<link rel="stylesheet" href="/static/css/pagination.css">
<link rel="stylesheet" href="/static/lib/layui/css/layui.css">
<link rel="stylesheet" href="/static/css/{$Request.cookie.skin_name|default='skin-1'}.css">
<link rel="stylesheet" href="/static/css/common.css">
<script src="/static/lib/jquery/jquery-3.4.1.min.js"></script>
<script src="/static/lib/jquery/jquery.cookie.js"></script>
<script src="/static/lib/layui/layui.js"></script>
<script src="/static/js/common.js"></script>
<script>
//JavaScript代码区域
layui.use(['element', 'layer', 'util'], function () {
var element = layui.element;
var util = layui.util;
var defaultCookieSetting = {
path: '/',
expires: 7,
}
//执行
util.fixbar({
bar1: '&#xe656;'
, click: function (type) {
console.log(type);
if (type === 'bar1') {
var skinName = $.cookie('skin_name')
$('body').removeClass()
if (skinName == 'skin-1') {
$.cookie('skin_name', 'skin-0', defaultCookieSetting)
$('body').addClass('skin-0')
} else {
$.cookie('skin_name', 'skin-1', defaultCookieSetting)
$('body').addClass('skin-1')
}
location.reload()
}
}
});
$('.layui-side').addClass('layui-hide-xs')
});
$(function () {
var skinName = $.cookie('skin-name')
$('body').addClass(skinName)
setTimeout(() => {
if (typeof currentHeaderNavItem != "undefined") {
$('.header-nav-item').each(function (i, e) {
if ($(e).data('name') == currentHeaderNavItem) {
$(e).addClass('layui-this')
}
})
}
if (typeof currentLeftNavItem != "undefined") {
$('.left-nav-item').each(function (i, e) {
if ($(e).data('name') == currentLeftNavItem) {
$(e).addClass('layui-this')
}
})
}
// 表格转卡片
var tableContainer = $('.layui-table').parent()
$('.layui-table').addClass('layui-hide-xs')
var cardList = $('<div class="table-card layui-show-xs-block layui-hide-md"></div>').prependTo(tableContainer)
$('.layui-table tbody tr').each(function () {
var trItem = this;
var boxItem = $('.tpl .table-card-box').clone()
$.each($(trItem).data(),function(index,value){
$(boxItem).data(index,value)
})
$(trItem).find('td').each(function (index, ele) {
var itemItem = $('.tpl .table-card-item').clone()
$(itemItem).find('.item-title').text($('.layui-table thead th').eq(index).text())
if($(ele).children().length == 0){
$(itemItem).find('.item-value').html($(ele).html())
}else{
$(ele).children().clone().appendTo($(itemItem).find('.item-value'))
}
$(itemItem).appendTo(boxItem)
})
$(boxItem).appendTo(cardList)
})
}, 1);
})
</script>
{:get_system_config('site_tongji')}
<div class="tpl" style="display: none;">
<div class="table-card-box item">
</div>
<div class="table-card-item">
<div class="item-title"></div>
<div class="item-value"></div>
</div>
</div>

View File

@@ -0,0 +1,13 @@
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="account">
<a class="" href="{:url('admin/Admin/edit')}">账号信息</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="password">
<a class="" href="{:url('Admin/password')}">密码管理</a>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,19 @@
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="index">
<a class="" href="{:url('admin/Admin/index')}">管理员列表</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="group">
<a class="" href="{:url('admin/AdminGroup/index')}">分组管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="premission">
<a class="" href="{:url('admin/AdminPermission/index')}">权限管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="log">
<a class="" href="{:url('Admin/adminLog')}">操作日志</a>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,15 @@
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">文件管理</a>
<dl class="layui-nav-child">
{volist name=":config('upload_type')" id="vo"}
<dd class="left-nav-item" data-name="index-{$key}"><a href="{:url('File/index',['type'=>$key])}">{$vo}</a></dd>
{/volist}
</dl>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,10 @@
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="index">
<a class="" href="{:url('admin/Index/index')}">系统信息</a>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,16 @@
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="post-{$Request.param.type|default='1'}">
<a class="" href="{:url('Post/index',['type'=>$Request.param.type])}">文章管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="category-{$Request.param.type|default='1'}">
<a class="" href="{:url('Category/index',['type'=>$Request.param.type])}">分类管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="tag-{$Request.param.type|default='1'}">
<a class="" href="{:url('Tag/index',['type'=>$Request.param.type])}">标签管理</a>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,133 @@
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="index">
<a class="" href="{:url('admin/System/index')}">系统管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="others">
<a class="" href="{:url('admin/System/others')}">第三方管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="theme">
<a class="" href="{:url('admin/System/theme')}">主题管理</a>
</li>
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="agreement">
<a class="" href="{:url('admin/System/agreement')}">用户协议管理</a>
</li>
</ul>
{if get_system_config('index_tpl_name') == 'easy_blue_' }
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">简约蓝官网</a>
<dl class="layui-nav-child">
<dd class="left-nav-item" data-name="pc-nav-10">
<a href="{:url('Nav/index',['type'=>10,'show_img'=>1,'show_target'=>1])}">头部导航</a>
</dd>
<dd class="left-nav-item" data-name="easy_blue"><a href="{:url('System/easyBlue')}">一般参数</a></dd>
<dd class="left-nav-item" data-name="pc-nav-6">
<a href="{:url('Nav/index',['type'=>6,'show_img'=>1,'show_target'=>1])}">首页布局块1</a>
</dd>
<dd class="left-nav-item" data-name="pc-nav-7">
<a href="{:url('Nav/index',['type'=>7,'show_img'=>1,'show_target'=>1])}">首页布局块2</a>
</dd>
</dl>
</li>
</ul>
{/if}
{if get_system_config('index_tpl_name') == 'articles_' }
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">资讯头条</a>
<dl class="layui-nav-child">
<dd class="left-nav-item" data-name="pc-nav-10">
<a href="{:url('Nav/index',['type'=>11,'show_target'=>1])}">头部导航</a>
</dd>
<dd class="left-nav-item" data-name="pc-nav-6">
<a href="{:url('Nav/index',['type'=>8,'show_img'=>0,'show_target'=>1])}">更多导航</a>
</dd>
</dl>
</li>
</ul>
{/if}
{if get_system_config('index_tpl_name') == 'documents_' }
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">文档中心</a>
<dl class="layui-nav-child">
<dd class="left-nav-item" data-name="pc-nav-document_header_nav">
<a href="{:url('Nav/index',['type'=>'document_header_nav','show_target'=>1])}">头部导航</a>
</dd>
<dd class="left-nav-item" data-name="pc-nav-6">
<a href="{:url('Nav/index',['type'=>9,'show_img'=>0,'show_target'=>1])}">首页目录</a>
</dd>
</dl>
</li>
</ul>
{/if}
{if get_system_config('index_tpl_name') == 'blog_' }
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">博客主题</a>
<dl class="layui-nav-child">
<dd class="left-nav-item" data-name="pc-nav-blog_header_nav">
<a href="{:url('Nav/index',['type'=>'blog_header_nav','show_target'=>1])}">头部导航</a>
</dd>
<dd class="left-nav-item" data-name="pc-nav-6">
<dd class="left-nav-item" data-name="blog"><a href="{:url('System/blog')}">一般参数</a></dd>
</dd>
</dl>
</li>
</ul>
{/if}
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">PC管理</a>
<dl class="layui-nav-child">
<dd class="left-nav-item" data-name="pc-nav-1" title="默认皮肤没有使用">
<a href="{:url('Nav/index',['type'=>1,'show_target'=>1])}">头部导航 <i class="layui-icon layui-icon-help"></i>
</a>
</dd>
<dd class="left-nav-item" data-name="pc-nav-2"><a
href="{:url('Nav/index',['type'=>2,'show_target'=>1])}">友情链接管理</a></dd>
<dd class="left-nav-item" data-name="pc-nav-3"><a
href="{:url('Nav/index',['type'=>3,'show_img'=>1,'show_target'=>1])}">PC轮播图管理</a></dd>
</dl>
</li>
</ul>
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">小程序</a>
<dl class="layui-nav-child">
<dd class="left-nav-item" data-name="pc-nav-4"><a
href="{:url('Nav/index',['type'=>4,'show_img'=>1,'show_xcx'=>1])}">首页导航管理</a></dd>
<dd class="left-nav-item" data-name="pc-nav-5"><a
href="{:url('Nav/index',['type'=>5,'show_img'=>1,'show_xcx'=>1])}">轮播图管理</a></dd>
</dl>
</li>
</ul>
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed left-nav-item">
<a class="" href="{:url('admin/System/clearCache')}">清空缓存</a>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,10 @@
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed left-nav-item" data-name="index">
<a class="" href="{:url('admin/User/index')}">用户列表列表</a>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>应用管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Index';
var currentLeftNavItem = 'index';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>系统信息</cite></a>
</span>
</div>
<div class="main-container">
</div>
</div>
</div>
{include file="common/_footer"}
</div>
</body>
</html>

182
view/admin/file/index.html Normal file
View File

@@ -0,0 +1,182 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>文件管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'File';
var currentLeftNavItem = 'index-{$Request.param.type|default=1}';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_file"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>文件管理</cite></a>
</span>
</div>
<div class="main-container">
<div>
<form action="" lay-filter="filter" class="layui-form layui-form-pane ">
<input type="hidden" name="type" value="{$Request.param.type|default=1}">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">范围</label>
<div class="layui-input-inline" style="width: 200px;">
<select name="status" lay-verify="">
<option value="">全部</option>
<option value="0">未使用(仅供预览)</option>
<option value="1">已使用</option>
<option value="2">已删除</option>
<option value="3">已清除</option>
</select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn">查询</button>
</div>
</div>
</form>
</div>
<div style="overflow: auto;">
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>预览</th>
<th>文件信息</th>
<th style="min-width: 200px;">状态时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{php}$empty = '<tr>
<td colspan="10">暂无数据</td>
</tr>';{/php}
{volist name="list" id="vo" empty="$empty"}
<tr class="item" data-id="{$vo.id}">
<td>{$vo.id}</td>
<td>
{switch $vo.mime_type}
{case image/png|image/gif|image/jpeg }
<a href="{$vo.src}" target="_blank"><img
onerror="this.src = '/static/images/error.jpg'" src="{$vo.src}"
alt=""></a>
{/case}
{default /}
<a href="{$vo.src}" target="_blank" class="layui-btn layui-btn-sm">打开源文件</a>
{/switch}
</td>
<td>
<p>保存名称:{$vo->getData('save_name')}</p>
<p>文件名:{$vo->getData('file_name')}</p>
<p>文件类型: {$vo.mime_type}</p>
<p>文件用途: <span style="color: red">{$vo.type}</span> </p>
<p>文件大小: {$vo.file_size}</p>
<p>文件指纹: {$vo.file_md5}</p>
</td>
<td>
<p style="color: red">{$vo.status}</p>
<p>上传时间:{$vo.create_time}</p>
<p>使用时间:{$vo.used_time}</p>
<p>删除时间:{$vo.delete_time}</p>
<p>清除时间:{$vo.clear_time}</p>
</td>
<td>
<div class="layui-btn-container">
{if condition="empty($vo->getData('clear_time'))" }
{if condition="!empty($vo->getData('used_time')) &&
empty($vo->getData('delete_time'))" }
<div class="layui-btn layui-btn-sm force-clear">强制清除文件</div>
{else /}
<div class="layui-btn layui-btn-sm clear">清除文件</div>
{/if}
{/if}
{if condition="empty($vo->getData('clear_time'))" }
<a class="layui-btn layui-btn-sm" href="{$vo.src}" target="_blank">下载</a>
{/if}
</div>
</td>
</tr>
{/volist}
</tbody>
</table>
<div>
{$list|raw}
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.use(['layer', 'form'], function () {
var form = layui.form;
form.val('filter', {
status: '{$Request.param.status}'
})
$('.clear').click(function () {
var item = this;
console.log($(item).parents('.item').data('id'));
layer.confirm('确定要清除吗?清除后不能恢复', function () {
$.get('{:url("File/clear")}', {
id: $(item).parents('.item').data('id')
}, function (result) {
if (result.code == 0) {
layer.msg('删除成功');
$(item).parents('td').children().remove()
} else {
layer.msg(result.msg)
}
})
})
})
$('.force-clear').click(function () {
var item = this;
layer.confirm('确定要强制清除吗?该文件有可能正在使用', function () {
$.get('{:url("File/clear")}', {
id: $(item).parents('.item').data('id')
}, function (result) {
if (result.code == 0) {
layer.msg('删除成功');
$(item).parents('td').children().remove()
} else {
layer.msg(result.msg)
}
})
})
})
})
</script>
</div>
</body>
</html>

133
view/admin/index/index.html Normal file
View File

@@ -0,0 +1,133 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>{:get_system_config('site_name')}</title>
{include file="common/_require"}
<style>
.layui-form-pane .layui-form-label{
width: 200px;
}
.layui-form-pane .layui-input-block{
margin-left: 200px;
}
</style>
<script>
var currentHeaderNavItem = 'Index';
var currentLeftNavItem = 'index';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_index"}
<div class="layui-body">
<!-- 内容主体区域 -->
<div style="padding: 15px;">
<div>
<span class="layui-breadcrumb">
<a><cite>系统信息</cite></a>
</span>
</div>
<div class="layui-col-md6">
<form class="layui-form layui-form-pane">
<div class="layui-form-item">
<div class="layui-form-label">网站名称</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{:get_system_config('site_name')}" >
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">系统版本</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="1.0.0" >
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">ThinkPHP版本</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{:app()->version()}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">PHP版本</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{$Think.PHP_VERSION}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">服务器版本
<a href="https://promotion.aliyun.com/ntms/act/qwbk.html?userCode=2fzx2rfo" target="_blank"><i class="layui-icon layui-icon-help"></i></a>
</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{:php_uname('s')}{:php_uname('r')}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">PHP运行方式</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{:php_sapi_name()}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">PHP安装路径</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{$Think.DEFAULT_INCLUDE_PATH}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">Zend版本</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{:Zend_Version()}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">服务器当前时间</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{:date('Y-m-d H:i:s')}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">超时时间</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{:get_cfg_var('max_execution_time')}秒">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">内存限制</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{:get_cfg_var('memory_limit')}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">服务器解释引擎</div>
<div class="layui-input-block">
<input type="text" class="layui-input" readonly value="{$Request.server.SERVER_SOFTWARE}">
</div>
</div>
</form>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
</script>
</body>
</html>

106
view/admin/login/index.html Normal file
View File

@@ -0,0 +1,106 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>登陆</title>
{include file="common/_require"}
<style>
.login{
margin-top: 20vh;
}
.title{
text-align: center;
font-size: 22px;
line-height: 2;
}
</style>
</head>
<body>
<div class="ul-container">
<div class="layui-container">
<div class="layui-row">
<div class="layui-col-md4 layui-col-md-offset4">
<div class="login">
<div class="title">
{:get_system_config('site_name')}
</div>
<div>
<form class="layui-form layui-form-pane" action="">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="account" required lay-verify="required"
placeholder="请输入用户名" value="test(直接登陆即可)" 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="password" required lay-verify="required"
placeholder="请输入密码" value="test(直接登陆即可)" 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="captcha" required lay-verify="required"
placeholder="请输入验证码" autocomplete="off" value="test(直接登陆即可)" class="layui-input">
<img class="captcha" src="/api/Captcha/build" onclick="this.src = '/api/Captcha/build?v='+Math.random()" style="cursor: pointer;width:
100%;" alt="">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="login">登陆</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
layui.use(['form','layer'],function(){
var form = layui.form;
var loadLayer = null;
form.on('submit(login)',function(data){
loadLayer = layer.load(2);
$.post('{:url("admin/Login/auth")}',data.field,function(result){
layer.close(loadLayer);
if(result.code == 0){
layer.msg('登陆成功');
setTimeout(() => {
location.href = '{:url("admin/Index/index")}'
}, 1200);
}else{
$('.captcha').click()
layer.msg(result.msg);
}
})
return false;
})
})
</script>
</body>
</html>

171
view/admin/nav/create.html Normal file
View File

@@ -0,0 +1,171 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>导航</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'pc-nav-{$Request.param.type|default="1"}';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>导航</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>添加</legend>
<div class="layui-field-box">
<form action="{:url('save')}" method="POST" class="layui-form">
<input type="hidden" name="type" value="{$Request.param.type}">
<input type="hidden" name="show_img" value="{$Request.param.show_img|default='0'}">
<input type="hidden" name="show_target" value="{$Request.param.show_target|default='0'}">
<input type="hidden" name="show_xcx" value="{$Request.param.show_xcx|default='0'}">
<div class="layui-form-item">
<div class="layui-form-label">标题</div>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">副标题/描述</div>
<div class="layui-input-block">
<textarea name="desc" class="layui-textarea"></textarea>
</div>
</div>
{if $Request.param.show_img == 1 }
<div class="layui-form-item">
<div class="layui-form-label">图片</div>
<div class="layui-input-block">
<input type="hidden" name="img">
<div>
<div class="layui-btn upload">上传</div>
</div>
<div>
<img class="nav-img" src="" style="display: none;max-width: 200px;max-height: 200px;" alt="">
</div>
</div>
</div>
{/if}
{if $Request.param.show_target == 1 }
<div class="layui-form-item">
<div class="layui-form-label">打开方式</div>
<div class="layui-input-block">
<input type="radio" name="target" value="_self" title="当前页面" checked>
<input type="radio" name="target" value="_blank" title="新页面">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">链接</div>
<div class="layui-input-block">
<input type="text" name="value" value="" class="layui-input">
</div>
</div>
{/if}
{if $Request.param.show_xcx == 1 }
<div class="layui-form-item">
<div class="layui-form-label">小程序打开类型</div>
<div class="layui-input-block">
<input type="radio" name="xcx_type" value="1" title="导航页面">
<input type="radio" name="xcx_type" value="2" title="普通页面">
<input type="radio" name="xcx_type" value="3" title="web-view">
<input type="radio" name="xcx_type" value="4" title="其他小程序">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">小程序页面</div>
<div class="layui-input-block">
<input type="text" name="value" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">小程序appid</div>
<div class="layui-input-block">
<input type="text" name="xcx_appid" value="" class="layui-input">
<div class="layui-form-mid layui-word-aux">小程序打开类型为其他小程序时生效</div>
</div>
</div>
{/if}
<div class="layui-form-item">
<div class="layui-form-label">排序</div>
<div class="layui-input-block">
<input type="number" name="sort" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">状态</div>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示" checked>
<input type="radio" name="status" value="0" title="不显示">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">创建</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
layui.use(['upload','form'], function () {
var upload = layui.upload
var uploadTitleImg = upload.render({
elem: '.upload',
url: '{:url("File/save")}',
data: {
type: 6,
dir: 'nav'
},
accept: 'images',
acceptMime: 'image/jpg,image/png,image/gif',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="img"]').val(result.data.save_name);
$('.nav-img').attr('src', result.data.src).show();
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</body>
</html>

178
view/admin/nav/edit.html Normal file
View File

@@ -0,0 +1,178 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>导航</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'pc-nav-{$nav.type|default="1"}';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>导航</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>编辑</legend>
<div class="layui-field-box">
<form action="{:url('update')}" method="POST" class="layui-form" lay-filter="*">
<input type="hidden" name="show_img" value="{$Request.param.show_img|default='0'}">
<input type="hidden" name="show_target" value="{$Request.param.show_target|default='0'}">
<input type="hidden" name="show_xcx" value="{$Request.param.show_xcx|default='0'}">
<input type="hidden" name="id" value="{$nav.id}">
<div class="layui-form-item">
<div class="layui-form-label">标题</div>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" value="{$nav.title}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">副标题/描述</div>
<div class="layui-input-block">
<textarea name="desc" class="layui-textarea">{$nav.desc}</textarea>
</div>
</div>
{if $Request.param.show_img == 1 }
<div class="layui-form-item">
<div class="layui-form-label">图片</div>
<div class="layui-input-block">
<input type="hidden" name="img" value="{$nav->getData('img')}">
<div>
<div class="layui-btn upload">上传</div>
</div>
<div>
<img class="nav-img" src="{$nav.img}" style="max-width: 200px;max-height: 200px;" alt="">
</div>
</div>
</div>
{/if}
{if $Request.param.show_target == 1 }
<div class="layui-form-item">
<div class="layui-form-label">打开方式</div>
<div class="layui-input-block">
<input type="radio" name="target" value="_self" title="当前页面">
<input type="radio" name="target" value="_blank" title="新页面">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">链接</div>
<div class="layui-input-block">
<input type="text" name="value" value="{$nav.value}"
class="layui-input">
</div>
</div>
{/if}
{if $Request.param.show_xcx == 1 }
<div class="layui-form-item">
<div class="layui-form-label">小程序打开类型</div>
<div class="layui-input-block">
<input type="radio" name="xcx_type" value="1" title="导航页面">
<input type="radio" name="xcx_type" value="2" title="普通页面">
<input type="radio" name="xcx_type" value="3" title="web-view">
<input type="radio" name="xcx_type" value="4" title="其他小程序">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">小程序页面</div>
<div class="layui-input-block">
<input type="text" name="value" value="{$nav.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">小程序appid</div>
<div class="layui-input-block">
<input type="text" name="xcx_appid" value="{$nav.xcx_appid}" class="layui-input">
<div class="layui-form-mid layui-word-aux">小程序打开类型为其他小程序时生效</div>
</div>
</div>
{/if}
<div class="layui-form-item">
<div class="layui-form-label">排序</div>
<div class="layui-input-block">
<input type="number" name="sort" value="{$nav.sort}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">状态</div>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示">
<input type="radio" name="status" value="0" title="不显示">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
layui.use(['upload', 'form'], function () {
var upload = layui.upload
var form = layui.form
form.val('*', {
target: '{$nav->getData("target")}',
xcx_type: '{$nav->getData("xcx_type")}',
status: '{$nav->getData("status")}',
})
var uploadTitleImg = upload.render({
elem: '.upload',
url: '{:url("File/save")}',
data: {
type: 6,
dir: 'nav'
},
accept: 'images',
acceptMime: 'image/jpg,image/png,image/gif',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="img"]').val(result.data.save_name);
$('.nav-img').attr('src', result.data.src).show();
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</body>
</html>

116
view/admin/nav/index.html Normal file
View File

@@ -0,0 +1,116 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>导航管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'pc-nav-{$Request.param.type|default="1"}';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>导航</cite></a>
</span>
</div>
<div class="main-container">
<div>
<a href="{:url('create',['type'=>$type,'show_img'=>$Request.param.show_img,'show_target'=>$Request.param.show_target,'show_xcx'=>$Request.param.show_xcx])}"
class="layui-btn">添加</a>
</div>
<div>
<table class="layui-table" lay-skin="line">
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th>链接</th>
{eq name='$Request.param.show_img' value='1'}
<th>图片</th>
{/eq}
<th>排序</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name='list' id='vo'}
<tr class="item" data-id="{$vo.id}">
<td>{$vo.id}</td>
<td>{$vo.title}</td>
<td>{$vo.value}</td>
{eq name='$Request.param.show_img' value='1'}
<th><img src="{$vo.img}" alt=""></th>
{/eq}
<td>{$vo.sort}</td>
<td>{$vo.status_name}</td>
<td>
<div class="layui-btn-container">
<a class="layui-btn layui-btn-sm"
href="{:url('edit',['id'=>$vo.id,'show_img'=>$Request.param.show_img,'show_target'=>$Request.param.show_target,'show_xcx'=>$Request.param.show_xcx])}">编辑</a>
<div class="layui-btn layui-btn-sm delete">删除</div>
</div>
</td>
</tr>
{/volist}
{if condition="count($list) == 0" }
<tr>
<td colspan="7">暂无数据</td>
</tr>
{/if}
</tbody>
</table>
<div>
{$list|raw}
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
$('.delete').click(function () {
var item = this;
layer.confirm('确定要删除吗?', function () {
$.get('{:url("delete")}', {
id: $(item).parents('.item').data('id')
}, function (result) {
layer.msg('删除成功');
$(item).parents('.item').remove();
})
})
})
</script>
</body>
</html>

466
view/admin/post/create.html Normal file
View File

@@ -0,0 +1,466 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内容管理</title>
{include file="common/_require"}
<link rel="stylesheet" href="/static/lib/quill/quill.snow.css">
<script src="/static/lib/quill/quill.min.js"></script>
<script>
var currentHeaderNavItem = 'Post-{$Request.param.type|default="1"}';
var currentLeftNavItem = 'post-{$Request.param.type|default="1"}';
</script>
<style>
#toolbar select{
display: none !important;
}
</style>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_post"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>内容管理</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<form action="{:url('save')}" method="POST" class="layui-form" lay-filter="*">
<input type="hidden" name="type" value="{$Request.param.type}">
<div class="layui-col-md9 layui-col-lg10">
<fieldset class="layui-elem-field">
<legend>添加</legend>
<div class="layui-field-box">
<div class="layui-form-item">
<div class="layui-form-label">标题</div>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">封面</div>
<div class="layui-input-block">
<input type="hidden" name="poster">
<div>
<div class="layui-btn upload-poster">上传</div>
</div>
<div>
<img src="" class="poster" style="display: none;max-width: 200px;max-height: 200px;;" alt="">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">描述</div>
<div class="layui-input-block">
<textarea name="desc" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">内容</div>
<div class="layui-input-block">
<div id="toolbar">
<!-- Add font size dropdown -->
<select class="ql-size" lay-ignore="lay-ignore">
<option value="small">小号</option>
<!-- Note a missing, thus falsy value, is used to reset to default -->
<option selected>正常</option>
<option value="large">大号</option>
<option value="huge">特大号</option>
</select>
<!-- Add a bold button -->
<button class="ql-bold"></button>
<button class="ql-italic"></button>
<button class="ql-link"></button>
<button class="ql-underline"></button>
<button class="ql-strike"></button>
<button class="ql-blockquote"></button>
<button class="ql-code-block"></button>
<button class="ql-header" value="1" title="大标题"></button>
<button class="ql-header" value="2" title="小标题"></button>
<button class="ql-list" value="ordered" title="有序列表"></button>
<button class="ql-list" value="bullet" title="无序列表"></button>
<!-- Add subscript and superscript buttons -->
<button class="ql-script" value="sub"></button>
<button class="ql-script" value="super"></button>
<button class="ql-indent" value="-1"></button>
<button class="ql-indent" value="+1"></button>
<button class="ql-direction" value="rtl"></button>
<select class="ql-color" lay-ignore="lay-ignore"></select>
<select class="ql-background" lay-ignore="lay-ignore"></select>
<select class="ql-font" lay-ignore="lay-ignore"></select>
<button class="ql-align" value="center"></button>
<button class="ql-align" value=""></button>
<button class="ql-align" value="right"></button>
<button class="ql-align" value="justify"></button>
<button class="ql-image" title="选择图片"></button>
</div>
<div id="editor" style="height: 600px;">
</div>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit" lay-submit lay-filter="save">保存</button>
</div>
</div>
</fieldset>
</div>
<div class="layui-col-md3 layui-col-lg2">
<fieldset class="layui-elem-field sm-form">
<legend>信息</legend>
<div class="layui-field-box">
<div class="layui-form-item">
<div class="layui-form-label">状态</div>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="发布">
<input type="radio" name="status" value="0" title="不发布" checked>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">发表时间</div>
<div class="layui-input-block">
<input type="text" name="publish_time" class="layui-input publish-time">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">分类</div>
<div class="layui-input-block ">
<div class="category-list"></div>
<div class="quick-input-item sm-quick-input-item">
<div class="new-category-option-list">
<select name="" lay-verify="">
<option value="0">选择父分类</option>
</select>
</div>
<div class="">
<input type="text" name="" placeholder="输入新分类名称" id="new-category" class="layui-input">
<div class="layui-btn create-category">新增</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">标签</div>
<div class="layui-input-block ">
<div class="tag-list">
</div>
<div class="quick-input-item sm-quick-input-item" title="输入新标签,使用空格分隔可一次添加多个标签">
<div class="">
<input type="text" name="" placeholder="输入新标签" autocomplete="off" id="new-tags" class="layui-input">
<div class="layui-btn create-tags">新增</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">是否置顶</div>
<div class="layui-input-block">
<input type="radio" name="is_top" value="1" title="置顶">
<input type="radio" name="is_top" value="0" title="不置顶" checked>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">跳转链接</div>
<div class="layui-input-block">
<input type="text" name="jump_to_url" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">跳转链接状态</div>
<div class="layui-input-block">
<input type="radio" name="jump_to_url_status" value="0" title="不显示">
<input type="radio" name="jump_to_url_status" value="1" title="仅显示" checked>
<input type="radio" name="jump_to_url_status" value="2" title="自动跳转">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">排序</div>
<div class="layui-input-block">
<input type="number" name="sort" class="layui-input">
<div class="layui-form-mid layui-word-aux">越大越靠前</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">模板</div>
<div class="layui-input-block">
<select name="tpl_name">
{volist name=':config("view_type.post")' id='tpl_name'}
<option value="{$key}">{$tpl_name}</option>
{/volist}
</select>
</div>
</div>
</div>
</fieldset>
</div>
</form>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<div class="tpl" style="display: none;">
<input type="checkbox" name="tags[]" class="tag-item" value="0" title="高层" lay-skin="primary">
<div class="category-item">
<input type="checkbox" name="categorys[]" value="0" title="PHP" lay-skin="primary">
</div>
<option value="0" class="new-category-item">选择父分类</option>
</div>
</div>
<script>
layui.use(['form', 'upload','laydate'], function () {
var upload = layui.upload;
var form = layui.form;
var laydate = layui.laydate;
laydate.render({
elem:'.publish-time',
type:'datetime'
})
var currentRange = {
index: 0,
lenght: 0
}
var quill = new Quill('#editor', {
theme: 'snow',
modules: {
toolbar: '#toolbar',
},
});
quill.on('selection-change', function (range, oldRange, source) {
if (range) {
if (range.length == 0) {
console.log('User cursor is on', range.index);
} else {
var text = quill.getText(range.index, range.length);
console.log('User has highlighted', text);
}
currentRange = range;
console.log(currentRange);
} else {
console.log('Cursor not in the editor');
}
});
quill.on('text-change', function (delta, oldDelta, source) {
if (source == 'api') {
console.log("An API call triggered this change.");
} else if (source == 'user') {
console.log("A user action triggered this change.");
}
});
upload.render({
elem: '.ql-image',
url: '{:url("File/save")}',
data: {
type: 4,
dir: 'article'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
quill.insertEmbed(++currentRange.index, 'image', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
upload.render({
elem: '.upload-poster',
url: '{:url("File/save")}',
data: {
type: 4,
dir: 'article'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="poster"]').val(result.data.save_name)
$('.poster').attr('src', result.data.src).show();
} else {
layer.msg(result.msg)
}
}
})
var toolbar = quill.getModule('toolbar');
toolbar.addHandler('image', function () {
return false;
});
form.on('submit(save)', function (data) {
var formData = data.field;
formData.content = quill.getContents().ops
formData.content_html = $('#editor .ql-editor').html()
console.log(formData);
$.post('{:url("save")}',formData,function(result){
console.log(result);
layer.msg('添加成功')
setTimeout(() => {
location.href = result.data.jump_to_url
}, 1200);
})
return false;
})
var tagPage = 1;
initTags()
function initTags() {
$('.tag-list').children().remove()
$('#new-tags').val('')
tagPage = 1;
loadTags()
}
function loadTags() {
$.get('{:url("Tag/index")}', {
page: tagPage,
type:'{$Request.param.type}'
}, function (result) {
tagPage++;
result.data.data.forEach(tag => {
var domTag = $('.tpl .tag-item').clone();
domTag.attr('title', tag.title)
domTag.val(tag.id)
domTag.appendTo('.tag-list')
});
form.render('checkbox')
if (result.data.current_page < result.data.last_page) {
loadTags()
}
})
}
$('.create-tags').click(function () {
var value = $.trim($('#new-tags').val());
if(value.length == 0){
return false;
}
$.post('{:url("Tag/save")}', {
tags: value
}, function (result) {
layer.msg('添加成功')
initTags()
})
})
var categoryPage = 1;
initCategory();
function initCategory(){
$('.category-list').children().remove();
$('.new-category-option-list').find('.new-category-item').remove();
$('.new-category-option-list').find('.layui-form-select').remove();
$('#new-category').val('')
categoryPage = 1;
loadCategory()
}
function loadCategory() {
$.get('{:url("Category/index")}',{
type:'{$Request.param.type}'
},function(result){
console.log(result);
result.data.forEach(category => {
var prefix = '';
for (let prefixLevelIndex = 0; prefixLevelIndex < category.level; prefixLevelIndex++) {
prefix += '|--'
}
var domCategory = $('.tpl .category-item').clone();
domCategory.find('input').val(category.id)
domCategory.find('input').attr('title', prefix+category.title)
domCategory.appendTo('.category-list')
var domNewCategory = $('.tpl .new-category-item').clone();
domNewCategory.text(prefix+category.title)
domNewCategory.val(category.id)
domNewCategory.attr('title',category.title)
domNewCategory.appendTo('.new-category-option-list select')
});
form.render()
})
}
$('.create-category').click(function(){
var pid = $('.new-category-option-list').find('select').val();
var title = $('#new-category').val()
$.post('{:url("Category/save")}',{
title:title,
pid:pid
},function(result){
if(result.code == 0){
layer.msg('添加成功')
initCategory();
}else{
layer.msg(result.msg)
}
})
})
})
</script>
</body>
</html>

488
view/admin/post/edit.html Normal file
View File

@@ -0,0 +1,488 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内容管理</title>
{include file="common/_require"}
<link rel="stylesheet" href="/static/lib/quill/quill.snow.css">
<script src="/static/lib/quill/quill.min.js"></script>
<script>
var currentHeaderNavItem = 'Post-{$Request.param.type|default="1"}';
var currentLeftNavItem = 'post-{$Request.param.type|default="1"}';
</script>
<style>
#toolbar select {
display: none !important;
}
</style>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_post"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>内容管理</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<form action="{:url('update')}" method="POST" class="layui-form" lay-filter="*">
<input type="hidden" name="id" value="{$post.id}">
<div class="layui-col-md9 layui-col-lg10">
<fieldset class="layui-elem-field">
<legend>编辑</legend>
<div class="layui-field-box">
<div class="layui-form-item">
<div class="layui-form-label">标题</div>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" value="{$post->title}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">封面</div>
<div class="layui-input-block">
<input type="hidden" name="poster" value="{$post->getData('poster')}">
<div>
<div class="layui-btn upload-poster">上传</div>
</div>
<div>
<img src="{$post->poster}" class="poster" style="max-width: 200px;max-height: 200px;;" alt="">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">描述</div>
<div class="layui-input-block">
<textarea name="desc" class="layui-textarea">{$post->getData('desc')}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">内容</div>
<div class="layui-input-block">
<div id="toolbar">
<!-- Add font size dropdown -->
<select class="ql-size" lay-ignore="lay-ignore">
<option value="small">小号</option>
<!-- Note a missing, thus falsy value, is used to reset to default -->
<option selected>正常</option>
<option value="large">大号</option>
<option value="huge">特大号</option>
</select>
<!-- Add a bold button -->
<button class="ql-bold"></button>
<button class="ql-italic"></button>
<button class="ql-link"></button>
<button class="ql-underline"></button>
<button class="ql-strike"></button>
<button class="ql-blockquote"></button>
<button class="ql-code-block"></button>
<button class="ql-header" value="1" title="大标题"></button>
<button class="ql-header" value="2" title="小标题"></button>
<button class="ql-list" value="ordered" title="有序列表"></button>
<button class="ql-list" value="bullet" title="无序列表"></button>
<!-- Add subscript and superscript buttons -->
<button class="ql-script" value="sub"></button>
<button class="ql-script" value="super"></button>
<button class="ql-indent" value="-1"></button>
<button class="ql-indent" value="+1"></button>
<button class="ql-direction" value="rtl"></button>
<select class="ql-color" lay-ignore="lay-ignore"></select>
<select class="ql-background" lay-ignore="lay-ignore"></select>
<select class="ql-font" lay-ignore="lay-ignore"></select>
<button class="ql-align" value="center"></button>
<button class="ql-align" value=""></button>
<button class="ql-align" value="right"></button>
<button class="ql-align" value="justify"></button>
<button class="ql-image" title="选择图片"></button>
</div>
<div id="editor" style="height: 600px;">
</div>
<div id="content" style="display: none;">{:json_encode($post->content)}</div>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit" lay-submit lay-filter="save">保存</button>
</div>
</div>
</fieldset>
</div>
<div class="layui-col-md3 layui-col-lg2">
<fieldset class="layui-elem-field sm-form">
<legend>信息</legend>
<div class="layui-field-box">
<div class="layui-form-item">
<div class="layui-form-label">状态</div>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="发布">
<input type="radio" name="status" value="0" title="不发布">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">发表时间</div>
<div class="layui-input-block">
<input type="text" name="publish_time" value="{$post->publish_time}"
class="layui-input publish-time">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">分类</div>
<div class="layui-input-block ">
<div class="category-list"></div>
<div class="quick-input-item sm-quick-input-item">
<div class="new-category-option-list">
<select name="" lay-verify="">
<option value="0">选择父分类</option>
</select>
</div>
<div class="">
<input type="text" name="" placeholder="输入新分类名称" id="new-category" class="layui-input">
<div class="layui-btn create-category">新增</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">标签</div>
<div class="layui-input-block ">
<div class="tag-list">
</div>
<div class="quick-input-item sm-quick-input-item" title="输入新标签,使用空格分隔可一次添加多个标签">
<div class="">
<input type="text" name="" placeholder="输入新标签" autocomplete="off" id="new-tags"
class="layui-input">
<div class="layui-btn create-tags">新增</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">是否置顶</div>
<div class="layui-input-block">
<input type="radio" name="is_top" value="1" title="置顶">
<input type="radio" name="is_top" value="0" title="不置顶">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">跳转链接</div>
<div class="layui-input-block">
<input type="text" name="jump_to_url" value="{$post->getData('jump_to_url')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">跳转链接状态</div>
<div class="layui-input-block">
<input type="radio" name="jump_to_url_status" value="0" title="不显示">
<input type="radio" name="jump_to_url_status" value="1" title="仅显示">
<input type="radio" name="jump_to_url_status" value="2" title="自动跳转">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">排序</div>
<div class="layui-input-block">
<input type="number" name="sort" value="{$post->getData('sort')}" class="layui-input">
<div class="layui-form-mid layui-word-aux">越大越靠前</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">模板</div>
<div class="layui-input-block">
<select name="tpl_name">
{volist name=':config("view_type.post")' id='tpl_name'}
<option value="{$key}">{$tpl_name}</option>
{/volist}
</select>
</div>
</div>
</div>
</fieldset>
</div>
</form>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<div class="tpl" style="display: none;">
<input type="checkbox" name="tags[]" class="tag-item" value="0" title="高层" lay-skin="primary">
<div class="category-item">
<input type="checkbox" name="categorys[]" value="0" title="PHP" lay-skin="primary">
</div>
<option value="0" class="new-category-item">选择父分类</option>
</div>
</div>
<script>
var categoryList = JSON.parse('{:json_encode($post->categorys->column("category_id"))}')
var tagList = JSON.parse('{:json_encode($post->tags->column("tag_id"))}')
layui.use(['form', 'upload', 'laydate'], function () {
var upload = layui.upload;
var form = layui.form;
var laydate = layui.laydate;
laydate.render({
elem: '.publish-time',
type: 'datetime'
})
var currentRange = {
index: 0,
lenght: 0
}
var quill = new Quill('#editor', {
theme: 'snow',
modules: {
toolbar: '#toolbar',
},
});
quill.setContents(JSON.parse($('#content').text()))
quill.on('selection-change', function (range, oldRange, source) {
if (range) {
if (range.length == 0) {
console.log('User cursor is on', range.index);
} else {
var text = quill.getText(range.index, range.length);
console.log('User has highlighted', text);
}
currentRange = range;
console.log(currentRange);
} else {
console.log('Cursor not in the editor');
}
});
quill.on('text-change', function (delta, oldDelta, source) {
if (source == 'api') {
console.log("An API call triggered this change.");
} else if (source == 'user') {
console.log("A user action triggered this change.");
}
});
upload.render({
elem: '.ql-image',
url: '{:url("File/save")}',
data: {
type: 4,
dir: 'article'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
quill.insertEmbed(++currentRange.index, 'image', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
upload.render({
elem: '.upload-poster',
url: '{:url("File/save")}',
data: {
type: 4,
dir: 'article'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="poster"]').val(result.data.save_name)
$('.poster').attr('src', result.data.src).show();
} else {
layer.msg(result.msg)
}
}
})
var toolbar = quill.getModule('toolbar');
toolbar.addHandler('image', function () {
return false;
});
form.val('*', {
status: '{$post->getData("status")}',
is_top: '{$post->getData("is_top")}',
jump_to_url_status: '{$post->getData("jump_to_url_status")}',
tpl_name: '{$post->getData("tpl_name")}',
})
form.on('submit(save)', function (data) {
var formData = data.field;
formData.content = quill.getContents().ops
formData.content_html = $('#editor .ql-editor').html()
console.log(formData);
$.post('{:url("update")}', formData, function (result) {
layer.msg('保存成功')
setTimeout(() => {
location.href = result.data.jump_to_url
}, 1200);
})
return false;
})
var tagPage = 1;
initTags()
function initTags() {
$('.tag-list').children().remove()
$('#new-tags').val('')
tagPage = 1;
loadTags()
}
function loadTags() {
$.get('{:url("Tag/index")}', {
page: tagPage,
type:'{$Request.param.type}'
}, function (result) {
tagPage++;
result.data.data.forEach(tag => {
var domTag = $('.tpl .tag-item').clone();
domTag.attr('title', tag.title)
domTag.val(tag.id)
if (tagList.indexOf(tag.id) >= 0) {
domTag.attr('checked', 'checked')
}
domTag.appendTo('.tag-list')
});
form.render('checkbox')
if (result.data.current_page < result.data.last_page) {
loadTags()
}
})
}
$('.create-tags').click(function () {
var value = $.trim($('#new-tags').val());
if (value.length == 0) {
return false;
}
$.post('{:url("Tag/save")}', {
tags: value
}, function (result) {
layer.msg('添加成功')
initTags()
})
})
var categoryPage = 1;
initCategory();
function initCategory() {
$('.category-list').children().remove();
$('.new-category-option-list').find('.new-category-item').remove();
$('.new-category-option-list').find('.layui-form-select').remove();
$('#new-category').val('')
categoryPage = 1;
loadCategory()
}
function loadCategory() {
$.get('{:url("Category/index")}', {
type:'{$Request.param.type}'
},function (result) {
result.data.forEach(category => {
var prefix = '';
for (let prefixLevelIndex = 0; prefixLevelIndex < category.level; prefixLevelIndex++) {
prefix += '|--'
}
var domCategory = $('.tpl .category-item').clone();
domCategory.find('input').val(category.id)
domCategory.find('input').attr('title', prefix + category.title)
if (categoryList.indexOf(category.id) >= 0) {
domCategory.find('input').attr('checked', 'checked')
}
domCategory.appendTo('.category-list')
var domNewCategory = $('.tpl .new-category-item').clone();
domNewCategory.text(prefix + category.title)
domNewCategory.val(category.id)
domNewCategory.attr('title', category.title)
domNewCategory.appendTo('.new-category-option-list select')
});
form.render()
})
}
$('.create-category').click(function () {
var pid = $('.new-category-option-list').find('select').val();
var title = $('#new-category').val()
$.post('{:url("Category/save")}', {
title: title,
pid: pid
}, function (result) {
if (result.code == 0) {
layer.msg('添加成功')
initCategory();
} else {
layer.msg(result.msg)
}
})
})
})
</script>
</body>
</html>

116
view/admin/post/index.html Normal file
View File

@@ -0,0 +1,116 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内容管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Post-{$Request.param.type|default="1"}';
var currentLeftNavItem = 'post-{$Request.param.type|default="1"}';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_post"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>系统信息</cite></a>
</span>
</div>
<div class="main-container">
<div>
<a href="{:url('create',['type'=>$Request.param.type])}" class="layui-btn">添加</a>
</div>
</div>
<div>
<table class="layui-table" lay-skin="line">
<thead>
<tr>
<th>ID</th>
<th >名称</th>
<th>封面</th>
<th >简介</th>
<th>排序</th>
<th>状态</th>
<th>分类</th>
<th>标签</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name='list' id='vo'}
<tr class="item" data-id="{$vo.id}">
<td>{$vo.id}</td>
<td style="max-width: 160px;">{$vo.title}</td>
<td><img src="{$vo.poster}" alt=""></td>
<td style="max-width: 200px;">{$vo.desc_short}</td>
<td>{$vo.sort}</td>
<td>{$vo.status_name}</td>
<td>
{volist name='vo.categorys_list' id='category'}
<p>{:str_repeat('|--',$category.level)}{$category.title}</p>
{/volist}
</td>
<td>
{volist name='vo.tags_list' id='tag'}
<span class="layui-badge layui-bg-blue">{$tag.title}</span>
{/volist}
</td>
<td>
<div class="layui-btn-container">
<a class="layui-btn layui-btn-sm" href="{:url('index/Post/read',['id'=>$vo.id])}">查看</a>
<a class="layui-btn layui-btn-sm" href="{:url('edit',['id'=>$vo.id,'type'=>$Request.param.type])}">编辑</a>
<div class="layui-btn layui-btn-sm delete">删除</div>
</div>
</td>
</tr>
{/volist}
{if condition="count($list) == 0" }
<tr>
<td colspan="7">暂无数据</td>
</tr>
{/if}
</tbody>
</table>
<div>
{$list|raw}
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
$('.delete').click(function () {
var item = this;
layer.confirm('确定要删除吗?', function () {
$.get('{:url("delete")}', {
id: $(item).parents('.item').data('id')
}, function (result) {
layer.msg('删除成功');
$(item).parents('.item').remove();
})
})
})
</script>
</body>
</html>

View File

@@ -0,0 +1,186 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>系统管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'agreement';
</script>
<style>
.layui-form-pane .layui-form-label {
width: 160px
}
.layui-form-pane .layui-input-block {
margin-left: 160px;
}
</style>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>用户协议管理</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md12">
<div id="toolbar">
<!-- Add font size dropdown -->
<select class="ql-size" lay-ignore>
<option value="small">小号</option>
<!-- Note a missing, thus falsy value, is used to reset to default -->
<option selected>正常</option>
<option value="large">大号</option>
<option value="huge">特大号</option>
</select>
<!-- Add a bold button -->
<button class="ql-bold"></button>
<button class="ql-italic"></button>
<button class="ql-link"></button>
<button class="ql-underline"></button>
<button class="ql-strike"></button>
<button class="ql-blockquote"></button>
<button class="ql-code-block"></button>
<button class="ql-header" value="1" title="大标题"></button>
<button class="ql-header" value="2" title="小标题"></button>
<button class="ql-list" value="ordered" title="有序列表"></button>
<button class="ql-list" value="bullet" title="无序列表"></button>
<!-- Add subscript and superscript buttons -->
<button class="ql-script" value="sub"></button>
<button class="ql-script" value="super"></button>
<button class="ql-indent" value="-1"></button>
<button class="ql-indent" value="+1"></button>
<button class="ql-direction" value="rtl"></button>
<select class="ql-color" lay-ignore></select>
<select class="ql-background" lay-ignore></select>
<select class="ql-font" lay-ignore></select>
<button class="ql-align" value="center"></button>
<button class="ql-align" value=""></button>
<button class="ql-align" value="right"></button>
<button class="ql-align" value="justify"></button>
<button class="ql-image" title="选择图片"></button>
</div>
<div id="editor">
</div>
<div class="content" style="display: none;">
{:json_encode(unserialize(get_system_config('user_agreement')))}
</div>
<div>
<div class="layui-btn layui-btn-fluid save-article">保存</div>
</div>
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<link rel="stylesheet" href="/static/lib/quill/quill.snow.css">
<script src="/static/lib/quill/quill.min.js"></script>
<script>
layui.use(['layer', 'upload'], function () {
var upload = layui.upload;
var layer = layui.layer;
var currentRange = {
index: 0,
lenght: 0
}
var quill = new Quill('#editor', {
theme: 'snow',
modules: {
toolbar: '#toolbar',
},
});
quill.setContents(JSON.parse($('.content').text()))
quill.on('selection-change', function (range, oldRange, source) {
if (range) {
if (range.length == 0) {
console.log('User cursor is on', range.index);
} else {
var text = quill.getText(range.index, range.length);
console.log('User has highlighted', text);
}
currentRange = range;
console.log(currentRange);
} else {
console.log('Cursor not in the editor');
}
});
quill.on('text-change', function (delta, oldDelta, source) {
if (source == 'api') {
console.log("An API call triggered this change.");
} else if (source == 'user') {
console.log("A user action triggered this change.");
}
});
var uploadSiteLogo = upload.render({
elem: '.ql-image',
url: '{:url("File/save")}',
data: {
type: 4,
dir: 'article'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
quill.insertEmbed(++currentRange.index, 'image', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
var toolbar = quill.getModule('toolbar');
toolbar.addHandler('image', function () {
return false;
});
$('.save-article').click(function () {
var content = quill.getContents()
console.log(content);
$.post("{:url('admin/System/update')}",{
user_agreement:content.ops
},function(){
layer.msg('保存完成')
})
})
})
</script>
</body>
</html>

122
view/admin/system/blog.html Normal file
View File

@@ -0,0 +1,122 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>系统管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'blog';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>系统设置</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>系统管理</legend>
<div class="layui-field-box">
<form class="layui-form" action="{:url('admin/System/update')}" method="post"
lay-filter="*">
<div class="layui-form-item">
<div class="layui-form-label">欢迎语</div>
<div class="layui-input-block">
<input type="text" name="blog_welcome_tips" value="{:get_system_config('blog_welcome_tips')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页背景大图</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-index-bg">上传</div>
</div>
<div>
<img class="index-bg" style="max-width: 200px;"
src="{:get_source_link(get_system_config('blog_index_bg_img'))}" alt="">
</div>
<input type="hidden" name="blog_index_bg_img" value="{:get_system_config('blog_index_bg_img')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页背景大标题(支持换行)</div>
<div class="layui-input-block">
<textarea name="blog_index_bg_title" class="layui-textarea">{:get_system_config('blog_index_bg_title')}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页背景小标题(支持换行)</div>
<div class="layui-input-block">
<textarea name="blog_index_bg_title_plus" class="layui-textarea">{:get_system_config('blog_index_bg_title_plus')}</textarea>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.use(['layer', 'form','upload'], function () {
var form = layui.form;
var upload = layui.upload;
form.val('*', {
index_tpl_name: '{:get_system_config("index_tpl_name")}'
})
var uploadSiteLogo = upload.render({
elem: '.upload-index-bg',
url: '{:url("File/save")}',
data: {
type: 1,
dir: 'site_logo'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="blog_index_bg_img"]').val(result.data.save_name);
$('.index-bg').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</div>`
</body>
</html>

View File

@@ -0,0 +1,99 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>系统管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'easy_blue';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>系统设置</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>系统管理</legend>
<div class="layui-field-box">
<form class="layui-form" action="{:url('admin/System/update')}" method="post"
lay-filter="*">
<div class="layui-form-item">
<div class="layui-form-label">首页块1标题前半部分</div>
<div class="layui-input-block">
<input type="text" name="easy_index_block_1_title_1" value="{:get_system_config('easy_index_block_1_title_1')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页块1标题后半部分</div>
<div class="layui-input-block">
<input type="text" name="easy_index_block_1_title_2" value="{:get_system_config('easy_index_block_1_title_2')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页块2标题前半部分</div>
<div class="layui-input-block">
<input type="text" name="easy_index_block_2_title_1" value="{:get_system_config('easy_index_block_2_title_1')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页块2标题后半部分</div>
<div class="layui-input-block">
<input type="text" name="easy_index_block_2_title_2" value="{:get_system_config('easy_index_block_2_title_2')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">首页底部查看链接跳转</div>
<div class="layui-input-block">
<input type="text" name="easy_index_bottom_jump_url" value="{:get_system_config('easy_index_bottom_jump_url')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.use(['layer', 'form'], function () {
var form = layui.form;
form.val('*', {
index_tpl_name: '{:get_system_config("index_tpl_name")}'
})
})
</script>
</div>`
</body>
</html>

View File

@@ -0,0 +1,244 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>系统管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'index';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>系统设置</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>系统管理</legend>
<div class="layui-field-box">
<form class="layui-form" action="{:url('admin/System/update')}" method="post">
<div class="layui-form-item">
<div class="layui-form-label">网站名称</div>
<div class="layui-input-block">
<input type="text" name="site_name" value="{:get_system_config('site_name')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">网站描述</div>
<div class="layui-input-block">
<input type="text" name="site_desc" value="{:get_system_config('site_desc')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">网站logo</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-site-logo">上传logo</div>
</div>
<div>
<img class="site-logo" style="max-width: 200px;"
src="{:get_source_link(get_system_config('site_logo'))}" alt="">
</div>
<input type="hidden" name="site_logo" value="{:get_system_config('site_logo')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">备案号</div>
<div class="layui-input-block">
<input type="text" name="site_beian" value="{:get_system_config('site_beian')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">公安备案号</div>
<div class="layui-input-block">
<input type="text" name="site_safe_beian" value="{:get_system_config('site_safe_beian')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">公安备案跳转链接</div>
<div class="layui-input-block">
<input type="text" name="site_safe_beian_url" value="{:get_system_config('site_safe_beian_url')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">版权描述</div>
<div class="layui-input-block">
<input type="text" name="site_copyright" value="{:get_system_config('site_copyright')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">联系电话</div>
<div class="layui-input-block">
<input type="text" name="site_contact_phone" value="{:get_system_config('site_contact_phone')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">工作时间</div>
<div class="layui-input-block">
<input type="text" name="site_worktime" value="{:get_system_config('site_worktime')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">联系邮箱</div>
<div class="layui-input-block">
<input type="text" name="stie_contact_email" value="{:get_system_config('stie_contact_email')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">二维码</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-site-qrcode">上传二维码</div>
</div>
<div>
<img class="site-qrcode" style="max-width: 200px;"
src="{:get_source_link(get_system_config('site_qrcode'))}" alt="">
</div>
<input type="hidden" name="site_qrcode" value="{:get_system_config('site_qrcode')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">站点fovicon</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-site-fovicon">上传fovicon</div>
</div>
<div>
<img class="site-fovicon" style="max-width: 200px;"
src="{:get_source_link(get_system_config('site_favicon'))}" alt="">
</div>
<input type="hidden" name="site_favicon" value="{:get_system_config('site_favicon')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">主域名</div>
<div class="layui-input-block">
<input type="text" name="main_domain" value="{:get_system_config('main_domain')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">资源域名</div>
<div class="layui-input-block">
<input type="text" name="resource_domain" value="{:get_system_config('resource_domain')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item layui-form-text">
<div class="layui-form-label">统计代码</div>
<div class="layui-input-block">
<textarea name="site_tongji" class="layui-textarea">{:get_system_config('site_tongji')}</textarea>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.use(['layer', 'upload'], function () {
var upload = layui.upload;
var uploadSiteLogo = upload.render({
elem: '.upload-site-logo',
url: '{:url("File/save")}',
data: {
type: 1,
dir: 'site_logo'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="site_logo"]').val(result.data.save_name);
$('.site-logo').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
var uploadSiteLogo = upload.render({
elem: '.upload-site-qrcode',
url: '{:url("File/save")}',
data: {
type: 1,
dir: 'site_logo'
},
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="site_qrcode"]').val(result.data.save_name);
$('.site-qrcode').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
var uploadSiteLogo = upload.render({
elem: '.upload-site-fovicon',
url: '{:url("File/save")}',
data: {
type: 1,
dir: 'site_logo'
},
accept: 'images',
acceptMime:'image/x-icon',
exts:'ico',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="site_favicon"]').val(result.data.save_name);
$('.site-fovicon').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</div>`
</body>
</html>

View File

@@ -0,0 +1,257 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>系统管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'others';
</script>
<style>
.layui-form-pane .layui-form-label{
width:160px
}
.layui-form-pane .layui-input-block{
margin-left: 160px;
}
</style>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>第三方管理</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field " >
<legend>阿里OSS存储设置 <a href="https://www.aliyun.com/product/oss?source=5176.11533457&userCode=2fzx2rfo&type=copy" target="_blank"><i class="layui-icon layui-icon-help"></i></a></legend>
<div class="layui-field-box">
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post">
<div class="layui-form-item">
<div class="layui-form-label">AccessKey</div>
<div class="layui-input-block">
<input type="text" name="qiniu_access_key" value="{:get_system_config('qiniu_access_key')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">SecretKey</div>
<div class="layui-input-block">
<input type="text" name="qiniu_secret_key" value="{:get_system_config('qiniu_secret_key')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">空间名称</div>
<div class="layui-input-block">
<input type="text" name="qiniu_bucket" value="{:get_system_config('qiniu_bucket')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">空间域名</div>
<div class="layui-input-block">
<input type="text" name="qiniu_domain" value="{:get_system_config('qiniu_domain')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field " >
<legend>阿里短信配置 <a href="https://www.aliyun.com/acts/alicomcloud/new-discount?userCode=2fzx2rfo" target="_blank"><i class="layui-icon layui-icon-help"></i></a></legend>
<div class="layui-field-box">
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post">
<div class="layui-form-item">
<div class="layui-form-label">AccessKey</div>
<div class="layui-input-block">
<input type="text" name="ali_msn_access_key" value="{:get_system_config('ali_msn_access_key')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">AccessSecret</div>
<div class="layui-input-block">
<input type="text" name="ali_msn_access_secret" value="{:get_system_config('ali_msn_access_secret')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">模板ID</div>
<div class="layui-input-block">
<input type="text" name="ali_msg_tpl_id" value="{:get_system_config('ali_msg_tpl_id')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field " >
<legend>微信第三方平台配置</legend>
<div class="layui-field-box">
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post">
<div class="layui-form-item">
<div class="layui-form-label">AppID</div>
<div class="layui-input-block">
<input type="text" name="wx_open_app_id" value="{:get_system_config('wx_open_app_id')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">AppSecret</div>
<div class="layui-input-block">
<input type="text" name="wx_open_app_secret" value="{:get_system_config('wx_open_app_secret')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">消息校验Token</div>
<div class="layui-input-block">
<input type="text" name="wx_open_app_token" value="{:get_system_config('wx_open_app_token')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">消息加解密Key</div>
<div class="layui-input-block">
<input type="text" name="wx_open_app_aes_key" value="{:get_system_config('wx_open_app_aes_key')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field " >
<legend>微信公众号配置</legend>
<div class="layui-field-box">
<form class="layui-form layui-form-pane">
<div class="layui-form-item">
<div class="layui-form-label">公众号名称</div>
<div class="layui-input-block">
<input type="text" name="wx_app_name" class="layui-input" value="{:get_system_config('wx_app_name')}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">AppID</div>
<div class="layui-input-block">
<input type="text" name="wx_app_id" class="layui-input" value="{:get_system_config('wx_app_id')}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">AppSecret</div>
<div class="layui-input-block">
<input type="text" name="wx_app_secret" class="layui-input" value="{:get_system_config('wx_app_secret')}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">Token</div>
<div class="layui-input-block">
<input type="text" name="wx_app_token" class="layui-input" value="{:get_system_config('wx_app_token')}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-btn-container">
<div class="layui-btn layui-btn-fluid" >保存</div>
</div>
</div>
</form>
</div>
</fieldset>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field " >
<legend>微信支付配置<i class="layui-icon layui-icon-help" onmouseover="layer.tips('支付的公众号必须是上面授权的公众号',this)"></i></legend>
<div class="layui-field-box">
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post">
<div class="layui-form-item">
<div class="layui-form-label">商户ID</div>
<div class="layui-input-block">
<input type="text" name="wx_mch_id" value="{:get_system_config('wx_mch_id')}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">商户秘钥</div>
<div class="layui-input-block">
<input type="text" name="wx_mch_secert" value="{:get_system_config('wx_mch_secert')}" class="layui-input" id="">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">商户key</div>
<div class="layui-input-block">
<input type="text" name="wx_mch_pen_key" readonly value="{:get_system_config('wx_mch_pen_key')}" class="layui-input" id="">
<div class="layui-btn">上传</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">商户cert</div>
<div class="layui-input-block">
<input type="text" name="wx_mch_pem_cert" readonly value="{:get_system_config('wx_mch_pem_cert')}" class="layui-input" id="">
<div class="layui-btn">上传</div>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid">授权</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
layui.use(['layer'],function(){
var layer = layui.layer;
})
</script>
</body>
</html>

View File

@@ -0,0 +1,88 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>系统管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'System';
var currentLeftNavItem = 'theme';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_system"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>系统设置</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>系统管理</legend>
<div class="layui-field-box">
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post" lay-filter="*">
<div class="layui-form-item">
<div class="layui-form-label">选择主题</div>
<div class="layui-input-block">
<div>
<input type="radio" name="index_tpl_name" value="" title="无-''">
</div>
<div>
<input type="radio" name="index_tpl_name" value="easy_blue_" title="官网主题简约蓝-'easy_blue_'">
</div>
<div>
<input type="radio" name="index_tpl_name" value="articles_" title="资讯头条主题-'articles_'">
</div>
<div>
<input type="radio" name="index_tpl_name" value="documents_" title="文档主题-'documents_'">
</div>
<div>
<input type="radio" name="index_tpl_name" value="blog_" title="博客主题-'blog_'">
</div>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" submit lay-submit lay-filter="site-info">保存</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.use(['layer','form'],function(){
var form = layui.form;
form.val('*',{
index_tpl_name:'{:get_system_config("index_tpl_name")}'
})
})
</script>
</div>`
</body>
</html>

133
view/admin/tag/index.html Normal file
View File

@@ -0,0 +1,133 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>标签管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'Post-{$Request.param.type|default="1"}';
var currentLeftNavItem = 'tag-{$Request.param.type|default="1"}';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_post"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>标签管理</cite></a>
</span>
</div>
<div class="main-container">
<div>
<div class="layui-btn create">新增</div>
</div>
<div>
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr class="item" data-id="{$vo.id}">
<td>{$vo.id}</td>
<td> {:str_repeat('|--',$vo.level)} <span class="tag-name">{$vo.title}</span></td>
<td>
<div class="layui-btn-container">
<div class="layui-btn layui-btn-sm edit" data-href="{:url('update',['id'=>$vo.id,'type'=>$Request.param.type])}">编辑</div>
<div class="layui-btn layui-btn-sm delete">删除</div>
</div>
</td>
</tr>
{/volist}
</tbody>
</table>
<div>
{$list|raw}
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
</div>
<script>
$('.delete').click(function () {
var item = this;
layer.confirm('确定要删除吗?', function () {
$.get('{:url("delete")}', {
id: $(item).parents('.item').data('id')
}, function (result) {
layer.msg('删除成功');
$(item).parents('.item').remove();
})
})
})
$('.create').click(function () {
layer.prompt({
title: '请输入标签,空格分隔可添加多个'
}, function (value, index) {
$.post('{:url("save")}', {
tags: value,
type:'{$Request.param.type}'
}, function (result) {
layer.msg('添加成功')
setTimeout(() => {
location.reload()
}, 1200);
})
})
})
$('.edit').click(function(){
var self = this;
layer.prompt({
title:'请输入标签,空格无效',
value:$(self).parents('.item').find('.tag-name').text()
},function(value,index){
$.post($(self).data('href'),{
title:value
},function(result){
layer.msg('修改成功');
$(self).parents('.item').find('.tag-name').text(value)
layer.close(index)
})
})
})
</script>
</body>
</html>

129
view/admin/user/create.html Normal file
View File

@@ -0,0 +1,129 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>基本资料</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'User';
var currentLeftNavItem = 'index';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_user"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>添加用户</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>添加管理员</legend>
<div class="layui-field-box">
<form action="{:url('User/save')}" method="POST" class="layui-form">
<div class="layui-form-item">
<div class="layui-form-label">登录账号</div>
<div class="layui-input-block">
<input type="text" name="account" required lay-verify="required"
value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">昵称</div>
<div class="layui-input-block">
<input type="text" name="nickname" required lay-verify="required"
value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">密码</div>
<div class="layui-input-block">
<input type="password" name="password"
value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">头像</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-admin-avatar">上传</div>
</div>
<div>
<img class="layui-circle admin-avatar" style="width: 80px" src=""
alt="" srcset="">
</div>
<input type="hidden" name="avatar" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">创建</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.config({
base: '/static/lib/layui/lib/cropper/'
}).use(['layer', 'upload', 'croppers','form'], function () {
var upload = layui.upload;
var croppers = layui.croppers;
var uploadSiteLogo = croppers.render({
elem: '.upload-admin-avatar',
url: '{:url("File/save")}',
data: {
type: 3,
dir: 'user_avatar'
},
saveW: 150 //保存宽度
,
saveH: 150,
mark: 1 / 1 //选取比例
,
area: '900px' //弹窗宽度
,
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="avatar"]').val(result.data.save_name);
$('.admin-avatar').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</div>
</body>
</html>

130
view/admin/user/edit.html Normal file
View File

@@ -0,0 +1,130 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>基本资料</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'User';
var currentLeftNavItem = 'index';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_user"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>添加用户</cite></a>
</span>
</div>
<div class="main-container">
<div class="layui-row">
<div class="layui-col-md6">
<fieldset class="layui-elem-field">
<legend>添加管理员</legend>
<div class="layui-field-box">
<form action="{:url('User/update')}" method="POST" class="layui-form">
<input type="hidden" name="id" value="{$user.id}">
<div class="layui-form-item">
<div class="layui-form-label">登录账号</div>
<div class="layui-input-block">
<input type="text" name="account" required lay-verify="required"
value="{$user.account}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">昵称</div>
<div class="layui-input-block">
<input type="text" name="nickname" required lay-verify="required"
value="{$user.nickname}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">密码</div>
<div class="layui-input-block">
<input type="password" name="password" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-label">头像</div>
<div class="layui-input-block">
<div>
<div class="layui-btn upload-admin-avatar">上传</div>
</div>
<div>
<img class="layui-circle admin-avatar" style="width: 80px"
src="{$user.avatar}" alt="{$user.avatar}" srcset="">
</div>
<input type="hidden" name="avatar" value="{$user->getData('avatar')}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" type="submit">修改</button>
</div>
</form>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
layui.config({
base: '/static/lib/layui/lib/cropper/'
}).use(['layer', 'upload', 'croppers', 'form'], function () {
var upload = layui.upload;
var croppers = layui.croppers;
var uploadSiteLogo = croppers.render({
elem: '.upload-admin-avatar',
url: '{:url("File/save")}',
data: {
type: 3,
dir: 'user_avatar'
},
saveW: 200, //保存宽度
saveH: 200,
mark: 1 / 1, //选取比例
area: true, //弹窗宽度
accept: 'images',
done: function (result) {
if (result.code == 0) {
layer.msg('上传成功');
$('input[name="avatar"]').val(result.data.save_name);
$('.admin-avatar').attr('src', result.data.src);
} else {
layer.msg(result.msg)
}
}
})
})
</script>
</div>
</body>
</html>

106
view/admin/user/index.html Normal file
View File

@@ -0,0 +1,106 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>应用管理</title>
{include file="common/_require"}
<script>
var currentHeaderNavItem = 'User';
var currentLeftNavItem = 'index';
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
{include file="common/_header"}
{include file="common/left_user"}
<div class="layui-body">
<div style="padding:15px">
<div class="main-header">
<span class="layui-breadcrumb">
<a>首页</a>
<a><cite>用户列表</cite></a>
</span>
</div>
<div class="main-container">
<div >
<a class="layui-btn" href="{:url('create')}"> 添加用户</a>
</div>
<div style="overflow: auto;">
<table class="layui-table" lay-skin="line">
<thead>
<tr>
<th>ID</th>
<th>帐号</th>
<th>头像</th>
<th>手机号</th>
<th>昵称</th>
<th>注册时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name='list' id='vo'}
<tr class="item" data-id="{$vo.id}">
<td>{$vo.id}</td>
<td>{$vo.account}</td>
<td><img src="{$vo.avatar}" alt=""></td>
<td>{$vo.phone}</td>
<td>{$vo.nickname}</td>
<td>{$vo.create_time}</td>
<td>
<div class="layui-btn-container">
<a class="layui-btn layui-btn-sm" href="{:url('admin/User/edit',['id'=>$vo.id])}">编辑</a>
<div class="layui-btn layui-btn-sm delete">删除</div>
</div>
</td>
</tr>
{/volist}
{if condition="count($list) == 0" }
<tr>
<td colspan="7">暂无数据</td>
</tr>
{/if}
</tbody>
</table>
<div>
{$list|raw}
</div>
</div>
</div>
</div>
</div>
{include file="common/_footer"}
<script>
$('.delete').click(function(){
var item = this;
layer.confirm('确定要删除吗?',function(){
$.get('{:url("delete")}',{
id:$(item).parents('.item').data('id')
},function(result){
layer.msg('删除成功');
$(item).parents('.item').remove();
})
})
})
</script>
</div>
</body>
</html>