初始化

This commit is contained in:
liut
2021-10-12 11:06:24 +08:00
commit ff0b4d5b12
1270 changed files with 405680 additions and 0 deletions
+349
View File
@@ -0,0 +1,349 @@
<?php
namespace app\index\controller;
use app\common\controller\Home;
use app\common\model\FileManage;
use app\common\model\Folders;
use app\common\model\Policys;
use app\common\model\Shares;
use app\common\model\Stores;
use think\Exception;
use think\response\Download;
class File extends Home
{
public function list(){
$folder_id = input('get.folder_id',0);
$search = input('get.search','');
$page = input('get.page',1);
$limit = input('get.rows',20);
$file_list = FileManage::ListFile($folder_id,$search,$this->userInfo['id'],$page,$limit);
return json($file_list);
}
public function mkdir(){
$data = input('post.');
$result = $this->validate($data,[
'folder_id' => 'require|number',
'folder_name' => 'require|chsDash|max:255',
'folder_miaoshu' => 'max:255'
],[
'folder_name.chsDash' => '文件名只能是汉字、字母、数字和下划线_及破折号-'
]);
if($result !== true) return json(['status' => 0,'msg' => $result]);
try {
$dir_id = FileManage::createFolder($data['folder_id'],$data['folder_name'],$data['folder_miaoshu'],$this->userInfo['id']);
return json(['status' => 1,'msg' => '新建文件夹成功~','data' => $dir_id]);
}catch (\Throwable $e){
return json(['status' => 0,'msg' => $e->getMessage()]);
}
}
public function rename(){
$id = input('get.id');
$file_name = input('get.file_name');
$is_folder = input('get.is_folder');
$is_folder = intval($is_folder);
try {
if($is_folder){
$result = $this->validate(['file_name' => $file_name],[
'file_name' => 'require|chsDash|max:255',
],[
'file_name.chsDash' => '文件(夹)名只能是汉字、字母、数字和下划线_及破折号-'
]);
$info = Folders::where('id',$id)->where('uid',$this->userInfo['id'])->find();
if(empty($info)){
throw new Exception('文件数据不存在');
}
$info['folder_name'] = $file_name;
$info->save();
}else{
$result = $this->validate(['file_name' => $file_name],['file_name' => 'require|max:255',]);
$info = Stores::where('id',$id)->where('uid',$this->userInfo['id'])->find();
if(empty($info)){
throw new Exception('文件数据不存在');
}
$info['origin_name'] = $file_name;
$info->save();
}
if($result !== true){
throw new Exception($result);
}
return json(['status' => 1,'msg' => '重命名成功']);
}catch (\Throwable $e){
return json(['status' => 0,'msg' => $e->getMessage()]);
}
}
public function delete(){
$id = input('get.id');
$is_folder = input('get.is_folder');
$uid = $this->userInfo['id'];
if(empty($id)){
return json(['status' => 0,'msg' => '删除错误,参数缺失']);
}
//删除目录
if(boolval($is_folder)){
$pid = Folders::where('id',$id)->value('parent_folder');
if($pid == 0){
return json(['status' => 0,'msg' => '删除失败,您不能删除根目录']);
}
$child_object = getFolderChildFiles($uid,$pid);
if(!empty($child_object['file'])){
Stores::destroy($child_object['file']);
}
if(!empty($child_object['folder'])){
Folders::destroy($child_object['folder']);
}
}else{
Stores::destroy(function($query) use($id,$uid){
$query->where('id','=',$id)->where('uid','=',$uid);
});
}
return json(['status' => 1,'msg' => '删除成功']);
}
public function edit_folder(){
$id = input('get.id');
$info = Folders::get($id);
if(empty($info)){
$this->error('数据不存在');
}
if($this->request->isPost()){
$folder_name = input('post.folder_name');
$folder_miaoshu = input('post.folder_miaoshu');
$shouyi = input('post.shouyi');
Folders::where('id',$id)->update([
'folder_name' => $folder_name,
'desc' => $folder_miaoshu,
'size' => $shouyi
]);
return json(['status' => 1,'msg' => '修改文件夹信息成功']);
}
$this->assign('info',$info);
return $this->fetch();
}
public function edit_file(){
$id = input('get.id');
$info = Stores::get($id);
if(empty($info)){
$this->error('数据不存在');
}
if($this->request->isPost()){
$file_name = input('post.file_name');
$file_miaoshu = input('post.file_miaoshu');
Stores::where('id',$id)->update([
'origin_name' => $file_name,
'desc' => $file_miaoshu
]);
return json(['status' => 1,'msg' => '修改文件信息成功']);
}
$this->assign('info',$info);
return $this->fetch();
}
public function delete_all(){
$ids = input('get.ids');
$idFs = input('get.idFs');
$uid = $this->userInfo['id'];
$success_ids = [];
if(empty($ids) && empty($idFs)){
return json(['status' => 0,'msg' => '请选择需要删除的文件(夹)~']);
}
if(!empty($ids)){
$ids_list = explode(',',$ids);
try {
foreach ($ids_list as $file){
//删除
Stores::destroy(function($query) use($file,$uid){
$query->where('id','=',$file)->where('uid','=',$uid);
});
$success_ids[] = $file;
}
}catch (\Throwable $e){
return json(['status' => 0,'msg' => $e->getMessage()]);
}
}
if(!empty($idFs)){
$idFs_list = explode(',',$idFs);
try {
foreach ($idFs_list as $dir){
$pid = Folders::where('id',$dir)->value('parent_folder');
if($pid == 0){
return json(['status' => 0,'msg' => '删除失败,目录操作异常']);
}
//删除
$child_object = getFolderChildFiles($uid,$pid);
if(!empty($child_object['file'])){
Stores::destroy($child_object['file']);
}
if(!empty($child_object['folder'])){
Folders::destroy($child_object['folder']);
}
$success_ids[] = $dir;
}
}catch (\Throwable $e){
return json(['status' => 0,'msg' => $e->getMessage()]);
}
}
return json(['status' => 1,'msg' => '成功删除 '.count($success_ids).' 个文件(夹)~','data' => $success_ids]);
}
public function move_files(){
$ids = input('get.ids');
$idFs = input('get.idFs');
$this->assign('ids',$ids);
$this->assign('idFs',$idFs);
return $this->fetch();
}
public function folder_list(){
$folder_id = input('post.folder_id',0);
$folder = FileManage::FolderList($folder_id,$this->userInfo['id']);
return json(['status' => 1,'msg' => 'ok','data' => $folder]);
}
public function move_to_file(){
$folder_id = input('post.folder_id',0);
$ids = input('post.ids');
$idFs = input('post.idFs');
$uid = $this->userInfo['id'];
if(empty($ids) && empty($idFs)){
return json(['status' => 0,'msg' => '请选择需要移动的文件或者文件夹']);
}
$folder_id = FileManage::getFolderPid($folder_id,$uid);
$root_folder = FileManage::getFolderPid(0,$uid);
$ids_list = array_filter(explode(',',trim($ids)));
$idFs_list = array_filter(explode(',',trim($idFs)));
$success = [];
//移动目录
if(!empty($idFs_list)){
foreach ($idFs_list as $dir){
if($dir != $root_folder && $dir != $folder_id && !empty($dir)){
Folders::where('id',$dir)->where('uid',$uid)->update(['parent_folder' => $folder_id]);
$success[] = $dir;
}
}
}
//移动文件
if(!empty($ids_list)){
foreach ($ids_list as $file){
if(!empty($file)){
Stores::where('id',$file)->where('uid',$uid)->update(['parent_folder' => $folder_id]);
$success[] = $file;
}
}
}
return json(['status' => 1,'msg' => '成功移动 '.count($success).' 个文件(夹)~','data' => $success]);
}
public function set_share_pass(){
$id = input('get.id');
$pass = input('get.pass');
$is_folder = input('get.is_folder');
$pass_status = input('get.pass_status');
$is_folder = intval($is_folder);
$pass_status = intval($pass_status);
$uid = $this->userInfo['id'];
if($is_folder){
$info = Folders::where('id',$id)->where('uid',$uid)->find();
}else{
$info = Stores::where('id',$id)->where('uid',$uid)->find();
}
if(empty($info)){
return json(['status' => 0,'msg' => '文件数据不存在']);
}
$result = $this->validate(['pass' => $pass],['pass|提取码' => 'require|alphaNum|length:4,6'],[
'pass.require' => '提取码必须填写',
'pass.alphaNum' => '提取码只能为字母或者数字',
'pass.length' => '提取码长度只能为 4 ~ 6 位字母或者数字'
]);
if($result !== true) return json(['status' => 0,'msg' => $result]);
Shares::updateShare($info['shares_id'],[
'pwd' => $pass,
'pwd_status' => $pass_status
]);
return json(['status' => 1,'msg' => '设置提取码成功']);
}
public function user_download(){
$id = input('get.id',0);
$info = Stores::where('id',$id)->where('uid',$this->userInfo['id'])->find();
if(empty($info)){
$this->error('数据不存在');
}
$share = Shares::where('id',$info['shares_id'])->find();
$share_url = getShareUrl($share['code']);
$this->redirect($share_url);
}
}
+411
View File
@@ -0,0 +1,411 @@
<?php
namespace app\index\controller;
use app\common\controller\Home;
use app\common\model\driver\AliyunOss;
use app\common\model\driver\Local;
use app\common\model\driver\TxyunOss;
use app\common\model\FileManage;
use app\common\model\Folders;
use app\common\model\Order;
use app\common\model\Profit;
use app\common\model\Record;
use app\common\model\Reports;
use app\common\model\Shares;
use app\common\model\Stores;
use app\common\model\Users;
use Qrcode\Qrcode;
use think\Exception;
use think\facade\Cookie;
use think\response\Download;
class Index extends Home
{
public function index()
{
return $this->fetch('index_'.config('basic.index_theme'));
}
public function share(){
$code = $this->request->param('code');
//分享信息
$info = Shares::where('code',$code)->find();
//分享信息不存在
if(empty($info)){
return $this->fetch('404');
}
// 判断类型
if($info['type']){
$storeInfo = Folders::where('uid',$info['uid'])
->where('id',$info['source_id'])
->find();
}else{
$storeInfo = Stores::where('uid',$info['uid'])
->where('id',$info['source_id'])
->find();
}
// 存储文件/夹不存在
if(empty($storeInfo)){
return $this->fetch('404');
}
// 获取文件所有者信息
$user = Users::where('id',$storeInfo['uid'])->field('id,nickname,avatar,status,group,desc')->find();
if(empty($user) || $user['status'] == 0){
return $this->fetch('404');
}
$this->assign('share_id',$info['id']);
$this->assign('is_login',$this->is_login);
$this->assign('url',getShareUrl($code));
$share_pwd = Cookie::get('share_key_'.$code);
// 需要密码
if($info['pwd_status'] == 1 && !empty($info['pwd']) && $share_pwd != $info['pwd']){
// VIP用户组
$vip_group = config('vip.vip_group');
$is_vip = $user['group'] == $vip_group ? 1 : 0;
$desc = empty(trim($user['desc'])) ? '暂无签名' : $user['desc'];
$this->assign('desc',$desc);
$this->assign('userinfo',$user);
$this->assign('is_vip',$is_vip);
return $this->fetch('pwd');
}
// 显示界面
if($info['type']){
// 目录显示
$base_info = [
'id' => $storeInfo['id'],
'username' => getSafeNickname($user['nickname']),
'folder_name' => $storeInfo['folder_name'],
'desc' => $storeInfo['desc'],
'is_desc' => empty(trim($storeInfo['desc'])) ? 0 : 1,
'create_time' => $storeInfo->getData('create_time')
];
Folders::where('id',$storeInfo['id'])->where('uid',$storeInfo['uid'])->setInc('count_open',1);
// 获取当前文件夹下所有文件
$share_list = FileManage::ShareListFile($storeInfo['id'],$user['id']);
$this->assign('share_list',$share_list);
$this->assign('info',$base_info);
if($this->request->isMobile()){
return $this->fetch('folder_wap');
}
return $this->fetch('folder');
}else{
// 统计数据
Profit::record($storeInfo['uid'],$storeInfo['id'],'view');
// 文件显示
$file_info = [
'username' => getSafeNickname($user['nickname']),
'file_name' => $storeInfo['origin_name'],
'size' => countSize($storeInfo['size']),
'create_time' => friendDate($storeInfo->getData('create_time'))
];
// 获取VIP价格
$vip_rule = getVipRule();
// 获取最高价格
$vip_max = end($vip_rule)['id'];
$download = getFileDownloadUrl($storeInfo['shares_id'],$storeInfo['id']);
$this->assign('vip_max',$vip_max);
$this->assign('vip_rule',$vip_rule);
$this->assign('download',$download);
$this->assign('user',$this->userInfo);
$this->assign('info',$file_info);
return $this->fetch('file');
}
}
public function report(){
$share_id = input('get.share_id');
$share = Shares::where('id',$share_id)->find();
if(empty($share)){
return $this->fetch('user/err',['msg' => '传递参数不正确']);
}
// 获取文件信息
if($share['type'] == 1){
$files = Folders::where('id',$share['source_id'])->find();
}else{
$files = Stores::where('id',$share['source_id'])->find();
}
// 文件信息获取失败
if(empty($files)){
return $this->fetch('user/err',['msg' => '文件信息获取失败']);
}
// 获取用户信息
$share_user = Users::where('id',$share['uid'])->find();
if(empty($share_user)){
return $this->fetch('user/err',['msg' => '举报用户不存在']);
}
// 分享信息
$report = [
'share_id' => $share['id'],
'source_name' => $share['type'] ? $files['folder_name'] : $files['origin_name'],
'source_url' => getShareUrl($share['code']),
'source_uid' => $share['uid'],
'source_username' => $share_user['username'],
'source_type' => $share['type'],
'create_time' => time(),
'real_ip' => request()->ip()
];
if($this->request->isPost()){
$data = input('post.');
$result = $this->validate($data,[
'contact|联系方式' => 'require',
'content|详细描述' => 'require',
'type|危害类别' => 'require'
]);
if($result !== true) return json(['code' => 0,'msg' => $result]);
$report_key = 'report_'.$share_id;
if(!empty(Cookie::get($report_key))){
return json(['code' => 0,'msg' => '您已经举报过了,请勿重复举报']);
}
$report = array_merge($report,$data);
Cookie::set('report_'.$share_id,'1');
Reports::create($report);
return json(['code' => 1,'msg' => '举报反馈成功']);
}
return $this->fetch();
}
public function qrcode(){
$url = input('get.url');
if(!empty($url)){
Qrcode::createQrcode($url);
}
}
public function share_pass(){
$id = input('post.id');
$pass = input('post.pass');
$id = intval($id);
$info = Shares::where('id',$id)->find();
if(empty($info)){
return json(['status' => 0,'msg' => '分享数据不存在']);
}
if($pass != $info['pwd']){
return json(['status' => 0,'msg' => '提取码不正确']);
}
Cookie::set('share_key_'.$info['code'],$info['pwd'],3600);
return json(['status' => 1,'msg' => '提取码正确']);
}
public function download(){
$file = input('get.file');
$shares_id = input('get.shares');
$timestamp = input('get.timestamp');
$sign = input('get.sign');
$is_count = input('get.is_count');
// 数据签名校验
if(!getDownloadFileSignVerify([
'file' => $file,
'shares' => $shares_id,
'timestamp' => $timestamp
],$sign)){
return $this->fetch('user/err',['msg' => '数据sign签名校验失败']);
}
try {
// 获取存储数据
$stores = Stores::get($file);
if(empty($stores)){
throw new Exception('文件数据不存在');
}
if($is_count){
// 统计数据
Profit::record($stores['uid'],$stores['id'],'down',1);
$download_url = getFileDownloadUrl($stores['shares_id'],$stores['id'],0);
return redirect($download_url);
}
// 获取存储策略
$policy = $stores->getPolicy();
if(empty($policy)){
throw new Exception('文件数据存储策略不存在');
}
// 禁止下载
if($this->groupData['speed'] === 0){
throw new Exception('您当前的用户组禁止下载文件');
}
// 远程文件下载
if($policy->type == 'remote'){
$down_url = getDownloadRemote($stores['file_name'],$stores['origin_name'],$policy->config['server_uri'],$this->groupData['speed'],$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($stores,$this->groupData['speed'],$policy);
}catch (Exception $e){
return $this->fetch('user/err',['msg' => $e->getMessage()]);
}
}
public function return_callback(){
$param = input('get.');
$sign = input('get.sign');
if($sign != $this->sign_param($param)){
$this->error('签名校验失败');
}
$order = Order::where('trade_no',$param['out_trade_no'])->find();
if(empty($order)){
$this->error('订单数据不存在');
}
if($order['status'] != 1){
$this->error('订单未支付成功');
}
$this->success('VIP开通/续费成功','none','请刷新当前页面,然后重新点击下载');
}
public function return_notify(){
$param = input('get.');
$sign = input('get.sign');
if($sign != $this->sign_param($param)){
exit('Fail is sign verify.');
}
if($param['trade_status'] != 'TRADE_SUCCESS'){
exit('Fail is trade status.');
}
// 查找订单
$order = Order::where('trade_no',$param['out_trade_no'])->find();
if(empty($order)){
exit('Fail order is not found.');
}
// 查找用户
$user = Users::where('id',$order['uid'])->find();
if(empty($user)){
exit('Fail order user is not found.');
}
// VIP用户组
$vip_group = config('vip.vip_group');
// 开通/续费时长
$vip_expire = $order['vip_day'] * 86400;
// 开通/续费VIP
if($user['group'] == $vip_group){
// 续费VIP
$user['group_expire'] = $user['group_expire'] + $vip_expire;
}else{
// 开通VIP
$user['group'] = $vip_group;
$user['group_expire'] = time() + $vip_expire;
}
// 保存数据
$user->save();
// 完成订单
$order['status'] = 1;
$order['out_trade_no'] = $param['trade_no'];
$order['pay_time'] = time();
// 保存订单
$order->save();
// 查询分成用户
$share = Shares::where('id',$order['profit_id'])->find();
// 参与分成
if(!empty($share)){
// 用户分成奖励比例
$vip_profit = config('vip.vip_profit');
// 计算用户分成奖励
$user_profit = ($order['money'] / 100) * $vip_profit;
// 通用户不奖励
if($order['uid'] != $share['uid']){
// 奖励
Record::addRecord($share['uid'],0,'VIP分成',$user_profit,'用户'.getSafeNickname($user['nickname']).'开通VIP奖励');
// 记录
Profit::record($share['uid'],$share['source_id'],'count_order',1);
Profit::record($share['uid'],$share['source_id'],'count_order_yes',1);
Profit::record($share['uid'],$share['source_id'],'count_money',$order['money']);
Profit::record($share['uid'],$share['source_id'],'count_profit',$user_profit);
}
}
// 处理完成
exit('SUCCESS');
}
protected function sign_param($param): string
{
unset($param['sign']);
unset($param['sign_type']);
ksort($param);
reset($param);
return md5(urldecode(http_build_query($param)) . config('pay.api_key'));
}
}
+190
View File
@@ -0,0 +1,190 @@
<?php
namespace app\index\controller;
use app\common\controller\Home;
use app\common\model\FileManage;
use app\common\model\Folders;
use app\common\model\Profit;
use app\common\model\Shares;
use app\common\model\Stores;
class Recycle extends Home
{
public function index(){
return $this->fetch();
}
public function list(){
$limit = input('get.rows',20);
$page = input('get.page',1);
$search = input('get.search','');
$file_list = FileManage::RecycleFile($search,$this->userInfo['id'],$page,$limit);
return json($file_list);
}
public function clear(){
// 清空回收站
$uid = $this->userInfo['id'];
$success_ids = [];
try {
$stores = Stores::onlyTrashed()->where('uid',$uid)->select();
foreach ($stores as $file){
// 删除文件
$file->delete(true);
// 删除分享信息
Profit::where('file_id',$file['id'])
->where('uid',$uid)
->delete();
$success_ids[] = $file['id'];
}
$folders = Folders::onlyTrashed()->where('uid',$uid)->select();
foreach ($folders as $dir){
// 删除文件
$dir->delete(true);
// 获取子文件夹
$folder_object = getFolderChildFiles($uid,$dir['id']);
// 子文件夹
if(!empty($folder_object['folder'])){
Folders::where('id','in',$folder_object['folder'])->delete(true);
}
// 子文件
if(!empty($folder_object['file'])){
// 删除文件
Stores::where('id','in',$folder_object['file'])->delete(true);
// 删除分享信息
Profit::where('file_id','in',$folder_object['file'])
->where('uid',$uid)
->delete();
}
$success_ids[] = $dir['id'];
}
return json(['status' => 1,'msg' => '成功清空回收站,共删除 '.count($success_ids).' 个文件(夹)~']);
}catch (\Throwable $e){
return json(['status' => 0,'msg' => $e->getMessage()]);
}
}
public function restore(){
$ids = input('get.ids');
$idFs = input('get.idFs');
$uid = $this->userInfo['id'];
$success_ids = [];
if(empty($ids) && empty($idFs)){
return json(['status' => 0,'msg' => '请选择需要还原的文件(夹)~']);
}
if(!empty($ids)){
try {
$stores = Stores::onlyTrashed()->where('id','in',$ids)->where('uid',$uid)->select();
foreach ($stores as $file){
//还原文件
$file->restore();
$success_ids[] = $file['id'];
}
}catch (\Throwable $e){
return json(['status' => 0,'msg' => $e->getMessage()]);
}
}
if(!empty($idFs)){
try {
$folders = Folders::onlyTrashed()->where('id','in',$idFs)->where('uid',$uid)->select();
foreach ($folders as $dir){
//还原文件
$dir->restore();
$success_ids[] = $dir['id'];
}
}catch (\Throwable $e){
return json(['status' => 0,'msg' => $e->getMessage()]);
}
}
return json(['status' => 1,'msg' => '成功还原 '.count($success_ids).' 个文件(夹)~','data' => $success_ids]);
}
public function delete(){
$ids = input('get.ids');
$idFs = input('get.idFs');
$uid = $this->userInfo['id'];
$success_ids = [];
if(empty($ids) && empty($idFs)){
return json(['status' => 0,'msg' => '请选择需要删除的文件(夹)~']);
}
if(!empty($ids)){
try {
$stores = Stores::onlyTrashed()->where('id','in',$ids)->where('uid',$uid)->select();
foreach ($stores as $file){
// 删除文件
$file->delete(true);
// 删除分享信息
Profit::where('file_id',$file['id'])
->where('uid',$uid)
->delete();
$success_ids[] = $file['id'];
}
}catch (\Throwable $e){
return json(['status' => 0,'msg' => $e->getMessage()]);
}
}
if(!empty($idFs)){
try {
$folders = Folders::onlyTrashed()->where('id','in',$idFs)->where('uid',$uid)->select();
foreach ($folders as $dir){
// 删除文件
$dir->delete(true);
// 获取子文件夹
$folder_object = getFolderChildFiles($uid,$dir['id']);
// 子文件夹
if(!empty($folder_object['folder'])){
Folders::where('id','in',$folder_object['folder'])->delete(true);
}
// 子文件
if(!empty($folder_object['file'])){
// 删除文件
Stores::where('id','in',$folder_object['file'])->delete(true);
// 删除分享信息
Profit::where('file_id','in',$folder_object['file'])
->where('uid',$uid)
->delete();
}
$success_ids[] = $dir['id'];
}
}catch (\Throwable $e){
return json(['status' => 0,'msg' => $e->getMessage()]);
}
}
return json(['status' => 1,'msg' => '成功彻底删除 '.count($success_ids).' 个文件(夹)~','data' => $success_ids]);
}
}
+121
View File
@@ -0,0 +1,121 @@
<?php
namespace app\index\controller;
use app\common\controller\Home;
use app\common\model\Profit;
use app\common\model\Record;
use app\common\model\Withdraw;
class Share extends Home
{
public function index(){
$time = input('get.time');
$query = [];
if(!empty($time)){
$query = ['time' => $time];
}else{
$time = date('Y-m-d');
}
$list = Profit::where('uid',$this->userInfo['id'])
->whereBetweenTime('create_time',$time)
->order([
'count_money' => 'desc',
'id' => 'desc'
])
->paginate(15,false,[
'query' => $query
]);
$this->assign('time',$time);
$this->assign('list',$list);
return $this->fetch();
}
public function record(){
$list = Record::where('uid',$this->userInfo['id'])->order('create_time desc')->paginate(15);
$this->assign('list',$list);
return $this->fetch();
}
public function withdraw(){
$list = Withdraw::where('uid',$this->userInfo['id'])->order('create_time desc')->paginate(15);
$money = Withdraw::where('uid',$this->userInfo['id'])->where('status',1)->sum('money');
$this->assign('money',$money);
$this->assign('list',$list);
$this->assign('amount',$this->userInfo['amount']);
return $this->fetch();
}
public function echarts(){
$id = input('get.id');
// 获取当月所有时间
$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::where('file_id',$id)
->where('uid',$this->userInfo['id'])
->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);
$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();
}
}
+116
View File
@@ -0,0 +1,116 @@
<?php
namespace app\index\controller;
use app\common\controller\Home;
use app\common\model\FileManage;
use app\common\model\FileUpload;
use app\common\model\Groups;
use app\common\model\Policys;
use app\common\model\Shares;
use app\common\model\Stores;
use think\Exception;
use think\facade\Cache;
class Upload extends Home
{
public function index(){
// 上传策略
$policy = $this->getPolicy();
// 上传文件数量限制
$upload_limit = 20;
// 上传限制
$upload_rule = [
'upsize_byte' => $this->groupData['max_storage'],
'upsize' => countSize($this->groupData['max_storage']),
'fsize_byte' => $this->groupData['max_storage'] * $upload_limit,
'fsize' => countSize($this->groupData['max_storage'] * $upload_limit),
];
$folder_id = FileManage::getFolderAllowPid(0,$this->userInfo['id']);
$upload_api = $this->getPolicyUrl($policy,[
'md' => 'upload',
'size' => $this->groupData['max_storage'],
'notify' => url('upload/notify','',false,true),
'root_folder_id' => $folder_id
]);
$this->assign('upload_api',$upload_api);
$this->assign('upload_limit',$upload_limit);
$this->assign('upload_rule',$upload_rule);
return $this->fetch();
}
public function notify(){
$data = input('get.');
$policy_id = input('get.policy_id');
$sign = input('get.sign');
$policy = Policys::where('id',$policy_id)->find();
if(empty($policy)){
exit('Fail policy not found.');
}
if(empty($sign)){
exit('Fail is no params a sign.');
}
$remote_sign = $this->remote_sign_params($data,$policy['config']['access_token']);
if($remote_sign != $sign){
exit('Fail is sign verify.');
}
// 加入数据库
$data = [
'uid' => $data['uid'],
'origin_name' => $data['name'],
'file_name' => $data['path'],
'size' => $data['size'],
'meta' => '',
'mime_type' => $data['mime'],
'ext' => $data['ext'],
'parent_folder' => $data['folder_id'],
'policy_id' => $policy['id'],
'dir' => '',
'create_time' => time(),
'update_time' => time()
];
$file_id = (new Stores)->insertGetId($data);
$share_id = Shares::addShare($data['uid'],$file_id,0);
Stores::where('id',$file_id)->update(['shares_id' => $share_id]);
exit('UPLOAD_SUCCESS');
}
public function file(){
// 存储策略
$policy = $this->getPolicy();
try {
// 上传文件
$result = (new FileUpload())
->source($this->userInfo['id'],$policy,$this->groupData['max_storage'])
->upload();
return json($result);
}catch (Exception $e){
return json(['code' => 0,'msg' => $e->getMessage()]);
}
}
}
+433
View File
@@ -0,0 +1,433 @@
<?php
namespace app\index\controller;
use app\common\controller\Home;
use app\common\model\Certify;
use app\common\model\Order;
use app\common\model\Profit;
use app\common\model\Record;
use app\common\model\Shares;
use app\common\model\Users;
use app\common\model\Withdraw;
use think\Exception;
use think\facade\Cache;
use function MongoDB\BSON\toRelaxedExtendedJSON;
class User extends Home
{
public function index(){
return $this->fetch();
}
public function login(){
$layer = input('get.layer',0);
$share_id = input('get.share_id',0);
if(empty($layer)) $layer = 0;
if((new Users)->login_auth('default')){
return redirect('user/index');
}
if($this->request->isPost()){
$username = input('post.username');
$password = input('post.password');
try {
(new Users)->login($username,$password,'default');
return json(['status' => 1,'msg' => '登录成功']);
}catch (\Throwable $e){
return json(['status' => 0,'msg' => '登录失败:' . $e->getMessage()]);
}
}
$this->assign('share_id',$share_id);
$this->assign('layer',$layer);
return $this->fetch();
}
public function register(){
$data = input('post.');
$share_id = input('get.share_id');
if(config('register.allow_register') != 1){
return json(['code' => 0,'msg' => '管理员已关闭用户注册功能']);
}
$result = $this->validate($data,[
'nickname|昵称' => 'require|chsAlphaNum|length:2,18',
'username|用户帐号' => 'require|alphaNum|length:6,26',
'password|登录密码' => 'require|alphaNum|length:6,18',
'email|安全邮箱' => 'require|email'
]);
if($result !== true) return json(['code' => 0,'msg' => $result]);
$default_group = config('register.default_group');
// 获取注册来源
$share_info = Shares::where('id',$share_id)->find();
try {
(new Users)->register(
$data['username'],
$data['email'],
$data['password'],
$default_group,
['nickname' => $data['nickname']]
);
// 统计数据
if(!empty($share_info)){
Profit::record($share_info['uid'],$share_info['source_id'],'reg',1);
}
return json(['code' => 1,'msg' => '注册帐号成功']);
}catch (Exception $e){
return json(['code' => 0,'msg' => $e->getMessage()]);
}
}
public function logout(){
(new Users)->logout('default');
$this->success('退出登录成功','index/index');
}
public function vip(){
$share_id = input('get.share_id',0);
$is_layer = input('get.layer',0);
$rule = getVipRule();
$this->assign('rule',$rule);
$this->assign('share_id',$share_id);
$this->assign('is_layer',$is_layer);
if($this->request->isMobile()){
return $this->fetch('vip_wap');
}
return $this->fetch();
}
public function payment(){
$vip_type = input('get.vip',0);
$share_id = input('get.share_id',0);
$pay_type = input('get.pay_type',0);
if($pay_type != 'alipay' && $pay_type != 'wxpay'){
$this->error('支付方式错误');
}
// 获取VIP规则
$rule = getVipRule();
// 判断VIP类型是否正确
if(!isset($rule[$vip_type])){
$this->error('VIP类型不存在');
}
// 获取VIP价格
$vip_config = $rule[$vip_type];
// 获取支付配置信息
$config = config('pay.');
// 本地创建订单号
$trade_no = strtoupper('VIP_'.date('YmdHis').substr(md5(uniqid()),0,10));
// 订单数据
$order = [
'uid' => $this->userInfo['id'],
'trade_no' => $trade_no,
'type' => $pay_type,
'profit_id' => $share_id,
'money' => $vip_config['money'],
'vip_day' => $vip_config['day'],
'create_time' => time(),
'status' => 0
];
Order::create($order);
// 获取支付参数
$pay_params = [
'pid' => $config['api_pid'],
'type' => $pay_type,
'out_trade_no' => $trade_no,
'notify_url' => url('index/return_notify','',false,true),
'return_url' => url('index/return_callback','',false,true),
'name' => 'VIP会员',
'money' => $vip_config['money']
];
ksort($pay_params);
reset($pay_params);
$pay_params['sign'] = md5(urldecode(http_build_query($pay_params)) . $config['api_key']);
$pay_params['sign_type'] = strtoupper('MD5');
$pay_html = '<html><head><title>正在跳转支付</title><meta name="viewport" content="width=device-width, initial-scale=1.0">';
$pay_html .= '<style>body{background-color: #e6e6e6;}.pay_btn{border: 0;display: block;width: 100%;font-size: 22px;font-weight: bold;outline: none;height: 250px;color: #989898;line-height: 250px;background-color: transparent;}</style>';
$pay_html .= '</head><body>';
// 拼接支付表单
$pay_html .= '<form id="alipaysubmit" name="alipaysubmit" action="'.$config['api_gateway'].'" method="POST">';
foreach ($pay_params as $key => $val) {
$pay_html .= '<input type="hidden" name="'.$key.'" value="'.$val.'" />';
}
$pay_html .= '<input class="pay_btn" type="submit" value="订单创建中..."></form>';
$pay_html .= "<script>document.forms['alipaysubmit'].submit();</script>";
$pay_html .= '</body></html>';
exit($pay_html);
}
public function vip_close(){
$lock_time = time() - 7200;
Order::where('status',0)
->limit(50)
->whereTime('create_time','<=',$lock_time)
->update(['status' => 2]);
return json(['code' => 1,'msg' => '关闭订单成功']);
}
public function forget(){
if($this->request->isPost()){
$email = input('post.email');
$result = $this->validate(['email' => $email],['email|安全邮箱' => 'require|email']);
if($result !== true) return json(['code' => 0,'msg' => $result]);
$info = Users::where('email',$email)->find();
if(empty($info)){
return json(['code' => 0,'msg' => '该邮箱未绑定帐号']);
}
// 获取key
$forget_key = 'forget_'.str_replace(['@','.'],['_','_'],$info['email']);
// 邮件发送记录
$forget_info = Cache::get($forget_key);
if(!empty($forget_info)){
if($forget_info['time'] >= time()){
return json(['code' => 0,'msg' => '发送频繁,请等待'.($forget_info['time'] - time()) . ' 秒后重新发送']);
}
}
$hash_key = bin2hex($forget_key);
$sign = md5($forget_key . time());
// 设置找回密码key
Cache::set($forget_key,[
'uid' => $info['id'],
'email' => $info['email'],
'sign' => $sign,
'time' => time() + 60
],600);
// 找回密码链接
$forget_url = url('user/reset','',false,true)."?key={$hash_key}&sign={$sign}";
// 发送邮件
if(!sendEmail($info['username'],$forget_url)){
return json(['code' => 0,'msg' => '找回密码邮件发送失败,请联系管理员处理']);
}
return json(['code' => 1,'msg' => '找回密码邮件发送成功']);
}
return $this->fetch();
}
public function reset(){
$key = input('get.key');
$sign = input('get.sign');
if(empty($key) || empty($sign)){
return $this->fetch('err',['msg' => '参数缺失']);
}
$forget_key = @hex2bin($key);
if(empty($forget_key)){
return $this->fetch('err',['msg' => '参数验证失败']);
}
$forget_info = Cache::get($forget_key);
if(empty($forget_info)){
return $this->fetch('err',['msg' => '访问错误,无效链接']);
}
if($sign != $forget_info['sign']){
return $this->fetch('err',['msg' => '访问错误,数据签名校验失败']);
}
if($this->request->isPost()){
$pwd = input('post.pwd');
$result = $this->validate(['pwd' => $pwd],['pwd|密码' => 'require|alphaNum|length:6,18']);
if($result !== true) return json(['code' => 0,'msg' => $result]);
$password = md5($pwd . config('app.pass_salt'));
Users::where('id',$forget_info['uid'])->update(['password' => $password]);
return json(['code' => 1,'msg' => '密码修改成功']);
}
$this->assign('key',$key);
$this->assign('sign',$sign);
return $this->fetch('reset');
}
public function auth(){
if($this->request->isPost()){
$data = input('post.');
$result = $this->validate($data,[
'name|姓名' => 'require|chs|length:2,20',
'idcard|身份证号码' => 'require|idCard'
]);
if($result !== true) return json(['code' => 0,'msg' => $result]);
if($this->userInfo['is_auth']){
return json(['code' => 0,'msg' => '您已完成实名认证,请勿重复提交']);
}
if(Certify::where('uid',$this->userInfo['id'])->where('status',0)->count() > 0){
return json(['code' => 0,'msg' => '您提交的实名资料正在审核中,请勿重复提交']);
}
Certify::create([
'uid' => $this->userInfo['id'],
'name' => $data['name'],
'idcard' => $data['idcard'],
'create_time' => time()
]);
return json(['code' => 1,'msg' => '实名资料已提交,请耐心等待审核']);
}
$this->assign('info',$this->userInfo->getCertify());
$this->assign('is_auth',$this->userInfo['is_auth']);
return $this->fetch();
}
public function withdraw(){
if($this->request->isPost()){
$data = input('post.');
$result = $this->validate($data,[
'tx_money|提现金额' => 'require|float',
'alipay_account|支付宝帐号' => 'require|max:255',
'alipay_name|支付宝姓名' => 'require|chs|max:60'
]);
if($result !== true) return json(['code' => 0,'msg' => $result]);
$withdraw_count = Withdraw::where('uid',$this->userInfo['id'])
->where('status',0)
->whereTime('create_time','d')
->count();
if($withdraw_count > 0){
return json(['code' => 0,'msg' => '您有一条提现申请还在审核中,请勿重复提交']);
}
if(floatval($this->userInfo['amount']) - floatval($data['tx_money']) < 0){
return json(['code' => 0,'msg' => '您的账户余额不足']);
}
// 扣钱
Record::addRecord($this->userInfo['id'],1,'用户提现',$data['tx_money'],'余额提现'.$data['tx_money'].'元至支付宝');
// 添加记录
Withdraw::create([
'uid' => $this->userInfo['id'],
'money' => $data['tx_money'],
'alipay_account' => $data['alipay_account'],
'alipay_name' => $data['alipay_name'],
'create_time' => time()
]);
return json(['code' => 1,'msg' => '申请成功,请等待处理']);
}
$this->assign('amount',$this->userInfo['amount']);
return $this->fetch();
}
public function info(){
return $this->fetch();
}
public function change_pass(){
$data = input('post.');
$result = $this->validate($data,[
'old_password|原密码' => 'require|alphaNum|length:6,18',
'password|新密码' => 'require|alphaNum|length:6,18'
]);
if($result !== true){
return json(['code' => 0,'msg' => $result]);
}
$en_password = md5($data['old_password'] . config('app.pass_salt'));
if($en_password != $this->userInfo['password']){
return json(['code' => 0,'msg' => '修改失败,原密码不正确']);
}
$en_new_password = md5($data['password'] . config('app.pass_salt'));
Users::where('id',$this->userInfo['id'])->update([
'password' => $en_new_password
]);
return json(['code' => 1,'msg' => '密码修改成功,请重新登录']);
}
public function set_userinfo(){
$data = input('post.');
$result = $this->validate($data,[
'nickname|昵称' => 'require|max:30|min:1',
'desc|个性签名' => 'max:255'
]);
if($result !== true){
return json(['code' => 0,'msg' => $result]);
}
Users::where('id',$this->userInfo['id'])->update([
'nickname' => $data['nickname'],
'desc' => $data['desc']
]);
return json(['code' => 1,'msg' => '更新用户资料成功']);
}
public function upload_avatar(){
$file = request()->file('file');
if(!$file){
return json(['code' => 0,'msg' => '请选择上传的文件','data' => []]);
}
// 根目录
$root_path = getSafeDirSeparator(realpath(env('root_path') . './public').'/avatar');
$info = $file->validate(['size'=> 2097152,'ext'=>'jpg,png,gif'])->move($root_path);
if($info){
$avatar = '/avatar/'.str_replace('\\','/',$info->getSaveName());
Users::where('id',$this->userInfo['id'])->update([
'avatar' => $avatar
]);
return json(['code' => 1,'msg' => '头像上传成功','data' => []]);
}else{
// 上传失败获取错误信息
return json(['code' => 0,'msg' => $file->getError(),'data' => []]);
}
}
}
+123
View File
@@ -0,0 +1,123 @@
<html>
<head>
<link href="__STATIC__/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/layer.js"></script>
</head>
<body>
<div class="panel-body">
<div id="alert" class="alert alert-success alert-dismissable" style="display:none;">
<button type="button" class="close" onclick="$('#alert').hide();" aria-hidden="true">
×
</button>
<span id="msg">上传成功</span>
</div>
<div id="alert2" class="alert alert-danger alert-dismissable" style="display:none;">
<button type="button" class="close" onclick="$('#alert2').hide();" aria-hidden="true">
×
</button>
<span id="msg2">错误!请进行一些更改。</span>
</div>
<div class='form-group has-feedback'>
<span style="color: red;">*</span>
<font size="3">文件名称</font>
<input style="margin-top: 3%;" id='fileName' class='form-control' type='text' placeholder="请输入文件名称..."
value="{$info.origin_name}" />
</div>
<div class='form-group has-feedback'>
<font size="3">文件描述</font>
<textarea style="margin-top: 3%;" id='fileMiaoshu' class='form-control' rows="3"
placeholder="(可选) 请输入文件描述...&#10;&#10;提示:文件编辑后分享链接不会变哦~">{$info.desc}</textarea>
</div>
<p class='help-block'>
&nbsp;
</p>
<div class='form-group has-feedback' style="margin-top: 5%;">
<button type='button' class='btn btn-block btn-success' onclick='upload()'>保存</button>
</div>
</div>
<script type="text/javascript">
var _fileName = $("#fileName").val();
var _fileMiaoshu = $("#fileMiaoshu").val();
//选择的文件发生修改时
$("#fileInput").change(function (e) {
var name = document.getElementById('fileInput').files[0].name;
$("#fileName").val(name);
});
function upload() {
var fileName = $("#fileName").val();
var fileMiaoshu = $("#fileMiaoshu").val();
if (fileName == "") {
$('#fileName').focus();
layer.msg('请填写文件名称!', { time: 700 });
return;
}
//判断数据是否更改
if (_fileName == fileName &&
_fileMiaoshu == fileMiaoshu
) {
layer.msg('未作任何修改...', { time: 500 });
setTimeout(function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}, 500);
return;
}
//修改文件
var data2 = { 'file_name': fileName, 'file_miaoshu': fileMiaoshu};
update(data2);
}
//ajax请求数据
function update(data) {
$.ajax({
type: "post",
url: window.location.href,
dataType: 'json',
data: data,
success: function (data) {
msg(data.status, data.msg);
},
error: function (error) {
msg(0, "API请求失败,请联系客服");
}
});
}
//提示信息
function msg(status, msg) {
if (!status) {
$("#msg2").html(msg);
$("#alert2").show();
$("#alert").hide();
} else {
$("#msg").html(msg);
$("#alert").show();
$("#alert2").hide();
setTimeout(function () {
window.parent.getTable("当前文件夹");
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}, 800);
}
}
</script>
</div>
</body>
</html>
@@ -0,0 +1,128 @@
<html>
<head>
<link href="__STATIC__/css/bootstrap.min.css" rel="stylesheet">
<link href="__STATIC__/css/file.css" rel="stylesheet">
<script type="text/javascript" src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/layer.js"></script>
</head>
<body>
<div style='width:320px;margin-left: 3%;margin-top: 3%;display:none;' id="alert" class="alert alert-success alert-dismissable">
<button type="button" class="close" onclick="$('#alert').hide();" aria-hidden="true">
×
</button>
<span id="msg">保存成功</span>
</div>
<div style='width:320px;margin-left: 3%;margin-top: 3%;display:none;' id="alert2" class="alert alert-danger alert-dismissable">
<button type="button" class="close" onclick="$('#alert2').hide();" aria-hidden="true">
×
</button>
<span id="msg2">错误!请进行一些更改。</span>
</div>
<div style='width:320px;margin-left: 3%;margin-top: 3%;' class='form-group has-feedback'>
<span style="color: red;">*</span>文件夹名称
<input style="margin-top: 3%;" id='folderName' class='form-control' type='text' placeholder="请输入文件夹名称..." value="{$info.folder_name}"/>
</div>
<div style='width:320px;margin-left: 3%;' class='form-group has-feedback'>
<p>文件夹描述</p>
<textarea style="margin-top: 3%;" id='folderMiaoshu' class='form-control' rows="3" placeholder="(可选) 请输入文件夹描述...">{$info.desc}</textarea>
</div>
<label class="col-sm-1">限速收益开关</label>
<div class="col-sm-4" style="margin-left: 100px;margin-top: -30px;">
<label class="switch">
<input type="checkbox" id="shouyi" value="{$info.size}">
<div class="slider round"></div>
</label>
</div>
<div style='width:320px;margin-left: 3%;' class='form-group has-feedback'>
<button style='margin-top:5%;' type='button' class='btn btn-block btn-success' onclick='upload()'>保存</button>
</div>
<script type="text/javascript">
var _folderName = $("#folderName").val();
var _folderMiaoshu = $("#folderMiaoshu").val();
var _shouyi = '{$info.size}';
$("#shouyi").val(_shouyi);
if(_shouyi == 1){
$("#shouyi").attr("checked","");
}
$("#shouyi").click(function(){
if($("#shouyi").val() == "0") //是否禁用
{
$("#shouyi").val("1");
}else{
$("#shouyi").val("0");
}
});
function upload() {
var folderName = $("#folderName").val();
var folderMiaoshu = $("#folderMiaoshu").val();
var shouyi = $("#shouyi").val();
if(folderName == "")
{
$('#folderName').focus();
layer.msg('请填写文件夹名称!', {time: 700});
return;
}
//判断数据是否更改
if(folderName == _folderName &&
folderMiaoshu == _folderMiaoshu &&
shouyi == _shouyi
){
layer.msg('未作任何修改...', {time: 500});
setTimeout(function (){
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
},500);
return;
}
var data2 = {'folder_name': folderName, 'folder_miaoshu': folderMiaoshu, "shouyi": shouyi};
$.ajax({
type: "post",
url : window.location.href,
dataType:'json',
data: data2,
success: function(data){
msg(data.status,data.msg);
},
error: function (error) {
msg(0,"API请求失败,请联系客服");
}
});
}
//提示信息
function msg(status,msg) {
if(!status){
$("#msg2").html(msg);
$("#alert2").show();
$("#alert").hide();
}else{
$("#msg").html(msg);
$("#alert").show();
$("#alert2").hide();
setTimeout(function (){
window.parent.getTable("当前文件夹");
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
},800);
}
}
</script>
</body>
+463
View File
@@ -0,0 +1,463 @@
<html>
<head>
<link href="__STATIC__/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/layer.js"></script>
<link href="__STATIC__/icon/icon.css" rel="stylesheet">
<link href="__STATIC__/css/list.css" rel="stylesheet"> <!-- 放在最后 -->
<script src="__STATIC__/js/bootstrap.min.js"></script>
<link href="__STATIC__/css/bootstrap-editable.css" rel="stylesheet">
<script src="__STATIC__/js/bootstrap-editable.js" type="text/javascript"></script>
</head>
<body>
<style>
.dialog-body {
font-feature-settings: "lnum";
-webkit-font-smoothing: antialiased;
font-size: 12px;
color: #666;
font-family: "Microsoft YaHei", SimSun;
margin: 0;
padding: 0;
line-height: 24px;
background: 0 0;
}
.file-tree-container {
height: 250px;
margin: 10px 11px;
border: 1px solid #f2f2f2;
overflow: auto;
}
.treeview {
margin: 0;
padding: 0;
list-style: none;
visibility: visible;
}
.treeview-node-on {
border: 1px solid #fff;
border-width: 1px 0;
color: #2974B6;
cursor: pointer;
display: block;
white-space: nowrap;
text-decoration: none;
background: #e5f0fb !important;
border-color: #BBD4EF #fff !important;
padding-left: 0px;
}
.treeview-node-handler {
-webkit-font-smoothing: antialiased;
cursor: pointer;
display: block;
white-space: nowrap;
text-decoration: none;
padding: 4px 0;
color: #333;
}
.icon-operate {
white-space: nowrap;
color: #333;
background: url(__STATIC__/image/icon-tree_77d7929.png) 0 0 no-repeat;
display: inline-block;
zoom: 1;
vertical-align: middle;
margin: 0 3px;
width: 15px;
height: 15px;
cursor: pointer;
background-position: -999px -999px;
}
.treeview-node .close2 {
background-position: -30px 0;
}
.treeview-node .open {
background-position: -30px -22px;
}
.treeview-dir {
cursor: pointer;
white-space: nowrap;
color: #333;
margin-right: 5px;
height: 18px;
width: 22px;
background: url(__STATIC__/image/icon-tree_77d7929.png) 0 0 no-repeat;
background-position: 0 -22px;
display: inline-block;
zoom: 1;
vertical-align: middle;
}
.treeview-node:hover {
background: #f4f9fd;
border-color: #e5f0fb;
}
.top,
.text {
margin: 0;
padding: 0;
border: 0;
}
.space-between {
-webkit-box-pack: justify;
-webkit-justify-content: space-between;
-ms-flex-pack: justify;
justify-content: space-between;
}
.align-center,
.flex-box,
.space-between {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
.flex-box {
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
}
.editable-button {
margin: 10px 2px 8px 5px;
}
.editable-input input {
width: 200px !important;
}
@media (max-width:890px) {
#upload{
width: auto !important;
}
}
</style>
<div class="dialog-body">
<div class="file-tree-container">
<ul class="treeview ">
<li>
<div class="treeview-node treeview-node-on _minus" data-padding-left="0" style="padding-left:0px"
id="0" data-isGet="0">
<span class="treeview-node-handler">
<em class="icon-operate open"></em><dfn class="treeview-dir"></dfn>
<span class="treeview-txt">根目录</span>
</span>
</div>
<ul class="treeview treeview-root-content" data-padding-left="15">
</ul>
</li>
</ul>
</div>
</div>
<div id="mkdir2">
<li id="mkdir" style="display: none;">
<div class="treeview-node" no="1" data-padding-left="15" style="padding-left:15px">
<span class="treeview-node-handler">
<em class="b-in-blk plus icon-operate"></em><dfn
class="b-in-blk treeview-ic treeview-dir"></dfn><span class="treeview-txt"
id="mkdir_input"></span>
</span>
</div>
<ul class="treeview treeview-collapse" data-padding-left="30"></ul>
</li>
</div>
<div id="DirMb" style="display: none;">
<li>
<div class="treeview-node" data-padding-left="15" style="padding-left:15px" id="" data-isGet="0">
<span class="treeview-node-handler">
<em class="icon-operate"></em><dfn class="treeview-dir"></dfn><span class="treeview-txt"></span>
</span>
</div>
<ul class="treeview treeview-collapse" data-padding-left="30"></ul>
</li>
</div>
<div class="top space-between">
<div class="top-left align-center">
<div class="top-item flex-box" onclick="mkdir_open()" style="margin-left: 10px;">
<em class="icon icon-newfolder" title="新建文件夹"></em>
<p class="text">新建文件夹</p>
</div>
</div>
<div style="float:left">
<div class="top-item flex-box upload" onclick="ok()" id="upload"style="width: 120px;float:left">
<p class="text" style="margin-left:0">确定</p>
</div>
<div class="top-item flex-box" onclick="no()" style="width: 120px;">
<p class="text" style="margin-left:0">取消</p>
</div>
</div>
</div>
<script>
var mkdir_html = $("#mkdir2").html();
mkdirInputSet($(".treeview-node-on").parent().find('ul:first')); //设置初始位置在根目录下
getFolderData("0"); //获取根目录下的文件夹
//设置新建文件夹的位置
function mkdirInputSet(ulObj) {
var ulLeft = ulObj.attr("data-padding-left");
$("#mkdir").remove();
ulObj.append(mkdir_html);//添加
$("#mkdir div").css("padding-left", ulLeft + "px");
$("#mkdir div").attr("data-padding-left", ulLeft);
$("#mkdir ul").attr("data-padding-left", Number(ulLeft) + 15);
mkdir_editable();//设置行内编辑
}
//获取文件夹下的文件夹
function getFolderData(id) {
var obj = $("#" + id);
if (obj.attr("data-isGet") == "1") //防止重复获取
return;
obj.attr("data-isGet", "1");
var objUl = obj.parent().find('ul:first');
var Left = Number(objUl.attr("data-padding-left"));
$.ajax({
type: "post",
url: "/file/folder_list",
dataType: 'json',
data: {
"folder_id": id,
},
success: function (data) {
if (data.status) {
data = data.data;
for (var i = 0; i < data.length; i++) {
data2 = data[i];
objUl.append(setDirMB(data2['id'], data2['folder_name'], Left, data2['down']));
}
setClick(); //动态修改html后需要重新绑定事件
} else {
layer.alert(data.msg, { icon: 2 });
}
},
error: function (error) {
layer.alert("API请求失败,请联系客服", { icon: 2 });
}
});
}
//设置文件模板
function setDirMB(id, name, Left, isParent = 0, isXuanzhong = 0) //ID 名称 左偏移长度 是否有下级文件 是否选中
{
$("#DirMb li div span span").html(name); //设置文件名
$("#DirMb li div").attr("id", id);
$("#DirMb li div").attr("data-padding-left", Left);
$("#DirMb li div").css("padding-left", Left + "px");
$("#DirMb li ul").attr("data-padding-left", Left + 15);
if (isParent) {
$("#DirMb li div span em").addClass("close2"); //展开图标
}
if (isXuanzhong) {
$("#DirMb li div").addClass("treeview-node-on");
}
html = $("#DirMb").html();
//样式删除掉
if (isParent) {
$("#DirMb li div span em").removeClass("close2");
}
if (isXuanzhong) {
$("#DirMb li div").removeClass("treeview-node-on"); //选中
}
return html;
}
//设置选中列事件
function setClick() {
//选中列
$(".treeview-node").unbind("click").click(function (e) { //解绑再绑定
var id = $(this).attr("id");
var ulObj = $(this).parent().find('ul:first');
if ($(this).attr("no") != "1") { //不是编辑框自身的点击
mkdirInputSet(ulObj); //设置新建文件夹的位置
} else {
return;
}
if ($(this).hasClass("treeview-node-on")) { //是否已经选中过了
var objEm = $(this).find("em");
if (objEm.hasClass("open")) { //是否展开
objEm.removeClass("open");
objEm.addClass("close2");
ulObj.hide('fast');
} else if (objEm.hasClass("close2")) { //否则显示
objEm.removeClass("close2");
objEm.addClass("open");
ulObj.show('fast');
getFolderData(id);
}
} else {
$(".treeview-node-on").removeClass("treeview-node-on"); //删除原来的选中
$(this).addClass("treeview-node-on"); //自身增加选中
}
});
}
//设置行内编辑
function mkdir_editable() {
$("#mkdir_input").editable({
toggle: 'manual',
mode: "inline",
validate: function (v) {
if (!v) return '文件夹名不能为空';
$.ajax({
type: "post",
url: "/file/mkdir",
dataType: 'json',
data: {
"folder_id": $(".treeview-node-on").attr("id"),
"folder_name": v,
"folder_miaoshu": "",
},
success: function (data) {
if (data.status) {
var obj = $(".treeview-node-on").parent().find('ul:first');
var Left = Number(obj.attr("data-padding-left"));
$(".treeview-node-on").find("em").addClass("open");
$(".treeview-node-on").removeClass("treeview-node-on");
obj.append(setDirMB(data.data, v, Left, 0, 1));
//选中的位置修改了 要重新获取一下
obj = $(".treeview-node-on").parent().find('ul:first');
mkdirInputSet(obj); //重新修改编辑框的位置
setClick(); //动态修改html后需要重新绑定事件
layer.msg(data.msg, { time: 1000, icon: 1, shift: 4 });
} else {
layer.alert(data.msg, { icon: 2 });
}
},
error: function (error) {
layer.alert("API请求失败,请联系客服", { icon: 2 });
}
});
}
});
}
//循环判断输入框是不是消失了
function mkdir_ifColse() {
setTimeout(
function () {
var html = $(".editable-input").html();
//console.log(html);
if (!html) {
$("#mkdir").hide();
$("#mkdir").hide();
return;
}
mkdir_ifColse();
}
, 50);
}
//新建文件夹按钮
function mkdir_open() {
$("#mkdir").show();
setTimeout(function () {
$("#mkdir_input").editable('toggle');
$('.file-tree-container').scrollTop($('.file-tree-container')[0].scrollHeight); //设置滚动条
//$(".editable-cancel").attr("onclick","mkdir_colse()");
}, 1); //神奇的BUG 必须得要延迟
mkdir_ifColse();
var obj = $(".treeview-node-on");
var objEm = obj.find("em");
var objUl = obj.parent().find('ul:first');
if (objEm.hasClass("close2")) { //帮你展开
objEm.removeClass("close2");
objEm.addClass("open");
objUl.show('fast');
}
}
//确定按钮
function ok() {
$.ajax({
type: "post",
url: "/file/move_to_file",
dataType: 'json',
data: {
"folder_id": $(".treeview-node-on").attr("id"),
"ids": "{$ids}",
"idFs": "{$idFs}",
},
success: function (data) {
if (data.status) {
layer.msg(data.msg, { time: 1000, icon: 1, shift: 4 });
setTimeout(function () {
window.parent.getTable("当前文件夹");
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}, 1000);
} else {
layer.alert(data.msg, { icon: 2 });
}
},
error: function (error) {
layer.alert("API请求失败,请联系客服", { icon: 2 });
}
});
}
//取消按钮
function no() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
</script>
</body>
</html>
+18
View File
@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
<title>404文件不存在</title>
</head>
<body>
<style>
body{margin: 20px;}
.off{text-align: center;font-size: 16px;color: #b3b3b3;}
.off0{background: #eee;width: 70px;height: 60px;margin: 10% auto 30px auto;border-radius: 3px;padding-top: 10px;}
.off1{border-top: 30px solid #b1b1b1;width: 10px;height: 10px;border-bottom: 10px solid #b1b1b1;margin: auto;}
</style>
<div class="off"><div class="off0"><div class="off1"></div></div>来晚啦...文件取消分享了</div>
</body>
</html>
+394
View File
@@ -0,0 +1,394 @@
<!DOCTYPE html>
<html dir="ltr" class="fontawesome-i2svg-active fontawesome-i2svg-complete">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="renderer" content="webkit">
<meta name="force-rendering" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="referrer" content="always">
<title>{$info.file_name} - {$Think.config.basic.site_title}</title>
<link href="__STATIC__/pan/shouyi/theme.css" rel="stylesheet">
<script src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/lay/modules/layer.js"></script>
<script src="__STATIC__/pan/shouyi/bootstrap.js"></script>
</head>
<body>
<main class="main">
<div class="container">
<div class="content">
<nav class="navbar navbar-light navbar-glass fs--1 font-weight-semi-bold row navbar-top sticky-kit navbar-expand">
<button class="navbar-toggler collapsed" type="button" data-toggle="collapse"
data-target="#navbarVerticalCollapse" aria-controls="navbarVerticalCollapse"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand text-left ml-3" href="/">
<div class="d-flex align-items-center">
<img class="mr-2" src="__STATIC__/pan/img/logo.png" alt="" width="40"><span>文件下载</span>
</div>
</a>
<div class="collapse navbar-collapse">
{eq name="$is_login" value="1"}
<ul class="navbar-nav align-items-center ml-auto">
<ul class="navbar-nav align-items-center ml-auto">
{eq name="$vip_info.is_vip" value="1"}
<li class="nav-item mr-3" title="点击续费" onclick="vip()" style="cursor:pointer;color: red;">
{$user.nickname} ({$group.group_name})
</li>
{/eq}
<li class="nav-item" title="点击开通" onclick="vip()" style="cursor:pointer;">
<div class="avatar avatar-xl mt-2">
<img class="rounded-circle"
src="{:getUserHead($user.avatar)}">
</div>
</li>
<li class="nav-item">
<a class="btn btn-falcon-default ml-2" href="{:url('user/logout')}">登出</a>
</li>
</ul>
{else/}
<ul class="navbar-nav align-items-center ml-auto">
<li class="nav-item">
<a class="btn btn-falcon-default ml-2 mr-2" onclick="login()" href="javascript:;">注册</a>
</li>
<li class="nav-item">
<a class="btn btn-falcon-default" onclick="login()" href="javascript:;">登录</a>
</li>
</ul>
{/eq}
</div>
</nav>
<div class="card mb-3">
<div class="card-body rounded-soft bg-gradient">
<div class="row text-white align-items-center no-gutters">
<div class="col">
<h4 class="text-white mb-2">文件下载:<span id="filename">{$info.file_name}</span></h4>
<p class="fs--1 mb-1">
<span class="text-300 mr-1">文件大小</span>{$info.size}
<span class="text-300 mr-1 ml-2">上传时间</span>{$info.create_time}
<span class="text-300 mr-1 ml-2">分享用户</span>{$info.username}
</p>
</div>
<div class="col-auto d-none d-sm-block">
<a class="btn btn-info" href="javascript:;" onclick="kefu()">联系客服</a>
<a class="btn btn-warning ml-3" target="_blank" href="{:url('index/report')}?share_id={$share_id}">举报</a>
</div>
</div>
</div>
</div>
{eq name="$vip_info.is_vip" value="0"}
<div class="card-deck">
<div class="card mb-3 overflow-hidden" style="min-width: 12rem">
<div class="bg-holder bg-card" style="background-image:url(__STATIC__/pan/img/corner-1.png);"></div>
<div class="card-body position-relative">
<h5>普通下载<span class="badge badge-soft-warning rounded-capsule ml-2">低速</span></h5>
<div class="display-4 fs-2 mb-3 mt-3 font-weight-normal text-warning">下载需时约 60 分钟</div>
<button class="btn btn-outline-secondary fs--1" onclick="down()">立即下载</button>
</div>
</div>
<div class="card mb-3 overflow-hidden" style="min-width: 12rem">
<div class="bg-holder bg-card" style="background-image:url(__STATIC__/pan/img/corner-2.png);">
</div>
<div class="card-body position-relative">
<h5>登录下载<span class="badge badge-soft-info rounded-capsule ml-2">稳定</span></h5>
<div class="display-4 fs-2 mb-3 mt-3 font-weight-normal text-info">下载需时约 5 分钟</div>
<button class="btn btn-outline-info fs--1" onclick="down()">立即下载</button>
</div>
</div>
<div class="card mb-3 overflow-hidden" style="min-width: 12rem">
<div class="bg-holder bg-card" style="background-image:url(__STATIC__/pan/img/corner-3.png);">
</div>
<div class="card-body position-relative">
<h5>VIP极速下载<span class="badge badge-soft-success rounded-capsule ml-2">推荐</span></h5>
<div class="display-4 fs-2 mb-3 mt-3 font-weight-normal">下载需时约 1 秒</div>
<button class="btn btn-outline-dark fs--1 " onclick="vip()">立即升级</button>
</div>
</div>
</div>
{else/}
<div class="card-deck">
<div class="card mb-3 overflow-hidden" style="min-width: 12rem">
<div class="bg-holder bg-card" style="background-image:url((__STATIC__/pan/img/corner-1.png);">
</div>
<div class="card-body position-relative">
<h5>电信下载<span class="badge badge-soft-warning rounded-capsule ml-2">VIP专用</span></h5>
<button class="btn btn-outline-info fs--1" onclick="down()">立即下载</button>
</div>
</div>
<div class="card mb-3 overflow-hidden" style="min-width: 12rem">
<div class="bg-holder bg-card" style="background-image:url(__STATIC__/pan/img/corner-2.png);">
</div>
<div class="card-body position-relative">
<h5>联通下载<span class="badge badge-soft-info rounded-capsule ml-2">VIP专用</span></h5>
<button class="btn btn-outline-info fs--1" onclick="down()">立即下载</button>
</div>
</div>
<div class="card mb-3 overflow-hidden" style="min-width: 12rem">
<div class="bg-holder bg-card" style="background-image:url(__STATIC__/pan/img/corner-3.png);">
</div>
<div class="card-body position-relative">
<h5>移动下载<span class="badge badge-soft-success rounded-capsule ml-2">VIP专用</span></h5>
<button class="btn btn-outline-info fs--1" onclick="down()">立即下载</button>
</div>
</div>
</div>
{/eq}
{eq name="$vip_info.is_vip" value="1"}
<div class="card bg-light mb-3" rv-show="file.vip_guest" style="">
<div class="card-body p-3">
<div class="row justify-content-center justify-content-sm-between">
<div class="col-sm-auto text-center">
<p class="fs--1 mb-0">
尊贵的{$group.group_name}您好,您已经购买成为
<a href="javascript:;" onclick="vip()"><strong> {$group.group_name} </strong></a>
到期时间:{$vip_info.expire_time}</p>
</div>
<div class="col-sm-auto d-flex flex-center">
<p class="fs--1 mb-0"><a href="javascript:;" onclick="kefu()">在线客服</a></p>
</div>
</div>
</div>
</div>
{/eq}
<div class="h-100 card mb-3">
<div class="card-body">
<div class="row no-gutters">
<div class="col-12 mb-3">
<div class="row justify-content-center justify-content-sm-between">
<div class="col-sm-auto text-center">
<h5 class="d-inline-block">升级会员尊享极速下载</h5><span
class="badge badge-soft-success badge-pill ml-2">永久更省83%</span>
</div>
<div class="col-sm-auto d-flex flex-center fs-1 mt-1 mt-sm-0">
<span class="badge badge-pill badge-danger">
限时大促 最后一天!仅剩
<span id="ctp_time_left">2 小时 20 分钟 17 秒</span>
</span>
</div>
</div>
</div>
{php}
$vip_list_num = 0;
{/php}
{volist name="$vip_rule" id="vo" key="k"}
{eq name="$vo.is_top" value="1"}
<div class="col-lg-4 border-top border-bottom">
{php}
$vip_list_num++;
$is_hot = intval(($vip_list_num % 3) == 2);
{/php}
<div class="h-100" {eq name="$is_hot" value="1"}style="background-color: rgba(115, 255, 236, 0.18)"{/eq}>
<div class="text-center p-4">
<h3 class="font-weight-normal my-0">{$vo.name}</h3>
<span class="badge badge-soft-success badge-pill ml-1">限时{$vo.discount}折</span>
<p class="mt-3">
{$vo.desc}
</p>
<h2 class="font-weight-medium my-4">
{$vo.money}
<small class="fs--1 text-700">元 / {$vo.day_name}</small>
<br>
<span class="fs--1 badge badge-info badge-pill">{$vo.discount_msg}</span>
</h2>
<button class="btn btn-outline-primary" onclick="vip({$vo.id})">立即购买</button>
</div>
</div>
</div>
{/eq}
{/volist}
<div class="col-12 text-center px-3 px-sm-4 py-4">
<h5 class="font-weight-medium fs-0">所有会员均尊享以下特权:</h5>
<svg class="svg-inline--fa fa-check fa-w-16 mr-2 text-success" aria-hidden="true"
focusable="false" data-prefix="fas" data-icon="check" role="img"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg="">
<path fill="currentColor"
d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z">
</path>
</svg> VIP极速下载通道
<svg class="svg-inline--fa fa-check fa-w-16 ml-5 mr-2 text-success" aria-hidden="true"
focusable="false" data-prefix="fas" data-icon="check" role="img"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg="">
<path fill="currentColor"
d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z">
</path>
</svg> 多文件同时下载
<svg class="svg-inline--fa fa-check fa-w-16 ml-5 mr-2 text-success" aria-hidden="true"
focusable="false" data-prefix="fas" data-icon="check" role="img"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg="">
<path fill="currentColor"
d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z">
</path>
</svg> 去除弹窗广告
</div>
</div>
</div>
</div>
<div class="card bg-light mb-3">
<div class="card-body p-3">
<div class="row justify-content-center justify-content-sm-between">
<div class="col-sm-auto text-center">
<p class="fs--1 mb-0">谨防刷单兼职,网贷,金融,裸聊敲诈,赌博等诈骗,请立即举报</p>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="row no-gutters justify-content-between fs--1 mt-4 mb-3">
<div class="col-12 col-sm-auto text-center">
<p class="mb-0 text-600">版权声明:不得利用云存储发布,存储,淫秽,诈骗等违法信息。
<a href="{:url('index/report')}?share_id={$share_id}">侵权/违法投诉</a>
或者投诉邮箱:{$Think.config.basic.site_email}</p>
</div>
<div class="col-12 col-sm-auto text-center">
<p class="mb-0 text-600">© 2018-2021 {$Think.config.basic.site_title}</p>
</div>
</div>
</footer>
<div class="modal fade hide" id="infoModal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="true"></div>
<script>
var down_info = {
is_login:{$is_login},
is_vip:{$vip_info.is_vip},
link:'{$download|raw}',
kefu:"{$Think.config.basic.site_kefu|raw}",
vip_max:{$vip_max},
vip_expire:"{$vip_info.expire_time}"
}
var second_left = 8035;
function isMobile(){
return /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent);
}
function formatTime(second) {
return (parseInt(second / 60 / 60) + " 小时 " + parseInt(second / 60 % 60) + " 分钟 " + parseInt(
second % 60) + " 秒")
.replace(/\b(\d)\b/g, "0$1");
}
function updateTimeInfo(){
second_left = second_left - 1;
$("#ctp_time_left").text(formatTime(second_left));
}
function kefu() {
layer.alert(down_info.kefu, { title: '联系客服' });
}
function vip(buy) {
buy = (buy === "" || typeof buy === "undefined" ? down_info.vip_max : buy);
if (down_info.is_login) {
if (isMobile()) {
$("#infoModal").load("/user/vip?share_id={$share_id}&buy=" + buy, function () {
$(this).modal('toggle');
});
} else {
layer.open({
type: 2,
shadeClose: true,
title: down_info.is_vip ? ('续费VIP会员 到期时间:' + down_info.vip_expire) : "在线开通VIP会员",
area: ['723px', '520px'], // 宽高
content: "/user/vip?share_id={$share_id}&buy=" + buy,
end: function () {
location.reload();
},
});
}
}else {
login("抱歉您还未登录");
}
}
function vipOk() {
layer.alert('恭喜您开通VIP成功~ 感谢您的支持!<br><br/>请刷新页面重新点击下载~',
{
icon: 1,
end: function () {
location.reload();
},
});
}
function login(title) {
if(title === ''){
title = '登录'
}
layer.open({
type: 2,
title: title,
area: ['325px', '500px'],
//shadeClose: true, // 是否点击遮罩关闭
content: '/user/login?layer=1&share_id={$share_id}',
end: function () {
location.reload(); //刷新数据
}
});
}
function down() {
//判断登录
if (down_info.is_login) {
//判断VIP
if (down_info.is_vip) {
window.open(down_info.link);
} else {
layer.confirm('普通下载很慢,推荐您开通VIP极速下载,是否继续下载?', {
icon: 2,
btn: ['继续下载', '开通VIP'] //按钮
}, function () {
window.open(down_info.link);
}, function () {
vip();
});
}
//未登录
} else {
layer.confirm('未登录下载非常慢,推荐您登录下载,是否继续下载?', {
icon: 3,
btn: ['继续下载', '登录下载'] //按钮
}, function () {
window.open(down_info.link);
}, function () {
login();
});
}
}
updateTimeInfo();
setInterval("updateTimeInfo()", 1000);
</script>
</div>
</main>
</body>
</html>
+82
View File
@@ -0,0 +1,82 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
<title>{$info.folder_name} - {$Think.config.basic.site_title}</title>
<link href="__STATIC__/pan/t0.css" rel="stylesheet" type="text/css">
<link href="__STATIC__/pan/t1.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="top">
<div class="d1">
<div class="d11" style="background-image: url({$Think.config.basic.site_logo});height: 18px; background-repeat: no-repeat; background-position: 15px 5px;">
<a href="/" class="d7">&nbsp;</a>
</div>
<div class="d12">
{eq name="$is_login" value="1"}
<a href="{:url('user/index')}">前往我的网盘</a>
{else/}
<a href="{:url('user/login')}">登录</a>
{/eq}
</div>
</div>
</div>
<div class="pc bgimg"></div>
<div class="d" id="info">
<div class="b">
<div id="filename">{$info.folder_name}</div>
<div class="rets">
<span class="mt2" style="padding-right: 3px;">分享者:</span>
<span style="color:#000">{$info.username}</span>
<span style="padding-left: 20px;">{$info.create_time|date="Y-m-d H:i"}</span>
<a href="{:url('index/report')}?share_id={$share_id}" target="_blank"><span class="retspan">文件投诉</span></a>
</div>
</div>
{eq name="$info.is_desc" value="1"}
<div class="tet">
<span class="teta"></span><span class="teta tetb"></span>
<span id="miaoshu">{$info.desc}</span>
</div>
{/eq}
<div class="d2">
<div class="nameh">文件名</div>
<div class="sizeh">大小</div>
<div class="timeh">时间</div>
</div>
<div id="infos">
{volist name="$share_list" id="vo"}
<div id="ready">
<div id="name">
&nbsp;<img src="{$vo.icon}" align="absmiddle" border="0">&nbsp;
<a href="{$vo.url}" {eq name="$vo.type" value="file"}target="_blank"{/eq}>{$vo.name}</a>
</div>
<div id="size">{$vo.size}</div>
<div id="time">{$vo.time}</div>
</div>
{/volist}
</div>
</div>
<div class="n_bot" style="margin-top: 10%;">
<div class="wap-down">手机可扫描二维码下载</div>
<div id="code">
<img src="{:url('index/qrcode')}?url={$url}" style="width: 218px;height: 218px;">
</div>
<div class="foot_info">
<div class="shenmin">
谨防刷单兼职,网贷,金融,裸聊敲诈,赌博等诈骗,请立即举报
</div>
<div class="foot_copy">版权声明:不得利用云存储发布,存储,淫秽,诈骗等违法信息。
<a href="{:url('index/report')}?share_id={$share_id}" target="_blank">侵权/违法投诉</a><br>或者投诉邮箱:{$Think.config.basic.site_email}</div>
© 2021 <a href="/">{$Think.config.basic.site_title}</a>
</div>
</div>
</body>
</html>
@@ -0,0 +1,70 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
<title>{$info.folder_name} - {$Think.config.basic.site_title}</title>
<link href="__STATIC__/pan/t0.css" rel="stylesheet" type="text/css">
<link href="__STATIC__/pan/t2.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="top">
<div class="d1">
<div class="d11" style="background-image: url({$Think.config.basic.site_logo});height: 18px; background-repeat: no-repeat; background-position: 15px 5px;">
<a href="/" class="d7">&nbsp;</a>
</div>
<div class="d12">
{eq name="$is_login" value="1"}
<a href="{:url('user/index')}">前往我的网盘</a>
{else/}
<a href="{:url('user/login')}">登录</a>
{/eq}
</div>
</div>
</div>
<div class="pc bgimg"></div>
<div class="md" id="info">
<div class="tet">
<div class="md2" id="filename">{$info.folder_name}</div>
<div class="mf">
<span class="mt2">分享者:</span>{$info.username}
<span class="mt2"></span>{$info.create_time|date="Y-m-d"}
<span class="mt2">
<a href="{:url('index/report')}?share_id={$share_id}" target="_blank">举报文件</a>
</span>
</div>
{eq name="$info.is_desc" value="1"}
<span class="teta"></span><span class="teta tetb"></span>
{$info.desc}
{/eq}
</div>
<div class="tbale">
<div>文件名</div>
<div id="infos">
{volist name="$share_list" id="vo"}
<div id="ready">
<div class="mbx">
<a href={$vo.url}" {eq name="$vo.type" value="file"}target="_blank"{/eq} class="mlink">
<img src="{$vo.icon}" align="absmiddle" border="0">
&nbsp; {$vo.name}
<div class="mmr">
<span>&nbsp;{$vo.time}</span>
</div>
</a>
</div>
</div>
{/volist}
</div>
</div>
</div>
<div class="foot_info" style="color:#939393">© 2018-2021 {$Think.config.basic.site_title}</div>
</body>
</html>
@@ -0,0 +1,191 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="apple-mobile-web-app-title" content="{$Think.config.basic.site_title}">
<meta name="keywords" content="{$Think.config.basic.site_keywords}">
<meta name="description" content="{$Think.config.basic.site_desc}">
<link href="__STATIC__/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="__STATIC__/css/main.css">
<!--<link href="__STATIC__/css/index.css" rel="stylesheet" type="text/css">-->
<title>{$Think.config.basic.site_name}</title>
<link href="__STATIC__/css/app.css" rel="stylesheet">
<style>
.loader-x {
display: block;
width: 2em;
height: 2em;
margin: 100px auto;
color: inherit;
pointer-events: none;
color: #f60
}
.loader-x {
border-top: .2em solid currentcolor;
border-right: .1em solid transparent;
-webkit-animation: loader-x 1s linear infinite;
animation: loader-x 1s linear infinite;
border-radius: 100%;
position: relative
}
@-webkit-keyframes loader-x {
to {
-webkit-transform: rotate(360deg);
transform: rotate(360deg)
}
}
@keyframes loader-x {
to {
-webkit-transform: rotate(360deg);
transform: rotate(360deg)
}
}
</style>
{$Think.config.basic.site_head|raw}
</head>
<body>
<div id="app">
<div class="home">
<div id="header">
<div class="fixwid">
<div class="logo">
<a href="">
<img src="{$Think.config.basic.site_logo}" style="width: 100%;margin-top: 17px;">
</a>
</div>
<div class="nav">
<ul>
<li><a href="{:url('index/index')}" class="a_line">首页</a></li>
<li><a href="{:url('index/xieyi')}" class="a_line" target="_blank">免责声明</a></li>
</ul>
<div class="login">
{eq name="$is_login" value="1"}
<a href="{:url('user/index')}" class="a_area">我的网盘</a>
{else/}
<a target="_blank" href="{:url('user/login')}" class="a_area">登录/注册</a>
{/eq}
</div>
</div>
</div>
<img src="__STATIC__/picture/shadow.png">
</div>
<div data-v-e9e0751c="" class="header">
<div data-v-e9e0751c="" class="header-content">
<div data-v-e9e0751c="" class="header-body">
<div data-v-e9e0751c="" class="body-left">
<div data-v-e9e0751c="" class="left-title">高速存储的云盘</div>
<div data-v-e9e0751c="" class="left-text">
{$Think.config.basic.site_title}是一款速度快、不打扰、够安全、易于分享的网络云盘,你可以在这里存储、管理和探索内容,尽情打造丰富的数字世界。</div>
<div data-v-e9e0751c="" class="left-download">
<a data-v-e9e0751c="" href="{:url('user/index')}">
<div data-v-e9e0751c="" class="apps">用户中心</div>
</a>
<a data-v-e9e0751c="" href="{:url('user/index')}" target="_self">
<div data-v-e9e0751c="" class="pc">网盘联盟</div>
</a>
</div>
</div>
<div data-v-e9e0751c="" class="body-right">
<div data-v-e9e0751c="" class="right-round1"></div>
<div data-v-e9e0751c="" class="right-round5"></div>
<div data-v-e9e0751c="" class="right-round2"></div>
<div data-v-e9e0751c="" class="right-round3"></div>
<div data-v-e9e0751c="" class="right-round4"></div>
<!---->
<div data-v-e9e0751c="" class="header-img">
<img data-v-e9e0751c="" src="__STATIC__/picture/header-mobile.png" alt=""></div>
</div>
</div>
</div>
</div>
<div data-v-35ecef7e="" class="space">
<div data-v-35ecef7e="" class="space-content">
<div data-v-35ecef7e="" class="space-title">
<p data-v-35ecef7e="">存储到云端更畅快</p>
</div>
<div data-v-35ecef7e="" class="space-body">
<div data-v-35ecef7e="" class="body-item">
<p data-v-35ecef7e="">尽享极速</p>
<p data-v-35ecef7e="">上传下载</p>
<p data-v-35ecef7e="">告别 kb/s,极速上传下载文件资料,</p>
<p data-v-35ecef7e="">免费用户也享有合理带宽。</p>
<div data-v-35ecef7e="" class="space-logo space1"></div>
</div>
<div data-v-35ecef7e="" class="body-item">
<p data-v-35ecef7e="">网盘联盟</p>
<p data-v-35ecef7e="">资源共享</p>
<p data-v-35ecef7e="">您的数据,变的有价值!</p>
<p data-v-35ecef7e="">入口一直向你敞开。</p>
<div data-v-35ecef7e="" class="space-logo space3"></div>
</div>
<div data-v-35ecef7e="" class="body-item">
<p data-v-35ecef7e="">云端数据</p>
<p data-v-35ecef7e="">非常安全</p>
<p data-v-35ecef7e="">分享文件地址永久有效</p>
<p data-v-35ecef7e="">不必担心过期而经常更换链接。</p>
<p data-v-35ecef7e=""></p>
<div data-v-35ecef7e="" class="space-logo space4"></div>
</div>
</div>
</div>
</div>
</div>
<div data-v-20ff4511="" class="footer">
<div data-v-20ff4511="" class="footer-item">
<div data-v-20ff4511="" class="footer-img">
<div data-v-20ff4511="" class="footer-img2 spinMe"></div>
<div data-v-20ff4511="" class="footer-img1 spinMe"></div>
</div>
<div data-v-20ff4511="" class="footer-title">
<p data-v-20ff4511="">高效存储,真正的云加速下载!</p>
</div>
<div data-v-20ff4511="" class="footer-content">
<a data-v-20ff4511="" href="{:url('user/index')}">
<div data-v-20ff4511="" class="content-apps">用户中心</div>
</a>
<a data-v-20ff4511="" href="{:url('user/login')}">
<div data-v-20ff4511="" class="content-pc">账户登录</div>
</a>
</div>
<div data-v-20ff4511="" class="footer-text">
<div data-v-20ff4511="" class="footer-text-content">Copyright © 2018-2021 {$Think.config.basic.site_title} All rights
reserved. 版权所有
</div>
</div>
</div>
</div>
</div>
<script src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/bootstrap.min.js"></script>
<script src="__STATIC__/js/jquery.cxscroll.js"></script>
<script type="text/javascript">
$(".display,#main .fixwid:eq(2) h1").css("background", "#f5f7f7");
$(".course_c:eq(3),.course_c:eq(7)").css("margin-right", "0");
$(".course_c:eq(2),.course_c:eq(6)").css("margin-right", "28px");
$("#pic_list_1").cxScroll();
</script>
{$Think.config.basic.site_foot|raw}
</body>
</html>
@@ -0,0 +1,149 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{$Think.config.basic.site_name}</title>
<meta name="keywords" content="{$Think.config.basic.site_keywords}">
<meta name="description" content="{$Think.config.basic.site_desc}">
<link rel="stylesheet" href="__STATIC__/static/index/css/index.css">
<link href="__STATIC__/static/index/css/icon-style.css" rel="stylesheet">
<link href="__STATIC__/static/index/css/common-style.css" rel="stylesheet">
<link href="__STATIC__/static/index/css/share-style.css" rel="stylesheet">
<link href="__STATIC__/static/index/css/vendor.css" rel="stylesheet">
<link href="__STATIC__/static/index/css/login.css" rel="stylesheet">
{$Think.config.basic.site_head|raw}
</head>
<body class="body-login wrapper-login body-login-activity">
<div id="header" class="header header-login home-header theme-blue" style="display: block;">
<div class="clearfix">
<h1 class="logo logo-st pull-left ml50">
<a style="background: url({$Think.config.basic.site_logo}) no-repeat 50% 50%;" href="/" title="盛天云盘"></a>
</h1>
<div class="js-nav pull-left nav ml50">
<a data-route="index" href="/" class="active">首页</a>
<a data-route="download" href="{:url('user/login')}">下载</a>
</div>
<div class="divider pull-right "></div>
<div class="pull-right link-wrap mr20">
<a data-dssp="页头 会员中心" href="{:url('user/login')}" class="text link" target="_blank">
<i class="icon icon-home-header-vip"></i>
<span>会员中心</span>
</a>
</div>
</div>
</div>
<div class="main-login container-login main-activity-twelve">
<div class="container">
<div class="wrap-activity-in">
<div class="js-activity-in">
<a href="{:url('user/login')}"
style="background-image: url('__STATIC__/static/index/img/login_top_20210903.png')"
target="_blank" class="activity-in-login"></a>
</div>
</div>
<div class="wrap-inset">
<div class="js-box">
<div class="box pull-right" style=" box-sizing: border-box; ">
<div class="box-logo">
<p>帐号密码登录</p>
</div>
<div class="box-hd">
</div>
<div class="box-bd">
<div class="box-block" id="js-login">
<div class="y2" style="font-size: 19px;color: #0574ff; ">1,免费注册<br>2,上传文件<br>3,分享链接</div>
<a href="{:url('user/login')}" class="mt8 _btn btn-default btn-lg btn-block" style="margin: 30px 0;">
登录
</a>
<a href="{:url('user/login')}" class="mt8 _btn btn-default btn-lg btn-block" style="margin: 30px 0;">
注册
</a>
</div>
</div>
</div>
</div>
</div>
<div class="c"></div>
</div>
<div class="u1"></div>
<ul class="wrap-intro" style=" box-sizing: border-box; margin: 0 auto;">
<li>
<div class="pic pic-intro-1"></div>
<p class="title">安全可靠</p>
<p class="desc">多副本部署,并加密存储和传输,保障数据安全可靠</p>
</li>
<li>
<div class="pic pic-intro-2"></div>
<p class="title">极速传输</p>
<p class="desc">多地专线加速,上传下载尊享极速传输</p>
</li>
<li>
<div class="pic pic-intro-3"></div>
<p class="title">高效云下载</p>
<p class="desc">云端专用服务器代理下载,告别挂机等待</p>
</li>
<li>
<div class="pic pic-intro-4"></div>
<p class="title">高清云预览</p>
<p class="desc">随时随地访问视频、照片、文档,免下载即时检阅</p>
</li>
<li>
<div class="pic pic-intro-5"></div>
<p class="title">超大空间</p>
<p class="desc">最高可达6T的会员专享空间,支持任性扩容</p>
</li>
</ul>
</div>
</div>
<div class="u">
<div class="u3">
<div class="m1">网盘用高效说话...</div>
<div class="m2">分享文件地址永久有效,不必担心过期而经常更换链接,帮您节省繁琐步骤,把时间用到有价值的地方去。
</div>
</div>
<div class="u2">
<div class="u5"></div>
</div>
</div>
<div class="c"></div>
<div class="v3">
<div class="h3">
<div class="v4">体验真正的云加速</div>
<div class="v6">下载无任何限制,无验证码等影响用户体验限制。</div>
<div class="v5">在蓝奏,所有云存储、文件下载都是秒级响应。采用网众公司云计算+存储分发技术。任何网络,享受到最快的下载速度。</div>
<div><a class="v7" href="{:url('user/login')}" target="_blank">立刻体验</a></div>
</div>
</div>
<div class="c"></div>
<div class="h2">
<div class="m1">我们的优势...</div>
<div class="m2">整合各种资源为你所用,为你24小时不间断增加收入。帮你解决各种问题,节省你的时间,等于让你赚更多的钱。<br>我们对于任何大小客户同等待遇,对下载IP不做各种级别区分,都是高价。<a
href="{:url('user/login')}" target="_blank">了解详情</a></div>
</div>
<div class="c"></div>
<div class="h1">
<div class="m1">我们这么一群人...</div>
<div class="m2">我们是一群有着激情的年轻人组成的团队,如果你怀才不遇无处倾诉?各类有才能之士,凡是有一技之长,赶快加入我们。
<a href="{:url('user/login')}" target="_blank">了解详情</a></div>
</div>
<div class="c"></div>
<div class="foot">
<div class="f5"></div>
<div class="f1" style="margin-top: 10px;word-spacing: normal">
<p>
Copyright © 2018-2021 {$Think.config.basic.site_title} All rights
reserved. 版权所有
</p>
</div>
</div>
<script type="text/javascript" src="__STATIC__/static/js/jquery.js"></script>
<script type="text/javascript" src="__STATIC__/static/index/img/top.js"></script>
{$Think.config.basic.site_foot|raw}
</body>
</html>
+106
View File
@@ -0,0 +1,106 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit">
<title>请输入提取码 - {$Think.config.basic.site_title}</title>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
<meta content="{$Think.config.basic.site_keywords}" name="keywords">
<meta content="{$Think.config.basic.site_desc}" name="description">
<link href="__STATIC__/css/t0.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="__STATIC__/pass/base.css">
<link rel="stylesheet" type="text/css" href="__STATIC__/pass/pc.css">
<script type="text/javascript" src="__STATIC__/js/jquery.js"></script>
</head>
<body style="background-color: #eef2f6;">
<div class="top">
<div class="d1">
<div class="d11" style="background-image: url({$Think.config.basic.site_logo});height: 18px; background-repeat: no-repeat; background-position: 15px 5px;">
<a href="{:url('index/index')}" class="d7">&nbsp;</a></div>
<div class="d12">
<a href="{:url('user/login')}">登录</a>
</div>
</div>
</div>
<div class="pc bgimg"></div>
<div class="docs init-docs">
<div class="acss-header" id="mweul5Yl">
<div class="acss_banner"></div>
<div class="verify-form">
<div class="clearfix">
<div class="CMxQsC {eq name="$is_vip" value="1"}is_vip{/eq}">
<div class="avatar">
<div class="photo-frame">
<span class="radius-3">
<img src="{:getUserHead($userinfo.avatar)}" width="44">
<span class="cert-info"></span>
</span>
</div>
</div>
<div class="verify-property">
<div class="verify-user">
<div class="username">{:getSafeNickname($userinfo.nickname)}</div>
&nbsp;
<span class="verify-user-avatar">
{eq name="$is_vip" value="1"}
<a href="javascript:;" class="v-icon vip-icon" title="VIP会员"><em></em></a>
{else/}
<a href="javascript:;" class="v-icon unvip-icon" title="普通用户"><em></em></a>
{/eq}
</span>
</div>
<div class="author-desc">{$desc}</div>
</div>
<div class="cb"></div>
</div>
<div class="verify-input ac-close clearfix">
<dl class="pickpw clearfix">
<dt><strong style="font-size: 15px;">请输入提取码:</strong></dt>
<dd class="clearfix input-area">
<input type="hidden" id="urlId" value="{$share_id}">
<input class="QKKaIE LxgeIt" id="accessCode" tabindex="1" type="text">
<div id="submitBtn">
<a class="submit-a g-button-blue-large" href="javascript:;" title="提取文件">
<span class="g-button-right">
<span class="text" style="width: auto;">提取文件</span>
</span>
</a>
</div>
</dd>
</dl>
<dl class="pickcode clearfix">
<dt>
验证码:</dt>
<dd class="clearfix">
<input class="LIztsC QKKaIE" id="wu4Lbl" tabindex="2" type="text">
<img alt="验证码" id="gsxl4Am4"><a class="change-code" href="javascript:;">换一张</a>
</dd>
</dl>
<div class="verify-desc-protect-share">
</div>
</div>
</div>
<div id="passCuowu" style="display: block;"></div>
</div>
</div>
<div class="cloud-bg">
<div class="bg1"></div>
<div class="bg2"></div>
<div class="bg3"></div>
</div>
<div class="init-footer">
<div class="footer" id="footer" style="height: 40px;">
<div class="footer-txt">
© 2018-2021 {$Think.config.basic.site_title} | 版权声明:不得利用云存储发布,存储,淫秽,诈骗等违法信息。
<a href="{:url('index/report')}?share_id={$share_id}" target="_blank">侵权/违法投诉</a>或者投诉邮箱:{$Think.config.basic.site_email}
</div>
</div>
</div>
</div>
<script type="text/javascript" src="__STATIC__/pass/api.js"></script>
</body>
</html>
+422
View File
@@ -0,0 +1,422 @@
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
<script type="text/javascript" src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/layer.js"></script>
<title>举报 - {$Think.config.basic.site_title}</title>
<style>
body,
td,
th {
font-family: Arial, \5FAE\8F6F\96C5\9ED1, sans-serif;
font-size: 14px;
margin: 0px;
color: #333333;
}
.d2 {
font-size: 22px;
font-family: MingLiU, PMingLiU;
width: auto;
margin-right: auto;
margin-left: auto;
padding-left: 8%;
padding-right: 50px;
padding-top: 17px;
padding-bottom: 11px;
}
#date {
font-size: 12px;
color: #666666;
margin: auto;
padding: 7px 98px;
text-align: center;
width: auto;
}
.d5 {
color: #000000;
font-size: 16px;
}
.h3 {
color: #FFFF66;
font-weight: normal;
padding-bottom: 30px;
padding-top: 27px;
background-color: #19A9E5;
padding-right: 50px;
padding-left: 8%;
line-height: 2.1;
font-size: 16px;
}
.h9 {
text-align: center;
padding: 7px;
border: 1px solid #FFFFFF;
color: #FFFFFF;
}
.d7 {
padding-left: 8%;
margin-right: auto;
margin-left: auto;
width: auto;
padding-top: 17px;
padding-right: 50px;
padding-bottom: 98px;
color: #666666;
}
.m {
border: 1px solid #ccc;
padding: 9px;
/* width: 500px; */
font-size: 14px;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .125);
background-color: #fafafa;
}
.m:hover {
border: 1px solid #19A9E5;
}
.m2 {
border: none;
color: #FF0000;
font-size: 14px;
font-weight: 700;
}
.anniu {
padding: 9px;
height: 39px;
width: 150px;
background-color: #FFFFFF;
color: #0099FF;
}
.anniu:disabled {
color: #757575;
background-color: #DEDEDE;
border: 2px solid #DEDEDE;
}
.copy {
border-top: 1px dashed #CCCCCC;
border-right: 1px none #CCCCCC;
border-bottom: 1px dashed #CCCCCC;
border-left: 1px none #CCCCCC;
color: #888888;
line-height: 37px;
text-align: left;
padding: 7px;
}
span {
color: #8AD3F2;
font-size: 14px;
line-height: 2.3;
}
.p {
width: 709px;
margin-right: auto;
margin-left: auto;
}
.tc {
padding: 8px;
visibility: hidden;
background-color: #78E789;
border: 1px solid #009900;
font-size: 30px;
color: #FFFFFF;
line-height: 100px;
}
#f8 {
color: #75D84B;
display: none;
}
input:focus {
outline: 0;
}
.m:focus {
border: #52A6EF 1px solid;
box-shadow: 0 0 3px rgba(82, 166, 239, .8);
outline: 0;
background-color: #fff
}
.radio {
position: absolute;
left: -9999em
}
.cb_empty {
margin-bottom: 16px;
font-weight: 700;
font-size: 12px;
background-color: #fff;
border: 1px #ddd solid;
padding: 0 16px;
border-radius: 3px;
cursor: pointer;
background-image: linear-gradient(#FCFCFC, #EEE);
display: inline-block;
line-height: 28px;
height: 28px
}
.cb_empty:hover {
border: 1px #ccc solid;
background-image: linear-gradient(#EEE, #DDD)
}
.cb_empty:active {
box-shadow: inset 0 1px 6px rgba(0, 0, 0, .3)
}
.checked {
color: #fff;
cursor: default;
background: #379be9;
border: 1px #2287D5 solid;
background-image: linear-gradient(#379BE9, #379BE9);
box-shadow: inset 0 2px 6px rgba(0, 0, 0, .3)
}
.checked:hover {
border: 1px #2287D5 solid;
background-image: linear-gradient(#379BE9, #379BE9)
}
::-webkit-scrollbar {
background: rgba(0, 0, 0, 0.1);
height: 8px;
;
width: 8px
}
::-webkit-scrollbar-thumb {
background-color: rgba(0, 0, 0, 0.3)
}
::-webkit-scrollbar-thumb:hover {
background: rgba(0, 0, 0, 0.5);
}
::-webkit-scrollbar-thumb:active {
background: rgba(0, 0, 0, 0.6);
}
#report {
position: fixed;
width: 100%;
background: rgba(17, 17, 17, .3);
height: 100%;
top: 0;
border: 0;
z-index: 9;
}
.report {
background: #fff;
border-radius: 7px;
width: 300px;
text-align: center;
padding: 17px;
position: absolute;
margin: auto;
right: 0;
left: 0;
bottom: 0;
top: 0;
height: 80px;
}
.report span {
margin: 0 15px;
cursor: pointer;
font-size: 16px;
color: #08f;
}
.report_hd {
padding-bottom: 20px;
}
#f9 {
cursor: pointer;
}
</style>
</head>
<body>
<div class="d2">互联网不良信息 文件举报</div>
<div class="h3">
<span class="d5">文件举报说明:</span> <br />
1,如果有害信息类别属于“版权或者危害他人”,请提供以下材料:
<br />
<span>版权证明文件(如著作权、版权证书等)或侵犯他人权利的相关证明(如肖像权的本人身份证等)。书面处理请求书(需要注明处理方式,如删除相关文件或冻结用户账户文件等)。举报人的相关证件扫描件(如身份证、营业执照等),如果与第一项版权证明不相符的,还需要提供
授权委托书 。<br />
以上材料均采用电子扫描件,并加盖公章或签名。发送到邮件 <span class="h9">{$Think.config.basic.site_email}</span></span><br />
2,如果文件含有诈骗,病毒,木马,淫秽等问题,可以直接提交。
</div>
<div id="content">
<div class="main">
<div class="d7">
<table width="100%" cellspacing="0" cellpadding="7" border="0">
<tbody>
<tr valign="top">
<td valign="middle">
<div align="left"><span class="field"><strong>联系邮箱/手机号:</strong></span>[必填]<br />
<input type="text" class="m" maxlength="60" size="26" id="yourname"
name="yourname" />
</div>
</td>
</tr>
<tr valign="top">
<td>
<div align="left"><span class="field"><strong>详细描述:</strong></span><br />
<textarea name="message" class="m" id="message" cols="60" rows="5"></textarea>
<span class="tip"></span>
</div>
</td>
</tr>
<tr valign="top">
<td>
<div align="left"><span class="field"><strong>危害类别:</strong></span>
<div id="pay">
<label for="t0" class="cb_empty checked"><input type="radio" name="tel"
value="病毒" id="t0" class="radio" checked />病毒</label>
<label for="t1" class="cb_empty"><input type="radio" name="tel" value="诈骗"
id="t1" class="radio" />诈骗</label>
<label for="t5" class="cb_empty"><input type="radio" name="tel" value="赌博"
id="t5" class="radio" />赌博</label>
<label for="t2" class="cb_empty"><input type="radio" name="tel" value="侵权"
id="t2" class="radio" />侵权</label>
<label for="t3" class="cb_empty"><input type="radio" name="tel" value="色情"
id="t3" class="radio" />色情</label>
<label for="t4" class="cb_empty"><input type="radio" name="tel" value="其它"
id="t4" class="radio" />其它</label>
</div>
</div>
</td>
</tr>
<tr valign="top">
<td>
<div>
<input type="submit" id="f9" class="anniu" value="提 交" onclick="ck()" />
<font id="f8"> 请稍后...</font>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<script language="javascript">
var type = "病毒";
$('#pay label').click(function () {
type = $(this).find('input').val();
var id = $(this).find('input').attr('id');
$('#' + id).attr('checked', true);
$($('#' + id).parent()).addClass('checked').siblings().removeClass('checked');
});
//获取浏览器参数
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) { return pair[1]; }
}
return (false);
}
function G(id) {
return document.getElementById(id);
}
function ck() {
var url_id = getQueryVariable("url_id") || '';
var contact = $("#yourname").val();
var text = $("#message").val();
if (contact == '') {
layer.msg("请提供您的联系方式", function () { });
$("#yourname").focus();
return false;
}
if (text == '') {
layer.msg("请提供详细举报内容", function () { });
$("#message").focus();
return false;
}
G('f9').disabled = true;
G('f9').value = "正在提交中...";
//提交举报
$.ajax({
type: "post",
url: window.location.href,
data: {
"contact": contact,
"content": text,
"type": type
},
dataType: 'json',
success: function (data) {
if (data.code == 1) {
layer.alert(data.msg, {
icon: 1,
end: function () {
location.reload();
},
});
} else if (data.code == 0) {
layer.alert(data.msg, { icon: 2 });
}
},
error: function (error) {
layer.alert("API请求失败,请联系客服", { icon: 2 });
}
});
G('f9').disabled = false;
G('f9').value = "提 交";
return false;
}
function getdates() {
var d = new Date();
var year = d.getFullYear();
var shows = "&copy; 2018-" + year + " {$Think.config.basic.site_title}";
document.getElementById("date").innerHTML = shows;
}
</script>
<div id='date'>
<script>
getdates();
</script>
</div>
</div>
</body>
</html>
+310
View File
@@ -0,0 +1,310 @@
<!DOCTYPE html>
<html>
<head>
<script>
//遮罩层
if (window != top) {
try {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
catch (err) {
//在此处理错误
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<title>文件管理 - {$Think.config.basic.site_title}</title>
<link href="__STATIC__/css/bootstrap.min.css" rel="stylesheet">
<link href="__STATIC__/css/userapp.css" rel="stylesheet">
<link href="__STATIC__/icon/icon.css" rel="stylesheet">
<link href="__STATIC__/css/home.css" rel="stylesheet">
<link href="__STATIC__/css/elementui.css" rel="stylesheet">
<link href="__STATIC__/css/list.css" rel="stylesheet"> <!-- 放在最后 -->
<script src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/bootstrap.min.js"></script>
<script src="__STATIC__/js/common.js"></script>
<link href="__STATIC__/css/file.css" rel="stylesheet">
<link href="__STATIC__/css/bootstrap-table.min.css" rel="stylesheet">
<link href="__STATIC__/css/bootstrap-table-fixed-columns.css" rel="stylesheet">
<link href="__STATIC__/css/bootstrap-editable.css" rel="stylesheet">
<script src="__STATIC__/js/bootstrap-table.min.js" type="text/javascript"></script>
<script src="__STATIC__/js/bootstrap-table-fixed-columns.js" type="text/javascript"></script>
<script src="__STATIC__/js/bootstrap-editable.js" type="text/javascript"></script>
<script src="__STATIC__/js/lay/modules/layer.js"></script>
<script type="text/javascript" src="__STATIC__/viewer/viewer.min.js"></script>
<link rel="stylesheet" href="__STATIC__/viewer/viewer.min.css">
<style>
.el-menu-item a{
display: block;
text-decoration: none;
color: #7e8c8d;
}
.el-menu-item.select a{
color: #09AAFF;
}
@media (max-width:890px) {
.pub-header .logo{
width: 100px !important;
}
.pub-header .head-box .text{
display: none;
}
.el-menu-item{
padding: 0;
}
.el-container{
flex-direction: column;
}
.el-aside{
width: 100%;
overflow:inherit
}
.el-menu-item{
display: inline-block;
width: 30.33333%;
text-align: center;
margin: .5%;
}
.top-item em{
display: none;
}
.top-item .text {
margin-left: 0;
width: 28px;
}
.top-right input{
width: 80%;
}
.filename {
display: inline-block;
width: 100px;
overflow: hidden;
}
.col-sm-1{
display: inline-block;
padding-right:0 !important;
margin-left: 0 !important;
}
.col-sm-1:nth-child(2){
padding-left:0;
}
.col-sm-3{
display: inline-block;
margin-left: 0;
}
.switch {
width: 48px;
height: 26px;
}
.slider:before {
height: 17px;
width: 15px ;
}
}
</style>
</head>
<body>
<div class="app">
<div class="header">
<section class="el-container is-vertical">
<header class="el-header" style="height: 60px;">
<div class="pub-header space-between">
<a href="/"><img src="{$Think.config.basic.site_logo}" class="logo"
style="width: 130px;height: 40px;"></a>
<div class="pub-right flex">
<span>
<div class="head-box align-center el-popover__reference tan"
aria-describedby="el-popover-2040" tabindex="0"
{eq name="$vip_info.is_vip" value="0"}tan="VIP到期时间:未开通">{/eq}
{eq name="$vip_info.is_vip" value="1"}tan="VIP到期时间:{$vip_info.expire_time}">{/eq}
<img src="{:getUserHead($info.avatar)}" alt=""class="head-img">
<p class="text" {eq name="$vip_info.is_vip" value="1"}style="color: red;"{/eq}>
{$info.nickname} ({$group.group_name})
</p>
<p class="line"></p>
</div>
</span>
<div class="pub-header1 align-center"><img
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAABCUlEQVQokZXTvyvEYRwH8Nc9sbrtDJLVdl05qfMPKFaJzHSDwUJmZTEwCBnFJgOZUYorq8l2AxtXFkoZvs+Xb9e5H+/l8/S83+/n86PPkyuVSpowjTxOcIp5LKCBy6wwZM6DkZzATbwbiPEWk7iKOtAXYx5nWEWtuRTUsY4KzjGFRpp5D2v/GLO4wwb207LH8RaJbnCND5QDlrDbpTHFDpYDhvDco/kJIwGfPRpThOBv4q2w2Yb7Cm1IuO+U+QXDHR5pxijqAUeS5egFKzgMeEABY10aK5KNrKU9V7GNYgdjGVtR/zvpBuYkLTziAK8ZUyGWWsRs1Mu1+JIzWJT8qG/04x3HuMgKfwBDXy+/tOYcjQAAAABJRU5ErkJggg=="
alt="" class="tc">
<p class="text">
<a href="{:url('user/logout')}" class="js-ajax-btn" style="color:#313131">退出登录</a>
</p>
</div>
</div>
</div>
</header>
<section class="el-container">
<aside class="el-aside">
<div class="el-col el-col el-col-24">
<ul id="menubar" class="el-menu-vertical-demo el-menu"
style="background-color: rgb(247, 247, 247);margin-top: 8px;">
<li role="menuitem" class="el-menu-item g-button-right {eq name="url_path" value="user/index"}select{/eq}">
<a href="{:url('user/index')}">
<em class="icon icon-disk"></em>
<span>全部文件</span>
</a>
</li>
<li role="menuitem" class="el-menu-item g-button-right {eq name="url_path" value="recycle/index"}select{/eq}">
<a href="{:url('recycle/index')}">
<em class="icon icon-delete"></em>
<span>回收站</span>
</a>
</li>
{php}
if($url_path == 'share/index' || $url_path == 'share/record' || $url_path == 'share/withdraw'){
$share_active = 1;
}else{
$share_active = 0;
}
{/php}
<li role="menuitem" class="el-menu-item g-button-right {eq name="$share_active" value="1"}select{/eq}">
<a href="{:url('share/index')}">
<em class="icon icon-my-share"></em>
<span>分享赚钱</span>
</a>
</li>
</ul>
</div>
</aside>
<main class="el-main">
{block name="main"}{/block}
</main>
</section>
</section>
<div class="el-dialog__wrapper" style="display: none;">
<div role="dialog" aria-modal="true" aria-label="更换手机号" class="el-dialog"
style="margin-top: 15vh; width: 404px;">
<div class="el-dialog__header"><span class="el-dialog__title">更换手机号</span><button type="button"
aria-label="Close" class="el-dialog__headerbtn"><i
class="el-dialog__close el-icon el-icon-close"></i></button></div>
<!---->
<!---->
</div>
</div>
<div class="el-dialog__wrapper" style="display: none;">
<div role="dialog" aria-modal="true" aria-label="修改密码" class="el-dialog"
style="margin-top: 15vh; width: 404px;">
<div class="el-dialog__header"><span class="el-dialog__title">修改密码</span><button type="button"
aria-label="Close" class="el-dialog__headerbtn"><i
class="el-dialog__close el-icon el-icon-close"></i></button></div>
<!---->
<!---->
</div>
</div>
</div>
</div>
<script type="text/javascript">
//全局变量
var GV = {
ROOT: "/",
WEB_ROOT: "/",
JS_ROOT: "./assets/js/",
APP: ''/*当前应用名*/
};
function isMobile(){
return /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent);
}
function vip() {
let w = window.screen.width < 768 ? '95%' : '723px';
let h = window.screen.width < 768 ? '95%' : '520px';
if (isMobile()) {
layer.open({
type: 2,
shadeClose: true,
closeBtn: 0,
title: false,
offset: 'b',
anim: 2,
area: ['100%', '620px'], // 宽高
content: "/user/vip?layer=1",
end: function () {
},
});
}else{
layer.open({
type: 2,
shadeClose: true,
title: "VIP中心",
area: [w, h], // 宽高
content: "/user/vip",
end: function () {
//location.reload();
},
});
}
}
function userinfo() {
let w = window.screen.width < 768 ? '95%' : '723px';
let h = window.screen.width < 768 ? '95%' : '620px';
layer.open({
type: 2,
shadeClose: true,
title: "个人中心",
area: [w, h], // 宽高
content: "/user/info",
end: function () {
//location.reload();
},
});
}
function vipOk() {
layer.alert('恭喜您开通VIP成功~ 感谢您的支持!',
{
icon: 1,
end: function () {
location.reload();
},
});
}
$(".head-box").click(
function () {
userinfo();
}
);
$('.tan').on({
mouseenter: function () {
var nei = $(this).attr("tan");
if (nei) {
var that = $(this);
tips = layer.tips("<span style='color:#000;font-size:17px;'>" + nei + "</span>", that, { tips: [2, '#fff'], time: 0, area: 'auto', maxWidth: 700 });
}
},
mouseleave: function () {
layer.close(tips);
}
});
</script>
<script src="__STATIC__/js/wind.js"></script>
<script src="__STATIC__/js/admin.js"></script>
</body>
</html>
+236
View File
@@ -0,0 +1,236 @@
{extend name="layout/user" /}
{block name="main"}
<div class="all-box">
<div class="top space-between">
<div class="top-left align-center">
<!--[if lte IE 9]><div style="color: #FFFFFF;width: 770px;text-align: center;background: #FF4949;margin: auto;">升级提示:当您看到此信息,说明您的浏览器不支持上传接口,请使用360(极速模式),QQ(新版),Chrome等新一代浏览器。</div><![endif]-->
<div id="CilckCheck2" class="top-item flex-box upload " onclick="CheckEmpty()" style="background-color: #d9534f;">
<em class="icon icon-delete"></em><p class="text">清空</p>
</div>
<div id="CilckCheck" style="display: none;" class="align-center">
<div id="CheckTmp" style="display: none;"></div>
<div class="top-item flex-box upload" onclick="CheckBack()">
<em class="icon icon-disk" title="收集文件"></em>
<p class="text">还原文件</p>
</div>
<div class="top-item flex-box" onclick="CheckDelete()" style="margin-right: 0px;padding: 0 8px 0 8px;border-radius: 0px;">
<em class="icon icon-delete" title="删除"></em>
<p class="text">彻底删除</p>
</div>
</div>
</div>
<div class="top-right space-between">
<div class="el-input">
<input id="sousuo" type="text" autocomplete="off" placeholder="搜索您的文件" class="el-input__inner">
<span class="icon icon-search" onclick="getTable($('#sousuo').val())"></span>
</div>
</div>
</div>
<div id="emptyFile" style="display: none;">
<div class="emptyFile" style="visibility: visible;">
<div class="emptyFile2 emptyRecyclebin">
<div class="img">
</div>
</div>
</div>
</div>
<div class="daohang">
<span class="daohang-all" style="display: block;">
<span onclick="getTable()" style="cursor:pointer;">放到回收站中的文件,外链无法分享不可下载。重要文件不要放到回收站!</span>
<span style="float:right;top: 1px;">
<span style="color: #f0ad4e;font-size: 12px;margin-right: 5px;" title="鼠标右键文件去试试~">
<span class="icon icon-tips-caution"></span>
文件操作可使用右键
</span>
<span>已全部加载,共<span class="daohang-count">-</span></span>
</span>
</span>
<ul class="daohang-path" style="display: none;">
<li>
<a id="daohang-shangyiji" onclick="getTable()" href="javascript:;">返回上一级</a>
<span class="fuhao">|</span>
</li>
<li>
<a href="javascript:;" onclick="getTable()">全部文件</a>
<span class="fuhao">&gt;</span>
<span id="daohang">
</span>
</li>
<span style="float:right;">已全部加载,共<span class="daohang-count">-</span></span>
</ul>
</div>
<div class="context-menu">
<ul class="list" data-id="" data-filename="" data-folder=""
id="list1"
style="z-index: 100; left: 524px; top: 194px; display: none;">
<li>彻底删除</li>
<li class="separate"></li>
<li>还原</li>
</ul>
<ul class="list" id="list2" style="z-index: 100; left: 524px; top: 194px; display: none;">
<li>重新加载页面</li>
<li class="separate"></li>
<li>刷新</li>
</ul>
</div>
<script src="__STATIC__/js/recyclebin.js"></script>
<div class="table-box">
<table id="table"></table>
<script>
//table自适应
$(window).resize(function () {
$("#table").bootstrapTable('resetView', {
height: $(window).height() - 171
});
});
//搜索回车
$("#sousuo").keydown(function(e){
if(e.keyCode==13){
getTable($(this).val());
}
});
function getTable(sousuo="") {
$('#table').bootstrapTable('destroy'); //销毁数据
var queryUrl = "{:url('recycle/list')}?rnd=" + Math.random() + "&search="+sousuo;
$("#table").bootstrapTable({
url: queryUrl, //请求后台的URL*
method: 'GET', //请求方式(*
striped: true, //是否显示行间隔色
sortable: true, //是否启用排序
sortOrder: "asc", //排序方式
dataField: "data", //Json数据的字段
pagination: true,
pageNumber: 1,
pageSize: 20,
pageList: [10, 25, 50, 100],
//clickToSelect: true, //点击选中
height: $(window).height() - 171, //高度
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
classes: "table table-hover",
queryParams : function (params) {
return {
rows: params.limit, //页面大小
page: (params.offset / params.limit) + 1, //页码
};
},
//无内容时
formatNoMatches: function () {
if(sousuo && 1==2){
$(".emptyFile2").addClass("emptySousuo");
var msg = '<p title="为什么不去问问神奇的海螺呢">在您的网盘中,未搜索到相应的文件</p>';
}else{
$(".emptyFile2").addClass("emptyRecyclebin");
var msg = '<p style="font-size: 16px;font-weight: 700;color: #03081a;">您的回收站是空的噢</p><p>建议您把网盘的文件都删除后再来,2333~</p>';
}
$(".emptyFile2 div").html(msg);
$("#table").html($("#emptyFile").html());
return "";
},
//加载动画
loadingTemplate: function () {
return "<span class=\"loading-wrap\">\n <img src=\"//static.skpan.cn/user/img/loading.gif\"/>\n</span>";
},
//加载失败
onLoadError: function () {
// showTips("数据加载失败!");
},
//加载完成
onLoadSuccess: function (data) {
$(".fixed-table-loading").remove();
daohang(data.parent,data.total,sousuo); //修改导航
HoverGengduo(); //鼠标悬浮显示更多按钮
clickList(); //初始化右键菜单
},
//自定义css
rowStyle: function (row, index) {
var style = {};
style = {
css: {
'font-size': '13px'
}
};
return style;
},
//复选框点击事件
onCheckAll:function(rows){
CilckCheck(); //复选框选中 更新菜单栏
},
onCheck:function(row){
CilckCheck(); //复选框选中 更新菜单栏
},
onUncheck:function(row){
CilckCheck(); //复选框选中 更新菜单栏
},
onUncheckAll: function (row) {
CilckCheck(); //复选框选中 更新菜单栏
},
//表头
columns: [{
checkbox: true,
visible: true //是否显示复选框
},
{
field: 'file_name',
title: '文件名',
sortable: true, //排序
width:'500px',
formatter: function (value, row, index) { //处理数据
return value;
},
}, {
field: 'file_size',
title: '文件大小',
sortable: true, //排序
}, {
field: 'count_open',
title: '阅览',
sortable: true, //排序
}, {
field: 'count_down',
title: '下载',
sortable: true, //排序
}, {
field: 'url',
title: '分享链接',
}, {
field: 'update_time',
title: '删除日期',
sortable: true, //排序
},
],
//填入个数据,要不然会显示没文件
data: [{
"file_name": "",
}],
})
}
getTable();
</script>
</div>
</div>
{/block}
+122
View File
@@ -0,0 +1,122 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/highcharts.js"></script>
<link href="__STATIC__/css/bootstrap.min.css" rel="stylesheet">
<link href="__STATIC__/css/bootstrap-table.min.css" rel="stylesheet">
<link href="__STATIC__/css/bootstrap-table-fixed-columns.css" rel="stylesheet">
</head>
<body>
<div class="wrap">
<div class="panel-body" id="container" style="width: 95%; height: 400px; margin: 0 auto">
</div>
<table class="table table-hover table-bordered margin-top-10">
<thead>
<tr>
<th>浏览</th>
<th>下载</th>
<th>总订单</th>
<th>成功订单</th>
<th>注册</th>
<th>金额</th>
<th>分成</th>
<th>日期</th>
<th>星期</th>
<th>几天前</th>
</tr>
</thead>
<tbody>
{volist name="profit" id="vo"}
<tr>
<td><span class="label label-success">{$vo.count_view}</span></td>
<td><span class="label label-success">{$vo.count_down}</span></td>
<td><span class="label label-success">{$vo.count_order}</span></td>
<td><span class="label label-success">{$vo.count_order_yes}</span></td>
<td><span class="label label-success">{$vo.count_reg}</span></td>
<td><span class="label label-success">{$vo.count_money}</span></td>
<td><span class="label label-success">{$vo.count_profit}</span></td>
<td>{$vo.create_time|date="Y-m-d"}</td>
<td>{:getWeekDay($vo.create_time)}</td>
<td>{:getTimeLastDay($vo.create_time)}天前</td>
</tr>
{/volist}
</tbody>
</table>
</div>
</body>
<script>
$(function () {
$('#container').highcharts({
title: {
text: '',
x: -20 //center
},
plotOptions: {
line: {
lineWidth: 3
},
tooltip: {
hideDelay: 200
}
},
subtitle: {
text: '',
x: -20
},
xAxis: {
categories: [
{$time_type|raw}
]
},
yAxis: {
title: {
text: ''
},
plotLines: [{
value: 0,
width: 1
}]
},
tooltip: {
valueSuffix: ' 个',
crosshairs: true,
shared: true
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
series: [
{
name: '注册',
color: 'rgba(0,242,59,246)', marker: { radius: 6 }, data: [
{$series_reg|raw}
]
},
{
name: '成功订单',
color: 'rgba(0,15,182,59)', marker: { radius: 6 }, data: [
{$series_order|raw}
]
},
{
name: '金额',
color: 'rgba(0,92,219,192)', marker: { radius: 6 }, data: [
{$series_money|raw}
]
},
]
});
});
</script>
</html>
+153
View File
@@ -0,0 +1,153 @@
{extend name="layout/user" /}
{block name="main"}
<link href="__STATIC__/font-awesome/css/font-awesome.min.css?page=index" rel="stylesheet" type="text/css">
<link href="__STATIC__/css/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css">
<script src="__STATIC__/js/bootstrap-datetimepicker.js"></script>
<style>
@media (max-width:890px) {
.tabbable tbody tr td:nth-child(2){
display: inline-block;
width: 34px;
overflow: hidden;
height: 86px;
}
}
</style>
<div class="all-box">
<div class="wrap js-check-wrap">
<ul class="nav nav-tabs">
<li {eq name="url_path" value="share/index"}class="active"{/eq}><a href="{:url('share/index')}">今日收益</a></li>
<li {eq name="url_path" value="share/record"}class="active"{/eq}><a href="{:url('share/record')}">财务记录</a></li>
<li {eq name="url_path" value="share/withdraw"}class="active"{/eq}><a href="{:url('share/withdraw')}">提现记录</a></li>
</ul>
<fieldset>
<div class="tabbable">
<div class="tab-content">
<div class="tab-pane active">
<form class="well form-inline margin-top-20" method="get" action="{:url('share/index')}">
时间:
<input type="text" class="form-control input-group date form_date" data-date=""
data-date-format="" data-link-field="dtp_input2" data-link-format="yyyy-mm-dd"
name="time" value="{$time}" style="width: 140px;" autocomplete="off">
<input type="submit" class="btn btn-primary" value="搜索">&nbsp;
<a onclick="shiming()"
style="color: #333;text-decoration: none;">实名认证</a>&nbsp;&nbsp;|&nbsp;
<a onclick="tixianadd()" style="color: #333;text-decoration: none;">申请提现</a>
</form>
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>ID</th>
<th>所属文件</th>
<th>浏览</th>
<th>下载</th>
<th>注册</th>
<th>总订单</th>
<th>成功订单</th>
<th>金额</th>
<th>收益</th>
<th class="hidden-xs">更新时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td>{$vo.id}</td>
<td>{:getFileName($vo.file_id)}</td>
<td>{$vo.count_view}</td>
<td>{$vo.count_down}</td>
<td>{$vo.count_reg}</td>
<td>{$vo.count_order}</td>
<td>{$vo.count_order_yes}</td>
<td>{$vo.count_money}</td>
<td >{$vo.count_profit}</td>
<td class="hidden-xs">{$vo.create_time|date="Y-m-d H:i"}</td>
<td>
<a href="#" onclick="zoushitu('{$vo.file_id} ({:getFileName($vo.file_id)})','{$vo.file_id}')">走势图</a>
</td>
</tr>
{/volist}
</tbody>
</table>
<div class="pag">
{$list|raw}
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<script type="text/javascript">
$('.form_date').datetimepicker({
language: 'zh-CN',
weekStart: 1,
todayBtn: 1,
autoclose: 1,
todayHighlight: 1,
startView: 2,
minView: 2,
forceParse: 0
});
function zoushitu(name = "", post_id = "") {
layer.open({
type: 2,
title: '30天走势图 ' + name,
area: ['98%', '90%'],
shadeClose: true,
fixed: true, //不固定
content: '/share/echarts?id=' + post_id,
});
}
</script>
<script>
function tixianadd() {
if (window.screen.width < 768) {
var w = '95%';
}
else {
var w = '450px';
}
layer.open({
type: 2,
shadeClose: true,
title: "申请提现",
area: [w, '380px'], // 宽高
content: "/user/withdraw",
end: function () {
//location.reload();
},
});
}
function shiming() {
if (window.screen.width < 768) {
var w = '95%';
}
else {
var w = '480px';
}
layer.open({
type: 2,
shadeClose: true,
title: "实名认证",
area: [w, '300px'], // 宽高
content: "/user/auth",
end: function () {
//location.reload();
},
});
}
</script>
{/block}
+69
View File
@@ -0,0 +1,69 @@
{extend name="layout/user" /}
{block name="main"}
<link href="__STATIC__/font-awesome/css/font-awesome.min.css?page=index" rel="stylesheet" type="text/css">
<link href="__STATIC__/css/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css">
<script src="__STATIC__/js/bootstrap-datetimepicker.js"></script>
<div class="all-box">
<div class="wrap js-check-wrap">
<ul class="nav nav-tabs">
<li {eq name="url_path" value="share/index"}class="active"{/eq}><a href="{:url('share/index')}">今日收益</a></li>
<li {eq name="url_path" value="share/record"}class="active"{/eq}><a href="{:url('share/record')}">财务记录</a></li>
<li {eq name="url_path" value="share/withdraw"}class="active"{/eq}><a href="{:url('share/withdraw')}">提现记录</a></li>
</ul>
<fieldset>
<div class="tabbable">
<div class="tab-content">
<div class="tab-pane active">
<form class="well form-inline margin-top-20">
累计收益:0 </form>
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>ID</th>
<th>原因</th>
<th>来源</th>
<th>变更金额</th>
<th>变更前</th>
<th>变更后</th>
<th>时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td>{$vo.id}</td>
<td>{$vo.remark}</td>
<td>{$vo.source}</td>
<td>
{eq name="$vo.type" value="0"}
<b style="color: #47a21a;font-weight: bold"> + {$vo.money}</b>
{else/}
<b style="color: #f70606;font-weight: bold"> - {$vo.money}</b>
{/eq}
</td>
<td>{$vo.before_money}</td>
<td>{$vo.after_money}</td>
<td>{$vo.create_time|date="Y-m-d H:i"}</td>
</tr>
{/volist}
</tbody>
</table>
<div class="pag">
{$list|raw}
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div>
{/block}
+121
View File
@@ -0,0 +1,121 @@
{extend name="layout/user" /}
{block name="main"}
<link href="__STATIC__/font-awesome/css/font-awesome.min.css?page=index" rel="stylesheet" type="text/css">
<link href="__STATIC__/css/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css">
<script src="__STATIC__/js/bootstrap-datetimepicker.js"></script>
<style>
@media (max-width:890px) {
.tabbable tbody tr td:nth-child(3){
display: inline-block;
width: 88px;
overflow: hidden;
height: 86px;
}
}
</style>
<div class="all-box">
<div class="wrap js-check-wrap">
<ul class="nav nav-tabs">
<li {eq name="url_path" value="share/index"}class="active"{/eq}><a href="{:url('share/index')}">今日收益</a></li>
<li {eq name="url_path" value="share/record"}class="active"{/eq}><a href="{:url('share/record')}">财务记录</a></li>
<li {eq name="url_path" value="share/withdraw"}class="active"{/eq}><a href="{:url('share/withdraw')}">提现记录</a></li>
</ul>
<fieldset>
<div class="tabbable">
<div class="tab-content">
<div class="tab-pane active">
<form class="well form-inline margin-top-20">
<a onclick="tixianadd()" style="color: #333;"><b>账户余额:{$amount}</b></a>
&nbsp;|&nbsp;&nbsp;累计提现:{$money} 元
&nbsp;|&nbsp;&nbsp;<a onclick="shiming()"
style="color: #333;text-decoration: none;">实名认证</a>
&nbsp;|&nbsp;&nbsp;<a onclick="tixianadd()"
style="color: #333;text-decoration: none;">申请提现</a>
</form>
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>ID</th>
<th>提现金额</th>
<th>支付宝账号</th>
<th>支付宝姓名</th>
<th>状态</th>
<th>提现时间</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td>{$vo.id}</td>
<td>{$vo.money} ¥</td>
<td>{$vo.alipay_account}</td>
<td>{$vo.alipay_name}</td>
<td>
{eq name="$vo.status" value="0"}<span class="label label-info">等待处理</span>{/eq}
{eq name="$vo.status" value="1"}<span class="label label-success">提现成功</span>{/eq}
{eq name="$vo.status" value="2"}<span class="label label-danger">资金退回</span>{/eq}
</td>
<td>{$vo.create_time|date="Y-m-d H:i"}</td>
</tr>
{/volist}
</tbody>
</table>
<div class="pg">
{$list|raw}
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<script>
function tixianadd() {
if (window.screen.width < 768) {
var w = '95%';
}
else {
var w = '450px';
}
layer.open({
type: 2,
shadeClose: true,
title: "申请提现",
area: [w, '380px'], // 宽高
content: "/user/withdraw",
end: function () {
//location.reload();
},
});
}
function shiming() {
if (window.screen.width < 768) {
var w = '95%';
}
else {
var w = '480px';
}
layer.open({
type: 2,
shadeClose: true,
title: "实名认证",
area: [w, '300px'], // 宽高
content: "/user/auth",
end: function () {
//location.reload();
},
});
}
</script>
{/block}
+473
View File
@@ -0,0 +1,473 @@
<html>
<head>
<link href="__STATIC__/css/upload.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="__STATIC__/js/jquery.js"></script>
<script type="text/javascript" src="__STATIC__/js/file.js"></script>
<script src="https://cdn.jsdelivr.net/npm/js-base64@3.7.0/base64.min.js"></script>
<script type="text/javascript" src="__STATIC__/js/webuploader2.js"></script>
</head>
<body style="overflow:hidden;">
<div class="f_upb" style="top: 1px;">
<div class="f_upp">
<div id="uploader" class="wu-example">
<div class="statusBar" style="display:none;">
<div class="btns">
<div class="fileho">添加文件</div>
<div id="filePicker2" class="webuploader-container">
<div class="webuploader-pick">继续添加</div>
<div id="rt_rt_1es7kh60f1bfi12481v241lk814026"
style="position: absolute; top: 0px; left: 0px; width: 1px; height: 1px; overflow: hidden;">
<input type="file" name="file" class="webuploader-element-invisible" multiple="multiple"
accept=""><label
style="opacity: 0; width: 100%; height: 100%; display: block; cursor: pointer; background: rgb(255, 255, 255);"></label>
</div>
</div>
<div class="uploadBtn state-pedding">开始上传</div>
</div>
</div>
<div class="queueList">
<div id="dndArea" class="placeholder">
<div id="filePicker" class="webuploader-container">
<div class="webuploader-pick">点击选择文件</div>
<div id="rt_rt_1es7kh60dsi0109el3h10nf1d961" style="position: absolute; top: 0px; left: 0px; width: 118px; height: 38px; overflow: hidden; bottom: auto; right: auto;">
<input type="file" name="file" class="webuploader-element-invisible" multiple="multiple" accept="">
<label style="opacity: 0; width: 100%; height: 100%; display: block; cursor: pointer; background: rgb(255, 255, 255);"></label>
</div>
</div>
<p class="filep">或将文件拖到这里,单次最多可选{$upload_limit}个</p>
<p class="filep" style="color:red">凡是上传违反国家法律文件,一律封号处理!!!</p>
</div>
<ul class="filelist"></ul>
</div>
<div class="info"></div>
</div>
</div>
</div>
<script>
var isssl = 's';
var folder_id = '0';
try {
folder_id = $("#folder_id", window.parent.document).val(); //取父页面文件夹ID
}
catch (err) {
}
var upsizeb = {$upload_rule.upsize_byte};
var upsize = '{$upload_rule.upsize}';
var fsizeall = {$upload_rule.fsize_byte};
var fsizeallb = '{$upload_rule.fsize}';
var pgs = 1;
//上传类型1=头像,2=文件图标
var getque = '2';
var uploadError = "未知";
uppp();
function uppp() {
var $ = jQuery,
$wrap = $('#uploader'),
$queue = $('<ul class="filelist"></ul>').appendTo($wrap.find('.queueList')),
// 状态栏,包括进度和控制按钮
$statusBar = $wrap.find('.statusBar'),
// 文件总体选择信息。
$info = $wrap.find('.info'),
// 上传按钮
$upload = $wrap.find('.uploadBtn'),
// 没选择文件之前的内容。
$placeHolder = $wrap.find('.placeholder'),
$fileho = $wrap.find('.fileho'),
// 添加的文件数量
fileCount = 0,
// 添加的文件总大小
fileSize = 0,
// 优化retina, 在retina下这个值是2
ratio = window.devicePixelRatio || 1,
// 可能有pedding, ready, uploading, confirm, done.
state = 'pedding',
percentages = {},
uploader;
if (!WebUploader.Uploader.support()) {
alert('不支持您的浏览器!请使用360(极速模式),QQ等支持HTML5的浏览器');
throw new Error('WebUploader does not support the browser you are using.');
}
// 实例化
uploader = WebUploader.create({
pick: {
id: '#filePicker',
label: '点击选择文件'
},
dnd: '#uploader .queueList',
paste: document.body,
runtimeOrder: 'html5',
disableGlobalDnd: true,
chunked: true, //开启分片上传
chunkSize: 2 * 1024 * 1024,
duplicate: false,
server: "{$upload_api|raw}",
fileVal: 'file',
formData: { //自定义参数
'folder_id': folder_id,
},
accept: {
//指定文件后缀名
title: '文件上传', //文字描述
extensions: "*",//允许的文件后缀,不带点,多个用逗号分割
},
threads: 1, //并发
fileNumLimit: {$upload_limit}, //数量限制
fileSizeLimit: fsizeall, //1024 M
fileSingleSizeLimit: upsizeb, //400 M
});
// 添加“添加文件”的按钮,
uploader.addButton({
id: '#filePicker2',
label: '继续添加'
});
// 当有文件添加进来时执行
function addFile(file) {
var $li = $('<li id="' + file.id + '">' +
'<p class="progress"><span></span></p>' +
'<p class="title"><img src="//static.skpan.cn/user/file/' + getIcon(file.ext) +
'.png" class="f_img" align="absmiddle">' + file.name + '</p>' +
'<p class="fsize">' + WebUploader.formatSize(file.size) + '</p>' +
'<div class="fdecs2"><span class="finfo"></span><span class="fload"></span></div>' +
'</li>'),
$btns = $('<div class="fdecs">' +
'<span class="cancel">删除</span></div>').appendTo($li),
$prgress = $li.find('p.progress span'),
$prgresss = $li.find('span.fload'),
$finfo = $li.find('span.finfo'),
//$info = $('<div class="fdecs2"></div>'),
showError = function (code) {
//上传失败
$btns.css('display', 'block');
$finfo.text('上传失败');
$prgress.css({
'background-color': '#FFF8F0',
'border': '1px solid #F3DCD1',
'border-left': '0',
'width': '100%'
});
};
if (file.getStatus() === 'invalid') {
showError(file.statusText);
} else {
percentages[file.id] = [file.size, 0];
file.rotation = 0;
}
file.on('statuschange', function (cur, prev) {
if (prev === 'progress') {
//上传后标记
$prgress.show().width(0 + '%');
$prgresss.hide();
} else if (prev === 'queued') {
$li.off('mouseenter mouseleave');
$btns.hide();
}
// 成功
if (cur === 'error' || cur === 'invalid') {
console.log(file.statusText);
showError(file.statusText);
percentages[file.id][1] = 1;
} else if (cur === 'interrupt') {
showError('interrupt');
} else if (cur === 'queued') {
percentages[file.id][1] = 0;
} else if (cur === 'progress') {
//$info.hide();
$prgress.css('display', 'block');
} else if (cur === 'complete') {
$li.append('<span class="success"></span>');
//上传成功,清除此条记录
uploader.removeFile(file);
}
$li.removeClass('state-' + prev).addClass('state-' + cur);
});
$btns.on('click', function () {
uploader.removeFile(file);
return;
});
$li.appendTo($queue);
}
// 负责view的销毁
function removeFile(file) {
var $li = $('#' + file.id);
delete percentages[file.id];
updateStatus();
$li.off().find('.file-panel').off().end().remove();
}
function updateStatus() {
var text = '',
stats;
if (state === 'ready') { } else if (state === 'confirm') {
stats = uploader.getStats();
if (stats.uploadFailNum) {
text = '成功' + stats.successNum + '个,失败' +
stats.uploadFailNum + '个(' + uploadError + ')<font class="retry">重新上传</font> 或 <font class="ignore">忽略</font> '
}
} else if (state === 'finish') {
stats = uploader.getStats();
text = '已上传' + stats.successNum + '个,(' + WebUploader.formatSize(fileSize) + ')';
}
$info.html(text);
}
function setState(val) {
var file, stats;
if (val === state) {
return;
}
$upload.removeClass('state-' + state);
$upload.addClass('state-' + val);
state = val;
switch (state) {
case 'pedding':
$placeHolder.removeClass('element-invisible');
$queue.parent().removeClass('filled');
$queue.hide();
$statusBar.addClass('element-invisible');
uploader.refresh();
$upload.text('开始上传').removeClass('disabled');
$fileho.css('display', 'none');
break;
case 'ready':
$placeHolder.addClass('element-invisible');
$('#filePicker2').removeClass('element-invisible');
$queue.parent().addClass('filled');
$queue.show();
$statusBar.removeClass('element-invisible');
uploader.refresh();
break;
case 'uploading':
$('#filePicker2').addClass('element-invisible');
$fileho.css('display', 'inline-block');
$upload.text('正上传中').addClass('disabled');
break;
case 'confirm':
// 上传结束;
stats = uploader.getStats();
if (stats.successNum && !stats.uploadFailNum) {
//全部成功,标记
setState('finish');
return;
} else {
//部分成功
$('#filePicker2').removeClass('element-invisible');
$upload.text('开始上传').removeClass('disabled');
$fileho.css('display', 'none');
uploader.refresh();
}
break;
case 'finish':
//全部成功上传
stats = uploader.getStats();
if (stats.successNum) {
//复位
setState('pedding');
f_upc();
return;
}
break;
}
updateStatus();
}
//进度条
uploader.onUploadProgress = function (file, percentage) {
var $li = $('#' + file.id),
$percent = $li.find('.progress span');
$percents = $li.find('span.fload');
$percent.css('width', percentage * 100 + '%');
var percentagez = parseInt(percentage * 100);
$percents.text(percentagez + '%');
percentages[file.id][1] = percentage;
//updateTotalProgress();
updateStatus();
};
uploader.onFileQueued = function (file) {
fileCount++;
fileSize += file.size;
if (fileCount === 1) {
$placeHolder.addClass('element-invisible');
$statusBar.show();
}
addFile(file);
setState('ready');
updateStatus();
};
uploader.onFileDequeued = function (file) {
fileCount--;
fileSize -= file.size;
if (!fileCount) {
setState('pedding');
}
removeFile(file);
updateStatus();
};
uploader.on('all', function (type) {
var stats;
switch (type) {
case 'uploadFinished':
//所有文件上传完触发
setState('confirm');
break;
case 'startUpload':
setState('uploading');
break;
case 'stopUpload':
setState('paused');
break;
}
});
uploader.on('uploadStart',function(file){
uploader.option('formData',{
chunks_key:Base64.encode(file.__hash)
})
});
//前端判断
uploader.onError = function (code) {
if (code == 'Q_TYPE_DENIED') {
$info.html('未开放此格式的文件');
} else if (code == 'Q_EXCEED_NUM_LIMIT') {
$info.html('超过单次个数限制,请上传完在添加上传');
} else if (code == 'Q_EXCEED_SIZE_LIMIT') {
{eq name="$vip_info.is_vip" value="1"}
$info.html('尊敬的{$group.group_name}您好,单次总和大小超过了' + fsizeallb);
{else/}
$info.html('允许上传小于' + upsize +
'的文件,<a onclick="window.parent.vip()" href="#"><font>升级VIP 提升容量</font></a>');
{/eq}
} else if (code == 'F_DUPLICATE') {
$info.html('已经上传过或者已选择,忽重复');
} else if (code == 'F_EXCEED_SIZE') {
{eq name="$vip_info.is_vip" value="1"}
$info.html('尊敬的{$group.group_name}您好,允许上传小于' + upsize + '的文件');
{else/}
$info.html('允许上传小于' + upsize +
'的文件,<a onclick="window.parent.vip()" href="#"><font>升级VIP 提升容量</font></a>');
{/eq}
} else {
alert('Eroor: ' + code);
}
};
//上传后获取json
uploader.on('uploadAccept', function (file, response, reject) {
if (response.status == 0) {
console.log(response);
uploadError = response.msg;
return false;
}
else {
if(response.code == 0){
uploadError = response.msg;
return false;
}
}
});
$upload.on('click', function () {
if ($(this).hasClass('disabled')) {
return false;
}
if (state === 'ready') {
uploader.upload();
}
});
$info.on('click', '.retry', function () {
uploader.retry();
});
$info.on('click', '.ignore', function () {
//重置队列
setState('pedding');
return;
});
$upload.addClass('state-' + state);
updateStatus();
};
//关闭窗口
function f_upc() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
</script>
</body>
</html>
+85
View File
@@ -0,0 +1,85 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="__STATIC__/tixian/layui.js"></script>
<script src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/pay/js/ui-choose.js" type="text/javascript"></script>
<script src="__STATIC__/pay/js/qrcode.min.js" type="text/javascript"></script>
<link rel='stylesheet' href='__STATIC__/tixian/layui.css' type='text/css' media='all' />
</head>
<body style="margin:20px;">
<article class="page-container">
<form class="layui-form layui-form-pane" id="renzheng">
<div class="layui-form-item">
<label class="layui-form-label">实名状态:</label>
<div class="layui-input-inline">
<input type="text" lay-verify="required" value="{eq name="$is_auth" value="1"}已实名{else/}未实名{/eq}" class="layui-input" disabled>
</div>
</div>
{eq name="$is_auth" value="1"}
<div class="layui-form-item">
<label class="layui-form-label">姓名:</label>
<div class="layui-input-inline">
<div class="layui-form-mid">{:getSafeNickname($info.name)}</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">身份证:</label>
<div class="layui-input-inline">
<div class="layui-form-mid">{:getSafeNickname($info.idcard)}</div>
</div>
</div>
{else/}
<div class="layui-form-item">
<label class="layui-form-label">姓名:</label>
<div class="layui-input-inline">
<input type="text" name="name" id="xingming" value="" placeholder="请输入姓名" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">身份证:</label>
<div class="layui-input-inline">
<input type="text" name="idcard" id="shenfenzheng" value="" placeholder="请输入身份证号码" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="layui-btn" lay-submit="" lay-filter="smsubmit">提交认证</button>
</div>
</div>
{/eq}
<hr>
</form>
</article>
<script>
layui.use(['form', 'layer','upload'], function () {
var form = layui.form, layer = layui.layer,$= layui.jquery,upload = layui.upload;
form.on('submit(smsubmit)', function (data) {
loading =layer.load(1, {shade: [0.1,'#fff']});
$.post("", data.field, function (res) {
layer.close(loading);
if (res.code > 0) {
layer.msg(res.msg, {time: 1500, icon: 1}, function () {
var index = parent.layer.getFrameIndex(window.name);
window.parent.location.reload();
parent.layer.close(index);
});
} else {
layer.msg(res.msg, {time: 1500, icon: 2});
}
});
});
});
</script>
</body>
</html>
+23
View File
@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
<title>{$msg}</title>
</head>
<body>
<style>
body{margin: 20px;}
.off{text-align: center;font-size: 16px;color: #b3b3b3;}
.off0{background: #eee;width: 70px;height: 60px;margin: 10% auto 30px auto;border-radius: 3px;padding-top: 10px;}
.off1{border-top: 30px solid #b1b1b1;width: 10px;height: 10px;border-bottom: 10px solid #b1b1b1;margin: auto;}
</style>
<div class="off">
<div class="off0">
<div class="off1"></div>
</div>
{$msg}
</div>
</body>
</html>
+126
View File
@@ -0,0 +1,126 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
<title>找回密码 - {$Think.config.basic.site_title}</title>
<link href="__STATIC__/css/login.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/common.js"></script>
<script src="__STATIC__/js/layer.js"></script>
</head>
<body>
<div class="top">
<div class="d1">
<div class="d11" style="background-image: url({$Think.config.basic.site_logo});height: 18px; background-repeat: no-repeat; background-position: 15px 5px;">
<a href="{:url('index/index')}" class="d7">会分享有收获</a>
</div>
</div>
</div>
<div class="pc"></div>
<span class="bg"></span>
<div class="p9">
<div class="p5"> </div>
<div class="p6">为用户而变革,越简单越好,越快越好 </div>
<div class="p4">会分享,就会有收获!</div>
<div class="p1" style="margin-top: 15px;box-shadow: none;">
<!-- 注册账号 -->
<div id="reg">
<span class="main-title">找回密码</span>
<form onkeydown="if(event.keyCode==13){doReg();return false;}">
<br>
<div class="p3 pmob2">
<input class="input" id="reg_email" type="email" value="" tabindex="3" maxlength="64" placeholder="安全邮箱">
</div>
<div class="p3">
<div class="errorBox">请安全邮箱</div>
</div>
<div class="p3"></div>
</form>
<div class="p3">
<input onclick="doForget()" class="btn" type="submit" tabindex="4" value="找回密码">
</div>
<div class="p3" style="text-align:left;">
<a href="{:url('user/login')}">已经找回?点我登录</a>
</div>
</div>
<div class="p3" id="send_succ" style="display: none">
<h3 style="text-align: center;font-size: 20px;color: #2196f3;">找回密码邮件发送成功<br>请登录邮箱查看</h3>
<p style="text-align: center;font-size: 14px;color:#afafaf;">如果没收到邮件请查看回收站</p>
</div>
</div>
<script>
//提交注册
function doForget()
{
var email = $("#reg_email").val();
var msg = '';
if(!email){
$('#reg_email').focus();
msg = "请输入绑定的安全邮箱";
}
if(msg != ''){
return error(msg);
}
//提交注册
$.ajax({
type: "post",
url : "{:url('user/forget')}",
data: {
"email":email
},
dataType:'json',
success: function(data){
if (data.code == 1) {
ok(data.msg);
} else {
error(data.msg);
}
},
error: function (error) {
layer.alert("API请求失败,请联系客服",{icon:2});
}
});
}
//成功
function ok(msg)
{
$("#reg").hide();
$("#send_succ").show();
}
//失败
function error(msg)
{
$(".errorBox").html(msg);
$(".errorBox").show();
}
</script>
</div>
<div class="copyright">不得利用云存储发布,存储,传播违法信息</div>
<div class="foot_info"> © 2021 {$Think.config.basic.site_title} </div>
</body>
</html>
+334
View File
@@ -0,0 +1,334 @@
{extend name="layout/user" /}
{block name="main"}
<div class="all-box">
<div class="top space-between">
<div class="top-left align-center">
<!--[if lte IE 9]><div style="color: #FFFFFF;width: 770px;text-align: center;background: #FF4949;margin: auto;">升级提示:当您看到此信息,说明您的浏览器不支持上传接口,请使用360(极速模式),QQ(新版),Chrome等新一代浏览器。</div><![endif]-->
<div class="top-item flex-box upload" onclick="upload()">
<em class="icon icon-upload"></em>
<p class="text">上传</p>
</div>
<div class="top-item flex-box" onclick="mkdir()">
<em class="icon icon-newfolder" title="新建"></em>
<p class="text">新建</p>
</div>
<div id="CilckCheck" style="display: none;" class="align-center">
<div id="CheckTmp" style="display: none;"></div>
<div class="top-item flex-box" onclick="CheckDelete()"
style="margin-right: 0px;padding: 0 8px 0 8px;border-radius: 0px;">
<em class="icon icon-delete" title="删除"></em>
<p class="text">删除</p>
</div>
<div class="top-item flex-box" onclick="moveFiles()"
style="padding: 0 8px 0 8px;border-radius: 0px;">
<p class="text" style="margin-left: 0px;">移动到</p>
</div>
</div>
</div>
<div class="top-right space-between">
<div class="el-input">
<input id="sousuo" type="text" autocomplete="off" placeholder="搜索您的文件"
class="el-input__inner">
<span class="icon icon-search"
onclick="getTable('当前文件夹',$('#sousuo').val())"></span>
</div>
</div>
</div>
<div class="daohang">
<span class="daohang-all" style="display: block;">
<span onclick="getTable()" style="cursor:pointer;">全部文件</span>
<span style="float:right;top: 1px;">
<span style="color: #f0ad4e;font-size: 12px;margin-right: 5px;"
title="鼠标右键文件去试试~">
<span class="icon icon-tips-caution"></span>
文件操作可使用右键
</span>
<span>已全部加载,共<span class="daohang-count">0</span></span>
</span>
</span>
<ul class="daohang-path" style="display: none;">
<li>
<a id="daohang-shangyiji" onclick="getTable()" href="javascript:;">返回上一级</a>
<span class="fuhao">|</span>
</li>
<li>
<a href="javascript:;" onclick="getTable()">全部文件</a>
<span class="fuhao">&gt;</span>
<span id="daohang">
</span>
</li>
<span style="float:right;">已全部加载,共<span class="daohang-count">0</span></span>
</ul>
</div>
<input style="display: none;" id="folder_id" value="0" />
<div id="emptyFile" style="display: none;">
<div class="emptyFile" style="visibility: visible;">
<div class="emptyFile2">
<div class="img">
</div>
</div>
</div>
</div>
<div class="context-menu">
<ul class="list" data-id="" data-filename="" data-folder="" id="list1"
style="z-index: 100; left: 524px; top: 194px; display: none;">
<li>下载</li>
<li class="separate"></li>
<li>设置提取码</li>
<li>复制链接</li>
<li class="separate"></li>
<li>编辑文件</li>
<li>移动到</li>
<li class="separate"></li>
<li>重命名</li>
<li>删除</li>
</ul>
<ul class="list" id="list2"
style="z-index: 100; left: 524px; top: 194px; display: none;">
<li>重新加载页面</li>
<li class="separate"></li>
<li>新建文件夹</li>
<li class="separate"></li>
<li>刷新数据</li>
</ul>
</div>
<div id="mkdir" style="display: none;">
<div style='width:350px;'>
<div style='width:320px;margin-left: 3%;margin-top: 3%;'
class='form-group has-feedback'>
<span style="color: red;">*</span>文件夹名称
<input style="margin-top: 3%;" id='dirName' class='form-control' type='text'
placeholder="请输入文件夹名称..." value="" />
</div>
<div style='width:320px;margin-left: 3%;' class='form-group has-feedback'>
<p>文件夹描述</p>
<textarea style="margin-top: 3%;" id='dirMiaoshu' class='form-control' rows="3"
placeholder="(可选) 请输入文件夹描述..."></textarea>
</div>
<div style='width:320px;margin-left: 3%;' class='form-group has-feedback'>
<button style='margin-top:5%;' type='button' class='btn btn-block btn-success'
onclick='mkdirTo()'>保存</button>
</div>
</div>
</div>
<div id="setPass" style="display: none;">
<div class="modal-body" style="font-size: 14px;">
<form class="form-horizontal" role="form">
<fieldset>
<div class="form-group" style="margin-left: -3%;">
<label class="col-sm-7" style="font-size: 12px;"
style="margin-left: -2%;">Ps: 双击编辑框自动复制</label>
<textarea class="form-control" id="setPassUrl"
style="width: 300px;font-size: 13px;margin-top: 15px;margin-left: 2%;"
readonly="readonly"></textarea>
</div>
<div class="form-group">
<label class="col-sm-1 control-label"
style="margin-left: -1%;width: 88px;">提取码:</label>
<div class="col-sm-1" style="margin-left: -9%;">
<input class="form-control" id="setPassPass" type="text"
style="width: 80px;" maxlength="6" />
</div>
<label class="col-sm-1 control-label"
style="margin-left: 18%;width: 90px;">密码开关</label>
<div class="col-sm-3" style="margin-left: -18px;">
<label class="switch">
<input type="checkbox" id="setPassClick">
<div class="slider round"></div>
</label>
</div>
</div>
<div style='width:300px;margin-left: -1%;margin-top: 10%;'
class='form-group has-feedback'>
<button type='button' class='btn btn-block btn-success'
id="setPassBtn">保存</button>
</div>
</fieldset>
</form>
</div>
</div>
<div class="table-box">
<table id="table"></table>
<script src="__STATIC__/js/file.js"></script>
<script>
//table自适应
$(window).resize(function () {
$("#table").bootstrapTable('resetView', {
height: $(window).height() - 171
});
});
//搜索回车
$("#sousuo").keydown(function (e) {
if (e.keyCode == 13) {
getTable('当前文件夹', $(this).val());
}
});
function getTable(folder_id, sousuo) {
var folder_id = folder_id || 0;
var sousuo = sousuo || "";
if (folder_id == "当前文件夹") {
folder_id = $('#folder_id').val();
}
$("#folder_id").val(folder_id); //更新当前文件夹ID
$('#table').bootstrapTable('destroy'); //销毁数据
var queryUrl = "{:url('file/list')}?rnd=" + Math.random() + "&folder_id=" + folder_id + "&search=" + sousuo;
$("#table").bootstrapTable({
url: queryUrl, //请求后台的URL*
method: 'GET', //请求方式(*
pageNumber: 1, //初始化加载第一页1
pagination: true, //是否显示分页条1
pageSize: 20, //单页显示条数1
striped: true, //是否显示行间隔色
sortable: true, //是否启用排序
sortOrder: "asc", //排序方式
dataField: "data", //Json数据的字段
// clickToSelect: true, //点击选中
height: $(window).height() - 171, //高度
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
classes: "table table-hover",
queryParams : function (params) {
return {
rows: params.limit, //页面大小
page: (params.offset / params.limit) + 1, //页码
};
},
//无内容时
formatNoMatches: function () {
if (sousuo) {
$(".emptyFile2").addClass("emptySousuo");
var msg = '<p title="为什么不去问问神奇的海螺呢">在您的网盘中,未搜索到相应的文件</p>';
} else {
var msg = '<p>您还没上传过文件哦,点击<span style="cursor: pointer;color:#09AAFF;" onclick="upload()">上传</span>按钮~</p>';
}
$(".emptyFile2 div").html(msg);
$("#table").html($("#emptyFile").html());
return "";
},
//加载动画
loadingTemplate: function () {
return "<span class=\"loading-wrap\">\n <img src=\"__STATIC__/image/loading.gif\"/>\n</span>";
},
//加载失败
onLoadError: function () {
// layer.msg("数据加载失败!",{
// icon:2
// })
},
//加载完成
onLoadSuccess: function (data) {
$(".fixed-table-loading").remove();
daohang(data.parent, data.total, sousuo); //修改导航
rename(); //初始化行内编辑框
clickList(); //初始化右键菜单
clickFolder(); //初始化文件夹点击事件
HoverGengduo(); //鼠标悬浮显示更多按钮
},
//自定义css
rowStyle: function (row, index) {
var style = {};
style = {
css: {
'font-size': '13px'
}
};
return style;
},
//复选框点击事件
onCheckAll: function (rows) {
CilckCheck(); //复选框选中 更新菜单栏
},
onCheck: function (row) {
CilckCheck(); //复选框选中 更新菜单栏
},
onUncheck: function (row) {
CilckCheck(); //复选框选中 更新菜单栏
},
onUncheckAll: function (row) {
CilckCheck(); //复选框选中 更新菜单栏
},
//表头
columns: [{
checkbox: true,
visible: true //是否显示复选框
},
{
field: 'file_name',
title: '文件名',
sortable: true, //排序
width: '500px',
formatter: function (value, row, index) { //处理数据
return value;
},
}, {
field: 'file_size',
title: '文件大小',
sortable: true, //排序
}, {
field: 'count_open',
title: '浏览',
sortable: true, //排序
}, {
field: 'count_down',
title: '下载',
sortable: true, //排序
}, {
field: 'url',
title: '分享链接',
}, {
field: 'url_pass',
title: '提取码',
}, {
field: 'update_time',
title: '修改日期',
sortable: true, //排序
},
],
//填入个数据,要不然会显示没文件
data: [{
"file_name": "",
}],
})
}
getTable();
</script>
</div>
</div>
{/block}
+291
View File
@@ -0,0 +1,291 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- Set render engine for 360 browser -->
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- HTML5 shim for IE8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<![endif]-->
<link href="__STATIC__/themes/admin_simpleboot3/public/assets/themes/flatadmin/bootstrap.min.css" rel="stylesheet">
<link href="__STATIC__/themes/admin_simpleboot3/public/assets/simpleboot3/css/simplebootadmin.css" rel="stylesheet">
<link href="__STATIC__/static/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!--[if lt IE 9]>
<script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
form .input-order {
margin-bottom: 0px;
padding: 0 2px;
width: 42px;
font-size: 12px;
}
form .input-order:focus {
outline: none;
}
.table-actions {
margin-top: 5px;
margin-bottom: 5px;
padding: 0px;
}
.table-list {
margin-bottom: 0px;
}
.form-required {
color: red;
}
</style>
<script type="text/javascript">
//全局变量
var GV = {
ROOT: "/",
WEB_ROOT: "/",
JS_ROOT: "static/js/",
APP: 'admin'/*当前应用名*/
};
</script>
<script src="__STATIC__/themes/admin_simpleboot3/public/assets/js/jquery-1.10.2.min.js"></script>
<script src="__STATIC__/static/js/wind.js"></script>
<script src="__STATIC__/themes/admin_simpleboot3/public/assets/js/bootstrap.min.js"></script>
<link href="__STATIC__/static/js/layer/skin/default/layer.css" rel="stylesheet">
<script src="__STATIC__/static/js/layer/layer.js"></script>
<script src="__STATIC__/js/layui.js"></script>
<script>
Wind.css('artDialog');
$(function () {
$("[data-toggle='tooltip']").tooltip({
container: 'body',
html: true,
});
$("li.dropdown").hover(function () {
$(this).addClass("open");
}, function () {
$(this).removeClass("open");
});
});
</script>
<style>
#think_page_trace_open {
z-index: 9999;
}
.layui-upload-file{
display: none!important;
}
</style>
</head>
<body>
<div class="wrap js-check-wrap">
<ul class="nav nav-tabs">
<li class="active"><a href="#A" data-toggle="tab">个人信息</a></li>
<li><a href="#B" data-toggle="tab">修改密码</a></li>
</ul>
<form class="form-horizontal">
<fieldset>
<div class="tabbable">
<div class="tab-content" style="margin-top: 20px;">
<div class="tab-pane active" id="A">
<div class="form-group">
<label class="col-sm-2 control-label">用户账号</label>
<div class="col-md-6 col-sm-10">
<input type="text" class="form-control" value="{$info.username}" readonly="readonly">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">VIP到期时间</label>
<div class="col-md-6 col-sm-10">
{eq name="$vip_info.is_vip" value="1"}
<a href="javascript:parent.vip()" class="tan" tan="点击开通/续费">VIP到期时间:{$vip_info.expire_time}</a>
{else/}
<a href="javascript:parent.vip()" class="tan" tan="点击开通/续费">未开通</a>
{/eq}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-required">*</span>设置昵称</label>
<div class="col-md-6 col-sm-10">
<input required type="text" id="user_nickname" class="form-control" name="nickname"
value="{$info.nickname}" autocomplete="off">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-required">*</span>个性签名</label>
<div class="col-md-6 col-sm-10">
<input required type="text" id="user_desc" class="form-control" name="desc"
value="{$info.desc}" autocomplete="off">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-required">*</span>设置头像</label>
<div class="col-md-6 col-sm-10">
<div class="layui-upload">
<div class="prv">
<img id="prv_avatar" src="{:getUserHead($info.avatar)}" style="width: 80px;height: 80px;display: block">
<button type="button" style="width: 80px;" class="btn btn-sm btn-success" id="test1">上传头像</button>
</div>
</div>
</div>
</div>
<br>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" id="submit_user" class="btn btn-success">提交修改</button>
</div>
</div>
</div>
<div class="tab-pane" id="B">
<div class="form-group">
<label class="col-sm-2 control-label">原密码</label>
<div class="col-md-6 col-sm-10">
<input required type="password" id="u_old_password" class="form-control" name="old_password"
autocomplete="new-password">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">新密码</label>
<div class="col-md-6 col-sm-10">
<input required type="password" id="u_password" class="form-control" name="password"
autocomplete="new-password">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">重复新密码</label>
<div class="col-md-6 col-sm-10">
<input required type="password" id="u_re_password" class="form-control" name="re_password"
autocomplete="new-password">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" id="submit_change" class="btn btn-success">修改密码</button>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</form>
</div>
<script>
layui.use(['upload'],function(){
var upload = layui.upload;
var uploadInst = upload.render({
elem: '#test1'
,url: "{:url('user/upload_avatar')}"
,before: function(obj){
//预读本地文件示例,不支持ie8
obj.preview(function(index, file, result){
$('#prv_avatar').attr('src', result); //图片链接(base64
});
}
});
});
$("#submit_user").on('click',function(){
let nickname = $("#user_nickname").val();
let desc = $("#user_desc").val();
if(!nickname.length){
layer.msg("必须填写昵称~",{icon:2});
return false;
}
$.ajax({
url:"{:url('user/set_userinfo')}",
type:'post',
dataType:'JSON',
data:{
nickname:nickname,
desc:desc
},
success:function(result){
layer.msg(result.msg,{icon: result.code ? 1 : 2 },function(){
if(result.code === 1){
window.location.reload();
}
})
}
})
});
$("#submit_change").on('click',function(){
let old_password = $("#u_old_password").val(),
password = $("#u_password").val(),
re_password = $("#u_re_password").val();
if(!old_password){
layer.msg("请输入原密码",{icon:2});
return false;
}
if(!password){
layer.msg("请输入新密码",{icon:2});
return false;
}
if(!re_password){
layer.msg("请输入重复密码",{icon:2});
return false;
}
if(re_password != password){
layer.msg("两次输入的密码不一致,请重新输入",{icon:2});
return false;
}
$.ajax({
url:"{:url('user/change_pass')}",
type:'post',
dataType:'JSON',
data:{
old_password:old_password,
password:password
},
success:function(result){
layer.msg(result.msg,{icon: result.code ? 1 : 2 },function(){
if(result.code === 1){
parent.location.reload();
}
})
}
})
});
$('.tan').on({
mouseenter: function () {
var nei = $(this).attr("tan");
if (nei) {
var that = $(this);
tips = layer.tips("<span style='color:#000;font-size:17px;'>" + nei + "</span>", that, { tips: [2, '#fff'], time: 0, area: 'auto', maxWidth: 700 });
}
},
mouseleave: function () {
layer.close(tips);
}
});
</script>
</body>
</html>
+366
View File
@@ -0,0 +1,366 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
<title>会员登录 - {$Think.config.basic.site_title}</title>
<link href="__STATIC__/css/login.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/common.js"></script>
<script src="__STATIC__/js/layer.js"></script>
</head>
<body>
{eq name="layer" value="1"}
<div class="p1" style="margin-top: 5px;box-shadow: none">
<!-- 注册账号 -->
<div id="reg" style="display:none;">
<span class="main-title" style="margin-bottom: 10px;">注册新账号</span>
<form>
<div class="p3 pmob1">
<input class="input" type="text" id="reg_nickname" name="nickname" tabindex="1" maxlength="20" placeholder="昵称 (支持中文)">
</div>
<div class="p3 pmob1">
<input class="input" type="text" id="reg_username" name="username" tabindex="1" maxlength="20" placeholder="登录帐号">
</div>
<div class="p3 pmob2">
<input class="input pwd" id="reg_pass1" type="password" name="password" value="" tabindex="2" maxlength="32" placeholder="密码">
</div>
<div class="p3 pmob2">
<input class="input pwd" id="reg_pass2" type="password" value="" tabindex="3" maxlength="32" placeholder="确认密码">
</div>
<br>
<div class="p3 pmob2">
<input class="input" id="reg_email" type="email" value="" tabindex="3" maxlength="64" placeholder="安全邮箱">
</div>
<div class="p3">
<div class="errorBox">请输入密码</div>
</div>
<div class="p3"></div>
</form>
<div class="p3">
<input onclick="doReg()" class="btn" type="submit" tabindex="4" value="注 册">
</div>
<div class="p3" style="text-align:left;position:absolute">
<a onclick="login()" href="#">已有账号?点我登录</a>
</div>
</div>
<!-- 账号密码登录 -->
<div id="login" >
<form>
<div class="p3">
<div class="p2"> </div>
</div>
<div class="p3 pmob1">
<input class="input" type="text" id="user" name="username" tabindex="1" maxlength="20" placeholder="用户名">
</div>
<div class="p3 pmob2">
<input class="input pwd" type="password" id="pass" name="password" tabindex="2" maxlength="32" placeholder="密码">
</div>
<div class="p3">
<div class="errorBox">请输入密码</div>
</div>
<div class="p3"></div>
</form>
<div class="p3" class='btn'>
<input onclick="doLogin()" class="btn" type="submit" tabindex="4" value="登 录">
</div>
<div class="p3" style="text-align:left;">
<p><a onclick="reg()" href="#">没有账号?点我注册</a></p>
</div>
</div>
</div>
{/eq}
{eq name="layer" value="0"}
<div class="top">
<div class="d1">
<div class="d11" style="background-image: url({$Think.config.basic.site_logo});height: 18px; background-repeat: no-repeat; background-position: 15px 5px;">
<a href="{:url('index/index')}" class="d7">会分享有收获</a>
</div>
</div>
</div>
<div class="pc"></div>
<span class="bg"></span>
<div class="p9">
<div class="p5"> </div>
<div class="p6">为用户而变革,越简单越好,越快越好 </div>
<div class="p4">会分享,就会有收获!</div>
<div class="p1" style="margin-top: 15px;">
<!-- 注册账号 -->
<div id="reg" style="display:none;">
<span class="main-title">注册新账号</span>
<form>
<div class="p3 pmob1">
<input class="input" type="text" id="reg_nickname" name="nickname" tabindex="1" maxlength="20" placeholder="昵称 (支持中文)">
</div>
<div class="p3 pmob1">
<input class="input" type="text" id="reg_username" name="username" tabindex="1" maxlength="20" placeholder="登录帐号">
</div>
<div class="p3 pmob2">
<input class="input pwd" id="reg_pass1" type="password" name="password" value="" tabindex="2" maxlength="32" placeholder="密码">
</div>
<div class="p3 pmob2">
<input class="input pwd" id="reg_pass2" type="password" value="" tabindex="3" maxlength="32" placeholder="确认密码">
</div>
<br>
<div class="p3 pmob2">
<input class="input" id="reg_email" type="email" value="" tabindex="3" maxlength="64" placeholder="安全邮箱">
</div>
<div class="p3">
<div class="errorBox">请输入密码</div>
</div>
<div class="p3"></div>
</form>
<div class="p3">
<input onclick="doReg()" class="btn" type="submit" tabindex="4" value="注 册">
</div>
<div class="p3" style="text-align:left;position:absolute">
<a onclick="login()" href="#">已有账号?点我登录</a>
</div>
<!-- <div class="p3" style="text-align:right;">
<a onclick="wx()" href="#">微信扫码登录</a>
</div> -->
</div>
<!-- 账号密码登录 -->
<div id="login" >
<form>
<div class="p3">
<div class="p2"> </div>
</div>
<div class="p3 pmob1">
<input class="input" type="text" id="user" name="username" tabindex="1" maxlength="20" placeholder="用户名">
</div>
<div class="p3 pmob2">
<input class="input pwd" type="password" id="pass" name="password" tabindex="2" maxlength="32" placeholder="密码">
</div>
<div class="p3">
<div class="errorBox">请输入密码</div>
</div>
<div class="p3"></div>
</form>
<div class="p3" class='btn'>
<input onclick="doLogin()" class="btn" type="submit" tabindex="4" value="登 录">
</div>
<div class="p3" style="text-align:left;">
<p><a onclick="reg()" href="#">没有账号?点我注册</a></p>
<a href="{:url('user/forget')}">忘记密码?</a>
</div>
<!-- <div class="p3" style="text-align:right;">
<a onclick="wx()" href="#">微信扫码登录</a>
</div> -->
</div>
</div>
{/eq}
<script>
$(function () {
//setTimeout("check_login()", 1300);
});
function wx() {
$("#wx").show();
$("#login").hide();
$("#reg").hide();
}
function reg(){
$("#wx").hide();
$("#login").hide();
$("#reg").show();
}
function login(){
$("#wx").hide();
$("#login").show();
$("#reg").hide();
}
//判断是否扫码
function check_login() {
$.ajax({
type: "get",
url : "/user/login/wxLogin",
dataType:'json',
success: function(data){
if (data.status == 1) {
ok(data.msg);
} else if (data.status == -1) {
layer.alert(data.msg, {icon: 2});
}else{
setTimeout("check_login()", 1300);
}
},
error: function (error) {
layer.alert("API请求失败,请联系客服",{icon:2});
}
});
}
//提交登录
function doLogin()
{
var sacct = $("#user").val();
var pwd = $("#pass").val();
var msg = '';
if (!sacct) {
$("#user").focus();
msg = "请输入账号";
} else if (!pwd) {
$('#pass').focus();
msg = "请输入密码";
}
if(msg != ''){
return error(msg);
}
//提交登录
$.ajax({
type: "post",
url : "{:url('user/login')}",
data: {"username":sacct,"password":pwd},
dataType:'json',
success: function(data){
if (data.status == 1) {
ok(data.msg);
} else if (data.status == 0) {
error(data.msg);
}
},
error: function (error) {
layer.alert("API请求失败,请联系客服",{icon:2});
}
});
}
//提交注册
function doReg()
{
var sacct = $("#reg_username").val();
var pwd1 = $("#reg_pass1").val();
var pwd2 = $("#reg_pass2").val();
var nick = $("#reg_nickname").val();
var email = $("#reg_email").val();
var msg = '';
if(!nick){
$("#reg_nickname").focus();
msg = "请输入昵称";
} else if (!sacct) {
$("#reg_username").focus();
msg = "请输入账号";
} else if (!pwd1) {
$('#reg_pass1').focus();
msg = "请输入密码";
}
else if (pwd1.length < 6 || pwd1.length > 32) {
$('#reg_pass1').focus();
msg = "密码长度最短6位,最长32位!";
}else if (!pwd2) {
$('#reg_pass2').focus();
msg = "请重复输入密码";
}else if (pwd1 != pwd2) {
$('#reg_pass1').focus();
msg = "两次密码不一致!请检查";
}else if(!email){
$('#reg_email').focus();
msg = "请输入安全邮箱";
}
if(msg != ''){
return error(msg);
}
//提交注册
$.ajax({
type: "post",
url : "{:url('user/register')}?share_id={$share_id}",
data: {
"nickname":nick,
"username":sacct,
"password":pwd1,
"email":email
},
dataType:'json',
success: function(data){
if (data.code == 1) {
ok(data.msg);
} else {
error(data.msg);
}
},
error: function (error) {
layer.alert("API请求失败,请联系客服",{icon:2});
}
});
}
//成功
function ok(msg)
{
if (self != top) {
parent.layer.alert(msg,{
icon: 1,
end: function () {
parent.location.reload();
},
});
}else{
layer.alert(msg,{
icon: 1,
end: function () {
location.reload();
},
});
}
}
//失败
function error(msg)
{
//layer.msg(msg, function(){});
$(".errorBox").html(msg);
$(".errorBox").show();
}
</script>
</div>
{eq name="layer" value="0"}
<div class="copyright">不得利用云存储发布,存储,传播违法信息</div>
<div class="foot_info"> © 2021 {$Think.config.basic.site_title} </div>
{/eq}
</body>
</html>
+133
View File
@@ -0,0 +1,133 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
<title>重置密码 - {$Think.config.basic.site_title}</title>
<link href="__STATIC__/css/login.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/common.js"></script>
<script src="__STATIC__/js/layer.js"></script>
</head>
<body>
<div class="top">
<div class="d1">
<div class="d11" style="background-image: url({$Think.config.basic.site_logo});height: 18px; background-repeat: no-repeat; background-position: 15px 5px;">
<a href="{:url('index/index')}" class="d7">会分享有收获</a>
</div>
</div>
</div>
<div class="pc"></div>
<span class="bg"></span>
<div class="p9">
<div class="p5"> </div>
<div class="p6">为用户而变革,越简单越好,越快越好 </div>
<div class="p4">会分享,就会有收获!</div>
<div class="p1" style="margin-top: 15px;box-shadow: none;">
<!-- 注册账号 -->
<div id="reg">
<span class="main-title">设置密码</span>
<form onkeydown="if(event.keyCode==13){doReg();return false;}">
<br>
<div class="p3 pmob2">
<input class="input" id="reg_pwd" type="text" value="" tabindex="3" maxlength="64" placeholder="设置密码">
</div>
<div class="p3 pmob2">
<input class="input" id="reg_repwd" type="text" value="" tabindex="3" maxlength="64" placeholder="再次填写密码">
</div>
<div class="p3">
<div class="errorBox">请设置密码</div>
</div>
<div class="p3"></div>
</form>
<div class="p3">
<input onclick="doForget()" class="btn" type="submit" tabindex="4" value="设置密码">
</div>
</div>
</div>
<script>
//提交注册
function doForget()
{
var pwd = $("#reg_pwd").val();
var repwd = $("#reg_repwd").val();
var msg = '';
if(!pwd){
$('#reg_pwd').focus();
msg = "请设置密码";
}
if(!repwd){
$("#reg_repwd").focus();
msg = "请再次填写密码";
}
if(pwd !== repwd){
$('#reg_pwd').focus();
msg = "两次输入密码不一致";
}
if(msg != ''){
return error(msg);
}
//提交注册
$.ajax({
type: "post",
url : "{:url('user/reset')}?key={$key}&sign={$sign}",
data: {
"pwd":pwd
},
dataType:'json',
success: function(data){
if (data.code == 1) {
ok(data.msg);
} else {
error(data.msg);
}
},
error: function (error) {
layer.alert("API请求失败,请联系客服",{icon:2});
}
});
}
//成功
function ok(msg)
{
layer.msg(msg,{icon:1},function(){
window.location.href = "{:url('user/login')}"
});
}
//失败
function error(msg)
{
$(".errorBox").html(msg);
$(".errorBox").show();
}
</script>
</div>
<div class="copyright">不得利用云存储发布,存储,传播违法信息</div>
<div class="foot_info"> © 2021 {$Think.config.basic.site_title} </div>
</body>
</html>
+133
View File
@@ -0,0 +1,133 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/layer.js"></script>
<script src="__STATIC__/pay/js/ui-choose.js" type="text/javascript"></script>
<link rel='stylesheet' href='__STATIC__/pay/css/main.css' type='text/css' media='all' />
</head>
<body>
<div class="pay">
<!--主内容开始编辑-->
<div class="tr_recharge">
<div class="tr_rechbox">
<div class="tr_rechhead">
<img src="{:getUserHead($info.avatar)}">
<p>开通账号:
{eq name="$vip_info.is_vip" value="1"}
<b style="color: red;">{$info.nickname}</b>
{else/}
{$info.nickname}
{/eq}
</p>
<div class="tr_rechheadcion">
<span style="color: #cc1f00;">开通VIP会员,畅享极速下载!</span>
</div>
</div>
<div class="tr_rechli am-form-group">
<ul class="ui-choose am-form-group" id="uc_01">
{volist name="$rule" id="vo"}
<li>
<label class="am-radio-inline">
<input type="radio" name="vip" value="{$vo.id}" money="{:number_format($vo.money,2)}">
{$vo.name}
</label>
</li>
{/volist}
</ul>
</div>
<div class="tr_rechcho am-form-group am-form-success">
<span>支付方式:</span>
<label class="am-radio" style="margin-right:30px;">
<input type="radio" name="pay_type" value="alipay" checked="checked">
<img src="__STATIC__/pay/images/zfbpay.png">
</label>
<!--官方支付宝-->
<label class="am-radio">
<input type="radio" name="pay_type" value="wxpay">
<img src="__STATIC__/pay/images/wechatpay.png">
</label>
</div>
<div class="tr_rechnum">
<span>应付金额:</span>
<p class="rechnum">0.00元</p>
</div>
</div>
<div class="tr_paybox">
<input type="submit" value="确认支付" class="tr_pay am-btn" onclick="zhifu()">
<span>网盘运营需要成本。您的支持,就是我们更好的动力!</span>
</div>
</div>
</div>
<script>
// 将所有.ui-choose实例化
$('.ui-choose').ui_choose();
// uc_01 ul 单选
var vip = "{$rule[0]['id']}";
var uc_01 = $('#uc_01').data('ui-choose'); // 取回已实例化的对象
uc_01.click = function (index, item) {
//console.log('click', index, vip)
}
uc_01.change = function (index, item) {
//console.log('change', index, item.text())
}
$(function () {
$('#uc_01 li').click(function () {
var vipObj = $(this).find("input");
vip = vipObj.val();
xxx(vipObj.attr('money'));
});
$(document).ready(function () {
$('.othbox').on('input propertychange', function () {
var num = $(this).val();
if (num.indexOf(".") == -1) {
num += ".00";
}
$('.rechnum').html(num + "元");
});
});
//模拟点击
$("#uc_01 li:eq(0)").trigger("click");
})
function xxx(str) {
$('.tr_rechoth').hide();
$('.ui-choose').find("input").attr("name", "price");
$('.tr_rechoth').find("input").attr("name", "price2");
$('.rechnum').text(str + '元');
}
function zhifu() {
var pay_type = $(':radio[name="pay_type"]:checked').val();
parent.layer.open({
type: 2,
title: '支付页面',
closeBtn: 1,
area: ['650px', '774px'], // 宽高
content: "/user/payment?pay_type=" + pay_type + "&vip=" + vip + "&share_id={$share_id}",
end: function () {
//设置订单为已关闭
$.get("/user/vip_close");
},
cancel: function (index) {
parent.layer.confirm('确定要取消支付吗?', { icon: 3 }, function (index2) {
parent.layer.close(index2);
parent.layer.close(index);
parent.layer.msg("支付已关闭");
});
return false;
},
});
}
</script>
</body>
</html>
+150
View File
@@ -0,0 +1,150 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link href="__STATIC__/pan/shouyi/theme.css" rel="stylesheet">
<script src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/js/lay/modules/layer.js"></script>
<script src="__STATIC__/pan/shouyi/bootstrap.js"></script>
</head>
<body>
<style>
@media (max-width : 500px) {
.modal-dialog {
margin: 0rem;
position: fixed;
bottom: 0;
left: 0;
right: 0;
}
.modal-content {
border: 0;
border-radius: 0.375rem 0.375rem 0 0;
outline: 0;
}
.modal.fade .modal-dialog {
transform: translate3d(0, 100vh, 0);
}
.modal.show .modal-dialog {
transform: translate3d(0, 0, 0);
}
}
.mb_vip_item.active {
background-color: rgba(115, 255, 236, 0.18)
}
</style>
<div class="modal-dialog" role="document" style="max-width: 550px;">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">开通VIP会员</h5>
{eq name="$is_layer" value="0"}
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span class="font-weight-light" aria-hidden="true">&times;</span>
</button>
{/eq}
</div>
<div class="modal-body p-3">
<div id="mb_vip_selection">
{volist name="$rule" id="vo"}
<div class="mb_vip_item d-flex justify-content-between py-3 px-2"
onclick="mb_switch_vip({$vo.id});" data-vip="{$vo.id}">
<div class=" ">
<span class="font-weight-normal my-0">{$vo.name}</span>
<span class="badge badge-soft-success badge-pill ml-1">限时{$vo.discount}折</span>
<p class="fs--1 mb-0">{$vo.desc}</p>
</div>
<div class=" ">
<h3 class="font-weight-medium my-1"> {$vo.money}<small class="fs--1 text-700">
/ {$vo.day_name}</small> </h3>
</div>
</div>
{/volist}
</div>
<h5 class="text-center mb-3">选择购买方式</h5>
<div class="text-center">
<button onclick="zhifu('alipay');" class="btn btn-lg btn-falcon-primary mr-4">
<svg class="svg-inline--fa fa-alipay fa-w-14 mr-2" aria-hidden="true" focusable="false"
data-prefix="fab" data-icon="alipay" role="img" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 448 512" data-fa-i2svg="">
<path fill="currentColor"
d="M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z">
</path>
</svg>支付宝</button>
<button onclick="zhifu('wxpay');" class="btn btn-lg btn-falcon-success"><!--span class="fab fa-weixin mr-2"></span>-->
<svg class="svg-inline--fa fa-weixin fa-w-18 mr-2"
aria-hidden="true" focusable="false" data-prefix="fab" data-icon="weixin" role="img"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg="">
<path fill="currentColor"
d="M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z">
</path>
</svg>微信支付</button>
</div>
</div>
<div class="modal-footer">
{eq name="$is_layer" value="0"}
<button class="btn btn-secondary" type="button" data-dismiss="modal">关闭</button>
{/eq}
<a href="javascript:;" onclick="vip_kefu()" class="btn btn-primary">联系客服</a>
</div>
</div>
</div>
<script>
var vip_id = "";
function vip_kefu() {
layer.alert("{$Think.config.basic.site_kefu|raw}", { title: '联系客服' });
}
function zhifu(pay_type){
layer.open({
type: 2,
title: '支付页面',
closeBtn: 1,
area: ['100%', '100%'], // 宽高
content: "/user/payment?pay_type="+pay_type+"&vip="+vip_id + "&share_id={$share_id}",
end: function () {
//设置订单为已关闭
$.get("/user/vip_close");
},
cancel:function(index){
//eg1
layer.confirm('确定要取消支付吗? 求求你了(〒︿〒)', {icon: 3}, function(index2){
layer.close(index2);
layer.confirm('真的要关闭吗? ..(。•ˇ‸ˇ•。)…', {icon: 3}, function(index2){
layer.close(index2);
layer.close(index);
layer.msg("好吧... (╯︵╰)");
});
});
return false;
},
});
}
function mb_switch_vip(id) {
$("#mb_vip_selection > div.active").removeClass("active");
var xx = $("#mb_vip_selection > div:eq("+id+")");
xx.addClass("active");
vip_id = xx.attr("data-vip");
}
mb_switch_vip(2);
</script>
</body>
</html>
+67
View File
@@ -0,0 +1,67 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="__STATIC__/js/jquery.js"></script>
<script src="__STATIC__/tixian/layui.js"></script>
<script src="__STATIC__/pay/js/ui-choose.js" type="text/javascript"></script>
<link rel='stylesheet' href='__STATIC__/tixian/layui.css' type='text/css' media='all' />
</head>
<body style="margin:20px;">
<article class="page-container">
<form class="layui-form layui-form-pane">
<div class="layui-form-item">
<label class="layui-form-label">账户余额:</label>
<div class="layui-input-inline">
<input type="text" lay-verify="required" placeholder="账户余额" value="{$amount} ¥" class="layui-input" disabled>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">提现金额:</label>
<div class="layui-input-inline">
<input type="text" name="tx_money" id="tx_money" placeholder="提现金额" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">支付宝账户</label>
<div class="layui-input-inline">
<input type="text" name="alipay_account" id="alipay_account" placeholder="请输入支付宝账户" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">支付宝姓名</label>
<div class="layui-input-inline">
<input type="text" name="alipay_name" id="account_name" placeholder="请输入支付宝姓名" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="layui-btn" lay-submit="" lay-filter="addsubmit">申请提现</button>
</div>
</div>
</form>
</article>
<script>
layui.use(['form', 'layer','upload'], function () {
var form = layui.form, layer = layui.layer,$= layui.jquery,upload = layui.upload;
form.on('submit(addsubmit)', function (data) {
loading =layer.load(1, {shade: [0.1,'#fff']});
$.post("", data.field, function (res) {
layer.close(loading);
if (res.code > 0) {
layer.msg(res.msg, {time: 1500, icon: 1}, function () {
var index = parent.layer.getFrameIndex(window.name);
window.parent.location.reload();
parent.layer.close(index);
});
} else {
layer.msg(res.msg, {time: 1500, icon: 2});
}
});
});
});
</script>
</body>
</html>