1
0

first commit

This commit is contained in:
2020-08-06 14:58:51 +08:00
commit 17096657dc
780 changed files with 92857 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+

View File

@@ -0,0 +1,43 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
return [
// +----------------------------------------------------------------------
// | 日志设置
// +----------------------------------------------------------------------
'log' => [
'type' => 'file',
'path' => LOG_PATH . 'system/',
'time_format' => ' c ',
'file_size' => 2097152,
],
// +----------------------------------------------------------------------
// | 模板设置
// +----------------------------------------------------------------------
'template' => [
'tpl_cache' => false,
'strip_space' => false,
'taglib_pre_load' => '',
'cache_path' => TEMP_PATH . 'system/',
],
'view_replace_str' => [
'__SELF__' => __SELF__,
'__STATIC__' => '/static/system',
'__JS__' => '/static/system/js',
'__CSS__' => '/static/system/css',
'__IMG__' => '/static/system/images',
'__LIB__' => '/static/system/lib',
],
// +----------------------------------------------------------------------
// | 数据备份设置
// +----------------------------------------------------------------------
'backdata' => [
'path' => realpath('../backup/') . DS,
],
];

View File

@@ -0,0 +1,86 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Article as ArticleModel;
use app\common\service\Article as ArticleService;
use think\Request;
class Article extends _Init
{
/**
* 文章列表
* @param string $title 要搜索的文章标题
* @return [type] [description]
*/
public function index($title = '')
{
$map['status'] = ['egt', 0];
if (!empty($title)) {
$map['title'] = ['like', "%$title%"];
}
$this->list = ArticleModel::where($map)->paginate();
return $this->fetch();
}
/**
* 添加文章
* @param Request $Request 数据集
*/
public function add(Request $Request)
{
if (IS_POST) {
$data = $Request->post();
$result = ArticleService::create($data);
return $this->back($result);
} else {
$this->list = ArticleService::categoryList();
return $this->fetch();
}
}
/**
* 编辑文章
* @param Request $Request 数据集
* @param [type] $id 文章id
* @return [type] 返回 编辑的结果
*/
public function edit(Request $Request, $id)
{
if (IS_POST) {
$data = $Request->post();
$result = ArticleService::edit($data);
return $this->back($result);
} else {
$this->list = ArticleService::categoryList();
$this->info = ArticleModel::get($id);
return $this->fetch('add');
}
}
/**
* 删除文章
* @param [type] $id 文章id
* @return [type] [description]
*/
public function del($id)
{
$result = ArticleService::del($id);
return $this->back($result);
}
/**
* 修改文章状态
* @param [type] $id 文章id
* @param [type] $status 状态
* @return [type] 修改文章结果
*/
public function status($id, $status)
{
$result = ArticleService::status($id, $status);
return $this->back($result);
}
}

View File

@@ -0,0 +1,84 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\ArticleModel as ArticleModelModel;
use app\common\service\ArticleModel as ArticleModelService;
use think\Request;
class Articlemodel extends _Init
{
/**
* 文章列表
* @param string $title 要搜索的文章标题
* @return [type] [description]
*/
public function index($title = '')
{
$map['status'] = ['egt', 0];
$this->list = ArticleModelModel::where($map)->paginate();
return $this->fetch();
}
/**
* 添加文章
* @param Request $Request 数据集
*/
public function add(Request $Request)
{
if (IS_POST) {
$data = $Request->post();
$result = ArticleModelService::create($data);
return $this->back($result);
} else {
return $this->fetch();
}
}
/**
* 编辑文章
* @param Request $Request 数据集
* @param [type] $id 文章id
* @return [type] 返回 编辑的结果
*/
public function edit(Request $Request, $id)
{
if (IS_POST) {
$data = $Request->post();
$result = ArticleModelService::edit($data);
return $this->back($result);
} else {
$this->info = ArticleModelModel::get($id);
return $this->fetch('add');
}
}
/**
* 删除文章
* @param [type] $id 文章id
* @return [type] [description]
*/
public function del($id)
{
$result = ArticleModelService::del($id);
return $this->back($result);
}
/**
* 修改文章状态
* @param [type] $id 文章id
* @param [type] $status 状态
* @return [type] 修改文章结果
*/
public function status($id, $status)
{
$result = ArticleModelService::status($id, $status);
return $this->back($result);
}
}

View File

@@ -0,0 +1,148 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Auth as AuthModel;
use app\common\model\Member as MemberModel;
use app\common\service\Auth as AuthService;
use think\Request;
class Auth extends _Init
{
/**
* 授权列表
* @return [type] [description]
*/
public function index()
{
$map['status'] = ['egt', 0];
$this->list = AuthModel::where($map)->paginate();
return $this->fetch();
}
/**
* 添加授权分组
* @param Request $request 要添加的分组数据
*/
public function add(Request $request)
{
if (IS_POST) {
$data = $request->post();
$result = AuthService::add($data);
return $this->back($result);
} else {
return $this->fetch();
}
}
/**
* 编辑授权分组
* @param [type] $id 授权分组id
* @return [type] [description]
*/
public function edit(Request $request, $id)
{
if (IS_POST) {
$data = $request->post();
$result = AuthService::edit($data);
return $this->back($result);
} else {
$this->info = AuthModel::get($id);
return $this->fetch('add');
}
}
/**
* 删除分组
* @param [type] $id 授权分组 id
* @return [type] [description]
*/
public function del($id)
{
$result = AuthService::del($id);
return $this->back($result);
}
/**
* 设置分组状态 正常 和 禁用
* @param [type] $id 授权分组 id
* @param [type] $status 成功 还是 失败 失败返回失败的信息
* @return [type] [description]
*/
public function status($id, $status)
{
$result = AuthService::status($id, $status);
return $this->back($result);
}
/**
* 菜单授权
* @param [type] $id 授权分组id
* @return [type] [description]
*/
public function menu(Request $request, $id)
{
if (IS_POST) {
$rules = $request->post('rules/a');
$result = AuthService::setAuthRuels($id, $rules);
return $this->back($result);
} else {
$this->assign('node_list', AuthService::getAuthRules($id));
return $this->fetch();
}
}
/**
* 用户授权页面
* @param Request $request 提交的信息
* @param [type] $id 分组id
* @return [type] 用户列表
*/
public function user(Request $request, $id)
{
$authed = AuthService::getAuthedUids($id);
if (IS_POST) {
$username = $request->post('username');
$list = MemberModel::field('id,username')->whereOr(function ($query) use ($username) {
$query->whereOr('id', $username)->whereOr('username', 'like', "%{$username}%");
})->where('status', 1)->where('id', 'notin', $authed)->limit(10)->select();
foreach ($list as $key => &$value) {
$value['nickname'] = $value->info->nickname;
}
return $this->success('', '', $list);
} else {
$this->list = MemberModel::where('status', 1)->where('id', 'in', $authed)->paginate();
return $this->fetch();
}
}
/**
* 把用户移除分组
* @param [type] $id 分组id
* @param [type] $uid 用户id
* @return [type] 返回结果
*/
public function remove($id, $uid)
{
$result = AuthService::removeAuthUser($id, $uid);
return $this->back($result);
}
/**
* 设置用户授权
* @param [type] $id 分组id
* @param [type] $uid 用户ids
* @return [type] [description]
*/
public function insert($id, $uid)
{
$result = AuthService::setAuthUser($id, $uid);
return $this->back($result);
}
}

View File

@@ -0,0 +1,113 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Advert as AdvertModel;
use app\common\model\AdvertDetail as AdvertDetailModel;
use app\common\service\Advert as AdvertService;
use app\common\service\AdvertDetail as AdvertDetailService;
class Banner extends _Init
{
public function index($title = '')
{
$map['status'] = ['egt', 0];
if ($title) {
$map['title'] = ['like', "%{$title}%"];
}
$this->list = AdvertModel::where($map)->paginate();
return $this->fetch();
}
public function add()
{
if (IS_POST) {
$data = $this->request->post();
$res = AdvertService::add($data);
return $this->back($res);
} else {
return $this->fetch();
}
}
public function edit($id)
{
if (IS_POST) {
$data = $this->request->post();
$res = AdvertService::edit($data);
return $this->back($res);
} else {
$this->assign('info', AdvertModel::get($id));
return $this->fetch('add');
}
}
public function del($id)
{
$res = AdvertService::del($id);
return $this->back($res);
}
/**
* 修改状态
* @param [type] $id [description]
* @param [type] $status [description]
* @param [type] $type [description]
*/
public function status($id, $status, $type)
{
$res = AdvertService::status($id, $status, $type);
return $this->back($res);
}
public function detail($advert_id)
{
$this->info = AdvertModel::get($advert_id);
return $this->fetch();
}
public function banadd($advert_id)
{
if (IS_POST) {
$data = $this->request->post();
$data['advert_id'] = $advert_id;
unset($data['image']);
$res = AdvertDetailService::add($data);
return $this->back($res);
} else {
return $this->fetch();
}
}
public function banedit($id)
{
if (IS_POST) {
$data = $this->request->post();
unset($data['image']);
$res = AdvertDetailService::edit($data);
return $this->back($res);
} else {
$this->assign('info', AdvertDetailModel::get($id));
return $this->fetch('banadd');
}
}
public function bandel($id)
{
$res = AdvertDetailService::del($id);
return $this->back($res);
}
public function banstatus($id, $status, $type)
{
$res = AdvertDetailService::status($id, $status, $type);
return $this->back($res);
}
}

View File

@@ -0,0 +1,93 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Category as CategoryModel;
use app\common\service\Category as CategoryService;
use think\Request;
class Category extends _Init
{
/**
* 分类列表
* @param string $pid 上级分类id
* @return [type] [description]
*/
public function index($pid = '')
{
if (is_numeric($pid)) {
$map['pid'] = $pid;
} else {
$map['pid'] = 0;
}
$map['status'] = ['egt', 0];
$this->list = CategoryModel::where($map)->order('sort desc,update_time desc')->paginate();
$this->info = CategoryModel::get($pid);
$this->menu = CategoryService::tree();
return $this->fetch();
}
/**
* 添加分类
* @param Request $Request [description]
* @param integer $pid 上级id
*/
public function add(Request $Request, $pid = 0)
{
if (IS_POST) {
$data = $Request->post();
$result = CategoryService::add($data);
return $this->back($result);
} else {
$info['pid'] = $pid;
$this->info = $info;
$this->up_cates = CategoryService::treeList();
return $this->fetch();
}
}
/**
* 编辑分类
* @param [type] $id 分类id
*/
public function edit(Request $Request, $id)
{
if (IS_POST) {
$data = $Request->post();
$result = CategoryService::edit($data);
return $this->back($result);
} else {
$this->up_cates = CategoryService::treeList($id);
$this->info = CategoryModel::get($id);
return $this->fetch('add');
}
}
/**
* 删除分类
* @param [type] $id 分类id
* @return [type] 返回删除的结果
*/
public function del($id)
{
$result = CategoryService::del($id);
$this->back($result);
}
/**
* 设置分类状态
* @param [type] $id 分类id
* @param [type] $status 状态
* @param [type] $type 要设置的字段 status
* @return [type] 返回结果
*/
public function status($id, $status, $type)
{
$result = CategoryService::status($id, $status, $type);
return $this->back($result);
}
}

View File

@@ -0,0 +1,90 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Content as ContentModel;
use app\common\service\Content as ContentService;
use think\Request;
class Cause extends _Init
{
/**
* 文章列表
* @param string $title 要搜索的文章标题
* @return [type] [description]
*/
public function index($title = '')
{
$CategoryIds = ContentService::getCategoryIds('cause');
$map = [
'status' => ['egt', 0],
'title' => ['like', "%$title%"],
'category_id' => ['in', $CategoryIds],
];
$this->list = ContentModel::where($map)->order('id desc')->paginate();
return $this->fetch();
}
/**
* 添加文章
* @param Request $Request 数据集
*/
public function add(Request $Request)
{
if (IS_POST) {
$data = $Request->post();
$result = ContentService::create($data);
return $this->back($result);
} else {
$this->list = ContentService::categoryList('cause');
return $this->fetch();
}
}
/**
* 编辑文章
* @param Request $Request 数据集
* @param [type] $id 文章id
* @return [type] 返回 编辑的结果
*/
public function edit(Request $Request, $id)
{
if (IS_POST) {
$data = $Request->post();
$result = ContentService::edit($data);
return $this->back($result);
} else {
$this->list = ContentService::categoryList('Cause');
$this->info = ContentModel::get($id);
return $this->fetch('add');
}
}
/**
* 删除文章
* @param [type] $id 文章id
* @return [type] [description]
*/
public function del($id)
{
$result = ContentService::del($id);
return $this->back($result);
}
/**
* 修改文章状态
* @param [type] $id 文章id
* @param [type] $status 状态
* @return [type] 修改文章结果
*/
public function status($id, $status)
{
$result = ContentService::status($id, $status);
return $this->back($result);
}
}

View File

@@ -0,0 +1,114 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Config as ConfigModel;
use app\common\service\Config as ConfigService;
use think\Cache;
use think\Request;
class Config extends _Init
{
/**
* 批量设置的页面
* @return [type] [description]
*/
public function index()
{
if (IS_POST) {
$config = $this->request->post('config/a');
$result = ConfigService::batchEdit($config);
$this->back($result);
} else {
$map = [
'status' => 1,
];
$this->list = ConfigModel::where($map)->order('sort asc')->select();
return $this->fetch();
}
}
/**
* 所有参数页面
* @return [type] [description]
*/
public function params()
{
$map = [
'status' => ['egt', 0],
];
$this->list = ConfigModel::where($map)->order('sort asc,create_time desc,update_time desc')->paginate(10);
return $this->fetch();
}
/**
* 清除缓存
*/
public function clear()
{
if (Cache::clear()) {
return $this->success('清除缓存成功');
} else {
return $this->error();
}
}
/**
* 新增配置
*/
public function add(Request $request)
{
if (IS_POST) {
$data = $request->post();
$result = ConfigService::add($data);
return $this->back($result);
} else {
return $this->fetch();
}
}
/**
* 编辑配置
* @param [type] $id [description]
*/
public function edit(Request $request, $id)
{
if (IS_POST) {
$data = $request->post();
$result = ConfigService::edit($data);
return $this->back($result);
} else {
$this->assign('info', ConfigModel::find($id));
return $this->fetch('add');
}
}
/**
* 修改状态
* @param [type] $id [description]
* @param [type] $status [description]
* @param [type] $type [description]
*/
public function status($id, $status, $type)
{
$result = ConfigService::status($id, $status, $type);
return $this->back($result);
}
/**
* 删除
* @param [type] $id [description]
*/
public function del($id)
{
$result = ConfigService::del($id);
return $this->back($result);
}
}

View File

@@ -0,0 +1,67 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\service\Database as DatabaseService;
class Database extends _Init
{
public function index()
{
$list = DatabaseService::getTables();
$this->assign('list', $list);
return $this->fetch();
}
/**
* 备份的方法
* @param [type] $tables [description]
* @param [type] $id [description]
* @param [type] $start [description]
* @return [type] [description]
*/
public function backup($tables = null, $id = null, $start = null)
{
$result = DatabaseService::backup($tables, $id, $start);
if (is_array($result) && !empty($result)) {
return $this->success($result['msg'], '', $result['data']);
} else {
return $this->error($result);
}
}
/**
* 备份列表
* @return [type] [description]
*/
public function import()
{
$list = DatabaseService::backupList();
$this->assign('list', $list);
return $this->fetch();
}
/**
* 删除备份文件
* @param [type] $time [description]
* @return [type] [description]
*/
public function del($time)
{
if (IS_POST && is_array($time)) {
$result = DatabaseService::del($time);
if ($result === true) {
return $this->success('删除成功');
} else {
return $this->error($result);
}
}
}
}

View File

@@ -0,0 +1,113 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Direct as DirectModel;
use app\common\service\Direct as DirectService;
use think\Request;
class Direct extends _Init
{
/**
* 文章列表
* @param string $title 要搜索的文章标题
* @return [type] [description]
*/
public function index($type = '', $title = '')
{
$map['status'] = ['egt', 0];
if (!empty($type)) {
$map['type'] = $type;
}
if (!empty($title)) {
$map['title'] = ['like', "%$title%"];
}
$this->list = DirectModel::where($map)->order("sort asc,create_time desc")->paginate();
return $this->fetch();
}
/**
* 添加文章
* @param Request $Request 数据集
*/
public function add(Request $Request)
{
if (IS_POST) {
$data = $Request->post();
$result = DirectService::create($data);
return $this->back($result);
} else {
return $this->fetch();
}
}
/**
* 编辑文章
* @param Request $Request 数据集
* @param [type] $id 文章id
* @return [type] 返回 编辑的结果
*/
public function edit(Request $Request, $id)
{
if (IS_POST) {
$data = $Request->post();
$result = DirectService::edit($data);
return $this->back($result);
} else {
$this->info = DirectModel::get($id);
return $this->fetch('add');
}
}
/**
* 删除文章
* @param [type] $id 文章id
* @return [type] [description]
*/
public function del($id)
{
$result = DirectService::del($id);
return $this->back($result);
}
/**
* 修改文章状态
* @param [type] $id 文章id
* @param [type] $status 状态
* @return [type] 修改文章结果
*/
public function status($id, $status)
{
$result = DirectService::status($id, $status);
return $this->back($result);
}
public function upload($type = '')
{
if (!in_array($type, ['image', 'file', 'video', 'audio'])) {
$result = ['code' => 0, 'msg' => '不支持的上传类型'];
} else {
$file = request()->file($type);
dump($file);die();
// $result = StorageService::upload($type);
}
if (is_array($result) && !empty($result)) {
$ret = [
'code' => 1,
'data' => $result,
];
} else {
$ret = [
'code' => 0,
'msg' => $result,
];
}
return Response::create($ret, 'json');
}
}

View File

@@ -0,0 +1,87 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Help as HelpModel;
use app\common\service\Help as HelpService;
use think\Request;
class Help extends _Init
{
/**
* 文章列表
* @param string $title 要搜索的文章标题
* @return [type] [description]
*/
public function index($title = '')
{
$map['status'] = ['egt', 0];
if (!empty($title)) {
$map['title'] = ['like', "%$title%"];
}
$this->list = HelpModel::where($map)->paginate();
return $this->fetch();
}
/**
* 添加文章
* @param Request $Request 数据集
*/
public function add(Request $Request)
{
if (IS_POST) {
$data = $Request->post();
$result = HelpService::create($data);
return $this->back($result);
} else {
return $this->fetch();
}
}
/**
* 编辑文章
* @param Request $Request 数据集
* @param [type] $id 文章id
* @return [type] 返回 编辑的结果
*/
public function edit(Request $Request, $id)
{
if (IS_POST) {
$data = $Request->post();
$result = HelpService::edit($data);
return $this->back($result);
} else {
$this->info = HelpModel::get($id);
return $this->fetch('add');
}
}
/**
* 删除文章
* @param [type] $id 文章id
* @return [type] [description]
*/
public function del($id)
{
$result = HelpService::del($id);
return $this->back($result);
}
/**
* 修改文章状态
* @param [type] $id 文章id
* @param [type] $status 状态
* @return [type] 修改文章结果
*/
public function status($id, $status)
{
$result = HelpService::status($id, $status);
return $this->back($result);
}
}

View File

@@ -0,0 +1,69 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\service\Member as MemberService;
use app\common\service\Menu as MenuService;
use think\Request;
class Index extends _Init
{
/**
* 后台首页
* @return [type] [description]
*/
public function index()
{
$this->user = MemberService::info(UID);
$this->menu = MenuService::show(UID);
return $this->fetch();
}
/**
* 个人信息
* @param Request $request 提交的信息 用户名
* @return [type] [description]
*/
public function info(Request $request)
{
if (IS_POST) {
$data = $request->post();
if (MemberService::editInfo(UID, $data, 'nickname') === true) {
return $this->success();
} else {
return $this->error(MemberService::getError());
}
} else {
$this->assign('info', MemberService::info(UID));
return $this->fetch();
}
}
/**
* 修改密码
* @param Request $request 数据集
* @return [type] [description]
*/
public function password(Request $request)
{
if (IS_POST) {
$old = $request->post('oldpass');
$new = $request->post('newpass');
$repass = $request->post('repass');
$result = MemberService::changePassword(UID, $old, $new, $repass);
return $this->back($result);
} else {
return $this->fetch();
}
}
public function main()
{
return $this->fetch();
}
}

View File

@@ -0,0 +1,67 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\service\Member as MemberService;
use think\Cookie;
use think\Request;
use tools\Initialize;
class Login extends Initialize
{
/**
* 登录页面 和 登录操作
* @param Request $request 提交的信息 用户名 密码 验证码 是否记住帐号
* @return [type] 返回登录结果信息
*/
public function index(Request $request)
{
if (IS_POST) {
$data = $request->post();
$res = $this->validate($data, [
'verify|验证码' => 'require|captcha',
]);
if ($res !== true) {
return $this->error($res);
}
$username = $request->post('username');
$password = $request->post('password');
$remember = $request->post('rememberMe');
if ($remember == true) {
Cookie::set('remember_username', $username);
}
if (MemberService::login($username, $password) === true) {
return ['code' => 1, 'msg' => '登录成功'];
} else {
return ['code' => 0, 'msg' => '登录失败'];
}
} else {
if (self::isLogin()) {
$this->redirect('/');
}
return $this->fetch();
}
}
/**
* 退出登陆
*/
public function logout()
{
$result = MemberService::logout();
if (MemberService::logout() === true) {
return ['code' => 1, 'msg' => '退出成功'];
} else {
return ['code' => 0, 'msg' => '退出失败'];
}
}
}

View File

@@ -0,0 +1,23 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
class Logs extends _Init
{
public function index()
{
#Todo...
}
public function system()
{
#Todo..
}
}

View File

@@ -0,0 +1,79 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Member as MemberModel;
use app\common\model\MemberList as MemberListModel;
use app\common\service\Member as MemberService;
use think\Request;
class Member extends _Init
{
public function index()
{
$model = new MemberModel();
$model->alias('Member');
$model = $model->hasWhere('info');
$map = [
'Member.status' => ['gt', 0],
];
$this->list = $model->where($map)->order('Member.update_time desc')->paginate();
return $this->fetch();
}
/**
* 添加用户
* @param Request $request 用户的信息 username password
*/
public function add(Request $request)
{
if (IS_POST) {
$username = $request->post('username');
$password = $request->post('password');
$result = MemberService::register($username, $password);
return $this->back($result);
} else {
return $this->fetch();
}
}
/**
* 设置用户状态
* @param [type] $uid 用户id
* @param [type] $status 要设置的状态 true false 正常 禁用
* @return [type] [description]
*/
public function status($uid, $status)
{
$result = MemberService::status($uid, $status);
return $this->back($result);
}
/**
* 重置密码
* @param [type] $uid 用户id
* @return [type] [description]
*/
public function password(Request $request, $uid)
{
if (IS_POST) {
$password = $request->post('password');
$result = MemberService::updatePassword($uid, $password);
return $this->back($result);
} else {
$this->info = MemberModel::get($uid);
return $this->fetch();
}
}
public function junior($pid)
{
$this->list = MemberListModel::where('uid', $pid)->paginate();
return $this->fetch();
}
}

View File

@@ -0,0 +1,102 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Menu as MenuModel;
use app\common\service\Menu as MenuService;
use think\Db;
use think\Request;
use tools\Tree;
class Menu extends _Init
{
/**
* 菜单列表
* @param integer $pid 上级id
* @return [type] [description]
*/
public function index($pid = 0)
{
$this->list = MenuModel::where('status', 'egt', 0)->where('pid', $pid)->order('sort asc')->paginate();
$this->menu = MenuService::tree();
$this->info = MenuModel::get($pid);
return $this->fetch();
}
/**
* 添加菜单
* @param integer $pid 上级id
*/
public function add(Request $request, $pid = 0)
{
if (IS_POST) {
$data = $request->post();
$result = MenuService::add($data);
return $this->back($result);
} else {
$info['pid'] = $pid;
$this->info = $info;
$this->up_menus = self::_treeShow();
return $this->fetch();
}
}
/**
* 编辑菜单
* @param [type] $id 菜单id
* @return [type] [description]
*/
public function edit(Request $request, $id)
{
if (IS_POST) {
$data = $request->post();
$result = MenuService::edit($data);
return $this->back($result);
} else {
$this->info = MenuModel::get($id);
$this->up_menus = self::_treeShow($id);
return $this->fetch('add');
}
}
/**
* 删除菜单
* @param [type] $id 要删除的菜单id
* @return [type] [description]
*/
public function del($id)
{
$result = MenuService::del($id);
return $this->back($result);
}
/**
* 设置菜单状态
* @param [type] $id 要设置的菜单id
* @param [type] $status 要设置的状态 正常 和 禁用 true false
* @param [type] $type 要设置的字段 status
* @return [type] 返回操作的结果 成功 true 失败 返回失败的信息
*/
public function status($id, $status, $type)
{
$result = MenuService::status($id, $status, $type);
return $this->back($result);
}
private function _treeShow($id = 0)
{
$map = [];
if ($id) {
$map['id'] = ['neq', $id];
}
$menus = Db::name('Menu')->where($map)->order('sort asc')->select();
$menus = Tree::toFormatTree($menus);
$menus = array_merge([0 => ['id' => 0, 'title_show' => '顶级菜单']], $menus);
return $menus;
}
}

View File

@@ -0,0 +1,95 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Score as ScoreModel;
use app\common\model\ScoreRules as ScoreRulesModel;
use app\common\service\ScoreRules as ScoreRulesService;
use think\Request;
/**
* 积分
*/
class Score extends _Init
{
/**
* 列表
* @return [type] [description]
*/
public function index()
{
$this->list = ScoreModel::where('')->order('id desc')->paginate();
return $this->fetch('');
}
public function rules()
{
$this->list = ScoreRulesModel::where('status', 1)->paginate();
return $this->fetch('');
}
/**
* 添加规则
* @param Request $Request 数据集
*/
public function add(Request $Request)
{
if (IS_POST) {
$data = $Request->post();
$result = ScoreRulesService::create($data);
return $this->back($result);
} else {
return $this->fetch();
}
}
/**
* 编辑规则
* @param Request $Request 数据集
* @param [type] $id 规则id
* @return [type] 返回 编辑的结果
*/
public function edit(Request $Request, $id)
{
if (IS_POST) {
$data = $Request->post();
$result = ScoreRulesService::edit($data);
return $this->back($result);
} else {
$this->info = ScoreRulesModel::get($id);
return $this->fetch('add');
}
}
/**
* 删除规则
* @param [type] $id 规则id
* @return [type] [description]
*/
public function del($id)
{
$result = ScoreRulesService::del($id);
return $this->back($result);
}
/**
* 修改规则状态
* @param [type] $id 规则id
* @param [type] $status 状态
* @return [type] 修改规则结果
*/
public function status($id, $status)
{
$result = ScoreRulesService::status($id, $status);
return $this->back($result);
}
}

View File

@@ -0,0 +1,90 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Content as ContentModel;
use app\common\service\Content as ContentService;
use think\Request;
class Share extends _Init
{
/**
* 文章列表
* @param string $title 要搜索的文章标题
* @return [type] [description]
*/
public function index($title = '')
{
$CategoryIds = ContentService::getCategoryIds('share');
$map = [
'status' => ['egt', 0],
'title' => ['like', "%$title%"],
'category_id' => ['in', $CategoryIds],
];
$this->list = ContentModel::where($map)->order('create_time desc')->paginate();
return $this->fetch();
}
/**
* 添加文章
* @param Request $Request 数据集
*/
public function add(Request $Request)
{
if (IS_POST) {
$data = $Request->post();
$result = ContentService::create($data);
return $this->back($result);
} else {
$this->list = ContentService::categoryList('share');
return $this->fetch();
}
}
/**
* 编辑文章
* @param Request $Request 数据集
* @param [type] $id 文章id
* @return [type] 返回 编辑的结果
*/
public function edit(Request $Request, $id)
{
if (IS_POST) {
$data = $Request->post();
$result = ContentService::edit($data);
return $this->back($result);
} else {
$this->list = ContentService::categoryList('share');
$this->info = ContentModel::get($id);
return $this->fetch('add');
}
}
/**
* 删除文章
* @param [type] $id 文章id
* @return [type] [description]
*/
public function del($id)
{
$result = ContentService::del($id);
return $this->back($result);
}
/**
* 修改文章状态
* @param [type] $id 文章id
* @param [type] $status 状态
* @return [type] 修改文章结果
*/
public function status($id, $status)
{
$result = ContentService::status($id, $status);
return $this->back($result);
}
}

View File

@@ -0,0 +1,106 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\JobLog as JobLogModel;
use app\common\model\Logs as LogsModel;
use app\common\model\Storage as StorageModel;
use app\common\service\Storage as StorageService;
use think\Response;
class Storage extends _Init
{
/**
* 资源管理
* @param string $type [description]
*/
public function index($type = '')
{
$map = [];
if ($type) {
$map['type'] = $type;
}
$this->assign('total', StorageService::total($map));
$this->assign('types', StorageService::types());
$this->assign('disk_use', StorageService::diskUse());
$list = StorageModel::where($map)->order('id desc')->paginate();
$this->assign('list', $list);
return $this->fetch();
}
/**
* 日志管理
*/
public function logs()
{
$list = LogsModel::order('id desc')->paginate();
$this->assign('list', $list);
return $this->fetch();
}
public function queue()
{
$list = JobLogModel::order('id desc')->paginate();
$this->assign('list', $list);
return $this->fetch();
}
/**
* 上传单文件
* @param string $type [description]
* @return [type] [description]
*/
public function upload($type = '')
{
if (!in_array($type, ['image', 'file', 'video', 'audio'])) {
$result = ['code' => 0, 'msg' => '不支持的上传类型'];
} else {
$result = StorageService::upload($type);
}
if (is_array($result) && !empty($result) && !isset($result['code'])) {
$ret = [
'code' => 1,
'data' => $result,
];
} else {
$ret = [
'code' => 0,
'msg' => $result,
];
}
return Response::create($ret, 'json');
}
/**
* 编辑器上传文件
*/
public function editor()
{
$result = StorageService::upload('file');
if (is_array($result) && !empty($result)) {
$res = [
'code' => 0,
'data' => [
'src' => $result['path'],
'title' => $result['name'],
],
];
} else {
$res = [
'code' => 1,
'msg' => $result,
];
}
return Response::create($res, 'json');
}
}

View File

@@ -0,0 +1,28 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Suggest as SuggestModel;
class Suggest extends _Init
{
/**
* 反馈列表
* @return [type] [description]
*/
public function index()
{
$this->list = SuggestModel::where('')->paginate();
return $this->fetch();
}
}

View File

@@ -0,0 +1,32 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\VipOrder;
use app\common\service\Vip as VipService;
class Vip extends _Init
{
public function index($title = '')
{
$map = [];
if (!empty($title)) {
$ids = VipService::getIds($title);
$map['uid'] = ['in', $ids];
}
$this->list = VipOrder::where($map)->order('create_time desc')->paginate();
return $this->fetch('');
}
public function info($id)
{
$this->list = VipOrder::where('uid', $id)->paginate();
return $this->fetch('');
}
}

View File

@@ -0,0 +1,109 @@
<?php
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Auth as AuthModel;
use app\common\model\AuthUser as AuthUserModel;
use think\Config;
use think\Db;
use tools\Initialize;
class _Init extends Initialize
{
public function _initialize()
{
define('UID', self::isLogin());
if (!UID) {
$this->redirect('login/index');
}
if (!$this->checkAuth(UID, CONTROLLER_NAME . '/' . ACTION_NAME)) {
return $this->error('没有操作权限');
}
}
/**
* 操作成功跳转的快捷方法
* @access protected
* @param mixed $msg 提示信息
* @param string $url 跳转的URL地址
* @param mixed $data 返回的数据
* @param integer $wait 跳转等待时间
* @param array $header 发送的Header信息
* @return void
*/
protected function success($msg = '', $url = null, $data = '', $wait = 3, array $header = [])
{
$msg = $msg ?: '操作成功';
return parent::success($msg, $url, $data, $wait, $header);
}
/**
* 操作错误跳转的快捷方法
* @access protected
* @param mixed $msg 提示信息
* @param string $url 跳转的URL地址
* @param mixed $data 返回的数据
* @param integer $wait 跳转等待时间
* @param array $header 发送的Header信息
* @return void
*/
protected function error($msg = '', $url = null, $data = '', $wait = 3, array $header = [])
{
$msg = $msg ?: '未知错误';
return parent::error($msg, $url, $data, $wait, $header);
}
protected function back($result)
{
if ($result === true) {
return $this->success();
} else {
return $this->error($result);
}
}
/**
* 检查授权
* @param [type] $uid 用户id
* @param [type] $node 节点名 menu/index
* @return [type] [description]
*/
public function checkAuth($uid, $node)
{
//查询设置的超级管理的ids
$adminUsers = Config::get('administrator');
if (!in_array($uid, $adminUsers)) {
//获取当前页的菜单id
$nodes = Db::name('Menu')->where('url', $node)->value('id');
if ($nodes) {
//获取当前用户的授权节点
$authId = AuthUserModel::where('uid', $uid)->column('auth_id');
$rules = AuthModel::where('id', 'in', $authId)->column('rules');
if ($rules) {
$rules = implode($rules, ',');
$rules = explode(',', $rules);
$rules = array_unique($rules);
if (in_array($nodes, $rules)) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return true;
}
} else {
return true;
}
}
}

View File

@@ -0,0 +1,118 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item ">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入名称" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类</label>
<div class="layui-input-inline">
<select name="category_id">
<option value="0">请选择文类</option>
{volist name="list" id="vo"}
<option {eq name="info.category_id|default=''" value="$vo.id"}selected{/eq} value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">封面</label>
<div class="site-demo-upload">
<img id="LAY_demo_upload" src="{$info.cover.path|default='http://console.cnskl.com/static/system/images/avatar.jpg'}">
<div class="site-demo-upbar">
<input type="file" class="layui-upload-file" value="" name="image" id="image">
<input type="hidden" name="storage_id" class="storage_id" value="{$info.storage_id|default=''}">
</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<textarea placeholder="请输入内容" name="description" class="layui-textarea"> {$info.description|default=''}</textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<script id="ueditor" name="content" type="text/plain">{$info.content|default=''}</script>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id|default=''}">
{/present}
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="submit"> <i class="layui-icon">&#xe650;</i> 发布 </button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.all.min.js"> </script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/lang/zh-cn/zh-cn.js"></script>
<script type="text/javascript">
var ue = UE.getEditor('ueditor', {
autoHeightEnabled: false,
initialFrameHeight:450
});
layui.use(['upload', 'form'], function() {
var $ = layui.jquery, form = layui.form();
form.on('submit(submit)', function(data) {
ue.sync();
delete data.field.file;
delete data.field.image;
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
layui.upload({
url: "{:url('storage/upload')}?type=image",
title: '图片上传',
elem: '#image',
method: 'post',
type: 'image',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
LAY_demo_upload.src = res.data.path;
$('.storage_id').val(res.data.id);
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
});
</script>
{/block}

View File

@@ -0,0 +1,126 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('article/add')}" id="add"><i class="layui-icon">&#xe654;</i> 添加信息</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('article/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑信息</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('article/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除信息</button>
<form class="layui-form" action="__SELF__" style="float:right">
<div class="layui-inline">
<input name="title" value="{$Think.get.title}" lay-verify="title" placeholder="请输入标题" autocomplete="off" class="layui-input title" type="tel">
</div>
<div class="layui-inline">
<button class="layui-btn btn-yellow" >查询</button>
</div>
<div class="layui-inline">
<!-- <submit class="layui-btn doexp" >导出</submit> -->
</div>
</form>
<div style="clear:both"></div>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>编号</th>
<th>所属用户</th>
<th>内容标题</th>
<th>状态</th>
<th>创建时间</th>
<th>更新时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.user.nickname}</td>
<td>{$vo.title}</td>
<td><input type="checkbox" name="close" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['750px', '90%'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
form.on('switch(status)', function(data) {
$.get("{:url('article/status')}", {id: $(data.elem).data('id'), status: data.elem.checked}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#add').on('click', function() {
layer.open({
type: 2,
area: ['750px', '90%'],
content: $(this).data('href')
});
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,52 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<textarea placeholder="请输入内容" name="content" class="layui-textarea"> {$info.content|default=''}</textarea>
</div>
</div>
<div class="layui-form-item ">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input type="text" name="sort" lay-verify="required" placeholder="请输入排序" autocomplete="off" class="layui-input" value="{$info.sort|default='0'}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id|default=''}">
{/present}
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="submit"> <i class="layui-icon">&#xe650;</i> 发布 </button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['upload', 'layedit', 'form'], function() {
var $ = layui.jquery, form = layui.form();
var layedit = layui.layedit;
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,113 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('articlemodel/add')}" id="add"><i class="layui-icon">&#xe654;</i> 添加信息</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('articlemodel/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑信息</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('articlemodel/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除信息</button>
<div style="clear:both"></div>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>编号</th>
<th>内容样式</th>
<th>状态</th>
<th>创建时间</th>
<th>更新时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.content}</td>
<td><input type="checkbox" name="close" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['600px', '75%'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
form.on('switch(status)', function(data) {
$.get("{:url('articlemodel/status')}", {id: $(data.elem).data('id'), status: data.elem.checked}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#add').on('click', function() {
layer.open({
type: 2,
area: ['750px', '700px'],
content: $(this).data('href')
});
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,49 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item">
<label class="layui-form-label">分组名称</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入分组名称" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">分组备注</label>
<div class="layui-input-block">
<textarea name="remark" class="layui-textarea">{$info.remark|default=''}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id}">
{/present}
<button class="layui-btn" lay-submit="" lay-filter="submit">保存编辑</button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(data) {
if (data.code == 1) {
layer.msg(data.msg, {icon: data.code, time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(data.msg, {icon: 2, time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,136 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('auth/add')}" id="add"><i class="layui-icon">&#xe654;</i> 新增分组</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('auth/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑分组</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('auth/menu')}" id="menu"><i class="layui-icon">&#xe632;</i> 菜单授权</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('auth/user')}" id="user"><i class="layui-icon">&#xe60c;</i> 用户授权</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('auth/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除分组</button>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>ID</th>
<th>分组名称</th>
<th>更新时间</th>
<th>状态</th>
<th>备注</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.title}</td>
<td>{$vo.update_time}</td>
<td><input type="checkbox" name="close" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.remark}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
form.on('switch(status)', function(data) {
$.get("{:url('auth/status')}", {id: $(data.elem).data('id'), status: data.elem.checked}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#add').on('click', function(e) {
layer.open({
type: 2,
area: ['400px', '320px'],
content: $(this).data('href')
});
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['400px', '320px'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
$('#menu').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['100%', '100%'],
content: $this.data('href') + '?id=' + nodes[0]
});
}
});
$('#user').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['100%', '100%'],
content: $this.data('href') + '?id=' + nodes[0]
});
}
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,65 @@
{extend name="public/base" /}
{block name="body"}
<form method="post" class="layui-form admin-main" action="__SELF__">
<table class="layui-table">
<tbody>
{volist name="node_list" id="vo"}
<tr class="main_{$vo.id}">
<td width="200" rowspan="{:count($vo['children']??'') ?: 1}">
<input name="rules[{$vo.id}]" type="checkbox" lay-filter="status" title="{$vo.title}" value="{$vo.id}" {$vo.checked} data-id="{$vo.id}" />
</td>
{eq name="vo['children']??''|count" value="0"}
<td></td>
<td></td>
{/eq}
{volist name="vo.children|default=''" id="c1" key="row"}
{gt name="row" value="1"}
<tr class="main_{$vo.id}">
{/gt}
<td width="200">
<input name="rules[{$c1.id}]" type="checkbox" lay-filter="status" title="{$c1.title}" value="{$c1.id}" {$c1.checked} data-id="{$c1.id}" />
</td>
<td class="left two_{$c1.id}">
{volist name="c1.children|default=''" id="s1"}
<input name="rules[{$s1.id}]" type="checkbox" lay-filter="status" title="{$s1.title}" value="{$s1.id}" {$s1.checked}>
{/volist}
</td>
</tr>
{/volist}
{/volist}
</tbody>
</table>
<button class="layui-btn" lay-submit lay-filter="submit">保存授权</button>
</form>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(status)', function(data) {
var $this = $(this);
var id = $this.attr('data-id');
$(".main_" + id).find('input').prop('checked', $this.prop('checked'))
$(".two_" + id).find('input').prop('checked', $this.prop('checked'))
form.render('checkbox');
});
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(data) {
if (data.code == 1) {
layer.msg(data.msg, {icon: data.code, time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
});
} else {
layer.msg(data.msg, {icon: 2, time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,160 @@
{extend name="public/base" /}
{block name="body"}
<div class="x7">
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('auth/remove')}" id="del"><i class="layui-icon">&#xe640;</i> 移除授权</button>
已授权用户
</blockquote>
<div class="layui-form admin-main" id="authed">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>UID</th>
<th>用户名</th>
<th>昵称</th>
<th>创建时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.username}</td>
<td>{$vo.info.nickname}</td>
<td>{$vo.auth_user.create_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
</div>
<div class="x5" style="padding-left:10px;box-sizing:border-box;">
<blockquote class="layui-elem-quote">
添加用户到分组
</blockquote>
<div class="layui-form">
<form class="layui-form-pane" action="__SELF__">
<div class="layui-form-item">
<div class="layui-input-inline">
<input type="text" name="username" lay-verify="required" placeholder="请输用户名/UID" autocomplete="off" class="layui-input">
</div>
<div class="layui-input-inline">
<button class="layui-btn" lay-submit lay-filter="search">搜索</button>
</div>
</div>
</form>
<div id="view"></div>
</div>
</div>
<script id="demo" type="text/html">
<div class="layui-form">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>UID</th>
<th>用户名</th>
<th>姓名</th>
</tr>
</thead>
<tbody>
{{# layui.each(d.data, function(index, item){ }}
<tr>
<td><input type="checkbox" data-id="{{ item.id }}" lay-filter="id" lay-skin="primary"></td>
<td>{{ item.id }}</td>
<td>{{ item.username }}</td>
<td>{{ item.nickname }}</td>
</tr>
{{# }); }}
{{# if(d.data.length === 0){ }}
<tr>
<td colspan="3" align="center">未找到相关用户</td>
</tr>
{{# } }}
</tbody>
</table>
{{# if(d.data.length > 0){ }}
<button class="layui-btn" onclick="layui.laytpl.add()">授权至分组</button>
{{# } }}
</div>
</script>
{/block}
{block name="layui"}
<script>
layui.use(['form', 'laytpl', 'element'], function(){
var $ = layui.jquery, form = layui.form(), laytpl = layui.laytpl;
var element = layui.element();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
form.on('submit(search)', function(data) {
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
//第三步:渲染模版
var getTpl = demo.innerHTML;
laytpl(getTpl).render(res, function(html) {
view.innerHTML = html;
form.render();
element.init();
});
} else {
layer.msg(res.msg, {icon: 0, time: 1000});
}
});
return false;
});
$('#del').on('click', function(e) {
var $this = $(this);
var nodes = getSelected('authed');
var id = {$Think.get.id};
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
$.post($this.data('href'), {id: id, uid: nodes}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
location.reload();
});
});
}
});
laytpl.add = function() {
var nodes = getSelected('view');
var id = {$Think.get.id};
if (nodes.length < 1) {
layer.msg('请选择一个要操作的用户');
} else {
$.post("{:url('auth/insert')}", {id: id, uid: nodes}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
location.reload();
});
});
}
};
function getSelected(elem) {
var child = $('#' + elem).find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,56 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item">
<label class="layui-form-label">Banner名称</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="" placeholder="请输入Banner名称" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">显示上限</label>
<div class="layui-input-block">
<input type="text" name="limit" lay-verify="" placeholder="请输入显示上限" autocomplete="off" class="layui-input" value="{$info.limit|default=3}">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">备注信息</label>
<div class="layui-input-block">
<textarea name="remark" class="layui-textarea">{$info.remark|default=''}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id}">
<button class="layui-btn" lay-submit lay-filter="submit">编辑Banner</button>
{else /}
<button class="layui-btn" lay-submit lay-filter="submit">新增Banner</button>
{/present}
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,90 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="" placeholder="请输入标题" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">封面图片</label>
<div class="layui-input-block layui-textarea" >
<div class="site-demo-upload center-block">
<img id="LAY_upload" src="{$info.cover|default='__IMG__/avatar.jpg'}">
<div class="site-demo-upbar">
<input type="file" class="layui-upload-file" name="image" id="image">
<input type="hidden" name="storage_id" id="LAY_sid" value="{$info.storage_id|default=0}">
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">连接地址</label>
<div class="layui-input-block">
<input type="text" name="url" lay-verify="" placeholder="请输入连接地址" autocomplete="off" class="layui-input" value="{$info.url|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input type="text" name="sort" lay-verify="" placeholder="请输入排序" autocomplete="off" class="layui-input" value="{$info.sort|default=0}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id}">
<button class="layui-btn" lay-submit lay-filter="submit">编辑Banner</button>
{else /}
<button class="layui-btn" lay-submit lay-filter="submit">新增Banner</button>
{/present}
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form', 'upload'], function(){
var $ = layui.jquery, form = layui.form();
layui.upload({
url: "{:url('storage/upload')}?type=image",
title: '图片上传',
elem: '#image',
method: 'post',
type: 'image',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
LAY_upload.src = res.data.path;
LAY_sid.value = res.data.id;
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,115 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<a class="layui-btn layui-btn-primary layui-btn-small" href="{:url('banner/index')}"><i class="layui-icon">&#xe603;</i> 返回</a>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('banner/banadd','advert_id='.input('advert_id'))}" id="add"><i class="layui-icon">&#xe654;</i> 新增轮播</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('banner/banedit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑轮播</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('banner/bandel')}" id="del"><i class="layui-icon">&#xe640;</i> 删除轮播</button>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th width="200">标题</th>
<th width="200">图片</th>
<th>连接地址</th>
<th width="60">排序</th>
<th width="60">点击</th>
<th width="60">状态</th>
<th width="120">更新时间</th>
</tr>
</thead>
<tbody>
{volist name="info.detail" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.title}</td>
<td><img src="{$vo.cover}" width="200" alt=""></td>
<td>{$vo.url}</td>
<td>{$vo.sort}</td>
<td>{$vo.click}</td>
<td><input type="checkbox" name="close" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var form = layui.form(), $ = layui.jquery;
form.on('checkbox(allChoose)', function(data){
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item){
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('#add').on('click', function(e) {
layer.open({
type: 2,
area: ['600px', '600px'],
content: $(this).data('href')
});
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['600px', '600px'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
form.on('switch(status)', function(data) {
$.get("{:url('banner/banstatus')}", {id: $(data.elem).data('id'), status: data.elem.checked, type: 'status'}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,123 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('banner/add')}" id="add"><i class="layui-icon">&#xe654;</i> 添加广告组</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('banner/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑广告组</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('banner/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除广告组</button>
<form class="layui-form" action="__SELF__" style="float:right">
<div class="layui-inline">
<input type="text" name="title" autocomplete="off" placeholder="请输入广告组名称" value="{$Think.get.title|default=''}" class="layui-input">
</div>
<div class="layui-inline">
<button class="layui-btn">搜索</button>
</div>
</form>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th width="40">ID</th>
<th width="200">Banner名称</th>
<th width="40">显示</th>
<th width="40">数量</th>
<th>说明</th>
<th width="60">状态</th>
<th width="120">创建时间</th>
<th width="120">更新时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td><a href="{:url('banner/detail')}?advert_id={$vo.id}">{$vo.title}</a></td>
<td>{$vo.limit}</td>
<td>{$vo->detail()->count()}</td>
<td>{$vo.remark}</td>
<td><input type="checkbox" name="close" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var form = layui.form(), $ = layui.jquery;
form.on('checkbox(allChoose)', function(data){
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item){
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('#add').on('click', function(e) {
layer.open({
type: 2,
area: ['600px', '450px'],
content: $(this).data('href')
});
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['600px', '450px'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
form.on('switch(status)', function(data) {
$.get("{:url('banner/status')}", {id: $(data.elem).data('id'), status: data.elem.checked, type: 'status'}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,114 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item">
<label class="layui-form-label">分类名称</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入分类名称" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类模型</label>
<div class="layui-input-inline">
<select name="model">
{volist name="Think.config.category_model" id="model"}
<option {eq name="info.model|default=''" value="$key"}selected{/eq} value="{$key}">{$model}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上级分类</label>
<div class="layui-input-inline">
<select name="pid">
{volist name="up_cates" id="vo"}
<option {eq name="info.pid|default=''" value="$vo.id"}selected{/eq} value="{$vo.id}">{$vo.title_show}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item" pane="">
<label class="layui-form-label">分类状态</label>
<div class="layui-input-block">
<input type="checkbox" name="status" lay-skin="switch" lay-text="ON|OFF" {eq name="info.status|default=1" value="1"}checked=""{/eq}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类排序</label>
<div class="layui-input-inline">
<input type="text" name="sort" placeholder="请输入分类排序" autocomplete="off" class="layui-input" value="{$info.sort|default=0}">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">封面</label>
<div class="site-demo-upload">
<img id="LAY_demo_upload" src="{$info.cover|default='http://console.cnskl.com/static/system/images/avatar.jpg'}">
<div class="site-demo-upbar">
<input type="file" class="layui-upload-file" value="" name="image" id="image">
<input type="hidden" name="storage_id" class="storage_id" value="{$info.storage_id|default=''}">
</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">分类简介</label>
<div class="layui-input-block">
<textarea name="description" class="layui-textarea">{$info.description|default=''}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input type="hidden" name="id" value="{$info.id|default=''}">
<button class="layui-btn" lay-submit lay-filter="submit">保存编辑</button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form','upload'], function(){
var $ = layui.jquery, form = layui.form();
form.on('submit(submit)', function(data) {
delete data.field.image;
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
layui.upload({
url: "{:url('storage/upload')}?type=image",
title: '图片上传',
elem: '#image',
method: 'post',
type: 'image',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
LAY_demo_upload.src = res.data.path;
$('.storage_id').val(res.data.id);
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
});
</script>
{/block}

View File

@@ -0,0 +1,136 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-side-scroll" style="border-right:1px solid #ccc;position:fixed;">
<ul id="menu-tree"></ul>
</div>
<div style="margin-left:230px;">
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('category/add', ['pid' => input('pid')])}" id="add"><i class="layui-icon">&#xe654;</i> 新增分类</button>
{notempty name="Think.get.pid|default=0" value="0"}
<a class="layui-btn layui-btn-primary layui-btn-small" href="{:url('category/index')}?pid={$info['pid']}"><i class="layui-icon">&#xe603;</i> 返回</a>
{/notempty}
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('category/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑分类</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('category/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除分类</button>
<button type="button" class="layui-btn layui-btn-small " onclick="location.reload();" ><i class="layui-icon">&#x1002;</i> 刷新</button>
</blockquote>
{notempty name="Think.get.pid|default=0" value="0"}
<fieldset class="layui-elem-field">
<legend>上级分类</legend>
<div class="layui-field-box">
{$info.title} : {$info.description}
</div>
</fieldset>
{/notempty}
<div class="layui-form">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>分类名称</th>
<th>所属</th>
<th>排序</th>
<th>状态</th>
<th>描述</th>
<th width="120">添加时间</th>
<th width="120">更新时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td><a href="{:url('category/index')}?pid={$vo.id}">{$vo.title}</a></td>
<td>{$vo.model}</td>
<td>{$vo.sort}</td>
<td><input type="checkbox" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.description}</td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
</div>
{/block}
{block name="layui"}
<script>
layui.use(['tree', 'form'], function(){
var form = layui.form(), $ = layui.jquery;
layui.tree({
elem: '#menu-tree'
,nodes: {$menu}
});
$('#add').on('click', function(e) {
layer.open({
type: 2,
title: $(this).html(),
area: ['500px', '750px'],
content: $(this).data('href')
});
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['500px', '750px'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
form.on('checkbox(allChoose)', function(data){
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item){
item.checked = data.elem.checked;
});
form.render('checkbox');
});
form.on('switch(status)', function(data) {
$.get("{:url('category/status')}", {id: $(data.elem).data('id'), status: data.elem.checked, type: 'status'}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,128 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item ">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入名称" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类</label>
<div class="layui-input-inline">
<select name="category_id">
<option value="0">请选择文类</option>
{volist name="list" id="vo"}
<option {eq name="info.category_id|default=''" value="$vo.id"}selected{/eq} value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">封面</label>
<div class="site-demo-upload">
<img id="LAY_demo_upload" src="{$info.cover|default='http://console.cnskl.com/static/system/images/avatar.jpg'}">
<div class="site-demo-upbar">
<input type="file" class="layui-upload-file" value="" name="image" id="image">
<input type="hidden" name="storage_id" class="storage_id" value="{$info.storage_id|default=''}">
</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<textarea placeholder="请输入内容" name="description" class="layui-textarea"> {$info.description|default=''}</textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<!-- <textarea name="content" id="demo" style="display: none;">{$info.content|default=''}</textarea> -->
<script id="ueditor" name="content" type="text/plain">{$info.content|default=''}</script>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id|default=''}">
{/present}
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="submit"> <i class="layui-icon">&#xe650;</i> 发布 </button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.all.min.js"> </script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/lang/zh-cn/zh-cn.js"></script>
<script type="text/javascript">
var ue = UE.getEditor('ueditor', {
autoHeightEnabled: false,
initialFrameHeight:450
});
layui.use(['upload', 'layedit', 'form'], function() {
var $ = layui.jquery, form = layui.form();
var layedit = layui.layedit;
var edit = layedit.build('demo', {
uploadImage: {
url: "{:url('storage/editor')}"
,type: 'post'
}
});
form.on('submit(submit)', function(data) {
ue.sync();
// data.field.content = layedit.getContent(edit);
delete data.field.file;
delete data.field.image;
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
layui.upload({
url: "{:url('storage/upload')}?type=image",
title: '图片上传',
elem: '#image',
method: 'post',
type: 'image',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
LAY_demo_upload.src = res.data.path;
$('.storage_id').val(res.data.id);
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
});
</script>
{/block}

View File

@@ -0,0 +1,126 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('cause/add')}" id="add"><i class="layui-icon">&#xe654;</i> 添加介绍</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('cause/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑介绍</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('cause/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除介绍</button>
<form class="layui-form" action="__SELF__" style="float:right">
<div class="layui-inline">
<input name="title" value="{$Think.get.title}" lay-verify="title" placeholder="请输入标题" autocomplete="off" class="layui-input title" type="tel">
</div>
<div class="layui-inline">
<button class="layui-btn btn-yellow" >查询</button>
</div>
<div class="layui-inline">
<!-- <submit class="layui-btn doexp" >导出</submit> -->
</div>
</form>
<div style="clear:both"></div>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>编号</th>
<th>所属分类</th>
<th>介绍标题</th>
<th>状态</th>
<th>创建时间</th>
<th>更新时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.category.title}</td>
<td>{$vo.title}</td>
<td><input type="checkbox" name="close" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['600px', '75%'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
form.on('switch(status)', function(data) {
$.get("{:url('cause/status')}", {id: $(data.elem).data('id'), status: data.elem.checked}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#add').on('click', function() {
layer.open({
type: 2,
area: ['750px', '700px'],
content: $(this).data('href')
});
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,101 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item">
<label class="layui-form-label">配置标题</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入配置标题" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">参数名称</label>
<div class="layui-input-block">
<input type="text" name="name" lay-verify="required" placeholder="请输入参数名称" autocomplete="off" class="layui-input" value="{$info.name|default=''}">
</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="请输入配置排序" value="0" autocomplete="off" class="layui-input" value="{$info.sort|default=''}">
</div>
</div>
<div class="layui-form-item" pane="">
<label class="layui-form-label">配置状态</label>
<div class="layui-input-block">
<input type="checkbox" name="status" lay-skin="switch" lay-text="ON|OFF" {eq name="info.status|default=1" value="1"}checked=""{/eq}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">配置类型</label>
<div class="layui-input-inline">
<select name="type">
{volist name="Think.config.config_type_list" id="type"}
<option {eq name="info.type|default=''" value="$key"}selected{/eq} value="{$key}">{$type}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">配置分组</label>
<div class="layui-input-inline">
<select name="group">
<option value="">不分组...</option>
{volist name="Think.config.config_group_list" id="group"}
<option {eq name="info.group|default=''" value="$key"}selected{/eq} value="{$key}">{$group}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">配置默认值</label>
<div class="layui-input-block">
<textarea name="value" lay-verify="required" class="layui-textarea">{$info.value|default=''}</textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">配置项(仅枚举类型有效)</label>
<div class="layui-input-block">
<textarea name="extra" class="layui-textarea">{$info.extra|default=''}</textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">配置说明</label>
<div class="layui-input-block">
<textarea name="remark" class="layui-textarea">{$info.remark|default=''}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id}">
{/present}
<button class="layui-btn" lay-submit lay-filter="submit">新增配置</button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,92 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane" action="__SELF__">
<div class="admin-main">
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
{volist name="Think.config.config_group_list" id="group"}
<li class="{eq name="key" value="1"}layui-this{/eq}">{$group}</li>
{/volist}
</ul>
<div class="layui-tab-content">
{volist name="Think.config.config_group_list" id="group"}
<div class="layui-tab-item {eq name="key" value="1"}layui-show{/eq}">
{foreach name="list" item="config" key="clvo"}
{eq name="config.group" value="$key"}
{switch name="config.type"}
{case value="0"}
<div class="layui-form-item">
<label class="layui-form-label">{$config.title}</label>
<div class="layui-input-inline">
<input type="text" name="config[{$config.name}]" value="{$config.value}" class="layui-input">
</div>
</div>
{/case}
{case value="1"}
<div class="layui-form-item">
<label class="layui-form-label">{$config.title}</label>
<div class="layui-input-block">
<input type="text" name="config[{$config.name}]" value="{$config.value}" class="layui-input">
</div>
</div>
{/case}
{case value="2"}
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">{$config.title}</label>
<div class="layui-input-block">
<textarea name="config[{$config.name}]" class="layui-textarea">{$config.value}</textarea>
</div>
</div>
{/case}
{case value="3"}
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">{$config.title}</label>
<div class="layui-input-block">
<textarea name="config[{$config.name}]" class="layui-textarea">{$config.value}</textarea>
</div>
</div>
{/case}
{case value="4"}
<div class="layui-form-item">
<label class="layui-form-label">{$config.title}</label>
<div class="layui-input-inline">
<select name="config[{$config.name}]" class="form-control chosen-select">
<option value=""></option>
{volist name="config.extra_array" id="enum"}
<option value="{$key}" {eq name="config.value" value="$key"}selected{/eq}>{$enum}</option>
{/volist}
</select>
</div>
</div>
{/case}
{/switch}
{/eq}
{/foreach}
</div>
{/volist}
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="submit">立即提交</button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script>
layui.use(['element', 'form'], function(){
var element = layui.element(), form = layui.form(), $ = layui.jquery;
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,126 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('config/add')}" id="add"><i class="layui-icon">&#xe654;</i> 新增参数</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('config/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑参数</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('config/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除参数</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('config/clear')}" id="clear"><i class="layui-icon">&#x1002;</i> 清除缓存</button>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>编号</th>
<th>参数名称</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>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.name}</td>
<td>{$vo.title}</td>
<td>{$vo.type_text}</td>
<td>{$vo.group_text}</td>
<td>{$vo.sort}</td>
<td><input type="checkbox" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.value_text}</td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var form = layui.form(), $ = layui.jquery;
form.on('checkbox(allChoose)', function(data){
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item){
item.checked = data.elem.checked;
});
form.render('checkbox');
});
form.on('switch(status)', function(data) {
$.get("{:url('config/status')}", {id: $(data.elem).data('id'), status: data.elem.checked, type: 'status'}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#add').on('click', function(e) {
layer.open({
type: 2,
area: ['600px', '700px'],
content: $(this).data('href')
});
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['600px', '700px'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
$('#clear').on('click', function(e) {
$.get($(this).data('href'), function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,78 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('database/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除备份</button>
<span class="pull-right text-muted">备份文件下载,请到服务器站点备份目录中下载</span>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>备份名称</th>
<th>卷数</th>
<th>压缩</th>
<th>数据大小</th>
<th>备份时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-time="{$vo.time}" lay-filter="time" lay-skin="primary"></td>
<td>{$vo.time|date='Ymd-His',###}</td>
<td>{$vo.part}</td>
<td>{$vo.compress}</td>
<td>{$vo.size}</td>
<td>{$key}</td>
</tr>
{/volist}
</tbody>
</table>
</div>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form'], function() {
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="time"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请至少选择一个备份');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.post($this.data('href'), {time: nodes}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="time"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('time');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,114 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('database/backup')}" id="backup"><i class="layui-icon">&#xe622;</i> 备份数据库</button>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th width="30">编号</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>
<td><input type="checkbox" data-name="{$vo.name}" lay-filter="name" lay-skin="primary"></td>
<td>{$i}</td>
<td>{$vo.name}</td>
<td>{$vo.rows}</td>
<td>{$vo.engine}</td>
<td>{$vo.data_length}</td>
<td>{$vo.index_length}</td>
<td>{$vo.create_time}</td>
<td width="120" class="info">未备份</td>
<td>{$vo.comment}</td>
</tr>
{/volist}
</tbody>
</table>
</div>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="name"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
var $backup = $('#backup');
var tables = [];
$backup.on('click', function(e) {
tables = getSelected();
if (tables.length < 1) {
layer.msg('请至少选择一个数据表');
} else {
// 设置按钮禁用,防止重复点击
$backup.attr('disabled', 'disabled').addClass('layui-btn-disabled').text('发送备份请求');
$.post($backup.data('href'), {tables: tables}, function(res) {
if (res.code == 0) {
layer.msg(res.msg);
$backup.removeAttr('disabled').removeClass('layui-btn-disabled').html('<i class="layui-icon">&#xe622;</i> 备份数据库');
} else {
layer.msg(res.msg);
$backup.html("正在备份,请不要关闭本页面!");
backup(res.data);
}
});
}
});
function backup(table, status){
status && showmsg(table.id, "开始备份...(0%)");
$.get($backup.data("href"), table, function(res) {
if (res.code) {
showmsg(table.id, res.msg);
if (res.data == '') {
$backup.removeAttr('disabled').removeClass('layui-btn-disabled');
layer.msg(res.msg);
$backup.html('<i class="layui-icon">&#xe622;</i> 备份完成,点击重新备份');
return;
}
backup(res.data, table.id != res.data.id);
} else {
layer.msg(res.msg);
$backup.removeAttr('disabled').removeClass('layui-btn-disabled');
$backup.html('<i class="layui-icon">&#xe622;</i> 备份数据库');
}
}, "json");
}
function showmsg(id, msg) {
$('.layui-form').find("input[data-name=" + tables[id] + "]").closest("tr").find(".info").html(msg);
}
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="name"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('name');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,184 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item ">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入名称" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类</label>
<div class="layui-input-inline">
<select name="type" lay-filter="type" class="type">
<option value="">请选择文类</option>
<option value="article" {eq name="info.type|default=''" value="article"}selected{/eq}>文章</option>
<option value="video" {eq name="info.type|default=''" value="video"}selected{/eq}>视频</option>
<option value="audio" {eq name="info.type|default=''" value="audio"}selected{/eq}>音频</option>
</select>
</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="{$info.sort|default=''}">
</div>
</div>
<div class="layui-form-item uploadfile" {notin name="$info.type|default=''" value="video,audio"}style="display:none"{/notin}>
<label class="layui-form-label">上传文件</label>
<div class="layui-input-inline ">
<input type="hidden" name="ext_id" class="ext_id" value="">
<input name="{$info.type|default='file'}" class="layui-upload-file file" type="file">
<br><span class="path">{$info.ext_path|default=''}</span>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">封面</label>
<div class="site-demo-upload">
<img id="LAY_demo_upload" src="{$info.cover|default='http://console.cnskl.com/static/system/images/avatar.jpg'}">
<div class="site-demo-upbar">
{present name="info"}
<input type="hidden" name="id" value="{$info.id|default=''}">
{/present}
<input type="file" class="layui-upload-file" value="" name="image" id="image">
<input type="hidden" name="storage_id" class="storage_id" value="{$info.storage_id|default=''}">
</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<!-- <textarea name="content" id="demo" style="display: none;">{$info.content|default=''}</textarea> -->
<script id="ueditor" name="content" type="text/plain">{$info.content|default=''}</script>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id|default=''}">
{/present}
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="submit"> <i class="layui-icon">&#xe650;</i> 发布 </button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.all.min.js"> </script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/lang/zh-cn/zh-cn.js"></script>
<script type="text/javascript">
var ue = UE.getEditor('ueditor', {
autoHeightEnabled: false,
initialFrameHeight:450
});
layui.use(['upload', 'layedit', 'form'], function() {
var $ = layui.jquery, form = layui.form();
var layedit = layui.layedit;
var edit = layedit.build('demo', {
uploadImage: {
url: "{:url('storage/editor')}"
,type: 'post'
}
});
form.on('submit(submit)', function(data) {
ue.sync();
// data.field.content = layedit.getText(edit);
delete data.field.file;
delete data.field.article;
delete data.field.image;
delete data.field.video;
delete data.field.audio;
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
form.on('select(type)', function(data){
var val = data.value;
var ext='';
if (val=='video') {
ext = 'mp4';
};
if (val=='audio') {
ext = 'mp3';
};
if (val !='article') {
$('.uploadfile').css('display','block');
var url = "{:url('Storage/upload')}?type="+val;
// $('.file').attr('lay-type',val);
// $('.file').attr('lay-ext',ext);
$('.file').attr('name',val);
$('.file').parent(form).attr('action',url);
};
});
layui.upload({
url: "{:url('Storage/upload')}?type={$info.type|default=''}",
title: '文件上传',
type: 'audio|video',
ext:'mp3|mp4',
method: 'post',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
console.log(res);
$('.ext_id').val(res.data.id);
$(".file").remove();
$('.path').html(res.data.path);
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
layui.upload({
url: "{:url('storage/upload')}?type=image",
title: '图片上传',
elem: '#image',
method: 'post',
type: 'image',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
LAY_demo_upload.src = res.data.path;
$('.storage_id').val(res.data.id);
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
});
</script>
{/block}

View File

@@ -0,0 +1,131 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('direct/add')}" id="add"><i class="layui-icon">&#xe654;</i> 添加信息</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('direct/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑信息</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('direct/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除信息</button>
<form class="layui-form" action="__SELF__" style="float:right">
<div class="layui-inline">
<select name="type" lay-filter="status">
<option value="">分类</option>
<option {eq name="Think.get.type|default=''" value="video" }selected{/eq} value="video">视频</option>
<option {eq name="Think.get.type|default=''" value="audio" }selected{/eq} value="audio">音频</option>
<option {eq name="Think.get.type|default=''" value="article" }selected{/eq} value="article">文章</option>
</select>
</div>
<div class="layui-inline">
<input name="title" value="{$Think.get.title}" lay-verify="title" placeholder="请输入标题" autocomplete="off" class="layui-input title" type="tel">
</div>
<div class="layui-inline">
<button class="layui-btn btn-yellow" >查询</button>
</div>
</form>
<div style="clear:both"></div>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>编号</th>
<th>类型</th>
<th>内容标题</th>
<th>状态</th>
<th>创建时间</th>
<th>更新时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.type}</td>
<td>{$vo.title}</td>
<td><input type="checkbox" name="close" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['600px', '75%'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
form.on('switch(status)', function(data) {
$.get("{:url('direct/status')}", {id: $(data.elem).data('id'), status: data.elem.checked}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#add').on('click', function() {
layer.open({
type: 2,
area: ['750px', '700px'],
content: $(this).data('href')
});
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,109 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item ">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入名称" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类</label>
<div class="layui-input-inline" style="z-index:1000">
<select name="category">
<option value="">请选择分类</option>
{volist name="\think\Config::get('help_type')" id="vo"}
<option value="{$key}" {eq name="info.category|default=''" value="$key"}selected{/eq}>{$vo}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<!-- <textarea name="content" id="demo" style="display: none;">{$info.content|default=''}</textarea> -->
<script id="ueditor" name="content" type="text/plain">{$info.content|default=''}</script>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id|default=''}">
{/present}
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="submit"> <i class="layui-icon">&#xe650;</i> 发布 </button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.all.min.js"> </script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/lang/zh-cn/zh-cn.js"></script>
<script type="text/javascript">
var ue = UE.getEditor('ueditor', {
autoHeightEnabled: false,
initialFrameHeight:450
});
layui.use(['upload', 'layedit', 'form'], function() {
var $ = layui.jquery, form = layui.form();
var layedit = layui.layedit;
var edit = layedit.build('demo', {
uploadImage: {
url: "{:url('storage/editor')}"
,type: 'post'
}
});
form.on('submit(submit)', function(data) {
ue.sync();
// data.field.content = layedit.getContent(edit);
delete data.field.file;
delete data.field.image;
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
layui.upload({
url: "{:url('storage/upload')}?type=image",
title: '图片上传',
elem: '#image',
method: 'post',
type: 'image',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
LAY_demo_upload.src = res.data.path;
$('.storage_id').val(res.data.id);
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
});
</script>
{/block}

View File

@@ -0,0 +1,123 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('help/add')}" id="add"><i class="layui-icon">&#xe654;</i> 添加信息</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('help/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑信息</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('help/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除信息</button>
<form class="layui-form" action="__SELF__" style="float:right">
<div class="layui-inline">
<input name="title" value="{$Think.get.title}" lay-verify="title" placeholder="请输入标题" autocomplete="off" class="layui-input title" type="tel">
</div>
<div class="layui-inline">
<button class="layui-btn btn-yellow" >查询</button>
</div>
</form>
<div style="clear:both"></div>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>编号</th>
<th>所属分类</th>
<th>内容标题</th>
<th>状态</th>
<th>创建时间</th>
<th>更新时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.category}</td>
<td>{$vo.title}</td>
<td><input type="checkbox" name="close" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['600px', '75%'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
form.on('switch(status)', function(data) {
$.get("{:url('help/status')}", {id: $(data.elem).data('id'), status: data.elem.checked}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#add').on('click', function() {
layer.open({
type: 2,
area: ['750px', '700px'],
content: $(this).data('href')
});
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,71 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>{$Think.config.web_site_title} 管理系统</title>
<meta name="renderer" content="webkit" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<link rel="stylesheet" href="__STATIC__/plugins/layui/css/layui.css" media="all" />
<link rel="stylesheet" href="__STATIC__/css/global.css" media="all" />
<link rel="stylesheet" href="__STATIC__/plugins/font-awesome/css/font-awesome.min.css" />
</head>
<body>
<div class="layui-layout layui-layout-admin" style="border-bottom: solid 5px #1aa094;">
<div class="layui-header header header-demo">
<div class="layui-main">
<div class="admin-login-box">
<a class="logo" style="left: 0;" href="/"><span style="font-size:22px;">{$Think.config.web_site_title}</span></a>
<div class="admin-side-toggle"><i class="fa fa-backward"></i></div>
<div class="admin-side-full"><i class="fa fa-life-bouy"></i></div>
</div>
<ul class="layui-nav admin-header-item">
<!-- <li class="layui-nav-item">
<a href="javascript:;" id="msgShow" data-href="{:url('message/index')}">
<i class="fa fa-envelope"></i>
</a>
</li> -->
<li class="layui-nav-item">
<a href="javascript:;" class="admin-header-user"><img src="{$user.avatar|default='__IMG__/avatar.jpg'}" /><span> {$user.nickname}</span></a>
<dl class="layui-nav-child">
<dd><a href="{:url('index/info')}" id="userInfo"><i class="fa fa-user-circle"></i> 个人信息</a></dd>
<dd><a href="{:url('index/password')}" id="resetPass"><i class="fa fa-key"></i> 修改密码</a></dd>
<dd><a href="{:url('login/logout')}" id="logout"><i class="fa fa-sign-out"></i> 注销</a></dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="layui-side layui-bg-black" id="admin-side">
<div class="layui-side-scroll" id="admin-navbar-side" lay-filter="side"></div>
</div>
<div class="layui-body" id="admin-body">
<div class="layui-tab admin-nav-card layui-tab-brief" lay-filter="admin-tab">
<ul class="layui-tab-title">
<li class="layui-this"> <i class="fa fa-dashboard"></i>
<cite>控制面板</cite>
</li>
</ul>
<div class="layui-tab-content" style="min-height: 150px; padding:0">
<div class="layui-tab-item layui-show">
<iframe src="{:url('index/main')}"></iframe>
</div>
</div>
</div>
</div>
<div class="layui-footer footer footer-demo" id="admin-footer">
<div class="layui-main">
<p>&copy; {:date('Y')}</p>
</div>
</div>
<script type="text/javascript" src="__STATIC__/plugins/layui/layui.js"></script>
<script type="text/javascript">
var navs = {$menu};
</script>
<script src="__STATIC__/js/index.js"></script>
</div>
</body>
</html>

View File

@@ -0,0 +1,61 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item">
<label class="layui-form-label">用户昵称</label>
<div class="layui-input-block">
<input type="text" name="nickname" lay-verify="required" placeholder="请输入用户昵称" autocomplete="off" class="layui-input" value="{$info.nickname|default=''}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="submit">保存编辑</button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form', 'laydate', 'upload'], function(){
var $ = layui.jquery, form = layui.form();
layui.upload({
url: "{:url('storage/upload')}?type=image",
title: '图片上传',
elem: '#image',
method: 'post',
type: 'image',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
LAY_upload.src = res.data.path;
LAY_sid.value = res.data.id;
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

View File

@@ -0,0 +1,53 @@
{extend name="public/base" /}
{block name="body"}
<div style="margin: 15px;">
<form class="layui-form layui-form-pane" action="__SELF__">
<div class="layui-form-item">
<label class="layui-form-label">原始密码</label>
<div class="layui-input-block">
<input type="password" name="oldpass" required lay-verify="required" placeholder="请输入原始密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">新密码</label>
<div class="layui-input-block">
<input type="password" name="newpass" required lay-verify="required" placeholder="请输入新密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">确认密码</label>
<div class="layui-input-block">
<input type="password" name="repass" required lay-verify="required" placeholder="请输入确认密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="submit">修改密码</button>
</div>
</div>
</form>
</div>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,101 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>系统登录</title>
<link rel="stylesheet" href="__STATIC__/plugins/layui/css/layui.css" />
<link rel="stylesheet" href="__STATIC__/css/login.css" />
<link rel="stylesheet" href="__STATIC__/css/animate.min.css" />
<style type="text/css">
body {
background-image: url(__IMG__/bg{:rand(1,3)}.jpg);
}
</style>
</head>
<body>
<div class="mask"></div>
<div class="main">
<h1><span style="font-size: 84px;">Super.</span><span style="font-size:40px;">helper</span></h1>
<div class="enter">
<h2 class="animated">Click&nbsp;&nbsp;Here&nbsp;&nbsp;To&nbsp;&nbsp;Login</h2>
<form action="__SELF__" class="layui-form animated bounceInLeft" method="post">
<div class="layui-form-item">
<label class="login-icon"> <i class="layui-icon">&#xe612;</i> </label>
<input type="text" name="username" lay-verify="username" autocomplete="off" placeholder="请输入登录名" class="layui-input" value="{$Think.cookie.remember_username}" />
</div>
<div class="layui-form-item">
<label class="login-icon"> <i class="layui-icon">&#xe642;</i> </label>
<input type="password" name="password" lay-verify="password" autocomplete="off" placeholder="请输入密码" class="layui-input" />
</div>
<div class="layui-form-item">
<label class="login-icon"> <i class="layui-icon">&#xe642;</i> </label>
<input type="text" name="verify" lay-verify="verify" autocomplete="off" placeholder="请输入验证码" class="layui-input verify" />
<div class="code" style="background-image:url({:captcha_src()});"></div>
</div>
<div class="layui-form-item">
<div class="pull-left login-remember">
<label>记住帐号?</label>
<input type="checkbox" name="rememberMe" value="true" checked lay-skin="switch" title="记住帐号">
</div>
<div class="pull-right">
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="login"> <i class="layui-icon">&#xe650;</i> 登录 </button>
</div>
<div class="clear"></div>
</div>
</form>
</div>
</div>
<script type="text/javascript" src="__STATIC__/plugins/layui/layui.js"></script>
<script>
layui.use(['form'], function() {
var $ = layui.jquery, form = layui.form();
$("h2").on('click', function(){
$(this).hide();
$('.layui-form').show();
});
$('.code').on('click', function() {
$(this).attr('style', 'background-image:url({:captcha_src()}?_='+ Math.random() +');');
});
layer.config({
time: 1000
});
form.verify({
username: function (value) {
if (value.length < 4 || value.length > 20) {
return "账号应在4-20位之间"
}
var reg = /^[a-zA-Z0-9]*$/;
if (!reg.test(value)) {
return "账号只能为英文或数字";
}
},
password: [/^[\S]{6,20}$/, '密码应在6-20位之间'],
verify: [/^[\S]{4}$/, '验证码长度有误']
});
form.on('submit(login)', function(data) {
layer.load(2);
$('form').removeClass('bounceInLeft');
$.post(data.form.action, data.field, function(res) {
layer.closeAll('loading');
if (res.code == 1) {
layer.msg(res.msg, {icon: 1, time: 1000}, function() {
location.href = '/';
});
} else {
$('form').addClass('shake');
layer.msg(res.msg, {icon: 5}, function() {
$('form').removeClass('shake');
});
}
});
return false;
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,46 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="username" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="password" lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="submit">新增用户</button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(data) {
if (data.code == 1) {
layer.msg(data.msg, {icon: data.code, time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(data.msg, {icon: 2, time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,110 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('member/add')}" id="add"><i class="layui-icon">&#xe654;</i> 新增用户</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('member/password')}" id="pass"><i class="layui-icon">&#xe642;</i> 重置密码</button>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th width="25"></th>
<th width="50">编号</th>
<th>昵称</th>
<th>用户名</th>
<th>积分</th>
<th>报单</th>
<th width="60">状态</th>
<th width="120">注册时间</th>
<th width="50">登录次数</th>
<th width="120">身份</th>
<th width="110">Vip到期时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-uid="{$vo.id}" lay-filter="uid" lay-skin="primary"></td>
<td><img width="25" height="25" src="{$vo.info.avatar}" alt=""></td>
<td>{$vo.id}</td>
<td>{$vo.info.nickname}</td>
<td>{$vo.username}</td>
<td>{$vo.info.score}</td>
<td>{$vo.junior|default=''}<a class=" layui-btn-small junior" data-href="{:url('member/junior')}?pid={$vo.id}" > 查看</a></td>
<td><input type="checkbox" name="close" data-uid="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.create_time}</td>
<td>{$vo.login}</td>
<td>{$vo.info.vip_text}</td>
<td>{$vo.info.vip_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="uid"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
form.on('switch(status)', function(data) {
$.get("{:url('member/status')}", {uid: $(data.elem).data('uid'), status: data.elem.checked}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#pass').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['400px', '220px'],
content: $(this).data('href') + '?uid=' + nodes[0]
});
}
});
$('#add').on('click', function() {
layer.open({
title:'添加用户',
type: 2,
area: ['400px', '220px'],
content: $(this).data('href')
});
});
$('.junior').on('click', function() {
layer.open({
title:'报单列表',
type: 2,
area: ['100%', '100%'],
content: $(this).data('href')
});
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="uid"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('uid');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,44 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th >姓名</th>
<th>会员级别</th>
<th>电话</th>
<th>身份证</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>
<th >{$vo.username}</th>
<th>{$vo.level}</th>
<th>{$vo.mobile}</th>
<th>{$vo.id_card}</th>
<th>{$vo.bank}</th>
<th>{$vo.bank_card}</th>
<th>{$vo.password}</th>
<th>{$vo.referee}</th>
<th>{$vo.referee_number}</th>
<th>{$vo.contact}</th>
<th>{$vo.contact_number}</th>
<th>{$vo.create_time}</th>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}

View File

@@ -0,0 +1,42 @@
{extend name="public/base" /}
{block name="body"}
<div style="margin: 15px;">
<form class="layui-form layui-form-pane" action="__SELF__">
<div class="layui-form-item">
<label class="layui-form-label">新密码</label>
<div class="layui-input-block">
<input type="text" name="password" required lay-verify="required" placeholder="请输入新密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="submit">新增用户</button>
</div>
</div>
</form>
</div>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('submit(submit)', function(e) {
$.post(e.form.action, e.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: 1, time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
});
} else {
layer.msg(res.msg, {icon: 2, time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,92 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__?sa=2212121">
<div class="layui-form-item">
<label class="layui-form-label">菜单名称</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入菜单名称" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上级菜单</label>
<div class="layui-input-inline">
<select name="pid">
{volist name="up_menus" id="vo"}
<option {eq name="info.pid|default=''" value="$vo.id"}selected{/eq} value="{$vo.id}">{$vo.title_show}</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="icon" placeholder="请输入菜单图标" autocomplete="off" class="layui-input" value="{$info.icon|default='fa-'}">
</div>
<div class="layui-form-mid layui-word-aux">fontawesome图标类 fa-*</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">菜单排序</label>
<div class="layui-input-inline">
<input type="text" name="sort" placeholder="请输入菜单排序" autocomplete="off" class="layui-input" value="{$info.sort|default=0}">
</div>
</div>
<div class="layui-form-item" pane="">
<label class="layui-form-label">菜单状态</label>
<div class="layui-input-block">
<input type="checkbox" name="status" lay-skin="switch" lay-text="ON|OFF" {eq name="info.status|default=1" value="1"}checked=""{/eq}>
</div>
</div>
<div class="layui-form-item" pane="">
<label class="layui-form-label">需要授权</label>
<div class="layui-input-block">
<input type="checkbox" name="auth" lay-skin="switch" lay-text="ON|OFF" {eq name="info.auth|default=1" value="1"}checked=""{/eq}>
</div>
</div>
<div class="layui-form-item" pane="">
<label class="layui-form-label">隐藏菜单</label>
<div class="layui-input-block">
<input type="checkbox" name="hide" lay-skin="switch" lay-text="ON|OFF" {eq name="info.hide|default=0" value="1"}checked=""{/eq}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">连接地址</label>
<div class="layui-input-block">
<input type="text" name="url" placeholder="请输入连接地址" autocomplete="off" class="layui-input" value="{$info.url|default=''}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info.id"}
<input type="hidden" name="id" value="{$info.id}">
<button class="layui-btn" lay-submit lay-filter="submit">编辑菜单</button>
{else /}
<button class="layui-btn" lay-submit lay-filter="submit">新增菜单</button>
{/present}
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
});
</script>
{/block}

View File

@@ -0,0 +1,143 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-side-scroll" style="border-right:1px solid #ccc;position:fixed;">
<ul id="menu-tree"></ul>
</div>
<div style="margin-left:230px;">
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('menu/add', ['pid' => input('pid')])}" id="add"><i class="layui-icon">&#xe654;</i> 新增菜单</button>
{notempty name="Think.get.pid|default=0" value="0"}
<a class="layui-btn layui-btn-primary layui-btn-small" href="{:url('menu/index')}?pid={$info['pid']}"><i class="layui-icon">&#xe603;</i> 返回</a>
{/notempty}
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('menu/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑菜单</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('menu/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除菜单</button>
</blockquote>
{notempty name="Think.get.pid|default=0" value="0"}
<fieldset class="layui-elem-field">
<legend>上级菜单</legend>
<div class="layui-field-box">
{$info.title} : {$info.url|url}
</div>
</fieldset>
{/notempty}
<div class="layui-form">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>图标</th>
<th>菜单名称</th>
<th>排序</th>
<th>状态</th>
<th>AUTH</th>
<th>隐藏</th>
<th>url</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td><i class="fa {$vo.icon}"></i></td>
<td><a href="{:url('menu/index')}?pid={$vo.id}">{$vo.title}</a></td>
<td>{$vo.sort}</td>
<td><input type="checkbox" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td><input type="checkbox" data-id="{$vo.id}" lay-skin="switch" lay-filter="auth" {eq name="vo.auth" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td><input type="checkbox" data-id="{$vo.id}" lay-skin="switch" lay-filter="hide" {eq name="vo.hide" value="1"}checked{/eq} lay-text="是|否"></td>
<td>{$vo.url_text}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
</div>
{/block}
{block name="layui"}
<script>
layui.use(['tree', 'form'], function(){
var form = layui.form(), $ = layui.jquery;
layui.tree({
elem: '#menu-tree'
,nodes: {$menu}
});
$('#add').on('click', function(e) {
layer.open({
type: 2,
area: ['500px', '540px'],
content: $(this).data('href')
});
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['500px', '540px'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
form.on('checkbox(allChoose)', function(data){
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item){
item.checked = data.elem.checked;
});
form.render('checkbox');
});
form.on('switch(status)', function(data) {
$.get("{:url('menu/status')}", {id: $(data.elem).data('id'), status: data.elem.checked, type: 'status'}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
form.on('switch(auth)', function(data) {
$.get("{:url('menu/status')}", {id: $(data.elem).data('id'), status: data.elem.checked, type: 'auth'}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
form.on('switch(hide)', function(data) {
$.get("{:url('menu/status')}", {id: $(data.elem).data('id'), status: data.elem.checked, type: 'hide'}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{$Think.config.web_site_title}</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="__STATIC__/plugins/layui/css/layui.css" media="all" />
<link rel="stylesheet" href="__STATIC__/css/global.css" media="all">
<link rel="stylesheet" href="__STATIC__/plugins/font-awesome/css/font-awesome.min.css">
{block name="css"}{/block}
<link rel="stylesheet" href="__STATIC__/css/zui.lite.css" media="all" />
</head>
<body>
{block name="body"}{/block}
<script type="text/javascript" src="__STATIC__/plugins/layui/layui.js"></script>
{block name="js"}{/block}
<script>
layui.config({
base: '__STATIC__/js/'
});
layui.use('util', function(){
var util = layui.util;
util.fixbar({
bar1: '&#x1002;'
,bgcolor: '#666666'
,css: {right: 0, bottom: 0}
,click: function(type) {
if (type == 'bar1') {
location.reload();
}
}
});
});
</script>
{block name="layui"}{/block}
</body>
</html>

View File

@@ -0,0 +1,10 @@
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.all.min.js"> </script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/lang/zh-cn/zh-cn.js"></script>
<script id="[eid]" name="[name]" type="text/plain">[content]</script>
<script>
var ue_[eid] = UE.getEditor('[eid]', {
autoHeightEnabled: false,
initialFrameHeight:450
});
</script>

View File

@@ -0,0 +1,113 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item ">
<label class="layui-form-label">名称</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入名称" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item ">
<label class="layui-form-label">规则名</label>
<div class="layui-input-block">
<input type="text" name="model" lay-verify="required" placeholder="请输入规则名,英文" autocomplete="off" class="layui-input" value="{$info.model|default=''}">
</div>
</div>
<div class="layui-form-item ">
<label class="layui-form-label">积分</label>
<div class="layui-input-block">
<input type="text" name="score" lay-verify="required" placeholder="请输入获取/消费积分" autocomplete="off" class="layui-input" value="{$info.score|default=''}">
</div>
</div>
<div class="layui-form-item ">
<label class="layui-form-label">每日次数</label>
<div class="layui-input-block">
<input type="text" name="times" lay-verify="required" placeholder="请输入获取/消费积分" autocomplete="off" class="layui-input" value="{$info.times|default=''}">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">说明</label>
<div class="layui-input-block">
<textarea placeholder="请输入说明" name="remark" class="layui-textarea"> {$info.remark|default=''}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id|default=''}">
{/present}
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="submit"> <i class="layui-icon">&#xe650;</i> 发布 </button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.all.min.js"> </script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/lang/zh-cn/zh-cn.js"></script>
<script type="text/javascript">
var ue = UE.getEditor('ueditor', {
autoHeightEnabled: false,
initialFrameHeight:450
});
layui.use(['upload', 'layedit', 'form'], function() {
var $ = layui.jquery, form = layui.form();
var layedit = layui.layedit;
var edit = layedit.build('demo', {
uploadImage: {
url: "{:url('storage/editor')}"
,type: 'post'
}
});
form.on('submit(submit)', function(data) {
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
layui.upload({
url: "{:url('storage/upload')}?type=image",
title: '图片上传',
elem: '#image',
method: 'post',
type: 'image',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
LAY_demo_upload.src = res.data.path;
$('.storage_id').val(res.data.id);
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
});
</script>
{/block}

View File

@@ -0,0 +1,86 @@
{extend name="public/base" /}
{block name="body"}
<!-- <blockquote class="layui-elem-quote">
<form class="layui-form" action="__SELF__" style="float:right">
<div class="layui-inline">
<input name="title" value="{$Think.get.title}" lay-verify="title" placeholder="请输入标题" autocomplete="off" class="layui-input title" type="tel">
</div>
<div class="layui-inline">
<button class="layui-btn btn-yellow" >查询</button>
</div>
</form>
<div style="clear:both"></div>
</blockquote> -->
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>编号</th>
<th>用户</th>
<th>积分</th>
<th>说明</th>
<th>创建时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.user.nickname|default='未设置'}</td>
<td>{$vo.score}</td>
<td>{$vo.remark}</td>
<td>{$vo.create_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
form.on('switch(status)', function(data) {
$.get("{:url('help/status')}", {id: $(data.elem).data('id'), status: data.elem.checked}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#setting').on('click', function() {
layer.open({
type: 2,
area: ['750px', '700px'],
content: $(this).data('href')
});
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,117 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('score/add')}" id="add"><i class="layui-icon">&#xe654;</i> 添加规则</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('score/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑规则</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('score/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除规则</button>
<div style="clear:both"></div>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>编号</th>
<th>规则名称</th>
<th>英文名称</th>
<th>积分数量</th>
<th>状态</th>
<th>创建时间</th>
<th>更新时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.title}</td>
<td>{$vo.model}</td>
<td>{$vo.score}</td>
<td><input type="checkbox" name="close" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['600px', '75%'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
form.on('switch(status)', function(data) {
$.get("{:url('score/status')}", {id: $(data.elem).data('id'), status: data.elem.checked}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#add').on('click', function() {
layer.open({
type: 2,
area: ['750px', '700px'],
content: $(this).data('href')
});
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,128 @@
{extend name="public/base" /}
{block name="body"}
<form class="layui-form layui-form-pane admin-main" action="__SELF__">
<div class="layui-form-item ">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入名称" autocomplete="off" class="layui-input" value="{$info.title|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类</label>
<div class="layui-input-inline">
<select name="category_id">
<option value="0">请选择文类</option>
{volist name="list" id="vo"}
<option {eq name="info.category_id|default=''" value="$vo.id"}selected{/eq} value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">封面</label>
<div class="site-demo-upload">
<img id="LAY_demo_upload" src="{$info.cover|default='http://console.cnskl.com/static/system/images/avatar.jpg'}">
<div class="site-demo-upbar">
<input type="file" class="layui-upload-file" value="" name="image" id="image">
<input type="hidden" name="storage_id" class="storage_id" value="{$info.storage_id|default=''}">
</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<textarea placeholder="请输入内容" name="description" class="layui-textarea"> {$info.description|default=''}</textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<!-- <textarea name="content" id="demo" style="display: none;">{$info.content|default=''}</textarea> -->
<script id="ueditor" name="content" type="text/plain">{$info.content|default=''}</script>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
{present name="info"}
<input type="hidden" name="id" value="{$info.id|default=''}">
{/present}
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="submit"> <i class="layui-icon">&#xe650;</i> 发布 </button>
</div>
</div>
</form>
{/block}
{block name="layui"}
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/ueditor.all.min.js"> </script>
<script type="text/javascript" charset="utf-8" src="__JS__/ueditor/lang/zh-cn/zh-cn.js"></script>
<script type="text/javascript">
var ue = UE.getEditor('ueditor', {
autoHeightEnabled: false,
initialFrameHeight:450
});
layui.use(['upload', 'layedit', 'form'], function() {
var $ = layui.jquery, form = layui.form();
var layedit = layui.layedit;
var edit = layedit.build('demo', {
uploadImage: {
url: "{:url('storage/editor')}"
,type: 'post'
}
});
form.on('submit(submit)', function(data) {
ue.sync();
// data.field.content = layedit.getContent(edit);
delete data.field.file;
delete data.field.image;
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.location.reload();
});
} else {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
}
});
return false;
});
layui.upload({
url: "{:url('storage/upload')}?type=image",
title: '图片上传',
elem: '#image',
method: 'post',
type: 'image',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
LAY_demo_upload.src = res.data.path;
$('.storage_id').val(res.data.id);
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
});
</script>
{/block}

View File

@@ -0,0 +1,126 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('Share/add')}" id="add"><i class="layui-icon">&#xe654;</i> 添加分享</button>
<button type="button" class="layui-btn layui-btn-small" data-href="{:url('Share/edit')}" id="edit"><i class="layui-icon">&#xe642;</i> 编辑分享</button>
<button type="button" class="layui-btn layui-btn-small layui-btn-danger" data-href="{:url('Share/del')}" id="del"><i class="layui-icon">&#xe640;</i> 删除分享</button>
<form class="layui-form" action="__SELF__" style="float:right">
<div class="layui-inline">
<input name="title" value="{$Think.get.title}" lay-verify="title" placeholder="请输入标题" autocomplete="off" class="layui-input title" type="tel">
</div>
<div class="layui-inline">
<button class="layui-btn btn-yellow" >查询</button>
</div>
<div class="layui-inline">
<!-- <submit class="layui-btn doexp" >导出</submit> -->
</div>
</form>
<div style="clear:both"></div>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>编号</th>
<th>所属分类</th>
<th>分享标题</th>
<th>状态</th>
<th>创建时间</th>
<th>更新时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.category.title}</td>
<td>{$vo.title}</td>
<td><input type="checkbox" name="close" data-id="{$vo.id}" lay-skin="switch" lay-filter="status" {eq name="vo.status" value="1"}checked{/eq} lay-text="正常|禁用"></td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('#edit').on('click', function(e) {
var nodes = getSelected();
if (nodes.length != 1) {
layer.msg('请选择一条要编辑的数据');
} else {
layer.open({
type: 2,
title: $(this).html(),
area: ['600px', '75%'],
content: $(this).data('href') + '?id=' + nodes[0]
});
}
});
form.on('switch(status)', function(data) {
$.get("{:url('share/status')}", {id: $(data.elem).data('id'), status: data.elem.checked}, function(res) {
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000});
});
});
$('#add').on('click', function() {
layer.open({
type: 2,
area: ['750px', '700px'],
content: $(this).data('href')
});
});
$('#del').on('click', function(e) {
var nodes = getSelected();
var $this = $(this);
if (nodes.length < 1) {
layer.msg('请选择一条要删除的数据');
} else {
layer.confirm('你确定要删除么?', {icon: 3, title:'提示'}, function(index) {
$.get($this.data('href'), {id: nodes.join(',')}, function(res) {
layer.close(index);
layer.msg(res.msg, {icon: Math.abs(res.code - 2), time: 1000}, function() {
if (res.code == 1) {
location.reload();
}
});
});
});
}
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,55 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote" style="margin:0">
<span class="layui-breadcrumb" lay-separator="|">
<a href="javascript:;">文件总数: {$list->total()} 个</a>
<a href="javascript:;">占用空间: {$total}</a>
{volist name="types" id="vo"}
<a href="{:url('storage/index')}?type={$vo.type}">{$vo.type}</a>
{/volist}
</span>
</blockquote>
<div class="layui-progress" lay-showpercent="true" style="border-radius:0">
<div class="layui-progress-bar" lay-percent="{$disk_use}%" style="border-radius:0"></div>
</div>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>类型</th>
<th>文件名称</th>
<th>后缀</th>
<th>空间</th>
<th>使用(点)</th>
<th>路径</th>
<th>创建时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td>{$vo.id}</td>
<td>{$vo.type}</td>
<td>{$vo.name}</td>
<td>{$vo.ext}</td>
<td>{$vo.size}</td>
<td></td>
<td>{$vo.path}</td>
<td>{$vo.create_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use('element', function(){
var element = layui.element();
});
</script>
{/block}

View File

@@ -0,0 +1,27 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th>用户</th>
<th>日志</th>
<th>数据</th>
<th>操作时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td>{$vo.uid_text}</td>
<td>{$vo.logs}</td>
<td>{$vo.datas_text}</td>
<td>{$vo.create_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}

View File

@@ -0,0 +1,95 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<form class="layui-form" action="__SELF__">
<div class="layui-inline">
<input type="text" name="queue_id" autocomplete="off" placeholder="请输入任务ID" value="{$Think.get.queue_id|default=''}" class="layui-input">
</div>
<div class="layui-inline">
<input type="text" name="job" autocomplete="off" placeholder="请输入任务名称" value="{$Think.get.job|default=''}" class="layui-input">
</div>
<div class="layui-inline">
<select name="type">
<option value="">执行状态</option>
<option {eq name="Think.get.status|default=''" value="1"}selected{/eq} value="1">执行成功</option>
<option {eq name="Think.get.status|default=''" value="0"}selected{/eq} value="0">执行失败</option>
</select>
</div>
<div class="layui-inline">
<input class="layui-input" name="start_date" placeholder="开始日期" value="{$Think.get.start_date|default=''}" onclick="layui.laydate({elem: this, format: 'YYYY-MM-DD'})">
</div>
<div class="layui-inline">
<input class="layui-input" name="end_date" placeholder="结束日期" value="{$Think.get.end_date|default=''}" onclick="layui.laydate({elem: this, format: 'YYYY-MM-DD'})">
</div>
<div class="layui-inline">
<button class="layui-btn">搜索</button>
</div>
</form>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<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>
<td>{$vo.queue_id}</td>
<td>{$vo.queue}</td>
<td>{$vo.job}</td>
<td>{$vo.payload}</td>
<td>{$vo.status_text}</td>
<td>{$vo.create_time}</td>
<td>{$vo.remark}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form', 'laydate'], function(){
var form = layui.form(), $ = layui.jquery, laydate = layui.laydate;
var start = {
min: '2017-01-01 00:00:00'
,max: laydate.now()
,istoday: false
,choose: function(datas) {
end.min = datas;
end.start = datas
}
};
var end = {
min: '2017-01-01 00:00:00'
,max: laydate.now()
,istoday: false
,choose: function(datas) {
start.max = datas;
}
};
$('input[name="start_date"]').on('click', function() {
start.elem = this;
laydate(start);
});
$('input[name="end_date"]').on('click', function() {
end.elem = this
laydate(end);
});
});
</script>
{/block}

View File

@@ -0,0 +1,57 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></th>
<th>编号</th>
<th>用户</th>
<th>内容</th>
<th>创建时间</th>
<th>更新时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td>{$vo.info.nickname}</td>
<td>{$vo.content}</td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,91 @@
{extend name="public/base" /}
{block name="body"}
<form action="__SELF__" class="layui-form" method="post">
<div class="site-demo-upload">
<img id="LAY_demo_upload" src="http://console.cnskl.com/static/system/images/avatar.jpg">
<div class="site-demo-upbar">
<input type="file" class="layui-upload-file" name="image" id="image">
</div>
</div>
<input type="file" class="layui-upload-file" name="file" id="file">
<ul>
<li></li>
</ul>
<textarea name="dsa" id="demo" style="display: none;"></textarea>
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="submit"> <i class="layui-icon">&#xe650;</i> 登录 </button>
</form>
{/block}
{block name="layui"}
<script type="text/javascript">
layui.use(['upload', 'layedit', 'form'], function() {
var $ = layui.jquery;
var layedit = layui.layedit;
var form = layui.form();
var edit = layedit.build('demo', {
uploadImage: {
url: "{:url('storage/editor')}"
,type: 'post'
}
});
form.on('submit(submsit)', function(data) {
$.post(data.form.action, data.field, function(res) {
if (res.code == 1) {
layer.msg(res.msg, {icon: 1, time: 1500}, function() {
location.href = '/';
});
} else {
layer.msg(res.msg, {icon: 5});
}
});
return false;
});
layui.upload({
url: "{:url('storage/upload')}?type=image",
title: '图片上传',
elem: '#image',
method: 'post',
type: 'image',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
LAY_demo_upload.src = res.data.path;
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
layui.upload({
url: "{:url('storage/upload')}?type=file",
title: '文件上传',
elem: '#file',
method: 'post',
type: 'file',
before: function(input) {
layer.msg('文件上传中...', {icon: 16 ,shade: 0.3, time: 0, id: 1});
},
success: function(res) {
layer.close(1);
if (res.code == 1) {
layer.msg('上传成功', {icon: 1});
$("ul").append("<li>" + res.data.path + "</li>")
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
});
</script>
{/block}

View File

@@ -0,0 +1,84 @@
{extend name="public/base" /}
{block name="body"}
<blockquote class="layui-elem-quote">
<form class="layui-form" action="__SELF__" style="float:right">
<div class="layui-inline">
<input name="title" value="{$Think.get.title}" lay-verify="title" placeholder="请输入用户名" autocomplete="off" class="layui-input title" type="tel">
</div>
<div class="layui-inline">
<button class="layui-btn btn-yellow" >查询</button>
</div>
<div class="layui-inline">
<!-- <submit class="layui-btn doexp" >导出</submit> -->
</div>
</form>
<div style="clear:both"></div>
</blockquote>
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th width="20"><input type="checkbox" lay-skin="primary" lay-filter="allChoose"></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>
<td><input type="checkbox" data-id="{$vo.id}" lay-filter="id" lay-skin="primary"></td>
<td>{$vo.id}</td>
<td><a data-href="{:url('vip/info')}?id={$vo.uid}" class="info">{$vo.user.nickname|default='未设置'}</a></td>
<td>{$vo.orderid}</td>
<td>{$vo.money}</td>
<td>{$vo.model}</td>
<td>{$vo.status}</td>
<td>{$vo.create_time}</td>
<td>{$vo.update_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}
{block name="layui"}
<script>
layui.use(['form'], function(){
var $ = layui.jquery, form = layui.form();
form.on('checkbox(allChoose)', function(data) {
var child = $(data.elem).parents('table').find('tbody input[lay-filter="id"]');
child.each(function(index, item) {
item.checked = data.elem.checked;
});
form.render('checkbox');
});
$('.info').on('click', function() {
layer.open({
type: 2,
area: ['750px', '700px'],
content: $(this).data('href')
});
});
function getSelected() {
var child = $('.layui-form').find('tbody input[lay-filter="id"]:checked');
var idArr = [];
child.each(function(index, item) {
idArr[index] = $(item).data('id');
});
return idArr;
}
});
</script>
{/block}

View File

@@ -0,0 +1,32 @@
{extend name="public/base" /}
{block name="body"}
<div class="layui-form admin-main">
<table class="layui-table">
<thead>
<tr>
<th>编号</th>
<th>用户</th>
<th>单号</th>
<th>金额</th>
<th>支付方式</th>
<th>状态</th>
<th>创建时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td>{$vo.id}</td>
<td>{$vo.user.nickname|default='未设置'}</td>
<td>{$vo.orderid}</td>
<td>{$vo.money}</td>
<td>{$vo.model}</td>
<td>{$vo.status}</td>
<td>{$vo.create_time}</td>
</tr>
{/volist}
</tbody>
</table>
{$list->render();}
</div>
{/block}