commit
a3de37b928
@ -0,0 +1 @@
|
||||
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = test
USERNAME = username
PASSWORD = password
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true
[LANG]
default_lang = zh-cn
|
||||
@ -0,0 +1,8 @@
|
||||
/.idea
|
||||
/.vscode
|
||||
/vendor
|
||||
/public/.user.ini
|
||||
/public/storage
|
||||
*.log
|
||||
.env
|
||||
.user.ini
|
||||
@ -0,0 +1,42 @@
|
||||
sudo: false
|
||||
|
||||
language: php
|
||||
|
||||
branches:
|
||||
only:
|
||||
- stable
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.composer/cache
|
||||
|
||||
before_install:
|
||||
- composer self-update
|
||||
|
||||
install:
|
||||
- composer install --no-dev --no-interaction --ignore-platform-reqs
|
||||
- zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Core.zip .
|
||||
- composer require --update-no-dev --no-interaction "topthink/think-image:^1.0"
|
||||
- composer require --update-no-dev --no-interaction "topthink/think-migration:^1.0"
|
||||
- composer require --update-no-dev --no-interaction "topthink/think-captcha:^1.0"
|
||||
- composer require --update-no-dev --no-interaction "topthink/think-mongo:^1.0"
|
||||
- composer require --update-no-dev --no-interaction "topthink/think-worker:^1.0"
|
||||
- composer require --update-no-dev --no-interaction "topthink/think-helper:^1.0"
|
||||
- composer require --update-no-dev --no-interaction "topthink/think-queue:^1.0"
|
||||
- composer require --update-no-dev --no-interaction "topthink/think-angular:^1.0"
|
||||
- composer require --dev --update-no-dev --no-interaction "topthink/think-testing:^1.0"
|
||||
- zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Full.zip .
|
||||
|
||||
script:
|
||||
- php think unit
|
||||
|
||||
deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: TSF6bnl2JYN72UQOORAJYL+CqIryP2gHVKt6grfveQ7d9rleAEoxlq6PWxbvTI4jZ5nrPpUcBUpWIJHNgVcs+bzLFtyh5THaLqm39uCgBbrW7M8rI26L8sBh/6nsdtGgdeQrO/cLu31QoTzbwuz1WfAVoCdCkOSZeXyT/CclH99qV6RYyQYqaD2wpRjrhA5O4fSsEkiPVuk0GaOogFlrQHx+C+lHnf6pa1KxEoN1A0UxxVfGX6K4y5g4WQDO5zT4bLeubkWOXK0G51XSvACDOZVIyLdjApaOFTwamPcD3S1tfvuxRWWvsCD5ljFvb2kSmx5BIBNwN80MzuBmrGIC27XLGOxyMerwKxB6DskNUO9PflKHDPI61DRq0FTy1fv70SFMSiAtUv9aJRT41NQh9iJJ0vC8dl+xcxrWIjU1GG6+l/ZcRqVx9V1VuGQsLKndGhja7SQ+X1slHl76fRq223sMOql7MFCd0vvvxVQ2V39CcFKao/LB1aPH3VhODDEyxwx6aXoTznvC/QPepgWsHOWQzKj9ftsgDbsNiyFlXL4cu8DWUty6rQy8zT2b4O8b1xjcwSUCsy+auEjBamzQkMJFNlZAIUrukL/NbUhQU37TAbwsFyz7X0E/u/VMle/nBCNAzgkMwAUjiHM6FqrKKBRWFbPrSIixjfjkCnrMEPw=
|
||||
file:
|
||||
- ThinkPHP_Core.zip
|
||||
- ThinkPHP_Full.zip
|
||||
skip_cleanup: true
|
||||
on:
|
||||
tags: true
|
||||
@ -0,0 +1 @@
|
||||
deny from all
|
||||
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
declare (strict_types = 1);
|
||||
|
||||
namespace app;
|
||||
|
||||
use think\Service;
|
||||
|
||||
/**
|
||||
* 应用服务类
|
||||
*/
|
||||
class AppService extends Service
|
||||
{
|
||||
public function register()
|
||||
{
|
||||
// 服务注册
|
||||
}
|
||||
|
||||
public function boot()
|
||||
{
|
||||
// 服务启动
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
declare (strict_types = 1);
|
||||
|
||||
namespace app;
|
||||
|
||||
use think\App;
|
||||
use think\exception\ValidateException;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* 控制器基础类
|
||||
*/
|
||||
abstract class BaseController
|
||||
{
|
||||
/**
|
||||
* Request实例
|
||||
* @var \think\Request
|
||||
*/
|
||||
protected $request;
|
||||
|
||||
/**
|
||||
* 应用实例
|
||||
* @var \think\App
|
||||
*/
|
||||
protected $app;
|
||||
|
||||
/**
|
||||
* 是否批量验证
|
||||
* @var bool
|
||||
*/
|
||||
protected $batchValidate = false;
|
||||
|
||||
/**
|
||||
* 控制器中间件
|
||||
* @var array
|
||||
*/
|
||||
protected $middleware = [];
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
* @access public
|
||||
* @param App $app 应用对象
|
||||
*/
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->request = $this->app->request;
|
||||
|
||||
// 控制器初始化
|
||||
$this->initialize();
|
||||
}
|
||||
|
||||
// 初始化
|
||||
protected function initialize()
|
||||
{}
|
||||
|
||||
/**
|
||||
* 验证数据
|
||||
* @access protected
|
||||
* @param array $data 数据
|
||||
* @param string|array $validate 验证器名或者验证规则数组
|
||||
* @param array $message 提示信息
|
||||
* @param bool $batch 是否批量验证
|
||||
* @return array|string|true
|
||||
* @throws ValidateException
|
||||
*/
|
||||
protected function validate(array $data, $validate, array $message = [], bool $batch = false)
|
||||
{
|
||||
if (is_array($validate)) {
|
||||
$v = new Validate();
|
||||
$v->rule($validate);
|
||||
} else {
|
||||
if (strpos($validate, '.')) {
|
||||
// 支持场景
|
||||
[$validate, $scene] = explode('.', $validate);
|
||||
}
|
||||
$class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
|
||||
$v = new $class();
|
||||
if (!empty($scene)) {
|
||||
$v->scene($scene);
|
||||
}
|
||||
}
|
||||
|
||||
$v->message($message);
|
||||
|
||||
// 是否批量验证
|
||||
if ($batch || $this->batchValidate) {
|
||||
$v->batch(true);
|
||||
}
|
||||
|
||||
return $v->failException(true)->check($data);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
namespace app;
|
||||
|
||||
use think\db\exception\DataNotFoundException;
|
||||
use think\db\exception\ModelNotFoundException;
|
||||
use think\exception\Handle;
|
||||
use think\exception\HttpException;
|
||||
use think\exception\HttpResponseException;
|
||||
use think\exception\ValidateException;
|
||||
use think\Response;
|
||||
use Throwable;
|
||||
|
||||
/**
|
||||
* 应用异常处理类
|
||||
*/
|
||||
class ExceptionHandle extends Handle
|
||||
{
|
||||
/**
|
||||
* 不需要记录信息(日志)的异常类列表
|
||||
* @var array
|
||||
*/
|
||||
protected $ignoreReport = [
|
||||
HttpException::class,
|
||||
HttpResponseException::class,
|
||||
ModelNotFoundException::class,
|
||||
DataNotFoundException::class,
|
||||
ValidateException::class,
|
||||
];
|
||||
|
||||
/**
|
||||
* 记录异常信息(包括日志或者其它方式记录)
|
||||
*
|
||||
* @access public
|
||||
* @param Throwable $exception
|
||||
* @return void
|
||||
*/
|
||||
public function report(Throwable $exception): void
|
||||
{
|
||||
// 使用内置的方式记录异常日志
|
||||
parent::report($exception);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render an exception into an HTTP response.
|
||||
*
|
||||
* @access public
|
||||
* @param \think\Request $request
|
||||
* @param Throwable $e
|
||||
* @return Response
|
||||
*/
|
||||
public function render($request, Throwable $e): Response
|
||||
{
|
||||
// 添加自定义异常处理机制
|
||||
|
||||
// 其他错误交给系统处理
|
||||
return parent::render($request, $e);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
namespace app;
|
||||
|
||||
// 应用请求对象类
|
||||
class Request extends \think\Request
|
||||
{
|
||||
|
||||
}
|
||||
@ -0,0 +1,167 @@
|
||||
<?php
|
||||
namespace app\adminapi\controller\v1;
|
||||
|
||||
use app\adminapi\ApiController;
|
||||
use think\facade\Db;
|
||||
|
||||
class Admin extends ApiController
|
||||
{
|
||||
public function getAdminUsers()
|
||||
{
|
||||
if(!input('search')){
|
||||
$result=Db::name('admin')
|
||||
->page(input('current'),input('size'))
|
||||
->select();
|
||||
|
||||
$total=Db::name('admin')
|
||||
->count();
|
||||
}else{
|
||||
$result=Db::name('admin')
|
||||
->where('username','like','%'.input('search').'%')
|
||||
->page(input('current'),input('size'))
|
||||
->select();
|
||||
|
||||
$total=Db::name('admin')
|
||||
->where('username','like','%'.input('search').'%')
|
||||
->count();
|
||||
}
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
$rtn=[
|
||||
'total' => $total,
|
||||
'data' => $result
|
||||
];
|
||||
|
||||
return $this->Success($rtn);
|
||||
}
|
||||
|
||||
public function getUser(){
|
||||
|
||||
$id=input('id');
|
||||
|
||||
$result=Db::name('admin')
|
||||
->field('id,username,email,status,role_id as role')
|
||||
->where('id',$id)
|
||||
->find();
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function addUser(){
|
||||
|
||||
$req=input();
|
||||
|
||||
$password_hash = password_hash($req['password'], PASSWORD_DEFAULT);
|
||||
|
||||
$data=[
|
||||
'username' => $req['username'],
|
||||
'password' => $password_hash,
|
||||
'email' => $req['email'],
|
||||
'action_list' => '',
|
||||
'status' => $req['status'],
|
||||
];
|
||||
|
||||
$result=Db::name('admin')
|
||||
->insert($data);
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function updateUser(){
|
||||
|
||||
$req=input();
|
||||
$data=[
|
||||
'username' => $req['username'],
|
||||
'email' => $req['email'],
|
||||
'role_id' => $req['role'],
|
||||
'action_list' => '',
|
||||
'status' => $req['status'],
|
||||
];
|
||||
|
||||
if(strlen($req['password'])>0){
|
||||
$data['password']=$req['password'];
|
||||
}
|
||||
|
||||
$result=Db::name('admin')
|
||||
->where('id',$req['id'])
|
||||
->update($data);
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function deleteUser(){
|
||||
$id=input('id');
|
||||
|
||||
$result=Db::name('admin')
|
||||
->where('id',$id)
|
||||
->delete();
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function updateStatus(){
|
||||
$id=input('id');
|
||||
$status=input('status');
|
||||
|
||||
$result=Db::name('admin')
|
||||
->where('id',$id)
|
||||
->update(['status'=>$status]);
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
|
||||
public function getAdminLogs()
|
||||
{
|
||||
if(!input('search')){
|
||||
$result=Db::name('admin_log')
|
||||
->page(input('current'),input('size'))
|
||||
->order('id','desc')
|
||||
->select();
|
||||
|
||||
$total=Db::name('admin_log')
|
||||
->count();
|
||||
}else{
|
||||
$result=Db::name('admin_log')
|
||||
->where('admin_name','like','%'.input('search').'%')
|
||||
->page(input('current'),input('size'))
|
||||
->order('id','desc')
|
||||
->select();
|
||||
|
||||
$total=Db::name('admin_log')
|
||||
->where('admin_name','like','%'.input('search').'%')
|
||||
->count();
|
||||
}
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
$rtn=[
|
||||
'total' => $total,
|
||||
'data' => $result
|
||||
];
|
||||
|
||||
return $this->Success($rtn);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,153 @@
|
||||
<?php
|
||||
namespace app\adminapi\controller\v1;
|
||||
|
||||
use app\adminapi\ApiController;
|
||||
use think\facade\Db;
|
||||
use think\facade\Session;
|
||||
use thans\jwt\facade\JWTAuth;
|
||||
use think\facade\Log;
|
||||
|
||||
class Auth extends ApiController
|
||||
{
|
||||
public function Login()
|
||||
{
|
||||
$username=input('username');
|
||||
$password=input('password');
|
||||
|
||||
// $captcha=input('captcha');
|
||||
|
||||
// Log::write(json_encode(Session::all()));
|
||||
|
||||
// if(!captcha_check($captcha)){
|
||||
// return $this->Error('驗證碼錯誤','請求失敗',301);
|
||||
// }
|
||||
$result=Db::name('admin')
|
||||
->where('username',$username)
|
||||
->find();
|
||||
|
||||
if(!$result){
|
||||
return $this->Error('帳號或密碼錯誤','請求失敗',302);
|
||||
}
|
||||
|
||||
if(!password_verify($password , $result['password'])){
|
||||
return $this->Error('帳號或密碼錯誤','請求失敗',303);
|
||||
}
|
||||
|
||||
$token = JWTAuth::builder(['uid' => $result['id']]);
|
||||
|
||||
$result=[
|
||||
'user'=>[
|
||||
'uid'=>$result['id'],
|
||||
"name" => $result['username'],
|
||||
"avatar" => "https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png",
|
||||
"address" => "固原市",
|
||||
"position" => [
|
||||
"CN" => "產品分析師 | 螞蟻金服-計算服務事業群-IOS平臺部",
|
||||
"TW" => "產品分析師 | 螞蟻金服-計算服務事業群-IOS平臺部",
|
||||
"US" => "Product analyst | Ant Financial - Computing services business group - IOS platform division"
|
||||
]
|
||||
],
|
||||
'permissions'=>[
|
||||
[
|
||||
'id'=>'queryForm',
|
||||
'operation'=>['add','edit','delete']
|
||||
]
|
||||
],
|
||||
'roles'=>[
|
||||
[
|
||||
'id'=>'admin',
|
||||
'operation'=>['add','edit','delete']
|
||||
]
|
||||
],
|
||||
'token'=>$token,
|
||||
'expireAt'=>time()+30*60*1000
|
||||
];
|
||||
return $this->Success($result);
|
||||
|
||||
}
|
||||
|
||||
public function check(){
|
||||
print_r(JWTAuth::auth());
|
||||
}
|
||||
|
||||
public function captcha($id=''){
|
||||
return captcha($id);
|
||||
}
|
||||
|
||||
public function checkC($value){
|
||||
print_r(Session::all());
|
||||
|
||||
if(!captcha_check($value)){
|
||||
//驗證失敗
|
||||
echo 'failure';
|
||||
};
|
||||
echo 'Success';
|
||||
}
|
||||
|
||||
public function getRoute(){
|
||||
$routes=[
|
||||
[
|
||||
"router" => "root",
|
||||
"children" => [
|
||||
"DashBoard",
|
||||
[
|
||||
"router" => "system",
|
||||
"children" => [
|
||||
[
|
||||
"router" => "systemConfig",
|
||||
"name" => "站台設置",
|
||||
"authority" => [
|
||||
"permission" => "demo",
|
||||
"role" => "admin"
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
"router" => "admin",
|
||||
"children" => [
|
||||
"adminUser",
|
||||
"adminLog",
|
||||
"adminRole",
|
||||
]
|
||||
],
|
||||
[
|
||||
"router" => "goods",
|
||||
"children" => [
|
||||
"goodsList",
|
||||
"goodsCategory",
|
||||
"goodsType",
|
||||
]
|
||||
],
|
||||
[
|
||||
"router" => "order",
|
||||
"children" => [
|
||||
"orderList",
|
||||
]
|
||||
],
|
||||
[
|
||||
"router" => "room",
|
||||
"children" => [
|
||||
"roomList",
|
||||
]
|
||||
],
|
||||
[
|
||||
"router" => "user",
|
||||
"children" => [
|
||||
"userList"
|
||||
]
|
||||
],
|
||||
[
|
||||
"router" => "setting",
|
||||
"children" => [
|
||||
"settingBase",
|
||||
"settingConfig"
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
return $this->Success($routes);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,187 @@
|
||||
<?php
|
||||
namespace app\adminapi\controller\v1;
|
||||
|
||||
use app\adminapi\ApiController;
|
||||
use think\facade\Db;
|
||||
|
||||
use app\common\lib\Vcard;
|
||||
use app\common\lib\Aes;
|
||||
|
||||
class Card extends ApiController
|
||||
{
|
||||
public function addPrecard(){
|
||||
$req=input();
|
||||
//取得prefix
|
||||
$agent = Db::name('agent')
|
||||
->where('id',$req['agent_id'])
|
||||
->find();
|
||||
|
||||
$aes = new Aes([]);
|
||||
|
||||
for($i=0;$i<input('number');$i++){
|
||||
|
||||
// $user_id=genUniqid($agent['prefix']);
|
||||
// $verify_code = genSerialNo();
|
||||
|
||||
// $params = urlencode($aes->encrypt('user_id='.$user_id.'&verify_code='.$verify_code));
|
||||
// $nfcUrl = genQrCode(getUrl().'/card/?params='.$params,$user_id,'nfc');
|
||||
|
||||
$data[]=[
|
||||
// 'user_id'=>$user_id,
|
||||
'agent_id'=>$req['agent_id'],
|
||||
'try_days'=>7,
|
||||
'verify_code'=>'',
|
||||
'expire_time'=>$req['expire_time'],
|
||||
'status'=>0,
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
try{
|
||||
Db::name('precard')
|
||||
->insertAll($data);
|
||||
}catch(\Exception $e){
|
||||
print_r($e);
|
||||
return $this->error('新增失敗');
|
||||
}
|
||||
|
||||
return $this->success('新增成功');
|
||||
}
|
||||
|
||||
// 取得預開卡資料
|
||||
public function getPrecard(){
|
||||
$do=Db::name('precard');
|
||||
|
||||
if(!input('search')){
|
||||
$result=$do
|
||||
->page(input('current'),input('size'))
|
||||
->order('id','desc')
|
||||
->select()->toArray();
|
||||
|
||||
$total=$do
|
||||
->count();
|
||||
}else{
|
||||
$result=$do
|
||||
->where('user_id','like','%'.input('search').'%')
|
||||
->page(input('current'),input('size'))
|
||||
->order('id','desc')
|
||||
->select()->toArray();
|
||||
|
||||
$total=$do
|
||||
->where('user_id','like','%'.input('search').'%')
|
||||
->count();
|
||||
}
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
foreach($result as $key => $val){
|
||||
// $aes = new Aes([]);
|
||||
// $nfc_url = 'user_id='.$val['user_id'].'&verify_code='.$val['verify_code'];
|
||||
// $result[$key]['params'] = getUrl().'/card/'.urlencode($aes->encrypt($nfc_url));
|
||||
$result[$key]['agent_name'] = Db::name('agent')->where('id',$val['agent_id'])->value('name');
|
||||
$result[$key]['expire'] = date('Y-m-d',$val['expire_time']);
|
||||
switch($val['status']){
|
||||
case 0:
|
||||
$result[$key]['status_name']='未制卡';
|
||||
break;
|
||||
case 1:
|
||||
$result[$key]['status_name']='已制卡';
|
||||
break;
|
||||
case 2:
|
||||
$result[$key]['status_name']='已開通';
|
||||
break;
|
||||
case 3:
|
||||
$result[$key]['status_name']='已作癈';
|
||||
break;
|
||||
}
|
||||
|
||||
$aes = new Aes([]);
|
||||
$params = urlencode($aes->encrypt('verify_code='.$val['verify_code']));
|
||||
$result[$key]['nfcurl']= getUrl().'/card/?params='.$params;
|
||||
// $nfcUrl = genQrCode('https://'.$_SERVER['HTTP_HOST'].'/card/?params='.$params,$data['user_id'],'nfc');
|
||||
}
|
||||
|
||||
$rtn=[
|
||||
'total' => $total,
|
||||
'data' => $result
|
||||
];
|
||||
|
||||
return $this->Success($rtn);
|
||||
|
||||
}
|
||||
|
||||
public function deleteCard(){
|
||||
$id=input('id');
|
||||
|
||||
$result=Db::name('precard')
|
||||
->where('id',$id)
|
||||
->delete();
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function updateStatus(){
|
||||
$id=input('id');
|
||||
$status=input('status');
|
||||
|
||||
$result=Db::name('precard')
|
||||
->where('id',$id)
|
||||
->update(['status'=>$status]);
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function updateVerifyCode(){
|
||||
$id=input('id');
|
||||
$verify_code=strtoupper(input('code'));
|
||||
|
||||
$is_user = Db::name('user')
|
||||
->where('uniqid',$verify_code)
|
||||
->count();
|
||||
|
||||
if($is_user){
|
||||
return $this->error('卡片已綁定會員');
|
||||
}
|
||||
|
||||
$is_precard = Db::name('precard')
|
||||
->where('verify_code',$verify_code)
|
||||
->count();
|
||||
|
||||
if($is_precard){
|
||||
return $this->error('已存在預製卡');
|
||||
}
|
||||
|
||||
try{
|
||||
$result=Db::name('precard')
|
||||
->where('id',$id)
|
||||
->update(['verify_code'=>$verify_code,'status'=>1]);
|
||||
|
||||
return $this->success('設定成功');
|
||||
}catch(\Exception $e){
|
||||
return $this->error('系統錯誤');
|
||||
}
|
||||
}
|
||||
|
||||
public function downloadQr(){
|
||||
$id=input('id');
|
||||
|
||||
$pc=Db::name('precard')
|
||||
->where('id',$id)
|
||||
->find();
|
||||
|
||||
if(strlen($pc['nfc_qrcode'])>0){
|
||||
$nfc_qrcode = $pc['nfc_qrcode'];
|
||||
}else{
|
||||
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
namespace app\adminapi\controller\v1;
|
||||
|
||||
use app\BaseController;
|
||||
|
||||
use app\common\lib\Vcard;
|
||||
|
||||
class Index extends BaseController
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return 'Admin Index';
|
||||
}
|
||||
|
||||
public function test(){
|
||||
Vcard::genVcf('mc638ac4d74c7e6');
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,87 @@
|
||||
<?php
|
||||
namespace app\admin\controller\v1;
|
||||
|
||||
use app\api\ApiController;
|
||||
use think\facade\Db;
|
||||
|
||||
class Right extends ApiController
|
||||
{
|
||||
public function getTree()
|
||||
{
|
||||
|
||||
$data=[
|
||||
'title'=>'所有權限',
|
||||
'key'=>'all',
|
||||
'level'=>0,
|
||||
'index'=>0
|
||||
];
|
||||
|
||||
$data=$this->buildTree($data);
|
||||
|
||||
|
||||
if(!$data){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
// $result['children']=$children;
|
||||
|
||||
|
||||
$rtn=[
|
||||
// 'total' => $total,
|
||||
$data
|
||||
];
|
||||
|
||||
return $this->Success($rtn);
|
||||
}
|
||||
|
||||
private static function buildTree($data,$level=0){
|
||||
$level=$level+1;
|
||||
$menu = Db::name('menu')
|
||||
->where('pid',$data['index'])
|
||||
->select();
|
||||
|
||||
if(!$menu){
|
||||
return $data;
|
||||
}
|
||||
|
||||
$children=[];
|
||||
|
||||
foreach($menu as $key => $val){
|
||||
$children[$key]['title']=$val['title'];
|
||||
$children[$key]['index']=$val['id'];
|
||||
$children[$key]['level']=$level;
|
||||
$children[$key]['key']=$val['node'];
|
||||
if($level < 2){
|
||||
$children[$key]=self::buildTree($children[$key],$level);
|
||||
}else{
|
||||
$children[$key]=self::appendPermission($children[$key]);
|
||||
}
|
||||
}
|
||||
if($children){
|
||||
$data['children'] = $children;
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
private static function appendPermission($data){
|
||||
$perm = Db::name('permission')
|
||||
->where('menu_id',$data['index'])
|
||||
->select();
|
||||
|
||||
if(!$perm){
|
||||
return $data;
|
||||
}
|
||||
|
||||
$children=[];
|
||||
|
||||
foreach($perm as $key => $val){
|
||||
$children[$key]['title']=lang($val['code']);
|
||||
$children[$key]['index']=$val['id'];
|
||||
$children[$key]['key']=$val['code'];
|
||||
}
|
||||
if($children){
|
||||
$data['children'] = $children;
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,86 @@
|
||||
<?php
|
||||
namespace app\adminapi\controller\v1;
|
||||
|
||||
use app\adminapi\ApiController;
|
||||
use think\facade\Db;
|
||||
|
||||
class Role extends ApiController
|
||||
{
|
||||
public function getRoles()
|
||||
{
|
||||
$result=Db::name('role')
|
||||
->select();
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
// foreach($result as $key=>$val){
|
||||
// // $rtn=Db::name('goods')->where('gc_id',$val['id'])->select()->toArray();
|
||||
// // if($rtn){
|
||||
// // $result[$key]['goods']=[];
|
||||
// // }
|
||||
// $result[$key]['goods']=Db::name('goods')->where('gc_id',$val['id'])->select()->toArray();
|
||||
// }
|
||||
return $this->Success($result);
|
||||
}
|
||||
|
||||
public function getRoleById(){
|
||||
$id=input('id');
|
||||
|
||||
$result=Db::name('role')
|
||||
->where('id',$id)
|
||||
->find();
|
||||
|
||||
$rtn=[
|
||||
'id' => $result['id'],
|
||||
'name' => $result['name'],
|
||||
'desc' => $result['desc'],
|
||||
'permission'=>json_decode($result['limits'])
|
||||
];
|
||||
|
||||
return $this->Success($rtn);
|
||||
}
|
||||
|
||||
public function addRole(){
|
||||
$req=input();
|
||||
|
||||
$data = [
|
||||
'name'=>$req['name'],
|
||||
'desc'=>$req['desc'],
|
||||
'limits'=>json_encode($req['permission'])
|
||||
];
|
||||
|
||||
$result=Db::name('role')
|
||||
->insert($data);
|
||||
|
||||
return $this->Success($result);
|
||||
}
|
||||
|
||||
public function updateRole(){
|
||||
$req=input();
|
||||
|
||||
$data = [
|
||||
'name' =>$req['name'],
|
||||
'desc' =>$req['desc'],
|
||||
'limits' =>json_encode($req['permission'])
|
||||
];
|
||||
|
||||
$result=Db::name('role')
|
||||
->where('id',$req['id'])
|
||||
->update($data);
|
||||
|
||||
return $this->Success($result);
|
||||
}
|
||||
|
||||
public function deleteRole(){
|
||||
$id=input('id');
|
||||
|
||||
|
||||
$result=Db::name('role')
|
||||
->where('id',$id)
|
||||
->delete();
|
||||
|
||||
return $this->Success($result);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
namespace app\adminapi\controller\v1;
|
||||
|
||||
use app\adminapi\ApiController;
|
||||
use think\facade\Db;
|
||||
|
||||
class Site extends ApiController
|
||||
{
|
||||
public function getSiteConfig(){
|
||||
$result = Db::name('site_config')
|
||||
->where('parent_id','<>',0)
|
||||
->select();
|
||||
|
||||
foreach($result as $key => $val){
|
||||
$rtn[$val['code']]=$val['value'];
|
||||
}
|
||||
|
||||
return $this->success($rtn);
|
||||
}
|
||||
|
||||
public function setSiteConfig(){
|
||||
$data = input();
|
||||
unset($data['version']);
|
||||
unset($data['controller']);
|
||||
unset($data['action']);
|
||||
try{
|
||||
foreach($data as $key => $val){
|
||||
Db::name('site_config')
|
||||
->where('code',$key)
|
||||
->update(['value'=>$val]);
|
||||
}
|
||||
}catch(\Exception $e){
|
||||
return $this->error('更新失敗');
|
||||
}
|
||||
|
||||
return $this->success('更新成功');
|
||||
}
|
||||
|
||||
public function getAgents(){
|
||||
$result = Db::name('agent')
|
||||
->select();
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,305 @@
|
||||
<?php
|
||||
namespace app\adminapi\controller\v1;
|
||||
|
||||
use app\adminapi\ApiController;
|
||||
use think\facade\Db;
|
||||
|
||||
use app\common\lib\Vcard;
|
||||
use app\common\lib\Aes;
|
||||
|
||||
class User extends ApiController
|
||||
{
|
||||
public function getInfo()
|
||||
{
|
||||
$id=$this->request->uid;
|
||||
$result=Db::name('user')
|
||||
->where('id',$id)
|
||||
->find();
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
// foreach($result as $key=>$val){
|
||||
// // $rtn=Db::name('goods')->where('gc_id',$val['id'])->select()->toArray();
|
||||
// // if($rtn){
|
||||
// // $result[$key]['goods']=[];
|
||||
// // }
|
||||
// $result[$key]['goods']=Db::name('goods')->where('gc_id',$val['id'])->select()->toArray();
|
||||
// }
|
||||
return $this->Success($result);
|
||||
}
|
||||
|
||||
// 取得會員資料
|
||||
public function getUsers(){
|
||||
$do=Db::name('user');
|
||||
|
||||
if(!input('search')){
|
||||
$result=$do
|
||||
->page(input('current'),input('size'))
|
||||
->order('id','desc')
|
||||
->select()->toArray();
|
||||
|
||||
$total=$do
|
||||
->count();
|
||||
}else{
|
||||
$result=$do
|
||||
->where('user_id','like','%'.input('search').'%')
|
||||
->page(input('current'),input('size'))
|
||||
->order('id','desc')
|
||||
->select()->toArray();
|
||||
|
||||
$total=$do
|
||||
->where('user_id','like','%'.input('search').'%')
|
||||
->count();
|
||||
}
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
$aes = new Aes([]);
|
||||
|
||||
foreach($result as $key => $val){
|
||||
$result[$key]['level_name']= Db::name('user_level')->where('level_id',$val['level'])->where('agent_id',$val['agent_id'])->value('name');
|
||||
|
||||
if($val['parent_id']>0){
|
||||
$result[$key]['parent_name']=Db::name('user')->where('id',$val['parent_id'])->value('real_name');
|
||||
}
|
||||
if($val['overdue_time']>0){
|
||||
$result[$key]['overdue'] = date('Y-m-d',$val['overdue_time']);
|
||||
}else{
|
||||
$result[$key]['overdue'] = '無限期';
|
||||
}
|
||||
if(strlen($val['uniqid'])>0){
|
||||
$uniqid = $val['uniqid'];
|
||||
}else{
|
||||
$uniqid = '00000000';
|
||||
}
|
||||
$params = urlencode($aes->encrypt('user_id='.$val['user_id'].'&verify_code='.$uniqid));
|
||||
$result[$key]['nfcurl']= getUrl().'/card/?params='.$params;
|
||||
}
|
||||
|
||||
$rtn=[
|
||||
'total' => $total,
|
||||
'data' => $result
|
||||
];
|
||||
|
||||
return $this->Success($rtn);
|
||||
|
||||
}
|
||||
|
||||
public function getUser(){
|
||||
|
||||
$id=input('id');
|
||||
|
||||
$result=Db::name('user')
|
||||
->where('id',$id)
|
||||
->find();
|
||||
|
||||
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
$levels=Db::name('user_level')
|
||||
->where('agent_id',$result['agent_id'])
|
||||
->select();
|
||||
|
||||
$result['levels']=$levels;
|
||||
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function addUser(){
|
||||
|
||||
$req=input();
|
||||
unset($req['version']);
|
||||
unset($req['controller']);
|
||||
unset($req['action']);
|
||||
$req['user_id'] = 'mc'.uniqid();
|
||||
$req['line_id'] = $req['user_id'];
|
||||
$req['create_time']=date('Y-m-d H:i:s');
|
||||
$req['update_time']=date('Y-m-d H:i:s');
|
||||
|
||||
$result=Db::name('user')
|
||||
->insert($req);
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function updateUser(){
|
||||
|
||||
$req=input();
|
||||
unset($req['version']);
|
||||
unset($req['controller']);
|
||||
unset($req['action']);
|
||||
unset($req['levels']);
|
||||
unset($req['status']);
|
||||
|
||||
$level_option = Db::name('user_level')
|
||||
->where('agent_id',$req['agent_id'])
|
||||
->where('level_id',$req['level'])
|
||||
->find();
|
||||
|
||||
$req['nc_type']=$level_option['nc_type'];
|
||||
$req['nc_func']=$level_option['nc_func'];
|
||||
|
||||
$req['update_time']=date('Y-m-d H:i:s');
|
||||
|
||||
$result=Db::name('user')
|
||||
->where('id',$req['id'])
|
||||
->update($req);
|
||||
|
||||
Vcard::genVcf(input('user_id'));
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function deleteUser(){
|
||||
$id=input('id');
|
||||
|
||||
$result=Db::name('user')
|
||||
->where('id',$id)
|
||||
->delete();
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function updateStatus(){
|
||||
$id=input('id');
|
||||
$status=input('status');
|
||||
|
||||
$result=Db::name('user')
|
||||
->where('id',$id)
|
||||
->update(['status'=>$status]);
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function getUserCard(){
|
||||
|
||||
$id=input('id');
|
||||
|
||||
$result=Db::name('user_card')
|
||||
->field('id,type,title,content,nfc_show,sort_id')
|
||||
->where('user_id',$id)
|
||||
->order('sort_id')
|
||||
->select();
|
||||
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function uploadAvatar(){
|
||||
$files = request()->file('avatar');
|
||||
$savename = \think\facade\Filesystem::disk('public')->putFile( input('id'), $files);
|
||||
|
||||
$avatar = getUrl().'/storage/'.$savename;
|
||||
|
||||
return $this->Success($avatar);
|
||||
}
|
||||
|
||||
public function updateUserCard(){
|
||||
$user_id=input('id');
|
||||
$cards=input('cards');
|
||||
|
||||
Db::name('user_card')
|
||||
->where('user_id',$user_id)
|
||||
->delete();
|
||||
|
||||
foreach($cards as $key => $val){
|
||||
$nfc_show = $val['nfc_show']?1:0;
|
||||
|
||||
Db::name('user_card')
|
||||
->insert([
|
||||
'user_id' => $user_id,
|
||||
'type' => $val['type'],
|
||||
'title' => $val['title'],
|
||||
'content' => $val['content'],
|
||||
'nfc_show' => $nfc_show,
|
||||
'sort_id' => $key,
|
||||
'create_time' => time()
|
||||
]);
|
||||
}
|
||||
|
||||
// if(!$result){
|
||||
// $result=[];
|
||||
// }
|
||||
|
||||
return $this->success(['code'=>200]);
|
||||
}
|
||||
|
||||
public function updateVerifyCode(){
|
||||
$id=input('id');
|
||||
$uniqid=strtoupper(input('code'));
|
||||
|
||||
$result=Db::name('user')
|
||||
->where('id',$id)
|
||||
->update(['uniqid'=>$uniqid]);
|
||||
|
||||
return $this->success('設定成功');
|
||||
}
|
||||
|
||||
// 取得預開卡資料
|
||||
public function getPrecard(){
|
||||
$do=Db::name('precard');
|
||||
|
||||
if(!input('search')){
|
||||
$result=$do
|
||||
->page(input('current'),input('size'))
|
||||
->order('id','desc')
|
||||
->select()->toArray();
|
||||
|
||||
$total=$do
|
||||
->count();
|
||||
}else{
|
||||
$result=$do
|
||||
->where('user_id','like','%'.input('search').'%')
|
||||
->page(input('current'),input('size'))
|
||||
->order('id','desc')
|
||||
->select()->toArray();
|
||||
|
||||
$total=$do
|
||||
->where('user_id','like','%'.input('search').'%')
|
||||
->count();
|
||||
}
|
||||
|
||||
if(!$result){
|
||||
$result=[];
|
||||
}
|
||||
|
||||
foreach($result as $key => $val){
|
||||
$aes = new Aes([]);
|
||||
$nfc_url = 'user_id='.$val['user_id'].'&verify_code='.$val['verify_code'];
|
||||
$result[$key]['params'] = getUrl().'/card/'.urlencode($aes->encrypt($nfc_url));
|
||||
}
|
||||
|
||||
$rtn=[
|
||||
'total' => $total,
|
||||
'data' => $result
|
||||
];
|
||||
|
||||
return $this->Success($rtn);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
return [
|
||||
\think\middleware\SessionInit::class,
|
||||
\think\middleware\AllowCrossDomain::class,
|
||||
// app\api\middleware\CheckSiteCode::class
|
||||
];
|
||||
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
use think\facade\Route;
|
||||
|
||||
|
||||
// Route::group(function () {
|
||||
// Route::rule(':version/user/:action', 'api/:version.user/:action');
|
||||
// })->middleware(\app\api\middleware\JWT::class);
|
||||
|
||||
Route::rule(':version/:controller/:action','adminapi/:version.:controller/:action');
|
||||
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
// api公用函數
|
||||
use think\facade\Db;
|
||||
|
||||
|
||||
function getPrefixByAppId($appid){
|
||||
return 'tg';
|
||||
}
|
||||
|
||||
function checkParams(){
|
||||
print_r('aaaaa');
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
namespace app\api\controller\v1;
|
||||
|
||||
use app\api\ApiController;
|
||||
use app\common\lib\Aes;
|
||||
|
||||
class Auth extends ApiController
|
||||
{
|
||||
function test(){
|
||||
echo genSerialNo();
|
||||
}
|
||||
|
||||
function testAes(){
|
||||
$aes = new Aes([]);
|
||||
echo urlencode($aes->encrypt('user_id=tg123467890&verify_code=1111'));
|
||||
}
|
||||
|
||||
function testDec(){
|
||||
$params = input('params');
|
||||
echo $params;
|
||||
$aes = new Aes([]);
|
||||
|
||||
echo $aes->descrypt($params);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
namespace app\api\controller\v1;
|
||||
|
||||
use app\api\ApiController;
|
||||
use think\facade\Db;
|
||||
|
||||
use app\api\validate\User as UserValidate;
|
||||
use think\exception\ValidateException;
|
||||
|
||||
|
||||
class User extends ApiController
|
||||
{
|
||||
public function list(){
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function add(){
|
||||
|
||||
//參數檢查
|
||||
try {
|
||||
validate(UserValidate::class)->check(input());
|
||||
} catch (ValidateException $e) {
|
||||
// 驗證失敗 輸出錯誤信息
|
||||
|
||||
// dump($e->getError());
|
||||
return $this->Error($e->getError(),501,'參數錯誤');
|
||||
}
|
||||
|
||||
$prefix = getPrefixByAppId(input('appid'));
|
||||
$data['user_id']=$prefix.input('user_id');
|
||||
$data['real_name']=input('name');
|
||||
$data['level']=input('level')?input('level'):0;
|
||||
$data['overdue_time']=input('overdue_time')?input('overdue_time'):(time()+(60*60*24*7));
|
||||
$data['cus_card'] = '';
|
||||
$data['create_time'] = date('Y-m-d H:i:s');
|
||||
|
||||
//檢查 User ID
|
||||
$is_exist = Db::name('user')
|
||||
->where('user_id',$data['user_id'])
|
||||
->count();
|
||||
|
||||
if($is_exist){
|
||||
return $this->Error('使用者帳號己存在',502,'請求失敗');
|
||||
}
|
||||
|
||||
|
||||
try{
|
||||
//產生暫時編號
|
||||
$data['uniqid']='tg'.genUniqid();
|
||||
|
||||
$id = Db::name('user')
|
||||
->insertGetId($data);
|
||||
|
||||
$refer_code = encodeRefer($id);
|
||||
|
||||
$result = Db::name('user')
|
||||
->where('id',$id)
|
||||
->update(['code'=>$refer_code]);
|
||||
|
||||
$qrcodeUrl = genQrCode('https://'.$_SERVER['HTTP_HOST'].'/home/?aid='.$agent['prefix'],$data['user_id'],'refer');
|
||||
|
||||
$nfcUrl = genQrCode('https://'.$_SERVER['HTTP_HOST'].'/card?userid='.$data['user_id'],$data['user_id'],'nfc');
|
||||
|
||||
return $this->Success($data['uniqid']);
|
||||
|
||||
}catch(\Exception $e){
|
||||
return $this->Error('系統錯誤',500,'新增失敗');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function setLevel(){
|
||||
//參數檢查
|
||||
try {
|
||||
validate(\app\api\validate\UserLevel::class)->check(input());
|
||||
} catch (ValidateException $e) {
|
||||
return $this->Error($e->getError(),501,'參數錯誤');
|
||||
}
|
||||
|
||||
$prefix = getPrefixByAppId(input('appid'));
|
||||
$user_id=$prefix.input('user_id');
|
||||
$level=input('level')?input('level'):0;
|
||||
$overdue_time=input('overdue_time')?input('overdue_time'):(time()+(60*60*24*365));
|
||||
|
||||
try{
|
||||
$result=Db::name('user')
|
||||
->where('user_id',$user_id)
|
||||
->update(['level'=>$level,'overdue_time'=>$overdue_time]);
|
||||
}catch(\Exception $e){
|
||||
return $this->Error('系統錯誤',500,'新增失敗');
|
||||
}
|
||||
|
||||
return $this->Success('更新成功');
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
return [
|
||||
\think\middleware\SessionInit::class,
|
||||
\think\middleware\AllowCrossDomain::class,
|
||||
// app\api\middleware\CheckParams::class
|
||||
// app\api\middleware\CheckSiteCode::class
|
||||
];
|
||||
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\api\middleware;
|
||||
|
||||
use think\exception\HttpException;
|
||||
|
||||
class CheckParams
|
||||
{
|
||||
public function handle($request, \Closure $next): object
|
||||
{
|
||||
$params = $request->param();
|
||||
if(!isset($params['sign'])){
|
||||
return json(['code'=>401,'message'=>'API驗證失敗','data'=>'No Sign','time'=>time()]);
|
||||
}
|
||||
$sign = $params['sign'];
|
||||
|
||||
unset($params['sign']);
|
||||
|
||||
ksort($params);
|
||||
|
||||
$string = md5(md5(strtolower(http_build_query($params))).'seckey');
|
||||
|
||||
if($string !== $sign){
|
||||
// throw new HttpException(401, 'Sign Error!!!');
|
||||
return json(['code'=>401,'message'=>'API驗證失敗','data'=>'Sign Error','time'=>time()]);
|
||||
}
|
||||
|
||||
$response = $next($request);
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
use think\facade\Route;
|
||||
|
||||
|
||||
Route::group(function () {
|
||||
// Route::rule(':version/:controller/:action','zlapi/:version.:controller/:action');
|
||||
// Route::rule(':version/user/:action', 'api/:version.user/:action');
|
||||
})->middleware(\app\zlapi\middleware\JWT::class);
|
||||
// Route::resource(':version/:controller','api/:version.:controller');
|
||||
Route::rule(':version/:controller/:action','api/:version.:controller/:action');
|
||||
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
namespace app\api\validate;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class User extends Validate
|
||||
{
|
||||
protected $rule = [
|
||||
'appid' => 'require',
|
||||
'user_id' => 'require|max:255',
|
||||
'name' => 'require|max:25',
|
||||
'level' => 'number|between:0,3',
|
||||
'overdue_time' => 'number'
|
||||
];
|
||||
|
||||
protected $message = [
|
||||
'appid.require' => 'appid 不可為空',
|
||||
'user_id.require' => 'User Id不可為空',
|
||||
'name.require' => 'Name不得為空',
|
||||
'name.max' => 'Name不得超過25個字',
|
||||
'level.number' => 'Level必需是數字',
|
||||
'level.between' => 'Level只能在0-3之間',
|
||||
'overdue_time.require' => 'overdue_time必需是數字',
|
||||
];
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
namespace app\api\validate;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class UserLevel extends Validate
|
||||
{
|
||||
protected $rule = [
|
||||
'appid' => 'require',
|
||||
'user_id' => 'require|max:255',
|
||||
'level' => 'require|number|between:0,3',
|
||||
'overdue_time' => 'require|number'
|
||||
];
|
||||
|
||||
protected $message = [
|
||||
'appid.require' => 'appid 不可為空',
|
||||
'user_id.require' => 'User Id不可為空',
|
||||
'level.require' => 'Level不可為空',
|
||||
'level.number' => 'Level必需是數字',
|
||||
'level.between' => 'Level只能在0-3之間',
|
||||
'overdue_time.require' => 'overdue_time不可為空',
|
||||
'overdue_time.number' => 'overdue_time必需是數字',
|
||||
];
|
||||
}
|
||||
@ -0,0 +1,342 @@
|
||||
<?php
|
||||
namespace app\appapi\controller\v1;
|
||||
|
||||
use app\appapi\ApiController;
|
||||
use think\facade\Db;
|
||||
use think\facade\Session;
|
||||
use think\facade\Log;
|
||||
|
||||
use Lcobucci\JWT\Parser;
|
||||
use thans\jwt\facade\JWTAuth;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
|
||||
use app\common\lib\Vcard;
|
||||
use app\common\lib\Aes;
|
||||
use app\common\lib\Sign;
|
||||
|
||||
class Auth extends ApiController
|
||||
{
|
||||
/**
|
||||
* return 200 成功
|
||||
* 201 不是會員
|
||||
*/
|
||||
public function lineLogin(){
|
||||
$id_token = input('token');
|
||||
$line_id = input('line_id');
|
||||
|
||||
|
||||
// $profile = (new Parser())->parse($id_token);
|
||||
// print_r($token->getClaim('name'));
|
||||
|
||||
//驗證id_token
|
||||
|
||||
|
||||
$user=Db::name('user')
|
||||
->where('line_id',$line_id)
|
||||
->find();
|
||||
|
||||
if(!$user){
|
||||
return $this->success('非會員',201);
|
||||
}
|
||||
|
||||
|
||||
$token = JWTAuth::builder(
|
||||
[
|
||||
'id' => $user['id'],
|
||||
'user_id' => $user['user_id'],
|
||||
'level' => $user['level']
|
||||
]);
|
||||
|
||||
|
||||
|
||||
if(empty($user['uniqid'])){
|
||||
return $this->success(['uid'=>$user['user_id'],'token'=>'Bearer '.$token],202);
|
||||
}
|
||||
|
||||
return $this->success(['uid'=>$user['user_id'],'token'=>'Bearer '.$token]);
|
||||
}
|
||||
|
||||
public function bindCard(){
|
||||
$uid = input('uid');
|
||||
$verify = input('verify');
|
||||
|
||||
try{
|
||||
Db::name('user')
|
||||
->where('user_id',$uid)
|
||||
->update(['uniqid'=>$verify]);
|
||||
|
||||
Db::name('precard')
|
||||
->where('verify_code',$verify)
|
||||
->update(['status'=>2]);
|
||||
|
||||
return $this->success('綁定成功');
|
||||
}catch(\Exception $e){
|
||||
return $this->error('綁定失敗');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function checkLineId(){
|
||||
$line_id=input('lineid');
|
||||
|
||||
$user = Db::name('user')
|
||||
->where('line_id',$line_id)
|
||||
->find();
|
||||
|
||||
if($user){
|
||||
return $this->error('會員已存在');
|
||||
}
|
||||
|
||||
return $this->success('檢查成功');
|
||||
}
|
||||
|
||||
public function register(){
|
||||
$data = input();
|
||||
|
||||
unset($data['version']);
|
||||
unset($data['controller']);
|
||||
unset($data['action']);
|
||||
unset($data['uid']);
|
||||
unset($data['userid']);
|
||||
unset($data['verify']);
|
||||
unset($data['token']);
|
||||
|
||||
$data=array_map('asc_trim',$data);
|
||||
|
||||
// //檢查line id是否己經是會員
|
||||
// //TODO
|
||||
// $user=Db::name('user')
|
||||
// ->where('line_id',input('line_id'))
|
||||
// ->find();
|
||||
|
||||
// if($user){
|
||||
// return $this->error('已是會員',501);
|
||||
// }
|
||||
|
||||
|
||||
//驗證id_token
|
||||
$verify_line = $this->verifyIdToken(input('token'));
|
||||
|
||||
if(!$verify_line){
|
||||
return $this->error('id token expire',500);
|
||||
}
|
||||
|
||||
$data['line_name'] = $verify_line['name'];
|
||||
$data['line_picture'] = $verify_line['picture'];
|
||||
$data['real_name'] = $verify_line['name'];
|
||||
|
||||
//新增User至Oss Server
|
||||
$user_data = [
|
||||
'appid' => 'sc',
|
||||
'line_id' => $verify_line['sub'],
|
||||
'line_name' => $data['line_name'],
|
||||
'line_picture' => $data['line_picture'],
|
||||
'phone' => $data['phone'],
|
||||
'real_name' => $data['line_name'],
|
||||
'timestamp' => time()
|
||||
];
|
||||
|
||||
$sign = Sign::genSign($user_data);
|
||||
$user_data['sign'] = $sign;
|
||||
|
||||
$client = new Client([
|
||||
'base_uri' => 'https://sso.h888.fun/api/v1/'
|
||||
]);
|
||||
|
||||
$response = $client->post('user/add',[
|
||||
'form_params' => $user_data
|
||||
]);
|
||||
|
||||
|
||||
if($response->getStatusCode()!=200){
|
||||
return $this->error('上傳SSO SERVER 失敗');
|
||||
}
|
||||
|
||||
$sso_data = json_decode($response->getBody()->getContents(),true)['data'];
|
||||
|
||||
//推薦人
|
||||
// if(strlen($data['refer'])>0){
|
||||
// $pid = decodeRefer($data['refer']);
|
||||
// $data['parent_id'] = $pid;
|
||||
// }else{
|
||||
// $data['parent_id'] = 0;
|
||||
// }
|
||||
// unset($data['refer']);
|
||||
|
||||
//預製卡
|
||||
if(input('verify')){
|
||||
$action = 'openright';
|
||||
|
||||
$user_id=genUniqid();
|
||||
$data['user_id'] = $user_id;
|
||||
|
||||
$data['uniqid'] = input('verify');
|
||||
|
||||
$precard = Db::name('precard')
|
||||
->where('verify_code',input('verify'))
|
||||
->find();
|
||||
|
||||
if(!$precard){
|
||||
return $this->error('查無預開卡',401);
|
||||
}
|
||||
|
||||
$data['agent_id'] = $precard['agent_id'];
|
||||
//TODO
|
||||
}else{
|
||||
$action = 'register';
|
||||
if(!isset($data['aid'])){
|
||||
$data['agent_id'] = 1;
|
||||
}else{
|
||||
$data['agent_id'] = Db::name('agent')->where('prefix',$data['aid'])->value('id');
|
||||
unset($data['aid']);
|
||||
}
|
||||
|
||||
$data['user_id'] = $sso_data['uid'];
|
||||
}
|
||||
|
||||
$agent = Db::name('agent')->where('id',$data['agent_id'])->find();
|
||||
|
||||
if($agent['try_days']==0){
|
||||
$data['status'] = 1;
|
||||
$data['level'] = $agent['base_level'];
|
||||
$data['overdue_time'] = strtotime(date('Y-m-d',time() + (60 * 60 * 24 * $agent['base_days'])));
|
||||
}else{
|
||||
$data['status'] = 2;
|
||||
$data['level'] = $agent['try_level'];
|
||||
$data['overdue_time'] = strtotime(date('Y-m-d',time() + (60 * 60 * 24 * $agent['try_days'])));
|
||||
}
|
||||
|
||||
if($agent['parent_id']==0){
|
||||
$data['agent_id'] = $agent['id'];
|
||||
}else{
|
||||
$data['agent_id'] = $agent['parent_id'];
|
||||
}
|
||||
|
||||
$level_option = Db::name('user_level')
|
||||
->where('agent_id',$data['agent_id'])
|
||||
->where('level_id',$data['level'])
|
||||
->find();
|
||||
|
||||
$data['nc_type']=$level_option['nc_type'];
|
||||
$data['nc_func']=$level_option['nc_func'];
|
||||
|
||||
$data['cus_card'] = '';
|
||||
$data['create_time'] = date('Y-m-d H:i:s');
|
||||
|
||||
|
||||
try{
|
||||
$id = Db::name('user')
|
||||
->insertGetId($data);
|
||||
|
||||
// $refer_code = encodeRefer($id);
|
||||
|
||||
|
||||
// $result = Db::name('user')
|
||||
// ->where('id',$id)
|
||||
// ->update(['code'=>$refer_code]);
|
||||
|
||||
|
||||
$qrcodeUrl = genQrCode('https://'.$_SERVER['HTTP_HOST'].'/home/?aid='.$agent['prefix'],$data['user_id'],'refer');
|
||||
|
||||
$aes = new Aes([]);
|
||||
|
||||
$params = urlencode($aes->encrypt('user_id='.$data['user_id'].'&verify_code='.input('verify')));
|
||||
|
||||
$nfcUrl = genQrCode('https://'.$_SERVER['HTTP_HOST'].'/card/?params='.$params,$data['user_id'],'nfc');
|
||||
|
||||
Vcard::genVcf($data['user_id']);
|
||||
|
||||
if($action == 'openright'){
|
||||
Db::name('precard')
|
||||
->where('verify_code',input('verify'))
|
||||
->update(['status'=>2]);
|
||||
}
|
||||
|
||||
return $this->success(['uid'=>$data['user_id'],'token'=>'Bearer'.$sso_data['token']]);
|
||||
|
||||
}catch(\Exception $e){
|
||||
print_r($e);
|
||||
return $this->error('註冊失敗');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private function verifyIdToken($token){
|
||||
try{
|
||||
$client = new Client();
|
||||
$response = $client->request('POST', 'https://api.line.me/oauth2/v2.1/verify', [
|
||||
'form_params' => [
|
||||
'id_token' => $token,
|
||||
'client_id'=> env('utel.line_channel_id')
|
||||
]
|
||||
]);
|
||||
|
||||
$body = $response->getBody()->getContents();
|
||||
return json_decode($body, true);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// print_r($response);
|
||||
// $body = $response->getBody()->getContents();
|
||||
|
||||
// print_r($body);
|
||||
|
||||
}
|
||||
|
||||
private function saveLineImage($pictureUrl,$uid)
|
||||
{
|
||||
if($pictureUrl){
|
||||
$curl = curl_init($pictureUrl);
|
||||
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
|
||||
$imageData=curl_exec($curl);
|
||||
curl_close($curl);
|
||||
|
||||
$filename=$uid."_line.jpg";
|
||||
$filedir=$_SERVER['DOCUMENT_ROOT'].'/storage/'.$uid;
|
||||
if (!file_exists($filedir)) {
|
||||
mkdir($filedir , 0777 , true);
|
||||
}
|
||||
$fp=fopen($filedir.'/'.$filename,'a');
|
||||
fwrite($fp,$imageData);
|
||||
fclose($fp);
|
||||
|
||||
return $filename;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function getSiteConfig(){
|
||||
$result = Db::name('site_config')
|
||||
->where('parent_id','<>',0)
|
||||
->select();
|
||||
|
||||
foreach($result as $key => $val){
|
||||
$rtn[$val['code']]=$val['value'];
|
||||
}
|
||||
|
||||
return $this->success($rtn);
|
||||
}
|
||||
|
||||
public function uploadAvatar(){
|
||||
|
||||
$files = request()->file('file');
|
||||
$savename = \think\facade\Filesystem::disk('public')->putFile( 'temp' , $files);
|
||||
|
||||
$avatar = getUrl().'/storage/'.$savename;
|
||||
|
||||
|
||||
// Db::name('user')
|
||||
// ->where('user_id',input('user_id'))
|
||||
// ->update(['avatar'=>$avatar]);
|
||||
|
||||
return $this->Success($avatar);
|
||||
}
|
||||
|
||||
public function test(){
|
||||
Vcard::genVcf('mc63de2a162b218');
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,246 @@
|
||||
<?php
|
||||
namespace app\appapi\controller\v1;
|
||||
|
||||
use app\appapi\ApiController;
|
||||
use think\facade\Db;
|
||||
|
||||
use app\common\lib\Aes;
|
||||
use app\common\lib\Vcard;
|
||||
|
||||
|
||||
class Card extends ApiController
|
||||
{
|
||||
/**
|
||||
* 檢查nfc用户
|
||||
*
|
||||
* @author wayne <wwayne.hsu@gmail.com>
|
||||
*
|
||||
* @param string token 加密參數
|
||||
*
|
||||
* @return json
|
||||
*/
|
||||
public function checkUser(){
|
||||
$token = input('token');
|
||||
|
||||
if(!$token){
|
||||
return $this->error('參數錯誤');
|
||||
}
|
||||
|
||||
$aes = new Aes([]);
|
||||
parse_str($aes->descrypt($token),$params);
|
||||
|
||||
if(!isset($params['verify_code'])){
|
||||
if(!isset($params['user_id'])){
|
||||
return $this->error('參數錯誤');
|
||||
}
|
||||
$user_id = $params['user_id'];
|
||||
}else{
|
||||
if(strlen($params['verify_code'])>0){
|
||||
$user_id = getUseridByCuid(strtoupper($params['verify_code']));
|
||||
}else{
|
||||
return $this->error('參數錯誤');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($user_id){
|
||||
Db::name('user')
|
||||
->where('user_id',$user_id)
|
||||
->inc('nfc_count')
|
||||
->update();
|
||||
|
||||
return $this->success($user_id);
|
||||
}
|
||||
|
||||
//檢查是否為預開卡會員
|
||||
$is_precard=Db::name('precard')
|
||||
->where('verify_code',strtoupper($params['verify_code']))
|
||||
->count();
|
||||
|
||||
|
||||
if($is_precard){
|
||||
return $this->success(['verify'=>strtoupper($params['verify_code'])],201);
|
||||
}
|
||||
|
||||
return $this->error('請求錯誤');
|
||||
}
|
||||
|
||||
public function getCard(){
|
||||
$do=Db::name('user');
|
||||
|
||||
if(input('userid')){
|
||||
$do->where('user_id',input('userid'));
|
||||
}elseif(input('line_id')){
|
||||
$do->where('line_id',input('line_id'));
|
||||
}else{
|
||||
return $this->error('查無會員資料');
|
||||
}
|
||||
|
||||
|
||||
$user = $do->find();
|
||||
if(!$user){
|
||||
return $this->error('查無會員資料');
|
||||
}
|
||||
|
||||
$aes = new Aes([]);
|
||||
|
||||
if(strlen($user['uniqid'])>0){
|
||||
$params = urlencode($aes->encrypt('verify_code='.$user['uniqid']));
|
||||
}else{
|
||||
$params = urlencode($aes->encrypt('user_id='.$user['user_id']));
|
||||
}
|
||||
|
||||
$user['nfcurl'] = getUrl().'/card/?params='.$params;
|
||||
|
||||
|
||||
$result = [
|
||||
"address" => $user['address']?$user['address']:' ',
|
||||
"company" => $user['company']?$user['company']:' ',
|
||||
"email" => $user['email']?$user['email']:' ',
|
||||
"logo" => "https://i.imgur.com/GclvYFK.png",
|
||||
"maps" => "https://www.google.com/maps/search/?api=1&query_place_id=ChIJAaZEqCYWaTQRMv6fuIsJEuo&query=%E5%BE%AE%E7%A8%8B%E5%BC%8F%E8%B3%87%E8%A8%8A&openExternalBrowser=1",
|
||||
"name" => $user['real_name']?$user['real_name']:' ',
|
||||
"phone" => $user['phone']?$user['phone']:' ',
|
||||
"tel" => $user['tel']?$user['tel']:' ',
|
||||
"title" => $user['title']?$user['title']:' ',
|
||||
"url" => $user['url']?$user['url']:' ',
|
||||
"line" => $user['line']?$user['line']:'',
|
||||
"facebook" => $user['facebook']?$user['facebook']:'',
|
||||
"youtube" => $user['youtube']?$user['youtube']:'',
|
||||
"ig" => $user['ig']?$user['ig']:'',
|
||||
"level" => $user['level']?$user['level']:0,
|
||||
"user_id" => $user['user_id']?$user['user_id']:'',
|
||||
"line_picture" => $user['line_picture']?$user['line_picture']:'',
|
||||
"avatar" => $user['avatar']?$user['avatar']:'',
|
||||
"card_title" => $user['card_title']?$user['card_title']:'',
|
||||
"has_cuscard" => strlen($user['cus_card'])?1:0,
|
||||
"nc_type" => $user['nc_type']?$user['nc_type']:0,
|
||||
"nc_func" => explode(',',$user['nc_func']),
|
||||
"nc_template" => $user['nc_template'],
|
||||
"mark" => nl2br($user['mark']),
|
||||
"nfcurl" => $user['nfcurl'],
|
||||
"show_cus" => $user['show_cus'],
|
||||
"nfc_addon" => json_decode($user['nfc_addon'])
|
||||
];
|
||||
|
||||
|
||||
return $this->Success($result);
|
||||
}
|
||||
|
||||
public function getCusCard(){
|
||||
$data=input();
|
||||
unset($data['version']);
|
||||
unset($data['controller']);
|
||||
unset($data['action']);
|
||||
|
||||
try{
|
||||
|
||||
$do=Db::name('user');
|
||||
if(input('userid')){
|
||||
$do->where('user_id',input('userid'));
|
||||
}elseif(input('line_id')){
|
||||
$do->where('line_id',input('line_id'));
|
||||
}else{
|
||||
return $this->error('查無會員資料');
|
||||
}
|
||||
|
||||
$card = $do->field('cus_card,card_title')
|
||||
->find();
|
||||
|
||||
|
||||
}catch(Exception $e){
|
||||
return $this->error('操作失敗');
|
||||
}
|
||||
return $this->success($card);
|
||||
}
|
||||
|
||||
public function getVipCard(){
|
||||
$data=input();
|
||||
unset($data['version']);
|
||||
unset($data['controller']);
|
||||
unset($data['action']);
|
||||
|
||||
try{
|
||||
$do=Db::name('user_card');
|
||||
if(input('userid')){
|
||||
$id = getIdByUid(input('userid'));
|
||||
}elseif(input('line_id')){
|
||||
$id = getIdByUid(input('lineid'));
|
||||
}else{
|
||||
return $this->error('查無會員資料');
|
||||
}
|
||||
$do->where('user_id',$id);
|
||||
$card = $do->field('*')
|
||||
->select();
|
||||
|
||||
}catch(Exception $e){
|
||||
return $this->error('操作失敗');
|
||||
}
|
||||
return $this->success($card);
|
||||
}
|
||||
|
||||
public function updateCard(){
|
||||
$data=input();
|
||||
unset($data['uid']);
|
||||
unset($data['version']);
|
||||
unset($data['controller']);
|
||||
unset($data['action']);
|
||||
unset($data['nfcurl']);
|
||||
unset($data['agent_prefix']);
|
||||
unset($data['level_name']);
|
||||
unset($data['addon']);
|
||||
unset($data['delete_time']);
|
||||
|
||||
if(!empty(input('addon'))){
|
||||
$data['nfc_addon']=json_encode(input('addon'));
|
||||
}else{
|
||||
$data['nfc_addon']='';
|
||||
}
|
||||
|
||||
try{
|
||||
Db::name('user')
|
||||
->where('user_id',$data['user_id'])
|
||||
->update($data);
|
||||
|
||||
Vcard::genVcf($data['user_id']);
|
||||
|
||||
|
||||
}catch(Exception $e){
|
||||
return $this->error('操作失敗');
|
||||
}
|
||||
return $this->success(['code'=>200]);
|
||||
}
|
||||
|
||||
public function updateCusCard(){
|
||||
|
||||
$data=input();
|
||||
unset($data['version']);
|
||||
unset($data['controller']);
|
||||
unset($data['action']);
|
||||
|
||||
$data['show_cus'] = input('show_cus')?1:0;
|
||||
|
||||
try{
|
||||
Db::name('user')
|
||||
->where('user_id',$data['user_id'])
|
||||
->update(['card_title'=>$data['card_title'],'show_cus'=>$data['show_cus'],'cus_card'=>$data['cus_card']]);
|
||||
|
||||
}catch(Exception $e){
|
||||
return $this->error('操作失敗');
|
||||
}
|
||||
return $this->success(['code'=>200]);
|
||||
}
|
||||
|
||||
|
||||
public function uploadFile(){
|
||||
// print_r(input());
|
||||
$files = request()->file('file');
|
||||
|
||||
$savename = \think\facade\Filesystem::disk('public')->putFile( 'card', $files);;
|
||||
|
||||
$image_url = getUrl().'/storage/'.$savename;
|
||||
|
||||
return $this->success($image_url);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,250 @@
|
||||
<?php
|
||||
namespace app\appapi\controller\v1;
|
||||
|
||||
use app\appapi\ApiController;
|
||||
use think\facade\Db;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
|
||||
use app\common\lib\Aes;
|
||||
use app\common\lib\Sign;
|
||||
|
||||
class User extends ApiController
|
||||
{
|
||||
public function getUserInfo(){
|
||||
$user=Db::name('user')
|
||||
->where('user_id',$this->uid)
|
||||
->find();
|
||||
|
||||
//使用者不存在,至SSO Server取得
|
||||
if(!$user){
|
||||
$user_data = [
|
||||
'appid' => 'sc',
|
||||
'user_id' => $this->uid,
|
||||
'timestamp' => time()
|
||||
];
|
||||
$sign = Sign::genSign($user_data);
|
||||
$user_data['sign'] = $sign;
|
||||
|
||||
$client = new Client([
|
||||
'base_uri' => 'https://sso.h888.fun/api/v1/'
|
||||
]);
|
||||
|
||||
$response = $client->get('user/getInfo?'.http_build_query($user_data));
|
||||
if($response->getStatusCode()!=200){
|
||||
return $this->error('get sso user info error!!!');
|
||||
}
|
||||
|
||||
$sso_data = json_decode($response->getBody()->getContents(),true)['data'];
|
||||
|
||||
try{
|
||||
$sso_data['cus_card']='';
|
||||
Db::name('user')
|
||||
->insert($sso_data);
|
||||
|
||||
$user=Db::name('user')
|
||||
->where('user_id',$this->uid)
|
||||
->find();
|
||||
|
||||
}catch(\Exception $e){
|
||||
return $this->error('sync sso user info error!!!');
|
||||
}
|
||||
}
|
||||
|
||||
$aes = new Aes([]);
|
||||
if(strlen(trim($user['uniqid']))>0){
|
||||
$params = urlencode($aes->encrypt('verify_code='.$user['uniqid']));
|
||||
}else{
|
||||
$params = urlencode($aes->encrypt('user_id='.$user['user_id']));
|
||||
}
|
||||
|
||||
// $user['level_name'] = Db::name('user_level')->where('agent_id',$user['agent_id'])->where('level_id',$user['level'])->value('name');
|
||||
|
||||
switch($user['level']){
|
||||
case 0:
|
||||
$user['level_name']='未付費用戶';
|
||||
break;
|
||||
case 1:
|
||||
$user['level_name']='付費用戶';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
$user['nfcurl'] = getUrl().'/card/?params='.$params;
|
||||
|
||||
$user['nc_func'] = explode(',',$user['nc_func']);
|
||||
|
||||
$user['agent_prefix'] = Db::name('agent')->where('id',$user['agent_id'])->value('prefix');
|
||||
|
||||
return $this->Success($user);
|
||||
}
|
||||
|
||||
public function getUserCompany(){
|
||||
if(!$this->uid){
|
||||
$this->error('用戶ID錯誤');
|
||||
}
|
||||
|
||||
$result = Db::name('user_company')
|
||||
->where('user_id',$this->uid)
|
||||
->select();
|
||||
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function addUserCompany(){
|
||||
if(!$this->uid){
|
||||
$this->error('用戶ID錯誤');
|
||||
}
|
||||
|
||||
$ucData = input('post.');
|
||||
$ucData['user_id'] = $this->uid;
|
||||
unset($ucData['uid']);
|
||||
|
||||
try{
|
||||
if(isset($ucData['is_default']) && $ucData['is_default']){
|
||||
|
||||
Db::name('user_company')
|
||||
->where('user_id',$this->uid)
|
||||
->update(['is_default'=>0]);
|
||||
|
||||
Db::name('user')
|
||||
->where('user_id',$this->uid)
|
||||
->update([
|
||||
'company' => $ucData['uc_name'],
|
||||
'title' => $ucData['uc_title'],
|
||||
'tel' => $ucData['uc_tel'],
|
||||
'address' => $ucData['uc_address'],
|
||||
'url' => $ucData['uc_url'],
|
||||
]);
|
||||
|
||||
}
|
||||
Db::name('user_company')
|
||||
->insert($ucData);
|
||||
|
||||
$result = Db::name('user_company')
|
||||
->where('user_id',$this->uid)
|
||||
->select();
|
||||
|
||||
return $this->success($result);
|
||||
|
||||
}catch(\Exception $e){
|
||||
print_r($e);
|
||||
return $this->error('操作錯誤');
|
||||
}
|
||||
}
|
||||
|
||||
public function updateUserCompany(){
|
||||
if(!$this->uid){
|
||||
$this->error('用戶ID錯誤');
|
||||
}
|
||||
|
||||
try{
|
||||
Db::name('user_company')
|
||||
->where('user_id',$this->uid)
|
||||
->update(['is_default'=>0]);
|
||||
|
||||
Db::name('user_company')
|
||||
->where('id',input('id'))
|
||||
->update(['is_default'=>1]);
|
||||
|
||||
$res = Db::name('user_company')
|
||||
->where('id',input('id'))
|
||||
->find();
|
||||
|
||||
Db::name('user')
|
||||
->where('user_id',$this->uid)
|
||||
->update([
|
||||
'company' => $res['uc_name'],
|
||||
'title' => $res['uc_title'],
|
||||
'tel' => $res['uc_tel'],
|
||||
'address' => $res['uc_address'],
|
||||
'url' => $res['uc_url'],
|
||||
]);
|
||||
|
||||
//更新用戶資料
|
||||
$result = Db::name('user_company')
|
||||
->where('user_id',$this->uid)
|
||||
->select();
|
||||
|
||||
return $this->success($result);
|
||||
|
||||
}catch(\Exception $e){
|
||||
print_r($e);
|
||||
return $this->error('操作錯誤');
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteUserCompany(){
|
||||
if(!$this->uid){
|
||||
$this->error('用戶ID錯誤');
|
||||
}
|
||||
|
||||
try{
|
||||
Db::name('user_company')
|
||||
->where('id',input('id'))
|
||||
->delete();
|
||||
|
||||
//更新用戶資料
|
||||
$result = Db::name('user_company')
|
||||
->where('user_id',$this->uid)
|
||||
->select();
|
||||
|
||||
return $this->success($result);
|
||||
|
||||
}catch(\Exception $e){
|
||||
return $this->error('操作錯誤');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function setUserLevel(){
|
||||
$result=Db::name('user')
|
||||
->where('user_id',$this->uid)
|
||||
->update(['level'=>input('level')]);
|
||||
|
||||
|
||||
return $this->Success($result);
|
||||
}
|
||||
|
||||
public function setUserTpl(){
|
||||
try{
|
||||
$result=Db::name('user')
|
||||
->where('user_id',$this->uid)
|
||||
->update(['nc_template'=>input('tpl')]);
|
||||
}catch(\Excenption $e){
|
||||
return $this->Error('更新失敗');
|
||||
}
|
||||
|
||||
return $this->Success($result);
|
||||
}
|
||||
|
||||
public function uploadAvatar(){
|
||||
|
||||
$files = request()->file('file');
|
||||
$savename = \think\facade\Filesystem::disk('public')->putFile( input('user_id'), $files);
|
||||
|
||||
$avatar = getUrl().'/storage/'.$savename;
|
||||
|
||||
|
||||
// Db::name('user')
|
||||
// ->where('user_id',input('user_id'))
|
||||
// ->update(['avatar'=>$avatar]);
|
||||
|
||||
return $this->Success($avatar);
|
||||
}
|
||||
|
||||
public function updateSendCount(){
|
||||
$user_id = input('userid');
|
||||
|
||||
Db::name('user')
|
||||
->where('user_id',input('userid'))
|
||||
->exp('send_count', 'send_count+1')
|
||||
->update();
|
||||
// ->inc('send_count',1);
|
||||
|
||||
return $this->Success('更新成功');
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
return [
|
||||
\think\middleware\SessionInit::class,
|
||||
\think\middleware\AllowCrossDomain::class,
|
||||
// app\api\middleware\CheckSiteCode::class
|
||||
];
|
||||
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
use think\facade\Route;
|
||||
|
||||
|
||||
Route::group(function () {
|
||||
// Route::rule(':version/user/:action', 'appapi/:version.user/:action');
|
||||
// Route::rule(':version/user/:action', 'api/:version.user/:action');
|
||||
})->middleware(\app\api\middleware\JWT::class);
|
||||
|
||||
Route::rule(':version/:controller/:action','appapi/:version.:controller/:action');
|
||||
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
declare (strict_types = 1);
|
||||
|
||||
namespace app\command;
|
||||
|
||||
use think\console\Command;
|
||||
use think\console\Input;
|
||||
use think\console\input\Argument;
|
||||
use think\console\input\Option;
|
||||
use think\console\Output;
|
||||
|
||||
use think\facade\Db;
|
||||
|
||||
class CheckExpire extends Command
|
||||
{
|
||||
protected function configure()
|
||||
{
|
||||
// 指令配置
|
||||
$this->setName('checkexpire')
|
||||
->setDescription('the checkexpire command');
|
||||
}
|
||||
|
||||
protected function execute(Input $input, Output $output)
|
||||
{
|
||||
// 取得代理資料
|
||||
$t_agents = Db::name('agent')->select();
|
||||
|
||||
foreach($t_agents as $val){
|
||||
$agents[$val['id']] = $val;
|
||||
}
|
||||
|
||||
// 取得過期用戶
|
||||
$e_users = Db::name('user')
|
||||
->where('status',1)
|
||||
->where('overdue_time','<',time())
|
||||
->select();
|
||||
|
||||
// 更新過期用戶
|
||||
foreach($e_users as $val){
|
||||
$data['level']=0;
|
||||
$data['status']=1;
|
||||
|
||||
$level_option = Db::name('user_level')
|
||||
->where('agent_id',$val['agent_id'])
|
||||
->where('level_id',$data['level'])
|
||||
->find();
|
||||
|
||||
$data['nc_type']=$level_option['nc_type'];
|
||||
$data['nc_func']=$level_option['nc_func'];
|
||||
|
||||
|
||||
Db::name('user')
|
||||
->where('id',$val['id'])
|
||||
->update($data);
|
||||
}
|
||||
|
||||
// 指令输出
|
||||
$output->writeln('checkexpire');
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,62 @@
|
||||
<?php
|
||||
declare (strict_types = 1);
|
||||
|
||||
namespace app\command;
|
||||
|
||||
use think\console\Command;
|
||||
use think\console\Input;
|
||||
use think\console\input\Argument;
|
||||
use think\console\input\Option;
|
||||
use think\console\Output;
|
||||
|
||||
use think\facade\Db;
|
||||
|
||||
class CheckTrial extends Command
|
||||
{
|
||||
protected function configure()
|
||||
{
|
||||
// 指令配置
|
||||
$this->setName('checktrial')
|
||||
->setDescription('the checktrial command');
|
||||
}
|
||||
|
||||
protected function execute(Input $input, Output $output)
|
||||
{
|
||||
// 取得代理資料
|
||||
$t_agents = Db::name('agent')
|
||||
->select();
|
||||
|
||||
foreach($t_agents as $val){
|
||||
$agents[$val['id']] = $val;
|
||||
}
|
||||
|
||||
// 取得試用過期用戶
|
||||
$e_users = Db::name('user')
|
||||
->where('status',2)
|
||||
->where('overdue_time','<',time())
|
||||
->select();
|
||||
|
||||
// 更新試用過期用戶
|
||||
foreach($e_users as $val){
|
||||
$data['overdue_time']=strtotime("+".$agents[$val['agent_id']]['base_days']." days");
|
||||
$data['level']=$agents[$val['agent_id']]['base_level'];
|
||||
|
||||
$level_option = Db::name('user_level')
|
||||
->where('agent_id',$val['agent_id'])
|
||||
->where('level_id',$data['level'])
|
||||
->find();
|
||||
|
||||
$data['nc_type']=$level_option['nc_type'];
|
||||
$data['nc_func']=$level_option['nc_func'];
|
||||
|
||||
$data['status']=1;
|
||||
print_r($data);
|
||||
Db::name('user')
|
||||
->where('id',$val['id'])
|
||||
->update($data);
|
||||
}
|
||||
|
||||
// 指令输出
|
||||
$output->writeln('檢查試用會員完成');
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
namespace app\common\lib;
|
||||
|
||||
class Aes{
|
||||
|
||||
private $key = 'iloveutel';
|
||||
private $iv = '1234567890123456';
|
||||
private $method = 'AES-128-CBC';
|
||||
|
||||
/**
|
||||
* 構造方法
|
||||
*/
|
||||
public function __construct($config){
|
||||
foreach($config as $k=>$v){
|
||||
|
||||
$this->$k = $v;
|
||||
}
|
||||
}
|
||||
|
||||
// 加密
|
||||
public function encrypt($data){
|
||||
return base64_encode(openssl_encrypt($data, $this->method,$this->key, OPENSSL_RAW_DATA , $this->iv));
|
||||
}
|
||||
|
||||
//解密
|
||||
public function descrypt($data){
|
||||
return openssl_decrypt(base64_decode($data), $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\lib;
|
||||
|
||||
class Sign{
|
||||
|
||||
public static function genSign($data = []) {
|
||||
|
||||
ksort($data);
|
||||
|
||||
$string = md5(md5(strtolower(http_build_query($data))).'seckey');
|
||||
|
||||
return $string;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
namespace app\common\lib;
|
||||
|
||||
use think\facade\Db;
|
||||
|
||||
use JeroenDesloovere\VCard\VCard as VCardApi;
|
||||
|
||||
class Vcard{
|
||||
|
||||
public static function genVcf($userid){
|
||||
$userInfo = Db::name('user')->where('user_id',$userid)->find();
|
||||
if(!$userInfo){
|
||||
return false;
|
||||
}
|
||||
$vcard = new VCardApi();
|
||||
|
||||
$lastname = $userInfo['real_name'];
|
||||
$firstname = '';
|
||||
$additional = '';
|
||||
$prefix = '';
|
||||
$suffix = '';
|
||||
|
||||
$vcard->addName($lastname, $firstname, $additional, $prefix, $suffix);
|
||||
|
||||
// add work data
|
||||
$vcard->addCompany($userInfo['company']);
|
||||
$vcard->addJobtitle($userInfo['title']);
|
||||
// $vcard->addRole('Data Protection Officer');
|
||||
$vcard->addEmail($userInfo['email']);
|
||||
$vcard->addPhoneNumber($userInfo['phone'], 'PREF;CELL');
|
||||
$vcard->addPhoneNumber($userInfo['tel'], 'WORK');
|
||||
// $vcard->addAddress(null, null, 'street', 'worktown', null, 'workpostcode', 'Belgium');
|
||||
// $vcard->addLabel('street, worktown, workpostcode Belgium');
|
||||
if($userInfo['url']){
|
||||
// $vcard->addURL(getUrl().'/card/?userid='.$userInfo['user_id']);
|
||||
$vcard->addURL($userInfo['url']);
|
||||
}
|
||||
|
||||
// $vcard->addPhoto(__DIR__.'/../../../public/storage/'.$userInfo['user_id'].'/'.$userInfo['user_id'].'_line.jpg');
|
||||
|
||||
// return vcard as a string
|
||||
//return $vcard->getOutput();
|
||||
|
||||
// return vcard as a download
|
||||
// return $vcard->download();
|
||||
$vcard->setSavePath(__DIR__.'/../../../public/storage/'.$userInfo['user_id'].'/');
|
||||
$vcard->setFilename($userInfo['user_id']);
|
||||
$vcard->save();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace app\controller;
|
||||
|
||||
use app\BaseController;
|
||||
|
||||
class Index extends BaseController
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return redirect('/home');
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
namespace app\controller;
|
||||
|
||||
use app\BaseController;
|
||||
|
||||
use think\facade\Db;
|
||||
|
||||
use app\common\lib\Vcard;
|
||||
|
||||
class Vcf extends BaseController
|
||||
{
|
||||
|
||||
public function index(){
|
||||
$userid=input('userid');
|
||||
$userid='mc622b0cda299c6';
|
||||
|
||||
Vcard::genVcf($userid);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
// 事件定义文件
|
||||
return [
|
||||
'bind' => [
|
||||
],
|
||||
|
||||
'listen' => [
|
||||
'AppInit' => [],
|
||||
'HttpRun' => [],
|
||||
'HttpEnd' => [],
|
||||
'LogLevel' => [],
|
||||
'LogWrite' => [],
|
||||
],
|
||||
|
||||
'subscribe' => [
|
||||
],
|
||||
];
|
||||
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
// 全局中间件定义文件
|
||||
return [
|
||||
// 全局请求缓存
|
||||
// \think\middleware\CheckRequestCache::class,
|
||||
// 多语言加载
|
||||
// \think\middleware\LoadLangPack::class,
|
||||
// Session初始化
|
||||
// \think\middleware\SessionInit::class
|
||||
];
|
||||
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
use app\ExceptionHandle;
|
||||
use app\Request;
|
||||
|
||||
// 容器Provider定义文件
|
||||
return [
|
||||
'think\Request' => Request::class,
|
||||
'think\exception\Handle' => ExceptionHandle::class,
|
||||
];
|
||||
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
use app\AppService;
|
||||
|
||||
// 系统服务定义文件
|
||||
// 服务在完成全局初始化之后执行
|
||||
return [
|
||||
AppService::class,
|
||||
];
|
||||
@ -0,0 +1,54 @@
|
||||
{
|
||||
"name": "topthink/think",
|
||||
"description": "the new thinkphp framework",
|
||||
"type": "project",
|
||||
"keywords": [
|
||||
"framework",
|
||||
"thinkphp",
|
||||
"ORM"
|
||||
],
|
||||
"homepage": "http://thinkphp.cn/",
|
||||
"license": "Apache-2.0",
|
||||
"authors": [
|
||||
{
|
||||
"name": "liu21st",
|
||||
"email": "liu21st@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "yunwuxin",
|
||||
"email": "448901948@qq.com"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"topthink/framework": "^6.0.0",
|
||||
"topthink/think-orm": "^2.0",
|
||||
"topthink/think-multi-app": "^1.0",
|
||||
"thans/tp-jwt-auth": "^1.2",
|
||||
"guzzlehttp/guzzle": "~6.0",
|
||||
"aferrandini/phpqrcode": "^1.0",
|
||||
"jeroendesloovere/vcard": "^1.7",
|
||||
"topthink/think-filesystem": "^2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/var-dumper": "^4.2",
|
||||
"topthink/think-trace":"^1.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"app\\": "app"
|
||||
},
|
||||
"psr-0": {
|
||||
"": "extend/"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"preferred-install": "dist"
|
||||
},
|
||||
"scripts": {
|
||||
"post-autoload-dump": [
|
||||
"@php think service:discover",
|
||||
"@php think vendor:publish"
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | 缓存设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
return [
|
||||
// 默认缓存驱动
|
||||
'default' => env('cache.driver', 'file'),
|
||||
|
||||
// 缓存连接方式配置
|
||||
'stores' => [
|
||||
'file' => [
|
||||
// 驱动方式
|
||||
'type' => 'File',
|
||||
// 缓存保存目录
|
||||
'path' => '',
|
||||
// 缓存前缀
|
||||
'prefix' => '',
|
||||
// 缓存有效期 0表示永久缓存
|
||||
'expire' => 0,
|
||||
// 缓存标签前缀
|
||||
'tag_prefix' => 'tag:',
|
||||
// 序列化机制 例如 ['serialize', 'unserialize']
|
||||
'serialize' => [],
|
||||
],
|
||||
// 更多的缓存连接
|
||||
],
|
||||
];
|
||||
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | 控制台配置
|
||||
// +----------------------------------------------------------------------
|
||||
return [
|
||||
// 指令定义
|
||||
'commands' => [
|
||||
'checktrial' => app\command\CheckTrial::class,
|
||||
'checkexpire' => app\command\CheckExpire::class,
|
||||
],
|
||||
];
|
||||
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | Cookie设置
|
||||
// +----------------------------------------------------------------------
|
||||
return [
|
||||
// cookie 保存时间
|
||||
'expire' => 0,
|
||||
// cookie 保存路径
|
||||
'path' => '/',
|
||||
// cookie 有效域名
|
||||
'domain' => '',
|
||||
// cookie 启用安全传输
|
||||
'secure' => false,
|
||||
// httponly设置
|
||||
'httponly' => false,
|
||||
// 是否使用 setcookie
|
||||
'setcookie' => true,
|
||||
// samesite 设置,支持 'strict' 'lax'
|
||||
'samesite' => '',
|
||||
];
|
||||
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// 默认磁盘
|
||||
'default' => env('filesystem.driver', 'local'),
|
||||
// 磁盘列表
|
||||
'disks' => [
|
||||
'local' => [
|
||||
'type' => 'local',
|
||||
'root' => app()->getRuntimePath() . 'storage',
|
||||
],
|
||||
'public' => [
|
||||
// 磁盘类型
|
||||
'type' => 'local',
|
||||
// 磁盘路径
|
||||
'root' => app()->getRootPath() . 'public/storage',
|
||||
// 磁盘路径对应的外部URL路径
|
||||
'url' => '/storage',
|
||||
// 可见性
|
||||
'visibility' => 'public',
|
||||
],
|
||||
// 更多的磁盘配置信息
|
||||
],
|
||||
];
|
||||
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | 多语言设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
return [
|
||||
// 默认语言
|
||||
'default_lang' => env('lang.default_lang', 'zh-cn'),
|
||||
// 允许的语言列表
|
||||
'allow_lang_list' => [],
|
||||
// 多语言自动侦测变量名
|
||||
'detect_var' => 'lang',
|
||||
// 是否使用Cookie记录
|
||||
'use_cookie' => true,
|
||||
// 多语言cookie变量
|
||||
'cookie_var' => 'think_lang',
|
||||
// 多语言header变量
|
||||
'header_var' => 'think-lang',
|
||||
// 扩展语言包
|
||||
'extend_list' => [],
|
||||
// Accept-Language转义为对应语言包名称
|
||||
'accept_language' => [
|
||||
'zh-hans-cn' => 'zh-cn',
|
||||
],
|
||||
// 是否支持语言分组
|
||||
'allow_group' => false,
|
||||
];
|
||||
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | 日志设置
|
||||
// +----------------------------------------------------------------------
|
||||
return [
|
||||
// 默认日志记录通道
|
||||
'default' => env('log.channel', 'file'),
|
||||
// 日志记录级别
|
||||
'level' => [],
|
||||
// 日志类型记录的通道 ['error'=>'email',...]
|
||||
'type_channel' => [],
|
||||
// 关闭全局日志写入
|
||||
'close' => false,
|
||||
// 全局日志处理 支持闭包
|
||||
'processor' => null,
|
||||
|
||||
// 日志通道列表
|
||||
'channels' => [
|
||||
'file' => [
|
||||
// 日志记录方式
|
||||
'type' => 'File',
|
||||
// 日志保存目录
|
||||
'path' => '',
|
||||
// 单文件日志写入
|
||||
'single' => false,
|
||||
// 独立日志级别
|
||||
'apart_level' => [],
|
||||
// 最大日志文件数量
|
||||
'max_files' => 0,
|
||||
// 使用JSON格式记录
|
||||
'json' => false,
|
||||
// 日志处理
|
||||
'processor' => null,
|
||||
// 关闭通道日志写入
|
||||
'close' => false,
|
||||
// 日志输出格式化
|
||||
'format' => '[%s][%s] %s',
|
||||
// 是否实时写入
|
||||
'realtime_write' => false,
|
||||
],
|
||||
// 其它日志通道配置
|
||||
],
|
||||
|
||||
];
|
||||
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
// 中间件配置
|
||||
return [
|
||||
// 别名或分组
|
||||
'alias' => [],
|
||||
// 优先级设置,此数组中的中间件会按照数组中的顺序优先执行
|
||||
'priority' => [],
|
||||
];
|
||||
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | 路由设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
return [
|
||||
// pathinfo分隔符
|
||||
'pathinfo_depr' => '/',
|
||||
// URL伪静态后缀
|
||||
'url_html_suffix' => 'html',
|
||||
// URL普通方式参数 用于自动生成
|
||||
'url_common_param' => true,
|
||||
// 是否开启路由延迟解析
|
||||
'url_lazy_route' => false,
|
||||
// 是否强制使用路由
|
||||
'url_route_must' => false,
|
||||
// 合并路由规则
|
||||
'route_rule_merge' => false,
|
||||
// 路由是否完全匹配
|
||||
'route_complete_match' => false,
|
||||
// 访问控制器层名称
|
||||
'controller_layer' => 'controller',
|
||||
// 空控制器名
|
||||
'empty_controller' => 'Error',
|
||||
// 是否使用控制器后缀
|
||||
'controller_suffix' => false,
|
||||
// 默认的路由变量规则
|
||||
'default_route_pattern' => '[\w\.]+',
|
||||
// 是否开启请求缓存 true自动缓存 支持设置请求缓存规则
|
||||
'request_cache_key' => false,
|
||||
// 请求缓存有效期
|
||||
'request_cache_expire' => null,
|
||||
// 全局请求缓存排除规则
|
||||
'request_cache_except' => [],
|
||||
// 默认控制器名
|
||||
'default_controller' => 'Index',
|
||||
// 默认操作名
|
||||
'default_action' => 'index',
|
||||
// 操作方法后缀
|
||||
'action_suffix' => '',
|
||||
// 默认JSONP格式返回的处理方法
|
||||
'default_jsonp_handler' => 'jsonpReturn',
|
||||
// 默认JSONP处理方法
|
||||
'var_jsonp_handler' => 'callback',
|
||||
];
|
||||
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | 会话设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
return [
|
||||
// session name
|
||||
'name' => 'PHPSESSID',
|
||||
// SESSION_ID的提交变量,解决flash上传跨域
|
||||
'var_session_id' => '',
|
||||
// 驱动方式 支持file cache
|
||||
'type' => 'file',
|
||||
// 存储连接标识 当type使用cache的时候有效
|
||||
'store' => null,
|
||||
// 过期时间
|
||||
'expire' => 1440,
|
||||
// 前缀
|
||||
'prefix' => '',
|
||||
];
|
||||
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | Trace设置 开启调试模式后有效
|
||||
// +----------------------------------------------------------------------
|
||||
return [
|
||||
// 内置Html和Console两种方式 支持扩展
|
||||
'type' => 'Html',
|
||||
// 读取的日志通道名
|
||||
'channel' => '',
|
||||
];
|
||||
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | 模板设置
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
return [
|
||||
// 模板引擎类型使用Think
|
||||
'type' => 'Think',
|
||||
// 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法
|
||||
'auto_rule' => 1,
|
||||
// 模板目录名
|
||||
'view_dir_name' => 'view',
|
||||
// 模板后缀
|
||||
'view_suffix' => 'html',
|
||||
// 模板文件名分隔符
|
||||
'view_depr' => DIRECTORY_SEPARATOR,
|
||||
// 模板引擎普通标签开始标记
|
||||
'tpl_begin' => '{',
|
||||
// 模板引擎普通标签结束标记
|
||||
'tpl_end' => '}',
|
||||
// 标签库标签开始标记
|
||||
'taglib_begin' => '{',
|
||||
// 标签库标签结束标记
|
||||
'taglib_end' => '}',
|
||||
];
|
||||
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
||||
@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "ecard_api",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {}
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1,349 @@
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
||||
|
||||
/* Document
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Correct the line height in all browsers.
|
||||
* 2. Prevent adjustments of font size after orientation changes in iOS.
|
||||
*/
|
||||
|
||||
html {
|
||||
line-height: 1.15; /* 1 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/* Sections
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the margin in all browsers.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the `main` element consistently in IE.
|
||||
*/
|
||||
|
||||
main {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the font size and margin on `h1` elements within `section` and
|
||||
* `article` contexts in Chrome, Firefox, and Safari.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in Firefox.
|
||||
* 2. Show the overflow in Edge and IE.
|
||||
*/
|
||||
|
||||
hr {
|
||||
box-sizing: content-box; /* 1 */
|
||||
height: 0; /* 1 */
|
||||
overflow: visible; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background on active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Remove the bottom border in Chrome 57-
|
||||
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: none; /* 1 */
|
||||
text-decoration: underline; /* 2 */
|
||||
text-decoration: underline dotted; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font weight in Chrome, Edge, and Safari.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` elements from affecting the line height in
|
||||
* all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the border on images inside links in IE 10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Change the font styles in all browsers.
|
||||
* 2. Remove the margin in Firefox and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit; /* 1 */
|
||||
font-size: 100%; /* 1 */
|
||||
line-height: 1.15; /* 1 */
|
||||
margin: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the overflow in IE.
|
||||
* 1. Show the overflow in Edge.
|
||||
*/
|
||||
|
||||
button,
|
||||
input { /* 1 */
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
||||
* 1. Remove the inheritance of text transform in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select { /* 1 */
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the inability to style clickable types in iOS and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner border and padding in Firefox.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
border-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore the focus styles unset by the previous rule.
|
||||
*/
|
||||
|
||||
button:-moz-focusring,
|
||||
[type="button"]:-moz-focusring,
|
||||
[type="reset"]:-moz-focusring,
|
||||
[type="submit"]:-moz-focusring {
|
||||
outline: 1px dotted ButtonText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the padding in Firefox.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
padding: 0.35em 0.75em 0.625em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the text wrapping in Edge and IE.
|
||||
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
||||
* 3. Remove the padding so developers are not caught out when they zero out
|
||||
* `fieldset` elements in all browsers.
|
||||
*/
|
||||
|
||||
legend {
|
||||
box-sizing: border-box; /* 1 */
|
||||
color: inherit; /* 2 */
|
||||
display: table; /* 1 */
|
||||
max-width: 100%; /* 1 */
|
||||
padding: 0; /* 3 */
|
||||
white-space: normal; /* 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the default vertical scrollbar in IE 10+.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in IE 10.
|
||||
* 2. Remove the padding in IE 10.
|
||||
*/
|
||||
|
||||
[type="checkbox"],
|
||||
[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the cursor style of increment and decrement buttons in Chrome.
|
||||
*/
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the odd appearance in Chrome and Safari.
|
||||
* 2. Correct the outline style in Safari.
|
||||
*/
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
outline-offset: -2px; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner padding in Chrome and Safari on macOS.
|
||||
*/
|
||||
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inability to style clickable types in iOS and Safari.
|
||||
* 2. Change font properties to `inherit` in Safari.
|
||||
*/
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
}
|
||||
|
||||
/* Interactive
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Add the correct display in Edge, IE 10+, and Firefox.
|
||||
*/
|
||||
|
||||
details {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the correct display in all browsers.
|
||||
*/
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
/* Misc
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10+.
|
||||
*/
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10.
|
||||
*/
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
@ -0,0 +1,222 @@
|
||||
@charset "utf-8";
|
||||
body,
|
||||
div,
|
||||
dl,
|
||||
footer,
|
||||
html,
|
||||
img,
|
||||
menu,
|
||||
p,
|
||||
span {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
body {
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
-webkit-user-select: none;
|
||||
-webkit-touch-callout: none;
|
||||
background-color: #fffff6 !important;
|
||||
padding-bottom: 49px;
|
||||
}
|
||||
a,
|
||||
a:hover,
|
||||
a:visited {
|
||||
color: #999;
|
||||
text-decoration: none;
|
||||
outline: 0;
|
||||
}
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
@-webkit-keyframes pop-hide {
|
||||
0% {
|
||||
-webkit-transform: scale(0.8);
|
||||
opacity: 0;
|
||||
}
|
||||
2% {
|
||||
-webkit-transform: scale(1.1);
|
||||
opacity: 1;
|
||||
}
|
||||
6% {
|
||||
-webkit-transform: scale(1);
|
||||
}
|
||||
90% {
|
||||
-webkit-transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: scale(0.9);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes pop {
|
||||
0% {
|
||||
-webkit-transform: scale(0.8);
|
||||
opacity: 0;
|
||||
}
|
||||
40% {
|
||||
-webkit-transform: scale(1.1);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: scale(1);
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes slideup {
|
||||
0% {
|
||||
-webkit-transform: translateY(100%);
|
||||
}
|
||||
40% {
|
||||
-webkit-transform: translateY(-10%);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateY(0);
|
||||
}
|
||||
}
|
||||
.left {
|
||||
float: left;
|
||||
}
|
||||
.rel {
|
||||
position: relative;
|
||||
}
|
||||
a,
|
||||
a:visited {
|
||||
text-decoration: none;
|
||||
color: #333;
|
||||
}
|
||||
.text-icon {
|
||||
font-family: base_icon;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
font-style: normal;
|
||||
}
|
||||
.my-account {
|
||||
color: #333;
|
||||
position: relative;
|
||||
display: block;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
height: 6rem;
|
||||
}
|
||||
.account-bg {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
z-index: -1;
|
||||
}
|
||||
.account-bg img {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
.my-account > img {
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: 0;
|
||||
}
|
||||
.my-account .user-info {
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 70px;
|
||||
box-sizing: border-box;
|
||||
padding-left: 1.9em;
|
||||
font-size: 13px;
|
||||
color: #666;
|
||||
}
|
||||
.my-account .uname {
|
||||
font-size: 18px;
|
||||
color: #fff;
|
||||
margin-top: 0.1em;
|
||||
margin-bottom: 0.2em;
|
||||
text-shadow: 0.07em 0.07em #333;
|
||||
}
|
||||
.my-account .umoney {
|
||||
color: #fff;
|
||||
margin-bottom: 0.06em;
|
||||
text-shadow: 0.05em 0.05em #333;
|
||||
}
|
||||
.my-account .avatar_box {
|
||||
position: absolute;
|
||||
top: 1em;
|
||||
left: 1em;
|
||||
width: 5em;
|
||||
height: 5em;
|
||||
z-index: 1;
|
||||
border-radius: 100%;
|
||||
border: 2px solid #ffd44a;
|
||||
-moz-border-radius: 100%;
|
||||
-webkit-border-radius: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
.my-account .avater {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.phone {
|
||||
width: 105px;
|
||||
float: left;
|
||||
z-index: 100;
|
||||
}
|
||||
.set {
|
||||
position: absolute;
|
||||
width: 60px;
|
||||
right: 10px;
|
||||
top: 20px;
|
||||
z-index: 100;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
background-color: #fdaf00;
|
||||
text-align: center;
|
||||
margin-top: -7px;
|
||||
padding: 2px 2px;
|
||||
}
|
||||
.set a {
|
||||
color: #fff !important;
|
||||
}
|
||||
.dl01 {
|
||||
padding: 0 10px 10px;
|
||||
background-color: #fff;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.titleImg {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
margin-right: 10px;
|
||||
margin-top: 15px;
|
||||
float: left;
|
||||
}
|
||||
.dl02 {
|
||||
padding: 0 10px;
|
||||
background-color: #fff;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.dl02 a .menu {
|
||||
border-bottom: 1px solid #ffe9b7;
|
||||
background: url(../images/right.png) no-repeat right center;
|
||||
background-size: 10px;
|
||||
}
|
||||
.dl02 a .menu div {
|
||||
padding-top: 16px;
|
||||
font-size: 15px;
|
||||
color: #666;
|
||||
}
|
||||
.dl02 a .menu div.left {
|
||||
float: left;
|
||||
width: 40%;
|
||||
}
|
||||
.dl02 a .menu div.right {
|
||||
float: left;
|
||||
text-align: right;
|
||||
width: 45%;
|
||||
padding-right: 5px;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 484 B |
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-TW" class="beauty-scroll">
|
||||
<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, maximum-scale=1.0, user-scalable=0" />
|
||||
<link rel="icon" href="/admin/favicon.ico">
|
||||
<title>Admin</title>
|
||||
<!-- require cdn assets css -->
|
||||
|
||||
<link href="/admin/static/js/0.js" rel="prefetch"><link href="/admin/static/js/1.js" rel="prefetch"><link href="/admin/static/js/10.js" rel="prefetch"><link href="/admin/static/js/11.js" rel="prefetch"><link href="/admin/static/js/12.js" rel="prefetch"><link href="/admin/static/js/13.js" rel="prefetch"><link href="/admin/static/js/14.js" rel="prefetch"><link href="/admin/static/js/15.js" rel="prefetch"><link href="/admin/static/js/16.js" rel="prefetch"><link href="/admin/static/js/17.js" rel="prefetch"><link href="/admin/static/js/2.js" rel="prefetch"><link href="/admin/static/js/3.js" rel="prefetch"><link href="/admin/static/js/4.js" rel="prefetch"><link href="/admin/static/js/5.js" rel="prefetch"><link href="/admin/static/js/6.js" rel="prefetch"><link href="/admin/static/js/7.js" rel="prefetch"><link href="/admin/static/js/8.js" rel="prefetch"><link href="/admin/static/js/9.js" rel="prefetch"><link href="/admin/static/js/app.js" rel="preload" as="script"><link href="/admin/static/js/chunk-vendors.js" rel="preload" as="script"></head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but vue-antd-admin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="popContainer" class="beauty-scroll" style="height: 100vh; overflow-y: scroll">
|
||||
<div id="app"></div>
|
||||
</div>
|
||||
<!-- require cdn assets js -->
|
||||
|
||||
<!-- built files will be auto injected -->
|
||||
<script type="text/javascript" src="/admin/static/js/chunk-vendors.js"></script><script type="text/javascript" src="/admin/static/js/app.js"></script></body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 596 KiB |
|
After Width: | Height: | Size: 12 KiB |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,109 @@
|
||||
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[12],{
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/setting/config/Config.vue?vue&type=script&lang=js&":
|
||||
/*!*************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/setting/config/Config.vue?vue&type=script&lang=js& ***!
|
||||
\*************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regenerator-runtime/runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _services_site__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/services/site */ \"./src/services/site.js\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n// import ClassicEditor from '@ckeditor/ckeditor5-build-classic'\n// import CKEditor from '@ckeditor/ckeditor5-vue2'\n// import '@ckeditor/ckeditor5-build-classic/build/translations/zh'\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Setting',\n components: {// ckeditor: CKEditor.component\n },\n data: function data() {\n return {\n labelCol: {\n span: 5\n },\n wrapperCol: {\n span: 18\n },\n editorConfig: {\n width: '360px',\n height: '400px',\n toolbarCanCollapse: true,\n toolbarStartupExpanded: false,\n allowedContent: true,\n contentsCss: ['/css/normalize.css', '/css/style.css']\n },\n form: {\n shop_content: ''\n },\n rules: {}\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n return Object(_home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var res;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Object(_services_site__WEBPACK_IMPORTED_MODULE_2__[\"getSiteConfig\"])();\n\n case 2:\n res = _context.sent;\n\n if (res.code === 200) {\n _this.form.shop_content = res.data.shop_content;\n }\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n methods: {\n onSubmit: function onSubmit() {\n var _this2 = this;\n\n return Object(_home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n var res;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return Object(_services_site__WEBPACK_IMPORTED_MODULE_2__[\"setSiteConfig\"])(_this2.form);\n\n case 2:\n res = _context2.sent;\n\n if (!(res.code !== 200)) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt(\"return\", _this2.$message.error('操作失敗'));\n\n case 5:\n return _context2.abrupt(\"return\", _this2.$message.success('操作成功'));\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n }\n },\n computed: {\n layout: function layout() {\n return this.$store.state.setting.isMobile ? 'vertical' : 'horizontal';\n },\n formItemLayout: function formItemLayout() {\n console.log('aaaaaa', this.layout);\n return this.layout === 'horizontal' ? {\n labelCol: {\n span: 4\n },\n wrapperCol: {\n span: 14\n }\n } : {};\n },\n buttonItemLayout: function buttonItemLayout() {\n return this.layout === 'horizontal' ? {\n wrapperCol: {\n span: 14,\n offset: 4\n }\n } : {};\n }\n }\n});\n\n//# sourceURL=webpack:///./src/pages/setting/config/Config.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"718a2068-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/setting/config/Config.vue?vue&type=template&id=bfe38508&":
|
||||
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"718a2068-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/setting/config/Config.vue?vue&type=template&id=bfe38508& ***!
|
||||
\*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"a-card\",\n { attrs: { \"body-style\": { padding: \"24px 0\" }, bordered: false } },\n [\n _c(\n \"a-form-model\",\n _vm._b(\n {\n ref: \"ruleForm\",\n attrs: { layout: _vm.layout, model: _vm.form, rules: _vm.rules }\n },\n \"a-form-model\",\n _vm.formItemLayout,\n false\n ),\n [\n _c(\n \"a-form-model-item\",\n {\n ref: \"shop_content\",\n attrs: { label: \"立即購買內容\", prop: \"shop_content\" }\n },\n [\n _c(\"ckeditor\", {\n attrs: { config: _vm.editorConfig },\n model: {\n value: _vm.form.shop_content,\n callback: function($$v) {\n _vm.$set(_vm.form, \"shop_content\", $$v)\n },\n expression: \"form.shop_content\"\n }\n })\n ],\n 1\n ),\n _c(\n \"a-form-model-item\",\n { attrs: { \"wrapper-col\": _vm.buttonItemLayout.wrapperCol } },\n [\n _c(\n \"a-button\",\n { attrs: { type: \"primary\" }, on: { click: _vm.onSubmit } },\n [_vm._v(\" 修改 \")]\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/pages/setting/config/Config.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22718a2068-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/src/index.js?!./node_modules/less-loader/dist/cjs.js?!./node_modules/style-resources-loader/lib/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/setting/config/Config.vue?vue&type=style&index=0&lang=less&":
|
||||
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/src??ref--10-oneOf-1-2!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!./node_modules/style-resources-loader/lib??ref--10-oneOf-1-4!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/setting/config/Config.vue?vue&type=style&index=0&lang=less& ***!
|
||||
\***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.week-mode {\\n overflow: hidden;\\n -webkit-filter: invert(80%);\\n filter: invert(80%);\\n}\\n.beauty-scroll {\\n scrollbar-color: #13c2c2 #b5f5ec;\\n scrollbar-width: thin;\\n -ms-overflow-style: none;\\n position: relative;\\n}\\n.beauty-scroll::-webkit-scrollbar {\\n width: 3px;\\n height: 1px;\\n}\\n.beauty-scroll::-webkit-scrollbar-thumb {\\n border-radius: 3px;\\n background: #13c2c2;\\n}\\n.beauty-scroll::-webkit-scrollbar-track {\\n -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0);\\n border-radius: 3px;\\n background: #87e8de;\\n}\\n.split-right:not(:last-child) {\\n border-right: 1px solid rgba(98, 98, 98, 0.2);\\n}\\n.disabled {\\n cursor: not-allowed;\\n color: rgba(0, 0, 0, 0.25);\\n pointer-events: none;\\n}\\n/* Make clicks pass-through */\\n#nprogress {\\n pointer-events: none;\\n}\\n#nprogress .bar {\\n background: #13c2c2;\\n position: fixed;\\n z-index: 1031;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 2px;\\n}\\n/* Fancy blur effect */\\n#nprogress .peg {\\n display: block;\\n position: absolute;\\n right: 0px;\\n width: 100px;\\n height: 100%;\\n -webkit-box-shadow: 0 0 10px #13c2c2, 0 0 5px #13c2c2;\\n box-shadow: 0 0 10px #13c2c2, 0 0 5px #13c2c2;\\n opacity: 1;\\n -webkit-transform: rotate(3deg) translate(0px, -4px);\\n transform: rotate(3deg) translate(0px, -4px);\\n}\\n/* Remove these to get rid of the spinner */\\n#nprogress .spinner {\\n display: block;\\n position: fixed;\\n z-index: 1031;\\n top: 15px;\\n right: 15px;\\n}\\n#nprogress .spinner-icon {\\n width: 18px;\\n height: 18px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n border: solid 2px transparent;\\n border-top-color: #13c2c2;\\n border-left-color: #13c2c2;\\n border-radius: 50%;\\n -webkit-animation: nprogress-spinner 400ms linear infinite;\\n animation: nprogress-spinner 400ms linear infinite;\\n}\\n.nprogress-custom-parent {\\n overflow: hidden;\\n position: relative;\\n}\\n.nprogress-custom-parent #nprogress .spinner,\\n.nprogress-custom-parent #nprogress .bar {\\n position: absolute;\\n}\\n@-webkit-keyframes nprogress-spinner {\\n0% {\\n -webkit-transform: rotate(0deg);\\n}\\n100% {\\n -webkit-transform: rotate(360deg);\\n}\\n}\\n@keyframes nprogress-spinner {\\n0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n}\\n100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n}\\n}\\n.ck-editor__editable {\\n min-height: 400px;\\n}\\n.ck.ck-editor {\\n max-width: 375px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/pages/setting/config/Config.vue?./node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/src??ref--10-oneOf-1-2!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!./node_modules/style-resources-loader/lib??ref--10-oneOf-1-4!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/src/index.js?!./node_modules/less-loader/dist/cjs.js?!./node_modules/style-resources-loader/lib/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/setting/config/Config.vue?vue&type=style&index=0&lang=less&":
|
||||
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/vue-style-loader??ref--10-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/src??ref--10-oneOf-1-2!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!./node_modules/style-resources-loader/lib??ref--10-oneOf-1-4!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/setting/config/Config.vue?vue&type=style&index=0&lang=less& ***!
|
||||
\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/src??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/style-resources-loader/lib??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Config.vue?vue&type=style&index=0&lang=less& */ \"./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/src/index.js?!./node_modules/less-loader/dist/cjs.js?!./node_modules/style-resources-loader/lib/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/setting/config/Config.vue?vue&type=style&index=0&lang=less&\");\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5d8d3244\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/pages/setting/config/Config.vue?./node_modules/vue-style-loader??ref--10-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/src??ref--10-oneOf-1-2!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!./node_modules/style-resources-loader/lib??ref--10-oneOf-1-4!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/setting/config/Config.vue":
|
||||
/*!*********************************************!*\
|
||||
!*** ./src/pages/setting/config/Config.vue ***!
|
||||
\*********************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Config_vue_vue_type_template_id_bfe38508___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Config.vue?vue&type=template&id=bfe38508& */ \"./src/pages/setting/config/Config.vue?vue&type=template&id=bfe38508&\");\n/* harmony import */ var _Config_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Config.vue?vue&type=script&lang=js& */ \"./src/pages/setting/config/Config.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _Config_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Config.vue?vue&type=style&index=0&lang=less& */ \"./src/pages/setting/config/Config.vue?vue&type=style&index=0&lang=less&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _Config_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _Config_vue_vue_type_template_id_bfe38508___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _Config_vue_vue_type_template_id_bfe38508___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/pages/setting/config/Config.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/pages/setting/config/Config.vue?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/setting/config/Config.vue?vue&type=script&lang=js&":
|
||||
/*!**********************************************************************!*\
|
||||
!*** ./src/pages/setting/config/Config.vue?vue&type=script&lang=js& ***!
|
||||
\**********************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Config.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/setting/config/Config.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n//# sourceURL=webpack:///./src/pages/setting/config/Config.vue?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/setting/config/Config.vue?vue&type=style&index=0&lang=less&":
|
||||
/*!*******************************************************************************!*\
|
||||
!*** ./src/pages/setting/config/Config.vue?vue&type=style&index=0&lang=less& ***!
|
||||
\*******************************************************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_10_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_cli_service_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_style_resources_loader_lib_index_js_ref_10_oneOf_1_4_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--10-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/src??ref--10-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../node_modules/style-resources-loader/lib??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Config.vue?vue&type=style&index=0&lang=less& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/src/index.js?!./node_modules/less-loader/dist/cjs.js?!./node_modules/style-resources-loader/lib/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/setting/config/Config.vue?vue&type=style&index=0&lang=less&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_10_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_cli_service_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_style_resources_loader_lib_index_js_ref_10_oneOf_1_4_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_10_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_cli_service_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_style_resources_loader_lib_index_js_ref_10_oneOf_1_4_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_10_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_cli_service_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_style_resources_loader_lib_index_js_ref_10_oneOf_1_4_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_10_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_cli_service_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_style_resources_loader_lib_index_js_ref_10_oneOf_1_4_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_vue_style_loader_index_js_ref_10_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_cli_service_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_2_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_3_node_modules_style_resources_loader_lib_index_js_ref_10_oneOf_1_4_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/pages/setting/config/Config.vue?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/setting/config/Config.vue?vue&type=template&id=bfe38508&":
|
||||
/*!****************************************************************************!*\
|
||||
!*** ./src/pages/setting/config/Config.vue?vue&type=template&id=bfe38508& ***!
|
||||
\****************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_template_id_bfe38508___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"718a2068-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Config.vue?vue&type=template&id=bfe38508& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"718a2068-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/setting/config/Config.vue?vue&type=template&id=bfe38508&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_template_id_bfe38508___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Config_vue_vue_type_template_id_bfe38508___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/pages/setting/config/Config.vue?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/services/site.js":
|
||||
/*!******************************!*\
|
||||
!*** ./src/services/site.js ***!
|
||||
\******************************/
|
||||
/*! exports provided: getSiteBase, updateSiteBase, getSiteConfig, setSiteConfig, getSiteInfo, updateSiteInfo, getSiteGallery, deleteSiteGallery, getAgents */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSiteBase\", function() { return getSiteBase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateSiteBase\", function() { return updateSiteBase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSiteConfig\", function() { return getSiteConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setSiteConfig\", function() { return setSiteConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSiteInfo\", function() { return getSiteInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateSiteInfo\", function() { return updateSiteInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSiteGallery\", function() { return getSiteGallery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deleteSiteGallery\", function() { return deleteSiteGallery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAgents\", function() { return getAgents; });\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/utils/request */ \"./src/utils/request.js\");\n\nfunction getSiteBase() {\n return Object(_utils_request__WEBPACK_IMPORTED_MODULE_0__[\"ajax\"])('/site/getSiteBase');\n}\nfunction updateSiteBase(params) {\n return Object(_utils_request__WEBPACK_IMPORTED_MODULE_0__[\"ajax\"])('/site/updateSiteBase', params, 'post');\n}\nfunction getSiteConfig() {\n return Object(_utils_request__WEBPACK_IMPORTED_MODULE_0__[\"ajax\"])('/site/getSiteConfig');\n}\nfunction setSiteConfig(params) {\n return Object(_utils_request__WEBPACK_IMPORTED_MODULE_0__[\"ajax\"])('/site/setSiteConfig', params, 'post');\n}\nfunction getSiteInfo() {\n return Object(_utils_request__WEBPACK_IMPORTED_MODULE_0__[\"ajax\"])('/site/getSiteInfo');\n}\nfunction updateSiteInfo(params) {\n return Object(_utils_request__WEBPACK_IMPORTED_MODULE_0__[\"ajax\"])('/site/updateSiteInfo', params, 'post');\n}\nfunction getSiteGallery() {\n return Object(_utils_request__WEBPACK_IMPORTED_MODULE_0__[\"ajax\"])('/site/getSiteGallery');\n}\nfunction deleteSiteGallery(params) {\n return Object(_utils_request__WEBPACK_IMPORTED_MODULE_0__[\"ajax\"])('/site/deleteGallery', params, 'get');\n}\nfunction getAgents() {\n return Object(_utils_request__WEBPACK_IMPORTED_MODULE_0__[\"ajax\"])('/site/getAgents');\n}\n\n//# sourceURL=webpack:///./src/services/site.js?");
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
@ -0,0 +1,63 @@
|
||||
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[13],{
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/500.vue?vue&type=script&lang=js&":
|
||||
/*!*****************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/exception/500.vue?vue&type=script&lang=js& ***!
|
||||
\*****************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/objectSpread2 */ \"./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\");\n/* harmony import */ var _components_exception_ExceptionPage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/components/exception/ExceptionPage */ \"./src/components/exception/ExceptionPage.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Exp500',\n components: {\n ExceptionPage: _components_exception_ExceptionPage__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n computed: Object(_home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, Object(vuex__WEBPACK_IMPORTED_MODULE_2__[\"mapState\"])('setting', ['pageMinHeight'])), {}, {\n minHeight: function minHeight() {\n return this.pageMinHeight ? this.pageMinHeight + 'px' : '100vh';\n }\n })\n});\n\n//# sourceURL=webpack:///./src/pages/exception/500.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"718a2068-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/500.vue?vue&type=template&id=940de63e&scoped=true&":
|
||||
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"718a2068-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/exception/500.vue?vue&type=template&id=940de63e&scoped=true& ***!
|
||||
\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"exception-page\", {\n style: \"min-height: \" + _vm.minHeight,\n attrs: { \"home-route\": \"/login\", type: \"500\" }\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/pages/exception/500.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22718a2068-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/exception/500.vue":
|
||||
/*!*************************************!*\
|
||||
!*** ./src/pages/exception/500.vue ***!
|
||||
\*************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _500_vue_vue_type_template_id_940de63e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./500.vue?vue&type=template&id=940de63e&scoped=true& */ \"./src/pages/exception/500.vue?vue&type=template&id=940de63e&scoped=true&\");\n/* harmony import */ var _500_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./500.vue?vue&type=script&lang=js& */ \"./src/pages/exception/500.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _500_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _500_vue_vue_type_template_id_940de63e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _500_vue_vue_type_template_id_940de63e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"940de63e\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/pages/exception/500.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/pages/exception/500.vue?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/exception/500.vue?vue&type=script&lang=js&":
|
||||
/*!**************************************************************!*\
|
||||
!*** ./src/pages/exception/500.vue?vue&type=script&lang=js& ***!
|
||||
\**************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_500_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./500.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/500.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_500_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n//# sourceURL=webpack:///./src/pages/exception/500.vue?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/exception/500.vue?vue&type=template&id=940de63e&scoped=true&":
|
||||
/*!********************************************************************************!*\
|
||||
!*** ./src/pages/exception/500.vue?vue&type=template&id=940de63e&scoped=true& ***!
|
||||
\********************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_500_vue_vue_type_template_id_940de63e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"718a2068-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./500.vue?vue&type=template&id=940de63e&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"718a2068-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/500.vue?vue&type=template&id=940de63e&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_500_vue_vue_type_template_id_940de63e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_500_vue_vue_type_template_id_940de63e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/pages/exception/500.vue?");
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,15 @@
|
||||
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[16],{
|
||||
|
||||
/***/ "./src/layouts/tabs/index.js":
|
||||
/*!***********************************!*\
|
||||
!*** ./src/layouts/tabs/index.js ***!
|
||||
\***********************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _TabsView__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TabsView */ \"./src/layouts/tabs/TabsView.vue\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_TabsView__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack:///./src/layouts/tabs/index.js?");
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
@ -0,0 +1,15 @@
|
||||
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[17],{
|
||||
|
||||
/***/ "./src/pages/dashboard/index.js":
|
||||
/*!**************************************!*\
|
||||
!*** ./src/pages/dashboard/index.js ***!
|
||||
\**************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Dashboard_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Dashboard.vue */ \"./src/pages/dashboard/Dashboard.vue\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_Dashboard_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack:///./src/pages/dashboard/index.js?");
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,63 @@
|
||||
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[3],{
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/403.vue?vue&type=script&lang=js&":
|
||||
/*!*****************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/exception/403.vue?vue&type=script&lang=js& ***!
|
||||
\*****************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/objectSpread2 */ \"./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\");\n/* harmony import */ var _components_exception_ExceptionPage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/components/exception/ExceptionPage */ \"./src/components/exception/ExceptionPage.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Exp403',\n components: {\n ExceptionPage: _components_exception_ExceptionPage__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n computed: Object(_home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, Object(vuex__WEBPACK_IMPORTED_MODULE_2__[\"mapState\"])('setting', ['pageMinHeight'])), {}, {\n minHeight: function minHeight() {\n return this.pageMinHeight ? this.pageMinHeight + 'px' : '100vh';\n }\n })\n});\n\n//# sourceURL=webpack:///./src/pages/exception/403.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"718a2068-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/403.vue?vue&type=template&id=fd85cfba&scoped=true&":
|
||||
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"718a2068-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/exception/403.vue?vue&type=template&id=fd85cfba&scoped=true& ***!
|
||||
\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"exception-page\", {\n style: \"min-height: \" + _vm.minHeight,\n attrs: { \"home-route\": \"/login\", type: \"403\" }\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/pages/exception/403.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22718a2068-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/exception/403.vue":
|
||||
/*!*************************************!*\
|
||||
!*** ./src/pages/exception/403.vue ***!
|
||||
\*************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _403_vue_vue_type_template_id_fd85cfba_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./403.vue?vue&type=template&id=fd85cfba&scoped=true& */ \"./src/pages/exception/403.vue?vue&type=template&id=fd85cfba&scoped=true&\");\n/* harmony import */ var _403_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./403.vue?vue&type=script&lang=js& */ \"./src/pages/exception/403.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _403_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _403_vue_vue_type_template_id_fd85cfba_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _403_vue_vue_type_template_id_fd85cfba_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"fd85cfba\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/pages/exception/403.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/pages/exception/403.vue?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/exception/403.vue?vue&type=script&lang=js&":
|
||||
/*!**************************************************************!*\
|
||||
!*** ./src/pages/exception/403.vue?vue&type=script&lang=js& ***!
|
||||
\**************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_403_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./403.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/403.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_403_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n//# sourceURL=webpack:///./src/pages/exception/403.vue?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/exception/403.vue?vue&type=template&id=fd85cfba&scoped=true&":
|
||||
/*!********************************************************************************!*\
|
||||
!*** ./src/pages/exception/403.vue?vue&type=template&id=fd85cfba&scoped=true& ***!
|
||||
\********************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_403_vue_vue_type_template_id_fd85cfba_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"718a2068-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./403.vue?vue&type=template&id=fd85cfba&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"718a2068-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/403.vue?vue&type=template&id=fd85cfba&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_403_vue_vue_type_template_id_fd85cfba_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_403_vue_vue_type_template_id_fd85cfba_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/pages/exception/403.vue?");
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
@ -0,0 +1,63 @@
|
||||
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[4],{
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/404.vue?vue&type=script&lang=js&":
|
||||
/*!*****************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/exception/404.vue?vue&type=script&lang=js& ***!
|
||||
\*****************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/objectSpread2 */ \"./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\");\n/* harmony import */ var _components_exception_ExceptionPage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/components/exception/ExceptionPage */ \"./src/components/exception/ExceptionPage.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'Exp404',\n components: {\n ExceptionPage: _components_exception_ExceptionPage__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n computed: Object(_home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_home_wayne_project_stage_slashcard_admin_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, Object(vuex__WEBPACK_IMPORTED_MODULE_2__[\"mapState\"])('setting', ['pageMinHeight'])), {}, {\n minHeight: function minHeight() {\n return this.pageMinHeight ? this.pageMinHeight + 'px' : '100vh';\n }\n })\n});\n\n//# sourceURL=webpack:///./src/pages/exception/404.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"718a2068-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/404.vue?vue&type=template&id=fd69a0b8&scoped=true&":
|
||||
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"718a2068-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/exception/404.vue?vue&type=template&id=fd69a0b8&scoped=true& ***!
|
||||
\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"exception-page\", {\n style: \"min-height: \" + _vm.minHeight,\n attrs: { \"home-route\": \"/login\", type: \"404\" }\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/pages/exception/404.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22718a2068-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/exception/404.vue":
|
||||
/*!*************************************!*\
|
||||
!*** ./src/pages/exception/404.vue ***!
|
||||
\*************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _404_vue_vue_type_template_id_fd69a0b8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./404.vue?vue&type=template&id=fd69a0b8&scoped=true& */ \"./src/pages/exception/404.vue?vue&type=template&id=fd69a0b8&scoped=true&\");\n/* harmony import */ var _404_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./404.vue?vue&type=script&lang=js& */ \"./src/pages/exception/404.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _404_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _404_vue_vue_type_template_id_fd69a0b8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _404_vue_vue_type_template_id_fd69a0b8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"fd69a0b8\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/pages/exception/404.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/pages/exception/404.vue?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/exception/404.vue?vue&type=script&lang=js&":
|
||||
/*!**************************************************************!*\
|
||||
!*** ./src/pages/exception/404.vue?vue&type=script&lang=js& ***!
|
||||
\**************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./404.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/404.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n//# sourceURL=webpack:///./src/pages/exception/404.vue?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/exception/404.vue?vue&type=template&id=fd69a0b8&scoped=true&":
|
||||
/*!********************************************************************************!*\
|
||||
!*** ./src/pages/exception/404.vue?vue&type=template&id=fd69a0b8&scoped=true& ***!
|
||||
\********************************************************************************/
|
||||
/*! exports provided: render, staticRenderFns */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_fd69a0b8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"718a2068-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./404.vue?vue&type=template&id=fd69a0b8&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"718a2068-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/pages/exception/404.vue?vue&type=template&id=fd69a0b8&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_fd69a0b8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_718a2068_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_fd69a0b8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/pages/exception/404.vue?");
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue