first commit
This commit is contained in:
1
芳林公司项目/www.zhiyuanhelp.com/application/.htaccess
Normal file
1
芳林公司项目/www.zhiyuanhelp.com/application/.htaccess
Normal file
@@ -0,0 +1 @@
|
||||
deny from all
|
||||
1
芳林公司项目/www.zhiyuanhelp.com/application/.pydio
Normal file
1
芳林公司项目/www.zhiyuanhelp.com/application/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
5c07980c-2e8b-4da1-8431-2ace6ab55cc2
|
||||
1
芳林公司项目/www.zhiyuanhelp.com/application/admin/.pydio
Normal file
1
芳林公司项目/www.zhiyuanhelp.com/application/admin/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
e588f057-12f7-4992-a56b-0257537f983f
|
||||
34
芳林公司项目/www.zhiyuanhelp.com/application/admin/common.php
Normal file
34
芳林公司项目/www.zhiyuanhelp.com/application/admin/common.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
//后台公共文件
|
||||
|
||||
|
||||
if (!function_exists('__log')) {
|
||||
|
||||
/**
|
||||
* 写入系统日志
|
||||
* @param $data 数据
|
||||
* @param $type 日志类型
|
||||
*/
|
||||
function __log($data, $type) {
|
||||
app('Log')::write(json_encode($data, JSON_UNESCAPED_UNICODE), $type);
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('replace_menu_title')) {
|
||||
|
||||
/**
|
||||
* 格式化菜单名称进行输出
|
||||
* @param $var 变量名
|
||||
* @param int $number 循环次数
|
||||
* @return string
|
||||
*/
|
||||
function replace_menu_title($var, $number = 1) {
|
||||
$prefix = '';
|
||||
for ($i = 1; $i < $number; $i++) {
|
||||
$prefix .= ' ├ ';
|
||||
}
|
||||
return $prefix . $var;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
090fb2ac-13d8-44d6-9c0b-25b80b00af7d
|
||||
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
/**
|
||||
* 后台公用模型
|
||||
*/
|
||||
|
||||
namespace app\admin\controller;
|
||||
use think\Controller;
|
||||
use think\exception\HttpResponseException;
|
||||
use app\admin\service\ModelService;
|
||||
use app\admin\service\AuthService;
|
||||
|
||||
class AdminController extends Controller
|
||||
{
|
||||
/**
|
||||
* 开启登录控制
|
||||
* @var bool
|
||||
*/
|
||||
protected $is_login = true;
|
||||
|
||||
/**
|
||||
* 开启权限控制
|
||||
* @var bool
|
||||
*/
|
||||
protected $is_auth = '';
|
||||
|
||||
/**
|
||||
* 网站栏目
|
||||
* @var string
|
||||
*/
|
||||
protected $nav = '';
|
||||
|
||||
/**
|
||||
* 登录用户信息
|
||||
* @var string
|
||||
*/
|
||||
protected $user = '';
|
||||
|
||||
/**
|
||||
* 后台配置信息
|
||||
* @var array
|
||||
*/
|
||||
protected $SysInfo = [];
|
||||
|
||||
/**
|
||||
* 网站标题
|
||||
* @var string
|
||||
*/
|
||||
protected $title = '';
|
||||
|
||||
/**
|
||||
* 初始化数据
|
||||
* Index constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
list($this->nav, $this->title, $this->is_login, $this->is_auth,) = ['', '', true, true];
|
||||
$this->SysInfo = cache('SysInfo');
|
||||
|
||||
|
||||
//检测登录情况
|
||||
if ($this->is_login == true) {
|
||||
$this->__checkLogin();
|
||||
}
|
||||
|
||||
//判断是否有权限进行访问
|
||||
if ($this->is_auth == true) {
|
||||
$this->__checkAuth();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测登录
|
||||
*/
|
||||
public function __checkLogin()
|
||||
{
|
||||
$user = session('user');
|
||||
//判断是否登录
|
||||
if (empty($user)) {
|
||||
$data = ['type' => 'error', 'code' => 1, 'msg' => '抱歉,您还没有登录获取访问权限!', 'url' => url('@admin/login')];
|
||||
}
|
||||
|
||||
//判断登录是否过期
|
||||
(isset($this->SysInfo['LoginDuration']) && !empty($this->SysInfo['LoginDuration'])) ? $LoginDuration = $this->SysInfo['LoginDuration'] : $LoginDuration = '';
|
||||
if (!empty($LoginDuration) && !empty($user)) {
|
||||
if (time() - $user['login_at'] >= $LoginDuration) {
|
||||
\app\admin\service\LogService::loginLog($user['id'], 0, 1, "【登录过期】正在退出后台系统!");
|
||||
$data = ['type' => 'error', 'code' => 1, 'msg' => '登录已过期,请重新登录!', 'url' => url('@admin/login')];
|
||||
}
|
||||
}
|
||||
//返回错误信息
|
||||
if (!empty($data)) {
|
||||
session('user', null);
|
||||
throw new HttpResponseException($this->request->isAjax() ? json($data) : exit(msg_error($data['msg'], $data['url'])));
|
||||
}
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测登录情况
|
||||
*/
|
||||
public function __checkAuth()
|
||||
{
|
||||
if (AuthService::checkNode() == false) {
|
||||
$data = ['type' => 'error', 'code' => 1, 'msg' => '抱歉,您暂无该权限,请联系管理员!', 'url' => url('@admin')];
|
||||
throw new HttpResponseException($this->request->isAjax() ? json($data) : exit(msg_error($data['msg'], $data['url'])));
|
||||
}
|
||||
}
|
||||
}
|
||||
248
芳林公司项目/www.zhiyuanhelp.com/application/admin/controller/Auth.php
Normal file
248
芳林公司项目/www.zhiyuanhelp.com/application/admin/controller/Auth.php
Normal file
@@ -0,0 +1,248 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use think\facade\Cache;
|
||||
|
||||
class Auth extends AdminController {
|
||||
|
||||
/**
|
||||
* Auth模型对象
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
* node constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->model = model('auth');
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色列表
|
||||
*/
|
||||
public function index() {
|
||||
if (!$this->request->isPost()) {
|
||||
|
||||
//ajax访问获取数据
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$page = $this->request->get('page', 1);
|
||||
$limit = $this->request->get('limit', 10);
|
||||
$search = (array)$this->request->get('search', []);
|
||||
return json($this->model->authList($page, $limit, $search));
|
||||
}
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '系统角色列表',
|
||||
'data' => '',
|
||||
'status' => [['id' => 1, 'title' => '启用'], ['id' => 0, 'title' => '禁用']],
|
||||
];
|
||||
|
||||
return $this->fetch('', $basic_data);
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\Common.edit_field');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->editField($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加角色
|
||||
* @return mixed|\think\response\Json
|
||||
*/
|
||||
public function add() {
|
||||
if (!$this->request->isPost()) {
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '添加角色',
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->form();
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\Auth.add');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//清空缓存
|
||||
clear_menu();
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->add($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改管理员信息
|
||||
* @return mixed|string|\think\response\Json
|
||||
*/
|
||||
public function edit() {
|
||||
if (!$this->request->isPost()) {
|
||||
|
||||
//查找所需修改角色
|
||||
$auth = $this->model->where('id', $this->request->get('id'))->find();
|
||||
if (empty($auth)) return msg_error('暂无数据,请重新刷新页面!');
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '修改角色信息',
|
||||
'auth' => $auth,
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->form();
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\Auth.edit');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->edit($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单模板
|
||||
* @return mixed
|
||||
*/
|
||||
protected function form() {
|
||||
return $this->fetch('form');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除角色
|
||||
* @return \think\response\Json
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function del() {
|
||||
$get = $this->request->get();
|
||||
|
||||
//验证数据
|
||||
if (!is_array($get['id'])) {
|
||||
$validate = $this->validate($get, 'app\admin\validate\Auth.del');
|
||||
if (true !== $validate) return __error($validate);
|
||||
}
|
||||
|
||||
//执行更新操作操作
|
||||
if (!is_array($get['id'])) {
|
||||
$del = $this->model->where('id', $get['id'])->delete();
|
||||
model('auth_node')->where('auth', $get['id'])->delete();
|
||||
} else {
|
||||
$del = $this->model->whereIn('id', $get['id'])->delete();
|
||||
model('auth_node')->whereIn('auth', $get['id'])->delete();
|
||||
}
|
||||
|
||||
if ($del >= 1) {
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
return __success('删除成功!');
|
||||
} else {
|
||||
return __error('数据有误,请刷新重试!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改角色状态
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function status() {
|
||||
$get = $this->request->get();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($get, 'app\admin\validate\Auth.status');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//判断菜单状态
|
||||
$status = $this->model->where('id', $get['id'])->value('status');
|
||||
$status == 1 ? list($msg, $status) = ['角色禁用成功', $status = 0] : list($msg, $status) = ['角色启用成功', $status = 1];
|
||||
|
||||
//执行更新操作操作
|
||||
$update = $this->model->where('id', $get['id'])->update(['status' => $status]);
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
if ($update >= 1) return __success($msg);
|
||||
return __error('数据有误,请刷新重试!');
|
||||
}
|
||||
|
||||
/**
|
||||
* 授权信息
|
||||
* @return mixed|string|\think\response\Json
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function authorize() {
|
||||
if (!$this->request->isPost()) {
|
||||
|
||||
//查找所需授权角色
|
||||
$auth = $this->model->where('id', $this->request->get('id'))->find();
|
||||
if (empty($auth)) return msg_error('暂无数据,请重新刷新页面!');
|
||||
|
||||
$node = model('node')->where(['is_auth' => 1])->order('node asc')->select();
|
||||
|
||||
$auth_node = model('auth_node')->where(['auth' => $auth['id']])->select();
|
||||
|
||||
foreach ($node as &$vo) {
|
||||
$i = 0;
|
||||
foreach ($auth_node as $al) {
|
||||
$vo['id'] == $al['node'] && $i++;
|
||||
}
|
||||
$i == 0 ? $vo['is_checked'] = false : $vo['is_checked'] = true;
|
||||
}
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '角色授权',
|
||||
'auth' => $auth,
|
||||
'node' => $node,
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->fetch();
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
empty($post['node_id']) && $post['node_id'] = [];
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\Auth.authorize');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
$insertAll = [];
|
||||
foreach ($post['node_id'] as $vo) {
|
||||
$insertAll[] = [
|
||||
'auth' => $post['auth_id'],
|
||||
'node' => $vo,
|
||||
];
|
||||
}
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
//清空旧数据
|
||||
model('auth_node')->where(['auth' => $post['auth_id']])->delete();
|
||||
//保存数据,返回结果
|
||||
return model('auth_node')->authorize($insertAll);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
|
||||
/**
|
||||
* 系统配置
|
||||
* Class Config
|
||||
* @package app\admin\controller
|
||||
*/
|
||||
class Config extends AdminController {
|
||||
|
||||
/**
|
||||
* config模型对象
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
* node constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->model = model('config');
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统配置信息列表
|
||||
*/
|
||||
public function index() {
|
||||
if (!$this->request->isPost()) {
|
||||
|
||||
//ajax访问获取数据
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$page = $this->request->get('page', 1);
|
||||
$limit = $this->request->get('limit', 500);
|
||||
$search = (array)$this->request->get('search', []);
|
||||
return json($this->model->configList($page, $limit, $search));
|
||||
}
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '系统参数列表',
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->fetch('');
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\Common.edit_field');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->editField($post);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* 图标管理
|
||||
* Class Icon
|
||||
* @package app\admin\controller
|
||||
*/
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
|
||||
|
||||
class Icon extends AdminController {
|
||||
|
||||
/**
|
||||
* 图标列表
|
||||
*/
|
||||
public function index() {
|
||||
|
||||
$basic_data = [
|
||||
'title' => '图标列表',
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
|
||||
public function fa(){
|
||||
$basic_data = [
|
||||
'title' => 'fa图标列表',
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
/*
|
||||
* 首页
|
||||
* */
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use think\facade\Cache;
|
||||
use think\facade\Request;
|
||||
|
||||
|
||||
class Index extends AdminController {
|
||||
|
||||
/**
|
||||
* 首页
|
||||
* @return mixed
|
||||
*/
|
||||
public function index() {
|
||||
Cache::remember('Home', function () {
|
||||
|
||||
return model('menu')->getHome();
|
||||
});
|
||||
$apimenu = new \app\admin\controller\api\Menu();
|
||||
|
||||
$sys_info = Cache::get('SysInfo');
|
||||
|
||||
$basic_data = [
|
||||
'title' => $sys_info['ManageName'],
|
||||
'nav' => $apimenu->getNav(),
|
||||
'home' => Cache::get('Home'),
|
||||
'data' => '',
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页欢迎界面
|
||||
* @return mixed
|
||||
*/
|
||||
public function welcome() {
|
||||
|
||||
$basic_data = [
|
||||
'quick_nav' => \app\admin\model\Nav::getQuickNav(),
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
/*
|
||||
* 后台登录
|
||||
* */
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use think\Controller;
|
||||
use think\facade\Cache;
|
||||
|
||||
class Login extends Controller {
|
||||
|
||||
/**
|
||||
* User模型对象
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
* Login constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->model = model('User');
|
||||
$action = $this->request->action();
|
||||
if (!empty(session('user.id')) && $action !== 'out' && $action !== 'change') return $this->redirect('@admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* 后台登录
|
||||
* @return mixed|\think\response\Json
|
||||
*/
|
||||
public function index() {
|
||||
if ($this->request->isGet()) {
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '伊莎洗衣后台登录',
|
||||
'data' => '',
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->fetch('');
|
||||
} else {
|
||||
|
||||
$post = $this->request->post();
|
||||
|
||||
//判断是否开启验证码登录选择验证规则
|
||||
$SysInfo = Cache::get('SysInfo');
|
||||
$SysInfo['VercodeType'] != 1 ? $validate_type = 'app\admin\validate\Login.index_off' : $validate_type = 'app\admin\validate\Login.index_on';
|
||||
|
||||
|
||||
//验证参数
|
||||
$validate = $this->validate($post, $validate_type);
|
||||
if (true !== $validate) {
|
||||
return __error($validate);
|
||||
}
|
||||
|
||||
//判断登录是否成功
|
||||
$login = $this->model->login($post['username'], $post['password']);
|
||||
|
||||
if ($login['code'] == 1) {
|
||||
isset($login['user']['id']) ? $user_id = $login['user']['id'] : $user_id = '';
|
||||
\app\admin\service\LogService::loginLog($user_id, 1, 0, "【账号登录】{$login['msg']}");
|
||||
return __error($login['msg']);
|
||||
}
|
||||
|
||||
//储存session数据
|
||||
$login['user']['login_at'] = time();
|
||||
session('user', $login['user']);
|
||||
\app\admin\service\LogService::loginLog($login['user']['id'], 1, 1, '【账号登录】登录成功,正在进入系统!');
|
||||
return __success($login['msg']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换账户
|
||||
* @return mixed
|
||||
*/
|
||||
public function change() {
|
||||
if ($this->request->isGet()) {
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '伊莎洗衣后台登录',
|
||||
'data' => '',
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->fetch('index');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function out() {
|
||||
|
||||
//记录日志
|
||||
\app\admin\service\LogService::loginLog(session('user.id'), 0, 1, "【主动退出】正在退出后台系统!");
|
||||
|
||||
//删除自身菜单缓存
|
||||
Cache::rm(session('user.id') . '_AdminMenu');
|
||||
|
||||
//清空sesion数据
|
||||
session('user', null);
|
||||
|
||||
return msg_success('退出登录成功', url('@admin/login'));
|
||||
}
|
||||
}
|
||||
207
芳林公司项目/www.zhiyuanhelp.com/application/admin/controller/Menu.php
Normal file
207
芳林公司项目/www.zhiyuanhelp.com/application/admin/controller/Menu.php
Normal file
@@ -0,0 +1,207 @@
|
||||
<?php
|
||||
/**
|
||||
* 菜单管理
|
||||
* Class Menu
|
||||
* @package app\admin\controller
|
||||
*/
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use think\facade\Cache;
|
||||
|
||||
|
||||
|
||||
class Menu extends AdminController {
|
||||
|
||||
/**
|
||||
* User模型对象
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
* User constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->model = model('menu');
|
||||
}
|
||||
|
||||
/**
|
||||
* 菜单栏列表
|
||||
* @return mixed|\think\response\Json
|
||||
*/
|
||||
public function index() {
|
||||
if (!$this->request->isPost()) {
|
||||
//ajax访问
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$search = (array)$this->request->get('search', []);
|
||||
$menu_list = $this->model->menuList($search);
|
||||
return json($menu_list);
|
||||
}
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'status' => [
|
||||
['id' => 1, 'title' => '启用'],
|
||||
['id' => 0, 'title' => '禁用'],
|
||||
],
|
||||
'title' => '菜单栏管理',
|
||||
'data' => '',
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\Common.edit_field');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->editField($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加菜单
|
||||
* @return mixed|\think\response\Json
|
||||
*/
|
||||
public function add() {
|
||||
if (!$this->request->isPost()) {
|
||||
$pid = $this->request->get('pid', '');
|
||||
$basic_data = [
|
||||
'title' => '添加菜单',
|
||||
];
|
||||
!empty($pid) && $basic_data['menu'] = ['pid' => $pid];
|
||||
$this->assign($basic_data);
|
||||
return $this->form();
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
unset($post['id']);
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\Menu.add');
|
||||
if (true !== $validate) return __error($validate);
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
return $this->model->add($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改菜单
|
||||
* @return mixed
|
||||
*/
|
||||
public function edit() {
|
||||
if (!$this->request->isPost()) {
|
||||
|
||||
//查找所需修改菜单
|
||||
$menu = $this->model->where('id', $this->request->get('id'))->find();
|
||||
if (empty($menu)) return msg_error('暂无数据,请重新刷新页面!');
|
||||
strpos($menu['icon'], 'fa-') !== false ? $menu['icon_type'] = 'fa' : $menu['icon_type'] = 'layui';
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '修改菜单',
|
||||
'menu' => $menu,
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->form();
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\Menu.edit');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
return $this->model->edit($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单模板
|
||||
* @return mixed
|
||||
*/
|
||||
protected function form() {
|
||||
|
||||
$basic_data = [
|
||||
'up_menu' => $this->model->getUpMenu(),
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->fetch('form');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除菜单
|
||||
* @return \think\response\Json
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function del() {
|
||||
$get = $this->request->get();
|
||||
|
||||
//验证数据
|
||||
if (!is_array($get['id'])) {
|
||||
$validate = $this->validate($get, 'app\admin\validate\Menu.del');
|
||||
if (true !== $validate) return __error($validate);
|
||||
}
|
||||
|
||||
//执行删除操作
|
||||
if (!is_array($get['id'])) {
|
||||
$del = $this->model->where('id', $get['id'])->delete();
|
||||
} else {
|
||||
$del = $this->model->whereIn('id', $get['id'])->delete();
|
||||
}
|
||||
|
||||
if ($del >= 1) {
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
return __success('菜单删除成功!');
|
||||
} else {
|
||||
return __error('数据有误,请刷新重试!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改菜单状态
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function status() {
|
||||
$get = $this->request->get();
|
||||
if ($get['id'] == 1) return __error('首页不允许更改状态');
|
||||
//验证数据
|
||||
$validate = $this->validate($get, 'app\admin\validate\Menu.status');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//判断菜单状态
|
||||
$status = $this->model->where('id', $get['id'])->value('status');
|
||||
if ($status == 1) {
|
||||
$msg = '菜单禁用成功';
|
||||
$status = 0;
|
||||
} else {
|
||||
$msg = '菜单启用成功';
|
||||
$status = 1;
|
||||
}
|
||||
|
||||
//执行更新操作操作
|
||||
$update = $this->model->where('id', $get['id'])->update(['status' => $status]);
|
||||
|
||||
if ($update >= 1) {
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
return __success($msg);
|
||||
} else {
|
||||
return __error('数据有误,请刷新重试!');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/**
|
||||
* 节点管理
|
||||
* Class Node
|
||||
* @package app\admin\controller
|
||||
*/
|
||||
|
||||
namespace app\admin\controller;
|
||||
use app\admin\controller\AdminController;
|
||||
|
||||
|
||||
class Node extends AdminController {
|
||||
|
||||
/**
|
||||
* node模型对象
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
* node constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->model = model('node');
|
||||
}
|
||||
|
||||
/**
|
||||
* 节点列表
|
||||
*/
|
||||
public function index() {
|
||||
if (!$this->request->isPost()) {
|
||||
//ajax访问获取数据
|
||||
if (!empty($this->request->get('module'))) {
|
||||
return json($this->model->nodeModuleList($this->request->get('module')));
|
||||
}
|
||||
|
||||
$module_list = $this->model->where(['type' => 1])->order(['node'=>'asc'])->select()->toArray();
|
||||
foreach ($module_list as $k => $val) $k == 0 ? $module_list[$k]['is_selectd'] = true : $module_list[$k]['is_selectd'] = false;
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '系统节点列表',
|
||||
'module_list' => $module_list,
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->fetch('');
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\Common.edit_field');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->editField($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改节点状态
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function status() {
|
||||
$get = $this->request->get();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($get, 'app\admin\validate\Node.status');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//判断菜单状态
|
||||
$status = $this->model->where('id', $get['id'])->value('is_auth');
|
||||
$status == 1 ? list($msg, $status) = ['节点禁用成功', $status = 0] : list($msg, $status) = ['节点启用成功', $status = 1];
|
||||
|
||||
//执行更新操作操作
|
||||
$update = $this->model->where('id', $get['id'])->update(['is_auth' => $status]);
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
if ($update >= 1) return __success($msg);
|
||||
return __error('数据有误,请刷新重试!');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,355 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/28
|
||||
* Time: 13:54
|
||||
*/
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use think\Db;
|
||||
use think\Exception;
|
||||
use think\facade\Cache;
|
||||
use think\Log;
|
||||
|
||||
class Shell
|
||||
{
|
||||
//修改新高考mykemu字段
|
||||
public function updateMykemu(){
|
||||
ignore_user_abort(true);
|
||||
set_time_limit(0);
|
||||
$id = Cache::store('redis')->get('recLikekemus');
|
||||
if(empty($id)){
|
||||
$id = 3793738;
|
||||
}
|
||||
$count = Db::table('rec_js')->where('id','between',[$id,7592360])->count();
|
||||
$num = 1000;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
|
||||
$offet = ($i-1)*$num;
|
||||
|
||||
$result = Db::table('rec_js')->field('id,mykemu')->where('id','between',[$id,7592360])->limit($offet,$num)->select();
|
||||
$level = config('setsub.levelArr');
|
||||
foreach ($result as $key => $val) {
|
||||
$val['mykemu'] = $result = explode(',',$val['mykemu']);
|
||||
$res = '';
|
||||
foreach($val['mykemu'] as $k=>$v){
|
||||
|
||||
$res .= $level[$v];
|
||||
}
|
||||
|
||||
Db::table('rec_js')->where('id','=',$val['id'])->update(['mykemu'=>$res]);
|
||||
Cache::store('redis')->set("recLikekemus",$val['id'],36000);
|
||||
}
|
||||
|
||||
}
|
||||
echo 1;die;
|
||||
|
||||
}
|
||||
/*
|
||||
* 江苏同步public和majorNum
|
||||
* */
|
||||
|
||||
public function pubMajorNumTojs(){
|
||||
ignore_user_abort(true);
|
||||
set_time_limit(0);
|
||||
$id = Cache::store('redis')->get('recjsIDs');
|
||||
|
||||
if(empty($id)){
|
||||
$id = 0;
|
||||
}
|
||||
|
||||
$count = Db::table('rec_js')->where('id','between',[$id,7592360])->count();
|
||||
$num = 10000;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
|
||||
$offet = ($i - 1) * $num;
|
||||
|
||||
$result = Db::table('rec_js')->field("id,sch_id")->where('id','between',[$id,7592360])->limit($offet, $num)->select();
|
||||
|
||||
foreach ($result as $key => $val) {
|
||||
$resSch = Db::table('yzy_school')->field("is_public")->where('sch_id', '=', $val['sch_id'])->find();
|
||||
$resCount = Db::table('rec_js_major')->where('rec_id','=',$val['id'])->find();
|
||||
$count = count(json_decode($resCount['professions']));
|
||||
Db::table('rec_js')->where([['id', '=', $val['id']]])->update(['is_public' => $resSch['is_public'],'majorNum'=>$count]);
|
||||
Cache::store('redis')->set("recjsIDs",$val['id'],36000);
|
||||
}
|
||||
}
|
||||
echo 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* 同步数据到yzy_major_score表,sch_name,cost,typeName
|
||||
*/
|
||||
|
||||
public function getSchNameTypeNameToJs(){
|
||||
ignore_user_abort(true);
|
||||
set_time_limit(0);
|
||||
$id = Cache::store('redis')->get('majorScoreID');
|
||||
|
||||
if(empty($id)){
|
||||
$id = 0;
|
||||
}
|
||||
|
||||
$count = Db::table('yzy_major_score')->where('id','between',[$id,3626706])->count();
|
||||
$num = 10000;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
|
||||
$offet = ($i - 1) * $num;
|
||||
|
||||
$result = Db::table('yzy_major_score')->field("id,sch_id,majorCode")->where('id','between',[$id,3626706])->limit($offet, $num)->select();
|
||||
|
||||
foreach ($result as $key => $val) {
|
||||
$resCode = Db::table('yzy_majors')->field('pid')->where([['level','=',3],['code','=',$val['majorCode']]])->find();
|
||||
$relCode = empty($resCode)?Db::table('yzy_majors')->field('pid,title')->where([['level','=',2],['code','=',$val['majorCode']]])->find():Db::table('yzy_majors')->field('title')->where('id','=',$resCode['pid'])->find();
|
||||
if(empty($relCode)){
|
||||
$relCode['title'] = '';
|
||||
}
|
||||
$resSch = Db::table('yzy_school')->field("title")->where('sch_id', '=', $val['sch_id'])->find();
|
||||
Db::table('yzy_major_score')->where('id','=',$val['id'])->update(['sch_name'=>$resSch['title'],'typeName'=>$relCode['title']]);
|
||||
Cache::store('redis')->set("majorScoreID",$val['id'],36000);
|
||||
}
|
||||
}
|
||||
echo 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 修改rec_zhejiang_majors表,将classify中文转换成数字
|
||||
* */
|
||||
public function updateCollegeType(){
|
||||
$result = Db::table('rec_zhejiang_schs')->field('id,classify')->select();
|
||||
$cate = config('setsub.cateArr');
|
||||
foreach ($result as $key => $val) {
|
||||
$cateid = $cate[$val['classify']];
|
||||
|
||||
Db::table('rec_zhejiang_schs')->where('id','=',$val['id'])->update(['collegeType'=>$cateid]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* 最低分和位次迁移
|
||||
* */
|
||||
public function updateMajor(){
|
||||
$result = Db::table('rec_wen_major')->select();
|
||||
|
||||
foreach($result as $key=>$val){
|
||||
|
||||
$res = json_decode($val['professions']);
|
||||
foreach($res as $k => $v){
|
||||
$data['rec_id'] = $result[$key]['rec_id'];
|
||||
$data['title'] = $v->alias;
|
||||
$data['code'] = $v->majorCode;
|
||||
$resRank = json_decode($v->extended);
|
||||
$data['lowestRank'] = $resRank[0]->ls;
|
||||
$data['minScore'] = $resRank[0]->ms;
|
||||
$data['scoreLineYear'] = $v->scoreLineYear;
|
||||
$data['year'] = $v->year;
|
||||
$data['enterNum'] = $v->enterNum;
|
||||
$data['planNum'] = $v->planNum;
|
||||
$data['probability'] = $v->probability;
|
||||
Db::table('rec_majors')->insert($data);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 新高考
|
||||
* 数据迁移yzy_zj_major_score 新增字段 sch_cate rankOfCn
|
||||
* */
|
||||
|
||||
public function updateMajorScore(){
|
||||
$result = Db::table('yzy_zj_major_score')->field("id,sch_id")->select();
|
||||
$cate = config('setsub.cateName');
|
||||
foreach ($result as $key =>$val){
|
||||
$resClass = Db::table('yzy_school')->field('cate_id')->where('sch_id','=',$val['sch_id'])->find();
|
||||
$cateName = $cate[$resClass['cate_id']];
|
||||
$resRank = Db::table("yzy_school_exts")->field('rankOfCn')->where("sch_id",'=',$val['sch_id'])->find();
|
||||
|
||||
Db::table('yzy_zj_major_score')->where([['id','=',$val['id']],['sch_id','=',$val['sch_id']]])->update(['classify'=>$cateName,'rankOfCn'=>$resRank['rankOfCn']]);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* school表排名更新
|
||||
* */
|
||||
|
||||
public function updateSchoolRank(){
|
||||
$result = Db::table('yzy_school')->field("id,sch_id")->select();
|
||||
foreach ($result as $key =>$val){
|
||||
|
||||
$resRank = Db::table("yzy_school_exts")->field('rankOfCn')->where("sch_id",'=',$val['sch_id'])->find();
|
||||
|
||||
Db::table('yzy_school')->where([['id','=',$val['id']],['sch_id','=',$val['sch_id']]])->update(['rankOfCn'=>$resRank['rankOfCn']]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 新高考
|
||||
* 专业数量同步到院校表
|
||||
* */
|
||||
public function majorCountToSch(){
|
||||
set_time_limit(0);
|
||||
$count = Db::table('rec_zhejiang_majors')->count();
|
||||
$num = 1000;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
$offet = ($i - 1) * $num;
|
||||
$result = Db::table('rec_zhejiang_schs')->field("id")->limit($offet, $num)->select();
|
||||
foreach ($result as $key => $val) {
|
||||
$resMajor = Db::table('rec_zhejiang_schs_majors')->field('professions')->where('rec_id', '=', $val['id'])->find();
|
||||
$count = count(json_decode($resMajor['professions']));
|
||||
Db::table('rec_zhejiang_schs')->where('id', '=', $val['id'])->update(['majorNum' => $count]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 院校logo地址查询
|
||||
* */
|
||||
public function getSchoolLogos(){
|
||||
$result = Db::table('yzy_school')->field("sch_id,logo")->select();
|
||||
return api_return('ok',$result);
|
||||
}
|
||||
|
||||
/*
|
||||
* 新高考院校表同步is_yldx,is_ylxk
|
||||
* */
|
||||
|
||||
public function ylxkyldxToNewSch(){
|
||||
set_time_limit(0);
|
||||
$count = Db::table('rec_zhejiang_schs')->count();
|
||||
$num = 100;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
|
||||
$offet = ($i - 1) * $num;
|
||||
$result = Db::table('rec_zhejiang_schs')->field("id,collegeId")->limit($offet, $num)->select();
|
||||
foreach ($result as $key => $val) {
|
||||
$resSch = Db::table('yzy_school')->field("is_yldx,is_ylxk")->where('sch_id', '=', $val['collegeId'])->find();
|
||||
Db::table('rec_zhejiang_schs')->where([['id', '=', $val['id']], ['collegeId', '=', $val['collegeId']]])->update(['is_yldx' => $resSch['is_yldx'], 'is_ylxk' => $resSch['is_ylxk']]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 新高考專業表同步is_yldx,is_ylxk
|
||||
* */
|
||||
|
||||
public function ylxkyldxToNewSchMajor(){
|
||||
|
||||
ignore_user_abort(true);
|
||||
set_time_limit(0);
|
||||
$id = Cache::store('redis')->get('NewSchMajorIDso');
|
||||
if(empty($id)){
|
||||
$id = 0;
|
||||
}
|
||||
$count = Db::table('rec_zhejiang_majors')->where('id','>',$id)->count();
|
||||
$num = 10000;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
$offet = ($i - 1) * $num;
|
||||
$result = Db::table('rec_zhejiang_majors')->field("id,collegeId")->where('id','>',$id)->limit($offet, $num)->select();
|
||||
try {
|
||||
foreach ($result as $key => $val) {
|
||||
$resSch = Db::table('yzy_school')->field("is_public")->where('sch_id', '=', $val['collegeId'])->find();
|
||||
Db::table('rec_zhejiang_majors')->where([['id', '=', $val['id']]])->update(['is_public' => $resSch['is_public']]);
|
||||
Cache::store('redis')->set("NewSchMajorIDso",$val['id'],36000);
|
||||
\think\facade\Log::error($val['id']);
|
||||
|
||||
}
|
||||
}catch (\Exception $exception){
|
||||
\think\facade\Log::error($exception);
|
||||
}
|
||||
}
|
||||
echo 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 普通高考院校文科同步雙一流字段和majorNum,public
|
||||
* */
|
||||
|
||||
public function sylMajorNumToWen(){
|
||||
ignore_user_abort(true);
|
||||
set_time_limit(0);
|
||||
$id = Cache::store('redis')->get('recWenIDso');
|
||||
|
||||
if(empty($id)){
|
||||
$id = 0;
|
||||
}
|
||||
|
||||
$count = Db::table('rec_wen')->where('id','between',[$id,8175158])->count();
|
||||
$num = 10000;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
|
||||
$offet = ($i - 1) * $num;
|
||||
|
||||
$result = Db::table('rec_wen')->field("id,sch_id")->where('id','between',[$id,8175158])->limit($offet, $num)->select();
|
||||
|
||||
foreach ($result as $key => $val) {
|
||||
$resSch = Db::table('yzy_school')->field("is_public")->where('sch_id', '=', $val['sch_id'])->find();
|
||||
Db::table('rec_wen')->where([['id', '=', $val['id']]])->update(['is_public' => $resSch['is_public']]);
|
||||
Cache::store('redis')->set("recWenIDso",$val['id'],36000);
|
||||
}
|
||||
}
|
||||
echo 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* 普通高考院校理科同步雙一流字段和majorNum
|
||||
* */
|
||||
|
||||
public function sylMajorNumToLi(){
|
||||
|
||||
ignore_user_abort(true);
|
||||
set_time_limit(0);
|
||||
$id = Cache::store('redis')->get('recLikeIDo');
|
||||
if(empty($id)){
|
||||
$id = 0;
|
||||
}
|
||||
$count = Db::table('rec_li')->where('id','between',[$id,10491664])->count();
|
||||
$num = 10000;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
|
||||
$offet = ($i - 1) * $num;
|
||||
|
||||
$result = Db::table('rec_li')->field("id,sch_id")->where('id','between',[$id,10491664])->limit($offet, $num)->select();
|
||||
|
||||
foreach ($result as $key => $val) {
|
||||
$resSch = Db::table('yzy_school')->field("is_public")->where('sch_id', '=', $val['sch_id'])->find();
|
||||
Db::table('rec_li')->where([['id', '=', $val['id']]])->update(['is_public' => $resSch['is_public']]);
|
||||
Cache::store('redis')->set("recLikeIDo",$val['id'],36000);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
echo 1;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,212 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/28
|
||||
* Time: 13:54
|
||||
*/
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use think\Db;
|
||||
use think\Exception;
|
||||
use think\facade\Cache;
|
||||
use think\Log;
|
||||
|
||||
class Shellone
|
||||
{
|
||||
//修改新高考mykemu字段
|
||||
public function updateMykemu(){
|
||||
set_time_limit(0);
|
||||
$count = Db::table('rec_js')->count();
|
||||
$num = 100;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
|
||||
$offet = ($i-1)*$num;
|
||||
|
||||
$result = Db::table('rec_js')->field('id,mykemu')->limit($offet,$num)->select();
|
||||
$level = config('setsub.levelArr');
|
||||
foreach ($result as $key => $val) {
|
||||
$val['mykemu'] = $result = explode(',',$val['mykemu']);
|
||||
$res = '';
|
||||
foreach($val['mykemu'] as $k=>$v){
|
||||
|
||||
$res .= $level[$v];
|
||||
}
|
||||
|
||||
Db::table('rec_js')->where('id','=',$val['id'])->update(['mykemu'=>$res]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
echo ok;die;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* 修改rec_zhejiang_majors表,将classify中文转换成数字
|
||||
* */
|
||||
public function updateCollegeType(){
|
||||
$result = Db::table('rec_zhejiang_schs')->field('id,classify')->select();
|
||||
$cate = config('setsub.cateArr');
|
||||
foreach ($result as $key => $val) {
|
||||
$cateid = $cate[$val['classify']];
|
||||
|
||||
Db::table('rec_zhejiang_schs')->where('id','=',$val['id'])->update(['collegeType'=>$cateid]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* 最低分和位次迁移
|
||||
* */
|
||||
public function updateMajor(){
|
||||
$result = Db::table('rec_wen_major')->select();
|
||||
|
||||
foreach($result as $key=>$val){
|
||||
|
||||
$res = json_decode($val['professions']);
|
||||
foreach($res as $k => $v){
|
||||
$data['rec_id'] = $result[$key]['rec_id'];
|
||||
$data['title'] = $v->alias;
|
||||
$data['code'] = $v->majorCode;
|
||||
$resRank = json_decode($v->extended);
|
||||
$data['lowestRank'] = $resRank[0]->ls;
|
||||
$data['minScore'] = $resRank[0]->ms;
|
||||
$data['scoreLineYear'] = $v->scoreLineYear;
|
||||
$data['year'] = $v->year;
|
||||
$data['enterNum'] = $v->enterNum;
|
||||
$data['planNum'] = $v->planNum;
|
||||
$data['probability'] = $v->probability;
|
||||
Db::table('rec_majors')->insert($data);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 新高考
|
||||
* 数据迁移yzy_zj_major_score 新增字段 sch_cate rankOfCn
|
||||
* */
|
||||
|
||||
public function updateMajorScore(){
|
||||
$result = Db::table('yzy_zj_major_score')->field("id,sch_id")->select();
|
||||
$cate = config('setsub.cateName');
|
||||
foreach ($result as $key =>$val){
|
||||
$resClass = Db::table('yzy_school')->field('cate_id')->where('sch_id','=',$val['sch_id'])->find();
|
||||
$cateName = $cate[$resClass['cate_id']];
|
||||
$resRank = Db::table("yzy_school_exts")->field('rankOfCn')->where("sch_id",'=',$val['sch_id'])->find();
|
||||
|
||||
Db::table('yzy_zj_major_score')->where([['id','=',$val['id']],['sch_id','=',$val['sch_id']]])->update(['classify'=>$cateName,'rankOfCn'=>$resRank['rankOfCn']]);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* school表排名更新
|
||||
* */
|
||||
|
||||
public function updateSchoolRank(){
|
||||
$result = Db::table('yzy_school')->field("id,sch_id")->select();
|
||||
foreach ($result as $key =>$val){
|
||||
|
||||
$resRank = Db::table("yzy_school_exts")->field('rankOfCn')->where("sch_id",'=',$val['sch_id'])->find();
|
||||
|
||||
Db::table('yzy_school')->where([['id','=',$val['id']],['sch_id','=',$val['sch_id']]])->update(['rankOfCn'=>$resRank['rankOfCn']]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 新高考
|
||||
* 专业数量同步到院校表
|
||||
* */
|
||||
public function majorCountToSch(){
|
||||
set_time_limit(0);
|
||||
$count = Db::table('rec_zhejiang_majors')->count();
|
||||
$num = 100;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
$offet = ($i - 1) * $num;
|
||||
$result = Db::table('rec_zhejiang_schs')->field("id")->limit($offet, $num)->select();
|
||||
foreach ($result as $key => $val) {
|
||||
$resMajor = Db::table('rec_zhejiang_schs_majors')->field('professions')->where('rec_id', '=', $val['id'])->find();
|
||||
$count = count(json_decode($resMajor['professions']));
|
||||
Db::table('rec_zhejiang_schs')->where('id', '=', $val['id'])->update(['majorNum' => $count]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 院校logo地址查询
|
||||
* */
|
||||
public function getSchoolLogos(){
|
||||
$result = Db::table('yzy_school')->field("sch_id,logo")->select();
|
||||
return api_return('ok',$result);
|
||||
}
|
||||
|
||||
/*
|
||||
* 新高考院校表同步is_yldx,is_ylxk
|
||||
* */
|
||||
|
||||
public function ylxkyldxToNewSch(){
|
||||
set_time_limit(0);
|
||||
$count = Db::table('rec_zhejiang_schs')->count();
|
||||
$num = 1000;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
|
||||
$offet = ($i - 1) * $num;
|
||||
$result = Db::table('rec_zhejiang_schs')->field("id,collegeId")->limit($offet, $num)->select();
|
||||
foreach ($result as $key => $val) {
|
||||
$resSch = Db::table('yzy_school')->field("is_yldx,is_ylxk")->where('sch_id', '=', $val['collegeId'])->find();
|
||||
Db::table('rec_zhejiang_schs')->where([['id', '=', $val['id']], ['collegeId', '=', $val['collegeId']]])->update(['is_yldx' => $resSch['is_yldx'], 'is_ylxk' => $resSch['is_ylxk']]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 新高考專業表同步is_yldx,is_ylxk
|
||||
* */
|
||||
|
||||
public function ylxkyldxToNewSchMajor(){
|
||||
|
||||
ignore_user_abort(true);
|
||||
ini_set('max_execution_time', '0');
|
||||
set_time_limit(0);
|
||||
$id = Cache::store('redis')->get('NewSchMajorID');
|
||||
if(empty($id)){
|
||||
$id = 3589199;
|
||||
}
|
||||
$count = Db::table('rec_zhejiang_majors')->where('id','>',$id)->count();
|
||||
$num = 1000;//每次导入条数
|
||||
$limit = ceil($count/$num);
|
||||
|
||||
for($i=1;$i<=$limit;$i++) {
|
||||
$offet = ($i - 1) * $num;
|
||||
$result = Db::table('rec_zhejiang_majors')->field("id,collegeId")->where('id','>',$id)->limit($offet, $num)->select();
|
||||
try {
|
||||
foreach ($result as $key => $val) {
|
||||
$resSch = Db::table('yzy_school')->field("is_yldx,is_ylxk")->where('sch_id', '=', $val['collegeId'])->find();
|
||||
Db::table('rec_zhejiang_majors')->where([['id', '=', $val['id']], ['collegeId', '=', $val['collegeId']]])->update(['is_yldx' => $resSch['is_yldx'], 'is_ylxk' => $resSch['is_ylxk']]);
|
||||
Cache::store('redis')->set("NewSchMajorID",$val['id'],72000);
|
||||
|
||||
}
|
||||
}catch (\Exception $exception){
|
||||
\think\facade\Log::error($exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
/**
|
||||
* 系统服务
|
||||
* Class System
|
||||
* @package app\admin\controller
|
||||
*/
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use app\admin\model\SysNode;
|
||||
use app\admin\service\NodeService;
|
||||
use think\facade\Cache;
|
||||
|
||||
|
||||
class System extends AdminController {
|
||||
|
||||
/**
|
||||
* 刷新缓存
|
||||
*/
|
||||
public function refresh() {
|
||||
if (app('cache')->clear()) {
|
||||
echo '缓存刷新成功';
|
||||
return msg_success('缓存刷新成功!');
|
||||
} else {
|
||||
echo '缓存刷新失败';
|
||||
return msg_error('缓存刷新失败!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新节点
|
||||
*/
|
||||
public function refresh_node() {
|
||||
if (!$this->request->isPost()) {
|
||||
//get ajax 访问
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$node_list = NodeService::refreshNode();
|
||||
if (!empty($node_list)) return __success('节点刷新成功!');
|
||||
return __error('暂无数据变化');
|
||||
}
|
||||
$modules = NodeService::getFolders(env('app_path'));
|
||||
$module_list = [];
|
||||
foreach ($modules as $k => $val) {
|
||||
$node = model('node')->where(['node' => $val, 'type' => 1])->find();
|
||||
!empty($node) ? $module_list[$k] = ['module' => $val, 'title' => $node['title']] : $module_list[$k] = ['module' => $val, 'title' => ''];
|
||||
$val == 'admin' ? $module_list[$k]['is_checked'] = true : $module_list[$k]['is_checked'] = false;
|
||||
}
|
||||
$basic_data = [
|
||||
'title' => '系统节点列表',
|
||||
'module_list' => $module_list,
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
if (empty($post['module'])) return __error('请选中需要刷新节点的模块!');
|
||||
$node_list = NodeService::refreshNode($post['module']);
|
||||
if ($node_list['code'] == 0) {
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
return __success($node_list['msg']);
|
||||
} else {
|
||||
return __error($node_list['msg']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除失效节点
|
||||
* @return \think\response\Json
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function clear_node() {
|
||||
if (!$this->request->isPost()) {
|
||||
$basic_data = [
|
||||
'title' => '清除失效节点',
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
} else {
|
||||
$clean = NodeService::cleanNode();
|
||||
if ($clean['code'] == 0) {
|
||||
return __success($clean['msg']);
|
||||
} else {
|
||||
return __error($clean['msg']);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
161
芳林公司项目/www.zhiyuanhelp.com/application/admin/controller/Test.php
Normal file
161
芳林公司项目/www.zhiyuanhelp.com/application/admin/controller/Test.php
Normal file
@@ -0,0 +1,161 @@
|
||||
<?php
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | Think.Admin
|
||||
// +----------------------------------------------------------------------
|
||||
// | 版权所有 2014~2017 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | 官方网站: http://think.ctolog.com
|
||||
// +----------------------------------------------------------------------
|
||||
// | 开源协议 ( https://mit-license.org )
|
||||
// +----------------------------------------------------------------------
|
||||
// | github开源项目:https://github.com/zoujingli/Think.Admin
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
|
||||
use app\admin\service\ModelService;
|
||||
use app\common\service\CurlService;
|
||||
use app\common\service\NodeService;
|
||||
use think\Db;
|
||||
use think\Controller;
|
||||
use think\facade\Env;
|
||||
use think\facade\Cache;
|
||||
|
||||
class Test extends Controller {
|
||||
|
||||
|
||||
/**
|
||||
* 测试
|
||||
*/
|
||||
public function index() {
|
||||
return $this->fetch('');
|
||||
}
|
||||
|
||||
public function upload() {
|
||||
$data = [
|
||||
'cur' => 'complete',
|
||||
'url' => time() . '.jpg',
|
||||
];
|
||||
return json($data);
|
||||
}
|
||||
|
||||
public function test() {
|
||||
$redis = Cache::handler();
|
||||
while (true) {
|
||||
try {
|
||||
$value = $redis->LPOP('click');
|
||||
if (!$value) {
|
||||
break;
|
||||
}
|
||||
echo $value . '<br>';
|
||||
} catch (Exception $e) {
|
||||
return $e->getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function url() {
|
||||
redirect('install/index/index');
|
||||
exit;
|
||||
}
|
||||
|
||||
public function curl() {
|
||||
$test = curl()->Get('http://www.baidu.com');
|
||||
dump($test);
|
||||
}
|
||||
|
||||
|
||||
public function add() {
|
||||
$insert = [
|
||||
'username' => 'admin',
|
||||
'password' => password('bsafe2016'),
|
||||
'id' => '1',
|
||||
'auth_id' => '[]',
|
||||
'status' => 1,
|
||||
];
|
||||
|
||||
Db::startTrans();
|
||||
try {
|
||||
Db::table('system_user')->insert($insert);
|
||||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
$this->error($e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成数据库配置文件
|
||||
* @return array
|
||||
*/
|
||||
private function mkDatabase($data = []) {
|
||||
$code = <<<INFO
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
return [
|
||||
// 数据库类型
|
||||
'type' => 'mysql',
|
||||
// 服务器地址
|
||||
'hostname' => '{$data['hostname']}',
|
||||
// 数据库名
|
||||
'database' => '{$data['database']}',
|
||||
// 用户名
|
||||
'username' => '{$data['username']}',
|
||||
// 密码
|
||||
'password' => '{$data['password']}',
|
||||
// 端口
|
||||
'hostport' => '{$data['hostport']}',
|
||||
// 连接dsn
|
||||
'dsn' => '',
|
||||
// 数据库连接参数
|
||||
'params' => [],
|
||||
// 数据库编码默认采用utf8
|
||||
'charset' => 'utf8',
|
||||
// 数据库表前缀
|
||||
'prefix' => '{$data['prefix']}',
|
||||
// 数据库调试模式
|
||||
'debug' => false,
|
||||
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
|
||||
'deploy' => 0,
|
||||
// 数据库读写是否分离 主从式有效
|
||||
'rw_separate' => false,
|
||||
// 读写分离后 主服务器数量
|
||||
'master_num' => 1,
|
||||
// 指定从服务器序号
|
||||
'slave_no' => '',
|
||||
// 是否严格检查字段是否存在
|
||||
'fields_strict' => false,
|
||||
// 数据集返回类型
|
||||
'resultset_type' => 'array',
|
||||
// 自动写入时间戳字段
|
||||
'auto_timestamp' => false,
|
||||
// 时间字段取出后的默认时间格式
|
||||
'datetime_format' => 'Y-m-d H:i:s',
|
||||
// 是否需要进行SQL性能分析
|
||||
'sql_explain' => false,
|
||||
// Builder类
|
||||
'builder' => '',
|
||||
// Query类
|
||||
'query' => '\\think\\db\\Query',
|
||||
];
|
||||
INFO;
|
||||
file_put_contents(Env::get('config_path') . 'database1.php', $code);
|
||||
// 判断写入是否成功
|
||||
$config = include Env::get('config_path') . 'database1.php';
|
||||
if (empty($config['database']) || $config['database'] != $data['database']) {
|
||||
return $this->error('[application/database.php]数据库配置写入失败!');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
258
芳林公司项目/www.zhiyuanhelp.com/application/admin/controller/User.php
Normal file
258
芳林公司项目/www.zhiyuanhelp.com/application/admin/controller/User.php
Normal file
@@ -0,0 +1,258 @@
|
||||
<?php
|
||||
/*
|
||||
* 管理员信息管理
|
||||
* */
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use think\facade\Cache;
|
||||
|
||||
|
||||
class User extends AdminController {
|
||||
|
||||
/**
|
||||
* User模型对象
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
* User constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->model = model('user');
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理员列表
|
||||
*/
|
||||
public function index() {
|
||||
|
||||
//ajax访问
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$page = $this->request->get('page', 1);
|
||||
$limit = $this->request->get('limit', 10);
|
||||
$search = (array)$this->request->get('search', []);
|
||||
return json($this->model->userList($page, $limit, $search));
|
||||
}
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '管理员列表',
|
||||
'data' => '',
|
||||
];
|
||||
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加管理员
|
||||
* @return mixed
|
||||
*/
|
||||
public function add() {
|
||||
if (!$this->request->isPost()) {
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '添加管理员',
|
||||
'auth' => model('auth')->getList(),
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->form();
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
!isset($post['auth_id']) && $post['auth_id'] = [];
|
||||
//数组转json
|
||||
$post['auth_id'] = json_encode($post['auth_id']);
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\User.add');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//保存数据,返回结果
|
||||
$post['password'] = password($post['password']);
|
||||
return $this->model->add($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改管理员信息
|
||||
* @return mixed|string|\think\response\Json
|
||||
*/
|
||||
public function edit() {
|
||||
if (!$this->request->isPost()) {
|
||||
|
||||
//查找所需修改用户
|
||||
$user = $this->model->where('id', $this->request->get('id'))->find();
|
||||
if (empty($user)) return msg_error('暂无数据,请重新刷新页面!');
|
||||
|
||||
$auth = model('auth')->getList()->toArray();
|
||||
|
||||
$auth_id = json_decode($user['auth_id'], true);
|
||||
|
||||
foreach ($auth as $k => $val) {
|
||||
$is_checked = false;
|
||||
foreach ($auth_id as $k_1) $val['id'] == $k_1 && $is_checked = true;
|
||||
$auth[$k]['is_checked'] = $is_checked;
|
||||
}
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '修改管理员信息',
|
||||
'user' => $user->hidden(['password']),
|
||||
'auth' => $auth,
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->form();
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
!isset($post['auth_id']) && $post['auth_id'] = [];
|
||||
//数组转json
|
||||
$post['auth_id'] = json_encode($post['auth_id']);
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\User.edit');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->edit($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单模板
|
||||
* @return mixed
|
||||
*/
|
||||
protected function form() {
|
||||
return $this->fetch('form');
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理员的删除
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function del() {
|
||||
$get = $this->request->get();
|
||||
|
||||
//验证数据
|
||||
if (!is_array($get['id'])) {
|
||||
$validate = $this->validate($get, 'app\admin\validate\User.del');
|
||||
if (true !== $validate) return __error($validate);
|
||||
}
|
||||
|
||||
//执行删除操作
|
||||
if (!is_array($get['id'])) {
|
||||
$del = $this->model->where('id', $get['id'])->update(['is_deleted' => 1]);
|
||||
} else {
|
||||
$del = $this->model->whereIn('id', $get['id'])->update(['is_deleted' => 1]);
|
||||
}
|
||||
|
||||
if ($del >= 1) {
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
return __success('删除成功!');
|
||||
} else {
|
||||
return __error('数据有误,请刷新重试!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户密码
|
||||
* @return mixed|string|\think\response\Json
|
||||
*/
|
||||
public function edit_password() {
|
||||
if (!$this->request->isPost()) {
|
||||
if (empty($this->request->get('id'))) return msg_error('暂无用户信息!');
|
||||
$where_user = [
|
||||
'id' => $this->request->get('id'),
|
||||
'is_deleted' => 0,
|
||||
];
|
||||
$user = $this->model->where($where_user)->field('id, username')->find();
|
||||
if (empty($user)) return msg_error('暂无用户信息,请关闭页面刷新重试!');
|
||||
$basic_data = [
|
||||
'title' => '修改管理员密码',
|
||||
'user' => $user,
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\User.edit_password');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//修改密码数据
|
||||
return $this->model->editPassword($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改管理员状态
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function status() {
|
||||
$get = $this->request->get();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($get, 'app\admin\validate\User.status');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//判断管理员状态
|
||||
$status = $this->model->where('id', $get['id'])->value('status');
|
||||
$status == 1 ? list($msg, $status) = ['禁用成功', $status = 0] : list($msg, $status) = ['启用成功', $status = 1];
|
||||
|
||||
//执行更新操作操作
|
||||
$update = $this->model->where('id', $get['id'])->update(['status' => $status]);
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
if ($update >= 1) return __success($msg);
|
||||
return __error('数据有误,请刷新重试!');
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改自己的信息
|
||||
* @return mixed|string|\think\response\Json
|
||||
*/
|
||||
public function edit_self() {
|
||||
if (!$this->request->isPost()) {
|
||||
|
||||
//查找所需修改用户
|
||||
$user = $this->model->where('id', $this->user['id'])->find();
|
||||
if (empty($user)) return msg_error('暂无数据,请重新刷新页面!');
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '修改管理员信息',
|
||||
'user' => $user->hidden(['password']),
|
||||
];
|
||||
$this->assign($basic_data);
|
||||
|
||||
return $this->fetch('form_self');
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\User.editSelf');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//清空菜单缓存
|
||||
clear_menu();
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->editSelf($post);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
44e9deb2-eea3-4463-8100-5169958e89b1
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2018/10/1
|
||||
* Time: 1:10
|
||||
*/
|
||||
|
||||
namespace app\admin\controller\api;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use think\facade\Cache;
|
||||
|
||||
|
||||
/**
|
||||
* 后台公共接口
|
||||
* Class Common
|
||||
* @package app\api\controller\admin
|
||||
*/
|
||||
class Common extends AdminController {
|
||||
|
||||
/**
|
||||
* 获取菜单接口
|
||||
*/
|
||||
public function getMenu() {
|
||||
$SysInfo = Cache::get('SysInfo');
|
||||
|
||||
if (!isset($SysInfo['AdminModuleName'])) {
|
||||
return __error('后台绑定模块名数据有误,请刷新缓存或修改数据库配置!');
|
||||
}
|
||||
$this->redirect(url("{$SysInfo['AdminModuleName']}.php\api.menu\getMenu"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开图片上传窗口
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function uploadIamge($type = 'one') {
|
||||
$SysInfo = Cache::get('SysInfo');
|
||||
if (!isset($SysInfo['AdminModuleName'])) {
|
||||
return __error('后台绑定模块名数据有误,请刷新缓存或修改数据库配置!');
|
||||
}
|
||||
$this->redirect(url("{$SysInfo['AdminModuleName']}.php\\tool.upload\image") . "?type=" . $type);
|
||||
}
|
||||
|
||||
/**
|
||||
* 后台刷新缓存接口
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function clearCache() {
|
||||
if (app('cache')->clear()) {
|
||||
return __success('缓存刷新成功!');
|
||||
} else {
|
||||
return __error('缓存刷新失败!');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
/*
|
||||
* 菜单控制接口
|
||||
* */
|
||||
|
||||
namespace app\admin\controller\api;
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use think\facade\Cache;
|
||||
|
||||
class Menu extends AdminController
|
||||
{
|
||||
|
||||
/**
|
||||
* 根据权限规则生成菜单栏数据
|
||||
* @return \think\response\Json
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function getMenu()
|
||||
{
|
||||
if (!empty(Cache::tag('menu')->get(session('user.id') . '_AdminMenu'))) {
|
||||
return json(Cache::get(session('user.id') . '_AdminMenu'));
|
||||
} else {
|
||||
$menu_list = \app\admin\model\Menu::getMenuApi();
|
||||
Cache::tag('menu')->set(session('user.id') . '_AdminMenu', $menu_list, 86400);
|
||||
return json($menu_list);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取顶部菜单栏
|
||||
* @return mixed
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function getNav()
|
||||
{
|
||||
if (!empty(Cache::tag('menu')->get(session('user.id') . '_AdminMenu'))) {
|
||||
$menu_list = Cache::get(session('user.id') . '_AdminMenu');
|
||||
} else {
|
||||
$menu_list = \app\admin\model\Menu::getMenuApi();
|
||||
Cache::tag('menu')->set(session('user.id') . '_AdminMenu', $menu_list, 86400);
|
||||
}
|
||||
$memu_id_list = [];
|
||||
foreach ($menu_list as $key => $val) {
|
||||
$menu_id = explode("66ysx_", $key);
|
||||
isset($menu_id[1]) && $memu_id_list[] = $menu_id[1];
|
||||
}
|
||||
$nav = model('menu')->whereIn('id', $memu_id_list)->field('id, title, icon')
|
||||
->order([
|
||||
'sort' => 'asc',
|
||||
'create_at' => 'asc',
|
||||
])->select();
|
||||
foreach ($nav as $key => $val) {
|
||||
(strpos($nav[$key]['icon'], 'fa-') !== false) ? $nav[$key]['icon_type'] = true : $nav[$key]['icon_type'] = false;
|
||||
}
|
||||
return $nav;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* 系统节点接口
|
||||
* */
|
||||
namespace app\admin\controller\api;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
|
||||
class Node extends AdminController {
|
||||
|
||||
/**
|
||||
* 获取对应角色的节点数据
|
||||
* @param $id
|
||||
* @return \think\response\Json
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function getNodeTree($id) {
|
||||
$list = [];
|
||||
$module = model('node')->where(['type' => 1, 'is_auth' => 1])->order(['node' => 'asc'])->select();
|
||||
foreach ($module as $k => $val) {
|
||||
$list[$k] = [
|
||||
'title' => $this->__biuldGetNodeTree($val['node'], $val['title']),
|
||||
'value' => $val['id'],
|
||||
'data' => [],
|
||||
];
|
||||
$is_checked = model('auth_node')->where(['auth' => $id, 'node' => $val['id']])->find();
|
||||
!empty($is_checked) && $list[$k]['checked'] = true;
|
||||
$data_1 = model('node')->where([['type', '=', 2], ['is_auth', '=', 1], ['node', 'LIKE', "{$val['node']}/%"]])->select();
|
||||
foreach ($data_1 as $k_1 => $val_1) {
|
||||
$list[$k]['data'][$k_1] = [
|
||||
'title' => $this->__biuldGetNodeTree($val_1['node'], $val_1['title']),
|
||||
'value' => $val_1['id'],
|
||||
'data' => [],
|
||||
];
|
||||
$is_checked_1 = model('auth_node')->where(['auth' => $id, 'node' => $val_1['id']])->find();
|
||||
!empty($is_checked_1) && $list[$k]['data'][$k_1]['checked'] = true;
|
||||
$data_2 = model('node')->where([['type', '=', 3], ['is_auth', '=', 1], ['node', 'LIKE', "{$val_1['node']}/%"]])->select();
|
||||
foreach ($data_2 as $k_2 => $val_2) {
|
||||
$list[$k]['data'][$k_1]['data'][$k_2] = [
|
||||
'title' => $this->__biuldGetNodeTree($val_2['node'], $val_2['title']),
|
||||
'value' => $val_2['id'],
|
||||
'data' => [],
|
||||
];
|
||||
$is_checked_2 = model('auth_node')->where(['auth' => $id, 'node' => $val_2['id']])->find();
|
||||
!empty($is_checked_2) && $list[$k]['data'][$k_1]['data'][$k_2]['checked'] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return json($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 组合数据
|
||||
* @param $node
|
||||
* @param $title
|
||||
* @return string
|
||||
*/
|
||||
protected function __biuldGetNodeTree($node, $title) {
|
||||
if (empty($title)) return $node;
|
||||
else return $title . '【' . $node . '】';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
* 后台上传通用接口
|
||||
* Class Upload
|
||||
* @package app\admin\controller\api
|
||||
*/
|
||||
|
||||
namespace app\admin\controller\api;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use app\admin\service\QiniuService;
|
||||
use think\Db;
|
||||
|
||||
|
||||
class Upload extends AdminController {
|
||||
|
||||
/**
|
||||
* 编辑器多图片上传
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function image() {
|
||||
$files = request()->file();
|
||||
if (is_array($files)) {
|
||||
foreach ($files as $vo) {
|
||||
$info = $vo->move('../public/static/uploads');
|
||||
if ($info) {
|
||||
$url[] = '/static/uploads/' . date('Ymd') . '/' . $info->getFilename();
|
||||
} else {
|
||||
return json(['code' => 1, 'msg' => $vo->getError()]);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$info = $files->move('../public/static/uploads');
|
||||
if ($info) {
|
||||
$url[] = '/static/uploads/' . date('Ymd') . '/' . $info->getFilename();
|
||||
} else {
|
||||
return json(['code' => 1, 'msg' => $files->getError()]);
|
||||
}
|
||||
}
|
||||
//判断是否使用七牛云上传
|
||||
$file_type = Db::name('SystemConfig')->where(['name' => 'FileType', 'group' => 'file'])->value('value');
|
||||
if ($file_type == 2) {
|
||||
foreach ($url as &$vo) {
|
||||
$vo = QiniuService::upload($vo);
|
||||
}
|
||||
}
|
||||
return json(['code' => 0, 'msg' => '上传成功!', 'url' => $url]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/**
|
||||
* 欢迎页接口
|
||||
* Class Welcome
|
||||
* @package app\admin\controller\api
|
||||
*/
|
||||
|
||||
namespace app\admin\controller\api;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
|
||||
|
||||
class Welcome extends AdminController {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
abd2f604-0e26-4a3e-ae75-60639c9df448
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/24
|
||||
* Time: 15:05
|
||||
*/
|
||||
|
||||
namespace app\admin\controller\custom;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
|
||||
class Message extends AdminController
|
||||
{
|
||||
/**
|
||||
* User模型对象
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
* User constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->model = new \app\admin\model\costom\Message;
|
||||
}
|
||||
|
||||
/**
|
||||
* 留言建议列表
|
||||
*/
|
||||
public function index() {
|
||||
|
||||
//ajax访问
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$page = $this->request->get('page', 1);
|
||||
$limit = $this->request->get('limit', 10);
|
||||
$search = (array)$this->request->get('search', []);
|
||||
return json($this->model->messageList($page, $limit, $search));
|
||||
}
|
||||
|
||||
$basic_data = [
|
||||
'title' => '留言建议列表',
|
||||
'data' => '',
|
||||
];
|
||||
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 留言回复
|
||||
* @return mixed|string|\think\response\Json
|
||||
*/
|
||||
public function reply() {
|
||||
if (!$this->request->isPost()) {
|
||||
|
||||
//查找所需修改的数据
|
||||
$data = $this->model->where('id', $this->request->get('id'))->find();
|
||||
if($data['img1']){
|
||||
$data['img1'] = config('secure.mpic_url'). $data['img1'];
|
||||
}
|
||||
if($data['img2']){
|
||||
$data['img2'] = config('secure.mpic_url'). $data['img2'];
|
||||
}
|
||||
|
||||
if (empty($data)) return msg_error('暂无数据,请重新刷新页面!');
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '工单回复',
|
||||
'result' => $data,
|
||||
];
|
||||
return $this->fetch('form', $basic_data);
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
$post['reply_time'] = time();
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\custom\Message.reply');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->reply($post);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/24
|
||||
* Time: 11:25
|
||||
*/
|
||||
|
||||
namespace app\admin\controller\custom;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use think\Db;
|
||||
use app\admin\model\costom\Order as OrderModel;
|
||||
class Order extends AdminController
|
||||
{
|
||||
/**
|
||||
* User模型对象
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
* User constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->model = new \app\admin\model\costom\Order;
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单列表
|
||||
*/
|
||||
public function index() {
|
||||
|
||||
//ajax访问
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$page = $this->request->get('page', 1);
|
||||
$limit = $this->request->get('limit', 10);
|
||||
$search = (array)$this->request->get('search', []);
|
||||
return json($this->model->orderList($page, $limit, $search));
|
||||
}
|
||||
//获取配置表的省份数据
|
||||
$resProvince = config('province.province');
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '订单列表',
|
||||
'resProvince' => $resProvince,
|
||||
'data' => '',
|
||||
];
|
||||
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
|
||||
/*
|
||||
* 订单详情
|
||||
* */
|
||||
|
||||
public function details(){
|
||||
//订单商品列表
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$id = $this->request->get('user_id');
|
||||
$result = Db::table('orders')->where('user_id','=',$id)->limit(30)->select();
|
||||
|
||||
empty($result) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
//获取配置权限名称
|
||||
$vipNameArr = config('product.vipName');
|
||||
foreach($result as $key => $val){
|
||||
$result[$key]['vipName'] = $vipNameArr[$val['vip']];
|
||||
$result[$key]['add_time'] = date('Y-m-d H:i:s',$val['add_time']);
|
||||
if($val['pay_time']){
|
||||
$result[$key]['pay_time'] = date('Y-m-d H:i:s',$val['pay_time']);
|
||||
}
|
||||
$val['wenli'] = $val['wenli'] = config('setSub.subTypeName')[$val['wenli']];
|
||||
//拼接用户信息
|
||||
$result[$key]['userInfo'] = $val['province_title']."_".$val['score']."_".$val['wenli']."_".$val['mykemustr'];
|
||||
|
||||
}
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'data' => $result
|
||||
];
|
||||
|
||||
return json($list);
|
||||
}
|
||||
$id = $this->request->get('id',0);
|
||||
|
||||
$basic_data = [
|
||||
'title' => '订单详情列表',
|
||||
'data' => '',
|
||||
'user_id' => $id
|
||||
];
|
||||
|
||||
$this->assign($basic_data);
|
||||
return $this->fetch('custom/student/details');
|
||||
}
|
||||
|
||||
/*
|
||||
* 订单退款
|
||||
* */
|
||||
public function refundOrder(){
|
||||
$post = $this->request->post();
|
||||
$validate = $this->validate($post, 'app\admin\validate\custom\Student.refundOrder');
|
||||
if (true !== $validate){
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $validate
|
||||
];
|
||||
return $list;
|
||||
exit;
|
||||
};
|
||||
|
||||
$result = OrderModel::orderRefund($post);
|
||||
|
||||
if($result){
|
||||
$list = [
|
||||
'code' => 1,
|
||||
'msg' => '退款成功!'
|
||||
];
|
||||
}else{
|
||||
$list = [
|
||||
'code' => 2,
|
||||
'msg' => '退款失败!'
|
||||
];
|
||||
}
|
||||
return $list;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/25
|
||||
* Time: 15:09
|
||||
*/
|
||||
|
||||
namespace app\admin\controller\custom;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use think\Db;
|
||||
|
||||
class Proscore extends AdminController
|
||||
{
|
||||
/**
|
||||
* 默认模型对象
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
* User constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->model = new \app\admin\model\costom\Proscore();
|
||||
}
|
||||
|
||||
/**
|
||||
* 省控分數列表
|
||||
* @return mixed|\think\response\Json
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function index() {
|
||||
if (!$this->request->isPost()) {
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$page = $this->request->get('page', 1);
|
||||
$limit = $this->request->get('limit', 10);
|
||||
$search = (array)$this->request->get('search', []);
|
||||
return json($this->model->getList($page, $limit, $search));
|
||||
}
|
||||
//获取配置表的省份数据
|
||||
$resProvince = config('province.province');
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '省控分数列表',
|
||||
'resProvince' => $resProvince,
|
||||
'data' => '',
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 添加
|
||||
* @return mixed
|
||||
*/
|
||||
public function add() {
|
||||
if (!$this->request->isPost()) {
|
||||
$province_list = config('province.province');
|
||||
$basic_data = [
|
||||
'province_list' => $province_list,
|
||||
'title' => '添加',
|
||||
];
|
||||
return $this->fetch('form', $basic_data);
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\custom\Proscore.add');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->addData($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
* @return mixed|string|\think\response\Json
|
||||
*/
|
||||
public function edit() {
|
||||
if (!$this->request->isPost()) {
|
||||
$province_list = config('province.province');
|
||||
//查找所需修改的数据
|
||||
$data = $this->model->where('id', $this->request->get('id'))->find();
|
||||
if (empty($data)) return msg_error('暂无数据,请重新刷新页面!');
|
||||
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '修改信息',
|
||||
'res' => $data,
|
||||
'province_list'=> $province_list
|
||||
];
|
||||
return $this->fetch('form', $basic_data);
|
||||
} else {
|
||||
$post = $this->request->post();
|
||||
//验证数据
|
||||
$validate = $this->validate($post, 'app\admin\validate\custom\Proscore.edit');
|
||||
if (true !== $validate) return __error($validate);
|
||||
|
||||
//保存数据,返回结果
|
||||
return $this->model->editData($post);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function del() {
|
||||
$get = $this->request->get();
|
||||
//验证数据
|
||||
if (!is_array($get['id'])) {
|
||||
$validate = $this->validate($get, 'app\admin\validate\custom\Proscore.del');
|
||||
if (true !== $validate) return __error($validate);
|
||||
}
|
||||
|
||||
//执行删除操作
|
||||
return $this->model->delData($get['id'], true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/23
|
||||
* Time: 8:53
|
||||
*/
|
||||
|
||||
namespace app\admin\controller\custom;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
use think\Db;
|
||||
use app\admin\model\costom\Order;
|
||||
class Student extends AdminController
|
||||
{
|
||||
/**
|
||||
* User模型对象
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
* User constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
$this->model = new \app\admin\model\costom\User;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用戶列表
|
||||
*/
|
||||
public function index() {
|
||||
|
||||
//ajax访问
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$page = $this->request->get('page', 1);
|
||||
$limit = $this->request->get('limit', 10);
|
||||
$search = (array)$this->request->get('search', []);
|
||||
return json($this->model->userList($page, $limit, $search));
|
||||
}
|
||||
//获取配置表的省份数据
|
||||
$resProvince = config('province.province');
|
||||
//基础数据
|
||||
$basic_data = [
|
||||
'title' => '用戶列表',
|
||||
'resProvince' => $resProvince,
|
||||
'data' => '',
|
||||
];
|
||||
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
|
||||
/*
|
||||
* 订单详情
|
||||
* */
|
||||
|
||||
public function details(){
|
||||
//订单商品列表
|
||||
if ($this->request->get('type') == 'ajax') {
|
||||
$id = $this->request->get('user_id');
|
||||
$result = Db::table('orders')->where('user_id','=',$id)->limit(30)->select();
|
||||
|
||||
empty($result) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
//获取配置权限名称
|
||||
$vipNameArr = config('product.vipName');
|
||||
foreach($result as $key => $val){
|
||||
$result[$key]['vipName'] = $vipNameArr[$val['vip']];
|
||||
$result[$key]['add_time'] = date('Y-m-d H:i:s',$val['add_time']);
|
||||
if($val['pay_time']){
|
||||
$result[$key]['pay_time'] = date('Y-m-d H:i:s',$val['pay_time']);
|
||||
}
|
||||
$val['wenli'] = $val['wenli'] = config('setSub.subTypeName')[$val['wenli']];
|
||||
//拼接用户信息
|
||||
$result[$key]['userInfo'] = $val['province_title']."_".$val['score']."_".$val['wenli']."_".$val['mykemustr'];
|
||||
|
||||
}
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'data' => $result
|
||||
];
|
||||
|
||||
return json($list);
|
||||
}
|
||||
$id = $this->request->get('id',0);
|
||||
|
||||
$basic_data = [
|
||||
'title' => '订单详情列表',
|
||||
'data' => '',
|
||||
'user_id' => $id
|
||||
];
|
||||
|
||||
$this->assign($basic_data);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
/*
|
||||
* 订单退款
|
||||
* */
|
||||
public function refundOrder(){
|
||||
$post = $this->request->post();
|
||||
$validate = $this->validate($post, 'app\admin\validate\custom\Student.refundOrder');
|
||||
if (true !== $validate){
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $validate
|
||||
];
|
||||
return $list;
|
||||
exit;
|
||||
};
|
||||
|
||||
$result = Order::orderRefund($post);
|
||||
|
||||
if($result){
|
||||
$list = [
|
||||
'code' => 1,
|
||||
'msg' => '退款成功!'
|
||||
];
|
||||
}else{
|
||||
$list = [
|
||||
'code' => 2,
|
||||
'msg' => '退款失败!'
|
||||
];
|
||||
}
|
||||
return $list;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
69df9137-96a1-4de5-a0ee-79d0e3e649fd
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2018/10/15
|
||||
* Time: 21:51
|
||||
*/
|
||||
|
||||
namespace app\admin\controller\tool;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
|
||||
/**
|
||||
* 图标管理
|
||||
* Class Icon
|
||||
* @package app\admin\controller
|
||||
*/
|
||||
class Icon extends AdminController {
|
||||
|
||||
/**
|
||||
* 图标列表
|
||||
*/
|
||||
public function index() {
|
||||
|
||||
$basic_data = [
|
||||
'title' => '图标列表',
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
|
||||
public function fa(){
|
||||
$basic_data = [
|
||||
'title' => 'fa图标列表',
|
||||
];
|
||||
return $this->fetch('', $basic_data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2018/10/15
|
||||
* Time: 21:58
|
||||
*/
|
||||
|
||||
namespace app\admin\controller\tool;
|
||||
|
||||
|
||||
use app\admin\controller\AdminController;
|
||||
|
||||
/**
|
||||
* 上传图片插件
|
||||
* Class Upload
|
||||
* @package app\admin\controller\tool
|
||||
*/
|
||||
class Upload extends AdminController {
|
||||
|
||||
/**
|
||||
* 上传图片
|
||||
* @param string $type ['multi','one']
|
||||
* @return mixed
|
||||
*/
|
||||
public function image($type = 'one') {
|
||||
return $this->fetch('', ['type' => $type]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
4bd183af-4f0c-4a12-9e0b-6a6be05cb63e
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
/*
|
||||
* 文章模型
|
||||
* */
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
|
||||
class Article {
|
||||
|
||||
}
|
||||
124
芳林公司项目/www.zhiyuanhelp.com/application/admin/model/Auth.php
Normal file
124
芳林公司项目/www.zhiyuanhelp.com/application/admin/model/Auth.php
Normal file
@@ -0,0 +1,124 @@
|
||||
<?php
|
||||
/**
|
||||
* 权限组模型
|
||||
* Class Auth
|
||||
* @package app\admin\model
|
||||
*/
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
use app\admin\service\ModelService;
|
||||
|
||||
|
||||
class Auth extends ModelService {
|
||||
|
||||
/**
|
||||
* 绑定的数据表
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'system_auth';
|
||||
|
||||
/**
|
||||
* 获取权限组
|
||||
* @return array|\PDOStatement|string|\think\Collection
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function getList() {
|
||||
$where_auth = [
|
||||
['status', '=', 1],
|
||||
];
|
||||
$order_auth = [
|
||||
'id' => 'asc',
|
||||
];
|
||||
$auth = $this->where($where_auth)->field('id, title, status')->order($order_auth)->select();
|
||||
return $auth;
|
||||
}
|
||||
|
||||
/**
|
||||
* 权限角色列表
|
||||
* @param int $page
|
||||
* @param int $limit
|
||||
* @param array $search
|
||||
* @param array $where
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function authList($page = 1, $limit = 10, $search = [], $where = []) {
|
||||
|
||||
//搜索条件
|
||||
foreach ($search as $key => $value) {
|
||||
if ($key == 'status' && $value != '') {
|
||||
$where[] = [$key, '=', $value];
|
||||
} elseif ($key == 'create_at' && $value != '') {
|
||||
$value_list = explode(" - ", $value);
|
||||
$where[] = [$key, 'BETWEEN', ["{$value_list[0]} 00:00:00", "{$value_list[1]} 23:59:59"]];
|
||||
} else {
|
||||
!empty($value) && $where[] = [$key, 'LIKE', '%' . $value . '%'];
|
||||
}
|
||||
}
|
||||
|
||||
$field = 'id, title , remark, status, sort, create_at';
|
||||
$count = $this->where($where)->count();
|
||||
$data = $this->where($where)->field($field)->page($page, $limit)->order(['sort asc'])->select();
|
||||
empty($data) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
$info = [
|
||||
'limit' => $limit,
|
||||
'page_current' => $page,
|
||||
'page_sum' => ceil($count / $limit),
|
||||
];
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'count' => $count,
|
||||
'info' => $info,
|
||||
'data' => $data,
|
||||
];
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存节点
|
||||
* @param $insert
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function add($insert) {
|
||||
$save = $this->save($insert);
|
||||
if ($save == 1) {
|
||||
return __success('保存成功!');
|
||||
} else {
|
||||
return __error('保存失败!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新节点
|
||||
* @param $update
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function edit($update) {
|
||||
$data = $this->where('id', $update['id'])->update($update);
|
||||
if ($data == 1) {
|
||||
return __success('更新成功!');
|
||||
} else {
|
||||
return __error('数据没有修改!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改系统节点字段值
|
||||
* @param $update
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function edit_field($update) {
|
||||
$data = $this->where('id', $update['id'])->update([$update['field'] => $update['value']]);
|
||||
if ($data == 1) {
|
||||
return __success('修改成功!');
|
||||
} else {
|
||||
return __error('数据没有修改!');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/*
|
||||
*权限节点模型
|
||||
* */
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
|
||||
use app\admin\service\ModelService;
|
||||
|
||||
class AuthNode extends ModelService {
|
||||
|
||||
/**
|
||||
* 绑定的数据表
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'system_auth_node';
|
||||
|
||||
/**
|
||||
* 保存授权信息
|
||||
* @param $insertAll
|
||||
* @return \think\response\Json
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function authorize($insertAll) {
|
||||
$save = $this->saveAll($insertAll);
|
||||
if (!empty($save)) return __success('保存成功!');
|
||||
return __error('保存失败');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
/**
|
||||
* 系统配置模板
|
||||
*/
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
|
||||
use app\admin\service\ModelService;
|
||||
|
||||
|
||||
/**
|
||||
* 系统配置信息
|
||||
* Class Config
|
||||
* @package app\admin\model
|
||||
*/
|
||||
class Config extends ModelService {
|
||||
|
||||
/**
|
||||
* 绑定数据表
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'system_config';
|
||||
|
||||
/**
|
||||
* 获取系统基础配置信息
|
||||
* @return array|\PDOStatement|string|\think\Collection
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function getBasicConfig() {
|
||||
$basic = $this->where('group', 'basic')->column('name,value');
|
||||
return $basic;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统配置列表
|
||||
* @param int $page
|
||||
* @param int $limit
|
||||
* @param array $search
|
||||
* @param array $where
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function configList($page = 1, $limit = 500, $search = [], $where = []) {
|
||||
|
||||
//搜索条件
|
||||
foreach ($search as $key => $value) {
|
||||
!empty($value) && $where[] = [$key, 'LIKE', '%' . $value . '%'];
|
||||
}
|
||||
|
||||
$field = 'id, group , name, value, remark, sort, create_at';
|
||||
$count = $this->where($where)->count();
|
||||
$data = $this->where($where)->field($field)->order(['sort asc'])->select();
|
||||
empty($data) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
$info = [
|
||||
'limit' => $limit,
|
||||
'page_current' => $page,
|
||||
'page_sum' => ceil($count / $limit),
|
||||
];
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'count' => $count,
|
||||
'info' => $info,
|
||||
'data' => $data,
|
||||
];
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改字段值
|
||||
* @param $update
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function edit_field($update) {
|
||||
$data = $this->where('id', $update['id'])->update([$update['field'] => $update['value']]);
|
||||
if ($data == 1) {
|
||||
return __success('修改成功!');
|
||||
} else {
|
||||
return __error('数据没有修改!');
|
||||
}
|
||||
}
|
||||
}
|
||||
301
芳林公司项目/www.zhiyuanhelp.com/application/admin/model/Menu.php
Normal file
301
芳林公司项目/www.zhiyuanhelp.com/application/admin/model/Menu.php
Normal file
@@ -0,0 +1,301 @@
|
||||
<?php
|
||||
/*
|
||||
* 菜单模型
|
||||
* */
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
use app\admin\service\ModelService;
|
||||
|
||||
class Menu extends ModelService {
|
||||
|
||||
/**
|
||||
* 绑定数据表
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'system_menu';
|
||||
|
||||
/**
|
||||
* 新增菜单数据
|
||||
* @param $insert
|
||||
* @return \think\response\Json
|
||||
* @throws \think\exception\PDOException
|
||||
*/
|
||||
public function add($insert) {
|
||||
//使用事物保存数据
|
||||
$this->startTrans();
|
||||
$save = $this->save($insert);
|
||||
if (!$save) {
|
||||
$this->rollback();
|
||||
return __error('数据有误,请稍后再试!');
|
||||
}
|
||||
$this->commit();
|
||||
return __success('菜单添加成功!');
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改菜单数据
|
||||
* @param $update
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function edit($update) {
|
||||
$data = $this->where('id', $update['id'])->update($update);
|
||||
if ($data == 1) {
|
||||
return __success('菜单更新成功!');
|
||||
} else {
|
||||
return __error('数据没有修改!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取首页信息
|
||||
* @return array|null|\PDOStatement|string|\think\Model
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function getHome() {
|
||||
$where_home = [
|
||||
['id', '=', 1],
|
||||
['status', '=', 1],
|
||||
];
|
||||
$home = $this->field('id, title, icon, href')->where($where_home)->find();
|
||||
!empty($home) && $home['href'] = url($home['href']);
|
||||
return $home;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取菜单栏头部
|
||||
* @return array|\PDOStatement|string|\think\Collection
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public static function getNav() {
|
||||
$where_nav = [
|
||||
['id', '<>', 1],
|
||||
['pid', '=', 0],
|
||||
['status', '=', 1],
|
||||
];
|
||||
$order_nav = [
|
||||
'sort' => 'asc',
|
||||
'create_at' => 'asc',
|
||||
];
|
||||
|
||||
//查询顶级菜单栏数据
|
||||
$nav = self::field('id, title, icon')->where($where_nav)->order($order_nav)->select();
|
||||
|
||||
//去除空菜单
|
||||
foreach ($nav as $k => $val) {
|
||||
$menu = self::where(['pid' => $nav[$k]['id'], 'status' => 1])->select()->toArray();
|
||||
if (empty($menu)) unset($nav[$k]);
|
||||
}
|
||||
|
||||
//判断图标类型
|
||||
foreach ($nav as $key => $val) (strpos($nav[$key]['icon'], 'fa-') !== false) ? $nav[$key]['icon_type'] = true : $nav[$key]['icon_type'] = false;
|
||||
|
||||
return $nav;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取菜单栏数据
|
||||
* @param array $search 搜索条件
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function menuList($search = [], $where = []) {
|
||||
if (empty($search)) {
|
||||
$menu_list = $this->getMenu();
|
||||
empty($menu_list) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
return [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'count' => count($menu_list),
|
||||
'data' => $menu_list,
|
||||
];
|
||||
} else {
|
||||
|
||||
//搜索条件
|
||||
foreach ($search as $key => $value) {
|
||||
if ($key == 'status' && $value != '') {
|
||||
$where[] = [$key, '=', $value];
|
||||
} elseif ($key == 'create_at' && $value != '') {
|
||||
$value_list = explode(" - ", $value);
|
||||
$where[] = [$key, 'BETWEEN', ["{$value_list[0]} 00:00:00", "{$value_list[1]} 23:59:59"]];
|
||||
} else {
|
||||
!empty($value) && $where[] = [$key, 'LIKE', '%' . $value . '%'];
|
||||
}
|
||||
}
|
||||
|
||||
$menu_list = $this->where($where)->order(['pid' => 'asc', 'sort' => 'asc', 'create_at' => 'desc'])->select();
|
||||
empty($menu_list) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
|
||||
//修改菜单栏数据格式
|
||||
$this->__buildMenu($menu_list);
|
||||
return [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'count' => count($menu_list),
|
||||
'data' => $menu_list,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改搜索菜单栏数据格式
|
||||
* @param $list
|
||||
* @param int $i
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function __buildMenu(&$list) {
|
||||
foreach ($list as &$vo) {
|
||||
$i = 1;
|
||||
if ($vo['pid'] != 0) {
|
||||
$i++;
|
||||
$nav = $this->where('id', $vo['pid'])->find();
|
||||
!empty($nav) && ($nav['pid'] != 0 && $i++);
|
||||
}
|
||||
$vo['title'] = replace_menu_title($vo['title'], $i);
|
||||
($vo['id'] == 1 || $i >= 3) ? $vo['is_add'] = false : $vo['is_add'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用回调获取菜单栏数据
|
||||
* @param int $pid 上级id
|
||||
* @param array $menu 菜单数据
|
||||
* @param int $i 序号
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function getMenu($pid = 0, &$menu = [], $i = 0) {
|
||||
$i++;
|
||||
$field = 'id, pid, title, icon, href, target, sort, status, create_at, create_by';
|
||||
$where_nav = [
|
||||
['pid', '=', $pid],
|
||||
];
|
||||
$order = [
|
||||
'sort' => 'asc',
|
||||
'create_at' => 'desc',
|
||||
];
|
||||
$nav = $this->field($field)->where($where_nav)->order($order)->select();
|
||||
foreach ($nav as $vo) {
|
||||
($vo['id'] == 1 || $i >= 3) ? $vo['is_add'] = false : $vo['is_add'] = true;
|
||||
$vo['title'] = replace_menu_title($vo['title'], $i);
|
||||
$menu[] = $vo;
|
||||
$this->getMenu($vo['id'], $menu, $i);
|
||||
}
|
||||
return $menu;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建菜单时获取上级的菜单
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function getUpMenu() {
|
||||
$field = 'id, pid, title';
|
||||
$where_nav = [
|
||||
['id', '<>', 1],
|
||||
['pid', '=', 0],
|
||||
];
|
||||
$order = [
|
||||
'sort' => 'asc',
|
||||
'create_at' => 'desc',
|
||||
];
|
||||
|
||||
//最顶级
|
||||
$first_list = $this->where($where_nav)->field($field)->order($order)->select();
|
||||
|
||||
//组合菜单数据
|
||||
$menu_list[] = [
|
||||
'id' => 0,
|
||||
'pid' => 0,
|
||||
'title' => '顶级菜单',
|
||||
];
|
||||
foreach ($first_list as &$vo) {
|
||||
$vo['title'] = replace_menu_title($vo['title'], 1);
|
||||
$menu_list[] = $vo;
|
||||
$where_second = [['pid', '=', $vo['id']]];
|
||||
$second_list = $this->where($where_second)->field($field)->order($order)->select();
|
||||
foreach ($second_list as &$vl) {
|
||||
$vl['title'] = replace_menu_title($vl['title'], 2);
|
||||
$menu_list[] = $vl;
|
||||
}
|
||||
}
|
||||
return $menu_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统导航菜单
|
||||
* @param array $menu_list
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public static function getMenuApi($menu_list = []) {
|
||||
$field = 'id, pid, title, icon, href, spread, target';
|
||||
$order = ['sort' => 'asc', 'create_at' => 'desc'];
|
||||
|
||||
$nav = self::getNav()->toArray();
|
||||
foreach ($nav as $vo) {
|
||||
$i = 0;
|
||||
$where_first_menu = [['pid', '=', $vo['id']], ['status', '=', 1]];
|
||||
$first_menu = self::field($field)->where($where_first_menu)->order($order)->select()->toArray();
|
||||
foreach ($first_menu as $vo_1) {
|
||||
if (auth($vo_1['href'])) {
|
||||
if (!empty($vo_1['href']) && $vo_1['href'] != "#") {
|
||||
$vo_1['href'] = url($vo_1['href']);
|
||||
}
|
||||
$vo_1['spread'] = (bool)$vo_1['spread'];
|
||||
$menu_list['66ysx_' . $vo['id']][$i] = $vo_1;
|
||||
$where_second_menu = [['pid', '=', $vo_1['id']], ['status', '=', 1]];
|
||||
$second_menu = self::field($field)->where($where_second_menu)->order($order)->select()->toArray();
|
||||
foreach ($second_menu as $vo_2) {
|
||||
if (auth($vo_2['href'])) {
|
||||
if (!empty($vo_2['href']) && $vo_2['href'] != "#") {
|
||||
$vo_2['href'] = url($vo_2['href']);
|
||||
}
|
||||
$vo_2['spread'] = (bool)$vo_2['spread'];
|
||||
$menu_list['66ysx_' . $vo['id']][$i]['children'][] = $vo_2;
|
||||
}
|
||||
}
|
||||
//去除空菜单
|
||||
if (!isset($menu_list['66ysx_' . $vo['id']][$i]['children'])) {
|
||||
if ($menu_list['66ysx_' . $vo['id']][$i]['href'] == '#' || $menu_list['66ysx_' . $vo['id']][$i]['href'] == '') {
|
||||
unset($menu_list['66ysx_' . $vo['id']][$i]);
|
||||
} else {
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return array_filter($menu_list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新字段值
|
||||
* @param $update
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function edit_field($update) {
|
||||
$data = $this->where('id', $update['id'])->update([$update['field'] => $update['value']]);
|
||||
if ($data == 1) {
|
||||
return __success('修改成功!');
|
||||
} else {
|
||||
return __error('数据没有修改!');
|
||||
}
|
||||
}
|
||||
}
|
||||
35
芳林公司项目/www.zhiyuanhelp.com/application/admin/model/Nav.php
Normal file
35
芳林公司项目/www.zhiyuanhelp.com/application/admin/model/Nav.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 导航模型
|
||||
* */
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
|
||||
use app\admin\service\ModelService;
|
||||
|
||||
class Nav extends ModelService {
|
||||
|
||||
/**
|
||||
* 绑定数据表
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'system_nav';
|
||||
|
||||
/**
|
||||
* 获取快捷导航
|
||||
* @param int $limit
|
||||
* @return array|\PDOStatement|string|\think\Collection
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public static function getQuickNav($limit = 6) {
|
||||
$list = self::where(['status' => 1])->order(['sort' => 'desc', 'create_at' => 'desc'])
|
||||
->limit($limit)->select()->each(function ($item, $key) {
|
||||
$item['href'] = url($item['href']);
|
||||
});
|
||||
return $list;
|
||||
}
|
||||
|
||||
}
|
||||
142
芳林公司项目/www.zhiyuanhelp.com/application/admin/model/Node.php
Normal file
142
芳林公司项目/www.zhiyuanhelp.com/application/admin/model/Node.php
Normal file
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
/*
|
||||
* 节点模型
|
||||
* */
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
use app\admin\service\ModelService;
|
||||
|
||||
class Node extends ModelService {
|
||||
|
||||
/**
|
||||
* 绑定的数据表
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'system_node';
|
||||
|
||||
/**
|
||||
* 节点列表
|
||||
* @param int $page 当前页
|
||||
* @param int $limit 每页显示数量
|
||||
* @param array $search 搜索条件 (array)
|
||||
* @param array $where 组成的条件
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function nodeList($page = 1, $limit = 10, $search = [], $where = []) {
|
||||
|
||||
//搜索条件
|
||||
foreach ($search as $key => $value) {
|
||||
if ($key == 'is_auth' && $value != '') {
|
||||
$where[] = [$key, '=', $value];
|
||||
} elseif ($key == 'create_at' && $value != '') {
|
||||
$value_list = explode(" - ", $value);
|
||||
$where[] = [$key, 'BETWEEN', ["{$value_list[0]} 00:00:00", "{$value_list[1]} 23:59:59"]];
|
||||
} else {
|
||||
!empty($value) && $where[] = [$key, 'LIKE', '%' . $value . '%'];
|
||||
}
|
||||
}
|
||||
|
||||
$field = 'id, node, title , is_auth, create_at';
|
||||
$count = $this->where($where)->count();
|
||||
$data = $this->where($where)->field($field)->page($page, $limit)->order(['node asc'])->select();
|
||||
empty($data) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
$info = [
|
||||
'limit' => $limit,
|
||||
'page_current' => $page,
|
||||
'page_sum' => ceil($count / $limit),
|
||||
];
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'count' => $count,
|
||||
'info' => $info,
|
||||
'data' => $data,
|
||||
];
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存节点
|
||||
* @param $insert
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function add($insert) {
|
||||
$save = $this->save($insert);
|
||||
if ($save == 1) {
|
||||
return __success('保存成功!');
|
||||
} else {
|
||||
return __error('保存失败!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新节点
|
||||
* @param $update
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function edit($update) {
|
||||
$data = $this->where('id', $update['id'])->update($update);
|
||||
if ($data == 1) {
|
||||
return __success('更新成功!');
|
||||
} else {
|
||||
return __error('数据没有修改!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改系统节点字段值
|
||||
* @param $update
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function edit_field($update) {
|
||||
$data = $this->where('id', $update['id'])->update([$update['field'] => $update['value']]);
|
||||
if ($data == 1) {
|
||||
return __success('修改成功!');
|
||||
} else {
|
||||
return __error('数据没有修改!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模块名称获取节点
|
||||
* @param $module
|
||||
* @param array $node_list
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function nodeModuleList($module, $node_list = []) {
|
||||
$modules = $this->where(['type' => 1, 'node' => $module])->order(['node'=>'asc'])->select()->toArray();
|
||||
foreach ($modules as &$vo_m) {
|
||||
$i = 1;
|
||||
$vo_module = $vo_m;
|
||||
$vo_module['node'] = replace_menu_title($vo_module['node'], $i);
|
||||
$node_list[] = $vo_module;
|
||||
$controller = $this->where([['type', '=', 2], ['node', 'LIKE', "{$vo_m['node']}/%"]])->order(['node'=>'asc'])->select()->toArray();
|
||||
foreach ($controller as &$vo_c) {
|
||||
$i = 2;
|
||||
$vo_controller = $vo_c;
|
||||
$vo_controller['node'] = replace_menu_title($vo_controller['node'], $i);
|
||||
$node_list[] = $vo_controller;
|
||||
$action = $this->where([['type', '=', 3], ['node', 'LIKE', "{$vo_c['node']}/%"]])->order(['node'=>'asc'])->select()->toArray();
|
||||
foreach ($action as &$vo_a) {
|
||||
$i = 3;
|
||||
$vo_action = $vo_a;
|
||||
$vo_action['node'] = replace_menu_title($vo_action['node'], $i);
|
||||
$node_list[] = $vo_action;
|
||||
}
|
||||
}
|
||||
}
|
||||
return [
|
||||
'code' => 0,
|
||||
'msg' => '查询成功',
|
||||
'count' => count($node_list),
|
||||
'data' => $node_list,
|
||||
];
|
||||
}
|
||||
}
|
||||
193
芳林公司项目/www.zhiyuanhelp.com/application/admin/model/User.php
Normal file
193
芳林公司项目/www.zhiyuanhelp.com/application/admin/model/User.php
Normal file
@@ -0,0 +1,193 @@
|
||||
<?php
|
||||
/**
|
||||
* 系统管理员模型
|
||||
* Class User
|
||||
* @package app\admin\model
|
||||
*/
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
use app\admin\service\ModelService;
|
||||
|
||||
|
||||
class User extends ModelService {
|
||||
|
||||
/**
|
||||
* 绑定数据表
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'system_user';
|
||||
|
||||
/**
|
||||
* 关联角色表数据
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function auth() {
|
||||
return $this->hasOne("Auth", "id", "auth_id")->joinType('left')->field('title');
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用或者禁用管理员账户
|
||||
* @param $id
|
||||
* @return User|bool
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function operate($id) {
|
||||
$where_operate = [
|
||||
['id', '=', $id],
|
||||
['is_deleted', '=', 0],
|
||||
['status', 'In', [0, 1]],
|
||||
];
|
||||
$operate = $this->where($where_operate)->find();
|
||||
if (!empty($operate)) {
|
||||
$operate['status'] == 0 ? $status = 1 : $status = 0;
|
||||
$status == 0 ? $msg = '账户停用成功!' : $msg = '账户启用成功';
|
||||
$update = $this->where($where_operate)->update(['status' => $status]);
|
||||
if ($update >= 1) return ['code' => 0, 'msg' => $msg];
|
||||
return ['code' => 1, 'msg' => '账户状态更改失败,请检查!'];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录验证
|
||||
* @param $username 管理员账户
|
||||
* @param $password 管理员密码
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function login($username, $password) {
|
||||
$where_login = [
|
||||
['username', '=', $username],
|
||||
['is_deleted', 'In', [0, 1]],
|
||||
['status', 'In', [0, 1]],
|
||||
];
|
||||
$login = $this->where($where_login)->find();
|
||||
if (empty($login)) return ['code' => 1, 'msg' => '账户不存在,请重新输入!', 'user' => $login];
|
||||
if ($login['password'] != password($password)) return ['code' => 1, 'msg' => '密码不正确,请重新输入!', 'user' => $login];
|
||||
if ($login['is_deleted'] == 1) return ['code' => 1, 'msg' => '该账户已被删除,请联系超级管理员!', 'user' => $login];
|
||||
if ($login['status'] == 0) return ['code' => 1, 'msg' => '该账户已被停用,请联系超级管理员!', 'user' => $login];
|
||||
unset($login['password']);
|
||||
return ['code' => 0, 'msg' => '登录成功,正在进入后台系统!', 'user' => $login];
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加管理员
|
||||
* @param $insert 需要插入的数据
|
||||
* @return \think\response\Json
|
||||
* @throws \think\exception\PDOException
|
||||
*/
|
||||
public function add($insert) {
|
||||
//使用事物保存数据
|
||||
$this->startTrans();
|
||||
$save = $this->save($insert);
|
||||
if (!$save) {
|
||||
$this->rollback();
|
||||
return __error('数据有误,请稍后再试!');
|
||||
}
|
||||
$this->commit();
|
||||
return __success('管理员账户添加成功!');
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改管理员信息
|
||||
* @param $update 需要修改的数据
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function edit($update) {
|
||||
$update = $this->where('id', $update['id'])->update($update);
|
||||
if ($update >= 1) return __success('信息修改成功');
|
||||
return __error('数据没有修改!');
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改管理员自己的信息
|
||||
* @param $update
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function editSelf($data) {
|
||||
$this->where('id', $data['id'])->update($data);
|
||||
|
||||
//重新刷新session
|
||||
$user = $this->where('id', $data['id'])->find();
|
||||
unset($user['password']);
|
||||
$user['login_at'] = time();
|
||||
session('user', $user);
|
||||
|
||||
return __success('信息修改成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改管理员密码
|
||||
* @param $update 需要修改的数据
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function editPassword($update) {
|
||||
$this->startTrans();
|
||||
try {
|
||||
$this->where('id', $update['id'])->update(['password' => password($update['password'])]);
|
||||
$this->commit();
|
||||
} catch (\Exception $e) {
|
||||
$this->rollback();
|
||||
return __error($e->getMessage());
|
||||
}
|
||||
return __success('密码修改成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户列表信息
|
||||
* @param int $page 当前页
|
||||
* @param int $limit 每页显示数量
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function userList($page = 1, $limit = 10, $search = []) {
|
||||
$where = [['is_deleted', '=', 0]];
|
||||
|
||||
//搜索条件
|
||||
foreach ($search as $key => $value) {
|
||||
if ($key == 'status' && $value != '') {
|
||||
$where[] = [$key, '=', $value];
|
||||
} elseif ($key == 'create_at' && $value != '') {
|
||||
$value_list = explode(" - ", $value);
|
||||
$where[] = [$key, 'BETWEEN', ["{$value_list[0]} 00:00:00", "{$value_list[1]} 23:59:59"]];
|
||||
} else {
|
||||
!empty($value) && $where[] = [$key, 'LIKE', '%' . $value . '%'];
|
||||
}
|
||||
}
|
||||
|
||||
$field = 'id, auth_id, username, head_img, qq, mail, phone, remark, status, create_by, create_at';
|
||||
$count = $this->where($where)->count();
|
||||
$data = $this->where($where)->field($field)->page($page, $limit)->select()
|
||||
->each(function ($item, $key) {
|
||||
list($auth_id_list, $auth_title) = [json_decode($item['auth_id'], true), ''];
|
||||
foreach ($auth_id_list as $auth_id) {
|
||||
$title = model('auth')->where(['id' => $auth_id, 'status' => 1])->value('title');
|
||||
$auth_title = empty($auth_title) ? $title : "{$auth_title},{$title}";
|
||||
}
|
||||
$create_by_username = $this->where(['id' => $item['create_by'], 'status' => 1, 'is_deleted' => 0])->value('username');
|
||||
empty($auth_title) ? $item['auth_title'] = '暂无权限信息' : $item['auth_title'] = $auth_title;
|
||||
empty($create_by_username) ? $item['create_by_username'] = '暂未创建者信息' : $item['create_by_username'] = $create_by_username;
|
||||
});
|
||||
empty($data) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
$info = [
|
||||
'limit' => $limit,
|
||||
'page_current' => $page,
|
||||
'page_sum' => ceil($count / $limit),
|
||||
];
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'count' => $count,
|
||||
'info' => $info,
|
||||
'data' => $data,
|
||||
];
|
||||
return $list;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
a1519cd4-363d-4c2a-87f6-0e9a0023bd99
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/24
|
||||
* Time: 15:06
|
||||
*/
|
||||
|
||||
namespace app\admin\model\costom;
|
||||
|
||||
|
||||
use think\Model;
|
||||
|
||||
class Message extends Model
|
||||
{
|
||||
protected $table = 'user_message';
|
||||
|
||||
/**
|
||||
* 获取留言建议列表信息
|
||||
* @param int $page 当前页
|
||||
* @param int $limit 每页显示数量
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public static function messageList($page = 1, $limit = 10, $search = []){
|
||||
$where = [];
|
||||
//搜索条件
|
||||
foreach ($search as $key => $value) {
|
||||
if (!empty($value)) {
|
||||
switch ($key) {
|
||||
case 'add_time':
|
||||
$value_list = explode(" - ", $value);
|
||||
$value_list[0] = strtotime($value_list[0]);
|
||||
$value_list[1] = strtotime($value_list[1]);
|
||||
$where[] = [$key, 'BETWEEN', ["$value_list[0]", "$value_list[1]"]];
|
||||
break;
|
||||
case 'status':
|
||||
$where[] = [$key, '=', $value];
|
||||
break;
|
||||
case 'telnum':
|
||||
$where[] = [$key, '=', $value];
|
||||
break;
|
||||
case 'type':
|
||||
$where[] = [$key, '=', $value-1];
|
||||
break;
|
||||
default:
|
||||
!empty($value) && $where[] = [$key, 'LIKE', '%' . $value . '%'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$count = self::where($where)->count();
|
||||
$data = self::where($where)->page($page, $limit)->order([ 'add_time' => 'desc'])->select();
|
||||
empty($data) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
|
||||
foreach ($data as $key => $val){
|
||||
$val['add_time'] = date('Y-m-d H:i:s',$val['add_time']);
|
||||
|
||||
if($val['reply_time']){
|
||||
$val['reply_time'] = date('Y-m-d H:i:s',$val['reply_time']);
|
||||
}
|
||||
$val['img1'] = config('secure.mpic_url'). $val['img1'];
|
||||
|
||||
$val['img2'] = config('secure.mpic_url'). $val['img2'];
|
||||
|
||||
|
||||
|
||||
if($val['type']){
|
||||
$val['type'] = config('setmes.mesName')[$val['type']];
|
||||
}else{
|
||||
$val['type'] = '考生建议';
|
||||
}
|
||||
}
|
||||
|
||||
$info = [
|
||||
'limit' => $limit,
|
||||
'page_current' => $page,
|
||||
'page_sum' => ceil($count / $limit),
|
||||
];
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'count' => $count,
|
||||
'info' => $info,
|
||||
'data' => $data,
|
||||
];
|
||||
return $list;
|
||||
}
|
||||
|
||||
/*
|
||||
* 回复问题
|
||||
* */
|
||||
public function reply($post){
|
||||
$post['reply'] = $post['replyCon'];
|
||||
$post['status'] = 2;
|
||||
unset($post['replyCon']);
|
||||
try {
|
||||
self::where('id', $post['id'])->update($post);
|
||||
} catch (\Exception $e) {
|
||||
|
||||
return __error($e->getMessage());
|
||||
}
|
||||
return __success('回复成功');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,188 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/23
|
||||
* Time: 19:02
|
||||
*/
|
||||
|
||||
namespace app\admin\model\costom;
|
||||
|
||||
|
||||
use think\Exception;
|
||||
use think\facade\Log;
|
||||
use think\Model;
|
||||
|
||||
require '../extend/WxPay/WxPay.Api.php';
|
||||
class Order extends Model
|
||||
{
|
||||
protected $table = 'orders';
|
||||
|
||||
public static function orderRefund($post){
|
||||
$resOrder = self::field('ord_no,status,money')->where([['id','=',$post['id']],['status','=',1],['pay_way','=',$post['payWay']]])->find();
|
||||
//订单状态是否已支付
|
||||
if(!$resOrder){
|
||||
return 2;
|
||||
}
|
||||
if($post['payWay'] == 1){
|
||||
//退款参数赋值
|
||||
$data['order_no'] = $resOrder['ord_no'];
|
||||
$data['total_price'] = $resOrder['money'];
|
||||
$data['reason'] = $post['reason'];
|
||||
$data['op_user_id'] = config('wxpay.mch_id');
|
||||
$result = self::refund($data);
|
||||
|
||||
if($result['result_code'] == 'SUCCESS'){
|
||||
self::where([['id','=',$post['id']],['status','=',1]])->update(['status' => 2,'refund_time'=>time()]);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}else{
|
||||
$data['order_no'] = $resOrder['ord_no'];
|
||||
$data['total_price'] = $resOrder['money'];
|
||||
$data['reason'] = $post['reason'];
|
||||
$result = self::aliRefund($data);
|
||||
if($result->code == 10000 && $result->msg == 'Success'){
|
||||
self::where([['id','=',$post['id']],['status','=',1],['pay_way','=',$post['payWay']]])->update(['status' => 2,'refund_time'=>time()]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 微信支付退款
|
||||
* @param $orderInfo
|
||||
* @throws \WxPayException
|
||||
*/
|
||||
private static function refund($orderInfo)
|
||||
{
|
||||
$inputObj = new \WxPayUnifiedOrder();
|
||||
$out_refund_no = date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
|
||||
$inputObj->SetOut_trade_no($orderInfo['order_no']);
|
||||
$inputObj->SetOut_refund_no($out_refund_no);
|
||||
$inputObj->SetTotal_fee(intval($orderInfo['total_price']*100));
|
||||
$inputObj->SetRefund_fee(intval($orderInfo['total_price']*100));
|
||||
$inputObj->SetRefund_desc($orderInfo['reason']);
|
||||
$inputObj->SetOp_user_id( $orderInfo['op_user_id']);
|
||||
$wxOrder = \WxPayApi::refund($inputObj);
|
||||
return $wxOrder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付寶退款
|
||||
* @param $orderInfo
|
||||
*/
|
||||
private static function aliRefund($orderInfo)
|
||||
{
|
||||
require '../extend/alipay/wappay/buildermodel/AlipayTradeRefundContentBuilder.php';// 加载交易服务
|
||||
require '../extend/alipay/wappay/service/AlipayTradeService.php';// 加载交易服务
|
||||
|
||||
$out_trade_no = trim($orderInfo['order_no']);
|
||||
|
||||
//退款金额,不能大于订单总金额
|
||||
$refund_amount=trim($orderInfo['total_price']);
|
||||
|
||||
//退款的原因说明
|
||||
$refund_reason=trim($orderInfo['reason']);
|
||||
|
||||
$config = config('alipay.');
|
||||
|
||||
$RequestBuilder = new \AlipayTradeRefundContentBuilder();
|
||||
$RequestBuilder->setOutTradeNo($out_trade_no);
|
||||
$RequestBuilder->setRefundAmount($refund_amount);
|
||||
$RequestBuilder->setRefundReason($refund_reason);
|
||||
|
||||
|
||||
$Response = new \AlipayTradeService($config);
|
||||
$result=$Response->Refund($RequestBuilder);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取订单列表信息
|
||||
* @param int $page 当前页
|
||||
* @param int $limit 每页显示数量
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function orderList($page = 1, $limit = 10, $search = []) {
|
||||
$where = [];
|
||||
//搜索条件
|
||||
foreach ($search as $key => $value) {
|
||||
if (!empty($value)) {
|
||||
switch ($key) {
|
||||
case 'add_time':
|
||||
$value_list = explode(" - ", $value);
|
||||
$value_list[0] = strtotime($value_list[0]);
|
||||
$value_list[1] = strtotime($value_list[1]);
|
||||
$where[] = [$key, 'BETWEEN', ["$value_list[0]", "$value_list[1]"]];
|
||||
break;
|
||||
case 'stu_yzy_province':
|
||||
$where[] = [$key, '=', $value];
|
||||
break;
|
||||
case 'telnum':
|
||||
$where[] = [$key, '=', $value];
|
||||
break;
|
||||
case 'ord_no':
|
||||
$where[] = [$key, '=', $value];
|
||||
break;
|
||||
case 'pay_way':
|
||||
$where[] = [$key, '=', $value];
|
||||
break;
|
||||
case 'status':
|
||||
if($value > 0){
|
||||
$where[] = [$key, '=', $value-1];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
!empty($value) && $where[] = [$key, 'LIKE', '%' . $value . '%'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$count = self::where($where)->count();
|
||||
$data = self::field('id,score,add_time,pay_time,vip,wenli,mykemustr,wenli,province_title,telnum,money,ord_no,refund_time,status,user_id,pay_way')->where($where)->page($page, $limit)->order([ 'add_time' => 'desc'])->select();
|
||||
empty($data) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
//获取配置权限名称
|
||||
$vipNameArr = config('product.vipName');
|
||||
|
||||
foreach ($data as $key => $val){
|
||||
$data[$key]['order_time'] = '';
|
||||
$data[$key]['vipName'] = $vipNameArr[$val['vip']];
|
||||
$data[$key]['order_time'] .= "下单:".date('Y-m-d H:i:s',$val['add_time']);
|
||||
if($val['pay_time']){
|
||||
$data[$key]['order_time'] .="_支付:". date('Y-m-d H:i:s',$val['pay_time']);
|
||||
}
|
||||
if($val['refund_time']){
|
||||
$data[$key]['order_time'] .="_退款:". date('Y-m-d H:i:s',$val['refund_time']);
|
||||
}
|
||||
$val['wenli'] = $val['wenli'] = config('setSub.subTypeName')[$val['wenli']];
|
||||
//拼接用户信息
|
||||
$data[$key]['userInfo'] = $val['province_title']."_".$val['score']."_".$val['wenli']."_".$val['mykemustr'];
|
||||
}
|
||||
|
||||
$info = [
|
||||
'limit' => $limit,
|
||||
'page_current' => $page,
|
||||
'page_sum' => ceil($count / $limit),
|
||||
];
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'count' => $count,
|
||||
'info' => $info,
|
||||
'data' => $data,
|
||||
];
|
||||
return $list;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/25
|
||||
* Time: 15:11
|
||||
*/
|
||||
|
||||
namespace app\admin\model\costom;
|
||||
|
||||
|
||||
use app\admin\service\ModelService;
|
||||
|
||||
class Proscore extends ModelService
|
||||
{
|
||||
/**
|
||||
* 绑定数据表
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'yzy_province_lines2020';
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取省控分数列表
|
||||
* @param int $page
|
||||
* @param int $limit
|
||||
* @param array $search
|
||||
* @return array
|
||||
*/
|
||||
public static function getList($page = 1, $limit = 10, $search = []) {
|
||||
$where = [];
|
||||
//搜索条件
|
||||
foreach ($search as $key => $value) {
|
||||
if (!empty($value)) {
|
||||
switch ($key) {
|
||||
case 'province_id':
|
||||
$where[] = [$key, '=', $value];
|
||||
break;
|
||||
default:
|
||||
!empty($value) && $where[] = [$key, 'LIKE', '%' . $value . '%'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$count = self::where($where)->count();
|
||||
$data = self::where($where)->page($page, $limit)->select();
|
||||
empty($data) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
$info = [
|
||||
'limit' => $limit,
|
||||
'page_current' => $page,
|
||||
'page_sum' => ceil($count / $limit),
|
||||
];
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'count' => $count,
|
||||
'info' => $info,
|
||||
'data' => $data,
|
||||
];
|
||||
return $list;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/23
|
||||
* Time: 8:57
|
||||
*/
|
||||
|
||||
namespace app\admin\model\costom;
|
||||
|
||||
|
||||
use app\admin\service\ModelService;
|
||||
|
||||
class User extends ModelService
|
||||
{
|
||||
protected $table = 'users';
|
||||
|
||||
/**
|
||||
* 获取用户列表信息
|
||||
* @param int $page 当前页
|
||||
* @param int $limit 每页显示数量
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function userList($page = 1, $limit = 10, $search = []) {
|
||||
$where = [];
|
||||
//搜索条件
|
||||
foreach ($search as $key => $value) {
|
||||
if (!empty($value)) {
|
||||
switch ($key) {
|
||||
case 'add_time':
|
||||
$value_list = explode(" - ", $value);
|
||||
$value_list[0] = strtotime($value_list[0]);
|
||||
$value_list[1] = strtotime($value_list[1]);
|
||||
$where[] = [$key, 'BETWEEN', ["$value_list[0]", "$value_list[1]"]];
|
||||
break;
|
||||
case 'phone':
|
||||
$where[] = [$key, '=', $value];
|
||||
break;
|
||||
case 'province':
|
||||
$where[] = [$key, '=', $value];
|
||||
break;
|
||||
default:
|
||||
!empty($value) && $where[] = [$key, 'LIKE', '%' . $value . '%'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$count = self::where($where)->count();
|
||||
$data = self::field('id,score,add_time,province,phone,wenli,mykemu')->where($where)->page($page, $limit)->order([ 'add_time' => 'desc'])->select();
|
||||
empty($data) ? $msg = '暂无数据!' : $msg = '查询成功!';
|
||||
//获取省份数组
|
||||
$provinceArr = config('province.province');
|
||||
foreach ($data as $key => $val){
|
||||
$val['province'] = $provinceArr[$val['province']]['title'];
|
||||
$val['add_time'] = date('Y-m-d H:i:s',$val['add_time']);
|
||||
$val['wenli'] = config('setSub.subTypeName')[$val['wenli']];
|
||||
if($val['mykemu']){
|
||||
$val['mykemu'] = changeSubString($val['mykemu']);
|
||||
}
|
||||
|
||||
$data[$key]['userInfo'] = $val['province']."_".$val['score']."_".$val['wenli']."_".$val['mykemu'];
|
||||
}
|
||||
|
||||
|
||||
$info = [
|
||||
'limit' => $limit,
|
||||
'page_current' => $page,
|
||||
'page_sum' => ceil($count / $limit),
|
||||
];
|
||||
$list = [
|
||||
'code' => 0,
|
||||
'msg' => $msg,
|
||||
'count' => $count,
|
||||
'info' => $info,
|
||||
'data' => $data,
|
||||
];
|
||||
return $list;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
1869b3c6-ad2e-4621-aeea-d2243390b75f
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
* 访问权限控制
|
||||
* Class AuthService
|
||||
* @package app\admin\service
|
||||
*/
|
||||
namespace app\admin\service;
|
||||
|
||||
|
||||
|
||||
class AuthService {
|
||||
|
||||
/**
|
||||
* 判断是否有权限访问该节点
|
||||
* @param $node 节点
|
||||
* @return bool (true:有权限,false:无权限)
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public static function checkNode($node = '') {
|
||||
//如果没有传参,默认获取当前位置 模块/控制器/方法 (小写)
|
||||
if (empty($node)) $node = self::getNode();
|
||||
|
||||
//判断当前登录是否为超级管理员
|
||||
if (session('user.id') == 1) return true;
|
||||
|
||||
//判断是否加入RABC控制
|
||||
$is_auth = model('SysNode')->where(['node' => $node, 'is_auth' => 1])->find();
|
||||
if (empty($is_auth)) return true;
|
||||
|
||||
//获取当前用户角色组信息 ,拆表
|
||||
$user = new \app\admin\model\User;
|
||||
$auth_id_list = json_decode($user->where(['id' => session('user.id'), 'status' => 1, 'is_deleted' => 0])->value('auth_id'), true);
|
||||
//去除失效的角色组信息
|
||||
foreach ($auth_id_list as $k => $val) {
|
||||
if (empty(model('SysAuth')->where(['id' => $val, 'status' => 1])->find())) unset($auth_id_list[$k]);
|
||||
}
|
||||
|
||||
//判断是否有权限访问
|
||||
foreach ($auth_id_list as $vo) {
|
||||
if ($vo == 0) return true; //超级管理员组权限
|
||||
$is_auth_node = model('SysAuthNode')->where(['auth' => $vo, 'node' => $is_auth['id']])->find();
|
||||
if (!empty($is_auth_node)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前节点
|
||||
* @return string 节点信息
|
||||
*/
|
||||
public static function getNode() {
|
||||
$node = app('request')->module() . '/' . app('request')->controller() . '/' . app('request')->action();
|
||||
return self::parseNodeStr($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* 驼峰转下划线规则
|
||||
* @param string $node
|
||||
* @return string
|
||||
*/
|
||||
public static function parseNodeStr($node) {
|
||||
$tmp = [];
|
||||
foreach (explode('/', $node) as $name) {
|
||||
$tmp[] = strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_"));
|
||||
}
|
||||
return str_replace('._', '.', trim(join('/', $tmp), '/'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/**
|
||||
* 验证码服务类
|
||||
* Class CodeService
|
||||
* @package app\admin\service
|
||||
*/
|
||||
|
||||
namespace app\admin\service;
|
||||
|
||||
|
||||
class CodeService {
|
||||
|
||||
|
||||
public static function validate() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* 日志服务
|
||||
* Class LogService
|
||||
* @package app\admin\service
|
||||
*/
|
||||
|
||||
namespace app\admin\service;
|
||||
|
||||
use think\Db;
|
||||
|
||||
class LogService {
|
||||
|
||||
/**
|
||||
* 登录日志
|
||||
* @param $user_id 系统用户编号
|
||||
* @param $type 登录类型 (0:退出,1:登录)
|
||||
* @param bool $status 状态(0:失败,1:成功)
|
||||
* @param string $remark
|
||||
*/
|
||||
public static function loginLog($user_id, $type = 1, $status = 1, $remark = '') {
|
||||
$location_info = get_location();
|
||||
$insert = [
|
||||
'type' => $type,
|
||||
'user_id' => $user_id,
|
||||
'ip' => get_ip(),
|
||||
'country' => $location_info['country'],
|
||||
'region' => $location_info['region'],
|
||||
'city' => $location_info['city'],
|
||||
'isp' => $location_info['isp'],
|
||||
'location' => $location_info['country'] . $location_info['region'] . $location_info['city'] . $location_info['isp'],
|
||||
'remark' => $remark,
|
||||
'status' => $status,
|
||||
];
|
||||
Db::name('SystemLoginRecord')->insert($insert);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
/*
|
||||
* 邮件服务类
|
||||
* */
|
||||
|
||||
namespace app\admin\service;
|
||||
|
||||
use app\admin\model\User;
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
use think\Db;
|
||||
|
||||
/**
|
||||
* 邮箱服务类
|
||||
* Class MailService
|
||||
* @package app\admin\service
|
||||
*/
|
||||
class MailService {
|
||||
|
||||
/**
|
||||
* @var 邮箱服务类对象
|
||||
*/
|
||||
public static $mail;
|
||||
|
||||
/**
|
||||
* 初始化服务类
|
||||
* MailService constructor.
|
||||
*/
|
||||
public static function __init() {
|
||||
$mailInfo = Db::name('SystemConfig')->where('group', 'mail')->column('name,value');//获取邮箱配置信息
|
||||
self::$mail = new PHPMailer();
|
||||
self::$mail->isSMTP();// 使用SMTP服务
|
||||
self::$mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码
|
||||
self::$mail->Host = $mailInfo['MailHost'];// 发送方的SMTP服务器地址
|
||||
self::$mail->SMTPAuth = true;// 是否使用身份验证
|
||||
self::$mail->Username = $mailInfo['MailUsername'];// 发送方的QQ邮箱用户名,就是自己的邮箱名
|
||||
self::$mail->Password = $mailInfo['MailPassword'];// 发送方的邮箱密码,不是登录密码,是qq的第三方授权登录码,要自己去开启,在邮箱的设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 里面
|
||||
self::$mail->setFrom($mailInfo['MailUsername'], $mailInfo['MailNickname']);// 设置发件人信息,如邮件格式说明中的发件人,
|
||||
self::$mail->addReplyTo($mailInfo['MailReplyTo'], $mailInfo['MailNickname']);// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
|
||||
self::$mail->SMTPSecure = "ssl";// 使用ssl协议方式,
|
||||
self::$mail->Port = 465;// QQ邮箱的ssl协议方式端口号是465/587
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送邮箱信息
|
||||
* @param $toemail 邮箱 (可以为单个:1111@qq.com 可以为数组:[1111@qq.com, 2222@qq.com])
|
||||
* @param $title 标题
|
||||
* @param $info 内容
|
||||
* @return array
|
||||
*/
|
||||
public static function send($toemail, $title, $info) {
|
||||
self::__init();
|
||||
self::$mail->Subject = $title;
|
||||
self::$mail->Body = $info;
|
||||
// self::$mail->addCC("xxx@163.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
|
||||
// self::$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
|
||||
// self::$mail->addAttachment("bug0.jpg");// 添加附件
|
||||
// self::$mail->AltBody = "纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
|
||||
|
||||
//判断是否为群发信息
|
||||
if (is_array($toemail)) {
|
||||
foreach ($toemail as $vo) {
|
||||
self::$mail->addAddress($vo, 'send');
|
||||
!self::$mail->send() ? $msg[] = ['mail' => $vo, 'msg' => self::$mail->ErrorInfo] : $msg[] = ['mail' => $vo, 'msg' => '邮箱发送成功!'];
|
||||
}
|
||||
return ['code' => 1, 'msg' => $msg];
|
||||
} else {
|
||||
self::$mail->addAddress($toemail, 'send');
|
||||
if (!self::$mail->send()) {
|
||||
return ['code' => 1, 'msg' => self::$mail->ErrorInfo];
|
||||
} else {
|
||||
return ['code' => 0, 'msg' => '邮箱发送成功!'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
/**
|
||||
* 模型基础数据服务
|
||||
* Class ModelService
|
||||
* @package service
|
||||
*/
|
||||
|
||||
namespace app\admin\service;
|
||||
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class ModelService extends Model {
|
||||
|
||||
/**
|
||||
* 主键定义
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
|
||||
/**
|
||||
* 格式化分页
|
||||
* @param array $query 分页参数 ['word' => $word]
|
||||
*/
|
||||
public function formatQuery($query = []) {
|
||||
$format_query = [
|
||||
'query' => [],
|
||||
];
|
||||
foreach ($query as $k => $val) {
|
||||
$format_query['query'] = [$k, $val];
|
||||
}
|
||||
return $format_query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改字段值
|
||||
* @param $update
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public static function editField($update) {
|
||||
$data = self::where('id', $update['id'])->update([$update['field'] => $update['value']]);
|
||||
if ($data == 1) {
|
||||
return __success('修改成功!');
|
||||
} else {
|
||||
return __error('数据没有修改!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增
|
||||
* @param $post
|
||||
* @return \think\response\Json
|
||||
* @throws \think\exception\PDOException
|
||||
*/
|
||||
public static function addData($post) {
|
||||
try {
|
||||
self::insert($post);
|
||||
} catch (\Exception $e) {
|
||||
return __error($e->getMessage());
|
||||
}
|
||||
return __success('添加成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
* @param $post
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public static function editData($post) {
|
||||
try {
|
||||
self::where('id', $post['id'])->update($post);
|
||||
} catch (\Exception $e) {
|
||||
return __error($e->getMessage());
|
||||
}
|
||||
return __success('修改成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 软删除操作
|
||||
* @param $id 列ID
|
||||
* @param bool $type 删除类型 (false:软删除,true:真实删除)
|
||||
* @return bool|ModelService
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function delData($id, $type = false) {
|
||||
is_array($id) ? $model = self::whereIn('id', $id) : $model = self::where('id', $id);
|
||||
|
||||
$del = $model->delete();
|
||||
|
||||
if ($del >= 1) return __success('删除成功');
|
||||
return __error('删除失败,请检查!');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
<?php
|
||||
/**
|
||||
* 系统节点服务类
|
||||
* Class NodeService
|
||||
* @package app\admin\service
|
||||
*/
|
||||
|
||||
namespace app\admin\service;
|
||||
|
||||
use app\common\model\SysNode;
|
||||
use think\Env;
|
||||
use think\Db;
|
||||
|
||||
|
||||
class NodeService {
|
||||
|
||||
/**
|
||||
* 获取指定模块的所有节点,默认获取所有模块的所有节点(树形形状)
|
||||
* @param array $module $module['admin','index'] 不传默认为所有模块
|
||||
* @return array
|
||||
*/
|
||||
public static function getNodeTree($module = []) {
|
||||
empty($module) && $module = self::getFolders();
|
||||
$node_list = [];
|
||||
foreach ($module as &$vo_m) {
|
||||
$controller = self::getControllers('../application/' . $vo_m . '/controller');
|
||||
foreach ($controller as &$vo_c) {
|
||||
if ($vo_c != 'Login') {
|
||||
$action = self::getActions('app\\' . $vo_m . '\\controller\\' . $vo_c);
|
||||
foreach ($action as &$vo_a) $vo_a = AuthService::parseNodeStr($vo_m . '/' . $vo_c . '/' . $vo_a);
|
||||
!empty($action) && $node_list[AuthService::parseNodeStr($vo_m)][AuthService::parseNodeStr($vo_m . '/' . $vo_c)] = $action;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $node_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定目录下的所有文件夹名称
|
||||
* @param $dir
|
||||
* @return array
|
||||
*/
|
||||
public static function getFolders($dir) {
|
||||
$pathList = glob($dir . '/*');
|
||||
$folder_list = [];
|
||||
foreach ($pathList as $vo) {
|
||||
if (is_dir($vo)) {
|
||||
$folder_list[] = str_replace($dir . '/', '', $vo);
|
||||
}
|
||||
}
|
||||
return $folder_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定模块中的控制器
|
||||
* @param $dir
|
||||
* @return array|mixed
|
||||
*/
|
||||
public static function getControllers($dir) {
|
||||
list($folders, $pathList, $controllerList) = [self::getFolders($dir), glob($dir . '/*.php'), []];
|
||||
foreach ($folders as $folder) {
|
||||
$pathFolders = glob("{$dir}/{$folder}/*.php");
|
||||
foreach ($pathFolders as $pathFolder) {
|
||||
$pathList[] = $pathFolder;
|
||||
}
|
||||
}
|
||||
foreach ($pathList as $vo) {
|
||||
$className = explode("/controller/", $vo);
|
||||
$className = str_replace('.php', '', end($className));
|
||||
$className = str_replace('/', '.', $className);
|
||||
$controllerList[] = $className;
|
||||
}
|
||||
return $controllerList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取控制器中的方法
|
||||
* @param $className
|
||||
* @return array|mixed
|
||||
*/
|
||||
public static function getActions($className) {
|
||||
list($actions, $actionList) = [get_class_methods($className), []];
|
||||
if (!empty($actions)) {
|
||||
foreach ($actions as $action) {
|
||||
if (strpos($action, '_') !== 0 && $action !== 'initialize') {
|
||||
$actionList[] = $action;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $actionList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统节点
|
||||
* @param array $modules 模块名
|
||||
* @return array|mixed 节点列表
|
||||
*/
|
||||
public static function getNodeList($modules = []) {
|
||||
list($nodeList, $appPath, $appNamespace) = [[], '../application', env('app_namespace')];
|
||||
empty($modules) && $modules = self::getFolders($appPath);
|
||||
foreach ($modules as $module) {
|
||||
$nodeList[] = AuthService::parseNodeStr($module);
|
||||
$modulePath = "{$appPath}/{$module}/controller";
|
||||
$controllers = self::getControllers($modulePath);
|
||||
foreach ($controllers as $controller) {
|
||||
$nodeList[] = AuthService::parseNodeStr("{$module}/{$controller}");
|
||||
$controller_replace = str_replace('.', '\\', $controller);
|
||||
$controllerPath = "{$appNamespace}\\{$module}\\controller\\{$controller_replace}";
|
||||
$actions = self::getActions($controllerPath);
|
||||
foreach ($actions as $action) {
|
||||
$nodeList[] = AuthService::parseNodeStr("{$module}/{$controller}/{$action}");
|
||||
}
|
||||
}
|
||||
}
|
||||
return $nodeList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新系统节点
|
||||
* @param array $modules
|
||||
*/
|
||||
public static function refreshNode($modules = []) {
|
||||
empty($modules) && $modules = self::getFolders(env('app_path'));
|
||||
list($nodeList, $insertNode) = [self::getNodeList($modules), []];
|
||||
foreach ($nodeList as $vo) {
|
||||
$nodeInfo = Db::name('SystemNode')->where(['node' => $vo])->find();
|
||||
if (empty($nodeInfo)) {
|
||||
list($nodeCount, $nodeType) = [substr_count($vo, '/'), 0];
|
||||
switch ($nodeCount) {
|
||||
case 0:
|
||||
$nodeType = 1;
|
||||
break;
|
||||
case 1:
|
||||
$nodeType = 2;
|
||||
break;
|
||||
case 2:
|
||||
$nodeType = 3;
|
||||
break;
|
||||
}
|
||||
$insertNode[] = ['type' => $nodeType, 'node' => $vo];
|
||||
}
|
||||
}
|
||||
if (!empty($insertNode)) {
|
||||
Db::startTrans();
|
||||
try {
|
||||
Db::name('SystemNode')->insertAll($insertNode);
|
||||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
return ['code' => 1, 'msg' => $e->getMessage()];
|
||||
}
|
||||
return ['code' => 0, 'msg' => '节点刷新成功!'];
|
||||
} else {
|
||||
return ['code' => 1, 'msg' => '节点数据暂无变化!'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除失效节点
|
||||
* @param array $modules
|
||||
*/
|
||||
public static function cleanNode($modules = []) {
|
||||
empty($modules) && $modules = self::getFolders(env('app_path'));
|
||||
$nodeList = Db::name('SystemNode')->where(['is_auto' => 0])->select();
|
||||
$autoNodeList = self::getNodeList($modules);
|
||||
foreach ($nodeList as $voNode) {
|
||||
$is_exist = false;
|
||||
foreach ($autoNodeList as $voAutoNode) {
|
||||
$voNode['node'] == $voAutoNode && $is_exist = true;
|
||||
}
|
||||
$is_exist == false && $delete[] = $voNode['id'];
|
||||
}
|
||||
if (!empty($delete)) {
|
||||
Db::startTrans();
|
||||
try {
|
||||
Db::name('SystemNode')->delete($delete);
|
||||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
return ['code' => 1, 'msg' => $e->getMessage()];
|
||||
}
|
||||
return ['code' => 0, 'msg' => '清除失效节点成功!'];
|
||||
} else {
|
||||
return ['code' => 1, 'msg' => '无失效节点!'];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* 七牛云cdn服务类
|
||||
* */
|
||||
|
||||
namespace app\admin\service;
|
||||
|
||||
use think\Db;
|
||||
use think\facade\Config;
|
||||
use Qiniu\Auth;
|
||||
use Qiniu\Storage\UploadManager;
|
||||
|
||||
class QiniuService {
|
||||
|
||||
/**
|
||||
* 上传至七牛云
|
||||
* @param string $filePath 要上传文件的本地路径
|
||||
* @param string $key 上传到七牛后保存的文件名
|
||||
* @return mixed
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function upload($filePath = '') {
|
||||
// 需要填写你的 Access Key 和 Secret Key
|
||||
$accessKey = Config::get('qiniu.AccessKey');
|
||||
$secretKey = Config::get('qiniu.SecretKey');
|
||||
$bucket = Config::get('qiniu.Bucket');
|
||||
// 构建鉴权对象
|
||||
$auth = new Auth($accessKey, $secretKey);
|
||||
// 生成上传 Token
|
||||
$token = $auth->uploadToken($bucket);
|
||||
// 初始化 UploadManager 对象并进行文件的上传。
|
||||
$uploadMgr = new UploadManager();
|
||||
// 要上传文件的本地路径
|
||||
$filePath = ".{$filePath}";
|
||||
// 上传到七牛后保存的文件名
|
||||
$key = md5($filePath) . ToolService::getSuffix($filePath);
|
||||
// 初始化 UploadManager 对象并进行文件的上传。
|
||||
$uploadMgr = new UploadManager();
|
||||
// 调用 UploadManager 的 putFile 方法进行文件的上传。
|
||||
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
|
||||
if ($err !== null) {
|
||||
return $err;
|
||||
} else {
|
||||
$url = Config::get('qiniu.url') . '/' . $ret['key'];
|
||||
return $url;
|
||||
}
|
||||
}
|
||||
|
||||
public static function base64($base64, $key) {
|
||||
$accessKey = Config::get('qiniu.AccessKey');
|
||||
$secretKey = Config::get('qiniu.SecretKey');
|
||||
$bucket = Config::get('qiniu.Bucket');
|
||||
$auth = new Auth($accessKey, $secretKey);
|
||||
$token = $auth->uploadToken($bucket);
|
||||
$uploadMgr = new UploadManager();
|
||||
// 上传字符串到七牛
|
||||
list($ret, $err) = $uploadMgr->put($token, $key, $base64);
|
||||
if ($err !== null) {
|
||||
return $err;
|
||||
} else {
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取七牛云上传token
|
||||
* @return string
|
||||
*/
|
||||
public static function getToken() {
|
||||
// 需要填写你的 Access Key 和 Secret Key
|
||||
$accessKey = Config::get('qiniu.AccessKey');
|
||||
$secretKey = Config::get('qiniu.SecretKey');
|
||||
$bucket = Config::get('qiniu.Bucket');
|
||||
// 构建鉴权对象
|
||||
$auth = new Auth($accessKey, $secretKey);
|
||||
// 生成上传 Token
|
||||
$token = $auth->uploadToken($bucket);
|
||||
return $token;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* 工具服务类
|
||||
* */
|
||||
|
||||
namespace app\admin\service;
|
||||
|
||||
|
||||
class ToolService {
|
||||
|
||||
/**
|
||||
* 获取文件后缀名
|
||||
* @param $filename
|
||||
* @return string
|
||||
*/
|
||||
public static function getSuffix($filename) {
|
||||
return strrchr($filename, '.');
|
||||
}
|
||||
|
||||
/**
|
||||
* 加密
|
||||
* @param $data 加密内容
|
||||
* @param $key 秘钥
|
||||
* @return string
|
||||
*/
|
||||
public static function encrypt($data, $key) {
|
||||
$key = md5($key);
|
||||
$x = 0;
|
||||
$len = strlen($data);
|
||||
$l = strlen($key);
|
||||
list($char, $str) = ['', ''];
|
||||
for ($i = 0; $i < $len; $i++) {
|
||||
if ($x == $l) {
|
||||
$x = 0;
|
||||
}
|
||||
$char .= $key{$x};
|
||||
$x++;
|
||||
}
|
||||
for ($i = 0; $i < $len; $i++) {
|
||||
$str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
|
||||
}
|
||||
return base64_encode($str);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密
|
||||
* @param $data 解密内容
|
||||
* @param $key 秘钥
|
||||
* @return string
|
||||
*/
|
||||
public static function decrypt($data, $key) {
|
||||
$key = md5($key);
|
||||
$x = 0;
|
||||
$data = base64_decode($data);
|
||||
$len = strlen($data);
|
||||
$l = strlen($key);
|
||||
list($char, $str) = ['', ''];
|
||||
for ($i = 0; $i < $len; $i++) {
|
||||
if ($x == $l) {
|
||||
$x = 0;
|
||||
}
|
||||
$char .= substr($key, $x, 1);
|
||||
$x++;
|
||||
}
|
||||
for ($i = 0; $i < $len; $i++) {
|
||||
if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {
|
||||
$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
|
||||
} else {
|
||||
$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
|
||||
}
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
}
|
||||
21
芳林公司项目/www.zhiyuanhelp.com/application/admin/tags.php
Normal file
21
芳林公司项目/www.zhiyuanhelp.com/application/admin/tags.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
// 应用行为扩展定义文件
|
||||
return [
|
||||
// 应用初始化
|
||||
'app_init' => [],
|
||||
// 应用开始
|
||||
'app_begin' => [],
|
||||
// 模块初始化
|
||||
'module_init' => [],
|
||||
// 操作开始执行
|
||||
'action_begin' => [],
|
||||
// 视图内容过滤
|
||||
'view_filter' => [],
|
||||
// 日志写入
|
||||
'log_write' => [],
|
||||
// 应用结束
|
||||
'app_end' => [],
|
||||
];
|
||||
@@ -0,0 +1 @@
|
||||
37fbe7a9-70d7-4042-8f14-2d23774bee5e
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/*
|
||||
* 权限验证规则
|
||||
* */
|
||||
namespace app\admin\validate;
|
||||
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Auth extends Validate {
|
||||
|
||||
/**
|
||||
* 验证规则
|
||||
* @var array
|
||||
*/
|
||||
protected $rule = [
|
||||
'id' => 'require|number|checkAuthId',
|
||||
'title' => 'require|max:30',
|
||||
'sort' => 'member',
|
||||
'remark' => 'require|max:250',
|
||||
'auth_id' => 'require',
|
||||
'node_id' => 'require',
|
||||
'field' => 'require',
|
||||
'value' => 'require|max:30',
|
||||
];
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'id.require' => '编号必须',
|
||||
'title.require' => '角色权限必须',
|
||||
'id.number' => '编号为数字',
|
||||
'field.require' => '字段必须',
|
||||
'value.require' => '修改值必须',
|
||||
'value.max' => '修改值最多不能超过30个字符',
|
||||
'title.max' => '权限角色名称最多不能超过30个字符',
|
||||
];
|
||||
|
||||
/**
|
||||
* 应用场景
|
||||
* @var array
|
||||
*/
|
||||
protected $scene = [
|
||||
//添加系统角色
|
||||
'add' => ['title'],
|
||||
|
||||
//授权
|
||||
'authorize' => ['auth_id, node_id'],
|
||||
|
||||
//修改系统角色字段值
|
||||
'edit_field' => ['id', 'field', 'value'],
|
||||
|
||||
//删除角色
|
||||
'del' => ['id'],
|
||||
|
||||
//更改角色状态
|
||||
'status' => ['id'],
|
||||
];
|
||||
|
||||
/**
|
||||
* 自定义验证场景
|
||||
* @return Node
|
||||
*/
|
||||
public function sceneEdit() {
|
||||
return $this->only(['id', 'remark', 'title'])
|
||||
->remove('id', 'checkAuthId');
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测ID是否存在
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkAuthId($value, $rule, $data = []) {
|
||||
$user = \app\admin\model\Auth::where(['id' => $value])->find();
|
||||
if (empty($user)) return '暂无角色数据,请稍后再试!';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
/**
|
||||
*公共验证规则
|
||||
*/
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* 公共验证规则
|
||||
* Class Common
|
||||
* @package app\admin\validate
|
||||
*/
|
||||
class Common extends Validate {
|
||||
/**
|
||||
* 验证规则
|
||||
* @var array
|
||||
*/
|
||||
protected $rule = [
|
||||
'id' => 'require|number',
|
||||
'field' => 'require',
|
||||
'value' => 'require|max:30',
|
||||
];
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'id.require' => '编号必须',
|
||||
'field.require' => '字段必须',
|
||||
'value.require' => '修改值必须',
|
||||
];
|
||||
|
||||
/**
|
||||
* 验证场景
|
||||
* @var array
|
||||
*/
|
||||
protected $scene = [
|
||||
//修改字段值
|
||||
'edit_field' => ['id', 'field', 'value'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/*
|
||||
* 系统参数验证
|
||||
* */
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* 系统参数验证
|
||||
* Class Config
|
||||
* @package app\admin\validate
|
||||
*/
|
||||
class Config extends Validate {
|
||||
|
||||
/**
|
||||
* 验证规则
|
||||
* @var array
|
||||
*/
|
||||
protected $rule = [
|
||||
'id' => 'require|number|checkConfigId',
|
||||
'field' => 'require',
|
||||
'value' => 'require|max:250',
|
||||
];
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'id.require' => '编号必须',
|
||||
'field.require' => '字段必须',
|
||||
'value.require' => '修改值必须',
|
||||
'value.max' => '修改值最多不能超过250个字符',
|
||||
];
|
||||
|
||||
/**
|
||||
* 应用场景
|
||||
* @var array
|
||||
*/
|
||||
protected $scene = [
|
||||
//修改字段值
|
||||
'edit_field' => ['id', 'field', 'value'],
|
||||
];
|
||||
|
||||
/**
|
||||
* 检测ID是否存在
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkConfigId($value, $rule, $data = []) {
|
||||
$config = \app\admin\model\Config::where(['id' => $value])->find();
|
||||
if (empty($config)) return '暂无数据,请稍后再试!';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/*
|
||||
* 登录验证
|
||||
* */
|
||||
namespace app\admin\validate;
|
||||
|
||||
use think\Validate;
|
||||
use think\captcha\Captcha;
|
||||
|
||||
/**
|
||||
* 后台登录验证类
|
||||
* Class Login
|
||||
* @package app\admin\validate
|
||||
*/
|
||||
class Login extends Validate {
|
||||
|
||||
/**
|
||||
* 验证规则
|
||||
* @var array
|
||||
*/
|
||||
protected $rule = [
|
||||
'username' => 'require|max:15',
|
||||
'password' => 'require|max:20',
|
||||
'vercode' => 'require|captcha',
|
||||
];
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'username.require' => '登录名必须',
|
||||
'username.max' => '登录名最多不能超过15个字符',
|
||||
'password.require' => '密码必须',
|
||||
'password.max' => '密码最多不能超过20个字符',
|
||||
'vercode.require' => '验证码不能为空',
|
||||
'vercode.captcha' => '验证码不正确,请重新输入',
|
||||
];
|
||||
|
||||
/**
|
||||
* 应用场景
|
||||
* @var array
|
||||
*/
|
||||
protected $scene = [
|
||||
//开启验证码登录
|
||||
'index_on' => ['username', 'password', 'vercode'],
|
||||
|
||||
//关闭验证码登录
|
||||
'index_off' => ['username', 'password'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/*
|
||||
* 菜单验证规则
|
||||
* */
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* 菜单管理验证类
|
||||
* Class Menu
|
||||
* @package app\admin\validate
|
||||
*/
|
||||
class Menu extends Validate {
|
||||
|
||||
/**
|
||||
* 验证规则
|
||||
* @var array
|
||||
*/
|
||||
protected $rule = [
|
||||
'id' => 'require|number|checkId',
|
||||
'pid' => 'require|number',
|
||||
'title' => 'require|max:10',
|
||||
'href' => 'max:100',
|
||||
'icon' => 'max:20',
|
||||
'sort' => 'max:10|number',
|
||||
'status' => 'require|in:0,1',
|
||||
'remark' => 'max:250',
|
||||
'field' => 'require',
|
||||
'value' => 'require|max:30',
|
||||
];
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'pid.require' => '上级菜单必须',
|
||||
'pid.number' => '上级菜单数据有误',
|
||||
'title.require' => '菜单名称必须',
|
||||
'title.max' => '名称最多不能超过10个字符',
|
||||
'href.max' => '链接最多不能超过100个字符',
|
||||
'status.in' => '启用状态格式有误',
|
||||
'sort.number' => '排序必须为数字',
|
||||
'field.require' => '字段必须',
|
||||
'value.require' => '修改值必须',
|
||||
];
|
||||
|
||||
/**
|
||||
* 应用场景
|
||||
* @var array
|
||||
*/
|
||||
protected $scene = [
|
||||
//添加菜单
|
||||
'add' => ['pid', 'title', 'href', 'icon', 'sort', 'remark'],
|
||||
|
||||
//修改菜单
|
||||
'edit' => ['id', 'pid', 'title', 'href', 'icon', 'sort', 'remark'],
|
||||
|
||||
//删除菜单
|
||||
'del' => ['id'],
|
||||
|
||||
//更改菜单状态
|
||||
'status' => ['id'],
|
||||
|
||||
//修改字段值
|
||||
'edit_field' => ['id', 'field', 'value'],
|
||||
];
|
||||
|
||||
/**
|
||||
* 检测菜单是否存在
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkId($value, $rule, $data = []) {
|
||||
$menu = \app\admin\model\menu::where(['id' => $value])->find();
|
||||
if (empty($menu)) return '暂无菜单数据,请稍后再试!';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
/*
|
||||
* 系统节点验证
|
||||
* */
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Node extends Validate {
|
||||
/**
|
||||
* 验证规则
|
||||
* @var array
|
||||
*/
|
||||
protected $rule = [
|
||||
'id' => 'require|number|checkNodeId',
|
||||
'field' => 'require',
|
||||
'value' => 'require|max:30',
|
||||
'node' => 'require|checkNode',
|
||||
'title' => 'require|max:30',
|
||||
];
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'id.require' => '编号必须',
|
||||
'node.require' => '系统节点必须',
|
||||
'id.number' => '编号为数字',
|
||||
'field.require' => '字段必须',
|
||||
'value.require' => '修改值必须',
|
||||
'value.max' => '修改值最多不能超过30个字符',
|
||||
'title.max' => '修改值最多不能超过30个字符',
|
||||
];
|
||||
|
||||
/**
|
||||
* 应用场景
|
||||
* @var array
|
||||
*/
|
||||
protected $scene = [
|
||||
//添加系统节点
|
||||
'add' => ['node', 'title'],
|
||||
|
||||
//修改系统节点字段值
|
||||
'edit_field' => ['id', 'field', 'value'],
|
||||
|
||||
//删除节点
|
||||
'del' => ['id'],
|
||||
|
||||
//更改节点状态
|
||||
'status' => ['id'],
|
||||
];
|
||||
|
||||
/**
|
||||
* 自定义验证场景
|
||||
* @return Node
|
||||
*/
|
||||
public function sceneEdit()
|
||||
{
|
||||
return $this->only(['id','node','title'])
|
||||
->remove('node', 'checkNode');
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测节点id是否存在
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkNodeId($value, $rule, $data = []) {
|
||||
$user = \app\admin\model\node::where(['id' => $value])->find();
|
||||
if (empty($user)) return '暂无节点数据,请稍后再试!';
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测系统节点是否存在
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkNode($value, $rule, $data = []) {
|
||||
$user = \app\admin\model\node::where(['node' => $value])->find();
|
||||
if (!empty($user)) return '已存在该系统节点,无需再次添加!';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
218
芳林公司项目/www.zhiyuanhelp.com/application/admin/validate/User.php
Normal file
218
芳林公司项目/www.zhiyuanhelp.com/application/admin/validate/User.php
Normal file
@@ -0,0 +1,218 @@
|
||||
<?php
|
||||
/*
|
||||
* 后台管理员验证
|
||||
* */
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
|
||||
/**
|
||||
* 后台管理员验证类
|
||||
* Class User
|
||||
* @package app\admin\validate
|
||||
*/
|
||||
class User extends Validate {
|
||||
|
||||
/**
|
||||
* 验证规则
|
||||
* @var array
|
||||
*/
|
||||
protected $rule = [
|
||||
'id' => 'require|number|checkDelId',
|
||||
'head_img' => 'require',
|
||||
'username' => 'require|min:5|max:15|checkUsername',
|
||||
'old_password' => 'require|min:6|max:20|checkOldPassword',
|
||||
'password' => 'require|min:6|max:20|checkPassword',
|
||||
'password1' => 'require|min:6|max:20|checkPassword',
|
||||
'phone' => 'require|number|mobile|checkPhone',
|
||||
'mail' => 'email|max:20|checkMail',
|
||||
'auth_id' => 'require',
|
||||
'qq' => 'number',
|
||||
'remark' => 'max:250',
|
||||
];
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'id.require' => '编号必须',
|
||||
'username.require' => '名称必须',
|
||||
'head_img.require' => '头像必须',
|
||||
'username.min' => '名称不能少于5个字符',
|
||||
'username.max' => '名称最多不能超过15个字符',
|
||||
'password.require' => '密码必须',
|
||||
'password.min' => '密码不能少于6个字符',
|
||||
'password.max' => '密码最多不能超过20个字符',
|
||||
'password1.require' => '第二次密码必须',
|
||||
'password1.max' => '第二次密码最多不能超过20个字符',
|
||||
'auth_id.number' => '角色编号必须是数字',
|
||||
'mail.email' => '邮箱格式错误',
|
||||
'phone.email' => '手机号格式错误',
|
||||
'qq.number' => 'QQ必须为数字',
|
||||
'remark.max' => '备注最多不能超过250个字符',
|
||||
];
|
||||
|
||||
/**
|
||||
* 应用场景
|
||||
* @var array
|
||||
*/
|
||||
protected $scene = [
|
||||
//添加管理员
|
||||
'add' => ['username', 'password', 'password1', 'phone', 'mail', 'auth_id', 'qq', 'remark'],
|
||||
|
||||
//修改管理员
|
||||
'edit' => ['username', 'phone', 'mail', 'auth_id', 'qq', 'remark'],
|
||||
|
||||
//修改登录密码
|
||||
'edit_password' => ['id', 'password', 'password1'],
|
||||
|
||||
//删除管理员
|
||||
'del' => ['id'],
|
||||
|
||||
//更改管理员状态
|
||||
'status' => ['id'],
|
||||
];
|
||||
|
||||
/**
|
||||
* 修改信息验证场景
|
||||
* @return User
|
||||
*/
|
||||
public function sceneEdit() {
|
||||
return $this->only(['head_img', 'phone', 'mail', 'auth_id'])
|
||||
->remove('phone', 'checkPhone')
|
||||
->remove('mail', 'checkMail');
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改自己的信息
|
||||
* @return User
|
||||
*/
|
||||
public function sceneEditSelf() {
|
||||
return $this->only(['head_img', 'phone', 'mail', 'remark'])
|
||||
->remove('phone', 'checkPhone')
|
||||
->remove('mail', 'checkMail');
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测删除时用户ID
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkDelId($value, $rule, $data = []) {
|
||||
$user = \app\admin\model\user::where(['id' => $value])->find();
|
||||
if (empty($user)) return '暂无账户数据,请稍后再试!';
|
||||
if ($user['is_deleted'] == 1) return '该账户已被删除,无需再次删除!';
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测启用或者禁用时的用户ID
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkOperateId($value, $rule, $data = []) {
|
||||
$user = \app\admin\model\user::where(['id' => $value])->find();
|
||||
if (empty($user)) return '暂无账户数据,请稍后再试!';
|
||||
if ($user['is_deleted'] == 1) return '该账户已被删除,无需再次删除!';
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查用户名是否已存在
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkUsername($value, $rule, $data = []) {
|
||||
$where_user = [
|
||||
'username' => $value,
|
||||
'status' => 1,
|
||||
'is_deleted' => 0,
|
||||
];
|
||||
$user = \app\admin\model\user::where($where_user)->find();
|
||||
return empty($user) ? true : '已有相同登录账号,请更换进行注册!';
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断两个输入的密码是否一致
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkPassword($value, $rule, $data = []) {
|
||||
return $data['password'] == $data['password1'] ? true : '两次输入的密码不一致,请重新输入!';
|
||||
}
|
||||
|
||||
protected function checkOldPassword($value, $rule, $data = []) {
|
||||
$where_user = [
|
||||
'id' => $data['id'],
|
||||
'status' => 1,
|
||||
'is_deleted' => 0,
|
||||
];
|
||||
$user = \app\admin\model\user::where($where_user)->find();
|
||||
if (empty($user)) return '暂无改管理员信息,请刷新重试!';
|
||||
return $user['password'] == password($value) ? true : '旧密码不正确,请重新输入!';
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否存在相同的手机号
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkPhone($value, $rule, $data = []) {
|
||||
$where_user = [
|
||||
'phone' => $value,
|
||||
'status' => 1,
|
||||
'is_deleted' => 0,
|
||||
];
|
||||
$user = \app\admin\model\user::where($where_user)->find();
|
||||
return empty($user) ? true : '已有相同手机号码,请更换进行注册!';
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否存在相同的邮箱
|
||||
* @param $value
|
||||
* @param $rule
|
||||
* @param array $data
|
||||
* @return bool|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
protected function checkMail($value, $rule, $data = []) {
|
||||
$where_user = [
|
||||
'mail' => $value,
|
||||
'status' => 1,
|
||||
'is_deleted' => 0,
|
||||
];
|
||||
$user = \app\admin\model\user::where($where_user)->find();
|
||||
return empty($user) ? true : '已有相同邮箱,请更换进行注册!';
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
c680dcfe-9dbd-441e-b1b2-418eecefa5dd
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/24
|
||||
* Time: 16:17
|
||||
*/
|
||||
|
||||
namespace app\admin\validate\custom;
|
||||
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Message extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
* @var array
|
||||
*/
|
||||
protected $rule = [
|
||||
'id' => 'require|number',
|
||||
'replyCon' => 'require'
|
||||
];
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'id.require' => '编号必须',
|
||||
'id.number' => '编号为数字',
|
||||
'replyCon.require' => '请输入回复内容',
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* 应用场景
|
||||
* @var array
|
||||
*/
|
||||
protected $scene = [
|
||||
|
||||
//授权
|
||||
'reply' => ['id','replyCon'],
|
||||
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/25
|
||||
* Time: 18:26
|
||||
*/
|
||||
|
||||
namespace app\admin\validate\custom;
|
||||
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Proscore extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
* @var array
|
||||
*/
|
||||
protected $rule = [
|
||||
'id' => 'require|number',
|
||||
'province_id' => 'require|number',
|
||||
'province_title' => 'require',
|
||||
'year' => 'require',
|
||||
'GaoKaoTotal' => 'require|number',
|
||||
'ArtsScore' => 'require|number',
|
||||
'SciencesScore' => 'require|number',
|
||||
'batch' => 'require|number',
|
||||
'batchName' => 'require',
|
||||
];
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'id.require' => '编号必须',
|
||||
'province_id.number' => '省份id必须为数字',
|
||||
'GaoKaoTotal.number' => '高考总分必须为数字',
|
||||
'ArtsScore.require' => '文科分数必填',
|
||||
'ArtsScore.number' => '文科分数必须为数字',
|
||||
'batch.require' => '批次序列必须',
|
||||
'batch.number' => '批次序列必须数字',
|
||||
'SciencesScore.require' => '理科分数必须',
|
||||
'SciencesScore.number' => '理科分数必须为数字',
|
||||
|
||||
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* 应用场景
|
||||
* @var array
|
||||
*/
|
||||
protected $scene = [
|
||||
|
||||
'add' => ['province_id','province_title','batch','batchName','ArtsScore','GaoKaoTotal','SciencesScore','year'],
|
||||
'edit' => ['id'],
|
||||
'del' => ['id']
|
||||
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Administrator
|
||||
* Date: 2020/4/23
|
||||
* Time: 18:58
|
||||
*/
|
||||
|
||||
namespace app\admin\validate\custom;
|
||||
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Student extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
* @var array
|
||||
*/
|
||||
protected $rule = [
|
||||
'id' => 'require|number',
|
||||
'reason' => 'require|max:200'
|
||||
];
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'id.require' => '编号必须',
|
||||
'id.number' => '编号为数字',
|
||||
'reason.require' => '退款原因必须',
|
||||
'reason.max' => '退款原因最多不能超过200个字符'
|
||||
];
|
||||
|
||||
/**
|
||||
* 应用场景
|
||||
* @var array
|
||||
*/
|
||||
protected $scene = [
|
||||
|
||||
//授权
|
||||
'refundOrder' => ['id','reason'],
|
||||
|
||||
];
|
||||
}
|
||||
1
芳林公司项目/www.zhiyuanhelp.com/application/admin/view/.pydio
Normal file
1
芳林公司项目/www.zhiyuanhelp.com/application/admin/view/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
a07dda94-8d69-4b80-95dc-fa4b03c3bff4
|
||||
@@ -0,0 +1 @@
|
||||
64ec7537-7e26-4b75-9eed-3c7f9429a7fa
|
||||
@@ -0,0 +1,87 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<style type="text/css">
|
||||
form {
|
||||
margin: 10px auto;
|
||||
width: 500px
|
||||
}
|
||||
|
||||
h1, h2, h3 {
|
||||
padding: 10px 0
|
||||
}
|
||||
|
||||
a {
|
||||
color: #1C86EE;
|
||||
text-align: right;
|
||||
font-size: 18px
|
||||
}
|
||||
|
||||
.xtree_contianer {
|
||||
overflow: auto;
|
||||
margin-bottom: 30px;
|
||||
padding: 10px 0 25px 5px;
|
||||
width: 500px;
|
||||
border: 1px solid #9C9C9C;
|
||||
background-color: #fff
|
||||
}
|
||||
|
||||
.div-btns {
|
||||
margin: 20px 0
|
||||
}
|
||||
|
||||
.layui-form-label {
|
||||
width: 60px !important
|
||||
}
|
||||
</style>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<form class="layui-form">
|
||||
<h1>{$auth.title|default=''}</h1>
|
||||
<h3>授权节点:</h3>
|
||||
<div id="xtree3" class="xtree_contianer"></div>
|
||||
<input type="hidden" id="auth_id" name="auth_id" value="{$auth.id|default=''}">
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn layui-btn-sm" id="submitBtn">提交</button>
|
||||
<button type="reset" class="layui-btn layui-btn-sm layui-btn-primary">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script type="text/javascript" src="__STATIC__/plugs/layui-xtree2.0/layui-xtree.js"></script>
|
||||
<script type="text/javascript">
|
||||
layui.use(['form', 'layer'], function () {
|
||||
var form = layui.form
|
||||
layer = parent.layer === undefined ? layui.layer : top.layer,
|
||||
$ = layui.jquery;
|
||||
|
||||
var xtree3 = new layuiXtree({
|
||||
elem: 'xtree3'
|
||||
, form: form
|
||||
, data: "{:url('admin/api.node/getNodeTree')}?id={$auth.id}"
|
||||
, isopen: true //加载完毕后的展开状态,默认值:true
|
||||
});
|
||||
|
||||
$("#submitBtn").click(function () {
|
||||
var node_id = [];
|
||||
var oCks = xtree3.GetChecked();
|
||||
for (var i = 0; i < oCks.length; i++) {
|
||||
node_id.push(oCks[i].value);
|
||||
}
|
||||
$.request.post("{:url('@admin/auth/authorize')}", {
|
||||
auth_id: $("#auth_id").val(),
|
||||
node_id: node_id,
|
||||
}, function (res) {
|
||||
$.msg.success(res.msg, function () {
|
||||
$.tool.reload('open');
|
||||
});
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1,55 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
{block name="style"}{/block}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{block name="cotent"}
|
||||
<form class="layui-form form-width-99admin">
|
||||
<br>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">权限角色</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="title" class="layui-input" lay-verify="required" value="{$auth.title|default=''}" placeholder="请输入系统角色">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">备注信息</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea id="remark" placeholder="请输入备注信息" class="layui-textarea">{$auth.remark|default=''}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if !empty($auth)}
|
||||
<input type="hidden" id="id" value="{$auth.id|default=''}">
|
||||
{/if}
|
||||
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn layui-btn-sm" id="submitBtn">提交</button>
|
||||
<button class="layui-btn layui-btn-sm layui-btn-primary" data-close="closeOpen">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 添加、编辑
|
||||
*/
|
||||
$("#submitBtn").on("click", function () {
|
||||
var url = "{if empty($auth)}{:url('@admin/auth/add')}{else/}{:url('@admin/auth/edit')}{/if}";
|
||||
var data = {
|
||||
id: $("#id").val(),
|
||||
title: $("#title").val(),
|
||||
remark: $("#remark").val(),
|
||||
};
|
||||
$.request.post(url, data, function (res) {
|
||||
$.msg.success(res.msg, function () {
|
||||
$.tool.reload('open');
|
||||
})
|
||||
})
|
||||
return false;
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1,121 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<form class="layui-form">
|
||||
|
||||
<!--顶部操作栏--开始-->
|
||||
<blockquote id="searchBlock" class="layui-elem-quote quoteBox">
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">角色名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="title" class="layui-input" placeholder="请输入权限角色名称"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">角色状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select id="status" class="status" lay-filter="status">
|
||||
<option value="">请选择角色状态</option>
|
||||
{foreach $status as $vo}
|
||||
<option value="{$vo.id|default=''}">{$vo.title|default=''}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">创建时间</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="create_at" class="layui-input" placeholder="请选择创建时间">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn" data-search="currentTableId">搜索</a>
|
||||
</div>
|
||||
|
||||
{if auth("$thisClass/add")}
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn layui-btn-normal" data-open='{:url("$thisClass/add")}' data-title="添加文章">添加</a>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if auth("$thisClass/del")}
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn layui-btn-danger layui-btn-normal" data-title="确定批量删除?" data-del-all='{:url("$thisClass/del")}' data-table-id="currentTableId">删除</a>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
</blockquote>
|
||||
<!--顶部操作栏--结束-->
|
||||
|
||||
<!--主表单渲染--开始-->
|
||||
<table id="currentTable" lay-filter="currentTable"></table>
|
||||
<!--主表单渲染--结束-->
|
||||
|
||||
<!--表单模板绑定--开始-->
|
||||
<script type="text/html" id="checkStatus">
|
||||
<input type="checkbox" name="{{d.id}}" value="{{d.status}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="modifyStatus" {{ d.status== 1 ? 'checked' : '' }}>
|
||||
</script>
|
||||
<!--表单模板绑定--结束-->
|
||||
|
||||
<!--表单操作栏--开始-->
|
||||
<script type="text/html" id="currentTableBar">
|
||||
|
||||
{if auth("$thisClass/authorize")}
|
||||
<a class="layui-btn layui-btn-xs layui-btn-green" data-open='{:url("$thisClass/authorize")}?id={{d.id}}' data-title="角色授权">授权</a>
|
||||
{/if}
|
||||
|
||||
{if auth("$thisClass/edit")}
|
||||
<a class="layui-btn layui-btn-xs" data-open='{:url("$thisClass/edit")}?id={{d.id}}' data-title="修改菜单信息">编辑</a>
|
||||
{/if}
|
||||
|
||||
{if auth("$thisClass/del")}
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-title="确定批量删除?" data-del='{:url("$thisClass/del")}?id={{d.id}}'>删除</a>
|
||||
{/if}
|
||||
|
||||
</script>
|
||||
<!--表单操作栏--结束-->
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 生成表单
|
||||
*/
|
||||
$.form.table('current', '{:url("$thisRequest")}?type=ajax', [[
|
||||
{type: "checkbox", fixed: "left", width: 50,},
|
||||
{field: 'sort', title: '排序', width: 100, edit: 'text', align: "center", sort: true},
|
||||
{field: 'title', title: '角色名称', minWidth: 200, align: 'center', sort: true},
|
||||
{field: 'remark', title: '备注信息', edit: 'text', minWidth: 200, align: "center", style: 'background-color: #009688; color: #fff;', sort: true},
|
||||
{field: 'create_at', title: '创建时间', align: 'center', sort: true},
|
||||
{field: 'status', title: '启用状态', width: 110, templet: '#checkStatus', unresize: true, align: "center"},
|
||||
/**{if auth("$thisClass/authorize") || auth("$thisClass/edit") || auth("$thisClass/del")}**/
|
||||
{title: '操作', minWidth: 110, templet: '#currentTableBar', fixed: "right", align: "center"},
|
||||
/**{/if}**/
|
||||
]]);
|
||||
|
||||
/**
|
||||
* 日期范围
|
||||
*/
|
||||
$.laydate.range('create_at');
|
||||
|
||||
/**
|
||||
* 监听字段值编辑
|
||||
*/
|
||||
$.form.editField('currentTable', '{:url("$thisRequest")}');
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
*/
|
||||
$.form.switch('modifyStatus', '{:url("$thisClass/status")}');
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1 @@
|
||||
62a2bb75-3d37-42b5-9225-578334abf58f
|
||||
@@ -0,0 +1,41 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<form class="layui-form">
|
||||
|
||||
<!--主表单渲染--开始-->
|
||||
<table id="currentTable" lay-filter="currentTable"></table>
|
||||
<!--主表单渲染--结束-->
|
||||
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 生成表单
|
||||
*/
|
||||
$.form.table('current', '{:url("$thisRequest")}?type=ajax', [[
|
||||
{field: 'sort', title: '排序', width: 100, edit: 'text', align: "center", sort: true},
|
||||
{field: 'remark', title: '参数说明', align: 'center'},
|
||||
{field: 'value', title: '参数值', edit: 'text', minWidth: 200, align: "center", style: 'background-color: #009688; color: #fff; border-radius: 15px;'},
|
||||
{field: 'name', title: '参数名', align: 'center', sort: true},
|
||||
{field: 'group', title: '组名', width: 200, align: 'center', sort: true},
|
||||
]], false, 'line', 'lg', false);
|
||||
|
||||
/**
|
||||
* 监听字段值编辑
|
||||
*/
|
||||
$.form.editField('currentTable', '{:url("$thisRequest")}');
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
*/
|
||||
$.form.switch('modifyStatus', '{:url("$thisClass/status")}');
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1 @@
|
||||
5fbf78c3-8f20-4a2a-a835-665bcbbe1cac
|
||||
@@ -0,0 +1 @@
|
||||
6e5d5f40-ba96-41b6-9534-423eabfbbf03
|
||||
@@ -0,0 +1,82 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
{block name="style"}{/block}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{block name="cotent"}
|
||||
<form class="layui-form form-width-99admin">
|
||||
<br>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">联系电话</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="telnum" class="layui-input" lay-verify="required" value="{$result.telnum|default=''}" placeholder="请输入菜单名称" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">问题</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea id="content" class="layui-textarea" readonly>{$result.content|default=''}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">图片</label>
|
||||
<div class="layui-input-block" id="photo-list">
|
||||
{if !empty($result.img1)}
|
||||
<img style="width: 100px; height: 100px;" src="{$result.img1}" data-image="open" lay-filter="modifyHeadImg">
|
||||
{/if}
|
||||
{if !empty($result.img2)}
|
||||
<img style="width: 100px; height: 100px;" src="{$result.img2}" data-image="open" lay-filter="modifyHeadImg">
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">回复内容</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea id="replyCon" class="layui-textarea" placeholder="请输入回复内容">{$result.reply|default=''}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{if !empty($result)}
|
||||
<input type="hidden" class="id" id="id" value="{$result.id|default=''}">
|
||||
{/if}
|
||||
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn layui-btn-sm" id="submitBtn">点击回复</button>
|
||||
<button class="layui-btn layui-btn-sm layui-btn-primary" data-close="closeOpen">取消</button>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
|
||||
$(function () {
|
||||
$('#photo-list img').on('click', function () {
|
||||
layer.photos({
|
||||
photos: '#photo-list',
|
||||
shadeClose: false,
|
||||
closeBtn: 2,
|
||||
anim: 0
|
||||
});
|
||||
})
|
||||
});
|
||||
/**
|
||||
* 添加、编辑
|
||||
*/
|
||||
$("#submitBtn").on("click", function () {
|
||||
var url = '{if empty($result)}{:url("$thisClass/reply")}{/if}';
|
||||
var data = {
|
||||
id: $("#id").val(),
|
||||
replyCon: $("#replyCon").val()
|
||||
};
|
||||
$.request.post(url, data, function (res) {
|
||||
$.msg.success(res.msg, function () {
|
||||
$.tool.reload('open');
|
||||
})
|
||||
})
|
||||
return false;
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1,132 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<form class="layui-form">
|
||||
|
||||
<!--顶部操作栏--开始-->
|
||||
<blockquote id="searchBlock" class="layui-elem-quote quoteBox">
|
||||
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">手机号码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="telnum" class="layui-input" placeholder="请输入手机号"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">类型</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="type" lay-verify="required" lay-search id="type">
|
||||
<option value="0">直接选择或搜索选择</option>
|
||||
<option value="1">考生建议</option>
|
||||
<option value="2">账号问题</option>
|
||||
<option value="3">成绩问题</option>
|
||||
<option value="4">付费问题</option>
|
||||
<option value="5">其他问题</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="status" lay-verify="required" lay-search id="status">
|
||||
<option value="0">直接选择或搜索选择</option>
|
||||
<option value="1">未回复</option>
|
||||
<option value="2">已回复</option>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">创建时间</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="add_time" class="layui-input " placeholder="请选择创建时间">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn" data-search="currentTableId">搜索</a>
|
||||
</div>
|
||||
|
||||
|
||||
</blockquote>
|
||||
<!--顶部操作栏--结束-->
|
||||
|
||||
<!--主表单渲染--开始-->
|
||||
<table id="currentTable" lay-filter="currentTable"></table>
|
||||
<!--主表单渲染--结束-->
|
||||
<!--表单模板绑定--开始-->
|
||||
<script type="text/html" id="bindImg1">
|
||||
<img style="width: 30px; height: 30px;" src="{{d.img1}}" layer-src="{{d.img1}}" data-image="open" lay-filter="modifyHeadImg">
|
||||
</script>
|
||||
<script type="text/html" id="bindImg2">
|
||||
<img style="width: 30px; height: 30px;" src="{{d.img2}}" layer-src="{{d.img2}}" data-image="open" lay-filter="modifyHeadImg">
|
||||
</script>
|
||||
<script type="text/html" id="checkStatus">
|
||||
{{#if(d.status == 1){}}
|
||||
<div id="status{{d.id}}" style="color:red">未回复</div>
|
||||
{{#}else{}}
|
||||
<div id="status{{d.id}}" style="color:green">已回复</div>
|
||||
{{#}}}
|
||||
</script>
|
||||
<!--表单模板绑定--结束-->
|
||||
|
||||
<!--表单操作栏--开始-->
|
||||
<script type="text/html" id="currentTableBar">
|
||||
|
||||
{if auth("$thisClass/details")}
|
||||
<a class="layui-btn layui-btn-xs layui-btn-sm" data-open='{:url("$thisClass/reply")}?id={{d.id}}' style="background: #0d8ddb" data-title="回复留言" >回复</a>
|
||||
{/if}
|
||||
|
||||
</script>
|
||||
<!--表单操作栏--结束-->
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 生成表单
|
||||
*/
|
||||
$.form.table('current', '{:url("$thisRequest")}?type=ajax', [[
|
||||
{type: "checkbox", fixed: "left", width: 50},
|
||||
{field: 'telnum', title: '联系电话', align: 'center'},
|
||||
{field: 'type', title: '类型', align: 'center'},
|
||||
{field: 'img1', title: '图片1', templet: '#bindImg1',align: 'center'},
|
||||
{field: 'img2', title: '图片1',templet: '#bindImg2', align: 'center'},
|
||||
{field: 'content', title: '问题', align: 'center'},
|
||||
{field: 'status', title: '状态', templet: '#checkStatus',align: 'center'},
|
||||
{field: 'reply', title: '回复内容', align: 'center'},
|
||||
{field: 'add_time', title: '时间', align: 'center'},
|
||||
{title: '操作', minWidth: 50, templet: '#currentTableBar', fixed: "right", align: "center"},
|
||||
|
||||
|
||||
]]);
|
||||
|
||||
/**
|
||||
* 日期范围
|
||||
*/
|
||||
$.laydate.range('add_time');
|
||||
|
||||
/**
|
||||
* 监听字段值编辑
|
||||
*/
|
||||
$.form.editField('currentTable', '{:url("$thisRequest")}');
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
*/
|
||||
$.form.switch('modifyStatus', '{:url("$thisClass/status")}');
|
||||
|
||||
setTimeout(()=> {
|
||||
localStorage.setItem("fdith", document.body.clientWidth)
|
||||
},300)
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1 @@
|
||||
2c14bef3-a0c4-4e0e-996a-ac6b1b104498
|
||||
@@ -0,0 +1,149 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<form class="layui-form">
|
||||
|
||||
<!--顶部操作栏--开始-->
|
||||
<blockquote id="searchBlock" class="layui-elem-quote quoteBox">
|
||||
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">考生所在省份</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="stu_yzy_province" lay-verify="required" lay-search id="stu_yzy_province">
|
||||
<option value="0">直接选择或搜索选择</option>
|
||||
{volist name="resProvince" id="vo"}
|
||||
<option value="{$vo.code}">{$vo.title}</option>
|
||||
{/volist}
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">订单号</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="ord_no" class="layui-input" placeholder="请输入订单号"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">手机号码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="telnum" class="layui-input" placeholder="请输入手机号"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">支付方式</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="province" lay-verify="required" lay-search id="pay_way">
|
||||
<option value="0">直接选择或搜索选择</option>
|
||||
<option value="1">微信</option>
|
||||
<option value="2">支付宝</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">订单状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="province" lay-verify="required" lay-search id="status">
|
||||
<option value="0">直接选择或搜索选择</option>
|
||||
<option value="1">未支付</option>
|
||||
<option value="2">已支付</option>
|
||||
<option value="3">已退款</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">创建时间</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="add_time" class="layui-input " placeholder="请选择创建时间">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn" data-search="currentTableId">搜索</a>
|
||||
</div>
|
||||
|
||||
|
||||
</blockquote>
|
||||
<!--顶部操作栏--结束-->
|
||||
|
||||
<!--主表单渲染--开始-->
|
||||
<table id="currentTable" lay-filter="currentTable"></table>
|
||||
<!--主表单渲染--结束-->
|
||||
<script type="text/html" id="payWay">
|
||||
{{#if(d.pay_way == 1){}}
|
||||
<div>微信</div>
|
||||
{{#}else{}}
|
||||
<div >支付宝</div>
|
||||
{{#}}}
|
||||
</script>
|
||||
<script type="text/html" id="checkStatus">
|
||||
{{#if(d.status == 1){}}
|
||||
<div id="status{{d.id}}" style="color:green">已支付</div>
|
||||
{{#}else if(d.status == 2){}}
|
||||
<div id="status{{d.id}}" style="color:red">已退款</div>
|
||||
{{#}else{}}
|
||||
<div id="status{{d.id}}">待支付</div>
|
||||
{{#}}}
|
||||
</script>
|
||||
<!--表单模板绑定--结束-->
|
||||
|
||||
<!--表单操作栏--开始-->
|
||||
<script type="text/html" id="currentTableBar">
|
||||
|
||||
{if auth("$thisClass/details")}
|
||||
<a class="layui-btn layui-btn-xs layui-btn-sm" data-open='{:url("$thisClass/details")}?id={{d.user_id}}' style="background: #0d8ddb" data-title="订单详情" >用戶全部订单</a>
|
||||
{/if}
|
||||
|
||||
</script>
|
||||
<!--表单操作栏--结束-->
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 生成表单
|
||||
*/
|
||||
$.form.table('current', '{:url("$thisRequest")}?type=ajax', [[
|
||||
{field: 'ord_no', title: '订单号',fixed: "left", align: 'center'},
|
||||
{field: 'telnum', title: '手机号', align: 'center'},
|
||||
{field: 'userInfo', title: '考生信息', align: 'center'},
|
||||
{field: 'vipName', title: '权限类型', align: 'center'},
|
||||
{field: 'pay_way', title: '支付方式', align: 'center',templet: '#payWay'},
|
||||
{field: 'money', title: '金額', align: 'center'},
|
||||
{field: 'status', title: '状态', templet: '#checkStatus',align: 'center'},
|
||||
{field: 'order_time', title: '时间', align: 'center',width: 400, fixed: "right"},
|
||||
{title: '操作', minWidth: 110, templet: '#currentTableBar', fixed: "right", align: "center"},
|
||||
|
||||
|
||||
]]);
|
||||
|
||||
/**
|
||||
* 日期范围
|
||||
*/
|
||||
$.laydate.range('add_time');
|
||||
|
||||
/**
|
||||
* 监听字段值编辑
|
||||
*/
|
||||
$.form.editField('currentTable', '{:url("$thisRequest")}');
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
*/
|
||||
$.form.switch('modifyStatus', '{:url("$thisClass/status")}');
|
||||
|
||||
setTimeout(()=> {
|
||||
localStorage.setItem("fdith", document.body.clientWidth)
|
||||
},300)
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1 @@
|
||||
3e12f413-d76d-4196-a193-03ac1cb602ca
|
||||
@@ -0,0 +1,107 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
{block name="style"}{/block}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
<link href="__STATIC__/plugs/tag-it/css/jquery.tagit.css" rel="stylesheet" type="text/css">
|
||||
<link href="__STATIC__/plugs/tag-it/css/tagit.ui-zendesk.css" rel="stylesheet" type="text/css">
|
||||
{block name="cotent"}
|
||||
<form class="layui-form form-width-99admin" action="">
|
||||
<br>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">省份</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<select name="province_id" lay-verify="required" id="province_id" lay-filter="province_id">
|
||||
<option value="0">请选择省份</option>
|
||||
{foreach $province_list as $vo}
|
||||
<option value="{$vo.code|default=''}" {if !empty($res.province_id) and $res.province_id eq $vo.code}selected{/if}>{$vo.title|default=''}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">批次名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="batchName" class="layui-input" lay-verify="required" value="{$res.batchName|default=''}" placeholder="批次名称">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">批次序列</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="batch" class="layui-input" lay-verify="required" value="{$res.batch|default=''}" placeholder="批次序列">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">年份</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="year" class="layui-input" lay-verify="required" value="{$res.year|default=''}" placeholder="请输入年份如2020">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">高考总分</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="GaoKaoTotal" class="layui-input" lay-verify="required" value="{$res.GaoKaoTotal|default=''}" placeholder="请输入高考总分">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">文科分数线</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="ArtsScore" class="layui-input" lay-verify="required" value="{$res.ArtsScore|default=''}" placeholder="文科分数线">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">理科分数线</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="SciencesScore" class="layui-input" lay-verify="required" value="{$res.SciencesScore|default=''}" placeholder="理科分数线">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{if !empty($res)}
|
||||
<input type="hidden" class="id" id="id" value="{$res.id|default=''}">
|
||||
{/if}
|
||||
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn layui-btn-sm" id="submitBtn">提交</button>
|
||||
<button class="layui-btn layui-btn-sm layui-btn-primary" data-close="closeOpen">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script type="text/javascript" src="/static/plugs/tag-it/js/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="__STATIC__/plugs/tag-it/js/tag-it.js" charset="utf-8"></script>
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 添加、编辑
|
||||
*/
|
||||
$("#submitBtn").on("click", function () {
|
||||
var url = '{if empty($res)}{:url("$thisClass/add")}{else/}{:url("$thisClass/edit")}{/if}';
|
||||
var data = {
|
||||
id: $("#id").val(),
|
||||
province_id: $("#province_id").val(),
|
||||
province_title: $("#province_id option:selected").text(),
|
||||
batch: $("#batch").val(),
|
||||
year: $("#year").val(),
|
||||
batchName: $("#batchName").val(),
|
||||
GaoKaoTotal: $("#GaoKaoTotal").val(),
|
||||
ArtsScore: $("#ArtsScore").val(),
|
||||
SciencesScore: $("#SciencesScore").val()
|
||||
};
|
||||
$.request.post(url, data, function (res) {
|
||||
$.msg.success(res.msg, function () {
|
||||
$.tool.reload('open');
|
||||
})
|
||||
})
|
||||
return false;
|
||||
});
|
||||
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1,97 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<form class="layui-form">
|
||||
|
||||
<!--顶部操作栏--开始-->
|
||||
<blockquote id="searchBlock" class="layui-elem-quote quoteBox">
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">省份</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="province_id" lay-verify="required" lay-search id="province_id">
|
||||
<option value="0">直接选择或搜索选择</option>
|
||||
{volist name="resProvince" id="vo"}
|
||||
<option value="{$vo.code}">{$vo.title}</option>
|
||||
{/volist}
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn" data-search="currentTableId">搜索</a>
|
||||
</div>
|
||||
{if auth("$thisClass/add")}
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn layui-btn-normal" data-open='{:url("$thisClass/add")}' data-title="添加" data-width="500px" data-height="500px">添加</a>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
</blockquote>
|
||||
<!--顶部操作栏--结束-->
|
||||
|
||||
<!--主表单渲染--开始-->
|
||||
<table id="currentTable" lay-filter="currentTable"></table>
|
||||
<!--主表单渲染--结束-->
|
||||
|
||||
|
||||
|
||||
<!--表单操作栏--开始-->
|
||||
<script type="text/html" id="currentTableBar">
|
||||
|
||||
{if auth("$thisClass/edit")}
|
||||
<a class="layui-btn layui-btn-xs" data-open='{:url("$thisClass/edit")}?id={{d.id}}' data-title="修改分类信息" data-width="500px" data-height="500px">编辑</a>
|
||||
{/if}
|
||||
|
||||
{if auth("$thisClass/del")}
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-title="确定删除?" data-del='{:url("$thisClass/del")}?id={{d.id}}'>删除</a>
|
||||
{/if}
|
||||
|
||||
</script>
|
||||
<!--表单操作栏--结束-->
|
||||
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 生成表单
|
||||
*/
|
||||
$.form.table('current', '{:url("$thisRequest")}?type=ajax', [[
|
||||
{type: "checkbox", width: 50, fixed: "left"},
|
||||
{field: 'province_title', title: '省份', width: 100, align: "center"},
|
||||
{field: 'batchName', title: '批次', minWidth: 100, align: 'center'},
|
||||
{field: 'GaoKaoTotal', title: '高考总分', minWidth: 100, align: 'center'},
|
||||
{field: 'ArtsScore', title: '文科分数线', align: 'center', minWidth: 150},
|
||||
{field: 'SciencesScore', title: '理科分数线', align: 'center', minWidth: 150},
|
||||
/**{if auth("$thisClass/edit") || auth("$thisClass/del")}**/
|
||||
{title: '操作', minWidth: 100, templet: '#currentTableBar', fixed: "right", align: "center"}
|
||||
/**{/if}**/
|
||||
]]);
|
||||
|
||||
/**
|
||||
* 日期范围
|
||||
*/
|
||||
$.laydate.range('create_time');
|
||||
|
||||
/**
|
||||
* 监听字段值编辑
|
||||
*/
|
||||
$.form.editField('currentTable', '{:url("$thisRequest")}');
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
*/
|
||||
$.form.switch('modifyStatus', '{:url("$thisClass/status")}');
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1 @@
|
||||
7ea1ae97-7216-43e8-929c-40c53b51ddc4
|
||||
@@ -0,0 +1,127 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
|
||||
<form class="layui-form">
|
||||
|
||||
|
||||
<table id="currentTable" lay-filter="currentTable"></table>
|
||||
<script type="text/html" id="returnStatus">
|
||||
{{#if(d.return_status == 1){}}
|
||||
<div id="returnStatus{{d.id}}">未退款</div>
|
||||
{{#}else if(d.return_status == 2){}}
|
||||
<div id="returnStatus{{d.id}}">待退款</div>
|
||||
{{#}else if(d.return_status == 3){}}
|
||||
<div id="returnStatus{{d.id}}">部分退款</div>
|
||||
{{#}else{}}
|
||||
<div id="returnStatus{{d.id}}">已退款</div>
|
||||
{{#}}}
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="payWay">
|
||||
{{#if(d.pay_way == 1){}}
|
||||
<div>微信</div>
|
||||
{{#}else{}}
|
||||
<div >支付宝</div>
|
||||
{{#}}}
|
||||
</script>
|
||||
<!--表单操作栏--开始-->
|
||||
<script type="text/html" id="currentTableBar">
|
||||
|
||||
{{#if(d.status == 1){}}
|
||||
{{#if(d.pay_way == 1){}}
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-title="确定退款?" onclick="returnOrder('{{d.id}}','{{d.pay_way}}')" id="clickStatus{{d.id}}">微信退款</a>
|
||||
{{#}else{}}
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-title="确定退款?" onclick="returnOrder('{{d.id}}','{{d.pay_way}}')" id="clickStatus{{d.id}}">支付宝退款</a>
|
||||
{{#}}}
|
||||
{{#}}}
|
||||
|
||||
</script>
|
||||
<script type="text/html" id="checkStatus">
|
||||
{{#if(d.status == 1){}}
|
||||
<div id="status{{d.id}}" style="color:green">已支付</div>
|
||||
{{#}else if(d.status == 2){}}
|
||||
<div id="status{{d.id}}" style="color:red">已退款</div>
|
||||
{{#}else{}}
|
||||
<div id="status{{d.id}}">待支付</div>
|
||||
{{#}}}
|
||||
</script>
|
||||
</form>
|
||||
{/block}
|
||||
{block name="script"}
|
||||
<script>
|
||||
|
||||
|
||||
var screenWith = localStorage.getItem("fdith") / 8 - 3;
|
||||
|
||||
/**
|
||||
* 生成表单
|
||||
*/
|
||||
$.form.table('current', '{:url("$thisRequest")}?type=ajax&user_id={$user_id}', [[
|
||||
|
||||
{field: 'ord_no', title: '订单号', width: screenWith,fixed: "left", align: "center"},
|
||||
{field: 'userInfo', title: '考生信息', width:screenWith, align: "center"},
|
||||
{field: 'vipName', title: '权限类型',width:screenWith,align: "center"},
|
||||
{field: 'money', title: '价格', width:screenWith, align: "center"},
|
||||
{field: 'pay_way', title: '支付方式',width:screenWith, align: "center",templet: '#payWay'},
|
||||
{field: 'status', title: '状态',templet: '#checkStatus',width:screenWith, align: "center"},
|
||||
{field: 'add_time', title: '下单时间',width:screenWith, align: "center"},
|
||||
{field: 'pay_time', title: '支付时间', width:screenWith,align: "center"},
|
||||
{title: '操作', templet: '#currentTableBar',width:screenWith, fixed: "right", align: "center"},
|
||||
|
||||
|
||||
]], false, 'line', 'lg', true);
|
||||
/**
|
||||
* 监听字段值编辑
|
||||
*/
|
||||
$.form.editField('currentTable', '{:url("$thisRequest")}');
|
||||
|
||||
|
||||
//退款
|
||||
function returnOrder(id,payWay) {
|
||||
layer.open({
|
||||
type: 1,
|
||||
skin: 'layui-layer-rim', //加上边框
|
||||
title: '退款',
|
||||
area: ['300px', '180px'], //宽高
|
||||
content: '<div class="layui-form-item layui-inline" div style="padding:10px 40px">\n' +
|
||||
'<div class="layui-input-inline">\n' +
|
||||
'<input type="text" class="layui-input selectBlock" value="网络原因" />\n' +
|
||||
'</div>\n' +
|
||||
'</div> <div style="padding:5px 60px"><a class="layui-btn layui-btn-normal" id="statusDiv'+id+'">点击退款</a></div>',
|
||||
success: function(layero, index){
|
||||
$('#statusDiv'+id).click(function(){
|
||||
var reason = layero.find('input')[0].value;
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '{:url("$thisClass/refundOrder")}',
|
||||
data: "id=" + id + '&reason='+reason+'&payWay='+payWay,
|
||||
success: function (data) {
|
||||
if (data.code == 0) {
|
||||
layer.alert(data.msg);
|
||||
} else if (data.code == 1) {
|
||||
layer.alert(data.msg);
|
||||
$("#status" + id).html('<span style="color:red">已退款</span>');
|
||||
layer.close(index);
|
||||
$(".layui-btn#clickStatus" + id).css("display", "none");
|
||||
} else {
|
||||
layer.closeAll();
|
||||
layer.alert('退款失败');
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1,107 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<form class="layui-form">
|
||||
|
||||
<!--顶部操作栏--开始-->
|
||||
<blockquote id="searchBlock" class="layui-elem-quote quoteBox">
|
||||
|
||||
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">手机号码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="phone" class="layui-input" placeholder="请输入手机号"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">考生所在省份</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="province" lay-verify="required" lay-search id="province">
|
||||
<option value="0">直接选择或搜索选择</option>
|
||||
{volist name="resProvince" id="vo"}
|
||||
<option value="{$key}">{$vo.title}</option>
|
||||
{/volist}
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">创建时间</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="add_time" class="layui-input " placeholder="请选择创建时间">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn" data-search="currentTableId">搜索</a>
|
||||
</div>
|
||||
|
||||
|
||||
</blockquote>
|
||||
<!--顶部操作栏--结束-->
|
||||
|
||||
<!--主表单渲染--开始-->
|
||||
<table id="currentTable" lay-filter="currentTable"></table>
|
||||
<!--主表单渲染--结束-->
|
||||
|
||||
<!--表单模板绑定--开始-->
|
||||
<script type="text/html" id="bindHeadImg">
|
||||
<img style="width: 30px; height: 30px;" src="{{d.head_img}}" layer-src="{{d.head_img}}" alt="{{d.nickname}}" data-image="open" lay-filter="modifyHeadImg">
|
||||
</script>
|
||||
|
||||
<!--表单模板绑定--结束-->
|
||||
|
||||
<!--表单操作栏--开始-->
|
||||
<script type="text/html" id="currentTableBar">
|
||||
|
||||
{if auth("$thisClass/details")}
|
||||
<a class="layui-btn layui-btn-xs layui-btn-sm" data-open='{:url("$thisClass/details")}?id={{d.id}}' style="background: #0d8ddb" data-title="订单详情" >查看订单</a>
|
||||
{/if}
|
||||
|
||||
</script>
|
||||
<!--表单操作栏--结束-->
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 生成表单
|
||||
*/
|
||||
$.form.table('current', '{:url("$thisRequest")}?type=ajax', [[
|
||||
{type: "checkbox", fixed: "left", width: 50},
|
||||
{field: 'phone', title: '用户手机', align: 'center'},
|
||||
{field: 'userInfo', title: '考生信息', align: 'center'},
|
||||
{field: 'add_time', title: '创建时间', align: 'center', minWidth: 150},
|
||||
/**{if auth("$thisClass/edit_password") || auth("$thisClass/edit") || auth("$thisClass/del")}**/
|
||||
{title: '操作', minWidth: 110, templet: '#currentTableBar', fixed: "right", align: "center"},
|
||||
/**{/if}**/
|
||||
]]);
|
||||
|
||||
/**
|
||||
* 日期范围
|
||||
*/
|
||||
$.laydate.range('add_time');
|
||||
|
||||
/**
|
||||
* 监听字段值编辑
|
||||
*/
|
||||
$.form.editField('currentTable', '{:url("$thisRequest")}');
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
*/
|
||||
$.form.switch('modifyStatus', '{:url("$thisClass/status")}');
|
||||
|
||||
setTimeout(()=> {
|
||||
localStorage.setItem("fdith", document.body.clientWidth)
|
||||
},300)
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1 @@
|
||||
9d762c35-05b2-4218-a300-4a5945fda3fa
|
||||
778
芳林公司项目/www.zhiyuanhelp.com/application/admin/view/icon/fa.html
Normal file
778
芳林公司项目/www.zhiyuanhelp.com/application/admin/view/icon/fa.html
Normal file
@@ -0,0 +1,778 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
<style>
|
||||
h4{ font-size:18px;font-family:"Microsoft YaHei","Simsun",Arial; font-weight:normal; line-height:1; padding:0; margin:0;}
|
||||
.section{ padding:20px;}
|
||||
.section h4 span{ color:#0084e9;}
|
||||
.fa {font-size: 25px !important;}
|
||||
.fa:hover {font-size: 50px !important;}
|
||||
</style>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<div class="section" id="all">
|
||||
<h4><span>全部图标</span> Web Application Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-adjust"></i><span>fa-adjust</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-anchor"></i><span>fa-anchor</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-archive"></i><span>fa-archive</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-area-chart"></i><span>fa-area-chart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrows"></i><span>fa-arrows</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrows-h"></i><span>fa-arrows-h</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrows-v"></i><span>fa-arrows-v</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-asterisk"></i><span>fa-asterisk</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-at"></i><span>fa-at</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-automobile"></i><span>fa-automobile</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-ban"></i><span>fa-ban</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bank"></i><span>fa-bank</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bar-chart"></i><span>fa-bar-chart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bar-chart-o"></i><span>fa-bar-chart-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-barcode"></i><span>fa-barcode</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bars"></i><span>fa-bars</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bed"></i><span>fa-bed</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-beer"></i><span>fa-beer</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bell"></i><span>fa-bell</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bell-o"></i><span>fa-bell-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bell-slash"></i><span>fa-bell-slash</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bell-slash-o"></i><span>fa-bell-slash-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bicycle"></i><span>fa-bicycle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-binoculars"></i><span>fa-binoculars</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-birthday-cake"></i><span>fa-birthday-cake</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bolt"></i><span>fa-bolt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bomb"></i><span>fa-bomb</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-book"></i><span>fa-book</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bookmark"></i><span>fa-bookmark</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bookmark-o"></i><span>fa-bookmark-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-briefcase"></i><span>fa-briefcase</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bug"></i><span>fa-bug</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-building"></i><span>fa-building</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-building-o"></i><span>fa-building-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bullhorn"></i><span>fa-bullhorn</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bullseye"></i><span>fa-bullseye</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bus"></i><span>fa-bus</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cab"></i><span>fa-cab</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-calculator"></i><span>fa-calculator</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-calendar"></i><span>fa-calendar</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-calendar-o"></i><span>fa-calendar-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-camera"></i><span>fa-camera</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-camera-retro"></i><span>fa-camera-retro</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-car"></i><span>fa-car</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-square-o-down"></i><span>fa-caret-square-o-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-square-o-left"></i><span>fa-caret-square-o-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-square-o-right"></i><span>fa-caret-square-o-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-square-o-up"></i><span>fa-caret-square-o-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cart-arrow-down"></i><span>fa-cart-arrow-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cart-plus"></i><span>fa-cart-plus</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc"></i><span>fa-cc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-certificate"></i><span>fa-certificate</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-check"></i><span>fa-check</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-check-circle"></i><span>fa-check-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-check-circle-o"></i><span>fa-check-circle-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-check-square"></i><span>fa-check-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-check-square-o"></i><span>fa-check-square-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-child"></i><span>fa-child</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-circle"></i><span>fa-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-circle-o"></i><span>fa-circle-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-circle-o-notch"></i><span>fa-circle-o-notch</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-circle-thin"></i><span>fa-circle-thin</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-clock-o"></i><span>fa-clock-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-close"></i><span>fa-close</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cloud"></i><span>fa-cloud</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cloud-download"></i><span>fa-cloud-download</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cloud-upload"></i><span>fa-cloud-upload</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-code"></i><span>fa-code</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-code-fork"></i><span>fa-code-fork</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-coffee"></i><span>fa-coffee</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cog"></i><span>fa-cog</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cogs"></i><span>fa-cogs</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-comment"></i><span>fa-comment</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-comment-o"></i><span>fa-comment-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-comments"></i><span>fa-comments</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-comments-o"></i><span>fa-comments-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-compass"></i><span>fa-compass</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-copyright"></i><span>fa-copyright</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-credit-card"></i><span>fa-credit-card</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-crop"></i><span>fa-crop</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-crosshairs"></i><span>fa-crosshairs</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cube"></i><span>fa-cube</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cubes"></i><span>fa-cubes</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cutlery"></i><span>fa-cutlery</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-dashboard"></i><span>fa-dashboard</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-database"></i><span>fa-database</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-desktop"></i><span>fa-desktop</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-diamond"></i><span>fa-diamond</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-dot-circle-o"></i><span>fa-dot-circle-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-download"></i><span>fa-download</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-edit"></i><span>fa-edit</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-ellipsis-h"></i><span>fa-ellipsis-h</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-ellipsis-v"></i><span>fa-ellipsis-v</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-envelope"></i><span>fa-envelope</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-envelope-o"></i><span>fa-envelope-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-envelope-square"></i><span>fa-envelope-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-eraser"></i><span>fa-eraser</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-exchange"></i><span>fa-exchange</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-exclamation"></i><span>fa-exclamation</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-exclamation-circle"></i><span>fa-exclamation-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-exclamation-triangle"></i><span>fa-exclamation-triangle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-external-link"></i><span>fa-external-link</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-external-link-square"></i><span>fa-external-link-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-eye"></i><span>fa-eye</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-eye-slash"></i><span>fa-eye-slash</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-eyedropper"></i><span>fa-eyedropper</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-fax"></i><span>fa-fax</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-female"></i><span>fa-female</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-fighter-jet"></i><span>fa-fighter-jet</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-archive-o"></i><span>fa-file-archive-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-audio-o"></i><span>fa-file-audio-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-code-o"></i><span>fa-file-code-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-excel-o"></i><span>fa-file-excel-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-image-o"></i><span>fa-file-image-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-movie-o"></i><span>fa-file-movie-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-pdf-o"></i><span>fa-file-pdf-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-photo-o"></i><span>fa-file-photo-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-picture-o"></i><span>fa-file-picture-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-powerpoint-o"></i><span>fa-file-powerpoint-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-sound-o"></i><span>fa-file-sound-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-video-o"></i><span>fa-file-video-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-word-o"></i><span>fa-file-word-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-zip-o"></i><span>fa-file-zip-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-film"></i><span>fa-film</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-filter"></i><span>fa-filter</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-fire"></i><span>fa-fire</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-fire-extinguisher"></i><span>fa-fire-extinguisher</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-flag"></i><span>fa-flag</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-flag-checkered"></i><span>fa-flag-checkered</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-flag-o"></i><span>fa-flag-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-flash"></i><span>fa-flash</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-flask"></i><span>fa-flask</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-folder"></i><span>fa-folder</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-folder-o"></i><span>fa-folder-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-folder-open"></i><span>fa-folder-open</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-folder-open-o"></i><span>fa-folder-open-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-frown-o"></i><span>fa-frown-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-futbol-o"></i><span>fa-futbol-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-gamepad"></i><span>fa-gamepad</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-gavel"></i><span>fa-gavel</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-gear"></i><span>fa-gear</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-gears"></i><span>fa-gears</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-genderless"></i><span>fa-genderless</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-gift"></i><span>fa-gift</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-glass"></i><span>fa-glass</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-globe"></i><span>fa-globe</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-graduation-cap"></i><span>fa-graduation-cap</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-group"></i><span>fa-group</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-hdd-o"></i><span>fa-hdd-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-headphones"></i><span>fa-headphones</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-heart"></i><span>fa-heart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-heart-o"></i><span>fa-heart-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-heartbeat"></i><span>fa-heartbeat</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-history"></i><span>fa-history</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-home"></i><span>fa-home</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-hotel"></i><span>fa-hotel</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-image"></i><span>fa-image</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-inbox"></i><span>fa-inbox</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-info"></i><span>fa-info</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-info-circle"></i><span>fa-info-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-institution"></i><span>fa-institution</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-key"></i><span>fa-key</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-keyboard-o"></i><span>fa-keyboard-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-language"></i><span>fa-language</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-laptop"></i><span>fa-laptop</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-leaf"></i><span>fa-leaf</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-legal"></i><span>fa-legal</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-lemon-o"></i><span>fa-lemon-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-level-down"></i><span>fa-level-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-level-up"></i><span>fa-level-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-life-bouy"></i><span>fa-life-bouy</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-life-buoy"></i><span>fa-life-buoy</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-life-ring"></i><span>fa-life-ring</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-life-saver"></i><span>fa-life-saver</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-lightbulb-o"></i><span>fa-lightbulb-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-line-chart"></i><span>fa-line-chart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-location-arrow"></i><span>fa-location-arrow</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-lock"></i><span>fa-lock</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-magic"></i><span>fa-magic</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-magnet"></i><span>fa-magnet</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mail-forward"></i><span>fa-mail-forward</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mail-reply"></i><span>fa-mail-reply</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mail-reply-all"></i><span>fa-mail-reply-all</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-male"></i><span>fa-male</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-map-marker"></i><span>fa-map-marker</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-meh-o"></i><span>fa-meh-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-microphone"></i><span>fa-microphone</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-microphone-slash"></i><span>fa-microphone-slash</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-minus"></i><span>fa-minus</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-minus-circle"></i><span>fa-minus-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-minus-square"></i><span>fa-minus-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-minus-square-o"></i><span>fa-minus-square-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mobile"></i><span>fa-mobile</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mobile-phone"></i><span>fa-mobile-phone</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-money"></i><span>fa-money</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-moon-o"></i><span>fa-moon-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mortar-board"></i><span>fa-mortar-board</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-motorcycle"></i><span>fa-motorcycle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-music"></i><span>fa-music</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-navicon"></i><span>fa-navicon</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-newspaper-o"></i><span>fa-newspaper-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-paint-brush"></i><span>fa-paint-brush</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-paper-plane"></i><span>fa-paper-plane</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-paper-plane-o"></i><span>fa-paper-plane-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-paw"></i><span>fa-paw</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pencil"></i><span>fa-pencil</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pencil-square"></i><span>fa-pencil-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pencil-square-o"></i><span>fa-pencil-square-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-phone"></i><span>fa-phone</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-phone-square"></i><span>fa-phone-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-photo"></i><span>fa-photo</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-picture-o"></i><span>fa-picture-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pie-chart"></i><span>fa-pie-chart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-plane"></i><span>fa-plane</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-plug"></i><span>fa-plug</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-plus"></i><span>fa-plus</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-plus-circle"></i><span>fa-plus-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-plus-square"></i><span>fa-plus-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-plus-square-o"></i><span>fa-plus-square-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-power-off"></i><span>fa-power-off</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-print"></i><span>fa-print</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-puzzle-piece"></i><span>fa-puzzle-piece</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-qrcode"></i><span>fa-qrcode</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-question"></i><span>fa-question</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-question-circle"></i><span>fa-question-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-quote-left"></i><span>fa-quote-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-quote-right"></i><span>fa-quote-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-random"></i><span>fa-random</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-recycle"></i><span>fa-recycle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-refresh"></i><span>fa-refresh</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-remove"></i><span>fa-remove</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-reorder"></i><span>fa-reorder</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-reply"></i><span>fa-reply</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-reply-all"></i><span>fa-reply-all</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-retweet"></i><span>fa-retweet</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-road"></i><span>fa-road</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-rocket"></i><span>fa-rocket</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-rss"></i><span>fa-rss</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-rss-square"></i><span>fa-rss-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-search"></i><span>fa-search</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-search-minus"></i><span>fa-search-minus</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-search-plus"></i><span>fa-search-plus</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-send"></i><span>fa-send</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-send-o"></i><span>fa-send-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-server"></i><span>fa-server</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-share"></i><span>fa-share</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-share-alt"></i><span>fa-share-alt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-share-alt-square"></i><span>fa-share-alt-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-share-square"></i><span>fa-share-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-share-square-o"></i><span>fa-share-square-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-shield"></i><span>fa-shield</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-ship"></i><span>fa-ship</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-shopping-cart"></i><span>fa-shopping-cart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sign-in"></i><span>fa-sign-in</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sign-out"></i><span>fa-sign-out</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-signal"></i><span>fa-signal</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sitemap"></i><span>fa-sitemap</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sliders"></i><span>fa-sliders</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-smile-o"></i><span>fa-smile-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-soccer-ball-o"></i><span>fa-soccer-ball-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort"></i><span>fa-sort</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort-alpha-asc"></i><span>fa-sort-alpha-asc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort-alpha-desc"></i><span>fa-sort-alpha-desc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort-amount-asc"></i><span>fa-sort-amount-asc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort-amount-desc"></i><span>fa-sort-amount-desc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort-asc"></i><span>fa-sort-asc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort-desc"></i><span>fa-sort-desc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort-down"></i><span>fa-sort-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort-numeric-asc"></i><span>fa-sort-numeric-asc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort-numeric-desc"></i><span>fa-sort-numeric-desc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sort-up"></i><span>fa-sort-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-space-shuttle"></i><span>fa-space-shuttle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-spinner"></i><span>fa-spinner</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-spoon"></i><span>fa-spoon</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-square"></i><span>fa-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-square-o"></i><span>fa-square-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-star"></i><span>fa-star</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-star-half"></i><span>fa-star-half</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-star-half-empty"></i><span>fa-star-half-empty</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-star-half-full"></i><span>fa-star-half-full</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-star-half-o"></i><span>fa-star-half-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-star-o"></i><span>fa-star-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-street-view"></i><span>fa-street-view</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-suitcase"></i><span>fa-suitcase</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sun-o"></i><span>fa-sun-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-support"></i><span>fa-support</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tablet"></i><span>fa-tablet</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tachometer"></i><span>fa-tachometer</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tag"></i><span>fa-tag</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tags"></i><span>fa-tags</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tasks"></i><span>fa-tasks</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-taxi"></i><span>fa-taxi</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-terminal"></i><span>fa-terminal</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-thumb-tack"></i><span>fa-thumb-tack</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-thumbs-down"></i><span>fa-thumbs-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-thumbs-o-down"></i><span>fa-thumbs-o-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-thumbs-o-up"></i><span>fa-thumbs-o-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-thumbs-up"></i><span>fa-thumbs-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-ticket"></i><span>fa-ticket</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-times"></i><span>fa-times</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-times-circle"></i><span>fa-times-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-times-circle-o"></i><span>fa-times-circle-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tint"></i><span>fa-tint</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-toggle-down"></i><span>fa-toggle-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-toggle-left"></i><span>fa-toggle-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-toggle-off"></i><span>fa-toggle-off</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-toggle-on"></i><span>fa-toggle-on</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-toggle-right"></i><span>fa-toggle-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-toggle-up"></i><span>fa-toggle-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-trash"></i><span>fa-trash</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-trash-o"></i><span>fa-trash-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tree"></i><span>fa-tree</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-trophy"></i><span>fa-trophy</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-truck"></i><span>fa-truck</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tty"></i><span>fa-tty</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-umbrella"></i><span>fa-umbrella</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-university"></i><span>fa-university</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-unlock"></i><span>fa-unlock</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-unlock-alt"></i><span>fa-unlock-alt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-unsorted"></i><span>fa-unsorted</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-upload"></i><span>fa-upload</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-user"></i><span>fa-user</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-user-plus"></i><span>fa-user-plus</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-user-secret"></i><span>fa-user-secret</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-user-times"></i><span>fa-user-times</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-users"></i><span>fa-users</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-video-camera"></i><span>fa-video-camera</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-volume-down"></i><span>fa-volume-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-volume-off"></i><span>fa-volume-off</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-volume-up"></i><span>fa-volume-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-warning"></i><span>fa-warning</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-wheelchair"></i><span>fa-wheelchair</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-wifi"></i><span>fa-wifi</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-wrench"></i><span>fa-wrench</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="transportation">
|
||||
<h4><span>运输工具</span> Transportation Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-ambulance"></i><span>fa-ambulance</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-car"></i><span>fa-car</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bicycle"></i><span>fa-bicycle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bus"></i><span>fa-bus</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-taxi"></i><span>fa-taxi</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-fighter-jet"></i><span>fa-fighter-jet</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-motorcycle"></i><span>fa-motorcycle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-plane"></i><span>fa-plane</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-rocket"></i><span>fa-rocket</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-ship"></i><span>fa-ship</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-space-shuttle"></i><span>fa-space-shuttle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-subway"></i><span>fa-subway</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-train"></i><span>fa-train</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-truck"></i><span>fa-truck</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-wheelchair"></i><span>fa-wheelchair</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="gender">
|
||||
<h4><span>性别</span> Gender Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-circle-thin"></i><span>fa-circle-thin</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mars"></i><span>fa-mars</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mars-double"></i><span>fa-mars-double</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mars-stroke"></i><span>fa-mars-stroke</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mars-stroke-h"></i><span>fa-mars-stroke-h</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mars-stroke-v"></i><span>fa-mars-stroke-v</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-mercury"></i><span>fa-mercury</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-neuter"></i><span>fa-neuter</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-transgender"></i><span>fa-transgender</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-transgender-alt"></i><span>fa-transgender-alt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-venus"></i><span>fa-venus</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-venus-double"></i><span>fa-venus-double</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-venus-mars"></i><span>fa-venus-mars</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="file">
|
||||
<h4><span>文件类型</span> File Type Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file"></i><span>fa-file</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-archive-o"></i><span>fa-file-archive-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-audio-o"></i><span>fa-file-audio-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-code-o"></i><span>fa-file-code-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-excel-o"></i><span>fa-file-excel-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-image-o"></i><span>fa-file-image-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-video-o"></i><span>fa-file-video-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-o"></i><span>fa-file-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-pdf-o"></i><span>fa-file-pdf-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-powerpoint-o"></i><span>fa-file-powerpoint-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-text"></i><span>fa-file-text</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-text-o"></i><span>fa-file-text-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-word-o"></i><span>fa-file-word-o</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="spinner">
|
||||
<h4><span>旋转加载</span> Spinner Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cog"></i><span>fa-cog</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-circle-o-notch"></i><span>fa-circle-o-notch</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-refresh"></i><span>fa-refresh</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-spinner"></i><span>fa-spinner</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="form">
|
||||
<h4><span>表单控件</span> Form Control Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-check-square"></i><span>fa-check-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-check-square-o"></i><span>fa-check-square-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-circle"></i><span>fa-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-circle-o"></i><span>fa-circle-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-dot-circle-o"></i><span>fa-dot-circle-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-minus-square"></i><span>fa-minus-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-minus-square-o"></i><span>fa-minus-square-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-plus-square"></i><span>fa-plus-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-plus-square-o"></i><span>fa-plus-square-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-square"></i><span>fa-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-square-o"></i><span>fa-square-o</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="payment">
|
||||
<h4><span>支付方式</span> Payment Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-amex"></i><span>fa-cc-amex</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-discover"></i><span>fa-cc-discover</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-mastercard"></i><span>fa-cc-mastercard</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-paypal"></i><span>fa-cc-paypal</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-stripe"></i><span>fa-cc-stripe</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-visa"></i><span>fa-cc-visa</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-credit-card"></i><span>fa-credit-card</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-google-wallet"></i><span>fa-google-wallet</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-paypal"></i><span>fa-paypal</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="chart">
|
||||
<h4><span>统计</span> Chart Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-area-chart"></i><span>fa-area-chart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bar-chart"></i><span>fa-bar-chart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-line-chart"></i><span>fa-line-chart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pie-chart"></i><span>fa-pie-chart</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="currency">
|
||||
<h4><span>货币</span> Currency Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-btc"></i><span>fa-btc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-jpy"></i><span>fa-jpy</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-usd"></i><span>fa-usd</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-eur"></i><span>fa-eur</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-gbp"></i><span>fa-gbp</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-ils"></i><span>fa-ils</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-inr"></i><span>fa-inr</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-krw"></i><span>fa-krw</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-money"></i><span>fa-money</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-rub"></i><span>fa-rub</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-try"></i><span>fa-try</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="text">
|
||||
<h4><span>文本编辑</span> Text Editor Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-align-center"></i><span>fa-align-center</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-align-justify"></i><span>fa-align-justify</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-align-left"></i><span>fa-align-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-align-right"></i><span>fa-align-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bold"></i><span>fa-bold</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-font"></i><span>fa-font</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-italic"></i><span>fa-italic</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-header"></i><span>fa-header</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-underline"></i><span>fa-underline</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-text-width"></i><span>fa-text-width</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-text-height"></i><span>fa-text-height</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-strikethrough"></i><span>fa-strikethrough</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-subscript"></i><span>fa-subscript</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-superscript"></i><span>fa-superscript</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-link"></i><span>fa-link</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-chain-broken"></i><span>fa-chain-broken</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-clipboard"></i><span>fa-clipboard</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-files-o"></i><span>fa-files-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-scissors"></i><span>fa-scissors</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-columns"></i><span>fa-columns</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-eraser"></i><span>fa-eraser</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file"></i><span>fa-file</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-o"></i><span>fa-file-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-text"></i><span>fa-file-text</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-file-text-o"></i><span>fa-file-text-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-floppy-o"></i><span>fa-floppy-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-repeat"></i><span>fa-repeat</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-undo"></i><span>fa-undo</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-outdent"></i><span>fa-outdent</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-indent"></i><span>fa-indent</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-list"></i><span>fa-list</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-list-alt"></i><span>fa-list-alt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-list-ol"></i><span>fa-list-ol</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-list-ul"></i><span>fa-list-ul</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-paperclip"></i><span>fa-paperclip</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-paragraph"></i><span>fa-paragraph</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-table"></i><span>fa-table</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-th"></i><span>fa-th</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-th-large"></i><span>fa-th-large</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-th-list"></i><span>fa-th-list</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="directional">
|
||||
<h4><span>方向性</span> Directional Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-angle-double-down"></i><span>fa-angle-double-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-angle-double-left"></i><span>fa-angle-double-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-angle-double-right"></i><span>fa-angle-double-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-angle-double-up"></i><span>fa-angle-double-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-angle-down"></i><span>fa-angle-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-angle-left"></i><span>fa-angle-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-angle-right"></i><span>fa-angle-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-angle-up"></i><span>fa-angle-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-circle-down"></i><span>fa-arrow-circle-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-circle-left"></i><span>fa-arrow-circle-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-circle-right"></i><span>fa-arrow-circle-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-circle-up"></i><span>fa-arrow-circle-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-circle-o-down"></i><span>fa-arrow-circle-o-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-circle-o-left"></i><span>fa-arrow-circle-o-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-circle-o-right"></i><span>fa-arrow-circle-o-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-circle-o-up"></i><span>fa-arrow-circle-o-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-down"></i><span>fa-arrow-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-left"></i><span>fa-arrow-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-right"></i><span>fa-arrow-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrow-up"></i><span>fa-arrow-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrows"></i><span>fa-arrows</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrows-alt"></i><span>fa-arrows-alt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrows-h"></i><span>fa-arrows-h</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrows-v"></i><span>fa-arrows-v</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-down"></i><span>fa-caret-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-left"></i><span>fa-caret-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-right"></i><span>fa-caret-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-up"></i><span>fa-caret-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-square-o-down"></i><span>fa-caret-square-o-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-square-o-left"></i><span>fa-caret-square-o-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-square-o-right"></i><span>fa-caret-square-o-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-caret-square-o-up"></i><span>fa-caret-square-o-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-chevron-circle-down"></i><span>fa-chevron-circle-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-chevron-circle-left"></i><span>fa-chevron-circle-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-chevron-circle-right"></i><span>fa-chevron-circle-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-chevron-circle-up"></i><span>fa-chevron-circle-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-chevron-down"></i><span>fa-chevron-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-chevron-left"></i><span>fa-chevron-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-chevron-right"></i><span>fa-chevron-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-chevron-up"></i><span>fa-chevron-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-hand-o-down"></i><span>fa-hand-o-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-hand-o-left"></i><span>fa-hand-o-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-hand-o-right"></i><span>fa-hand-o-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-hand-o-up"></i><span>fa-hand-o-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-long-arrow-down"></i><span>fa-long-arrow-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-long-arrow-left"></i><span>fa-long-arrow-left</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-long-arrow-right"></i><span>fa-long-arrow-right</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-long-arrow-up"></i><span>fa-long-arrow-up</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="video">
|
||||
<h4><span>播放器控件</span> Video Player Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-arrows-alt"></i><span>fa-arrows-alt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-backward"></i><span>fa-backward</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-compress"></i><span>fa-compress</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-eject"></i><span>fa-eject</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-expand"></i><span>fa-expand</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-fast-backward"></i><span>fa-fast-backward</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-fast-forward"></i><span>fa-fast-forward</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-forward"></i><span>fa-forward</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pause"></i><span>fa-pause</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-play"></i><span>fa-play</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-play-circle"></i><span>fa-play-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-play-circle-o"></i><span>fa-play-circle-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-step-backward"></i><span>fa-step-backward</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-step-forward"></i><span>fa-step-forward</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-stop"></i><span>fa-stop</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-youtube-play"></i><span>fa-youtube-play</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-volume-off"></i><span>fa-volume-off</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-volume-down"></i><span>fa-volume-down</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-volume-up"></i><span>fa-volume-up</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-random"></i><span>fa-random</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="medical">
|
||||
<h4><span>医疗</span> Medical Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-ambulance"></i><span>fa-ambulance</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-h-square"></i><span>fa-h-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-heart"></i><span>fa-heart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-heart-o"></i><span>fa-heart-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-heartbeat"></i><span>fa-heartbeat</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-hospital-o"></i><span>fa-hospital-o</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-medkit"></i><span>fa-medkit</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-plus-square"></i><span>fa-plus-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-stethoscope"></i><span>fa-stethoscope</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-user-md"></i><span>fa-user-md</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-wheelchair"></i><span>fa-wheelchair</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="brand">
|
||||
<h4><span>品牌</span> Brand Icons</h4>
|
||||
<hr>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-adn"></i><span>fa-adn</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-android"></i><span>fa-android</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-angellist"></i><span>fa-angellist</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-apple"></i><span>fa-apple</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-behance"></i><span>fa-behance</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-behance-square"></i><span>fa-behance-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bitbucket"></i><span>fa-bitbucket</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-bitbucket-square"></i><span>fa-bitbucket-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-btc"></i><span>fa-btc</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-buysellads"></i><span>fa-buysellads</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-amex"></i><span>fa-cc-amex</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-discover"></i><span>fa-cc-discover</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-mastercard"></i><span>fa-cc-mastercard</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-paypal"></i><span>fa-cc-paypal</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-stripe"></i><span>fa-cc-stripe</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-cc-visa"></i><span>fa-cc-visa</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-codepen"></i><span>fa-codepen</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-connectdevelop"></i><span>fa-connectdevelop</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-css3"></i><span>fa-css3</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-dashcube"></i><span>fa-dashcube</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-delicious"></i><span>fa-delicious</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-deviantart"></i><span>fa-deviantart</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-digg"></i><span>fa-digg</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-dribbble"></i><span>fa-dribbble</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-dropbox"></i><span>fa-dropbox</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-drupal"></i><span>fa-drupal</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-empire"></i><span>fa-empire</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-facebook"></i><span>fa-facebook</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-facebook-official"></i><span>fa-facebook-official</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-facebook-square"></i><span>fa-facebook-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-flickr"></i><span>fa-flickr</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-forumbee"></i><span>fa-forumbee</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-foursquare"></i><span>fa-foursquare</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-git"></i><span>fa-git</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-git-square"></i><span>fa-git-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-github"></i><span>fa-github</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-github-alt"></i><span>fa-github-alt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-github-square"></i><span>fa-github-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-gratipay"></i><span>fa-gratipay</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-google"></i><span>fa-google</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-google-plus"></i><span>fa-google-plus</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-google-plus-square"></i><span>fa-google-plus-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-google-wallet"></i><span>fa-google-wallet</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-hacker-news"></i><span>fa-hacker-news</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-html5"></i><span>fa-html5</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-instagram"></i><span>fa-instagram</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-ioxhost"></i><span>fa-ioxhost</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-joomla"></i><span>fa-joomla</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-jsfiddle"></i><span>fa-jsfiddle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-lastfm"></i><span>fa-lastfm</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-lastfm-square"></i><span>fa-lastfm-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-leanpub"></i><span>fa-leanpub</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-linkedin"></i><span>fa-linkedin</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-linkedin-square"></i><span>fa-linkedin-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-linux"></i><span>fa-linux</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-maxcdn"></i><span>fa-maxcdn</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-meanpath"></i><span>fa-meanpath</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-medium"></i><span>fa-medium</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-openid"></i><span>fa-openid</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pagelines"></i><span>fa-pagelines</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-paypal"></i><span>fa-paypal</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pied-piper"></i><span>fa-pied-piper</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pied-piper-alt"></i><span>fa-pied-piper-alt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pinterest"></i><span>fa-pinterest</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pinterest-p"></i><span>fa-pinterest-p</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-pinterest-square"></i><span>fa-pinterest-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-qq"></i><span>fa-qq</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-rebel"></i><span>fa-rebel</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-reddit"></i><span>fa-reddit</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-reddit-square"></i><span>fa-reddit-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-renren"></i><span>fa-renren</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-sellsy"></i><span>fa-sellsy</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-share-alt"></i><span>fa-share-alt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-share-alt-square"></i><span>fa-share-alt-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-shirtsinbulk"></i><span>fa-shirtsinbulk</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-simplybuilt"></i><span>fa-simplybuilt</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-skyatlas"></i><span>fa-skyatlas</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-skype"></i><span>fa-skype</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-slack"></i><span>fa-slack</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-slideshare"></i><span>fa-slideshare</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-soundcloud"></i><span>fa-soundcloud</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-spotify"></i><span>fa-spotify</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-stack-exchange"></i><span>fa-stack-exchange</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-stack-overflow"></i><span>fa-stack-overflow</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-steam"></i><span>fa-steam</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-steam-square"></i><span>fa-steam-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-stumbleupon"></i><span>fa-stumbleupon</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-stumbleupon-circle"></i><span>fa-stumbleupon-circle</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tencent-weibo"></i><span>fa-tencent-weibo</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-trello"></i><span>fa-trello</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tumblr"></i><span>fa-tumblr</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-tumblr-square"></i><span>fa-tumblr-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-twitch"></i><span>fa-twitch</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-twitter"></i><span>fa-twitter</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-twitter-square"></i><span>fa-twitter-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-viacoin"></i><span>fa-viacoin</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-vimeo-square"></i><span>fa-vimeo-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-vine"></i><span>fa-vine</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-vk"></i><span>fa-vk</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-weixin"></i><span>fa-weixin</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-weibo"></i><span>fa-weibo</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-whatsapp"></i><span>fa-whatsapp</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-windows"></i><span>fa-windows</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-wordpress"></i><span>fa-wordpress</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-xing"></i><span>fa-xing</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-xing-square"></i><span>fa-xing-square</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-yahoo"></i><span>fa-yahoo</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-yelp"></i><span>fa-yelp</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-youtube"></i><span>fa-youtube</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-youtube-play"></i><span>fa-youtube-play</span></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="fa fa-youtube-square"></i><span>fa-youtube-square</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
layui.use(['form', 'layer', 'jquery'], function () {
|
||||
var form = layui.form,
|
||||
layer = parent.layer === undefined ? layui.layer : top.layer,
|
||||
element = layui.element;
|
||||
$ = layui.jquery;
|
||||
|
||||
/**
|
||||
* 复制图标编码至粘贴板
|
||||
*/
|
||||
$("body").on("click", ".icons li", function () {
|
||||
console.log('复制');
|
||||
console.log($(this).text());
|
||||
window.sessionStorage.setItem("icon", $(this).text());
|
||||
var selectIcon = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(selectIcon);
|
||||
})
|
||||
})
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1,180 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
<style>
|
||||
.layui-icon {font-size: 25px !important;}
|
||||
.layui-icon:hover {font-size: 50px !important;}
|
||||
</style>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<textarea id="copyText"></textarea>
|
||||
<ul class="icons layui-row">
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-rate-half"></i><div class="doc-icon-code" >&#xe6c9;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-rate"></i><div class="doc-icon-code">&#xe67b;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-rate-solid"></i><div class="doc-icon-code">&#xe67a;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-cellphone"></i><div class="doc-icon-code">&#xe678;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-vercode"></i><div class="doc-icon-code">&#xe679;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-login-wechat"></i><div class="doc-icon-code">&#xe677;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-login-qq"></i><div class="doc-icon-code">&#xe676;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-login-weibo"></i><div class="doc-icon-code">&#xe675;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-password"></i><div class="doc-icon-code">&#xe673;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-username"></i><div class="doc-icon-code">&#xe66f;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-refresh-3"></i><div class="doc-icon-code">&#xe9aa;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-auz"></i><div class="doc-icon-code">&#xe672;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-spread-left"></i><div class="doc-icon-code">&#xe66b;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-shrink-right"></i><div class="doc-icon-code">&#xe668;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-snowflake"></i><div class="doc-icon-code">&#xe6b1;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-tips"></i><div class="doc-icon-code">&#xe702;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-note"></i><div class="doc-icon-code">&#xe66e;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-home"></i><div class="doc-icon-code">&#xe68e;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-senior"></i><div class="doc-icon-code">&#xe674;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-refresh"></i><div class="doc-icon-code">&#xe669;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-refresh-1"></i><div class="doc-icon-code">&#xe666;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-flag"></i><div class="doc-icon-code">&#xe66c;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-theme"></i><div class="doc-icon-code">&#xe66a;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-notice"></i><div class="doc-icon-code">&#xe667;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-website"></i><div class="doc-icon-code">&#xe7ae;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-console"></i><div class="doc-icon-code">&#xe665;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-face-surprised"></i><div class="doc-icon-code">&#xe664;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-set"></i><div class="doc-icon-code">&#xe716;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-template-1"></i><div class="doc-icon-code">&#xe656;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-app"></i><div class="doc-icon-code">&#xe653;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-template"></i><div class="doc-icon-code">&#xe663;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-praise"></i><div class="doc-icon-code">&#xe6c6;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-tread"></i><div class="doc-icon-code">&#xe6c5;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-male"></i><div class="doc-icon-code">&#xe662;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-female"></i><div class="doc-icon-code">&#xe661;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-camera"></i><div class="doc-icon-code">&#xe660;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-camera-fill"></i><div class="doc-icon-code">&#xe65d;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-more"></i><div class="doc-icon-code">&#xe65f;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-more-vertical"></i><div class="doc-icon-code">&#xe671;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-rmb"></i><div class="doc-icon-code">&#xe65e;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-dollar"></i><div class="doc-icon-code">&#xe659;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-diamond"></i><div class="doc-icon-code">&#xe735;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-fire"></i><div class="doc-icon-code">&#xe756;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-return"></i><div class="doc-icon-code">&#xe65c;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-location"></i><div class="doc-icon-code">&#xe715;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-read"></i><div class="doc-icon-code">&#xe705;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-survey"></i><div class="doc-icon-code">&#xe6b2;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-face-smile"></i><div class="doc-icon-code">&#xe6af;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-face-cry"></i><div class="doc-icon-code">&#xe69c;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-cart-simple"></i><div class="doc-icon-code">&#xe698;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-cart"></i><div class="doc-icon-code">&#xe657;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-next"></i><div class="doc-icon-code">&#xe65b;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-prev"></i><div class="doc-icon-code">&#xe65a;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-upload-drag"></i><div class="doc-icon-code">&#xe681;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-upload"></i><div class="doc-icon-code">&#xe67c;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-download-circle"></i><div class="doc-icon-code">&#xe601;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-component"></i><div class="doc-icon-code">&#xe857;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-file-b"></i><div class="doc-icon-code">&#xe655;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-user"></i><div class="doc-icon-code">&#xe770;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-find-fill"></i><div class="doc-icon-code">&#xe670;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-loading layui-icon layui-anim layui-anim-rotate layui-anim-loop"></i><div
|
||||
class="doc-icon-code">&#xe63d;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-loading-1 layui-icon layui-anim layui-anim-rotate layui-anim-loop"></i><div class="doc-icon-code">&#xe63e;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-add-1"></i><div class="doc-icon-code">&#xe654;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-play"></i><div class="doc-icon-code">&#xe652;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-pause"></i><div class="doc-icon-code">&#xe651;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-headset"></i><div class="doc-icon-code">&#xe6fc;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-video"></i><div class="doc-icon-code">&#xe6ed;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-voice"></i><div class="doc-icon-code">&#xe688;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-speaker"></i><div class="doc-icon-code">&#xe645;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-fonts-del"></i><div class="doc-icon-code">&#xe64f;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-fonts-code"></i><div class="doc-icon-code">&#xe64e;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-fonts-html"></i><div class="doc-icon-code">&#xe64b;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-fonts-strong"></i><div class="doc-icon-code">&#xe62b;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-unlink"></i><div class="doc-icon-code">&#xe64d;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-picture"></i><div class="doc-icon-code">&#xe64a;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-link"></i><div class="doc-icon-code">&#xe64c;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-face-smile-b"></i><div class="doc-icon-code">&#xe650;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-align-left"></i><div class="doc-icon-code">&#xe649;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-align-right"></i><div class="doc-icon-code">&#xe648;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-align-center"></i><div class="doc-icon-code">&#xe647;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-fonts-u"></i><div class="doc-icon-code">&#xe646;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-fonts-i"></i><div class="doc-icon-code">&#xe644;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-tabs"></i><div class="doc-icon-code">&#xe62a;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-radio"></i><div class="doc-icon-code">&#xe643;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-circle"></i><div class="doc-icon-code">&#xe63f;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-edit"></i><div class="doc-icon-code">&#xe642;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-share"></i><div class="doc-icon-code">&#xe641;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-delete"></i><div class="doc-icon-code">&#xe640;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-form"></i><div class="doc-icon-code">&#xe63c;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-cellphone-fine"></i><div class="doc-icon-code">&#xe63b;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-dialogue"></i><div class="doc-icon-code">&#xe63a;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-fonts-clear"></i><div class="doc-icon-code">&#xe639;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-layer"></i><div class="doc-icon-code">&#xe638;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-date"></i><div class="doc-icon-code">&#xe637;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-water"></i><div class="doc-icon-code">&#xe636;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-code-circle"></i><div class="doc-icon-code">&#xe635;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-carousel"></i><div class="doc-icon-code">&#xe634;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-prev-circle"></i><div class="doc-icon-code">&#xe633;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-layouts"></i><div class="doc-icon-code">&#xe632;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-util"></i><div class="doc-icon-code">&#xe631;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-templeate-1"></i><div class="doc-icon-code">&#xe630;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-upload-circle"></i><div class="doc-icon-code">&#xe62f;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-tree"></i><div class="doc-icon-code">&#xe62e;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-table"></i><div class="doc-icon-code">&#xe62d;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-chart"></i><div class="doc-icon-code">&#xe62c;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-chart-screen"></i><div class="doc-icon-code">&#xe629;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-engine"></i><div class="doc-icon-code">&#xe628;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-triangle-d"></i><div class="doc-icon-code">&#xe625;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-triangle-r"></i><div class="doc-icon-code">&#xe623;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-file"></i><div class="doc-icon-code">&#xe621;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-set-sm"></i><div class="doc-icon-code">&#xe620;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-add-circle"></i><div class="doc-icon-code">&#xe61f;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-404"></i><div class="doc-icon-code">&#xe61c;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-about"></i><div class="doc-icon-code">&#xe60b;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-up"></i><div class="doc-icon-code">&#xe619;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-down"></i><div class="doc-icon-code">&#xe61a;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-left"></i><div class="doc-icon-code">&#xe603;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-right"></i><div class="doc-icon-code">&#xe602;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-circle-dot"></i><div class="doc-icon-code">&#xe617;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-search"></i><div class="doc-icon-code">&#xe615;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-set-fill"></i><div class="doc-icon-code">&#xe614;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-group"></i><div class="doc-icon-code">&#xe613;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-friends"></i><div class="doc-icon-code">&#xe612;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-reply-fill"></i><div class="doc-icon-code">&#xe611;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-menu-fill"></i><div class="doc-icon-code">&#xe60f;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-log"></i><div class="doc-icon-code">&#xe60e;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-picture-fine"></i><div class="doc-icon-code">&#xe60d;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-face-smile-fine"></i><div class="doc-icon-code">&#xe60c;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-list"></i><div class="doc-icon-code">&#xe60a;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-release"></i><div class="doc-icon-code">&#xe609;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-ok"></i><div class="doc-icon-code">&#xe605;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-help"></i><div class="doc-icon-code">&#xe607;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-chat"></i><div class="doc-icon-code">&#xe606;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-top"></i><div class="doc-icon-code">&#xe604;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-star"></i><div class="doc-icon-code">&#xe600;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-star-fill"></i><div class="doc-icon-code">&#xe658;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-close-fill"></i><div class="doc-icon-code">&#x1007;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-close"></i><div class="doc-icon-code">&#x1006;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-ok-circle"></i><div class="doc-icon-code">&#x1005;</div></li>
|
||||
<li class='layui-col-xs4 layui-col-sm3 layui-col-md2 layui-col-lg1 '><i class="layui-icon layui-icon-add-circle-fine"></i><div class="doc-icon-code">&#xe608;</div></li>
|
||||
</ul>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
layui.use(['form', 'layer', 'jquery'], function () {
|
||||
var form = layui.form,
|
||||
layer = parent.layer === undefined ? layui.layer : top.layer,
|
||||
element = layui.element;
|
||||
$ = layui.jquery;
|
||||
|
||||
/**
|
||||
* 复制图标编码至粘贴板
|
||||
*/
|
||||
$("body").on("click",".icons li",function(){
|
||||
var copyText = document.getElementById("copyText");
|
||||
copyText.innerText = $(this).html();
|
||||
copyText.select();
|
||||
document.execCommand("copy");
|
||||
window.sessionStorage.setItem("icon",$(this).text());
|
||||
var selectIcon = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(selectIcon);
|
||||
})
|
||||
})
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1 @@
|
||||
59924c0d-7dc1-4d19-b04f-1625973c2510
|
||||
@@ -0,0 +1,47 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/index.css" media="all" />
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<div class="layui-layout layui-layout-admin">
|
||||
{include file="admin@public/header" /}
|
||||
{include file="admin@public/menu" /}
|
||||
<!-- 右侧内容 -->
|
||||
<div class="layui-body layui-form">
|
||||
<div class="layui-tab mag0" lay-filter="bodyTab" id="top_tabs_box">
|
||||
<ul class="layui-tab-title top_tab" id="top_tabs">
|
||||
<li class="layui-this" lay-id=""><i class="layui-icon">{$home.icon|raw|default=''}</i> <cite>{$home.title|default=''}</cite></li>
|
||||
</ul>
|
||||
<ul class="layui-nav closeBox">
|
||||
<li class="layui-nav-item">
|
||||
<a href="javascript:;"><i class="layui-icon caozuo"></i> 页面操作</a>
|
||||
<dl class="layui-nav-child">
|
||||
<!--<dd><a href="javascript:;" class="refresh refreshThis"><i class="layui-icon"></i> 刷新当前</a></dd>-->
|
||||
<dd><a href="javascript:;" class="closePageOther"><i class="seraph icon-prohibit"></i> 关闭其他</a></dd>
|
||||
<dd><a href="javascript:;" class="closePageAll"><i class="seraph icon-guanbi"></i> 关闭全部</a></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content clildFrame">
|
||||
<div class="layui-tab-item layui-show">
|
||||
<iframe src="{$home.href|default=''}"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{include file="admin@public/footer" /}
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 移动导航 -->
|
||||
<div class="site-tree-mobile layui-hide"><i class="layui-icon"></i></div>
|
||||
<div class="site-mobile-shade" ></div>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script type="text/javascript" src="__STATIC__/js/admin/index.js"></script>
|
||||
<script type="text/javascript" src="__STATIC__/js/admin/cache.js"></script>
|
||||
{/block}
|
||||
@@ -0,0 +1,30 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/login.css" media="all">
|
||||
<style>
|
||||
.layadmin-backlog-body p em {
|
||||
font-style: normal;
|
||||
font-size: 30px;
|
||||
font-weight: 300;
|
||||
color: #009688 !important;
|
||||
}
|
||||
|
||||
.layadmin-backlog-body cite {
|
||||
padding-bottom: 10px;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
color: #333;
|
||||
}
|
||||
</style>
|
||||
{/block}
|
||||
{block name="cotent"}
|
||||
<body style="background-color: #f2f2f2;">
|
||||
<div class="layui-fluid">
|
||||
<div style="font-size:30px;">欢迎使用聚志愿后台管理系统</div>
|
||||
</div>
|
||||
</body>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
{/block}
|
||||
@@ -0,0 +1 @@
|
||||
a766b3d5-5347-4a29-92d5-c870e7319cbc
|
||||
@@ -0,0 +1,89 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<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.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/login.css" media="all">
|
||||
</head>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: none;">
|
||||
<div class="layadmin-user-login-main">
|
||||
<div class="layadmin-user-login-box layadmin-user-login-header">
|
||||
<h2>{$SysInfo.ManageName|default=''}</h2>
|
||||
</div>
|
||||
<div class="layadmin-user-login-box layadmin-user-login-body layui-form">
|
||||
<div class="layui-form-item">
|
||||
<label class="layadmin-user-login-icon layui-icon layui-icon-username" for="LAY-user-login-username"></label>
|
||||
<input type="text" id="username" id="LAY-user-login-username" lay-verify="required" placeholder="用户名" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layadmin-user-login-icon layui-icon layui-icon-password" for="LAY-user-login-password"></label>
|
||||
<input type="password" id="password" id="LAY-user-login-password" lay-verify="required" placeholder="密码" class="layui-input">
|
||||
</div>
|
||||
|
||||
<!--判断是否开启验证码登录-->
|
||||
<!--{if $SysInfo.VercodeType == 1}-->
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-xs7">
|
||||
<label class="layadmin-user-login-icon layui-icon layui-icon-vercode" for="LAY-user-login-vercode"></label>
|
||||
<input type="text" id="vercode" name="vercode" id="LAY-user-login-vercode" placeholder="图形验证码" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-col-xs5">
|
||||
<div style="margin-left: 10px;">
|
||||
<img src="{:captcha_src()}" onclick="this.src='{:captcha_src()}?seed='+Math.random()" class="layadmin-user-login-codeimg" lay-submit lay-filter="LAY-user-get-vercode">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--{/if}-->
|
||||
|
||||
<div class="layui-form-item" style="margin-bottom: 20px;">
|
||||
<input type="checkbox" name="remember" lay-skin="primary" title="记住密码">
|
||||
<a href="#" class="layadmin-user-jump-change layadmin-link" style="margin-top: 7px;">忘记密码?</a>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<button class="layui-btn layui-btn-fluid" id="submitBtn">登 入</button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-trans layadmin-user-login-footer">
|
||||
|
||||
<p>{$SysInfo.FooterName|default=''}</p>
|
||||
<p>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
/**
|
||||
* 跳出ifram框架
|
||||
*/
|
||||
if (top.location != self.location) top.location = self.location;
|
||||
|
||||
/**
|
||||
* 登录
|
||||
*/
|
||||
$("#submitBtn").click(function () {
|
||||
var data = {
|
||||
username: $("#username").val(),
|
||||
password: $("#password").val(),
|
||||
vercode: $("#vercode").val(),
|
||||
};
|
||||
$.request.post("{:url('@admin/login')}", data, function (res) {
|
||||
$.msg.success(res.msg, function () {
|
||||
window.location.href = "{:url('@admin/index')}";
|
||||
})
|
||||
});
|
||||
return false;
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1 @@
|
||||
8caa2c55-e21f-4d9f-a236-44d72af0f6fa
|
||||
132
芳林公司项目/www.zhiyuanhelp.com/application/admin/view/menu/form.html
Normal file
132
芳林公司项目/www.zhiyuanhelp.com/application/admin/view/menu/form.html
Normal file
@@ -0,0 +1,132 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
{block name="style"}{/block}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{block name="cotent"}
|
||||
<form class="layui-form form-width-99admin">
|
||||
<br>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">上级菜单</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="pid" class="pid" lay-filter="pid">
|
||||
{foreach up_menu as $vo }
|
||||
{eq name='$vo.id' value='$menu.pid|default=0'}
|
||||
<option selected value="{$vo.id|default=''}">{$vo.title|raw|default=''}</option>
|
||||
{else}
|
||||
<option value="{$vo.id|default=''}">{$vo.title|raw|default=''}</option>
|
||||
{/eq}
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">菜单名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="title" class="layui-input" lay-verify="title" lay-verify="required" value="{$menu.title|default=''}" placeholder="请输入菜单名称">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">菜单链接</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="href" class="layui-input" lay-verify="href" value="{$menu.href|default='#'}" placeholder="请输入菜单链接">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-row">
|
||||
<div class="magb15 layui-col-md4 layui-col-xs12">
|
||||
<label class="layui-form-label">图标编码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="icon" class="layui-input" lay-verify="icon" value="{$menu.icon|default=''}" placeholder="请输入图标编码">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="magb15 layui-col-md4 layui-col-xs12">
|
||||
<label class="layui-form-label">图标样式</label>
|
||||
<span class='layui-btn layui-btn-primary' style='padding:0 12px;min-width:45px'>
|
||||
{if isset($menu.icon_type) && $menu.icon_type=='fa'}
|
||||
<i id='icon-preview' class="fa {$menu.icon|raw|default=''}"></i>
|
||||
{else/}
|
||||
<i id='icon-preview' class="layui-icon " data-icon="{$menu.icon|raw|default=''}">{$menu.icon|raw|default=''}</i>
|
||||
{/if}
|
||||
</span>
|
||||
<button data-icon='icon' type='button' class='layui-btn layui-btn-primary select_icon'>选择图标</button>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="magb15 layui-col-md4 layui-col-xs12">
|
||||
<label class="layui-form-label">菜单排序</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="sort" class="layui-input" lay-verify="sort" value="{$menu.sort|default='0'}" placeholder="请输入排序">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<label class="layui-form-label">备注信息</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea id="remark" placeholder="请输入备注信息" class="layui-textarea">{$menu.remark|default=''}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if !empty($menu)}
|
||||
<input type="hidden" class="id" id="id" value="{$menu.id|default=''}">
|
||||
{/if}
|
||||
|
||||
<div class="layui-form-item layui-row layui-col-xs12">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn layui-btn-sm" id="submitBtn">提交</button>
|
||||
<button class="layui-btn layui-btn-sm layui-btn-primary" data-close="closeOpen">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 添加、编辑
|
||||
*/
|
||||
$("#submitBtn").on("click", function () {
|
||||
var url = "{if empty($menu.id)}{:url('@admin/menu/add')}{else/}{:url('@admin/menu/edit')}{/if}";
|
||||
var data = {
|
||||
id: $("#id").val(),
|
||||
pid: $("#pid").val(),
|
||||
title: $("#title").val(),
|
||||
href: $("#href").val(),
|
||||
icon: $("#icon").val(),
|
||||
sort: $("#sort").val(),
|
||||
remark: $("#remark").val(),
|
||||
};
|
||||
$.request.post(url, data, function (res) {
|
||||
$.msg.success(res.msg, function () {
|
||||
$.tool.reload('open');
|
||||
})
|
||||
})
|
||||
return false;
|
||||
});
|
||||
|
||||
/**
|
||||
* 选择图标并且自动填充
|
||||
*/
|
||||
$(".select_icon").click(function () {
|
||||
var selectIcon = layer.open({
|
||||
title: "选择图标",
|
||||
type: 2,
|
||||
area: ['1000px', '600px'],
|
||||
content: "{:url('@admin/tool.icon/fa')}",
|
||||
success: function (layero, selectIcon) {
|
||||
var body = layer.getChildFrame('body', selectIcon);
|
||||
},
|
||||
end: function () {
|
||||
var icon = window.sessionStorage.getItem("icon");
|
||||
$('#icon').attr('value', icon);
|
||||
$('#icon-preview').attr('data-icon', icon);
|
||||
$('#icon-preview').attr('class', 'fa ' + icon);
|
||||
// $("#icon-preview").html(icon);
|
||||
window.sessionStorage.removeItem("icon");
|
||||
}
|
||||
})
|
||||
return false;
|
||||
})
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1,149 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
<form class="layui-form">
|
||||
|
||||
<!--顶部操作栏--开始-->
|
||||
<blockquote id="searchBlock" class="layui-elem-quote quoteBox">
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">菜单名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="title" class="layui-input" placeholder="请输入菜单名称"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">菜单状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select id="status" lay-filter="status">
|
||||
<option value="">请选择菜单状态</option>
|
||||
{foreach $status as $vo}
|
||||
<option value="{$vo.id|default=''}">{$vo.title|default=''}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">菜单链接</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="href" class="layui-input href" placeholder="请输入菜单链接"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label-99admin">创建时间</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="create_at" class="layui-input" id="create_at" placeholder="请选择创建时间">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn" data-search="currentTableId">搜索</a>
|
||||
</div>
|
||||
|
||||
{if auth("$thisClass/add")}
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn layui-btn-normal" data-open='{:url("$thisClass/add")}' data-title="添加文章">添加</a>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if auth("$thisClass/del")}
|
||||
<div class="layui-form-item layui-inline">
|
||||
<a class="layui-btn layui-btn-danger layui-btn-normal" data-title="确定批量删除?" data-del-all='{:url("$thisClass/del")}' data-table-id="currentTableId">删除</a>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
</blockquote>
|
||||
<!--顶部操作栏--结束-->
|
||||
|
||||
<!--主表单渲染--开始-->
|
||||
<table id="currentTable" lay-filter="currentTable"></table>
|
||||
<!--主表单渲染--结束-->
|
||||
|
||||
<!--表单模板绑定--开始-->
|
||||
<script type="text/html" id="checkStatus">
|
||||
<input type="checkbox" name="{{d.id}}" value="{{d.status}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="modifyStatus" {{ d.status== 1 ? 'checked' : '' }}>
|
||||
</script>
|
||||
<!--表单模板绑定--结束-->
|
||||
|
||||
<!--表单操作栏--开始-->
|
||||
<script type="text/html" id="currentTableBar">
|
||||
|
||||
{if auth("$thisClass/add")}
|
||||
|
||||
{{# if (d.is_add) { }}
|
||||
<a class="layui-btn layui-btn-xs" value="{{d.id}}" data-open='{:url("$thisClass/add")}?pid={{d.id}}' data-title="添加菜单">添加下级</a>
|
||||
{{# } else { }}
|
||||
<a class="layui-btn layui-btn-xs color-99admin-gray" value="{{d.id}}">添加下级</a>
|
||||
{{# } }}
|
||||
|
||||
{/if}
|
||||
|
||||
{if auth("$thisClass/edit")}
|
||||
<a class="layui-btn layui-btn-xs" data-open='{:url("$thisClass/edit")}?id={{d.id}}' data-title="修改菜单信息">编辑</a>
|
||||
{/if}
|
||||
|
||||
{if auth("$thisClass/del")}
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-title="确定批量删除?" data-del='{:url("$thisClass/del")}?id={{d.id}}'>删除</a>
|
||||
{/if}
|
||||
|
||||
</script>
|
||||
<!--表单操作栏--结束-->
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 生成表单
|
||||
*/
|
||||
$.form.table('current', '{:url("$thisRequest")}?type=ajax', [[
|
||||
{type: "checkbox", fixed: "left", width: 50,},
|
||||
{field: 'sort', title: '排序', width: 100, edit: 'text', align: "center"},
|
||||
{
|
||||
field: 'icon', title: '图标', width: 100, align: 'center', templet: function (d) {
|
||||
/**判断图标类型:layuicms自带、fa图标、layui图标**/
|
||||
if (d.icon.indexOf("icon-") != -1) {
|
||||
return '<span class="seraph ' + d.icon + '" data-icon="' + d.icon + '"></span>';
|
||||
} else if (d.icon.indexOf("fa-") != -1) {
|
||||
return '<span class="fa ' + d.icon + '" data-icon="' + d.icon + '"></span>';
|
||||
} else {
|
||||
return '<span class="layui-icon">' + d.icon + '</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{field: 'title', title: '菜单名称', minWidth: 200, align: 'left'},
|
||||
{
|
||||
field: 'href', title: '链接地址', minWidth: 300, align: 'center', templet: function (d) {
|
||||
return '<a class="layui-blue" href="/' + d.href + '" target="_blank">' + d.href + '</a>';
|
||||
}
|
||||
},
|
||||
{field: 'status', title: '启用状态', minWidth: 110, templet: '#checkStatus', unresize: true, align: "center"},
|
||||
/**{if auth("$thisClass/add") || auth("$thisClass/edit") || auth("$thisClass/del")}**/
|
||||
{title: '操作', minWidth: 110, templet: '#currentTableBar', fixed: "right", align: "center"},
|
||||
/**{/if}**/
|
||||
]], false);
|
||||
|
||||
/**
|
||||
* 日期范围
|
||||
*/
|
||||
$.laydate.range('create_at');
|
||||
|
||||
/**
|
||||
* 监听字段值编辑
|
||||
*/
|
||||
$.form.editField('currentTable', '{:url("$thisRequest")}');
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
*/
|
||||
$.form.switch('modifyStatus', '{:url("$thisClass/status")}');
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1 @@
|
||||
e25faa86-0247-4cc8-a46f-bc0c35a791b2
|
||||
@@ -0,0 +1,100 @@
|
||||
{extend name="admin@public/basic" /}
|
||||
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__STATIC__/css/admin/public.css" media="all"/>
|
||||
{/block}
|
||||
|
||||
{block name="cotent"}
|
||||
|
||||
{if empty($module_list)}
|
||||
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 50px;">
|
||||
<legend>暂无节点信息,可以先刷新节点信息 =》
|
||||
<button class="layui-btn layui-btn-normal refresh_node">刷新节点</button>
|
||||
</legend>
|
||||
</fieldset>
|
||||
{/if}
|
||||
|
||||
<div class="layui-tab layui-tab-brief" lay-filter="module">
|
||||
<ul class="layui-tab-title">
|
||||
{foreach module_list as $vo}
|
||||
<li {if $vo.is_selectd==true}class="layui-this"{/if} lay-id="{$vo.id}">{$vo.title|default=''}【{$vo.node|default=''}】</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
{foreach module_list as $vo}
|
||||
<div class="layui-tab-item {if $vo.is_selectd==true}layui-show{/if}">
|
||||
<table id="{$vo.node}Table" lay-filter="{$vo.node}Table"></table>
|
||||
<script type="text/html" id="checkStatus">
|
||||
<input type="checkbox" name="{{d.id}}" value="{{d.is_auth}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="modifyStatus" {{ d.is_auth== 1 ? 'checked' : '' }}>
|
||||
</script>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
layui.use(['laydate', 'form', 'layer', 'table', 'laytpl', 'element'], function () {
|
||||
var form = layui.form,
|
||||
layer = parent.layer === undefined ? layui.layer : top.layer,
|
||||
$ = layui.jquery,
|
||||
laytpl = layui.laytpl,
|
||||
table = layui.table,
|
||||
laydate = layui.laydate,
|
||||
element = layui.element;
|
||||
|
||||
/**{foreach module_list as $vo}**/
|
||||
$.form.table("{$vo.node}", '{:url("$thisRequest")}?module={$vo.node}', [[
|
||||
{field: 'node', title: '系统节点', minWidth: 200, align: 'left', sort: true},
|
||||
{field: 'title', title: '节点名称', edit: 'text', minWidth: 200, align: "center", style: 'background-color: #009688; color: #fff;', sort: true},
|
||||
{field: 'create_at', title: '创建时间', align: 'center', sort: true},
|
||||
{field: 'is_auth', title: '节点控制', width: 150, templet: '#checkStatus', unresize: true, align: "center"},
|
||||
]], false);
|
||||
/**{/foreach}**/
|
||||
|
||||
//Hash地址的定位
|
||||
var layid = location.hash.replace(/^#module=/, '');
|
||||
element.tabChange('module', layid);
|
||||
element.on('tab(module)', function (elem) {
|
||||
location.hash = 'module=' + $(this).attr('lay-id');
|
||||
});
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
*/
|
||||
$.form.switch('modifyStatus', '{:url("$thisClass/status")}');
|
||||
|
||||
/**
|
||||
* 监听字段值编辑
|
||||
*/
|
||||
/**{foreach module_list as $vo}**/
|
||||
$.form.editField("{$vo.node}Table", '{:url("$thisRequest")}');
|
||||
/**{/foreach}**/
|
||||
|
||||
|
||||
/**
|
||||
* 工具栏操作
|
||||
*/
|
||||
/**{foreach module_list as $vo}**/
|
||||
table.on("tool({$vo.node}Table)", function (obj) {
|
||||
var layEvent = obj.event,
|
||||
data = obj.data;
|
||||
|
||||
//删除
|
||||
if (layEvent === 'delBtn') {
|
||||
$.msg.confirm('确定删除?', function () {
|
||||
$.request.post('{:url("$thisClass/del")}', {id: data.id}, function (res) {
|
||||
$.msg.success(res.msg, function () {
|
||||
$.tool.reload();
|
||||
});
|
||||
});
|
||||
});
|
||||
return false;
|
||||
}
|
||||
});
|
||||
/**{/foreach}**/
|
||||
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user