初始化
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Users;
|
||||
use think\captcha\Captcha;
|
||||
|
||||
class Auth extends Admin
|
||||
{
|
||||
|
||||
public function login(){
|
||||
|
||||
if((new Users)->login_auth('admin')){
|
||||
return redirect('index/index');
|
||||
}
|
||||
|
||||
if($this->request->isPost()){
|
||||
$username = input('post.username');
|
||||
$password = input('post.password');
|
||||
$captcha = input('post.captcha');
|
||||
try {
|
||||
if(!captcha_check($captcha)){
|
||||
throw new \Exception('验证码错误');
|
||||
}
|
||||
|
||||
(new Users)->login($username,$password,'admin');
|
||||
|
||||
return json(['code' => 200,'msg' => '登录成功,正在跳转后台..']);
|
||||
}catch (\Throwable $e){
|
||||
return json(['code' => 502,'msg' => '登录失败:' . $e->getMessage()]);
|
||||
}
|
||||
}else{
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function logout(){
|
||||
(new Users)->logout('admin');
|
||||
return json(['code' => 200,'msg' => '退出登录成功']);
|
||||
}
|
||||
|
||||
public function verify(){
|
||||
$config = [
|
||||
'length' => 4
|
||||
];
|
||||
$captcha = new Captcha($config);
|
||||
return $captcha->entry();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Certify as CertifyModel;
|
||||
use app\common\model\Users;
|
||||
|
||||
class Certify extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
if($this->request->isAjax()){
|
||||
$page = input('get.page',1);
|
||||
$limit = input('get.limit',20);
|
||||
$list = CertifyModel::order('create_time desc')
|
||||
->page($page,$limit)
|
||||
->field('id,uid,name,idcard,status,create_time')
|
||||
->select()->each(function($item){
|
||||
$item['create_time'] = date('Y-m-d H:i',$item['create_time']);
|
||||
$item['uid'] = Users::where('id',$item['uid'])->value('username');
|
||||
return $item;
|
||||
});
|
||||
|
||||
$count = CertifyModel::count();
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '获取成功',
|
||||
'data' => $list->toArray(),
|
||||
'count' => $count
|
||||
]);
|
||||
}
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function edit(){
|
||||
$id = input('get.id');
|
||||
|
||||
$info = CertifyModel::where('id',$id)->find();
|
||||
|
||||
if(empty($info)){
|
||||
return json(['code' => 502,'msg' => '数据不存在']);
|
||||
}
|
||||
|
||||
$info['status'] = 1;
|
||||
|
||||
$info->save();
|
||||
|
||||
Users::where('id',$info['uid'])->update(['is_auth' => 1]);
|
||||
|
||||
return json(['code' => 200,'msg' => '处理成功']);
|
||||
}
|
||||
|
||||
public function delete(){
|
||||
$id = input('get.id');
|
||||
|
||||
CertifyModel::where('id',$id)->delete();
|
||||
|
||||
return json(['code' => 200,'msg' => '删除成功']);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Profit;
|
||||
use app\common\model\Stores;
|
||||
use app\common\model\Users;
|
||||
|
||||
class Dashboard extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
// 获取当月所有时间
|
||||
$month_time = [];
|
||||
$time_type = [];
|
||||
|
||||
for ($i = 0;$i < 30;$i++){
|
||||
$month_time[] = strtotime('-'.$i.' day');
|
||||
$time_type[] = "'".date('m-d',strtotime('-'.$i.' day'))."'";
|
||||
}
|
||||
|
||||
$time_type = array_reverse($time_type);
|
||||
$time_type = implode(',',$time_type);
|
||||
|
||||
// 获取当月间隔时间
|
||||
$start_time = strtotime(date('Y-m-d',strtotime('-29 day')));
|
||||
$end_time = strtotime('now');
|
||||
|
||||
// 获取30天的统计记录
|
||||
$profit = Profit::whereTime('create_time','>=',$start_time)
|
||||
->whereTime('create_time','<=',$end_time)
|
||||
->order('create_time desc')
|
||||
->select();
|
||||
|
||||
|
||||
// 图表统计
|
||||
$series_reg = str_split(str_repeat('0',30),1);
|
||||
$series_order = str_split(str_repeat('0',30),1);
|
||||
$series_money = str_split(str_repeat('0',30),1);
|
||||
|
||||
foreach ($month_time as $key => $item){
|
||||
$item_time = date('Y-m-d',$item);
|
||||
foreach ($profit as $profit_item){
|
||||
$profit_time = date('Y-m-d',$profit_item['create_time']);
|
||||
if($item_time == $profit_time){
|
||||
$series_reg[$key] = $profit_item['count_reg'];
|
||||
$series_order[$key] = $profit_item['count_order_yes'];
|
||||
$series_money[$key] = $profit_item['count_money'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$series_reg = array_reverse($series_reg);
|
||||
$series_reg = implode(',',$series_reg);
|
||||
|
||||
$series_order = array_reverse($series_order);
|
||||
$series_order = implode(',',$series_order);
|
||||
|
||||
$series_money = array_reverse($series_money);
|
||||
$series_money = implode(',',$series_money);
|
||||
|
||||
// 用户数量统计
|
||||
|
||||
$default_group = config('register.default_group');
|
||||
$vip_group = config('vip.vip_group');
|
||||
|
||||
$default_user = Users::where('group',$default_group)->count();
|
||||
$vip_user = Users::where('group',$vip_group)->count();
|
||||
|
||||
$file = Stores::count();
|
||||
$size = Stores::sum('size');
|
||||
|
||||
$this->assign('count',[
|
||||
'user' => $default_user,
|
||||
'vip' => $vip_user,
|
||||
'file' => $file,
|
||||
'size' => countSize($size)
|
||||
]);
|
||||
|
||||
$this->assign('profit',$profit);
|
||||
|
||||
$this->assign('series_reg',$series_reg);
|
||||
$this->assign('series_order',$series_order);
|
||||
$this->assign('series_money',$series_money);
|
||||
$this->assign('time_type',$time_type);
|
||||
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\driver\AliyunOss;
|
||||
use app\common\model\driver\Local;
|
||||
use app\common\model\driver\TxyunOss;
|
||||
use app\common\model\Policys;
|
||||
use app\common\model\Stores;
|
||||
use app\common\model\Users;
|
||||
use think\response\Download;
|
||||
|
||||
class File extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
if($this->request->isAjax()){
|
||||
$page = input('get.page',1);
|
||||
$limit = input('get.limit',10);
|
||||
$map = [];
|
||||
|
||||
// 获取筛选条件
|
||||
$start_time = input('get.start_time','');
|
||||
$end_time = input('get.end_time','');
|
||||
$policy_id = input('get.policy','');
|
||||
$ext = input('get.ext','');
|
||||
$uid = input('get.uid','');
|
||||
$origin_name = input('get.origin_name','');
|
||||
|
||||
if(!empty($start_time) && !empty($end_time)){
|
||||
$map[] = ['create_time','between time',[$start_time,$end_time]];
|
||||
}
|
||||
|
||||
if(!empty($policy_id)){
|
||||
$map[] = ['policy_id','=',$policy_id];
|
||||
}
|
||||
|
||||
if(!empty($ext)){
|
||||
$map[] = ['ext','=',$ext];
|
||||
}
|
||||
|
||||
if(!empty($uid)){
|
||||
$map[] = ['uid','=',$uid];
|
||||
}
|
||||
|
||||
if(!empty($origin_name)){
|
||||
$map[] = ['origin_name','like','%'.$origin_name.'%'];
|
||||
}
|
||||
|
||||
//获取排序条件
|
||||
$sort_key = input('get.sort_key','create_time');
|
||||
$sort = input('get.sort',0);
|
||||
|
||||
$order_type = empty($sort) ? 'desc' : 'asc';
|
||||
|
||||
$list = Stores::where($map)->page($page,$limit)->order($sort_key,$order_type)->select()->each(function($item){
|
||||
$item['icon'] = getFileIcon($item['ext'],'admin');
|
||||
$item['size'] = countSize($item['size']);
|
||||
$item['uid'] = Users::where('id',$item['uid'])->value('nickname');
|
||||
$item['policy_id'] = Policys::where('id',$item['policy_id'])->value('name');
|
||||
return $item;
|
||||
});
|
||||
|
||||
$count = Stores::where($map)->count();
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '加载成功',
|
||||
'count' => $count,
|
||||
'data' => $list->toArray()
|
||||
]);
|
||||
}else{
|
||||
|
||||
$policy = Policys::field('id,name')->select();
|
||||
$this->assign('policy',$policy);
|
||||
return $this->fetch();
|
||||
}
|
||||
}
|
||||
|
||||
public function delete(){
|
||||
$ids = input('get.ids');
|
||||
$store = Stores::withTrashed()->where('id','in',$ids)->select();
|
||||
if(empty($store)){
|
||||
$this->returnError('数据不存在');
|
||||
}
|
||||
|
||||
$succ = 0;
|
||||
|
||||
foreach ($store as $item){
|
||||
$item->delete();
|
||||
$succ++;
|
||||
}
|
||||
|
||||
$this->returnSuccess('成功删除'.$succ.'个文件');
|
||||
}
|
||||
|
||||
public function download(){
|
||||
$id = input('get.id',0);
|
||||
$info = Stores::get($id);
|
||||
if(empty($info)){
|
||||
$this->error('数据不存在');
|
||||
}
|
||||
|
||||
$policy = Policys::get($info['policy_id']);
|
||||
|
||||
if(empty($policy)){
|
||||
$this->error('存储策略不存在');
|
||||
}
|
||||
|
||||
// 远程文件下载
|
||||
if($policy['type'] == 'remote'){
|
||||
$down_url = getDownloadRemote($info['file_name'],$info['origin_name'],$policy->config['server_uri'],"",$policy->config['access_token']);
|
||||
$this->redirect($down_url);
|
||||
}
|
||||
|
||||
// 存储驱动下载
|
||||
switch ($policy['type']){
|
||||
case 'aliyunoss':
|
||||
$driver = new AliyunOss(0,0,0);
|
||||
break;
|
||||
case 'txyunoss':
|
||||
$driver = new TxyunOss(0,0,0);
|
||||
break;
|
||||
default:
|
||||
$driver = new Local(0,0,0);
|
||||
break;
|
||||
}
|
||||
|
||||
// 下载
|
||||
return $driver->download($info,"",$policy);
|
||||
}
|
||||
|
||||
public function info(){
|
||||
$id = input('get.id',0);
|
||||
$info = Stores::get($id);
|
||||
if(empty($info)){
|
||||
$this->error('数据不存在');
|
||||
}
|
||||
|
||||
$username = Users::where('id',$info['uid'])->value('username');
|
||||
$policy_name = Policys::where('id',$info['policy_id'])->value('name');
|
||||
$file_path = $info['file_name'];
|
||||
|
||||
$this->assign('username',$username);
|
||||
$this->assign('policy_name',$policy_name);
|
||||
$this->assign('file_path',$file_path);
|
||||
$this->assign('info',$info);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Groups;
|
||||
use app\common\model\Policys;
|
||||
use app\common\model\Users;
|
||||
|
||||
class Group extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
|
||||
if($this->request->isAjax()){
|
||||
$page = input('get.page',1);
|
||||
$limit = input('get.limit',10);
|
||||
|
||||
$list = Groups::page($page,$limit)->select()->each(function($item){
|
||||
$item['max_storage'] = countSize($item['max_storage']);
|
||||
$item['is_sys'] = $item['is_sys'] ? '<span class="layui-badge-rim">系统</span>' : '自定义';
|
||||
$item['user_num'] = Users::where('group',$item['id'])->count();
|
||||
$item['policy_id'] = Policys::where('id',$item['policy_id'])->value('name');
|
||||
return $item;
|
||||
});
|
||||
|
||||
$count = Groups::count();
|
||||
$this->returnSuccessLayTable($count,$list->toArray());
|
||||
}
|
||||
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function add(){
|
||||
if($this->request->isPost()){
|
||||
$this->callModelMethods('Groups','addGroup',input('post.'));
|
||||
$this->returnSuccess();
|
||||
}
|
||||
$policy = Policys::getPolicyAll();
|
||||
$this->assign('policy',$policy);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function edit(){
|
||||
$id = input('get.id');
|
||||
$info = Groups::get($id);
|
||||
|
||||
if(empty($info)){
|
||||
$this->error('用户组数据不存在');
|
||||
}
|
||||
|
||||
if($this->request->isPost()){
|
||||
$this->callModelMethods('Groups','editGroup',$id,input('post.'));
|
||||
$this->returnSuccess();
|
||||
}
|
||||
|
||||
$policy = Policys::getPolicyAll();
|
||||
$this->assign('policy',$policy);
|
||||
$this->assign('info',$info);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function delete(){
|
||||
$id = input('get.id');
|
||||
$info = Groups::get($id);
|
||||
|
||||
if(empty($info)){
|
||||
$this->returnError('用户组不存在');
|
||||
}
|
||||
|
||||
if($info['is_sys'] == 1){
|
||||
$this->returnError('系统用户组,不可删除');
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断用户组下是否存在用户
|
||||
*/
|
||||
|
||||
Groups::where('id',$id)->delete();
|
||||
|
||||
$this->returnSuccess('删除成功');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
|
||||
class Index extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
|
||||
$theme = [
|
||||
// 标题
|
||||
'title' => 'SkPan网盘',
|
||||
// logo
|
||||
'logo' => '/static/admin/images/logo.png',
|
||||
// 菜单
|
||||
'menu' => json_encode(config('menu.')),
|
||||
// 管理员
|
||||
'admin' => [
|
||||
'avatar' => '/static/admin/images/avatar.jpg',
|
||||
'nickname' => $this->adminInfo['nickname']
|
||||
],
|
||||
// 激活菜单
|
||||
'menu_select' => 1,
|
||||
// 首页url
|
||||
'home_url' => url('dashboard/index'),
|
||||
// 后台url
|
||||
'index_url' => url('index/index'),
|
||||
// 退出登录url
|
||||
'logout_url' => url('auth/logout'),
|
||||
// 修改密码url
|
||||
'pass_url' => url('auth/pass'),
|
||||
// 清除缓存
|
||||
'clear_cache_url' => url('index/cache')
|
||||
];
|
||||
|
||||
$this->assign('theme',$theme);
|
||||
return $this->fetch();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Order as OrderModel;
|
||||
use app\common\model\Users;
|
||||
|
||||
class Order extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
if($this->request->isAjax()){
|
||||
$page = input('get.page',1);
|
||||
$limit = input('get.limit',10);
|
||||
|
||||
$search_type = input('get.search_type','');
|
||||
$search_value = input('get.search_value','');
|
||||
$status = input('get.status','');
|
||||
$map = [];
|
||||
|
||||
if(!empty($search_type) && !empty($search_value)){
|
||||
$map[] = [$search_type,'like','%'.$search_value.'%'];
|
||||
}
|
||||
|
||||
if(!empty($status)){
|
||||
$map[] = ['status','=',$status];
|
||||
}
|
||||
|
||||
$pay_types = [
|
||||
'alipay' => '支付宝',
|
||||
'wxpay' => '微信'
|
||||
];
|
||||
|
||||
$list = OrderModel::where($map)
|
||||
->page($page,$limit)
|
||||
->select()->each(function ($item) use($pay_types){
|
||||
$item['uid'] = Users::where('id',$item['uid'])->value('username');
|
||||
$item['type'] = $pay_types[$item['type']] ?? '';
|
||||
$item['money'] = number_format($item['money'],2).'¥';
|
||||
$item['vip_day'] = $item['vip_day'].'天';
|
||||
$item['out_trade_no'] = empty($item['out_trade_no']) ? '-' : $item['out_trade_no'];
|
||||
$item['create_time'] = date('Y-m-d H:i',$item['create_time']);
|
||||
$item['pay_time'] = empty($item['pay_time']) ? '-' : date('Y-m-d H:i',$item['pay_time']);
|
||||
return $item;
|
||||
});
|
||||
|
||||
$count = OrderModel::count();
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '加载成功',
|
||||
'count' => $count,
|
||||
'data' => $list->toArray()
|
||||
]);
|
||||
}
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function delete(){
|
||||
$ids = input('get.ids');
|
||||
|
||||
OrderModel::where('id','in',$ids)->delete();
|
||||
|
||||
$this->returnSuccess('删除订单成功');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Policys;
|
||||
use app\common\model\Stores;
|
||||
|
||||
class Policy extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
if($this->request->isAjax()){
|
||||
$page = input('get.page',1);
|
||||
$limit = input('get.limit',10);
|
||||
|
||||
|
||||
$list = Policys::page($page,$limit)->field('id,name,type,max_size')->select()->each(function($item){
|
||||
$item['max_size'] = countSize($item['max_size']);
|
||||
$item['type'] = PolicyType($item['type']);
|
||||
$item['file_num'] = Stores::where('policy_id',$item['id'])->count();
|
||||
$item['store_num'] = countSize(Stores::where('policy_id',$item['id'])->sum('size'));
|
||||
return $item;
|
||||
});
|
||||
|
||||
$count = Policys::count();
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '加载成功',
|
||||
'count' => $count,
|
||||
'data' => $list->toArray()
|
||||
]);
|
||||
}else{
|
||||
return $this->fetch();
|
||||
}
|
||||
}
|
||||
|
||||
public function add(){
|
||||
if($this->request->isPost()){
|
||||
$this->callModelMethods('Policys','addPolicy',input('post.'));
|
||||
$this->returnSuccess();
|
||||
}
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function edit(){
|
||||
$id = input('get.id');
|
||||
$info = Policys::get($id);
|
||||
|
||||
if(empty($info)){
|
||||
$this->error('存储策略数据不存在');
|
||||
}
|
||||
|
||||
if($this->request->isPost()){
|
||||
$this->callModelMethods('Policys','editPolicy',$id,input('post.'));
|
||||
$this->returnSuccess();
|
||||
}
|
||||
|
||||
$this->assign('info',$info);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function delete(){
|
||||
$id = input('get.id');
|
||||
$info = Policys::get($id);
|
||||
|
||||
if(empty($info)){
|
||||
$this->returnError('存储策略不存在');
|
||||
}
|
||||
|
||||
Policys::where('id',$id)->delete();
|
||||
|
||||
$this->returnSuccess('删除成功');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Policys;
|
||||
use app\common\model\Profit;
|
||||
use app\common\model\Stores;
|
||||
use app\common\model\Users;
|
||||
|
||||
class Recycle extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
if($this->request->isAjax()){
|
||||
$page = input('get.page',1);
|
||||
$limit = input('get.limit',10);
|
||||
$map = [];
|
||||
|
||||
// 获取筛选条件
|
||||
$start_time = input('get.start_time','');
|
||||
$end_time = input('get.end_time','');
|
||||
$policy_id = input('get.policy','');
|
||||
$ext = input('get.ext','');
|
||||
$uid = input('get.uid','');
|
||||
$origin_name = input('get.origin_name','');
|
||||
|
||||
if(!empty($start_time) && !empty($end_time)){
|
||||
$map[] = ['delete_time','between time',[$start_time,$end_time]];
|
||||
}
|
||||
|
||||
if(!empty($policy_id)){
|
||||
$map[] = ['policy_id','=',$policy_id];
|
||||
}
|
||||
|
||||
if(!empty($ext)){
|
||||
$map[] = ['ext','=',$ext];
|
||||
}
|
||||
|
||||
if(!empty($uid)){
|
||||
$map[] = ['uid','=',$uid];
|
||||
}
|
||||
|
||||
if(!empty($origin_name)){
|
||||
$map[] = ['origin_name','like','%'.$origin_name.'%'];
|
||||
}
|
||||
|
||||
//获取排序条件
|
||||
$sort_key = input('get.sort_key','delete_time');
|
||||
$sort = input('get.sort',0);
|
||||
|
||||
$order_type = empty($sort) ? 'desc' : 'asc';
|
||||
|
||||
$list = Stores::onlyTrashed()->where($map)->page($page,$limit)->order($sort_key,$order_type)->select()->each(function($item){
|
||||
$item['icon'] = getFileIcon($item['ext'],'admin');
|
||||
$item['size'] = countSize($item['size']);
|
||||
$item['uid'] = Users::where('id',$item['uid'])->value('nickname');
|
||||
$item['policy_id'] = Policys::where('id',$item['policy_id'])->value('name');
|
||||
return $item;
|
||||
});
|
||||
|
||||
$count = Stores::onlyTrashed()->where($map)->count();
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '加载成功',
|
||||
'count' => $count,
|
||||
'data' => $list->toArray()
|
||||
]);
|
||||
}
|
||||
$policy = Policys::field('id,name')->select();
|
||||
$this->assign('policy',$policy);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function restore(){
|
||||
$ids = input('get.ids');
|
||||
$store = Stores::onlyTrashed()->where('id','in',$ids)->select();
|
||||
if(empty($store)){
|
||||
$this->returnError('数据不存在');
|
||||
}
|
||||
|
||||
$succ = 0;
|
||||
|
||||
foreach ($store as $item){
|
||||
$item->restore();
|
||||
$succ++;
|
||||
}
|
||||
|
||||
$this->returnSuccess('处理完成,共恢复'.$succ.'个文件');
|
||||
}
|
||||
|
||||
public function delete(){
|
||||
$ids = input('get.ids');
|
||||
$store = Stores::onlyTrashed()->where('id','in',$ids)->select();
|
||||
if(empty($store)){
|
||||
$this->returnError('数据不存在');
|
||||
}
|
||||
|
||||
$succ = 0;
|
||||
|
||||
foreach ($store as $item){
|
||||
$item->delete(true);
|
||||
|
||||
// 删除分享信息
|
||||
Profit::where('file_id',$item['id'])
|
||||
->where('uid',$item['uid'])
|
||||
->delete();
|
||||
|
||||
$succ++;
|
||||
}
|
||||
|
||||
$this->returnSuccess('成功删除'.$succ.'个文件');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Reports;
|
||||
|
||||
class Report extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
if($this->request->isAjax()){
|
||||
$page = input('get.page',1);
|
||||
$limit = input('get.limit',20);
|
||||
$list = Reports::order('create_time desc')
|
||||
->page($page,$limit)
|
||||
->field('id,source_name,source_url,source_username,type,contact,real_ip,status,create_time')
|
||||
->select()->each(function($item){
|
||||
$item['create_time'] = date('Y-m-d H:i',$item['create_time']);
|
||||
return $item;
|
||||
});
|
||||
|
||||
$count = Reports::count();
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '获取成功',
|
||||
'data' => $list->toArray(),
|
||||
'count' => $count
|
||||
]);
|
||||
}
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function edit(){
|
||||
$id = input('get.id');
|
||||
|
||||
$info = Reports::where('id',$id)->find();
|
||||
|
||||
if(empty($info)){
|
||||
$this->error('数据不存在');
|
||||
}
|
||||
|
||||
if($this->request->isPost()){
|
||||
|
||||
$status = input('post.status');
|
||||
|
||||
$info['status'] = $status;
|
||||
|
||||
$info->save();
|
||||
|
||||
return json(['code' => 200,'msg' => '处理成功']);
|
||||
}
|
||||
|
||||
$this->assign('info',$info);
|
||||
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function delete(){
|
||||
$id = input('get.id');
|
||||
|
||||
Reports::where('id',$id)->delete();
|
||||
|
||||
return json(['code' => 200,'msg' => '删除成功']);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Groups;
|
||||
use app\common\model\Setting as SettingModel;
|
||||
use think\facade\Cache;
|
||||
|
||||
class Setting extends Admin
|
||||
{
|
||||
|
||||
|
||||
public function basic(){
|
||||
$this->saveOptions();
|
||||
$this->assign('option',$this->getOptions());
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
|
||||
public function register(){
|
||||
$this->saveOptions();
|
||||
$group = Groups::field('id,group_name')->select()->toArray();
|
||||
$this->assign('group',$group);
|
||||
$this->assign('option',$this->getOptions());
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function pay(){
|
||||
$this->saveOptions();
|
||||
$this->assign('option',$this->getOptions());
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function vip(){
|
||||
$this->saveOptions();
|
||||
$group = Groups::field('id,group_name')->select()->toArray();
|
||||
$this->assign('group',$group);
|
||||
$this->assign('option',$this->getOptions());
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function email(){
|
||||
$this->saveOptions();
|
||||
$this->assign('option',$this->getOptions());
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
protected function saveOptions(){
|
||||
if($this->request->isPost()){
|
||||
$type = $this->request->action();
|
||||
$post = input('post.');
|
||||
|
||||
try {
|
||||
// 更新数据库
|
||||
foreach ($post as $key => $item){
|
||||
SettingModel::where('set_name',$key)
|
||||
->where('set_type',$type)
|
||||
->update(['set_value' => $item]);
|
||||
}
|
||||
}catch (\Throwable $e){
|
||||
$this->returnError($e->getMessage());
|
||||
}
|
||||
|
||||
// 更新缓存
|
||||
$setting = SettingModel::select()->toArray();
|
||||
Cache::set('_setting_config',$setting);
|
||||
|
||||
$this->returnSuccess('保存成功');
|
||||
}
|
||||
}
|
||||
|
||||
protected function getOptions(): array
|
||||
{
|
||||
$type = $this->request->action();
|
||||
$settings = SettingModel::where('set_type',$type)->select();
|
||||
$options = [];
|
||||
foreach ($settings as $item){
|
||||
$options[$item['set_name']] = $item['set_value'];
|
||||
}
|
||||
return $options;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,206 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Groups;
|
||||
use app\common\model\Users;
|
||||
use think\Exception;
|
||||
|
||||
class User extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
if($this->request->isAjax()){
|
||||
$page = input('get.page',1);
|
||||
$limit = input('get.limit',10);
|
||||
$search_type = input('get.search_type','');
|
||||
$search_value = input('get.search_value','');
|
||||
$map = [];
|
||||
|
||||
if(!empty($search_type) && !empty($search_value)){
|
||||
$map[] = [$search_type,'like','%'.$search_value.'%'];
|
||||
}
|
||||
|
||||
$groups = Groups::column('group_name','id');
|
||||
$default_group = config('register.default_group');
|
||||
|
||||
$list = Users::where($map)
|
||||
->page($page,$limit)
|
||||
->field('id,nickname,username,group,is_auth,amount,email,avatar,status,create_time')
|
||||
->select()->each(function ($item) use ($groups,$default_group){
|
||||
$group_name = $groups[$item['group']] ?? '未知';
|
||||
|
||||
if($item['group'] == 1){
|
||||
$item['group'] = '<span class="layui-badge layui-bg-blue">'. $group_name .'</span>';
|
||||
}elseif ($item['group'] == $default_group){
|
||||
$item['group'] = '<span class="layui-badge layui-bg-gray">'. $group_name .'</span>';
|
||||
}else{
|
||||
$item['group'] = '<span class="layui-badge layui-bg-red">'. $group_name .'</span>';
|
||||
}
|
||||
|
||||
$item['avatar'] = getUserHead($item['avatar']);
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
$count = Users::count();
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '加载成功',
|
||||
'count' => $count,
|
||||
'data' => $list->toArray()
|
||||
]);
|
||||
}else{
|
||||
return $this->fetch();
|
||||
}
|
||||
}
|
||||
|
||||
public function add(){
|
||||
|
||||
$default_group = config('register.default_group');
|
||||
|
||||
if($this->request->isPost()){
|
||||
$data = input('post.');
|
||||
$result = $this->validate($data,[
|
||||
'username|用户帐号' => 'require|alphaNum|length:6,26',
|
||||
'group|用户组' => 'require|number',
|
||||
'password|登录密码' => 'require|alphaNum|length:6,18',
|
||||
'repassword|重复密码' => 'require|confirm:password',
|
||||
'email|安全邮箱' => 'require|email'
|
||||
]);
|
||||
|
||||
if($result !== true) return json(['code' => 502,'msg' => $result]);
|
||||
|
||||
if(empty($data['group'])){
|
||||
$data['group'] = $default_group;
|
||||
}
|
||||
|
||||
//处理用户的VIP时间
|
||||
if(!empty($data['group_expire'])){
|
||||
$group_expire = strtotime($data['group_expire']);
|
||||
}
|
||||
|
||||
try {
|
||||
(new Users)->register($data['username'],$data['email'],$data['password'],$data['group'],[],$group_expire);
|
||||
return json(['code' => 200,'msg' => '账号新增成功']);
|
||||
}catch (Exception $e){
|
||||
return json(['code' => 503,'msg' => $e->getMessage()]);
|
||||
}
|
||||
}else{
|
||||
$group = Groups::field('id,group_name')->select()->toArray();
|
||||
$this->assign('default_group',$default_group);
|
||||
$this->assign('group',$group);
|
||||
return $this->fetch();
|
||||
}
|
||||
}
|
||||
|
||||
public function del(){
|
||||
$ids = input('get.ids');
|
||||
|
||||
if(count(explode(',',$ids)) > 20){
|
||||
$this->returnError('删除失败,不能一次删除20条以上的数据');
|
||||
}
|
||||
|
||||
$delete_users = Users::where('id','in',$ids)->field('id,group')->select()->toArray();
|
||||
|
||||
foreach ($delete_users as $item){
|
||||
if($item['id'] == 1){
|
||||
$this->returnError('删除失败,删除帐号中包含总管理员帐号');
|
||||
break;
|
||||
}
|
||||
|
||||
/**
|
||||
* 待完成功能:删除用户后删除相关数据,如:上传储存的数据,订单数据,目录数据,分享数据等
|
||||
*/
|
||||
|
||||
Users::where('id',$item['id'])->delete();
|
||||
}
|
||||
|
||||
return json(['code' => 200,'msg' => '删除成功']);
|
||||
}
|
||||
|
||||
public function edit(){
|
||||
$id = input('get.id');
|
||||
$info = Users::get($id);
|
||||
|
||||
if(empty($info)){
|
||||
$this->error('用户数据不存在');
|
||||
}
|
||||
|
||||
if($this->request->isPost()){
|
||||
$data = input('post.');
|
||||
$result = $this->validate($data,[
|
||||
'email|安全邮箱' => 'email',
|
||||
'password|登录密码' => 'alphaNum|length:6,18',
|
||||
'group|用户组' => 'require|number'
|
||||
]);
|
||||
|
||||
if($result !== true) return json(['code' => 502,'msg' => $result]);
|
||||
|
||||
$update = [];
|
||||
|
||||
if(!empty($data['email'])){
|
||||
$update['email'] = $data['email'];
|
||||
}
|
||||
|
||||
if(!empty($data['password'])){
|
||||
$en_password = md5($data['password'] . config('app.pass_salt'));
|
||||
$update['password'] = $en_password;
|
||||
}
|
||||
|
||||
if($info['group'] == 1 && $info['id'] != $this->adminInfo['id'] && !empty($data['password']) && $this->adminInfo['id'] != 1){
|
||||
$this->returnError('操作失败,您不能更改其他管理员组用户的密码');
|
||||
}
|
||||
|
||||
if($info['id'] == $this->adminInfo['id'] && $data['group'] != $info['group']){
|
||||
$this->returnError('操作失败,您不能更改自己的用户组');
|
||||
}
|
||||
|
||||
if($info['id'] == 1 && $data['group'] != $info['group']){
|
||||
$this->returnError('操作失败,您不能更改总管理员的用户组');
|
||||
}
|
||||
|
||||
$update['group'] = $data['group'];
|
||||
|
||||
//处理用户的VIP时间
|
||||
if($info['group_expire']<time()&&strtotime($data['group_expire'])>$info['group_expire']){
|
||||
$update['group_expire'] = strtotime($data['group_expire']);
|
||||
}
|
||||
Users::where('id',$id)->update($update);
|
||||
|
||||
return json(['code' => 200,'msg' => '用户信息修改成功']);
|
||||
|
||||
}else{
|
||||
$group = Groups::field('id,group_name')->select()->toArray();
|
||||
$this->assign('group',$group);
|
||||
$this->assign('info',$info);
|
||||
return $this->fetch();
|
||||
}
|
||||
}
|
||||
|
||||
public function change_status(){
|
||||
$id = input('get.id');
|
||||
$status = input('get.status');
|
||||
|
||||
$info = Users::get($id);
|
||||
|
||||
if($info->isEmpty()){
|
||||
$this->returnError('用户数据不存在');
|
||||
}
|
||||
|
||||
if($info['id'] == 1){
|
||||
$this->returnError('操作失败,您不能封禁总管理员的帐号');
|
||||
}
|
||||
|
||||
if($info['id'] == $this->adminInfo['id']){
|
||||
$this->returnError('操作失败,您不能封禁自己的帐号');
|
||||
}
|
||||
|
||||
Users::where('id',$id)->update(['status' => $status]);
|
||||
|
||||
return json(['code' => 200,'msg' => '用户状态切换成功']);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Admin;
|
||||
use app\common\model\Record;
|
||||
use app\common\model\Users;
|
||||
use app\common\model\Withdraw as WithdrawModel;
|
||||
|
||||
class Withdraw extends Admin
|
||||
{
|
||||
|
||||
public function index(){
|
||||
if($this->request->isAjax()){
|
||||
$page = input('get.page',1);
|
||||
$limit = input('get.limit',20);
|
||||
$list = WithdrawModel::order('create_time desc')
|
||||
->page($page,$limit)
|
||||
->field('id,uid,money,alipay_account,alipay_name,create_time,status')
|
||||
->select()->each(function($item){
|
||||
$item['uid'] = Users::where('id',$item['uid'])->value('username');
|
||||
$item['create_time'] = date('Y-m-d H:i',$item['create_time']);
|
||||
return $item;
|
||||
});
|
||||
|
||||
$count = WithdrawModel::count();
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '获取成功',
|
||||
'data' => $list->toArray(),
|
||||
'count' => $count
|
||||
]);
|
||||
}
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function delete(){
|
||||
$id = input('get.id');
|
||||
|
||||
WithdrawModel::where('id',$id)->delete();
|
||||
|
||||
return json(['code' => 200,'msg' => '删除成功']);
|
||||
}
|
||||
|
||||
public function change(){
|
||||
$id = input('get.id');
|
||||
$status = input('get.status');
|
||||
|
||||
$info = WithdrawModel::where('id',$id)->find();
|
||||
|
||||
if(empty($info)){
|
||||
return json(['code' => 502,'msg' => '数据记录不存在']);
|
||||
}
|
||||
|
||||
$info['status'] = $status;
|
||||
|
||||
$info->save();
|
||||
|
||||
if($status == 2){
|
||||
// 退回金额
|
||||
Record::addRecord($info['uid'],0,'提现退回',$info['money'],'提现系统退回金额');
|
||||
}
|
||||
|
||||
return json(['code' => 200,'msg' => '操作成功']);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
|
||||
<title> {$Think.config.app_name} 后台管理 </title>
|
||||
<!-- 样 式 文 件 -->
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/static/admin/css/other/login.css" />
|
||||
</head>
|
||||
<!-- 代 码 结 构 -->
|
||||
<body style="background-size: cover;">
|
||||
<form class="layui-form" action="javascript:void(0);">
|
||||
<div class="layui-form-item">
|
||||
<img class="logo" src="/static/admin/images/logo.png" />
|
||||
<div class="title">{$Think.config.app_name}Yun</div>
|
||||
<div class="desc">
|
||||
{$Think.config.app_name} 后台管理
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<input placeholder="账 户" type="text" name="username" hover class="layui-input"/>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<input placeholder="密 码" type="password" name="password" hover class="layui-input"/>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<input placeholder="验证码 : " type="text" maxlength="4" name="captcha" hover class="code layui-input layui-input-inline"/>
|
||||
<img id="codeimg" class="codeImage" style="cursor: pointer;width: calc(100% - 192px);"/>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<div class="layui-form-item">
|
||||
<button class="pear-btn pear-btn-success login" lay-submit lay-filter="login">
|
||||
登 入
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- 资 源 引 入 -->
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form', 'layer', 'jquery', 'element'], function () {
|
||||
var $ = layui.jquery
|
||||
, layer = layui.layer
|
||||
, element = layui.element
|
||||
, form = layui.form;
|
||||
// 登 录 提 交
|
||||
form.on('submit(login)', function(data) {
|
||||
layer.load();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
layer.closeAll('loading');
|
||||
if (res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function () {
|
||||
location.href = "{:url('index/index')}";
|
||||
})
|
||||
} else {
|
||||
layer.msg(res.msg,{icon:2,time:1000},function () {
|
||||
initCode();
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
initCode();
|
||||
function initCode() {
|
||||
$('#codeimg').attr("src","{:url('auth/verify')}?data=" + new Date().getTime());
|
||||
}
|
||||
|
||||
$('#codeimg').on('click', function () {
|
||||
initCode();
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,151 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="user-table" lay-filter="user-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="user-toolbar"></script>
|
||||
|
||||
<script type="text/html" id="user-bar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-survey"></i></button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/html" id="user-auth">
|
||||
{{#if (d.status == 0) { }}
|
||||
<span class="layui-badge layui-bg-orange">未审核</span>
|
||||
{{# }else if(d.status == 1){ }}
|
||||
<span class="layui-badge layui-bg-blue">已审核</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['table', 'form', 'jquery','common'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let common = layui.common;
|
||||
|
||||
let cols = [
|
||||
[{type: 'checkbox'},
|
||||
{title: 'ID', field: 'id', align: 'center'},
|
||||
{title: '用户帐号', field: 'uid', align: 'center'},
|
||||
{title: '真实姓名', field: 'name', align: 'center'},
|
||||
{title: '身份证号码', field: 'idcard', align: 'center'},
|
||||
{title: '处理状态', field: 'status', align: 'center', templet: '#user-auth'},
|
||||
{title: '创建时间', field: 'create_time', align: 'center'},
|
||||
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
|
||||
]
|
||||
]
|
||||
|
||||
table.render({
|
||||
elem: '#user-table',
|
||||
url: "{:url('certify/index')}",
|
||||
page: true,
|
||||
limit:20,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
toolbar: '#user-toolbar',
|
||||
defaultToolbar: [{
|
||||
title: '刷新',
|
||||
layEvent: 'refresh',
|
||||
icon: 'layui-icon-refresh',
|
||||
}, 'filter', 'print', 'exports']
|
||||
});
|
||||
|
||||
table.on('tool(user-table)', function(obj) {
|
||||
if (obj.event === 'remove') {
|
||||
window.remove(obj);
|
||||
} else if (obj.event === 'edit') {
|
||||
window.edit(obj);
|
||||
}
|
||||
});
|
||||
|
||||
table.on('toolbar(user-table)', function(obj) {
|
||||
if (obj.event === 'refresh') {
|
||||
window.refresh();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
window.edit = function(obj) {
|
||||
layer.confirm('确认通过该条实名认证请求吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('certify/edit')}?id=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
},function(){
|
||||
window.refresh();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.remove = function(obj) {
|
||||
layer.confirm('确定要删除该认证内容吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('certify/delete')}?id=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
window.refresh = function(param) {
|
||||
table.reload('user-table');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,177 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>控制后台</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/static/admin/css/other/console1.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<div>
|
||||
<div class="layui-row layui-col-space10">
|
||||
<div class="layui-col-xs6 layui-col-md3">
|
||||
<div class="layui-card top-panel">
|
||||
<div class="layui-card-header">用户数量</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-row layui-col-space5">
|
||||
<div class="layui-col-xs8 layui-col-md8 top-panel-number" style="color: #28333E;">
|
||||
{$count.user}
|
||||
</div>
|
||||
<div class="layui-col-xs4 layui-col-md4 top-panel-tips">
|
||||
<span class="icon pear-icon" style="font-size: 40px"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-xs6 layui-col-md3">
|
||||
<div class="layui-card top-panel">
|
||||
<div class="layui-card-header">VIP用户</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-row layui-col-space5">
|
||||
<div class="layui-col-xs8 layui-col-md8 top-panel-number" style="color: #28333E;">
|
||||
{$count.vip}
|
||||
</div>
|
||||
<div class="layui-col-xs4 layui-col-md4 top-panel-tips">
|
||||
<span class="icon pear-icon" style="font-size: 40px"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-xs6 layui-col-md3">
|
||||
<div class="layui-card top-panel">
|
||||
<div class="layui-card-header">文件数量</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-row layui-col-space5">
|
||||
<div class="layui-col-xs8 layui-col-md8 top-panel-number" style="color: #28333E;">
|
||||
{$count.file}
|
||||
</div>
|
||||
<div class="layui-col-xs4 layui-col-md4 top-panel-tips">
|
||||
<span class="icon pear-icon" style="font-size: 40px"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-xs6 layui-col-md3">
|
||||
<div class="layui-card top-panel">
|
||||
<div class="layui-card-header">文件大小</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-row layui-col-space5">
|
||||
<div class="layui-col-xs8 layui-col-md8 top-panel-number" style="color: #28333E;">
|
||||
{$count.size}
|
||||
</div>
|
||||
<div class="layui-col-xs4 layui-col-md4 top-panel-tips">
|
||||
<span class="icon pear-icon" style="font-size: 40px"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space10">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-tab custom-tab layui-tab-brief" lay-filter="docDemoTabBrief">
|
||||
<div id="echarts-records" style="background-color:#ffffff;min-height:400px;padding: 10px"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!--</div>-->
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['layer', 'echarts', 'element'], function() {
|
||||
var $ = layui.jquery,
|
||||
layer = layui.layer,
|
||||
element = layui.element,
|
||||
echarts = layui.echarts;
|
||||
|
||||
var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'walden');
|
||||
|
||||
var option = {
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
xAxis: [{
|
||||
type: 'category',
|
||||
data: [{$time_type|raw}],
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: "#999"
|
||||
}
|
||||
}
|
||||
}],
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
splitNumber: 4,
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
type: 'dashed',
|
||||
color: '#DDD'
|
||||
}
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: "#333"
|
||||
},
|
||||
},
|
||||
nameTextStyle: {
|
||||
color: "#999"
|
||||
},
|
||||
splitArea: {
|
||||
show: false
|
||||
}
|
||||
}],
|
||||
tooltip: {
|
||||
valueSuffix: ' 个',
|
||||
crosshairs: true,
|
||||
shared: true
|
||||
},
|
||||
legend: {
|
||||
layout: 'vertical',
|
||||
align: 'right',
|
||||
verticalAlign: 'middle',
|
||||
borderWidth: 0
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '注册',
|
||||
type: 'line',
|
||||
color: 'rgba(0,242,59,246)', marker: { radius: 6 }, data: [{$series_reg|raw}]
|
||||
},
|
||||
{
|
||||
name: '成功订单',
|
||||
type: 'line',
|
||||
color: 'rgba(0,15,182,59)', marker: { radius: 6 }, data: [{$series_order|raw}]
|
||||
},
|
||||
{
|
||||
name: '金额',
|
||||
type: 'line',
|
||||
color: 'rgba(0,92,219,192)', marker: { radius: 6 }, data: [{$series_money|raw}]
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
echartsRecords.setOption(option);
|
||||
|
||||
window.onresize = function() {
|
||||
echartsRecords.resize();
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,288 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form" action="">
|
||||
<div class="layui-form-item">
|
||||
|
||||
<div id="test6">
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">开始日期</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" autocomplete="off" name="start_time" id="test-startDate-1" class="layui-input" placeholder="开始日期">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">结束日期</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" autocomplete="off" name="end_time" id="test-endDate-1" class="layui-input" placeholder="结束日期">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">排序字段</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="sort_key" lay-verify="required">
|
||||
<option value="create_time">上传时间排序</option>
|
||||
<option value="update_time">更新时间排序</option>
|
||||
<option value="id">ID排序</option>
|
||||
<option value="size">文件大小排序</option>
|
||||
<option value="count_down">下载量排序</option>
|
||||
<option value="count_open">浏览量排序</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">排序方式</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="sort" lay-verify="required">
|
||||
<option value="0">降序</option>
|
||||
<option value="1">升序</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">存储筛选</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="policy" lay-verify="required">
|
||||
{volist name="$policy" id="vo"}
|
||||
<option value="{$vo.id}">{$vo.name}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">文件后缀</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="ext" placeholder="请输入文件后缀 如 png jpg 等" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">用户UID</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="uid" placeholder="请输入UID" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">文件名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="origin_name" placeholder="请输入文件名称" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<button class="pear-btn pear-btn-md pear-btn-primary" style="margin-left: 36px;" lay-submit lay-filter="user-query">
|
||||
<i class="layui-icon layui-icon-search"></i>
|
||||
搜索结果
|
||||
</button>
|
||||
<button type="reset" class="pear-btn pear-btn-md">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
重置搜索
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="user-table" lay-filter="user-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="user-toolbar">
|
||||
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
|
||||
<i class="layui-icon layui-icon-delete"></i>
|
||||
批量删除
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-bar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" title="下载文件" lay-event="download"><i class="layui-icon layui-icon-download-circle"></i></button>
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" title="查看文件" lay-event="info"><i class="layui-icon layui-icon-form"></i></button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-sm" title="删除文件" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="file-icon">
|
||||
<img src="{{ d.icon }}">
|
||||
</script>
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['table', 'form', 'jquery','common','laydate'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let common = layui.common;
|
||||
var laydate = layui.laydate;
|
||||
|
||||
laydate.render({
|
||||
elem: '#test6'
|
||||
,range: ['#test-startDate-1', '#test-endDate-1']
|
||||
});
|
||||
|
||||
let cols = [
|
||||
[{type: 'checkbox'},
|
||||
{title: '', field: 'icon', align: 'center',width: 40,templet: '#file-icon'},
|
||||
{title: '文件名', field: 'origin_name',width: 300, align: 'left'},
|
||||
{title: '大小', field: 'size', align: 'center'},
|
||||
{title: '上传用户', field: 'uid', align: 'center'},
|
||||
{title: '储存服务器', field: 'policy_id', align: 'center'},
|
||||
{title: '文件后缀', field: 'ext', align: 'center'},
|
||||
{title: '下载量', field: 'count_down', align: 'center'},
|
||||
{title: '浏览量', field: 'count_open', align: 'center'},
|
||||
{title: '上传时间', field: 'create_time', align: 'center'},
|
||||
{title: '操作', toolbar: '#user-bar', align: 'center', width: 160}
|
||||
]
|
||||
]
|
||||
|
||||
table.render({
|
||||
elem: '#user-table',
|
||||
url: "{:url('file/index')}",
|
||||
page: true,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
limit:20,
|
||||
toolbar: '#user-toolbar',
|
||||
defaultToolbar: [{
|
||||
title: '刷新',
|
||||
layEvent: 'refresh',
|
||||
icon: 'layui-icon-refresh',
|
||||
}, 'print', 'exports']
|
||||
});
|
||||
|
||||
table.on('tool(user-table)', function(obj) {
|
||||
if (obj.event === 'remove') {
|
||||
window.remove(obj);
|
||||
} else if(obj.event === 'info'){
|
||||
window.info(obj);
|
||||
} else if (obj.event === 'download') {
|
||||
window.download(obj);
|
||||
}
|
||||
});
|
||||
|
||||
table.on('toolbar(user-table)', function(obj) {
|
||||
if (obj.event === 'refresh') {
|
||||
window.refresh();
|
||||
} else if (obj.event === 'batchRemove') {
|
||||
window.batchRemove(obj);
|
||||
}
|
||||
});
|
||||
|
||||
form.on('submit(user-query)', function(data) {
|
||||
table.reload('user-table', {
|
||||
where: data.field
|
||||
})
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
window.info = function(obj) {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '文件信息',
|
||||
shade: 0.1,
|
||||
area: ['600px', '600px'],
|
||||
content: "{:url('file/info')}?id=" + obj.data['id']
|
||||
});
|
||||
}
|
||||
|
||||
window.download = function(obj) {
|
||||
window.open("{:url('file/download')}?id=" + obj.data['id']);
|
||||
}
|
||||
|
||||
window.remove = function(obj) {
|
||||
layer.confirm('确定要删除该文件吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('file/delete')}?ids=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.batchRemove = function(obj) {
|
||||
|
||||
var checkIds = common.checkField(obj,'id');
|
||||
|
||||
if (checkIds === "") {
|
||||
layer.msg("未选中数据", {
|
||||
icon: 3,
|
||||
time: 1000
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
layer.confirm('确定要删除这些文件[' + checkIds + ']吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('file/delete')}?ids=" + checkIds,
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
table.reload('user-table');
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.refresh = function(param) {
|
||||
table.reload('user-table');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,71 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">文件名</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$info.origin_name}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">文件大小</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{:countSize($info.size)}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">储存策略</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$policy_name}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">所属用户</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$username}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">储存地址</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$file_path}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">上传时间</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$info.create_time}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">更新时间</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$info.update_time}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,119 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户组名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="group_name" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">用户组的名称</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储策略</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="policy_id" lay-verify="required">
|
||||
{volist name="$policy" id="vo"}
|
||||
<option value="{$vo.id}">{$vo.name}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
<div class="layui-form-mid layui-word-aux">为该用户组绑定一个上传策略</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">上传大小</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="max_storage" required value="10" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-form-mid">单位:</div>
|
||||
<div class="layui-input-inline">
|
||||
<select name="storage_size" lay-verify="required">
|
||||
<option value="1">B</option>
|
||||
<option value="1024">KB</option>
|
||||
<option value="1048576" selected>MB</option>
|
||||
<option value="1073741824">GB</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">限制用户组单文件上传大小</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">下载限速</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="speed" min="0" placeholder="留空表示不限速" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"><b>KB/s</b> 填写0表示禁止下载</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">分享文件</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="allow_share" value="1" title="允许">
|
||||
<input type="radio" name="allow_share" value="0" title="禁止" checked>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">是否允许创建文件分享链接</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
|
||||
<i class="layui-icon layui-icon-ok"></i>
|
||||
提交
|
||||
</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
重置
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
parent.layui.table.reload("user-table");
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,118 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户组名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="group_name" value="{$info.group_name}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">用户组的名称</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储策略</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="policy_id" lay-verify="required">
|
||||
{volist name="$policy" id="vo"}
|
||||
<option value="{$vo.id}" {eq name="$vo.id" value="$info.policy_id"}selected{/eq}>{$vo.name}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
<div class="layui-form-mid layui-word-aux">为该用户组绑定一个上传策略</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">上传大小</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="max_storage" required value="{:countSize($info.max_storage,true)[0]}" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-form-mid">单位:</div>
|
||||
<div class="layui-input-inline">
|
||||
<select name="storage_size" lay-verify="required">
|
||||
{php}
|
||||
$storage_size = countSize($info['max_storage'],true)[1];
|
||||
{/php}
|
||||
<option value="1" {eq name="$storage_size" value="1"}selected{/eq}>B</option>
|
||||
<option value="1024" {eq name="$storage_size" value="1024"}selected{/eq}>KB</option>
|
||||
<option value="1048576" {eq name="$storage_size" value="1048576"}selected{/eq}>MB</option>
|
||||
<option value="1073741824" {eq name="$storage_size" value="1073741824"}selected{/eq}>GB</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">限制用户组单文件上传大小</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">下载限速</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="speed" min="0" value="{$info.speed}" placeholder="留空表示不限速" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"><b>KB/s</b> 填写0表示禁止下载</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">分享文件</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="allow_share" value="1" title="允许" {eq name="$info.allow_share" value="1"}checked{/eq}>
|
||||
<input type="radio" name="allow_share" value="0" title="禁止" {eq name="$info.allow_share" value="0"}checked{/eq}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">是否允许创建文件分享链接</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
|
||||
<i class="layui-icon layui-icon-ok"></i>
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
parent.layui.table.reload("user-table");
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,158 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>用户组管理</title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="user-table" lay-filter="user-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="user-toolbar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
|
||||
<i class="layui-icon layui-icon-add-1"></i>
|
||||
新增用户组
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-bar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-speed">
|
||||
{{#if (d.speed == '') { }}
|
||||
<span class="layui-badge layui-bg-blue">不限速</span>
|
||||
{{# }else if(d.speed == 0){ }}
|
||||
<span class="layui-badge layui-bg-orange">禁止下载</span>
|
||||
{{# }else if(d.speed > 0){ }}
|
||||
<span class="layui-badge-rim">{{ d.speed }} KB/s</span>
|
||||
{{# } }}
|
||||
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-share">
|
||||
{{#if (d.allow_share == 0) { }}
|
||||
<span class="layui-badge layui-bg-orange">禁止</span>
|
||||
{{# }else if(d.allow_share == 1){ }}
|
||||
<span class="layui-badge layui-bg-blue">允许</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['table', 'form', 'jquery','common'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let common = layui.common;
|
||||
|
||||
let cols = [
|
||||
[{type: 'checkbox'},
|
||||
{title: 'ID', field: 'id', align: 'center'},
|
||||
{title: '用户组名称', field: 'group_name', align: 'center'},
|
||||
{title: '类型', field: 'is_sys', align: 'center'},
|
||||
{title: '存储策略', field: 'policy_id', align: 'center'},
|
||||
{title: '用户数量', field: 'user_num', align: 'center'},
|
||||
{title: '上传大小限制', field: 'max_storage', align: 'center'},
|
||||
{title: '下载限速', field: 'speed', align: 'center', templet: '#user-speed'},
|
||||
{title: '允许分享', field: 'allow_share', align: 'center', templet: '#user-share'},
|
||||
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
|
||||
]
|
||||
]
|
||||
|
||||
table.render({
|
||||
elem: '#user-table',
|
||||
url: window.location.href,
|
||||
page: true,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
toolbar: '#user-toolbar',
|
||||
defaultToolbar: [{
|
||||
title: '刷新',
|
||||
layEvent: 'refresh',
|
||||
icon: 'layui-icon-refresh',
|
||||
}, 'print', 'exports']
|
||||
});
|
||||
|
||||
table.on('tool(user-table)', function(obj) {
|
||||
if (obj.event === 'remove') {
|
||||
window.remove(obj);
|
||||
} else if (obj.event === 'edit') {
|
||||
window.edit(obj);
|
||||
}
|
||||
});
|
||||
|
||||
table.on('toolbar(user-table)', function(obj) {
|
||||
if (obj.event === 'add') {
|
||||
window.add();
|
||||
} else if (obj.event === 'refresh') {
|
||||
window.refresh();
|
||||
}
|
||||
});
|
||||
|
||||
window.add = function() {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '新增用户组',
|
||||
shade: 0.1,
|
||||
area: [common.isModile()?'100%':'600px', common.isModile()?'100%':'500px'],
|
||||
content: "{:url('group/add')}"
|
||||
});
|
||||
}
|
||||
|
||||
window.edit = function(obj) {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '修改用户组',
|
||||
shade: 0.1,
|
||||
area: ['600px', '500px'],
|
||||
content: "{:url('group/edit')}?id=" + obj.data['id']
|
||||
});
|
||||
}
|
||||
|
||||
window.remove = function(obj) {
|
||||
layer.confirm('确定要删除该用户组吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('group/delete')}?id=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.refresh = function(param) {
|
||||
table.reload('user-table');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title> {$Think.config.app_name} 后台管理 </title>
|
||||
<!-- 依 赖 样 式 -->
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
<!-- 加 载 样 式-->
|
||||
<link rel="stylesheet" href="/static/admin/css/load.css" />
|
||||
<!-- 布 局 样 式 -->
|
||||
<link rel="stylesheet" href="/static/admin/css/admin.css" />
|
||||
<script>
|
||||
if(window!=top){ top.location.href = location.href; }
|
||||
var skpan_config = {
|
||||
title:"{$theme.title}",
|
||||
logo:"{$theme.logo}",
|
||||
menu: {$theme.menu|raw},
|
||||
menu_select:"{$theme.menu_select}",
|
||||
home_url:"{$theme.home_url}",
|
||||
index_url:"{$theme.index_url}",
|
||||
logout_url:"{$theme.logout_url}",
|
||||
pass_url:"{$theme.pass_url}",
|
||||
clear_cache_url:"{$theme.clear_cache_url}"
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<!-- 结 构 代 码 -->
|
||||
<body class="layui-layout-body pear-admin">
|
||||
<!-- 布 局 框 架 -->
|
||||
<div class="layui-layout layui-layout-admin">
|
||||
<div class="layui-header">
|
||||
<!-- 顶 部 左 侧 功 能 -->
|
||||
<ul class="layui-nav layui-layout-left">
|
||||
<li class="collaspe layui-nav-item"><a href="#" class="layui-icon layui-icon-shrink-right"></a></li>
|
||||
<li class="refresh layui-nav-item"><a href="#" class="layui-icon layui-icon-refresh-1" loading=600></a></li>
|
||||
</ul>
|
||||
<!-- 顶 部 右 侧 菜 单 -->
|
||||
<div id="control" class="layui-layout-control"></div>
|
||||
<ul class="layui-nav layui-layout-right" lay-filter="layui_nav_right">
|
||||
<li class="layui-nav-item layui-hide-xs"><a href="#" class="fullScreen layui-icon layui-icon-screen-full"></a></li>
|
||||
<li class="layui-nav-item user">
|
||||
<!-- 头 像 -->
|
||||
<a href="javascript:;">
|
||||
<img src="{$theme.admin.avatar}" class="layui-nav-img">
|
||||
{$theme.admin.nickname}
|
||||
</a>
|
||||
<!-- 功 能 菜 单 -->
|
||||
<dl class="layui-nav-child">
|
||||
<dd>
|
||||
<a href="javascript:void(0);" class="logout">
|
||||
退出登录
|
||||
</a>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- 侧 边 区 域 -->
|
||||
<div class="layui-side layui-bg-black">
|
||||
<!-- 顶 部 图 标 -->
|
||||
<div class="layui-logo">
|
||||
<!-- 图 表 -->
|
||||
<img class="logo">
|
||||
<!-- 标 题 -->
|
||||
<span class="title"></span>
|
||||
</div>
|
||||
<!-- 侧 边 菜 单 -->
|
||||
<div class="layui-side-scroll">
|
||||
<div id="sideMenu"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 视 图 页 面 -->
|
||||
<div class="layui-body">
|
||||
<!-- 内 容 页 面 -->
|
||||
<div id="content"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 遮 盖 层 -->
|
||||
<div class="pear-cover"></div>
|
||||
<!-- 移 动 端 便 捷 操 作 -->
|
||||
<div class="pear-collasped-pe collaspe"><a href="#" class="layui-icon layui-icon-shrink-right"></a></div>
|
||||
<!-- 加 载 动 画-->
|
||||
<div class="loader-main">
|
||||
<div class="loader"></div>
|
||||
</div>
|
||||
<!-- 依 赖 脚 本 -->
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<!-- 框 架 初 始 化 -->
|
||||
<script src="/static/admin/js/boostrap.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,222 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form" action="">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">搜索类型</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="search_type" lay-verify="required">
|
||||
<option value="trade_no">订单号</option>
|
||||
<option value="out_trade_no">易支付订单号</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">支付状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="status" lay-verify="required">
|
||||
<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">搜索内容</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="search_value" placeholder="请输入搜索内容" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="user-query">
|
||||
<i class="layui-icon layui-icon-search"></i>
|
||||
搜索结果
|
||||
</button>
|
||||
<button type="reset" class="pear-btn pear-btn-md">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
重置搜索
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="user-table" lay-filter="user-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="user-toolbar">
|
||||
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
|
||||
<i class="layui-icon layui-icon-delete"></i>
|
||||
批量删除
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-bar">
|
||||
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/html" id="user-auth">
|
||||
{{#if (d.status == 0) { }}
|
||||
<span class="layui-badge layui-bg-orange">等待支付</span>
|
||||
{{# }else if(d.status == 1){ }}
|
||||
<span class="layui-badge layui-bg-blue">支付完成</span>
|
||||
{{# }else if(d.status == 2){ }}
|
||||
<span class="layui-badge layui-bg-red">订单关闭</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['table', 'form', 'jquery','common'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let common = layui.common;
|
||||
|
||||
let cols = [
|
||||
[{type: 'checkbox'},
|
||||
{title: '订单号', field: 'trade_no', align: 'center', width: 250},
|
||||
{title: '开通用户', field: 'uid', align: 'center'},
|
||||
{title: '支付方式', field: 'type', align: 'center'},
|
||||
{title: '支付金额', field: 'money', align: 'center'},
|
||||
{title: '开通时长', field: 'vip_day', align: 'center'},
|
||||
{title: '易支付订单号', field: 'out_trade_no', align: 'center'},
|
||||
{title: '支付状态', field: 'status', align: 'center', templet: '#user-auth'},
|
||||
{title: '发起时间', field: 'create_time', align: 'center'},
|
||||
{title: '支付时间', field: 'pay_time', align: 'center'},
|
||||
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
|
||||
]
|
||||
]
|
||||
|
||||
table.render({
|
||||
elem: '#user-table',
|
||||
url: "{:url('order/index')}",
|
||||
page: true,
|
||||
limit: 20,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
toolbar: '#user-toolbar',
|
||||
defaultToolbar: [{
|
||||
title: '刷新',
|
||||
layEvent: 'refresh',
|
||||
icon: 'layui-icon-refresh',
|
||||
}, 'filter', 'print', 'exports']
|
||||
});
|
||||
|
||||
table.on('tool(user-table)', function(obj) {
|
||||
if (obj.event === 'remove') {
|
||||
window.remove(obj);
|
||||
}
|
||||
});
|
||||
|
||||
table.on('toolbar(user-table)', function(obj) {
|
||||
if (obj.event === 'refresh') {
|
||||
window.refresh();
|
||||
} else if (obj.event === 'batchRemove') {
|
||||
window.batchRemove(obj);
|
||||
}
|
||||
});
|
||||
|
||||
form.on('submit(user-query)', function(data) {
|
||||
table.reload('user-table', {
|
||||
where: data.field
|
||||
})
|
||||
return false;
|
||||
});
|
||||
|
||||
window.remove = function(obj) {
|
||||
layer.confirm('确定要删除订单吗?<br><b style="color: red">请勿删除正在等待支付或者支付完成的订单</b>', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('order/delete')}?ids=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.batchRemove = function(obj) {
|
||||
|
||||
var checkIds = common.checkField(obj,'id');
|
||||
|
||||
if (checkIds === "") {
|
||||
layer.msg("未选中数据", {
|
||||
icon: 3,
|
||||
time: 1000
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
layer.confirm('确定要批量删除这些订单吗?<br><b style="color: red">请勿删除正在等待支付或者支付完成的订单</b>', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('order/delete')}?ids=" + checkIds,
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
table.reload('user-table');
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.refresh = function(param) {
|
||||
table.reload('user-table');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,241 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
<style>
|
||||
.remote_field{
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">策略名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" lay-verify="required" placeholder="请输入上传策略的名称" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">允许后缀</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="filetype" placeholder="请输入文件后缀" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">多个请以半角逗号","隔开,留空表示不限制。如"png,jpg"</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储服务器</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="type" lay-verify="required" lay-filter="server_select">
|
||||
<option value="local">本地</option>
|
||||
<option value="remote">远程</option>
|
||||
<option value="aliyunoss">阿里云OSS</option>
|
||||
<option value="txyunoss">腾讯云COS</option>
|
||||
</select>
|
||||
<div class="layui-form-mid layui-word-aux">文件存储的服务器</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="other-field">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
|
||||
<i class="layui-icon layui-icon-ok"></i>
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script id="field_local" type="text/html">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储目录</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="save_dir" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始,结尾要加"/",例如:/uploads/</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script id="field_remote" type="text/html">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储目录</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="save_dir" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始,结尾要加"/",例如:/uploads/</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">远程Token</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="access_token" placeholder="AccessToken" lay-verify="required" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请与远程服务端配置文件中保持一致</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">服务端URL</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="server_uri" placeholder="服务端URL" lay-verify="required" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请填写合法的URL地址,结尾要加"/"</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</script>
|
||||
|
||||
<script id="field_aliyunoss" type="text/html">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储目录</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="save_dir" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始,结尾要加"/",例如:/uploads/</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Endpoint</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="endpoint" placeholder="Endpoint" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">OSS Endpoint</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Bucket</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="bucket" placeholder="Bucket" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">OSS Bucket</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">AccessKey</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="access_key" placeholder="AccessKey" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">OSS AccessKey</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">AccessKeySecret</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="access_secret" placeholder="AccessKeySecret" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">OSS AccessKeySecret</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</script>
|
||||
|
||||
<script id="field_txyunoss" type="text/html">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储目录</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="save_dir" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始,结尾要加"/",例如:/uploads/</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">SecretId</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="secret_id" placeholder="SecretId" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">COS SecretId</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">SecretKey</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="secret_key" placeholder="SecretKey" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">COS SecretKey</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Bucket</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="bucket" placeholder="Bucket" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">COS Bucket</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Region</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="region" placeholder="Region" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">COS Region 存储桶地域</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
setFieldHtml('local');
|
||||
|
||||
function setFieldHtml(field){
|
||||
let field_name = '#field_' + field;
|
||||
let html = $(field_name).html();
|
||||
|
||||
if(typeof html !== "undefined"){
|
||||
$(".other-field").html(html);
|
||||
return true;
|
||||
}
|
||||
|
||||
$(".other-field").html("");
|
||||
return false;
|
||||
}
|
||||
|
||||
form.on('select(server_select)',function(obj){
|
||||
setFieldHtml(obj.value);
|
||||
});
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
parent.layui.table.reload("user-table");
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,241 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
<style>
|
||||
.remote_field{
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">策略名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" lay-verify="required" value="{$info.name}" placeholder="请输入上传策略的名称" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">允许后缀</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="filetype" value="{$info.filetype}" placeholder="请输入文件后缀" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">多个请以半角逗号","隔开,留空表示不限制。如"png,jpg"</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储服务器</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="type" lay-verify="required" lay-filter="server_select" disabled>
|
||||
<option value="local" {eq name="$info.type" value="local"}selected{/eq}>本地</option>
|
||||
<option value="remote" {eq name="$info.type" value="remote"}selected{/eq}>远程</option>
|
||||
<option value="aliyunoss" {eq name="$info.type" value="aliyunoss"}selected{/eq}>阿里云OSS</option>
|
||||
<option value="txyunoss" {eq name="$info.type" value="txyunoss"}selected{/eq}>腾讯云C0S</option>
|
||||
</select>
|
||||
<div class="layui-form-mid layui-word-aux">文件存储的服务器</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="other-field">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
|
||||
<i class="layui-icon layui-icon-ok"></i>
|
||||
保存修改
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{eq name="$info.type" value="local"}
|
||||
<script id="field_local" type="text/html">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储目录</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="save_dir" value="{$info.config.save_dir}" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始,结尾要加"/",例如:/uploads/</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
{/eq}
|
||||
|
||||
{eq name="$info.type" value="remote"}
|
||||
<script id="field_remote" type="text/html">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储目录</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="save_dir" value="{$info.config.save_dir}" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始,结尾要加"/",例如:/uploads/</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">远程Token</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="access_token" value="{$info.config.access_token}" placeholder="AccessToken" lay-verify="required" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请与远程服务端配置文件中保持一致</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">服务端URL</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="server_uri" value="{$info.config.server_uri}" placeholder="服务端URL" lay-verify="required" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请填写合法的URL地址,结尾要加"/"</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</script>
|
||||
{/eq}
|
||||
|
||||
{eq name="$info.type" value="aliyunoss"}
|
||||
<script id="field_aliyunoss" type="text/html">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储目录</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="save_dir" value="{$info.config.save_dir}" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始,结尾要加"/",例如:/uploads/</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Endpoint</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="endpoint" value="{$info.config.endpoint}" placeholder="Endpoint" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">OSS Endpoint</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Bucket</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="bucket" value="{$info.config.bucket}" placeholder="Bucket" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">OSS Bucket</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">AccessKey</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="access_key" value="{$info.config.access_key}" placeholder="AccessKey" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">OSS AccessKey</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">AccessKeySecret</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="access_secret" value="{$info.config.access_secret}" placeholder="AccessKeySecret" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">OSS AccessKeySecret</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</script>
|
||||
{/eq}
|
||||
|
||||
{eq name="$info.type" value="txyunoss"}
|
||||
<script id="field_txyunoss" type="text/html">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">存储目录</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="save_dir" value="{$info.config.save_dir}" placeholder="请输入文件存放的目录" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">请以根目录 / 开始,结尾要加"/",例如:/uploads/</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">SecretId</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="secret_id" value="{$info.config.secret_id}" placeholder="SecretId" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">COS SecretId</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">SecretKey</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="secret_key" value="{$info.config.secret_key}" placeholder="SecretKey" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">COS SecretKey</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Bucket</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="bucket" value="{$info.config.bucket}" placeholder="Bucket" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">COS Bucket</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Region</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="region" value="{$info.config.region}" placeholder="Region" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">COS Region 存储桶地域</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
{/eq}
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
function setFieldHtml(field){
|
||||
let field_name = '#field_' + field;
|
||||
let html = $(field_name).html();
|
||||
|
||||
if(typeof html !== "undefined"){
|
||||
$(".other-field").html(html);
|
||||
return true;
|
||||
}
|
||||
|
||||
$(".other-field").html("");
|
||||
return false;
|
||||
}
|
||||
|
||||
setFieldHtml('{$info.type}');
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
parent.layui.table.reload("user-table");
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,136 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="user-table" lay-filter="user-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="user-toolbar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
|
||||
<i class="layui-icon layui-icon-add-1"></i>
|
||||
添加策略
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-bar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
</script>
|
||||
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['table', 'form', 'jquery','common'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let common = layui.common;
|
||||
|
||||
let cols = [
|
||||
[{type: 'checkbox'},
|
||||
{title: '策略名称', field: 'name', align: 'center'},
|
||||
{title: '类型', field: 'type', align: 'center'},
|
||||
{title: '文件数量', field: 'file_num', align: 'center'},
|
||||
{title: '存储数据量', field: 'store_num', align: 'center'},
|
||||
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
|
||||
]
|
||||
]
|
||||
|
||||
table.render({
|
||||
elem: '#user-table',
|
||||
url: "{:url('policy/index')}",
|
||||
page: true,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
toolbar: '#user-toolbar',
|
||||
defaultToolbar: [{
|
||||
title: '刷新',
|
||||
layEvent: 'refresh',
|
||||
icon: 'layui-icon-refresh',
|
||||
}, 'filter', 'print', 'exports']
|
||||
});
|
||||
|
||||
table.on('tool(user-table)', function(obj) {
|
||||
if (obj.event === 'remove') {
|
||||
window.remove(obj);
|
||||
} else if (obj.event === 'edit') {
|
||||
window.edit(obj);
|
||||
}
|
||||
});
|
||||
|
||||
table.on('toolbar(user-table)', function(obj) {
|
||||
if (obj.event === 'add') {
|
||||
window.add();
|
||||
} else if (obj.event === 'refresh') {
|
||||
window.refresh();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
window.add = function() {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '添加策略',
|
||||
shade: 0.1,
|
||||
area: [common.isModile()?'100%':'600px', common.isModile()?'100%':'600px'],
|
||||
content: "{:url('Policy/add')}"
|
||||
});
|
||||
}
|
||||
|
||||
window.edit = function(obj) {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '修改策略',
|
||||
shade: 0.1,
|
||||
area: [common.isModile()?'100%':'600px', common.isModile()?'100%':'600px'],
|
||||
content: "{:url('policy/edit')}?id=" + obj.data['id']
|
||||
});
|
||||
}
|
||||
|
||||
window.remove = function(obj) {
|
||||
layer.confirm('确定要删除该储存策略吗?<b style="color: red">删除后会导致上传文件不能下载,且不可恢复</b>', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('policy/delete')}?id=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.refresh = function(param) {
|
||||
table.reload('user-table');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,351 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form" action="">
|
||||
<div class="layui-form-item">
|
||||
|
||||
<div id="test6">
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">开始日期</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" autocomplete="off" name="start_time" id="test-startDate-1" class="layui-input" placeholder="开始日期">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">结束日期</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" autocomplete="off" name="end_time" id="test-endDate-1" class="layui-input" placeholder="结束日期">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">排序字段</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="sort_key" lay-verify="required">
|
||||
<option value="delete_time">删除时间排序</option>
|
||||
<option value="update_time">更新时间排序</option>
|
||||
<option value="id">ID排序</option>
|
||||
<option value="size">文件大小排序</option>
|
||||
<option value="count_down">下载量排序</option>
|
||||
<option value="count_open">浏览量排序</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">排序方式</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="sort" lay-verify="required">
|
||||
<option value="0">降序</option>
|
||||
<option value="1">升序</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">存储筛选</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="policy" lay-verify="required">
|
||||
{volist name="$policy" id="vo"}
|
||||
<option value="{$vo.id}">{$vo.name}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">文件后缀</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="ext" placeholder="请输入文件后缀 如 png jpg 等" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">用户UID</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="number" name="uid" placeholder="请输入UID" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">文件名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="origin_name" placeholder="请输入文件名称" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<button class="pear-btn pear-btn-md pear-btn-primary" style="margin-left: 36px;" lay-submit lay-filter="user-query">
|
||||
<i class="layui-icon layui-icon-search"></i>
|
||||
搜索结果
|
||||
</button>
|
||||
<button type="reset" class="pear-btn pear-btn-md">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
重置搜索
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="user-table" lay-filter="user-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="user-toolbar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="batchBack">
|
||||
<i class="layui-icon layui-icon-time"></i>
|
||||
批量还原
|
||||
</button>
|
||||
|
||||
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
|
||||
<i class="layui-icon layui-icon-delete"></i>
|
||||
彻底删除
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-bar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="back"><i class="layui-icon layui-icon-time"></i></button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/html" id="file-icon">
|
||||
<img src="{{ d.icon }}">
|
||||
</script>
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['table', 'form', 'jquery','common','laydate'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let common = layui.common;
|
||||
var laydate = layui.laydate;
|
||||
|
||||
laydate.render({
|
||||
elem: '#test6'
|
||||
,range: ['#test-startDate-1', '#test-endDate-1']
|
||||
});
|
||||
|
||||
let cols = [
|
||||
[{type: 'checkbox'},
|
||||
{title: '', field: 'icon', align: 'center',width: 40,templet: '#file-icon'},
|
||||
{title: '文件名', field: 'origin_name',width: 300, align: 'left'},
|
||||
{title: '大小', field: 'size', align: 'center'},
|
||||
{title: '上传用户', field: 'uid', align: 'center'},
|
||||
{title: '储存服务器', field: 'policy_id', align: 'center'},
|
||||
{title: '文件后缀', field: 'ext', align: 'center'},
|
||||
{title: '下载量', field: 'count_down', align: 'center'},
|
||||
{title: '浏览量', field: 'count_open', align: 'center'},
|
||||
{title: '删除时间', field: 'create_time', align: 'center'},
|
||||
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
|
||||
]
|
||||
]
|
||||
|
||||
table.render({
|
||||
elem: '#user-table',
|
||||
url: "{:url('recycle/index')}",
|
||||
page: true,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
limit:20,
|
||||
toolbar: '#user-toolbar',
|
||||
defaultToolbar: [{
|
||||
title: '刷新',
|
||||
layEvent: 'refresh',
|
||||
icon: 'layui-icon-refresh',
|
||||
}, 'print', 'exports']
|
||||
});
|
||||
|
||||
table.on('tool(user-table)', function(obj) {
|
||||
if (obj.event === 'remove') {
|
||||
window.remove(obj);
|
||||
}else if(obj.event === 'back'){
|
||||
window.restore(obj);
|
||||
}
|
||||
});
|
||||
|
||||
table.on('toolbar(user-table)', function(obj) {
|
||||
if (obj.event === 'refresh') {
|
||||
window.refresh();
|
||||
} else if (obj.event === 'batchRemove') {
|
||||
window.batchRemove(obj);
|
||||
} else if (obj.event === 'batchBack'){
|
||||
window.batchRestore(obj);
|
||||
}
|
||||
});
|
||||
|
||||
form.on('submit(user-query)', function(data) {
|
||||
table.reload('user-table', {
|
||||
where: data.field
|
||||
})
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
window.restore = function(obj){
|
||||
layer.confirm('确认要恢复该文件吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('recycle/restore')}?ids=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.remove = function(obj) {
|
||||
layer.confirm('确定要彻底删除该文件吗?<b style="color: red">删除后储存数据会被清空,且不可恢复</b>', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('recycle/delete')}?ids=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.batchRemove = function(obj) {
|
||||
|
||||
var checkIds = common.checkField(obj,'id');
|
||||
|
||||
if (checkIds === "") {
|
||||
layer.msg("未选中数据", {
|
||||
icon: 3,
|
||||
time: 1000
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
layer.confirm('确定要删除这些文件[' + checkIds + ']吗,<b style="color: red">删除后数据不可恢复</b>', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('recycle/delete')}?ids=" + checkIds,
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
table.reload('user-table');
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.batchRestore = function(obj){
|
||||
var checkIds = common.checkField(obj,'id');
|
||||
|
||||
if (checkIds === "") {
|
||||
layer.msg("未选中数据", {
|
||||
icon: 3,
|
||||
time: 1000
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
layer.confirm('确定要恢复这些文件[' + checkIds + ']吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('recycle/restore')}?ids=" + checkIds,
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
table.reload('user-table');
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.refresh = function(param) {
|
||||
table.reload('user-table');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,113 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">文件/目录名</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$info.source_name}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">储存类型</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$info.source_type?'文件':'目录'}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">所属用户</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$info.source_username}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">链接地址</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid"><a href="{$info.source_url}" target="_blank">{$info.source_url}</a></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">举报类型</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$info.type}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">联系方式</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$info.contact}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">举报理由</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$info.content}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
|
||||
<i class="layui-icon layui-icon-ok"></i>
|
||||
完成处理
|
||||
</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
取消处理
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify({status:1}),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
parent.layui.table.reload("user-table");
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,135 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="user-table" lay-filter="user-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="user-toolbar"></script>
|
||||
|
||||
<script type="text/html" id="user-bar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-survey"></i></button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/html" id="user-auth">
|
||||
{{#if (d.status == 0) { }}
|
||||
<span class="layui-badge layui-bg-orange">未处理</span>
|
||||
{{# }else if(d.status == 1){ }}
|
||||
<span class="layui-badge layui-bg-blue">已处理</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-url">
|
||||
<a href="{{ d.source_url }}" target="_blank">{{ d.source_url }}</a>
|
||||
</script>
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['table', 'form', 'jquery','common'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let common = layui.common;
|
||||
|
||||
let cols = [
|
||||
[{type: 'checkbox'},
|
||||
{title: '文件/目录名', field: 'source_name', align: 'center'},
|
||||
{title: '链接地址', field: 'source_url', align: 'center', templet: '#user-url'},
|
||||
{title: '所属用户', field: 'source_username', align: 'center'},
|
||||
{title: '危害类别', field: 'type', align: 'center'},
|
||||
{title: '联系方式', field: 'contact', align: 'center'},
|
||||
{title: '举报IP', field: 'real_ip', align: 'center'},
|
||||
{title: '处理状态', field: 'status', align: 'center', templet: '#user-auth'},
|
||||
{title: '创建时间', field: 'create_time', align: 'center'},
|
||||
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
|
||||
]
|
||||
]
|
||||
|
||||
table.render({
|
||||
elem: '#user-table',
|
||||
url: "{:url('report/index')}",
|
||||
page: true,
|
||||
limit:20,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
toolbar: '#user-toolbar',
|
||||
defaultToolbar: [{
|
||||
title: '刷新',
|
||||
layEvent: 'refresh',
|
||||
icon: 'layui-icon-refresh',
|
||||
}, 'filter', 'print', 'exports']
|
||||
});
|
||||
|
||||
table.on('tool(user-table)', function(obj) {
|
||||
if (obj.event === 'remove') {
|
||||
window.remove(obj);
|
||||
} else if (obj.event === 'edit') {
|
||||
window.edit(obj);
|
||||
}
|
||||
});
|
||||
|
||||
table.on('toolbar(user-table)', function(obj) {
|
||||
if (obj.event === 'refresh') {
|
||||
window.refresh();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
window.edit = function(obj) {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '处理举报',
|
||||
shade: 0.1,
|
||||
area: ['600px', '520px'],
|
||||
content: "{:url('report/edit')}?id=" + obj.data['id']
|
||||
});
|
||||
}
|
||||
|
||||
window.remove = function(obj) {
|
||||
layer.confirm('确定要删除该举报内容吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('report/delete')}?id=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.refresh = function(param) {
|
||||
table.reload('user-table');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,145 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">站点名称</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="site_title" value="{$option.site_title}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">站点的名称,将会展示在个页面的标题尾部、邮件中。</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">站点LOGO</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="site_logo" value="{$option.site_logo}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">站点logo路径</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">网站首页</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<select name="index_theme" lay-verify="required">
|
||||
<option value="default" {eq name="$option.index_theme" value="default"}selected{/eq}>旧版主题</option>
|
||||
<option value="new1" {eq name="$option.index_theme" value="new1"}selected{/eq}>新版主题</option>
|
||||
</select>
|
||||
<div class="layui-form-mid layui-word-aux">网站首页主题</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">SEO标题</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="site_name" value="{$option.site_name}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">位于首页meta标签内的站点标题</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">SEO关键词</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="site_keywords" value="{$option.site_keywords}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">位于首页meta标签内的站点关键词</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">SEO描述</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<textarea name="site_desc" placeholder="位于首页meta标签内的SEO描述" class="layui-textarea">{$option.site_desc}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">网站头部</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<textarea name="site_head" placeholder="网站头部代码,用于百度站长等工具验证" class="layui-textarea">{$option.site_head}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">网站底部</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<textarea name="site_foot" placeholder="网站底部代码,你可以在此放置统计代码" class="layui-textarea">{$option.site_foot}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">站点邮箱</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="site_email" value="{$option.site_email}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">站点的用户投诉举报邮箱</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">客服信息</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<textarea name="site_kefu" placeholder="" class="layui-textarea">{$option.site_kefu}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存设置</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,122 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">邮件服务器</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="smtp_host" value="{$option.smtp_host}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">邮箱的SMTP服务器地址</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">SMTP端口</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="smtp_port" value="{$option.smtp_port}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">SSL连接SMTP服务器的远程服务器端口号</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">发信昵称</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="nickname" value="{$option.nickname}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">显示在收件人邮件的发件人邮箱地址前的发件人姓名</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">邮箱帐号</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="username" value="{$option.username}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">SMTP登录的账号</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">邮箱密码</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="password" value="{$option.password}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">SMTP登录的密码 使用生成的授权码</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">找回密码模板</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<textarea name="template_forget" id="edit" cols="30" rows="10">{$option.template_forget}</textarea>
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
模板内变量:
|
||||
{username} 用户帐号
|
||||
{literal}{url}{/literal} 重设密码url地址
|
||||
{site_name} 站点名称
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存设置</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery','tinymce'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
var tinymce = layui.tinymce
|
||||
var edit = tinymce.render({
|
||||
elem: "#edit",
|
||||
height: 400,
|
||||
menubar: false, //隐藏菜单栏
|
||||
plugins: "code",
|
||||
toolbar: "code",
|
||||
});
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
data.field['template_forget'] = edit.getContent()
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,91 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">易支付网关</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="api_gateway" value="{$option.api_gateway}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
支付网关注册地址:只要是易支付即可
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">易支付商户</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="api_pid" value="{$option.api_pid}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
请填写易支付的商户ID
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">易支付密钥</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="text" name="api_key" value="{$option.api_key}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
请填写易支付的商户密钥
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存设置</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,82 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">允许注册</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="allow_register" value="1" title="允许" {eq name="$option.allow_register" value="1"}checked{/eq}>
|
||||
<input type="radio" name="allow_register" value="0" title="禁止" {eq name="$option.allow_register" value="0"}checked{/eq}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">是否允许新用户注册</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">默认用户组</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<select name="default_group" lay-verify="required">
|
||||
{volist name="$group" id="vo"}
|
||||
<option value="{$vo.id}" {eq name="$option.default_group" value="$vo.id"}selected{/eq}>{$vo.group_name}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
<div class="layui-form-mid layui-word-aux">用户注册后默认属于的用户组</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存设置</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">VIP用户组</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<select name="vip_group" lay-verify="required">
|
||||
{volist name="$group" id="vo"}
|
||||
<option value="{$vo.id}" {eq name="$option.vip_group" value="$vo.id"}selected{/eq}>{$vo.group_name}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
<div class="layui-form-mid layui-word-aux">开通VIP后属于的用户组</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">VIP分成</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<input type="number" name="vip_profit" value="{$option.vip_profit}" required lay-verify="required" autocomplete="off" class="layui-input">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
游客通过分享者的链接开通VIP后,分享者获得的提成。请填写百分比如50%那么就填写50
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">VIP价格规则</label>
|
||||
<div class="layui-input-block" style="max-width: 800px;">
|
||||
<textarea name="vip_rule" placeholder="VIP价格规则" rows="10" class="layui-textarea">{$option.vip_rule}</textarea>
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
价格规则,一行一条,规则格式为:
|
||||
价格名称|开通价格|开通时长(单位天)|显示单位|折扣显示|省钱显示|描述内容|是否推荐(推荐填写1,不推荐填写0)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存设置</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,116 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户帐号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="username" lay-verify="required" placeholder="请输入用户帐号" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">当前用户组</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="group" lay-verify="required">
|
||||
{volist name="$group" id="vo"}
|
||||
<option value="{$vo.id}" {eq name="$default_group" value="$vo.id"}selected{/eq}>{$vo.group_name}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">设置VIP时间</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="group_expire" value="" placeholder="非VIP默认不选" class="layui-input" id="group_expire">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">登录密码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="password" name="password" placeholder="请输入密码" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">重复密码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="password" name="repassword" placeholder="请再次输入密码" lay-verify="required" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">安全邮箱</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="email" name="email" placeholder="请输入密码邮箱账号 " lay-verify="required" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
|
||||
<i class="layui-icon layui-icon-ok"></i>
|
||||
提交
|
||||
</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
重置
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery','laydate'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let laydate = layui.laydate;
|
||||
|
||||
laydate.render({
|
||||
elem: '#group_expire', //指定元素
|
||||
type:'datetime'
|
||||
});
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
parent.layui.table.reload("user-table");
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,154 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form class="layui-form">
|
||||
<div class="mainBox">
|
||||
<div class="main-container">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户帐号</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid layui-word-aux">{$info.username}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">安全邮箱</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="email" name="email" value="{$info.email}" placeholder="请输入安全邮箱,如果不修改请忽略本参数" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">修改密码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="password" name="password" placeholder="请输入密码,如果不修改请忽略本参数" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">实名认证</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid layui-word-aux">{$info.is_auth ? '<span class="layui-badge layui-bg-blue">认证成功</span>' : '未认证'}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">注册时间</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid layui-word-aux">{$info.create_time|date="Y-m-d H:i:s"}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">账户余额</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{$info.amount} ¥</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">当前用户组</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="group" lay-verify="required">
|
||||
{volist name="$group" id="vo"}
|
||||
<option value="{$vo.id}" {eq name="$info.group" value="$vo.id"}selected{/eq}>{$vo.group_name}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">设置VIP时间</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="group_expire" value="<?=$info['group_expire']<time()?'':date('Y-m-d h:i:s',$info['group_expire'])?>" placeholder="非VIP默认不选" class="layui-input" id="group_expire">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">最近登录</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid layui-word-aux">{:getNotNullTime($info.login_time,'暂无登录信息')}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">登录IP地址</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid layui-word-aux">{$info.login_real_ip|default='暂无登录信息'}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="save">
|
||||
<i class="layui-icon layui-icon-ok"></i>
|
||||
保存更改
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['form','jquery','laydate'],function(){
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let laydate = layui.laydate;
|
||||
|
||||
// laydate.render({
|
||||
// elem: '#grade_time',
|
||||
// type:'date'
|
||||
// });
|
||||
|
||||
laydate.render({
|
||||
elem: '#group_expire', //指定元素
|
||||
type:'datetime'
|
||||
});
|
||||
|
||||
form.on('submit(save)', function(data){
|
||||
$.ajax({
|
||||
data:JSON.stringify(data.field),
|
||||
dataType:'json',
|
||||
contentType:'application/json',
|
||||
type:'post',
|
||||
success:function(res){
|
||||
//判断有没有权限
|
||||
if(res && res.code == 999){
|
||||
layer.msg(res.msg, {
|
||||
icon: 5,
|
||||
time: 2000,
|
||||
})
|
||||
return false;
|
||||
}else if(res.code == 200){
|
||||
layer.msg(res.msg,{icon:1,time:1000},function(){
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
|
||||
parent.layui.table.reload("user-table");
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.msg,{icon:2,time:1000});
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,267 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>用户管理</title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form" action="">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">搜索类型</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="search_type" lay-verify="required">
|
||||
<option value="username">帐号搜索</option>
|
||||
<option value="email">邮箱搜索</option>
|
||||
<option value="nickname">昵称搜索</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">搜索内容</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="search_value" placeholder="请输入搜索内容" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-inline">
|
||||
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="user-query">
|
||||
<i class="layui-icon layui-icon-search"></i>
|
||||
搜索结果
|
||||
</button>
|
||||
<button type="reset" class="pear-btn pear-btn-md">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
重置搜索
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="user-table" lay-filter="user-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="user-toolbar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
|
||||
<i class="layui-icon layui-icon-add-1"></i>
|
||||
新增账号
|
||||
</button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
|
||||
<i class="layui-icon layui-icon-delete"></i>
|
||||
批量删除
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-bar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-enable">
|
||||
<input type="checkbox" name="status" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="user-enable" {{ d.status == 1 ? 'checked' : '' }}>
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/html" id="user-auth">
|
||||
{{#if (d.is_auth == 0) { }}
|
||||
<span class="layui-badge layui-bg-orange">未实名</span>
|
||||
{{# }else if(d.is_auth == 1){ }}
|
||||
<span class="layui-badge layui-bg-blue">已认证</span>
|
||||
{{# } }}
|
||||
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-createTime">
|
||||
{{layui.util.toDateString(d.createTime, 'yyyy-MM-dd')}}
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="user-avatar">
|
||||
<img src="{{ d.avatar }}" style="width: 30px;height: 30px;border-radius: 50%">
|
||||
</script>
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['table', 'form', 'jquery','common'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let common = layui.common;
|
||||
|
||||
let cols = [
|
||||
[{type: 'checkbox'},
|
||||
{title: 'UID', field: 'id', align: 'center'},
|
||||
{title: '',field:'avatar',align: 'center',templet: '#user-avatar',width: 45},
|
||||
{title: '昵称', field: 'nickname', align: 'left'},
|
||||
{title: '用户帐号', field: 'username', align: 'center'},
|
||||
{title: '用户等级', field: 'group', align: 'center'},
|
||||
{title: '余额', field: 'amount', align: 'center'},
|
||||
{title: '安全邮箱', field: 'email', align: 'center'},
|
||||
{title: '实名认证', field: 'is_auth', align: 'center', templet: '#user-auth'},
|
||||
{title: '账号状态', field: 'status', align: 'center', templet: '#user-enable'},
|
||||
{title: '注册时间', field: 'create_time', align: 'center', templet: '#user-createTime'},
|
||||
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
|
||||
]
|
||||
]
|
||||
|
||||
table.render({
|
||||
elem: '#user-table',
|
||||
url: "{:url('user/index')}",
|
||||
page: true,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
toolbar: '#user-toolbar',
|
||||
defaultToolbar: [{
|
||||
title: '刷新',
|
||||
layEvent: 'refresh',
|
||||
icon: 'layui-icon-refresh',
|
||||
}, 'filter', 'print', 'exports']
|
||||
});
|
||||
|
||||
table.on('tool(user-table)', function(obj) {
|
||||
if (obj.event === 'remove') {
|
||||
window.remove(obj);
|
||||
} else if (obj.event === 'edit') {
|
||||
window.edit(obj);
|
||||
}
|
||||
});
|
||||
|
||||
table.on('toolbar(user-table)', function(obj) {
|
||||
if (obj.event === 'add') {
|
||||
window.add();
|
||||
} else if (obj.event === 'refresh') {
|
||||
window.refresh();
|
||||
} else if (obj.event === 'batchRemove') {
|
||||
window.batchRemove(obj);
|
||||
}
|
||||
});
|
||||
|
||||
form.on('submit(user-query)', function(data) {
|
||||
table.reload('user-table', {
|
||||
where: data.field
|
||||
})
|
||||
return false;
|
||||
});
|
||||
|
||||
form.on('switch(user-enable)', function(obj) {
|
||||
let status = obj.elem.checked ? 1 : 0;
|
||||
$.ajax({
|
||||
url:"{:url('user/change_status')}",
|
||||
type:'get',
|
||||
data:{
|
||||
id:this.value,
|
||||
status:status
|
||||
},
|
||||
dataType:'JSON',
|
||||
success:function(result){
|
||||
layer.tips(result.msg, obj.othis);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
window.add = function() {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '新增',
|
||||
shade: 0.1,
|
||||
area: [common.isModile()?'100%':'600px', common.isModile()?'100%':'400px'],
|
||||
content: "{:url('user/add')}"
|
||||
});
|
||||
}
|
||||
|
||||
window.edit = function(obj) {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '修改',
|
||||
shade: 0.1,
|
||||
area: ['600px', '500px'],
|
||||
content: "{:url('user/edit')}?id=" + obj.data['id']
|
||||
});
|
||||
}
|
||||
|
||||
window.remove = function(obj) {
|
||||
layer.confirm('确定要删除该用户吗?<b style="color: red">删除后用户的储存数据会被清空,且不可恢复</b>', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('user/del')}?ids=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.batchRemove = function(obj) {
|
||||
|
||||
var checkIds = common.checkField(obj,'id');
|
||||
|
||||
if (checkIds === "") {
|
||||
layer.msg("未选中数据", {
|
||||
icon: 3,
|
||||
time: 1000
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
layer.confirm('确定要删除这些用户[' + checkIds + ']吗,<b style="color: red">删除后数据不可恢复</b>', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('user/del')}?ids=" + checkIds,
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
table.reload('user-table');
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.refresh = function(param) {
|
||||
table.reload('user-table');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,170 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="user-table" lay-filter="user-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="user-toolbar"></script>
|
||||
|
||||
<script type="text/html" id="user-bar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="status_yes"><i class="layui-icon layui-icon-ok"></i></button>
|
||||
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="status_no"><i class="layui-icon layui-icon-close"></i></button>
|
||||
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/html" id="user-auth">
|
||||
{{#if (d.status == 0) { }}
|
||||
<span class="layui-badge layui-bg-orange">等待处理</span>
|
||||
{{# }else if(d.status == 1){ }}
|
||||
<span class="layui-badge layui-bg-blue">提现成功</span>
|
||||
{{# }else if(d.status == 2){ }}
|
||||
<span class="layui-badge layui-bg-red">退回金额</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
|
||||
<script src="/static/component/layui/layui.js"></script>
|
||||
<script src="/static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
layui.use(['table', 'form', 'jquery','common'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let common = layui.common;
|
||||
|
||||
let cols = [
|
||||
[{type: 'checkbox'},
|
||||
{title: 'ID', field: 'id', align: 'center'},
|
||||
{title: '用户帐号', field: 'uid', align: 'center'},
|
||||
{title: '提现金额', field: 'money', align: 'center'},
|
||||
{title: '支付宝帐号', field: 'alipay_account', align: 'center'},
|
||||
{title: '支付宝姓名', field: 'alipay_name', align: 'center'},
|
||||
{title: '处理状态', field: 'status', align: 'center', templet: '#user-auth'},
|
||||
{title: '创建时间', field: 'create_time', align: 'center'},
|
||||
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
|
||||
]
|
||||
]
|
||||
|
||||
table.render({
|
||||
elem: '#user-table',
|
||||
url: "{:url('withdraw/index')}",
|
||||
page: true,
|
||||
limit:20,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
toolbar: '#user-toolbar',
|
||||
defaultToolbar: [{
|
||||
title: '刷新',
|
||||
layEvent: 'refresh',
|
||||
icon: 'layui-icon-refresh',
|
||||
}, 'filter', 'print', 'exports']
|
||||
});
|
||||
|
||||
table.on('tool(user-table)', function(obj) {
|
||||
if (obj.event === 'remove') {
|
||||
window.remove(obj);
|
||||
} else if (obj.event === 'status_yes') {
|
||||
window.edit(obj,1);
|
||||
} else if (obj.event === 'status_no') {
|
||||
window.edit(obj,2);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
table.on('toolbar(user-table)', function(obj) {
|
||||
if (obj.event === 'refresh') {
|
||||
window.refresh();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
window.edit = function(obj,status) {
|
||||
|
||||
if(status){
|
||||
var msg = '确认进行提现成功操作吗?操作前请转账至对应的支付宝帐号';
|
||||
}else{
|
||||
var msg = '确认拒绝提现吗?拒绝后资金会退回到用户帐号内';
|
||||
}
|
||||
|
||||
if(obj.data['status'] !== 0){
|
||||
layer.msg('已经处理成功的记录禁止操作',{icon:2});
|
||||
return false;
|
||||
}
|
||||
|
||||
layer.confirm(msg, {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('withdraw/change')}?status="+status+"&id=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
window.refresh();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.remove = function(obj) {
|
||||
layer.confirm('确定要删除该举报内容吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{:url('withdraw/delete')}?id=" + obj.data['id'],
|
||||
dataType: 'json',
|
||||
type: 'get',
|
||||
success: function(result) {
|
||||
layer.close(loading);
|
||||
if (result.code == 200) {
|
||||
layer.msg(result.msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
obj.del();
|
||||
});
|
||||
} else {
|
||||
layer.msg(result.msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
window.refresh = function(param) {
|
||||
table.reload('user-table');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user