linux下优化

This commit is contained in:
toogee 2020-01-09 18:03:33 +08:00
parent 5d482ce45b
commit 46950d1926
34 changed files with 1801 additions and 274 deletions

View File

@ -21,7 +21,7 @@ use app\common\model\User as UserModel;
class Admin extends AdminController class Admin extends AdminController
{ {
//管理员 //管理员
public function adminList() public function index()
{ {
if(Request::isAjax()){ if(Request::isAjax()){
$admins = Db::name('admin') $admins = Db::name('admin')
@ -41,12 +41,12 @@ class Admin extends AdminController
} }
return json($res); return json($res);
} }
return View::fetch('list'); return View::fetch();
} }
//管理员审核 //管理员审核
public function adminCheck() public function check()
{ {
$data = Request::param(); $data = Request::param();
@ -66,7 +66,7 @@ class Admin extends AdminController
} }
//添加管理员 //添加管理员
public function adminForm() public function add()
{ {
if(Request::isAjax()){ if(Request::isAjax()){
$data = Request::param(); $data = Request::param();
@ -84,11 +84,11 @@ class Admin extends AdminController
} }
$auth_group = Db::name('auth_group')->select(); $auth_group = Db::name('auth_group')->select();
View::assign(['auth_group'=>$auth_group]); View::assign(['auth_group'=>$auth_group]);
return View::fetch('adminform'); return View::fetch();
} }
//管理员编辑 //管理员编辑
public function adminEdit() public function edit()
{ {
$admin = AdminModel::find(input('id')); $admin = AdminModel::find(input('id'));
@ -136,7 +136,7 @@ class Admin extends AdminController
$admin = AdminModel::find(Session::get('admin_id')); $admin = AdminModel::find(Session::get('admin_id'));
if(Request::isAjax()){ if(Request::isAjax()){
$data = Request::param(); $data = Request::param();
$result = $admin->update($data); $result = $admin->allowField(['nickname','sex','mobile','email','remarks'])->update($data);
if($result){ if($result){
$res = ['code'=>0,'msg'=>'更新成功']; $res = ['code'=>0,'msg'=>'更新成功'];
} else { } else {

View File

@ -104,7 +104,7 @@ class AuthRule extends AdminController
//权限开关 //权限开关
public function Check() public function check()
{ {
$data = Request::param(); $data = Request::param();

View File

@ -145,6 +145,8 @@ class Set extends AdminController
if($cy->code != 0){ if($cy->code != 0){
$cylevel = $cy->level; $cylevel = $cy->level;
return $cylevel; return $cylevel;
} else {
return 0;
} }
} else { } else {
return 0; return 0;

View File

@ -35,7 +35,7 @@ class Article extends BaseController
switch ($types) { switch ($types) {
//查询文章,10个分1页 //查询文章,10个分1页
case 'all': case 'all':
$artList = ArticleModel::field('id,title,cate_id,user_id')->with([ $artList = ArticleModel::field('id,title,cate_id,user_id,create_time')->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename'); $query->where('delete_time',0)->field('id,catename');
}, },
@ -46,7 +46,7 @@ class Article extends BaseController
break; break;
case 'hot': case 'hot':
$artList = ArticleModel::field('id,title,cate_id,user_id')->with([ $artList = ArticleModel::field('id,title,cate_id,user_id,create_time')->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename'); $query->where('delete_time',0)->field('id,catename');
}, },
@ -57,7 +57,7 @@ class Article extends BaseController
break; break;
case 'top': case 'top':
$artList = ArticleModel::field('id,title,cate_id,user_id')->with([ $artList = ArticleModel::field('id,title,cate_id,user_id,create_time')->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename'); $query->where('delete_time',0)->field('id,catename');
}, },
@ -68,7 +68,7 @@ class Article extends BaseController
break; break;
default: default:
$artList = ArticleModel::field('id,title,cate_id,user_id')->with([ $artList = ArticleModel::field('id,title,cate_id,user_id,create_time')->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename'); $query->where('delete_time',0)->field('id,catename');
}, },

View File

@ -20,7 +20,7 @@ class Index extends BaseController
$sliders = Db::name('slider')->where('slid_status',1)->where('delete_time',0)->where('slid_type',1)->whereTime('slid_over','>=',time())->select(); $sliders = Db::name('slider')->where('slid_status',1)->where('delete_time',0)->where('slid_type',1)->whereTime('slid_over','>=',time())->select();
//置顶文章 //置顶文章
$artTop = Article::field('id,title,cate_id,user_id')->where(['is_top'=>1,'status'=>1,'delete_time'=>0])->with([ $artTop = Article::field('id,title,cate_id,user_id,create_time')->where(['is_top'=>1,'status'=>1,'delete_time'=>0])->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename'); $query->where('delete_time',0)->field('id,catename');
}, },
@ -30,7 +30,7 @@ class Index extends BaseController
])->withCount(['comments'])->order('create_time','desc')->limit(5)->withCache(30)->select(); ])->withCount(['comments'])->order('create_time','desc')->limit(5)->withCache(30)->select();
//首页文章显示15条 //首页文章显示15条
$artList = Article::field('id,title,cate_id,user_id')->with([ $artList = Article::field('id,title,cate_id,user_id,create_time')->with([
'cate' => function($query){ 'cate' => function($query){
$query->where('delete_time',0)->field('id,catename'); $query->where('delete_time',0)->field('id,catename');
}, },

View File

@ -140,9 +140,9 @@ class User extends BaseController
//用户 //用户
$u = Db::name('user')->field('name,nickname,city,sex,sign,user_img,point,create_time')->find($userID ?: Session::get('user_id')); $u = Db::name('user')->field('name,nickname,city,sex,sign,user_img,point,create_time')->find($userID ?: Session::get('user_id'));
//用户发贴 //用户发贴
$arts = Db::name('user')->alias('u')->join('article a','u.id = a.user_id')->field('u.id,a.id,a.title,a.pv,a.is_hot,a.create_time')->where('a.user_id',input('id') ?: Session::get('user_id'))->select(); $arts = Db::name('user')->alias('u')->join('article a','u.id = a.user_id')->field('u.id,a.id,a.title,a.pv,a.is_hot,a.create_time,a.delete_time')->where('a.delete_time',0)->where('a.user_id',input('id') ?: Session::get('user_id'))->select();
//用户回答 //用户回答
$reys = Db::name('comment')->alias('c')->join('article a','c.article_id = a.id')->field('a.id,a.title,c.content,c.create_time')->where('c.user_id',input('id') ?: Session::get('user_id'))->select(); $reys = Db::name('comment')->alias('c')->join('article a','c.article_id = a.id')->field('a.id,a.title,c.content,c.create_time,c.delete_time')->where('a.delete_time',0)->where('c.user_id',input('id') ?: Session::get('user_id'))->select();
View::assign('u',$u); View::assign('u',$u);
View::assign('arts',$arts); View::assign('arts',$arts);

View File

@ -8,11 +8,11 @@ return [
// 服务器地址 // 服务器地址
'hostname' => '127.0.0.1', 'hostname' => '127.0.0.1',
// 数据库名 // 数据库名
'database' => '', 'database' => 'taotest',
// 用户名 // 用户名
'username' => '', 'username' => 'root',
// 密码 // 密码
'password' => '', 'password' => 'root',
// 端口 // 端口
'hostport' => '3306', 'hostport' => '3306',
// 数据库连接参数 // 数据库连接参数

View File

@ -1,207 +0,0 @@
<?php
namespace app\install\controller;
use app\common\controller\BaseController;
use think\facade\View;
use think\facade\Db;
use think\facade\Request;
use think\facade\Session;
class Index extends BaseController
{
/**
* 安装向导
*/
// 检测是否安装过
protected function initialize(){
if(is_file('../install.lock')){
echo "<script>alert('已经成功安装了TaoLer社区系统安装系统已锁定。如需重新安装请删除根目录下的install.lock文件')</script>";
die();
}
}
//安装首页
public function index()
{
Session::set('agre',true);
return View::fetch('agreement');
}
//test
public function test()
{
if(Session::pull('agre')){
Session::set('cre',true);
return View::fetch('test');
} else {
return 'error,请返回安装!';
}
}
//test
public function create(){
if(Session::pull('cre')){
Session::set('suc',true);
return View::fetch('create');
} else {
return 'error,请返回安装!';
}
}
// 安装成功页面
public function complete(){
if(Session::has('suc') != 'true'){
return 'error,请返回安装!';
}
// 判断是否为post
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$data = $_POST;
//var_dump($data);
if (!preg_match("/^[a-zA-Z]{1}([0-9a-zA-Z]|[._]){4,19}$/", $data['admin_user'])) {
die("<script>alert('后台管理用户名不符合规范至少包含4个字符需以字母开头');history.go(-1)</script>");
}
if (!preg_match("/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/", $data['admin_pass'])) {
die("<script>alert('登录密码至少包含6个字符。可使用字母数字和符号。');history.go(-1)</script>");
}
if ($data['admin_pass'] != $data['admin_pass2']) {
die("<script>alert('两次输入的密码不一致');history.go(-1)</script>");
}
$_SESSION['adminusername'] = $data['admin_user'];
// 生成管理员
$username = $data['admin_user'];
$create_time = time();
$salt = substr(md5($create_time),-6);
$pass = md5(substr_replace(md5($data['admin_pass']),$salt,0,6));
if ($data['DB_TYPE'] == 'mysql') {
//数据库
$db_s = <<<php
<?php
return [
// 数据库连接配置信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '{$data['DB_HOST']}',
// 数据库名
'database' => '{$data['DB_NAME']}',
// 用户名
'username' => '{$data['DB_USER']}',
// 密码
'password' => '{$data['DB_PWD']}',
// 端口
'hostport' => '{$data['DB_PORT']}',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '{$data['DB_PREFIX']}',
],
],
];
php;
// 创建数据库链接配置文件
$fp = fopen('../app/install/config/database.php', "r+b");
fputs($fp, $db_s);
fclose($fp);
$db = Db::connect('mysql');
//var_dump($db);
$sql = 'CREATE DATABASE IF NOT EXISTS '.$data['DB_NAME'].' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci';
//$db->execute($sql);
//创建数据表
create_tables($db, $data['DB_PREFIX']);
//管理员
$table_admin = $data['DB_PREFIX'] . "admin";
$table_user = $data['DB_PREFIX'] . "user";
$sql_admin = "UPDATE $table_admin SET username = '{$username}', password = '{$pass}', status=1,create_time = '{$create_time}' WHERE id = 1";
$sql_user = "UPDATE $table_user SET name = '{$username}', password = '{$pass}', status=1, auth=1, create_time = '{$create_time}' WHERE id = 1";
$db->execute($sql_admin);
$db->execute($sql_user);
Db::getConnection()->close();
}
$db_str = <<<php
<?php
return [
// 自定义时间查询规则
'time_query_rule' => [],
// 自动写入时间戳字段
// true为自动识别类型 false关闭
// 字符串则明确指定时间字段类型 支持 int timestamp datetime date
'auto_timestamp' => true,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 数据库连接配置信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '{$data['DB_HOST']}',
// 数据库名
'database' => '{$data['DB_NAME']}',
// 用户名
'username' => '{$data['DB_USER']}',
// 密码
'password' => '{$data['DB_PWD']}',
// 端口
'hostport' => '{$data['DB_PORT']}',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '{$data['DB_PREFIX']}',
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => true,
// 开启字段缓存
'fields_cache' => false,
// 字段缓存路径
'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
],
],
];
php;
// 创建数据库链接配置文件
$fp = fopen('../config/database.php', "r+b");
fwrite($fp, $db_str);
fclose($fp);
file_put_contents('../install.lock', 'lock');
Session::clear();
return View::fetch('complete');
} else {
return '安装失败';
}
}
}

View File

@ -19,7 +19,7 @@ return [
// 缓存前缀 // 缓存前缀
'prefix' => '', 'prefix' => '',
// 缓存有效期 0表示永久缓存 // 缓存有效期 0表示永久缓存
'expire' => 0, 'expire' => 600,
// 缓存标签前缀 // 缓存标签前缀
'tag_prefix' => 'tag:', 'tag_prefix' => 'tag:',
// 序列化机制 例如 ['serialize', 'unserialize'] // 序列化机制 例如 ['serialize', 'unserialize']

63
config/database-1.php Normal file
View File

@ -0,0 +1,63 @@
<?php
use think\facade\Env;
return [
// 默认使用的数据库连接配置
'default' => Env::get('database.driver', 'mysql'),
// 自定义时间查询规则
'time_query_rule' => [],
// 自动写入时间戳字段
// true为自动识别类型 false关闭
// 字符串则明确指定时间字段类型 支持 int timestamp datetime date
'auto_timestamp' => true,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 数据库连接配置信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => Env::get('database.type', 'mysql'),
// 服务器地址
'hostname' => Env::get('database.hostname', '127.0.0.1'),
// 数据库名
'database' => Env::get('database.database', ''),
// 用户名
'username' => Env::get('database.username', 'root'),
// 密码
'password' => Env::get('database.password', ''),
// 端口
'hostport' => Env::get('database.hostport', '3306'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => Env::get('database.charset', 'utf8'),
// 数据库表前缀
'prefix' => Env::get('database.prefix', ''),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => true,
// 开启字段缓存
'fields_cache' => false,
// 字段缓存路径
'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
],
// 更多的数据库配置信息
],
];

View File

@ -16,11 +16,11 @@ return [
// 服务器地址 // 服务器地址
'hostname' => '127.0.0.1', 'hostname' => '127.0.0.1',
// 数据库名 // 数据库名
'database' => '', 'database' => 'taotao',
// 用户名 // 用户名
'username' => '', 'username' => 'root',
// 密码 // 密码
'password' => '', 'password' => 'root',
// 端口 // 端口
'hostport' => '3306', 'hostport' => '3306',
// 数据库连接参数 // 数据库连接参数

View File

@ -7,7 +7,7 @@ return [
// 模板引擎类型使用Think // 模板引擎类型使用Think
'type' => 'Think', 'type' => 'Think',
// 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法 // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法
'auto_rule' => 2, 'auto_rule' => 1,
// 模板目录名 // 模板目录名
'view_dir_name' => 'view', 'view_dir_name' => 'view',
// 模板后缀 // 模板后缀

View File

@ -16,7 +16,7 @@ layui.define(['table', 'form'], function(exports){
//用户管理 //用户管理
table.render({ table.render({
elem: '#LAY-user-manage' elem: '#LAY-user-manage'
,url: '/admin/user/list' //模拟接口 ,url: '/admin/User/list' //模拟接口
,cols: [[ ,cols: [[
{type: 'checkbox', fixed: 'left'} {type: 'checkbox', fixed: 'left'}
,{field: 'id', width: 100, title: 'ID', sort: true} ,{field: 'id', width: 100, title: 'ID', sort: true}
@ -50,7 +50,7 @@ layui.define(['table', 'form'], function(exports){
//obj.del(); //obj.del();
$.ajax({ $.ajax({
type:'post', type:'post',
url:"/admin/user/delete", url:"/admin/User/delete",
data:{id:data.id}, data:{id:data.id},
dataType:'json', dataType:'json',
success:function(data){ success:function(data){
@ -81,7 +81,7 @@ layui.define(['table', 'form'], function(exports){
layer.open({ layer.open({
type: 2 type: 2
,title: '编辑用户' ,title: '编辑用户'
,content: '/admin/user/useredit?id='+ data.id ,content: '/admin/User/userEdit?id='+ data.id
,maxmin: true ,maxmin: true
,area: ['500px', '450px'] ,area: ['500px', '450px']
,btn: ['确定', '取消'] ,btn: ['确定', '取消']
@ -98,7 +98,7 @@ layui.define(['table', 'form'], function(exports){
//提交 Ajax 成功后,静态更新表格中的数据 //提交 Ajax 成功后,静态更新表格中的数据
$.ajax({ $.ajax({
type:"post", type:"post",
url:"/admin/user/useredit", url:"/admin/User/userEdit",
data:{"id":field.id,"name":field.username,"phone":field.phone,"email":field.email,"user_img":field.avatar,"sex":field.sex}, data:{"id":field.id,"name":field.username,"phone":field.phone,"email":field.email,"user_img":field.avatar,"sex":field.sex},
daType:"json", daType:"json",
success:function (res){ success:function (res){
@ -136,7 +136,7 @@ layui.define(['table', 'form'], function(exports){
//管理员管理 //管理员管理
table.render({ table.render({
elem: '#LAY-user-back-manage' elem: '#LAY-user-back-manage'
,url: '/admin/admin/adminList' //模拟接口 ,url: '/admin/Admin/index' //模拟接口
,cols: [[ ,cols: [[
{type: 'checkbox', fixed: 'left'} {type: 'checkbox', fixed: 'left'}
,{field: 'id', width: 80, title: 'ID', sort: true} ,{field: 'id', width: 80, title: 'ID', sort: true}
@ -166,7 +166,7 @@ layui.define(['table', 'form'], function(exports){
//obj.del(); //obj.del();
$.ajax({ $.ajax({
type:'post', type:'post',
url:"/admin/admin/delete", url:"/admin/Admin/delete",
data:{id:data.id}, data:{id:data.id},
dataType:'json', dataType:'json',
success:function(data){ success:function(data){
@ -197,7 +197,7 @@ layui.define(['table', 'form'], function(exports){
layer.open({ layer.open({
type: 2 type: 2
,title: '编辑管理员' ,title: '编辑管理员'
,content: '/admin/admin/adminedit?id='+ data.id ,content: '/admin/Admin/edit?id='+ data.id
,area: ['420px', '420px'] ,area: ['420px', '420px']
,btn: ['确定', '取消'] ,btn: ['确定', '取消']
,yes: function(index, layero){ ,yes: function(index, layero){
@ -212,7 +212,7 @@ layui.define(['table', 'form'], function(exports){
//提交 Ajax 成功后,静态更新表格中的数据 //提交 Ajax 成功后,静态更新表格中的数据
$.ajax({ $.ajax({
type:"post", type:"post",
url:"/admin/admin/adminedit", url:"/admin/Admin/edit",
data:{"id":field.id,"password":field.password,"mobile":field.mobile,"email":field.email,"auth_group_id":field.auth_group_id}, data:{"id":field.id,"password":field.password,"mobile":field.mobile,"email":field.email,"auth_group_id":field.auth_group_id},
daType:"json", daType:"json",
success:function (res){ success:function (res){
@ -251,7 +251,7 @@ layui.define(['table', 'form'], function(exports){
//角色管理 //角色管理
table.render({ table.render({
elem: '#LAY-user-back-role' elem: '#LAY-user-back-role'
,url: '/admin/authgroup/list' //模拟接口 ,url: '/admin/AuthGroup/list' //模拟接口
,cols: [[ ,cols: [[
{type: 'checkbox', fixed: 'left'} {type: 'checkbox', fixed: 'left'}
,{field: 'id', width: 80, title: 'ID', sort: true} ,{field: 'id', width: 80, title: 'ID', sort: true}
@ -278,7 +278,7 @@ layui.define(['table', 'form'], function(exports){
layer.open({ layer.open({
type: 2 type: 2
,title: '编辑角色' ,title: '编辑角色'
,content: '/admin/authgroup/roleedit?id='+ data.id ,content: '/admin/AuthGroup/roleEdit?id='+ data.id
,area: ['500px', '480px'] ,area: ['500px', '480px']
,btn: ['确定', '取消'] ,btn: ['确定', '取消']
,yes: function(index, layero){ ,yes: function(index, layero){
@ -310,7 +310,7 @@ layui.define(['table', 'form'], function(exports){
//提交 Ajax 成功后,静态更新表格中的数据 //提交 Ajax 成功后,静态更新表格中的数据
$.ajax({ $.ajax({
type:"post", type:"post",
url:"/admin/authgroup/roleedit", url:"/admin/AuthGroup/roleEdit",
data:{"id":field.id,"rules":rules,"title":field.title,"descr":field.descr}, data:{"id":field.id,"rules":rules,"title":field.title,"descr":field.descr},
daType:"json", daType:"json",
success:function (res){ success:function (res){
@ -347,7 +347,7 @@ layui.define(['table', 'form'], function(exports){
//权限管理 //权限管理
table.render({ table.render({
elem: '#LAY-user-auth-rule' elem: '#LAY-user-auth-rule'
,url: '/admin/authrule/index' //权限接口 ,url: '/admin/AuthRule/index' //权限接口
,cols: [[ ,cols: [[
{type: 'checkbox', fixed: 'left'} {type: 'checkbox', fixed: 'left'}
,{field: 'id', width: 50, title: 'ID'} ,{field: 'id', width: 50, title: 'ID'}
@ -377,7 +377,7 @@ layui.define(['table', 'form'], function(exports){
//console.log(data.id); //console.log(data.id);
$.ajax({ $.ajax({
type:'post', type:'post',
url:"/admin/authrule/delete", url:"/admin/AuthRule/delete",
data:{id:data.id}, data:{id:data.id},
dataType:'json', dataType:'json',
success:function(data){ success:function(data){
@ -407,7 +407,7 @@ layui.define(['table', 'form'], function(exports){
layer.open({ layer.open({
type: 2 type: 2
,title: '编辑权限' ,title: '编辑权限'
,content: '/admin/authrule/edit?id='+ data.id ,content: '/admin/AuthRule/edit?id='+ data.id
,area: ['420px', '420px'] ,area: ['420px', '420px']
,btn: ['确定', '取消'] ,btn: ['确定', '取消']
,yes: function(index, layero){ ,yes: function(index, layero){
@ -428,7 +428,7 @@ layui.define(['table', 'form'], function(exports){
//提交 Ajax 成功后,静态更新表格中的数据 //提交 Ajax 成功后,静态更新表格中的数据
$.ajax({ $.ajax({
type:"post", type:"post",
url:"/admin/authrule/edit", url:"/admin/AuthRule/edit",
data:{"id":field.id,"pid":field.pid,"title":field.title,"name":field.name,"icon":field.icon,"sort":field.sort,"ishidden":field.ishidden}, data:{"id":field.id,"pid":field.pid,"title":field.title,"name":field.name,"icon":field.icon,"sort":field.sort,"ishidden":field.ishidden},
daType:"json", daType:"json",
success:function (res){ success:function (res){

View File

@ -79,7 +79,7 @@ layui.define('fly', function(exports){
layer.close(index); layer.close(index);
$.ajax({ $.ajax({
type:'get', type:'get',
url:"/index/article/delete/", url:"/index/article/delete",
data:{id: div.data('id')}, data:{id: div.data('id')},
dataType:'json', dataType:'json',
success:function(data){ success:function(data){
@ -88,7 +88,7 @@ layui.define('fly', function(exports){
icon:6, icon:6,
time:2000 time:2000
},function(){ },function(){
location.href = '/index/index/index/'; location.href = '/';
}); });
} else { } else {
layer.open({ layer.open({
@ -155,7 +155,7 @@ layui.define('fly', function(exports){
gather.jiedaActive = { gather.jiedaActive = {
zan: function(li){ //赞 zan: function(li){ //赞
var othis = $(this), ok = othis.hasClass('zanok'); var othis = $(this), ok = othis.hasClass('zanok');
fly.json('/index/comment/jiedaZan/', { fly.json('/index/comment/jiedaZan', {
ok: ok ok: ok
,id: li.data('id') ,id: li.data('id')
}, function(res){ }, function(res){
@ -179,7 +179,7 @@ layui.define('fly', function(exports){
var othis = $(this); var othis = $(this);
layer.confirm('是否采纳该回答为最佳答案?', function(index){ layer.confirm('是否采纳该回答为最佳答案?', function(index){
layer.close(index); layer.close(index);
fly.json('/index/comment/jiedaCai/', { fly.json('/index/comment/jiedaCai', {
id: li.data('id') id: li.data('id')
}, function(res){ }, function(res){
if(res.status === 0){ if(res.status === 0){
@ -194,7 +194,7 @@ layui.define('fly', function(exports){
}); });
} }
,edit: function(li){ //编辑 ,edit: function(li){ //编辑
fly.json('/index/comment/getDa/', { fly.json('/index/comment/getDa', {
id: li.data('id') id: li.data('id')
}, function(res){ }, function(res){
var data = res.rows; var data = res.rows;

View File

@ -14,8 +14,8 @@ Route::group(function () {
Route::get('jie/:id', 'article/detail'); Route::get('jie/:id', 'article/detail');
Route::get('column/<ename?>/<type?>/<page?>','article/cate'); Route::get('column/<ename?>/<type?>/<page?>','article/cate');
Route::rule('add','article/add'); Route::rule('add','article/add');
Route::rule('del/:id','article/delete');
Route::rule('edit/[:id]','article/edit'); Route::rule('edit/[:id]','article/edit');
//Route::rule('del/:id','article/delete');
}); });
Route::group(function () { Route::group(function () {
Route::rule('u/:id', 'user/home'); Route::rule('u/:id', 'user/home');

View File

@ -728,12 +728,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/top-think/framework.git", "url": "https://github.com/top-think/framework.git",
"reference": "dbdf7e45e6c9a598017e15d3116c1cf96a87c0ae" "reference": "d4f1ba2b77a88fd55f392b73a7a183844cdc081b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/top-think/framework/zipball/dbdf7e45e6c9a598017e15d3116c1cf96a87c0ae", "url": "https://api.github.com/repos/top-think/framework/zipball/d4f1ba2b77a88fd55f392b73a7a183844cdc081b",
"reference": "dbdf7e45e6c9a598017e15d3116c1cf96a87c0ae", "reference": "d4f1ba2b77a88fd55f392b73a7a183844cdc081b",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -760,7 +760,7 @@
"mockery/mockery": "^1.2", "mockery/mockery": "^1.2",
"phpunit/phpunit": "^7.0" "phpunit/phpunit": "^7.0"
}, },
"time": "2019-12-28T14:12:22+00:00", "time": "2020-01-07T08:17:04+00:00",
"type": "library", "type": "library",
"installation-source": "dist", "installation-source": "dist",
"autoload": { "autoload": {

2
vendor/services.php vendored
View File

@ -1,5 +1,5 @@
<?php <?php
// This file is automatically generated at:2020-01-07 14:28:37 // This file is automatically generated at:2020-01-07 16:53:20
declare (strict_types = 1); declare (strict_types = 1);
return array ( return array (
0 => 'think\\captcha\\CaptchaService', 0 => 'think\\captcha\\CaptchaService',

View File

@ -327,12 +327,14 @@ class Request
} }
$request->header = array_change_key_case($header); $request->header = array_change_key_case($header);
$request->server = $_SERVER;
$request->env = $app->env;
$inputData = $request->getInputData($request->input);
$request->server = $_SERVER;
$request->env = $app->env;
$request->get = $_GET; $request->get = $_GET;
$request->post = $_POST ?: $request->getInputData($request->input); $request->post = $_POST ?: $inputData;
$request->put = $request->getInputData($request->input); $request->put = $inputData;
$request->request = $_REQUEST; $request->request = $_REQUEST;
$request->cookie = $_COOKIE; $request->cookie = $_COOKIE;
$request->file = $_FILES ?? []; $request->file = $_FILES ?? [];
@ -982,11 +984,12 @@ class Request
protected function getInputData($content): array protected function getInputData($content): array
{ {
if (false !== strpos($this->contentType(), 'json')) { $contentType = $this->contentType();
return (array) json_decode($content, true); if ($contentType == 'application/x-www-form-urlencoded') {
} elseif (strpos($content, '=')) {
parse_str($content, $data); parse_str($content, $data);
return $data; return $data;
} elseif (false !== strpos($contentType, 'json')) {
return (array) json_decode($content, true);
} }
return []; return [];
@ -2051,15 +2054,18 @@ class Request
/** /**
* 设置php://input数据 * 设置php://input数据
* @access public * @access public
* @param string $input RAW数据 * @param string $input RAW数据
* @return $this * @return $this
*/ */
public function withInput(string $input) public function withInput(string $input)
{ {
$this->input = $input; $this->input = $input;
if (!empty($input)) { if (!empty($input)) {
$this->post = $this->getInputData($input); $inputData = $this->getInputData($input);
$this->put = $this->getInputData($input); if (!empty($inputData)) {
$this->post = $inputData;
$this->put = $inputData;
}
} }
return $this; return $this;
} }

57
view/admin/admin/add.html Normal file
View File

@ -0,0 +1,57 @@
{extend name="public:base" /}
{block name="body"}
<div class="layui-form" lay-filter="layuiadmin-form-admin" id="layuiadmin-form-admin" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label">登录名</label>
<div class="layui-input-inline">
<input type="text" name="username" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机</label>
<div class="layui-input-inline">
<input type="text" name="mobile" lay-verify="phone" placeholder="请输入号码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-inline">
<input type="text" name="email" lay-verify="email" placeholder="请输入邮箱" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">角色</label>
<div class="layui-input-block">
<select name="auth_group_id" lay-verify="required">
{volist name="auth_group" id="vo"}
<option value="{$vo.id}">{$vo.title}</option>
{/volist}
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">审核状态</label>
<div class="layui-input-inline">
<input type="checkbox" lay-filter="switch" name="status" lay-skin="switch" lay-text="通过|待审核">
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="LAY-user-back-submit" id="LAY-user-back-submit" value="确认">
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form'], function(){
var $ = layui.$
,form = layui.form ;
})
</script>
{/block}

View File

@ -0,0 +1,61 @@
{extend name="public:base" /}
{block name="body"}
<div class="layui-form" lay-filter="layuiadmin-form-admin" id="layuiadmin-form-admin" style="padding: 20px 30px 0 0;">
<div class="layui-form-item layui-hide">
<input type="text" name="id" class="layui-input" value="{$admin.id}">
</div>
<div class="layui-form-item">
<label class="layui-form-label">登录名</label>
<div class="layui-input-inline">
<input type="text" name="username" disabled lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input layui-disabled" value="{$admin.username}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<input type="text" name="password" lay-verify="password" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机</label>
<div class="layui-input-inline">
<input type="text" name="mobile" lay-verify="phone" placeholder="请输入号码" autocomplete="off" class="layui-input" value="{$admin.mobile}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-inline">
<input type="text" name="email" lay-verify="email" placeholder="请输入邮箱" autocomplete="off" class="layui-input" value="{$admin.email}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">角色</label>
<div class="layui-input-block">
<select name="auth_group_id" lay-verify="required">
{volist name="auth_group" id="vo"}
<option {if condition="$admin.auth_group_id eq $vo.id"} selected {/if} value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="LAY-user-back-submit" id="LAY-user-back-submit" value="确认">
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form'], function(){
var $ = layui.$
,form = layui.form ;
})
</script>
{/block}

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

@ -0,0 +1,226 @@
{extend name="public:base" /}
{block name="body"}
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">登录名</label>
<div class="layui-input-block">
<input type="text" name="loginname" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">手机</label>
<div class="layui-input-block">
<input type="text" name="telphone" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-block">
<input type="text" name="email" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">角色</label>
<div class="layui-input-block">
<select name="role">
<option value="0">管理员</option>
<option value="1">超级管理员</option>
<option value="2">纠错员</option>
<option value="3">采购员</option>
<option value="4">推销员</option>
<option value="5">运营人员</option>
<option value="6">编辑</option>
</select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-admin" lay-submit lay-filter="LAY-user-back-search">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
</div>
</div>
</div>
<div class="layui-card-body">
<div style="padding-bottom: 10px;">
<button class="layui-btn layuiadmin-btn-admin" data-type="batchdel">删除</button>
<button class="layui-btn layuiadmin-btn-admin" data-type="add">添加</button>
</div>
<table id="LAY-user-back-manage" lay-filter="LAY-user-back-manage"></table>
<!-- <script type="text/html" id="buttonTpl">
{{# if(d.check == 1){ }}
<button class="layui-btn layui-btn-xs">已审核</button>
{{# } else { }}
<button class="layui-btn layui-btn-primary layui-btn-xs">未审核</button>
{{# } }}
</script>
-->
<script type="text/html" id="buttonTpl">
{{# if(d.role == '1'){ }}
<input type="checkbox" name="admincheck" lay-skin="switch" disabled lay-text="已审核|未审核" value="1" checked id="{{d.id}}">
{{# } else { }}
{if condition="checkRuleButton('admin/admin/check')"}<input type="checkbox" name="admincheck" lay-skin="switch" lay-filter="admincheck" lay-text="已审核|未审核" {{# if(d.check == 1){ }} checked {{# } }} id="{{d.id}}" >{else}<button class="layui-btn layui-btn-xs layui-btn-radius layui-btn-disabled">无审核权</button>{/if}
{{# } }}
</script>
<script type="text/html" id="table-useradmin-admin">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
{{# if(d.role == '1'){ }}
<a class="layui-btn layui-btn-disabled layui-btn-xs"><i class="layui-icon layui-icon-delete"></i>删除</a>
{{# } else { }}
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
{{# } }}
</script>
</div>
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'useradmin', 'table'], function(){
var $ = layui.$
,form = layui.form
,table = layui.table;
//监听搜索
form.on('submit(LAY-user-back-search)', function(data){
var field = data.field;
//执行重载
table.reload('LAY-user-back-manage', {
where: field
});
});
//监听管理员审核
form.on('switch(admincheck)', function(data){
var data= data.elem;
//console.log(data);
if(data.checked == true){
data.value = 1;
}else{
data.value = 0;
}
//执行管理员审核
$.ajax({
type:'post',
url:"{:url('admin/admin/check')}",
data:{id:data.id,status:data.value,},
dataType:'json',
success:function(res){
if(res.code == 0){
layer.msg(res.msg,{
icon:res.icon,
time:2000
}
//,function(){location.reload();}
);
} else {
layer.open({
title:'审核失败',
content:res.msg,
icon:5,
adim:6
})
}
}
});
return false;
});
//事件
var active = {
batchdel: function(){
var checkStatus = table.checkStatus('LAY-user-back-manage')
,checkData = checkStatus.data; //得到选中的数据
if(checkData.length === 0){
return layer.msg('请选择数据');
}
layer.prompt({
formType: 1
,title: '敏感操作,请验证口令'
}, function(value, index){
layer.close(index);
layer.confirm('确定删除吗?', function(index) {
//执行 Ajax 后重载
/*
admin.req({
url: 'xxx'
//,……
});
*/
table.reload('LAY-user-back-manage');
layer.msg('已删除');
});
});
}
,add: function(){
layer.open({
type: 2
,title: '添加管理员'
,content: 'add.html'
,area: ['420px', '420px']
,btn: ['确定', '取消']
,yes: function(index, layero){
var iframeWindow = window['layui-layer-iframe'+ index]
,submitID = 'LAY-user-back-submit'
,submit = layero.find('iframe').contents().find('#'+ submitID);
//监听提交
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
var field = data.field; //获取提交的字段
//提交 Ajax 成功后,静态更新表格中的数据
$.ajax({
type:"post",
url:"{:url('admin/admin/add')}",
data:{"username":field.username,"password":field.username,"mobile":field.mobile,"email":field.email,"auth_group_id":field.auth_group_id,"status":field.status},
daType:"json",
success:function (data){
if (data.code == 1) {
layer.msg(data.msg,{
icon:6,
time:2000
});
} else {
layer.open({
tiele:'添加失败',
content:data.msg,
icon:5,
anim:6
});
}
}
});
table.reload('LAY-user-back-manage'); //数据刷新
layer.close(index); //关闭弹层
});
submit.trigger('click');
}
});
}
}
$('.layui-btn.layuiadmin-btn-admin').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>
{/block}

View File

@ -0,0 +1,119 @@
<link rel="stylesheet" href="G:/www/Taole/public/static/admin/layui/css/layui.css" media="all">
<body>
<script src="G:/www/Taole/public/static/admin/layui/layui.js"></script>
<script type="text/javascript">
//需要引入的模块
layui.use(['table','form','jquery'], function() {
var form = layui.form,
table = layui.table,
$=layui.jquery;
form.on('checkbox()', function(data){
var pc = data.elem.classList //获取选中的checkbox的class属性
/* checkbox处于选中状态 */
if(data.elem.checked==true){//并且当前checkbox为选中状态
/*如果是parent节点 */
if(pc=="parent"){ //如果当前选中的checkbox class里面有parent
//获取当前checkbox的兄弟节点的孩子们是 input[type='checkbox']的元素
var c =$(data.elem).siblings().children("input[type='checkbox']");
c.each(function(){//遍历他们的孩子们
var e = $(this); //添加layui的选中的样式 控制台看元素
e.next().addClass("layui-form-checked");
});
}else{/*如果不是parent*/
//选中子级选中父级
$(data.elem).parent().prev().addClass("layui-form-checked");
}
}else{ /*checkbox处于 false状态*/
//父级没有选中 取消所有的子级选中
if(pc=="parent"){/*判断当前取消的是父级*/
var c =$(data.elem).siblings().children("input[type='checkbox']");
c.each(function(){
var e = $(this);
e.next().removeClass("layui-form-checked")
});
}else{/*不是父级*/
var c = $(data.elem).siblings("div");
var count =0;
c.each(function(){//遍历他们的孩子们
//如果有一个==3那么久说明是处于选中状态
var is = $(this).get(0).classList;
if(is.length==3){
count++;
}
});
//如果大于0说明还有子级处于选中状态
if(count>0){
}else{/*如果不大于那么就说明没有子级处于选中状态那么就移除父级的选中状态*/
$(data.elem).parent().prev().removeClass("layui-form-checked");
}
}
}
});
});
</script>
<div class="layui-form" lay-filter="layuiadmin-form-role" id="layuiadmin-form-role" style="padding: 20px 30px 0 0;">
<div class="layui-form-item" id="test">
<label class="layui-form-label">权限范围</label>
<ul class="layui-input-block" style="margin-top: 10px ;">
<li>
<input type="checkbox" class="parent" lay-skin="primary" title="人事模块">
<ul>
<input type="checkbox" name="limits[]" lay-skin="primary" title="社区系统">
<input type="checkbox" name="limits[]" lay-skin="primary" title="用户" >
<input type="checkbox" name="limits[]" lay-skin="primary" title="角色">
<input type="checkbox" name="limits[]" lay-skin="primary" title="评论审核">
</ul>
</li>
</ul>
<ul class="layui-input-block" style="margin-top: 10px ;">
<li>
<input type="checkbox" class="parent" name="limits[]" lay-skin="primary" title="人事模块">
<ul>
<input type="checkbox" name="limits[]" lay-skin="primary" title="社区系统">
<input type="checkbox" name="limits[]" lay-skin="primary" title="用户" >
<input type="checkbox" name="limits[]" lay-skin="primary" title="角色">
<input type="checkbox" name="limits[]" lay-skin="primary" title="评论审核">
</ul>
</li>
</ul>
<ul class="layui-input-block" style="margin-top: 10px ;">
<li>
<input type="checkbox" class="parent" name="limits[]" lay-skin="primary" title="人事模块">
<ul>
<input type="checkbox" name="limits[]" lay-skin="primary" title="社区系统">
<input type="checkbox" name="limits[]" lay-skin="primary" title="用户" >
<input type="checkbox" name="limits[]" lay-skin="primary" title="角色">
<input type="checkbox" name="limits[]" lay-skin="primary" title="评论审核">
</ul>
</li>
</ul>
</div>
</div>
</body>
//获取选中的checkbox的值
var mId = "";
var e =iframeWindow.$(":checkbox");
e.each(function () {
if($(this).next().hasClass("layui-form-checked")){
mId+=$(this).val()+",";
};
})
mId = mId.substring(0,mId.length-1);

View File

@ -0,0 +1,164 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto">
<div class="layui-form-item">
<div class="layui-inline">
角色筛选
</div>
<div class="layui-inline">
<select name="rolename" lay-filter="LAY-user-adminrole-type">
<option value="-1">全部角色</option>
<option value="0">管理员</option>
<option value="1">超级管理员</option>
<option value="2">纠错员</option>
<option value="3">采购员</option>
<option value="4">推销员</option>
<option value="5">运营人员</option>
<option value="6">编辑</option>
</select>
</div>
</div>
</div>
<div class="layui-card-body">
<div style="padding-bottom: 10px;">
<button class="layui-btn layuiadmin-btn-role" data-type="batchdel">删除</button>
<button class="layui-btn layuiadmin-btn-role" data-type="add">添加</button>
</div>
<table id="LAY-user-back-role" lay-filter="LAY-user-back-role"></table>
<script type="text/html" id="buttonTpl">
{{# if(d.check == true){ }}
<button class="layui-btn layui-btn-xs">已审核</button>
{{# } else { }}
<button class="layui-btn layui-btn-primary layui-btn-xs">未审核</button>
{{# } }}
</script>
<script type="text/html" id="table-useradmin-admin">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
</script>
</div>
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'useradmin', 'table'], function(){
var $ = layui.$
,form = layui.form
,table = layui.table;
//搜索角色
form.on('select(LAY-user-adminrole-type)', function(data){
//执行重载
table.reload('LAY-user-back-role', {
where: {
role: data.value
}
});
});
//事件
var active = {
batchdel: function(){
var checkStatus = table.checkStatus('LAY-user-back-role')
,checkData = checkStatus.data; //得到选中的数据
if(checkData.length === 0){
return layer.msg('请选择数据');
}
layer.confirm('确定删除吗?', function(index) {
//执行 Ajax 后重载
/*
admin.req({
url: 'xxx'
//,……
});
*/
table.reload('LAY-user-back-role');
layer.msg('已删除');
});
},
add: function(){
layer.open({
type: 2
,title: '添加新角色'
,content: 'roleadd.html'
,area: ['500px', '480px']
,btn: ['确定', '取消']
,yes: function(index, layero){
var iframeWindow = window['layui-layer-iframe'+ index]
,submit = layero.find('iframe').contents().find("#LAY-user-role-submit");
//监听提交
iframeWindow.layui.form.on('submit(LAY-user-role-submit)', function(data){
var field = data.field;
//checkbox 父子级级联或取id
var mId = "";
var e =iframeWindow.$(":checkbox");
e.each(function () {
if($(this).next().hasClass("layui-form-checked")){
mId+=$(this).val()+",";
};
})
rules = mId.substring(0,mId.length-1);
/*
var arr = new Array(); //获取提交的字段
$(iframeWindow.document).find('input[name=rules]:checked').each(function(){
arr.push($(this).val());
});
var rules = arr.join(',');//将数组元素连接起来以构建一个字符串
*/
//console.log(rules);
//提交 Ajax 成功后,静态更新表格中的数据
$.ajax({
type:"post",
url:"{:url('admin/AuthGroup/roleAdd')}",
data:{"rules":rules,"title":field.title,"descr":field.descr},
daType:"json",
success:function (data){
if (data.code == 1) {
layer.msg(data.msg,{
icon:6,
time:2000
});
} else {
layer.open({
tiele:'添加失败',
content:data.msg,
icon:5,
anim:6
});
}
}
});
table.reload('LAY-user-back-role');
layer.close(index); //关闭弹层
});
submit.trigger('click');
}
});
}
}
$('.layui-btn.layuiadmin-btn-role').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>
{/block}

View File

@ -0,0 +1,101 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-form" lay-filter="layuiadmin-form-role" id="layuiadmin-form-role" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label">角色</label>
<div class="layui-input-inline">
<input type="text" name="title" lay-verify="required" placeholder="请输入角色名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item" id="test">
<label class="layui-form-label">权限范围</label>
{volist name="menus" id="vo1"}
<ul class="layui-input-block" style="margin-top: 10px ;">
<li>
<input type="checkbox" name="rules" class="parent" lay-skin="primary" value="{$vo1.id}" title="{$vo1.title}">
<ul>
{if condition="isset($vo1['children'])"}
{volist name="vo1['children']" id="vo2"}
{if condition="isset($vo2['children'])"}
<input type="checkbox" name="rules" lay-skin="primary" value="{$vo2.id}" title="{$vo2.title}">
{volist name="vo2['children']" id="vo3"}
<input type="checkbox" name="rules" lay-skin="primary" id="{$vo3.id}" value="{$vo3.id}" title="{$vo3.title}">
{/volist}
{else /}
<input type="checkbox" name="rules" lay-skin="primary" id="{$vo2.id}" value="{$vo2.id}" title="{$vo2.title}">
{/if}
{/volist}
{/if}
</ul>
</li>
</ul>
{/volist}
</div>
<div class="layui-form-item">
<label class="layui-form-label">具体描述</label>
<div class="layui-input-block">
<textarea type="text" name="descr" lay-verify="required" autocomplete="off" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item layui-hide">
<button class="layui-btn" lay-submit lay-filter="LAY-user-role-submit" id="LAY-user-role-submit">提交</button>
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form'], function(){
var $ = layui.$
,form = layui.form ;
form.on('checkbox()', function(data){
var pc = data.elem.classList; //获取选中的checkbox的class属性
if(data.elem.checked==true){
if(pc=="parent"){
var c =$(data.elem).siblings().children("input[type='checkbox']");
c.each(function(){
var e = $(this);
e.next().addClass("layui-form-checked");
});
}else{
$(data.elem).parent().prev().addClass("layui-form-checked");
}
}else{
if(pc=="parent"){
var c =$(data.elem).siblings().children("input[type='checkbox']");
c.each(function(){
var e = $(this);
e.next().removeClass("layui-form-checked");
});
}else{
var c = $(data.elem).siblings("div");
var count =0;
c.each(function(){
var is = $(this).get(0).classList;
if(is.length==3){
count++;
}
});
if(count>0){
}else{
$(data.elem).parent().prev().removeClass("layui-form-checked");
}
}
}
});
})
</script>
{/block}

View File

@ -0,0 +1,129 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-form" lay-filter="layuiadmin-form-role" id="layuiadmin-form-role" style="padding: 20px 30px 0 0;">
<div class="layui-form-item layui-hide">
<input type="text" name="id" class="layui-input" value="{$auth.id}">
</div>
<div class="layui-form-item">
<label class="layui-form-label">角色</label>
<div class="layui-input-block">
<select name="title">
{volist name="authGroup" id="vo"}
<option {if condition="$vo.id eq $Request.param.id"} selected {/if} id="{$vo.id}" value="{$vo.title}">{$vo.title}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item" id="test">
<label class="layui-form-label">权限范围</label>
{volist name="menus" id="vo1"}
<ul class="layui-input-block" style="margin-top: 10px ;">
<li>
<input type="checkbox" name="rules" class="parent" lay-skin="primary" value="{$vo1.id}" title="{$vo1.title}">
<ul>
{if condition="isset($vo1['children'])"}
{volist name="vo1['children']" id="vo2"}
{if condition="isset($vo2['children'])"}
<input type="checkbox" name="rules" class="parent" lay-skin="primary" value="{$vo2.id}" title="{$vo2.title}">
{volist name="vo2['children']" id="vo3"}
<input type="checkbox" name="rules" lay-skin="primary" id="{$vo3.id}" value="{$vo3.id}" title="{$vo3.title}">
{/volist}
{else /}
<input type="checkbox" name="rules" lay-skin="primary" id="{$vo2.id}" value="{$vo2.id}" title="{$vo2.title}">
{/if}
{/volist}
{/if}
</ul>
</li>
</ul>
{/volist}
</div>
<div class="layui-form-item">
<label class="layui-form-label">具体描述</label>
<div class="layui-input-block">
<textarea type="text" name="descr" lay-verify="required" autocomplete="off" class="layui-textarea" value="{$auth.descr}">{$auth.descr}</textarea>
</div>
</div>
<div class="layui-form-item layui-hide">
<button class="layui-btn" lay-submit lay-filter="LAY-user-role-submit" id="LAY-user-role-submit">提交</button>
</div>
</div>
{/block}
{block name="js"}
<script type="text/javascript">
$(document).ready(function(){
var name = "{$ru}";
var names = name.split(",");
var inputs = $('input[name=rules]');
for (var i =0;i<inputs.length;i++) {
for (var n =0;n<names.length;n++) {
if (names[n]===inputs[i].value) {
inputs[i].checked = true;
}
}
}
});
</script>
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'table','form'], function(){
var $ = layui.$
,form = layui.form
,table = layui.table;
form.on('checkbox()', function(data){
var pc = data.elem.classList; //获取选中的checkbox的class属性
if(data.elem.checked==true){
if(pc=="parent"){
var c =$(data.elem).siblings().children("input[type='checkbox']");
c.each(function(){
var e = $(this);
e.next().addClass("layui-form-checked");
});
}else{
$(data.elem).parent().prev().addClass("layui-form-checked");
}
}else{
if(pc=="parent"){
var c =$(data.elem).siblings().children("input[type='checkbox']");
c.each(function(){
var e = $(this);
e.next().removeClass("layui-form-checked");
});
}else{
var c = $(data.elem).siblings("div");
var count =0;
c.each(function(){
var is = $(this).get(0).classList;
if(is.length==3){
count++;
}
});
if(count>0){
}else{
$(data.elem).parent().prev().removeClass("layui-form-checked");
}
}
}
});
})
</script>
{/block}

View File

@ -0,0 +1,65 @@
{extend name="public:base" /}
{block name="body"}
<div class="layui-form" lay-filter="layuiadmin-form-admin" id="layuiadmin-rule-add" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label">上级菜单</label>
<div class="layui-input-block">
<select name="pid" lay-verify="required">
<option value="0">顶级菜单</option>
{volist name="AuthRule" id="vo"}
<option value="{$vo.id}"><?php echo str_repeat('--',$vo['level']*2) ?>{$vo.title}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限名</label>
<div class="layui-input-inline">
<input type="text" name="title" lay-verify="required" placeholder="请输入权限名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限地址</label>
<div class="layui-input-inline">
<input type="text" name="name" lay-verify="required" placeholder="请输入邮箱" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">图标</label>
<div class="layui-input-inline">
<input type="text" name="icon" lay-verify="" placeholder="请输入角色类型" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-inline">
<input type="text" name="sort" lay-verify="" placeholder="请输入角色类型" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">显示</label>
<div class="layui-input-block">
<input type="checkbox" name="ishidden" lay-skin="primary" title="隐藏" value="0">
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="LAY-user-rule-submit" id="LAY-user-rule-submit" value="确认">
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form'], function(){
var $ = layui.$
,form = layui.form ;
})
</script>
{/block}

View File

@ -0,0 +1,68 @@
{extend name="public:base" /}
{block name="body"}
<div class="layui-form" lay-filter="layuiadmin-form-admin" id="layuiadmin-rule-edit" style="padding: 20px 30px 0 0;">
<div class="layui-form-item layui-hide">
<input type="text" name="id" class="layui-input" value="{$rules.id}">
</div>
<div class="layui-form-item">
<label class="layui-form-label">上级菜单</label>
<div class="layui-input-block">
<select name="pid" lay-verify="required">
<option value="0">顶级菜单</option>
{volist name="AuthRule" id="vo"}
<option {if condition="$rules['pid'] eq $vo.id"} selected {/if} value="{$vo.id}"><?php echo str_repeat('--',$vo['level']*2) ?>{$vo.title}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限名</label>
<div class="layui-input-inline">
<input type="text" name="title" lay-verify="required" placeholder="请输入权限名" autocomplete="off" class="layui-input" value="{$rules.title}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限地址</label>
<div class="layui-input-inline">
<input type="text" name="name" lay-verify="required" placeholder="请输入邮箱" autocomplete="off" class="layui-input" value="{$rules.name}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">图标</label>
<div class="layui-input-inline">
<input type="text" name="icon" lay-verify="" placeholder="请输入角色类型" autocomplete="off" class="layui-input" value="{$rules.icon}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-inline">
<input type="text" name="sort" lay-verify="required" placeholder="请输入角色类型" autocomplete="off" class="layui-input" value="{$rules.sort}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">显示</label>
<div class="layui-input-block">
<input type="checkbox" name="ishidden" lay-skin="primary" title="隐藏" {if condition="$rules.ishidden == 0"}checked{/if}>
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="LAY-user-rule-submit" id="LAY-user-rule-submit" value="确认">
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form'], function(){
var $ = layui.$
,form = layui.form ;
})
</script>
{/block}

View File

@ -0,0 +1,310 @@
{extend name="public:base" /}
{block name="body"}
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">登录名</label>
<div class="layui-input-block">
<input type="text" name="loginname" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">手机</label>
<div class="layui-input-block">
<input type="text" name="telphone" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-block">
<input type="text" name="email" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">角色</label>
<div class="layui-input-block">
<select name="role">
<option value="0">管理员</option>
<option value="1">超级管理员</option>
<option value="2">纠错员</option>
<option value="3">采购员</option>
<option value="4">推销员</option>
<option value="5">运营人员</option>
<option value="6">编辑</option>
</select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-admin" lay-submit lay-filter="LAY-user-back-search">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
</div>
</div>
</div>
<div class="layui-card-body">
<div style="padding-bottom: 10px;">
<button class="layui-btn layuiadmin-btn-admin" data-type="batchdel">删除</button>
<button class="layui-btn layuiadmin-btn-admin" data-type="add">添加</button>
</div>
<table id="LAY-user-auth-rule" lay-filter="LAY-user-auth-rule"></table>
<script type="text/html" id="rules-sort">
<div class="layui-input-inline" style="width: 30px; high: 30">
<input type="text" name="sort" autocomplete="off" placeholder="排序" dataid="{{d.id}}" class="layui-input" value="{{d.sort}}">
</div>
</script>
<script type="text/html" id="rules-title">
<span >{{# if(d.level !==1){ }}|{{# } }} {{d.title}}</span>
</script>
<script type="text/html" id="buttonAuth">
{if condition="checkRuleButton('admin/authrule/check')"}<input type="checkbox" name="status" lay-skin="switch" lay-filter="authcheck" lay-text="开启|关闭" {{# if(d.status == 1){ }} checked {{# } }} id="{{d.id}}" >{else}<button class="layui-btn layui-btn-xs layui-btn-radius layui-btn-disabled">无权限</button>{/if}
</script>
<script type="text/html" id="menu">
{{# if(d.id == '1' | d.id == '2' | d.id == '9' | d.id == '10' ){ }}
<input type="checkbox" name="ishidden" lay-skin="primary" checked disabled >
{{# } else { }}
{if condition="checkRuleButton('admin/authrule/menushow')"}<input type="checkbox" name="ishidden" lay-skin="primary" lay-filter="menu-show" {{# if(d.ishidden ==1){ }}checked value="0"{{# } else { }}value="1"{{# } }} id="{{d.id}}" >{else}<button class="layui-btn layui-btn-xs layui-btn-disabled">没有权限</button>{/if}
{{# } }}
</script>
<script type="text/html" id="table-useradmin-admin">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
{{# if(d.role == '1'){ }}
<a class="layui-btn layui-btn-disabled layui-btn-xs"><i class="layui-icon layui-icon-delete"></i>删除</a>
{{# } else { }}
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
{{# } }}
</script>
</div>
</div>
</div>
{/block}
{block name="js"}
<script>
//排序
$(function(){
$('input[name=sort]').change(function(){
var id = $(this).attr('dataid'),
sort = $(this).val();
console.log(id);
$.ajax({
type:'post',
url:"{:url('admin/authrule/sort')}",
data:{id:id,sort:sort},
dataType:'json',
success:function(data){
if(data.code == 1){
layer.msg(data.msg,{
icon:6,
time:2000
}
//,function(){location.reload();}
);
} else {
layer.open({
title:'排序失败',
content:data.msg,
icon:5,
adim:6
})
}
}
});
});
return false;
});
</script>
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'useradmin', 'table', 'form'], function(){
var $ = layui.$
,form = layui.form
,table = layui.table;
//监听搜索
form.on('submit(LAY-user-back-search)', function(data){
var field = data.field;
//执行重载
table.reload('LAY-user-auth-rule', {
where: field
});
});
//菜单控制
form.on('checkbox(menu-show)', function(data){
var data = data.elem;
//console.log(data);
if(data.checked == true){
data.value = 1;
}else{
data.value = 0;
}
$.ajax({
type:'post',
url:"/admin/AuthRule/menushow",
data:{id:data.id,ishidden:data.value,},
dataType:'json',
success:function(data){
if(data.code == 1){
layer.msg(data.msg,{
icon:6,
time:2000
}
//,function(){location.reload();}
);
} else {
layer.open({
title:'修改失败',
content:data.msg,
icon:5,
adim:6
})
}
}
});
return false;
});
//权限开关
form.on('switch(authcheck)', function(data){
var data= data.elem;
//console.log(data);
if(data.checked == true){
data.value = 1;
}else{
data.value = 0;
}
$.ajax({
type:'post',
url:"/admin/AuthRule/Check",
data:{id:data.id,status:data.value,},
dataType:'json',
success:function(data){
if(data.code == 0){
layer.msg(data.msg,{
icon:6,
time:2000
}
,function(){location.reload();}
);
} else {
layer.open({
title:'审核失败',
content:data.msg,
icon:5,
adim:6
})
}
}
});
return false;
//console.log(data.id);
//console.log(data.elem); //得到checkbox原始DOM对象
//console.log(data.elem.checked); //开关是否开启true或者false
//console.log(data.value); //开关value值也可以通过data.elem.value得到
//console.log(data.othis); //得到美化后的DOM对象
});
//事件
var active = {
batchdel: function(){
var checkStatus = table.checkStatus('LAY-user-auth-rule')
,checkData = checkStatus.data; //得到选中的数据
if(checkData.length === 0){
return layer.msg('请选择数据');
}
layer.prompt({
formType: 1
,title: '敏感操作,请验证口令'
}, function(value, index){
layer.close(index);
layer.confirm('确定删除吗?', function(index) {
//执行 Ajax 后重载
/*
admin.req({
url: 'xxx'
//,……
});
*/
table.reload('LAY-user-auth-rule');
layer.msg('已删除');
});
});
}
,add: function(){
layer.open({
type: 2
,title: '添加权限'
,content: '/admin/AuthRule/add'
,area: ['420px', '420px']
,btn: ['确定', '取消']
,yes: function(index, layero){
var iframeWindow = window['layui-layer-iframe'+ index]
,submitID = 'LAY-user-rule-submit'
,submit = layero.find('iframe').contents().find('#'+ submitID);
//监听提交
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
var field = data.field; //获取提交的字段
//console.log(field);
//提交 Ajax 成功后,静态更新表格中的数据
$.ajax({
type:"post",
url:"{:url('admin/AuthRule/add')}",
data:{"pid":field.pid,"title":field.title,"name":field.name,"icon":field.icon,"sort":field.sort,"ishidden":field.ishidden},
daType:"json",
success:function (data){
if (data.code == 0) {
layer.msg(data.msg,{
icon:6,
time:2000
}, function(){
location.reload();
});
} else {
layer.open({
tiele:'添加失败',
content:data.msg,
icon:5,
anim:6
});
}
}
});
table.reload('LAY-user-front-submit'); //数据刷新
layer.close(index); //关闭弹层
});
submit.trigger('click');
}
});
}
}
$('.layui-btn.layuiadmin-btn-admin').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>
{/block}

View File

@ -0,0 +1,67 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-form" lay-filter="layuiadmin-form-keyauth" id="layuiadmin-form-keyauth" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label">授权等级</label>
<div class="layui-input-inline">
<select name="auth_level" lay-verify="required">
<option value="0">普通</option>
<option value="1">初级</option>
<option value="2">中级</option>
<option value="3">高级</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">用户</label>
<div class="layui-input-inline">
<input type="text" name="user" lay-verify="required" placeholder="请输入用户" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">域名</label>
<div class="layui-input-inline">
<input type="text" name="domain" lay-verify="required" placeholder="请输入域名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">到期时间</label>
<div class="layui-input-inline">
<input type="text" name="end_time" id="end-time" lay-verify="required" placeholder="请选择日期" autocomplete="off" class="layui-input" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<input type="text" name="status" lay-verify="required" placeholder="请设置状态" autocomplete="off" class="layui-input" >
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="LAY-keyauth-submit" id="LAY-keyauth-submit" value="确认">
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate','table'], function(){
var $ = layui.$
,laydate = layui.laydate
,form = layui.form;
//结束时间
laydate.render({
elem: '#end-time'
,btns: ['clear', 'now']
,trigger: 'click'
});
})
</script>
{/block}

View File

@ -0,0 +1,73 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-form" lay-filter="layuiadmin-form-keyauth" id="layuiadmin-form-keyauth" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label">授权等级</label>
<div class="layui-input-inline">
<select name="auth_level" lay-verify="required">
<option {if condition="$keys.auth_level eq 0"} selected {/if} value="0">普通</option>
<option {if condition="$keys.auth_level eq 1"} selected {/if} value="1">初级</option>
<option {if condition="$keys.auth_level eq 2"} selected {/if} value="2">中级</option>
<option {if condition="$keys.auth_level eq 3"} selected {/if} value="3">高级</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">用户</label>
<div class="layui-input-inline">
<input type="text" name="user" lay-verify="required" placeholder="请输入用户" autocomplete="off" class="layui-input" value="{$keys.user}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">域名</label>
<div class="layui-input-inline">
<input type="text" name="domain" lay-verify="required" placeholder="请输入域名" autocomplete="off" class="layui-input" value="{$keys.domain}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">到期时间</label>
<div class="layui-input-inline">
<input type="text" name="end_time" id="end-time" lay-verify="required" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input" value="{$keys.end_time|date='Y-m-d'}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<input type="text" name="status" lay-verify="required" placeholder="请设置状态" autocomplete="off" class="layui-input" value="{$keys.status}">
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="LAY-keyauth-submit" id="LAY-keyauth-submit" value="确认">
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index','form','table','laydate'], function(){
var $ = layui.$
,form = layui.form
,table = layui.table
,laydate = layui.laydate;
//结束时间
laydate.render({
elem: '#end-time'
,btns: ['clear', 'now']
,trigger: 'click'
});
})
</script>
{/block}

View File

@ -0,0 +1,214 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-fluid">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">版本发布</div>
<div class="layui-card-body">
<div class="layui-form" wid100 lay-filter="">
<div class="layui-upload">
<button type="button" class="layui-btn layui-btn-normal" id="version-add">添加</button>
<div class="layui-upload-list">
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>用户</th>
<th>域名</th>
<th>Key</th>
<th>等级</th>
<th>状态</th>
<th>申请时间</th>
<th>到期时间</th>
<th>操作</th>
</tr></thead>
<tbody id="demoList">
{volist name="keys" id="vo"}
<tr>
<th>{$vo.id}</th>
<th>{$vo.user}</th>
<th>{$vo.domain}</th>
<th>{$vo.key}</th>
<th>{$vo.auth_level}</th>
<th>{$vo.status?'正常':'禁用'}</th>
<th>{$vo.create_time|date='Y-m-d'}</th>
<th>{$vo.end_time|date='Y-m-d'}</th>
<th>
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit" id-data="{$vo.id}"><i class="layui-icon layui-icon-edit"></i>编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" id-data="{$vo.id}"><i class="layui-icon layui-icon-delete"></i>删除</a>
</th>
</tr>
{/volist}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{/block}
{block name="js"}
<script>
layui.config({
base: '/static/admin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'set']);
</script>
<script>
layui.use(['layer','table','form','laydate'], function(){
var $ = layui.jquery
,layer = layui.layer
,table = layui.table
,form = layui.form
,laydate = layui.laydate;
//添加版本
$('#version-add').on('click', function(){
layer.open({
type: 2,
title: '添加授权',
content: 'add.html',
maxmin: true,
area : ['400px' , '450px'],
btn: ['确定', '取消'],
yes: function(index, layero){
var iframeWindow = window['layui-layer-iframe'+ index]
,submitID = 'LAY-keyauth-submit'
,submit = layero.find('iframe').contents().find('#'+ submitID);
//监听提交
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
var field = data.field; //获取提交的字段
console.log(field);
//提交 Ajax 成功后,静态更新表格中的数据
$.ajax({
type:"post",
url:"{:url('admin/KeyAuth/add')}",
data:{"vuser":field.user,"domain":field.domain,"auth_level":field.auth_level,"end_time":field.end_time,"status":field.status},
daType:"json",
success:function (data){
if (data.code == 1) {
layer.msg(data.msg,{
icon:6,
time:2000
}, function(){
location.reload();
});
} else {
layer.open({
tiele:'添加失败',
content:data.msg,
icon:5,
anim:6
});
}
}
});
layer.close(index);
});
submit.trigger('click');
}
});
});
//编辑版本
$('a[lay-event=edit]').on('click', function(){
var id = $(this).attr('id-data');
layer.open({
type: 2,
title: '编辑key',
content: 'edit.html?id='+ id,
maxmin: true,
area : ['400px' , '450px'],
btn: ['确定', '取消'],
yes: function(index, layero){
var iframeWindow = window['layui-layer-iframe'+ index]
,submitID = 'LAY-keyauth-submit'
,submit = layero.find('iframe').contents().find('#'+ submitID);
//监听提交
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
var field = data.field; //获取提交的字段
console.log(field);
//提交 Ajax 成功后,静态更新表格中的数据
$.ajax({
type:"post",
url:"{:url('admin/KeyAuth/edit')}",
data:{"id":id,"user":field.user,"domain":field.domain,"auth_level":field.auth_level,"end_time":field.end_time,"status":field.status},
daType:"json",
success:function (data){
if (data.code == 1) {
layer.msg(data.msg,{
icon:6,
time:2000
}, function(){
location.reload();
});
} else {
layer.open({
tiele:'添加失败',
content:data.msg,
icon:5,
anim:6
});
}
}
});
layer.close(index);
});
submit.trigger('click');
}
});
});
//删除幻灯
$('a[lay-event=del]').on('click', function(){
var id = $(this).attr('id-data');
layer.confirm('确定删除?', {icon: 3, title:'删除版本'}, function(index){
//提交 Ajax 成功后,静态更新表格中的数据
$.ajax({
type:"post",
url:"{:url('admin/KeyAuth/delete')}",
data:{"id":id},
daType:"json",
success:function (data){
if (data.code == 1) {
layer.msg(data.msg,{
icon:6,
time:2000
}, function(){
location.reload();
});
} else {
layer.open({
tiele:'删除失败',
content:data.msg,
icon:5,
anim:6
});
}
}
});
layer.close(index);
});
});
});
</script>
{/block}

View File

@ -12,7 +12,7 @@
</head> </head>
<body {if($Request.url=='/admin/index/index')}class="layui-layout-body"{/if}> <body {if($Request.url=='/admin/index/index')}class="layui-layout-body"{/if}>
{block name="body"}内容{/block} {block name="body"}内容{/block}
<!--script src="/static/res/mods/jquery.min.js" charset="utf-8"></script--> <script src="/static/res/mods/jquery.min.js" charset="utf-8"></script>
<script src="/static/admin/layui/layui.js"></script> <script src="/static/admin/layui/layui.js"></script>
{block name="js"}js文件{/block} {block name="js"}js文件{/block}
</body> </body>

View File

@ -79,7 +79,6 @@
,layer = layui.layer ,layer = layui.layer
,form = layui.form ,form = layui.form
,upload = layui.upload; ,upload = layui.upload;
var layerload = layer.load();
//手动更新,选完文件后不自动上传 //手动更新,选完文件后不自动上传
upload.render({ upload.render({
@ -92,8 +91,11 @@
,size: 10000 ,size: 10000
//,multiple: true //,multiple: true
,bindAction: '#upgrade-sys-button' ,bindAction: '#upgrade-sys-button'
,before: function(obj){ //obj参数包含的信息跟 choose回调完全一致可参见上文。
layer.load(); //上传loading
}
,done: function(res){ ,done: function(res){
//layer.close(layerload); //关闭loading layer.close(layerload); //关闭loading
if(res.code == 1){ if(res.code == 1){
layer.msg(res.msg,{ layer.msg(res.msg,{
icon:6, icon:6,

View File

@ -16,6 +16,12 @@
<i class="layui-icon">&#xe705;</i> <i class="layui-icon">&#xe705;</i>
我的帖子 我的帖子
</a> </a>
</li>
<li class="layui-nav-item {if($Request.action=='key')}layui-this{/if}">
<a href="{:url('api/key')}">
<i class="layui-icon">&#xe670;</i>
我的授权
</a>
</li> </li>
<!--li class="layui-nav-item {if($Request.action=='message')}layui-this{/if}"> <!--li class="layui-nav-item {if($Request.action=='message')}layui-this{/if}">
<a href="{:url('index/user/message')}"> <a href="{:url('index/user/message')}">
@ -23,12 +29,13 @@
我的消息 我的消息
</a> </a>
</li--> </li-->
<li class="layui-nav-item " >
<!--li class="layui-nav-item " >
<a href="{:url('user/home',['id'=>session('user_id')])}"> <a href="{:url('user/home',['id'=>session('user_id')])}">
<i class="layui-icon">&#xe609;</i> <i class="layui-icon">&#xe609;</i>
我的主页 我的主页
</a> </a>
</li> </li-->
</ul> </ul>
<div class="site-tree-mobile layui-hide"> <div class="site-tree-mobile layui-hide">