初始化
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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'));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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()]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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' => []]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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="(可选) 请输入文件描述... 提示:文件编辑后分享链接不会变哦~">{$info.desc}</textarea>
|
||||
</div>
|
||||
|
||||
<p class='help-block'>
|
||||
|
||||
</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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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"> </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">
|
||||
<img src="{$vo.icon}" align="absmiddle" border="0">
|
||||
<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"> </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">
|
||||
{$vo.name}
|
||||
<div class="mmr">
|
||||
<span> {$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>
|
||||
@@ -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"> </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>
|
||||
|
||||
<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>
|
||||
@@ -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 = "© 2018-" + year + " {$Think.config.basic.site_title}";
|
||||
document.getElementById("date").innerHTML = shows;
|
||||
}
|
||||
</script>
|
||||
<div id='date'>
|
||||
<script>
|
||||
getdates();
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -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>
|
||||
@@ -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">></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}
|
||||
@@ -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>
|
||||
@@ -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="搜索">
|
||||
<a onclick="shiming()"
|
||||
style="color: #333;text-decoration: none;">实名认证</a> |
|
||||
<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}
|
||||
@@ -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}
|
||||
@@ -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>
|
||||
| 累计提现:{$money} 元
|
||||
| <a onclick="shiming()"
|
||||
style="color: #333;text-decoration: none;">实名认证</a>
|
||||
| <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}
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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">></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}
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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">×</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>
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user