This commit is contained in:
2025-12-24 16:59:05 +08:00
parent b52a51c09b
commit b68946fe79
218 changed files with 10790 additions and 3878 deletions
@@ -85,8 +85,8 @@ class ArchivesController extends Crud
$result = $this->model->save($params);
Db::commit();
} catch (Exception $e) {
Db::rollback();
return $this->fail($e->getMessage());
Db::rollback();
return $this->fail($e->getMessage());
}
if ($result === false) {
return $this->fail(__('No rows were inserted'));
@@ -0,0 +1,168 @@
<?php
namespace plugin\admin\app\controller;
use support\Request;
use support\Response;
use support\think\Db;
use taoser\facade\Validate;
use Shopwwi\WebmanFilesystem\Facade\Storage;
/**
* 附件管理
*
* @icon fa fa-circle-o
*/
class AttachController extends Crud
{
/**
* @var \app\model\Files
*/
protected $model = null;
/**
* 构造函数
* @return void
*/
function __construct()
{
$this->model = new \app\model\Files();
}
function list(Request $request)
{
return view('', [
]);
}
function feupload(Request $request): Response
{
$user = ['id'=>admin_id()];
$savePath = $request->post('savePath','files');
$validate = Validate::rule('savePath', 'alphaNum');
$data = ['savePath' => $savePath];
if (!$validate->check($data)) {
return $this->fail( '参数错误:'.$validate->getError());
}
$savePath = trim($savePath,'/');
$savePath = 'upload/'.$savePath.'/'.$user['id'];
$maxSize = 1024*1024*100; //100M
//多文件上传
$files = $request->file();
try {
$result = Storage::adapter('public')
->path($savePath)
->size(1024*1024*10)
->extYes(['image/jpeg','image/png'])
->uploads($files,0,$maxSize,false);
$save_datas = [];
foreach($result as $k=>$fileinfo){
$save_datas[] = [
'user_id' => $user['id'],
'title' => $fileinfo->origin_name,
'path' => $fileinfo->file_name,
'size' => $fileinfo->size,
'mime_type' => $fileinfo->mime_type,
'extension' => $fileinfo->extension,
'height' => $fileinfo->file_height,
'width' => $fileinfo->file_width,
'sha1' => sha1_file(public_path($fileinfo->file_name)),
'use_count' => 0,
];
}
\app\model\Files::saveAll($save_datas);
return $this->success(__('successful'),[
'link' => $result[0]['path'],
]);
}catch (\Exception $e){
return $this->fail($e->getMessage());
}
}
function upload(Request $request): Response
{
log_alert(0);
$savePath = $request->post('savePath','files');
$validate = Validate::rule('savePath', 'alphaNum');
$data = ['savePath' => $savePath];
log_alert($data);
if (!$validate->check($data)) {
cp($validate->getError());
return $this->fail( '参数错误:'.$validate->getError());
}
log_alert('1');
$file = current($request->file());
if (!$file || !$file->isValid()) {
return $this->fail('未找到文件');
}
log_alert('2');
try {
$data = $this->base($request, $savePath);
} catch (\Exception $e) {
log_alert($e->getMessage());
//throw $th;
}
log_alert('3');
//cp($data);
return $this->success( '上传成功', [
'url' => $data['realpath'],
'name' => $data['name'],
'fullurl' => $data['url'],
'size' => $data['size'],
'url1' => $data['url'],
]);
}
/**
* 获取上传数据
* @param Request $request
* @param $savePath 保存位置
* @return array
* @throws \Exception
*/
protected function base(Request $request, $savePath): array
{
$user = ['id'=>admin_id()];
// 适配器 local默认是存储在runtime目录下 public默认是存储在public目录下
// 可访问的静态文件建议public
// 默认适配器是local
//Storage::adapter('public');
$savePath = trim($savePath,'/');
$savePath = 'upload/'.$savePath;
cp($savePath);
$file = current($request->file());
cp($file);
$mimetype = explode(',',Config('site.upload_mimetype'));
$maxsize = Config('site.upload_maxsize')*1024*1024;
$result = Storage::adapter('public')
->path($savePath)
->size($maxsize)
->extYes($mimetype)
->upload($file);
cp($result);
$save_datas = [
'user_id' => $user['id'],
'category' => 'default',
'title' => $result->origin_name,
'path' => $result->file_name,
'size' => $result->size,
'mime_type' => $result->mime_type,
'extension' => $result->extension,
'height' => $result->file_height,
'width' => $result->file_width,
'sha1' => sha1_file(public_path($result->file_name)),
'use_count' => 0,
];
(new \app\model\Files)->save($save_datas);
return [
'code' => 0,
'url' => $result->file_url,
'name' => $result->origin_name,
'realpath' => '/'.$result->file_name,
'size' => $result->size,
'mime_type' => $result->mime_type,
'image_with'=> $result->file_width,
'image_height' => $result->file_height,
'ext' => $result->extension,
];
}
}
@@ -1,127 +0,0 @@
<?php
namespace plugin\admin\app\controller;
use support\Request;
use support\Response;
use support\think\Db;
use Shopwwi\WebmanFilesystem\Facade\Storage;
/**
* 附件管理
*
* @icon fa fa-circle-o
*/
class AttachmentController extends Crud
{
function list(Request $request)
{
return view('', [
]);
}
function feupload(Request $request): Response
{
$file = current($request->file());
if (!$file || !$file->isValid()) {
return $this->fail('未找到文件');
}
$data = $this->base($request, '/upload/files/' . date('Ymd'));
return json([
'link' => $data['url'],
]);
}
function upload(Request $request): Response
{
$file = current($request->file());
if (!$file || !$file->isValid()) {
return $this->fail('未找到文件');
}
$data = $this->base($request, '/upload/files/' . date('Ymd'));
//cp($data);
return $this->json(0, '上传成功', [
'url' => $data['realpath'],
'name' => $data['name'],
'fullurl' => $data['url'],
'size' => $data['size'],
]);
}
/**
* 获取上传数据
* @param Request $request
* @param $relative_dir
* @return array
* @throws \Exception
*/
protected function base(Request $request, $relative_dir): array
{
// 适配器 local默认是存储在runtime目录下 public默认是存储在public目录下
// 可访问的静态文件建议public
// 默认适配器是local
//Storage::adapter('public');
$relative_dir = ltrim($relative_dir, '\\/');
$file = current($request->file());
try {
if (!$file || !$file->isValid()) {
throw new \support\exception\BusinessException('未找到上传文件', 400);
}
$ext = $file->getUploadExtension() ?: null;
$mime_type = $file->getUploadMimeType();
$file_name = $file->getUploadName();
$file_size = $file->getSize();
if (!$ext && $file_name === 'blob') {
[$___image, $ext] = explode('/', $mime_type);
unset($___image);
}
$ext = strtolower($ext);
$ext_forbidden_map = ['php', 'php3', 'php5', 'css', 'js', 'html', 'htm', 'asp', 'jsp'];
if (in_array($ext, $ext_forbidden_map)) {
throw new \support\exception\BusinessException('不支持该格式的文件上传', 400);
}
$mimetype = explode(',',Config('site.mimetype'));
$result = Storage::adapter('public')
->path($relative_dir)
->size(1024 * 1024 * 5)
->extYes($mimetype)
//->extNo(['image/png'])
->upload($file);
} catch (\Exception $e) {
return [
'code' => 1,
'msg' => $e->getMessage()
];
}
// cp($result);
// stdClass Object
// (
// [adapter] => public
// [origin_name] => OIP-C (1).jpg
// [file_name] => upload/files/20250527/eb14c1bfe6e7a22415bbbb30dfe90ba1_6834f0974db76.jpg
// [storage_key] => eb14c1bfe6e7a22415bbbb30dfe90ba1_6834f0974db76
// [file_url] => //luru.oss-ap-southeast-1.aliyuncs.com/upload/files/20250527/eb14c1bfe6e7a22415bbbb30dfe90ba1_6834f0974db76.jpg
// [size] => 15370
// [mime_type] => image/jpeg
// [extension] => jpg
// [file_height] => 474
// [file_width] => 474
// )
return [
'code' => 0,
'url' => $result->file_url,
'name' => $result->origin_name,
'realpath' => '/'.$result->file_name,
'size' => $result->size,
'mime_type' => $result->mime_type,
'image_with' => $result->file_width,
'image_height' => $result->file_height,
'ext' => $result->extension,
];
}
}
@@ -0,0 +1,160 @@
<?php
namespace plugin\admin\app\controller;
use support\Request;
use support\Response;
use support\think\Db;
use taoser\facade\Validate;
use Shopwwi\WebmanFilesystem\Facade\Storage;
/**
* 附件管理
*
* @icon fa fa-circle-o
*/
class FilesController extends Crud
{
/**
* @var \app\model\Files
*/
protected $model = null;
/**
* 构造函数
* @return void
*/
function __construct()
{
$this->model = new \app\model\Files();
}
function list(Request $request)
{
return view('', [
]);
}
function feupload(Request $request): Response
{
$user = ['id'=>admin_id()];
$savePath = $request->post('savePath','files');
$validate = Validate::rule('savePath', 'alphaNum');
$data = ['savePath' => $savePath];
if (!$validate->check($data)) {
return $this->fail( '参数错误:'.$validate->getError());
}
$savePath = trim($savePath,'/');
$savePath = 'upload/'.$savePath.'/'.$user['id'];
$maxSize = 1024*1024*100; //100M
//多文件上传
$files = $request->file();
try {
$result = Storage::adapter('public')
->path($savePath)
->size(1024*1024*10)
->extYes(['image/jpeg','image/png'])
->uploads($files,0,$maxSize,false);
$save_datas = [];
foreach($result as $k=>$fileinfo){
$save_datas[] = [
'user_id' => $user['id'],
'title' => $fileinfo->origin_name,
'path' => $fileinfo->file_name,
'size' => $fileinfo->size,
'mime_type' => $fileinfo->mime_type,
'extension' => $fileinfo->extension,
'height' => $fileinfo->file_height,
'width' => $fileinfo->file_width,
'sha1' => sha1_file(public_path($fileinfo->file_name)),
'use_count' => 0,
];
}
\app\model\Files::saveAll($save_datas);
return $this->success(__('successful'),[
'link' => $result[0]['path'],
]);
}catch (\Exception $e){
return $this->fail($e->getMessage());
}
}
function upload(Request $request): Response
{
cp('0');
$savePath = $request->post('savePath','files');
$validate = Validate::rule('savePath', 'alphaNum');
$data = ['savePath' => $savePath];
cp($data);
if (!$validate->check($data)) {
cp($validate->getError());
return $this->fail( '参数错误:'.$validate->getError());
}
cp('1');
$file = current($request->file());
if (!$file || !$file->isValid()) {
return $this->fail('未找到文件');
}
cp('2');
$data = $this->base($request, $savePath);
cp('3');
//cp($data);
return $this->success( '上传成功', [
'url' => $data['realpath'],
'name' => $data['name'],
'fullurl' => $data['url'],
'size' => $data['size'],
'url1' => $data['url'],
]);
}
/**
* 获取上传数据
* @param Request $request
* @param $savePath 保存位置
* @return array
* @throws \Exception
*/
protected function base(Request $request, $savePath): array
{
$user = ['id'=>admin_id()];
// 适配器 local默认是存储在runtime目录下 public默认是存储在public目录下
// 可访问的静态文件建议public
// 默认适配器是local
//Storage::adapter('public');
$savePath = trim($savePath,'/');
$savePath = 'upload/'.$savePath;
$file = current($request->file());
$mimetype = explode(',',Config('site.upload_mimetype'));
$maxsize = Config('site.upload_maxsize')*1024*1024;
$result = Storage::adapter('public')
->path($savePath)
->size($maxsize)
->extYes($mimetype)
->upload($file);
$save_datas = [
'user_id' => $user['id'],
'category' => 'default',
'title' => $result->origin_name,
'path' => $result->file_name,
'size' => $result->size,
'mime_type' => $result->mime_type,
'extension' => $result->extension,
'height' => $result->file_height,
'width' => $result->file_width,
'sha1' => sha1_file(public_path($result->file_name)),
'use_count' => 0,
];
(new \app\model\Files)->save($save_datas);
return [
'code' => 0,
'url' => $result->file_url,
'name' => $result->origin_name,
'realpath' => '/'.$result->file_name,
'size' => $result->size,
'mime_type' => $result->mime_type,
'image_with'=> $result->file_width,
'image_height' => $result->file_height,
'ext' => $result->extension,
];
}
}
@@ -37,7 +37,7 @@ class IndexController extends Base
$admin = admin();
if (!$admin) {
$title = config('site.name') ?? 'admin';
$logo = cdnurl(config('site.admin_logo') ?? '/app/admin/images/logo.png');
$logo = cdnurl(config('site.admin_logo') ?? admin_path().'/images/logo.png');
return view('account/login',['logo'=>$logo,'title'=>$title]);
}
//缓存
@@ -8,7 +8,7 @@ use support\Request;
use support\Response;
/**
* 用户管理
* 团队管理
*/
class TeamController extends Crud
{
@@ -0,0 +1,34 @@
<?php
namespace plugin\admin\app\controller;
use plugin\admin\app\controller\Crud;
use app\model\Thali;
use support\exception\BusinessException;
use support\Request;
use support\Response;
/**
* 套餐管理
*/
class ThaliController extends Crud
{
/**
* @var Thali
*/
protected $model = null;
/**
* 构造函数
* @return void
*/
function __construct()
{
$this->model = new Thali();
$statusList = $this->model->getStatusList();
$this->assign("statusList", $statusList);
$this->assignconfig("statusList", $statusList);
}
}
@@ -33,7 +33,7 @@ class UserController extends Crud
['value'=>1,'label'=>"内部用户"],
['value'=>2,'label'=>"联盟商"],
];
$roleList = \app\model\UserRole::order('id','desc')->column('name as label,id as value');
$roleList = \app\model\UserRole::order('id','asc')->column('name as label,id as value');
$this->assign('groupList',$groupList);
$this->assignconfig('groupList',$groupList);
$this->assign('roleList',$roleList);
@@ -0,0 +1,43 @@
<?php
namespace plugin\admin\app\controller;
use app\model\User;
use plugin\admin\app\controller\Crud;
use support\exception\BusinessException;
use support\Request;
use support\Response;
use Throwable;
/**
* 版本管理
*/
class VersionController extends Crud
{
/**
* @var \app\model\Version
*/
protected $model = null;
/**
* 构造函数
* @return void
*/
function __construct()
{
$this->model = new \app\model\Version();
$osList = $this->model->getOsList();
$this->assign("osList", $osList);
$this->assignconfig("osList", $osList);
$forceList = $this->model->getForceList();
$this->assign("forceList", $forceList);
$this->assignconfig("forceList", $forceList);
$typeList = $this->model->getTypeList();
$this->assign("typeList", $typeList);
$this->assignconfig("typeList", $typeList);
$statusList = $this->model->getStatusList();
$this->assign("statusList", $statusList);
$this->assignconfig("statusList", $statusList);
}
}
+1 -1
View File
@@ -23,7 +23,7 @@ function url($path='',$args=[]){
}
$path = $path.'?'.$args;
}
return '/app/admin/'.$path;
return admin_path().'/'.$path;
}
/**
* 当前管理员id
@@ -31,8 +31,8 @@ class AccessControl implements MiddlewareInterface
$response = json(['code' => $code, 'msg' => $msg, 'data' => []]);
} else {
if ($code === 401) {
$response = response('<script> if (self !== top) { parent.location = "/app/admin"; }</script>',401);
//$response = response('',301, ['Location'=> '/app/admin/index/index']);
$response = response('<script> if (self !== top) { parent.location = "'.admin_path().'"; }</script>',401);
//$response = response('',301, ['Location'=> admin_path().'/index/index']);
} else {
$request->app = '';
$request->plugin = 'admin';
+2 -1
View File
@@ -26,7 +26,8 @@ class Config implements MiddlewareInterface
$config['debug'] = config('app.debug');
$config['controller'] = $request->controller_name;
$config['action'] = $request->action_name;
$config['moduleurl'] = '/app/admin';
$config['moduleurl'] = admin_path();
$config['admin_path'] = admin_path();
$request->_view_vars = array_merge((array) $request->_view_vars,[
'user' => session('admin'),
'config' => $config
+2 -2
View File
@@ -47,8 +47,8 @@
<input id="c-avatar" class="form-control" size="50" name="avatar" type="hidden" value="{$row.avatar|null}" data-tip="头像">
<ul class="list-inline clearfix lyear-uploads-pic" data-template="preview" id="p-avatar">
<li nodelete class="col-xs-4 col-sm-3 col-md-2">
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.upload.avatar" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.upload.attachment" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.files.avatar" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.files.list" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false" data-preview-id="p-avatar"></a>
</li>
</ul>
</div>
+1 -1
View File
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
+1 -1
View File
@@ -1,7 +1,7 @@
{layout name="layout"}
<div class="card">
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="/app/admin/Admin/insert" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:admin_path()}/Admin/insert" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
+2 -2
View File
@@ -65,8 +65,8 @@
<input id="c-avatar" class="form-control" size="50" name="avatar" type="hidden" value="{$row.avatar|null}" data-tip="杀杀杀">
<ul class="list-inline clearfix lyear-uploads-pic" data-template="preview" id="p-avatar">
<li nodelete class="col-xs-4 col-sm-3 col-md-2">
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.upload.avatar" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.upload.attachment" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.files.upload" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.files.list" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false" data-preview-id="p-avatar"></a>
</li>
</ul>
</div>
+1 -1
View File
@@ -1,7 +1,7 @@
{layout name="layout"}
<div class="card">
<div class="toolbar toolbar-btn-action">
<button id="btn_add" type="button" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" permission="app.admin.role.insert">
<button id="btn_add" type="button" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" permission="app.admin.role.insert" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</button>
<button id="btn_add" type="button" class="btn btn-info m-r-5" permission="app.admin.role.update">
+2 -2
View File
@@ -1,8 +1,8 @@
{layout name="layout"}
<link href="/app/admin/libs/jquery-treegrid/jquery.treegrid.min.css" rel="stylesheet" />
<link href="{:admin_path()}/libs/jquery-treegrid/jquery.treegrid.min.css" rel="stylesheet" />
<div class="card">
<div class="toolbar toolbar-btn-action">
<button type="button" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" permission="app.admin.adminrule.insert">
<button type="button" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" permission="app.admin.adminrule.insert" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</button>
<button id="btn_delete" type="button" class="btn btn-danger m-r-5 btn-del" permission="app.admin.adminrule.delete">
+1 -2
View File
@@ -83,5 +83,4 @@
</div>
</form>
</div>
</div>
{include file="common/chooseicontpl" /}
</div>
+1 -1
View File
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
+2 -2
View File
@@ -103,7 +103,7 @@
<ul class="list-inline clearfix lyear-uploads-pic" data-template="preview" id="p-image">
<li nodelete class="col-xs-4 col-sm-3 col-md-2">
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.upload.image" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.upload.attachment" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.files.list" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
</li>
</ul>
</div>
@@ -115,7 +115,7 @@
<ul class="list-inline clearfix lyear-uploads-pic" data-template="preview" id="p-images">
<li nodelete class="col-xs-4 col-sm-3 col-md-2">
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.upload.images" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-images" data-mimetype="image/*" data-multiple="false" data-preview-id="p-images"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.upload.attachment" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-images" data-mimetype="image/*" data-multiple="false" data-preview-id="p-images"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.files.list" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-images" data-mimetype="image/*" data-multiple="false" data-preview-id="p-images"></a>
</li>
</ul>
</div>
+1 -1
View File
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
+1 -1
View File
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
@@ -1,44 +0,0 @@
<style>
#chooseicon {
margin:10px;
}
#chooseicon ul {
margin:5px 0 0 0;
}
#chooseicon ul li{
width:41px;height:42px;
line-height:42px;
border:1px solid #efefef;
padding:1px;
margin:1px;
text-align: center;
font-size:18px;
}
#chooseicon ul li:hover{
border:1px solid #2c3e50;
cursor:pointer;
}
</style>
<script id="chooseicontpl" type="text/html">
<div id="chooseicon">
<div>
<form onsubmit="return false;">
<div class="input-group input-groupp-md">
<div class="input-group-addon">搜索图标</div>
<input class="js-icon-search form-control" type="text" placeholder="">
</div>
</form>
</div>
<div>
<ul class="list-inline">
<% for(var i=0; i<iconlist.length; i++){ %>
<li data-font="<%=iconlist[i]%>" data-toggle="tooltip" title="<%=iconlist[i]%>">
<i class="mdi mdi-<%=iconlist[i]%>"></i>
</li>
<% } %>
</ul>
</div>
</div>
</script>
+2 -2
View File
@@ -40,12 +40,12 @@
<ul class="list-inline clearfix lyear-uploads-pic" data-template="preview" id="p-avatar">
<li nodelete class="col-xs-4 col-sm-3 col-md-2">
<a class="pic-add faupload" style="height: auto;border: 0;"
permission="app.admin.upload.avatar" id="add-pic-btn" href="#!" title="点击上传"
permission="app.admin.files.upload" id="add-pic-btn" href="#!" title="点击上传"
data-input-id="c-avatar"
data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp"
data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;"
permission="app.admin.upload.attachment" id="choose-pic-btn" href="#!" title="选择文件"
permission="app.admin.files.list" id="choose-pic-btn" href="#!" title="选择文件"
data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false"
data-preview-id="p-avatar"></a>
</li>
+1 -1
View File
@@ -64,7 +64,7 @@
<label class="control-label col-xs-12 col-sm-2">favisible</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="favisible" id="favisible" value="{$row.favisible|null}"
data-favisible="is_recharge_open=1"
data-favisible="is_recharge_open==1"
data-target="form-group"
autocomplete="off" class="form-control">
</div>
+19
View File
@@ -0,0 +1,19 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 faupload">
<span class="mdi mdi-upload" aria-hidden="true"></span>上传
</a>
<a id="btn_delete" class="btn btn-danger btn-del btn-disabled disabled">
<span class="mdi mdi-window-close" aria-hidden="true"></span>删除
</a>
</div>
<!-- 数据表格 -->
<div class="card">
<div class="card-body">
<!-- {1volist name="::::::Config('site.attachment_category')" id="cvo"}
<option value="{1$key}" {1if $row.category==$key}selected{1/if}>{1$cvo}</option>
{2volist1} -->
<table id="table"></table>
</div>
</div>
+11
View File
@@ -0,0 +1,11 @@
{layout name="layout"}
<!-- 数据表格 -->
<div class="card">
<div class="toolbar-btn-action layer-footer">
<button class="btn btn-primary m-r-5">确定</button>
<button class="btn btn-success m-r-5">关闭</button>
</div>
<div class="card-body">
<table id="table" ></table>
</div>
</div>
+86
View File
@@ -0,0 +1,86 @@
{layout name="layout"}
<div class="card">
<div class="card-body">
<form class="form-horizontal" action="__SELF__" method="post">
<input type="hidden" name="id" value="{$row.id|null}" />
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">类别</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<select name="category" class="form-control" value="{$row.category}">
{volist name=":Config('site.attachment_category')" id="cvo"}
<option value="{$key}" {if $row.category==$key}selected{/if}>{$cvo}</option>
{/volist}
</select>
</div>
</div>
{if request()->action == 'insert'}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">文件</label>
<div class="col-xs-12 col-sm-8 col-md-6">
{:buildFileInput('file',$row['file'],'image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp,text/plain',0,false)}
</div>
</div>
{else /}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">名称</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input class="form-control" value="{$row.title}" name="title" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">地址</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input class="form-control" value="{$row.path}" name="path" readonly />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">SHA</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input class="form-control" value="{$row.sha1}" name="sha1" readonly />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">文件大小</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input class="form-control" value="{$row.size}" name="size" readonly />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">Mime</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input class="form-control" value="{$row.mime_type}" name="mime_type" readonly />
</div>
</div>
{if in_array('asd',['jpg','png','gif'])}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">图片大小</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input class="form-control" value="{$row.width}X{$row.height}" readonly />
</div>
</div>
{/if}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">扩展名</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input class="form-control" value="{$row.extension}" name="extension" readonly />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">上传时间</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input class="form-control" value="{$row.created_at}" name="created_at" readonly />
</div>
</div>
{/if}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8 col-md-6 layer-footer">
<button type="submit" class="btn btn-primary m-r-5">提交</button>
<button type="reset" class="btn btn-md m-r-5">重置</button>
</div>
</div>
</form>
</div>
</div>
{include file="common/file_preview" id="preview"/}
+1 -1
View File
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
+1 -1
View File
@@ -16,7 +16,7 @@
<ul class="list-inline clearfix lyear-uploads-pic" data-template="preview" id="p-image">
<li nodelete class="col-xs-4 col-sm-3 col-md-2">
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.upload.image" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;display: none;" permission="app.admin.upload.attachment" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;display: none;" permission="app.admin.files.list" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
</li>
</ul>
</div>
+1 -1
View File
@@ -93,7 +93,7 @@
<td>渠道商数</td>
<td>
<?php
echo \app\model\User::where('group',1)->count('id');
echo \app\model\User::where('group_id',1)->count('id');
?>
</td>
</tr>
+1 -1
View File
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
+1 -1
View File
@@ -16,7 +16,7 @@
<ul class="list-inline clearfix lyear-uploads-pic" data-template="preview" id="p-image">
<li nodelete class="col-xs-4 col-sm-3 col-md-2">
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.upload.image" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;display: none;" permission="app.admin.upload.attachment" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;display: none;" permission="app.admin.files.list" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
</li>
</ul>
</div>
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
+1 -1
View File
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_delete" class="btn btn-danger btn-del btn-disabled disabled">
+1 -1
View File
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
+19
View File
@@ -0,0 +1,19 @@
{layout name="layout"}
<div class="card">
<div class="toolbar toolbar-btn-action">
<button id="btn_add" type="button" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" permission="app.admin.role.insert" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</button>
<button id="btn_add" type="button" class="btn btn-info m-r-5" permission="app.admin.role.update">
<span class="mdi mdi-pencil" aria-hidden="true"></span>编辑
</button>
<button id="btn_delete" type="button" class="btn btn-danger btn-del" permission="app.admin.role.delete">
<span class="mdi mdi-window-close" aria-hidden="true"></span>删除
</button>
</div>
<div class="card-body">
<div class="table-responsive">
<table id="table"></table>
</div>
</div>
</div>
+50
View File
@@ -0,0 +1,50 @@
{layout name="layout"}
<div class="card">
<div class="card-body">
<form class="form-horizontal" method="post" action="__SELF__" role="form">
<input type="hidden" name="id" value="{$row.id|null}" />
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">名称:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-title" class="form-control" name="title" type="text" value="{$row.title|null}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">价格:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-price" class="form-control" step="0.01" name="price" type="number" value="{$row.price|default=0}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">原价:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-org_price" class="form-control" step="0.01" name="org_price" type="number" value="{$row.org_price|default=0}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">时间:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-duration" min="0" class="form-control" name="duration" type="number" value="{$row.duration|default=30}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">标签:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-label" class="form-control" name="label" type="text" value="{$row.label|null}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">状态:</label>
<div class="col-xs-12 col-sm-8">
{html:radio options="$statusList" value="$row.status" name="status" /}
</div>
</div>
<div class="form-group">
<label for="extend" class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8 col-md-6 layer-footer">
<button type="submit" class="btn btn-primary m-r-5">确 定</button>
</div>
</div>
</form>
</div>
</div>
+1 -1
View File
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
+18 -95
View File
@@ -5,7 +5,7 @@
<form class="form-horizontal" action="__SELF__" method="post">
<input type="hidden" name="id" value="{$row.id|null}" />
<div class="form-group">
<label for="type" class="control-label col-xs-12 col-sm-2">角色</label>
<label for="type" class="control-label col-xs-12 col-sm-2">角色{$row.role_id}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<select name="role_id" id="role_id" class="form-control">
{volist name="roleList" id="rvo"}
@@ -24,14 +24,18 @@
</select>
</div>
</div>
{if Request()->action == 'update' && $row.group == 2}
<!-- <div class="form-group">
<label class="control-label col-xs-12 col-sm-2">域名:</label>
<div class="form-group" data-favisible="role_id==2">
<label class="control-label col-xs-12 col-sm-2">VIP过期时间:</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="domain" value="{$row.domain|null}" data-rule="required;length(4~20)" class="form-control" />
<input type="text" name="expire_at"
value="{$row.expire_at|datetime}"
data-date-debug="true"
data-date-sideBySide="true"
data-date-collapse="false"
data-date-format="YYYY-MM-DD HH:mm:ss"
class="form-control datetimepicker" />
</div>
</div> -->
{/if}
</div>
<!-- <div class="form-group">
<label class="control-label col-xs-12 col-sm-2">等级</label>
<div class="col-xs-12 col-sm-8 col-md-6">
@@ -85,8 +89,8 @@
<input id="c-avatar" class="form-control" size="50" name="avatar" type="hidden" value="{$row.avatar|default='__IMG__/user/avatar.svg'}" data-tip="头像">
<ul class="list-inline clearfix lyear-uploads-pic" data-template="preview" id="p-avatar">
<li nodelete class="col-xs-4 col-sm-3 col-md-2">
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.upload.avatar" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.upload.attachment" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.files.upload" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.files.list" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false" data-preview-id="p-avatar"></a>
</li>
</ul>
</div>
@@ -125,95 +129,14 @@
autocomplete="off" class="form-control datetimepicker">
</div>
</div>
{if in_array('money',Config('site.allow_currencys'))}
{volist name=":Config('site.allow_currencys')" id="currency"}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('money')}</label>
<label class="control-label col-xs-12 col-sm-2">{:__($currency)}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="money" value="{$row.money|formatAmount}" class="form-control" />
<input type="text" name="{$currency}" value="{:formatAmount($row[$currency])}" class="form-control" />
</div>
</div>
{/if}
{if in_array('score',Config('site.allow_currencys'))}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('score')}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="score" value="{$row.score|formatAmount}" class="form-control" />
</div>
</div>
{/if}
{if in_array('currency1',Config('site.allow_currencys'))}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('currency1')}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="currency1" value="{$row.currency1|formatAmount}" class="form-control" />
</div>
</div>
{/if}
{if in_array('currency2',Config('site.allow_currencys'))}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('currency2')}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="currency2" value="{$row.currency2|formatAmount}" class="form-control" />
</div>
</div>
{/if}
{if in_array('currency3',Config('site.allow_currencys'))}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('currency3')}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="currency3" value="{$row.currency3|formatAmount}" class="form-control" />
</div>
</div>
{/if}
{if in_array('currency4',Config('site.allow_currencys'))}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('currency4')}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="currency4" value="{$row.currency4|formatAmount}" class="form-control" />
</div>
</div>
{/if}
{if in_array('currency5',Config('site.allow_currencys'))}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('currency5')}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="currency5" value="{$row.currency5|formatAmount}" class="form-control" />
</div>
</div>
{/if}
{if in_array('currency6',Config('site.allow_currencys'))}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('currency6')}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="currency6" value="{$row.currency6|formatAmount}" class="form-control" />
</div>
</div>
{/if}
{if in_array('currency7',Config('site.allow_currencys'))}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('currency7')}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="currency7" value="{$row.currency7|formatAmount}" class="form-control" />
</div>
</div>
{/if}
{if in_array('currency8',Config('site.allow_currencys'))}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('currency8')}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="currency8" value="{$row.currency8|formatAmount}" class="form-control" />
</div>
</div>
{/if}
{if in_array('currency9',Config('site.allow_currencys'))}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('currency9')}</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="currency9" value="{$row.currency9|formatAmount}" class="form-control" />
</div>
</div>
{/if}
{/volist}
{if Request()->action =='update'}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">推荐码</label>
@@ -241,7 +164,7 @@
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">注册时间</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="join_time" id="join_time" value="{$row.join_time}" autocomplete="off" class="form-control" disabled>
<input type="text" name="join_time" id="join_time" value="{$row.join_time|datetime}" autocomplete="off" class="form-control" disabled>
</div>
</div>
+1 -1
View File
@@ -1,7 +1,7 @@
{layout name="layout"}
<div class="card">
<div class="toolbar toolbar-btn-action">
<button id="btn_add" type="button" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" permission="app.admin.role.insert">
<button id="btn_add" type="button" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" permission="app.admin.role.insert" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</button>
<button id="btn_add" type="button" class="btn btn-info m-r-5" permission="app.admin.role.update">
+14 -12
View File
@@ -3,6 +3,7 @@
<div class="card-body">
<form class="form-horizontal" method="post" action="__SELF__" role="form">
<input type="hidden" name="id" value="{$row.id|null}" />
<input type="hidden" name="rules" value="*"/>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">父级:</label>
<div class="col-xs-12 col-sm-8 col-md-6">
@@ -21,41 +22,42 @@
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">销售额要求:</label>
<label class="control-label col-xs-12 col-sm-2">最大消息数量:</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<div class="input-group">
<input type="number" name="need_sales" value="{$row.need_sales|default=0}" class="form-control" min="0" data-rule="required;range(0~99999999)" />
<div class="input-group-addon"></div>
</div>
<input type="number" name="max_send_msg_count" value="{$row.max_send_msg_count|default=10}" class="form-control" min="0" data-rule="required;range(0~99999999)" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">消费奖励:</label>
<label class="control-label col-xs-12 col-sm-2">最大好友数量:</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="consume_reward" value="{$row.consume_reward|null}" data-rule="required;length(3~6)" class="form-control" />
<input type="text" name="max_friend_count" value="{$row.max_friend_count|default=10}" data-rule="required;length(3~6)" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">产值奖:</label>
<label class="control-label col-xs-12 col-sm-2">最大加入的群组数量:</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="income_reward" value="{$row.income_reward|null}" data-rule="required;length(3~6)" class="form-control" />
<input type="text" name="max_group_join_count" value="{$row.max_group_join_count|default=10}" data-rule="required;length(3~6)" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">提现奖励:</label>
<label class="control-label col-xs-12 col-sm-2">最大创建的群组数量:</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="withdrawl_reward" value="{$row.withdrawl_reward|null}" data-rule="required;length(3~6)" class="form-control" />
<input type="text" name="max_gourp_create_count" value="{$row.max_gourp_create_count|default=10}" data-rule="required;length(3~6)" class="form-control" />
</div>
</div>
{php}
/*
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">权限:</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<div class="table-responsive">
<div id="treeview"></div>
</div>
<input type="hidden" name="rules" value="{$row.rules|null}" data-rule="required" class="form-control" />
<input type="hidden" name="rules" value="{$row.rules|null}" data-rule="required" />
</div>
</div>
*/
{/php}
<div class="form-group">
<label for="extend" class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8 col-md-6 layer-footer">
+2 -2
View File
@@ -1,8 +1,8 @@
{layout name="layout"}
<link href="/app/admin/libs/jquery-treegrid/jquery.treegrid.min.css" rel="stylesheet" />
<link href="{:admin_path()}/libs/jquery-treegrid/jquery.treegrid.min.css" rel="stylesheet" />
<div class="card">
<div class="toolbar toolbar-btn-action">
<button id="btn_add" type="button" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" permission="app.admin.rule.insert">
<button id="btn_add" type="button" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" permission="app.admin.rule.insert" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</button>
<button id="btn_delete" type="button" class="btn btn-danger m-r-5 btn-del" permission="app.admin.rule.delete">
+2 -3
View File
@@ -46,7 +46,7 @@
<label class="control-label col-xs-12 col-sm-2">图标</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<div class="input-group input-groupp-md">
<span class="input-group-addon"><i class="{$row.icon|null}" id="icon-style"></i></span>
<span class="input-group-addon"><i class="{$row.icon|null}" id="icon-style"></i>mdi mdi-</span>
<input type="text" class="form-control" id="icon" name="icon" value="{$row.icon|null}" />
<a href="javascript:;" class="btn-search-icon input-group-addon">搜索图标</a>
</div>
@@ -83,5 +83,4 @@
</div>
</form>
</div>
</div>
{include file="common/chooseicontpl" /}
</div>
+15
View File
@@ -0,0 +1,15 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false" data-title="新增">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_delete" class="btn btn-danger btn-del btn-disabled disabled">
<span class="mdi mdi-window-close" aria-hidden="true"></span>删除
</a>
</div>
<!-- 数据表格 -->
<div class="card">
<div class="card-body">
<table id="table"></table>
</div>
</div>
+84
View File
@@ -0,0 +1,84 @@
{layout name="layout"}
<div class="card">
<div class="card-body">
<form class="form-horizontal" action="__SELF__" method="post">
<input type="hidden" name="id" value="{$row.id|null}" />
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">平台</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<select name="platform" id="platform" class="form-control">
{volist name="osList" id="ovo"}
<option value="{$key}" {if $row.type == $key}selected{/if}>{$ovo}</option>
{/volist}
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">更新方式</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<select name="type" id="type" class="form-control">
{volist name="typeList" id="tvo"}
<option value="{$key}" {if $row.type == $key}selected{/if}>{$tvo}</option>
{/volist}
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">强制更新</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<select name="force" id="force" class="form-control">
{volist name="forceList" id="fvo"}
<option value="{$key}" {if $row.type == $key}selected{/if}>{$fvo}</option>
{/volist}
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">基座版本</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="version" value="{$row.version|null}" autocomplete="off" data-rule="required" class="form-control">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">WGT版本</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<input type="text" name="version_wgt" value="{$row.version_wgt|null}" autocomplete="off" data-rule="required" class="form-control">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">更新资源</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<div class="form-inline">
<input id="c-source" class="form-control" size="50" name="source" type="text" value="{$row.source|htmlentities}" data-tip="请上传资源">
<span><button type="button" id="faupload-source" class="btn btn-danger faupload" data-input-id="c-source" data-multiple="false"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
<span><button type="button" id="fachoose-source" class="btn btn-primary fachoose" data-input-id="c-source" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">更新内容</label>
<div class="col-xs-12 col-sm-8 col-md-6">
<textarea name="content" class="form-control">{$row.content|null}</textarea>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">状态</label>
<div class="col-xs-12 col-sm-8 col-md-6">
{volist name="statusList" id="rvo"}
<label class="lyear-radio radio-primary radio-inline">
<input type="radio" name="status" {if $row.status == $key} checked{/if} value="{$key}">
<span>{$rvo}</span>
</label>
{/volist}
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8 col-md-6 layer-footer">
<button type="submit" class="btn btn-primary m-r-5">提交</button>
<button type="reset" class="btn btn-warning m-r-5">重置</button>
</div>
</div>
</form>
</div>
</div>
+1 -1
View File
@@ -1,6 +1,6 @@
{layout name="layout"}
<div class="toolbar" class="toolbar-btn-action">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增">
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
</a>
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
+2 -2
View File
@@ -71,8 +71,8 @@
<input id="c-avatar" class="form-control" size="50" name="avatar" type="hidden" value="{$row.avatar|default='__IMG__/user/avatar.svg'}" data-tip="头像">
<ul class="list-inline clearfix lyear-uploads-pic" data-template="preview" id="p-avatar">
<li nodelete class="col-xs-4 col-sm-3 col-md-2">
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.upload.avatar" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.upload.attachment" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.files.upload" id="add-pic-btn" href="#!" title="点击上传" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-avatar"></a>
<a class="pic-add fachoose" style="height: auto;border: 0;" permission="app.admin.files.list" id="choose-pic-btn" href="#!" title="选择文件" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false" data-preview-id="p-avatar"></a>
</li>
</ul>
</div>
+1 -1
View File
@@ -47,7 +47,7 @@
'pid' => 9,
'created_at' => '2024-09-08 22:04:42',
'updated_at' => '2024-09-13 17:10:45',
'href' => '/attachment/index',
'href' => '/files/index',
'type' => 1,
'extend' => NULL,
'weight' => 700,
+1 -1
View File
@@ -16,7 +16,7 @@ use plugin\admin\app\controller\AccountController;
use Webman\Route;
use support\Request;
Route::any('/app/admin/account/captcha/{type}', [AccountController::class, 'captcha']);
Route::any(admin_path().'/account/captcha/{type}', [AccountController::class, 'captcha']);
Route::fallback(function (Request $request) {
return view('common/404');
+20
View File
@@ -8084,4 +8084,24 @@ div.sp_result_area div.sp_pagination > ul > li.pageInfoBox > a:hover {
}
.img-sm{
width: 64px;
}
/*chooseicon*/
#chooseicon {
margin:10px;
}
#chooseicon ul {
margin:5px 0 0 0;
}
#chooseicon ul li{
width:41px;height:42px;
line-height:42px;
border:1px solid #efefef;
padding:1px;
margin:1px;
text-align: center;
font-size:18px;
}
#chooseicon ul li:hover{
border:1px solid #2c3e50;
cursor:pointer;
}
+6 -6
View File
@@ -18,12 +18,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/address/select',
add_url: '/app/admin/address/insert',
edit_url: '/app/admin/address/update',
del_url: '/app/admin/address/delete',
multi_url: '/app/admin/address/multi',
//dragsort_url: '/app/admin/address/weigh',
index_url: 'address/select',
add_url: 'address/insert',
edit_url: 'address/update',
del_url: 'address/delete',
multi_url: 'address/multi',
//dragsort_url: 'address/weigh',
table: 'address',
}
});
+9 -9
View File
@@ -5,12 +5,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/admin/select',
add_url: '/app/admin/admin/insert',
edit_url: '/app/admin/admin/update',
del_url: '/app/admin/admin/delete',
multi_url: '/app/admin/admin/multi',
dragsort_url: '/app/admin/admin/weigh',
index_url: 'admin/select',
add_url: 'admin/insert',
edit_url: 'admin/update',
del_url: 'admin/delete',
multi_url: 'admin/multi',
dragsort_url: 'admin/weigh',
table: 'admin',
}
});
@@ -79,20 +79,20 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.bindevent(table);
},
update:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
Config['upload_url'] = 'files/avatar';
var form = $('form');
Form.api.bindevent(form)
this.getRole();
},
insert:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
Config['upload_url'] = 'files/avatar';
var form = $('form');
Form.api.bindevent(form)
this.getRole();
},
getRole:function(){
Fast.api.ajax({
url: "/app/admin/adminrole/select?format=select",
url: "adminrole/select?format=select",
dataType: "json",
success: function (res) {
var html = "";
+7 -7
View File
@@ -4,12 +4,12 @@ define(['table', 'form', 'yntree'], function (Table, Form, YnTree1) {
index: function () {
Table.api.init({
extend: {
index_url: '/app/admin/adminrole/select',
add_url: '/app/admin/adminrole/insert',
edit_url: '/app/admin/adminrole/update',
del_url: '/app/admin/adminrole/delete',
multi_url: '/app/admin/adminrole/multi',
dragsort_url: '/app/admin/adminrole/weigh',
index_url: 'adminrole/select',
add_url: 'adminrole/insert',
edit_url: 'adminrole/update',
del_url: 'adminrole/delete',
multi_url: 'adminrole/multi',
dragsort_url: 'adminrole/weigh',
table: 'adminrole',
}
});
@@ -136,7 +136,7 @@ define(['table', 'form', 'yntree'], function (Table, Form, YnTree1) {
var pid = $(this).data("pid");
var id = $('[name=id]').val();
$.ajax({
url: "/app/admin/adminrole/tree?",
url: 'adminrole/tree?',
type: 'post',
dataType: 'json',
data: { id: id, pid: $(this).val() },
+9 -55
View File
@@ -1,4 +1,4 @@
define(['table', 'upload','form','template','treegrid','bootstrap-table-treegrid'], function (Table,Upload,Form,Template) {
define(['table', 'form','../libs/iconselect','treegrid','bootstrap-table-treegrid'], function (Table,Form,IconSelector) {
var AdminRule = {
//Do setup work hereAction
index: function () {
@@ -9,12 +9,12 @@ define(['table', 'upload','form','template','treegrid','bootstrap-table-treegrid
var apiResults_type = ["目录","菜单","权限"];
Table.api.init({
extend: {
index_url: '/app/admin/AdminRule/select',
add_url: '/app/admin/AdminRule/insert',
edit_url: '/app/admin/AdminRule/update',
del_url: '/app/admin/AdminRule/delete',
multi_url: '/app/admin/AdminRule/multi',
dragsort_url: '/app/admin/AdminRule/weigh',
index_url: 'AdminRule/select',
add_url: 'AdminRule/insert',
edit_url: 'AdminRule/update',
del_url: 'AdminRule/delete',
multi_url: 'AdminRule/multi',
dragsort_url: 'AdminRule/weigh',
table: 'AdminRule',
}
});
@@ -191,56 +191,10 @@ define(['table', 'upload','form','template','treegrid','bootstrap-table-treegrid
this.bindevent();
},
bindevent:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
Config['upload_url'] = '/files/avatar';
var form = $('form');
Form.api.bindevent(form)
this.initIcoselect();
},
initIcoselect:function(){
var iconlist = [];
var iconfunc = function () {
Layer.open({
type: 1,
area: ['99%', '98%'], //宽高
content: Template('chooseicontpl', {iconlist: iconlist})
});
};
$(document).on('change keyup', "#icon", function () {
$(this).prev().find("i").prop("class", $(this).val());
});
$(document).on('click', ".btn-search-icon", function () {
if (iconlist.length == 0) {
$.get(Config.cdnurl + "/app/admin/css/materialdesignicons.min.css", function (ret) {
window.iconret = ret;
// var exp = /\.mdi-(.*):before/ig;
// var result;
// while ((result = exp.exec(ret)) != null) {
// iconlist.push(result[1]);
// }
var list = Array.from(iconret.matchAll(/mdi-(.*?)::before/g));
for (let index = 1; index < list.length; index++) {
//const element = list[index];
iconlist.push(list[index][1]);
}
iconfunc();
});
} else {
iconfunc();
}
});
$(document).on('click', '#chooseicon ul li', function () {
$("input#icon").val('mdi mdi-' + $(this).data("font")).trigger("change");
Layer.closeAll();
});
$(document).on('keyup', 'input.js-icon-search', function () {
$("#chooseicon ul li").show();
if ($(this).val() != '') {
$("#chooseicon ul li:not([data-font*='" + $(this).val() + "'])").hide();
}
});
IconSelector.bind($(".btn-search-icon"),$("input#icon"));
}
};
return AdminRule
+7 -7
View File
@@ -6,12 +6,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/article/select',
add_url: '/app/admin/article/insert',
edit_url: '/app/admin/article/update',
del_url: '/app/admin/article/delete',
multi_url: '/app/admin/article/multi',
dragsort_url: '/app/admin/article/weigh',
index_url: 'article/select',
add_url: 'article/insert',
edit_url: 'article/update',
del_url: 'article/delete',
multi_url: 'article/multi',
dragsort_url: 'article/weigh',
table: 'archives',
}
});
@@ -83,7 +83,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
this.bindevent();
},
bindevent:function(){
Config['uploadurl'] = '/app/admin/attachment/upload';
Config['upload_url'] = 'files/upload';
var form = $('form');
Form.api.bindevent(form)
}
+6 -6
View File
@@ -18,12 +18,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/authaddress/select',
add_url: '/app/admin/authaddress/insert',
edit_url: '/app/admin/authaddress/update',
del_url: '/app/admin/authaddress/delete',
multi_url: '/app/admin/authaddress/multi',
//dragsort_url: '/app/admin/authaddress/weigh',
index_url: 'authaddress/select',
add_url: 'authaddress/insert',
edit_url: 'authaddress/update',
del_url: 'authaddress/delete',
multi_url: 'authaddress/multi',
//dragsort_url: 'authaddress/weigh',
table: 'auth_address',
}
});
+4 -4
View File
@@ -5,9 +5,9 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
window.filterData['currency'] = {value1:"money",symbol:'=','value2':''};
Table.api.init({
extend: {
index_url: '/app/admin/balancelog/select',
del_url: '/app/admin/balancelog/delete?currency=money',
multi_url: '/app/admin/balancelog/multi',
index_url: 'balancelog/select',
del_url: 'balancelog/delete?currency=money',
multi_url: 'balancelog/multi',
table: 'balancelog',
}
});
@@ -110,7 +110,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
var currency = $(this).data('currency');
$('#filter_currency li').removeClass('active');
$(this).addClass('active');
$.fn.bootstrapTable.defaults.extend.del_url = '/app/admin/balancelog/delete?currency='+currency
$.fn.bootstrapTable.defaults.extend.del_url = 'balancelog/delete?currency='+currency
window.filterData['currency']['value1'] = currency;
table.bootstrapTable('selectPage', 1);
});
+12 -12
View File
@@ -4,12 +4,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
index: function () {
Table.api.init({
extend: {
index_url: '/app/admin/card/select',
add_url: '/app/admin/card/insert',
edit_url: '/app/admin/card/update',
del_url: '/app/admin/card/delete',
multi_url: '/app/admin/card/multi',
dragsort_url: '/app/admin/card/weigh',
index_url: 'card/select',
add_url: 'card/insert',
edit_url: 'card/update',
del_url: 'card/delete',
multi_url: 'card/multi',
dragsort_url: 'card/weigh',
table: 'card',
}
});
@@ -72,7 +72,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
formatter:Table.api.formatter.operate,
table: table, events: Table.api.events.operate,
// formatter: function(v,row,index){
// return '<a href="/app/admin/card/export" class="btn btn-warning btn-xs">导出</a>&nbsp;'+Table.api.formatter.operate.call(this,v,row,index)
// return '<a href="'+'card/export" class="btn btn-warning btn-xs">导出</a>&nbsp;'+Table.api.formatter.operate.call(this,v,row,index)
// },
buttons:[
{
@@ -80,14 +80,14 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
text: '详情',
icon: 'fa fa-list',
classname: 'btn btn-info btn-xs btn-dialog',
url: '/app/admin/card/detail'
url: 'card/detail'
},
{
name: 'export',
text: '导出',
icon: 'fa fa-list',
classname: 'btn btn-warning btn-xs',
url: '/app/admin/card/export',
url: 'card/export',
extend:' target="_blank"'
}
]
@@ -111,9 +111,9 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
detail: function () {
Table.api.init({
extend: {
index_url: '/app/admin/cdkey/select',
del_url: '/app/admin/cdkey/delete',
multi_url: '/app/admin/cdkey/multi',
index_url: 'cdkey/select',
del_url: 'cdkey/delete',
multi_url: 'cdkey/multi',
table: 'cdkey',
}
});
+8 -8
View File
@@ -5,12 +5,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/category/select',
add_url: '/app/admin/category/insert',
edit_url: '/app/admin/category/update',
del_url: '/app/admin/category/delete',
multi_url: '/app/admin/category/multi',
dragsort_url: '/app/admin/category/weigh',
index_url: 'category/select',
add_url: 'category/insert',
edit_url: 'category/update',
del_url: 'category/delete',
multi_url: 'category/multi',
dragsort_url: 'category/weigh',
table: 'category',
}
});
@@ -73,12 +73,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.bindevent(table);
},
update:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
Config['upload_url'] = '/files/avatar';
var form = $('form');
Form.api.bindevent(form)
},
insert:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
Config['upload_url'] = '/files/avatar';
var form = $('form');
Form.api.bindevent(form)
}
+2 -2
View File
@@ -9,7 +9,7 @@ define(['form'], function (Form) {
return false;
})
var form = $('#settingsform');
Config['uploadurl'] = '/app/admin/attachment/upload';
Config['upload_url'] = 'attach/upload';
Form.api.bindevent(form,function(res){
if (res.code) {
return lightyear.notify(res.msg, 'danger', 3000, 'mdi mdi-emoticon-happy', 'top', 'center');
@@ -70,7 +70,7 @@ define(['form'], function (Form) {
data[$(this).attr('name')]=$(this).val();
});
Fast.api.ajax({
'url':'/app/admin/config/testmail',
'url':'config/testmail',
'data':data,
success:function(res){
Fast.api.success("操作成功");
+5 -5
View File
@@ -2,7 +2,7 @@
requirejs.config({
//urlArgs: "v=" + (new Date()).getTime(),
urlArgs: "v=" + (location.host == 'q.sjqqzc.top' ? (new Date()).getTime() : require.s.contexts._.config.config.version),
baseUrl: require.s.contexts._.config.config.cdnurl+'/app/admin/js/',
baseUrl: require.s.contexts._.config.config.cdnurl+require.s.contexts._.config.'js/',
packages: [{
name: 'moment',
location: '../libs/moment',
@@ -48,7 +48,7 @@ requirejs.config({
},
map: {
'*': {
'css': '/app/admin/libs/require-css.min.js' // or whatever the path to require-css is
'css': require.s.contexts._.config.'libs/require-css.min.js' // or whatever the path to require-css is
}
},
shim: {
@@ -58,7 +58,7 @@ requirejs.config({
'tagsinput': {
deps: [
'jquery',
'css!/app/admin/libs/jquery-tags-input/jquery.tagsinput.min.css'
'css!'+require.s.contexts._.config.'libs/jquery-tags-input/jquery.tagsinput.min.css'
]
},
'yntree': {
@@ -68,7 +68,7 @@ requirejs.config({
},
'bootstrap-select': {
deps: [
'css!/app/admin/libs/bootstrap-select/dist/css/bootstrap-select.min.css'
'css!'+require.s.contexts._.config.'libs/bootstrap-select/dist/css/bootstrap-select.min.css'
]
},
'bootstrap-select-lang': ['bootstrap-select'],
@@ -131,7 +131,7 @@ requirejs.config({
'bootstrap-datetimepicker':{
deps: [
'jquery',
'css!/app/admin/libs/bootstrap-datetimepicker/style.css'
'css!'+require.s.contexts._.config.'libs/bootstrap-datetimepicker/style.css'
]
}
},
+256
View File
@@ -0,0 +1,256 @@
define(['table', 'upload','form'], function (Table,Upload,Form) {
var User = {
//Do setup work hereAction
index: function () {
Table.api.init({
extend: {
index_url: 'files/select',
add_url: 'files/insert',
edit_url: 'files/update',
del_url: 'files/delete',
multi_url: 'files/multi',
dragsort_url: 'files/weigh',
table: 'upload',
}
});
var table = $("#table");
var tableOptions = {
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
commonSearch: false,
search: false,
showExport: false,
columns: [
[
{checkbox: true},
{
field: 'id',
title: 'ID',
sortable: true // 是否排序
},
{
title: "名字",
field: "title",
filter: "string",
},
{
title: "文件",
field: "path",
formatter: function (v,d) {
if (["jpg", "jpeg", "png", "gif", "bmp", "webp", "svg"].indexOf(d.extension.toLowerCase()) !== -1) {
return '<img src="' + Fast.api.cdnurl(v) + '" style="max-width:32px;max-height:32px;" />';
}
return '<a href="' + encodeURI(v) + '" target="_blank">' + escape(v) + '</a>';
}
},
{
title: "管理员id",
field: "admin_id",
visible: false,
},
{
title: "用户id",
field: "user_id",
visible: false,
},
{
title: "文件大小",
field: "size",
formatter: function (v,d) {
return User.formatSize(d.size);
}
},
{
title: "类型",
field: "mime_type",
visible: false,
},
{
title: "图片宽度",
field: "width",
},
{
title: "图片高度",
field: "height",
},{
title: "扩展名",
field: "extension",
},
{
title: "上传时间",
field: "created_at",
visible: false,
},
{
title: "引用次数",
field: "use_count"
},
{
title: "更新时间",
field: "updated_at",
hide: true,
},
{field: 'operate', title: '操作', table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
};
// 初始化表格
table.bootstrapTable(tableOptions);
// 为表格绑定事件
Table.api.bindevent(table);
//上传
Config['upload_url'] = 'files/insert';
Upload.api.upload($(".plupload,.faupload"),function(){
table.bootstrapTable('refresh');
Fast.api.success('上传成功');
},function(){
console.log(this,arguments);
},function(){
console.log(this,arguments);
});
},
// 格式化文件大小
formatSize : function(value) {
if(null == value || "" === value){
return "0 Bytes";
}
let unitArr = ["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"];
let index = 0;
let srcSize = parseFloat(value);
index = Math.floor(Math.log(srcSize) / Math.log(1024));
let size =srcSize / Math.pow(1024, index);
size = size.toFixed(2);
return size + unitArr[index];
},
update:function(){
this.bindevent();
},
insert:function(){
this.bindevent();
},
bindevent:function(){
Config['upload_url'] = 'files/file';
var form = $('form');
Form.api.bindevent(form);
},
list:function(){
Table.api.init({
extend: {
index_url: 'files/select',
add_url: 'files/insert',
edit_url: 'files/update',
del_url: 'files/delete',
multi_url: 'files/multi',
dragsort_url: 'files/weigh',
table: 'upload',
}
});
// 选择行
let select = function (obj) {
let index = parent.layer.getFrameIndex(window.name);
let callback = parent.layui.$("#layui-layer" + index).data("callback");
callback(obj.data);
parent.layer.close(index);
};
var table = $("#table");
var tableOptions = {
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
pagination: true,
commonSearch: false,
search: false,
showExport: false,
totalField: "count",
columns: [
[
{checkbox: true},
{
field: 'id',
title: 'ID',
filter: "number",
sortable: true // 是否排序
},
{
title: "名字",
field: "title",
filter: "string",
},
{
title: "文件",
field: "path",
filter: "string",
formatter: function (v,d) {
if (["jpg", "jpeg", "png", "gif", "bmp", "webp", "svg"].indexOf(d.extension.toLowerCase()) !== -1) {
return '<img src="' + Fast.api.cdnurl(v) + '" style="max-width:32px;max-height:32px;" />';
}
return '<a href="' + encodeURI(v) + '" target="_blank">' + escape(v) + '</a>';
}
},
{
title: "管理员id",
field: "admin_id",
visible: false,
},
{
title: "用户id",
field: "user_id",
visible: false,
},
{
title: "文件大小",
field: "size",
formatter: function (v,d) {
return User.formatSize(d.size);
}
},
{
title: "mime类型",
field: "mime_type",
hide: true,
},
{
title: "图片宽度",
field: "width",
visible: false,
},
{
title: "图片高度",
field: "height",
visible: false,
},{
title: "扩展名",
field: "extension",
},
{
title: "上传时间",
field: "created_at",
visible: false,
},
{
title: "引用次数",
field: "use_count"
},
{
title: "更新时间",
field: "updated_at",
hide: true,
},
{field: 'operate', title: '操作', table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
};
// 初始化表格
table.bootstrapTable(tableOptions);
// 为表格绑定事件
Table.api.bindevent(table);
}
};
return User
});
+7 -7
View File
@@ -6,12 +6,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/gift/select',
add_url: '/app/admin/gift/insert',
edit_url: '/app/admin/gift/update',
del_url: '/app/admin/gift/delete',
multi_url: '/app/admin/gift/multi',
//dragsort_url: '/app/admin/gift/weigh',
index_url: 'gift/select',
add_url: 'gift/insert',
edit_url: 'gift/update',
del_url: 'gift/delete',
multi_url: 'gift/multi',
//dragsort_url: 'gift/weigh',
table: 'gift',
}
});
@@ -94,7 +94,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
this.bindevent();
},
bindevent:function(){
Config['uploadurl'] = '/app/admin/attachment/upload';
Config['upload_url'] = 'files/upload';
var form = $('form');
var that = this;
Form.api.bindevent(form)
+6 -6
View File
@@ -5,12 +5,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/giftorder/select',
add_url: '/app/admin/giftorder/insert',
edit_url: '/app/admin/giftorder/update',
del_url: '/app/admin/giftorder/delete',
multi_url: '/app/admin/giftorder/multi',
//dragsort_url: '/app/admin/giftorder/weigh',
index_url: 'giftorder/select',
add_url: 'giftorder/insert',
edit_url: 'giftorder/update',
del_url: 'giftorder/delete',
multi_url: 'giftorder/multi',
//dragsort_url: 'giftorder/weigh',
table: 'giftorder',
}
});
+6 -6
View File
@@ -6,12 +6,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/income_record/select',
add_url: '/app/admin/income_record/insert',
edit_url: '/app/admin/income_record/update',
del_url: '/app/admin/income_record/delete',
multi_url: '/app/admin/income_record/multi',
//dragsort_url: '/app/admin/income_record/weigh',
index_url: 'income_record/select',
add_url: 'income_record/insert',
edit_url: 'income_record/update',
del_url: 'income_record/delete',
multi_url: 'income_record/multi',
//dragsort_url: 'income_record/weigh',
table: 'income_record',
}
});
+3 -3
View File
@@ -98,7 +98,7 @@ define(['lightyear','multitabs', '../libs/Chart','form','bootstrap'], function (
init: [{
type: 'main',
title: '首页',
url: '/app/admin/index/'+Config.fixedpage
url: 'index/'+Config.fixedpage
}]
});
@@ -207,7 +207,7 @@ define(['lightyear','multitabs', '../libs/Chart','form','bootstrap'], function (
// }
// }
// );
$.getJSON('/app/admin/index/money_lines',function(res){
$.getJSON('index/money_lines',function(res){
res = res.data;
var labels=[];
var withdrawl_values=[];
@@ -248,7 +248,7 @@ define(['lightyear','multitabs', '../libs/Chart','form','bootstrap'], function (
}
);
});
$.getJSON('/app/admin/index/role_buy_lines',function(res){
$.getJSON('index/role_buy_lines',function(res){
res = res.data;
var amount=[];
var reward=[];
+3 -3
View File
@@ -6,12 +6,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/invitecode/select',
index_url: 'invitecode/select',
add_url: null,
edit_url: null,
del_url: '/app/admin/invitecode/delete',
del_url: 'invitecode/delete',
multi_url: null,
//dragsort_url: '/app/admin/product/weigh',
//dragsort_url: 'product/weigh',
table: 'invitecode',
}
});
+7 -7
View File
@@ -6,12 +6,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/product/select',
add_url: '/app/admin/product/insert',
edit_url: '/app/admin/product/update',
del_url: '/app/admin/product/delete',
multi_url: '/app/admin/product/multi',
//dragsort_url: '/app/admin/product/weigh',
index_url: 'product/select',
add_url: 'product/insert',
edit_url: 'product/update',
del_url: 'product/delete',
multi_url: 'product/multi',
//dragsort_url: 'product/weigh',
table: 'product',
}
});
@@ -117,7 +117,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
this.bindevent();
},
bindevent:function(){
Config['uploadurl'] = '/app/admin/attachment/upload';
Config['upload_url'] = 'files/upload';
var form = $('form');
var that = this;
$('[name=cycle_type]').on('change',function(){
+3 -3
View File
@@ -8,9 +8,9 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/productorder/select',
index_url: 'productorder/select',
add_url: null,
edit_url: '/app/admin/productorder/update',
edit_url: 'productorder/update',
del_url: null,
multi_url: null,
dragsort_url: null,
@@ -91,7 +91,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
// name:"servers",
// icon:"mdi mdi-account-group-outline",
// classname:"btn btn-xs btn-info btn-dialog",
// url:'/app/admin/workrecord/index'
// url:'workrecord/index'
// }
// ]
}
+6 -6
View File
@@ -15,12 +15,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/questionnaire/select',
add_url: '/app/admin/questionnaire/insert',
edit_url: '/app/admin/questionnaire/update',
del_url: '/app/admin/questionnaire/delete',
multi_url: '/app/admin/questionnaire/multi',
//dragsort_url: '/app/admin/questionnaire/weigh',
index_url: 'questionnaire/select',
add_url: 'questionnaire/insert',
edit_url: 'questionnaire/update',
del_url: 'questionnaire/delete',
multi_url: 'questionnaire/multi',
//dragsort_url: 'questionnaire/weigh',
table: 'questionnaire',
}
});
+7 -7
View File
@@ -7,12 +7,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/recharge/select',
add_url: '/app/admin/recharge/insert',
edit_url: '/app/admin/recharge/update',
del_url: '/app/admin/recharge/delete',
multi_url: '/app/admin/recharge/multi',
//dragsort_url: '/app/admin/recharge/weigh',
index_url: 'recharge/select',
add_url: 'recharge/insert',
edit_url: 'recharge/update',
del_url: 'recharge/delete',
multi_url: 'recharge/multi',
//dragsort_url: 'recharge/weigh',
table: 'recharge',
}
});
@@ -173,7 +173,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
if(v){
btn_loading.show();
if(v.substr(0,2) == '0x'){
$.getJSON('/app/admin/index/txid?txid='+v,function(res){
$.getJSON('index/txid?txid='+v,function(res){
btn_loading.hide();
recharge.setForm({
from:res.data.from,
+7 -7
View File
@@ -6,12 +6,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/robot/select',
add_url: '/app/admin/robot/insert',
edit_url: '/app/admin/robot/update',
del_url: '/app/admin/robot/delete',
multi_url: '/app/admin/robot/multi',
//dragsort_url: '/app/admin/robot/weigh',
index_url: 'robot/select',
add_url: 'robot/insert',
edit_url: 'robot/update',
del_url: 'robot/delete',
multi_url: 'robot/multi',
//dragsort_url: 'robot/weigh',
table: 'robot',
}
});
@@ -91,7 +91,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
this.bindevent();
},
bindevent:function(){
Config['uploadurl'] = '/app/admin/attachment/upload';
Config['upload_url'] = 'files/upload';
var form = $('form');
var that = this;
$('[name=cycle_type]').on('change',function(){
+6 -6
View File
@@ -6,12 +6,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/robotrecord/select',
add_url: '/app/admin/robotrecord/insert',
edit_url: '/app/admin/robotrecord/update',
del_url: '/app/admin/robotrecord/delete',
multi_url: '/app/admin/robotrecord/multi',
//dragsort_url: '/app/admin/robotrecord/weigh',
index_url: 'robotrecord/select',
add_url: 'robotrecord/insert',
edit_url: 'robotrecord/update',
del_url: 'robotrecord/delete',
multi_url: 'robotrecord/multi',
//dragsort_url: 'robotrecord/weigh',
table: 'robotrecord',
}
});
+12 -7
View File
@@ -4,12 +4,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
window.filterData['type'] = {value1:"page",symbol:'=','value2':''};
Table.api.init({
extend: {
index_url: '/app/admin/singlepage/select',
add_url: '/app/admin/singlepage/insert',
edit_url: '/app/admin/singlepage/update',
del_url: '/app/admin/singlepage/delete',
multi_url: '/app/admin/singlepage/multi',
dragsort_url: '/app/admin/singlepage/weigh',
index_url: 'singlepage/select',
add_url: 'singlepage/insert',
edit_url: 'singlepage/update',
del_url: 'singlepage/delete',
multi_url: 'singlepage/multi',
dragsort_url: 'singlepage/weigh',
table: 'archives',
}
});
@@ -35,6 +35,11 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
field: "title",
filter: "string",
},
{
title: "标识",
field: "name",
filter: "string",
},
{
title: "创建时间",
field: "created_at"
@@ -64,7 +69,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
this.bindevent();
},
bindevent:function(){
Config['uploadurl'] = '/app/admin/attachment/upload';
Config['upload_url'] = 'files/upload';
var form = $('form');
Form.api.bindevent(form)
}
+11 -11
View File
@@ -9,12 +9,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/studio/select',
add_url: '/app/admin/studio/insert',
edit_url: '/app/admin/studio/update',
del_url: '/app/admin/studio/delete',
multi_url: '/app/admin/studio/multi',
dragsort_url: '/app/admin/studio/weigh',
index_url: 'studio/select',
add_url: 'studio/insert',
edit_url: 'studio/update',
del_url: 'studio/delete',
multi_url: 'studio/multi',
dragsort_url: 'studio/weigh',
table: 'studio',
}
});
@@ -223,7 +223,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
name:"team",
icon:"mdi mdi-account-group-outline",
classname:"btn btn-xs btn-info btn-dialog",
url:'/app/admin/studio/team'
url:'studio/team'
}
]
}
@@ -236,20 +236,20 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.bindevent(table);
},
update:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
Config['upload_url'] = '/files/avatar';
var form = $('form');
Form.api.bindevent(form)
this.getRole();
},
insert:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
Config['upload_url'] = '/files/avatar';
var form = $('form');
Form.api.bindevent(form)
this.getRole();
},
getRole:function(){
Fast.api.ajax({
url: "/app/admin/UserRole/select?format=tree",
url: "UserRole/select?format=tree",
dataType: "json",
success: function (res) {
Layer.closeAll();
@@ -282,7 +282,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/team/select',
index_url: 'team/select',
add_url: null,
edit_url: null,
del_url: null,
+112
View File
@@ -0,0 +1,112 @@
define(['table', 'upload','form'], function (Table,Upload,Form) {
var thali = {
//Do setup work hereAction
index: function () {
window.statuskOption= Config.statusList;
Table.api.init({
extend: {
index_url: 'thali/select',
add_url: 'thali/insert',
edit_url: 'thali/update',
del_url: 'thali/delete',
multi_url: 'thali/multi',
//dragsort_url: 'thali/weigh',
table: 'thali',
}
});
var table = $("#table");
var tableOptions = {
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
commonSearch: false,
search: false,
columns: [
[
{checkbox: true},
{
field: 'id',
title: 'ID',
filter: "number",
sortable: true // 是否排序
},
{
title: "名称",
field: "title",
filter: "string",
},
{
title: "价格",
field: "price",
filter: "number",
formatter:function(v){
return Table.api.formatter.number(v)+'元';
}
},
{
title: "原价",
field: "org_price",
filter: "number",
formatter:function(v){
return Table.api.formatter.number(v)+'元';
}
},
{
title: "时长",
field: "duration",
filter: "number",
formatter:function(v){
return v+'天';
}
},
{
title: "标签",
field: "label",
filter: "string"
},
{
title: "状态",
field: "status",
sortable: true,
formatter:Table.api.formatter.status,
searchList:window.statuskOption,
operate:false,
filter: "select",
filterOption:"statuskOption"
},
{
title: "创建时间",
field: "created_at",
visible: false,
},
{
title: "更新时间",
field: "updated_at",
visible: false,
},
{field: 'operate', title: '操作', table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
};
// 初始化表格
table.bootstrapTable(tableOptions);
// 为表格绑定事件
Table.api.bindevent(table);
},
update:function(){
this.bindevent();
},
insert:function(){
this.bindevent();
},
bindevent:function(){
Config['upload_url'] = 'files/upload';
var form = $('form');
var that = this;
Form.api.bindevent(form)
}
};
return thali
});
+22 -22
View File
@@ -4,21 +4,22 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
index: function () {
window.filterData = {
};
window.Lang = window.Lang ? window.Lang : Config.currency_langs;
window.groupOption=Config.groupList;
window.roleOption=Config.roleList;
Table.api.init({
extend: {
index_url: '/app/admin/user/select',
add_url: '/app/admin/user/insert',
edit_url: '/app/admin/user/update',
del_url: '/app/admin/user/delete',
multi_url: '/app/admin/user/multi',
dragsort_url: '/app/admin/user/weigh',
index_url: 'user/select',
add_url: 'user/insert',
edit_url: 'user/update',
del_url: 'user/delete',
multi_url: 'user/multi',
dragsort_url: 'user/weigh',
table: 'user',
}
});
console.log(Config)
//console.log(Config)
var table = $("#table");
var columns = [
{checkbox: true},
@@ -28,16 +29,15 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
filter: "number",
sortable: true // 是否排序
},
// {
// title: "角色",
// field: "role_id",
// formatter:function(v,row){
// return row.role ? row.role.name : '用户';
// },
// filter: "select",
// filterOption:"roleOption",
// visible: false,
// },
{
title: "角色",
field: "role_id",
formatter:function(v,row){
return row.role ? row.role.name : '用户';
},
filter: "select",
filterOption:"roleOption"
},
{
title: "昵称",
field: "nickname"
@@ -102,7 +102,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
name:"team",
icon:"mdi mdi-account-group-outline",
classname:"btn btn-xs btn-info btn-dialog",
url:'/app/admin/user/team'
url:'user/team'
}
]
});
@@ -120,20 +120,20 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.bindevent(table);
},
update:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
Config['upload_url'] = '/files/avatar';
var form = $('form');
Form.api.bindevent(form)
this.getRole();
},
insert:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
Config['upload_url'] = '/files/avatar';
var form = $('form');
Form.api.bindevent(form)
this.getRole();
},
getRole:function(){
Fast.api.ajax({
url: "/app/admin/UserRole/select?format=tree",
url: "UserRole/select?format=tree",
dataType: "json",
success: function (res) {
Layer.closeAll();
@@ -166,7 +166,7 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/team/select',
index_url: 'team/select',
add_url: null,
edit_url: null,
del_url: null,
+15 -15
View File
@@ -4,12 +4,12 @@ define(['table','form','yntree'], function (Table,Form,YnTree1) {
index: function () {
Table.api.init({
extend: {
index_url: '/app/admin/userrole/select',
add_url: '/app/admin/userrole/insert',
edit_url: '/app/admin/userrole/update',
del_url: '/app/admin/userrole/delete',
multi_url: '/app/admin/userrole/multi',
dragsort_url: '/app/admin/userrole/weigh',
index_url: 'userrole/select',
add_url: 'userrole/insert',
edit_url: 'userrole/update',
del_url: 'userrole/delete',
multi_url: 'userrole/multi',
dragsort_url: 'userrole/weigh',
table: 'userrole',
}
});
@@ -41,23 +41,23 @@ define(['table','form','yntree'], function (Table,Form,YnTree1) {
filter: "string",
},
{
field: 'need_sales',
title: '销售额',
field: 'max_send_msg_count',
title: '最大消息数量',
filter: "number",
},
{
field: 'consume_reward',
title: '消费奖励',
field: 'max_friend_count',
title: '最大好友数量',
filter: "number",
},
{
field: 'income_reward',
title: '产值奖',
field: 'max_group_join_count',
title: '群组加入限制',
filter: "number",
},
{
field: 'withdrawl_reward',
title: '提现奖励',
field: 'max_gourp_create_count',
title: '群组创建限制',
filter: "number",
},
{
@@ -134,7 +134,7 @@ define(['table','form','yntree'], function (Table,Form,YnTree1) {
// return false;
// }
$.ajax({
url: "/app/admin/userrole/tree",
url: "userrole/tree",
type: 'post',
dataType: 'json',
data: {id: id, pid: $(this).val()},
+10 -56
View File
@@ -1,4 +1,4 @@
define(['table', 'upload','form','template','treegrid','bootstrap-table-treegrid'], function (Table,Upload,Form,Template) {
define(['table', 'form','../libs/iconselect','treegrid','bootstrap-table-treegrid'], function (Table,Form,IconSelector) {
var AdminRule = {
//Do setup work hereAction
index: function () {
@@ -9,12 +9,12 @@ define(['table', 'upload','form','template','treegrid','bootstrap-table-treegrid
var apiResults_type = ["目录","菜单","权限"];
Table.api.init({
extend: {
index_url: '/app/admin/UserRule/select',
add_url: '/app/admin/UserRule/insert',
edit_url: '/app/admin/UserRule/update',
del_url: '/app/admin/UserRule/delete',
multi_url: '/app/admin/UserRule/multi',
dragsort_url: '/app/admin/UserRule/weigh',
index_url: 'UserRule/select',
add_url: 'UserRule/insert',
edit_url: 'UserRule/update',
del_url: 'UserRule/delete',
multi_url: 'UserRule/multi',
dragsort_url: 'UserRule/weigh',
table: 'UserRule',
}
});
@@ -183,15 +183,15 @@ define(['table', 'upload','form','template','treegrid','bootstrap-table-treegrid
this.bindevent();
},
bindevent:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
Config['upload_url'] = '/files/avatar';
var form = $('form');
Form.api.bindevent(form)
this.getRole();
this.initIcoselect();
IconSelector.bind($(".btn-search-icon"),$("input#icon"));
},
getRole:function(){
Fast.api.ajax({
url: "/app/admin/UserRole/select?format=tree",
url: "UserRole/select?format=tree",
dataType: "json",
success: function (res) {
Layer.closeAll();
@@ -208,52 +208,6 @@ define(['table', 'upload','form','template','treegrid','bootstrap-table-treegrid
$('#roles').append(html);
}
});
},
initIcoselect:function(){
var iconlist = [];
var iconfunc = function () {
Layer.open({
type: 1,
area: ['99%', '98%'], //宽高
content: Template('chooseicontpl', {iconlist: iconlist})
});
};
$(document).on('change keyup', "#icon", function () {
$(this).prev().find("i").prop("class", $(this).val());
});
$(document).on('click', ".btn-search-icon", function () {
if (iconlist.length == 0) {
$.get(Config.cdnurl + "/app/admin/css/materialdesignicons.min.css", function (ret) {
window.iconret = ret;
// var exp = /\.mdi-(.*):before/ig;
// var result;
// while ((result = exp.exec(ret)) != null) {
// iconlist.push(result[1]);
// }
var list = Array.from(iconret.matchAll(/mdi-(.*?):before/g));
for (let index = 1; index < list.length; index++) {
//const element = list[index];
iconlist.push(list[index][1]);
}
iconfunc();
});
} else {
iconfunc();
}
});
$(document).on('click', '#chooseicon ul li', function () {
$("input#icon").val('mdi mdi-' + $(this).data("font")).trigger("change");
Layer.closeAll();
});
$(document).on('keyup', 'input.js-icon-search', function () {
$("#chooseicon ul li").show();
if ($(this).val() != '') {
$("#chooseicon ul li:not([data-font*='" + $(this).val() + "'])").hide();
}
});
}
};
return AdminRule
+109
View File
@@ -0,0 +1,109 @@
define(['table', 'upload','form'], function (Table,Upload,Form) {
var Version = {
//Do setup work hereAction
index: function () {
window.filterData = {
};
window.statusOption = Config.statusList;
window.osList = Config.osList;
window.forceList = Config.forceList;
window.typeList = Config.typeList;
Table.api.init({
extend: {
index_url: 'version/select',
add_url: 'version/insert',
edit_url: 'version/update',
del_url: 'version/delete',
multi_url: 'version/multi',
dragsort_url: 'version/weigh',
table: 'version',
}
});
var table = $("#table");
var tableOptions = {
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
commonSearch: false,
search: false,
columns: [
[
{checkbox: true},
{
field: 'id',
title: 'ID',
filter: "number",
sortable: true // 是否排序
},
{
title: "platform",
field: "platform",
filter: "select",
filterOption:"osList",
visible: false,
},
{
title: "类型",
field: "type",
filter: "select",
filterOption:"typeList"
},
{
title: "类型",
field: "version",
filter: "string"
},
{
title: "WGT类型",
field: "version_wgt",
filter: "int"
},
{
title: "强制更新",
field: "force",
filter: "select",
filterOption:"typeList"
},
{
title: "创建时间",
field: "created_at"
},
{
title: "更新时间",
field: "updated_at",
formatter:Table.api.formatter.datetime,
visible: false,
},
{
title: "状态",
field: "status",
formatter: Table.api.formatter.switch,
filter:'select',
filterOption:'statusOption'
},
{
field: 'operate', title: '操作',
table: table, events: Table.api.events.operate,
formatter: Table.api.formatter.operate
}
]
]
};
// 初始化表格
table.bootstrapTable(tableOptions);
// 为表格绑定事件
Table.api.bindevent(table);
},
update:function(){
var form = $('form');
Form.api.bindevent(form);
},
insert:function(){
var form = $('form');
Form.api.bindevent(form);
}
};
return Version
});
+6 -6
View File
@@ -7,12 +7,12 @@ define(['table', 'upload','form','qrcode'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/withdrawl/select',
add_url: '/app/admin/withdrawl/insert',
edit_url: '/app/admin/withdrawl/update',
//del_url: '/app/admin/withdrawl/delete',
multi_url: '/app/admin/withdrawl/multi',
//dragsort_url: '/app/admin/withdrawl/weigh',
index_url: 'withdrawl/select',
add_url: 'withdrawl/insert',
edit_url: 'withdrawl/update',
//del_url: 'withdrawl/delete',
multi_url: 'withdrawl/multi',
//dragsort_url: 'withdrawl/weigh',
table: 'withdrawl',
}
});
+3 -157
View File
@@ -10,11 +10,11 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/workrecord/select',
index_url: 'workrecord/select',
add_url: null,
edit_url: '/app/admin/workrecord/update',
edit_url: 'workrecord/update',
del_url: null,
multi_url: '/app/admin/workrecord/multi',
multi_url: 'workrecord/multi',
dragsort_url: null,
table: 'work_record',
}
@@ -69,166 +69,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.bindevent(table);
},
update:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
var form = $('form');
Form.api.bindevent(form)
this.getRole();
},
insert:function(){
Config['uploadurl'] = '/app/admin/attachment/avatar';
var form = $('form');
Form.api.bindevent(form)
this.getRole();
},
getRole:function(){
Fast.api.ajax({
url: "/app/admin/UserRole/select?format=tree",
dataType: "json",
success: function (res) {
Layer.closeAll();
var html = "";
var selected=$('#roles').data('value');
for (let index = 0; index < res.data.length; index++) {
const element = res.data[index];
if(selected == element.id){
html+='<option value="'+element.id+'" selected>'+element.name+'</option>';
}else{
html+='<option value="'+element.id+'">'+element.name+'</option>';
}
}
$('#roles').append(html);
}
});
},
team:function(){
window.filterData = {
"user_id":{value1:Fast.api.query('ids'),symbol:'=','value2':''},
'type' : {value1:'child',symbol:'=','value2':''}
};
$('.nav-tabs li').on('click',function(){
$('.nav-tabs li').removeClass('active');
$(this).addClass('active');
window.filterData['type'] = {value1:$(this).data('type'),symbol:'=','value2':''};
table.bootstrapTable('selectPage', 1);
});
Table.api.init({
extend: {
index_url: '/app/admin/team/select',
add_url: null,
edit_url: null,
del_url: null,
multi_url: null,
dragsort_url: null,
table: 'team',
}
});
var table = $("#table");
var tableOptions = {
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
commonSearch: false,
search: false,
columns: [
[
{checkbox: true},
{
title: "深度",
field: "depth",
},
{
field: 'id',
title: 'ID',
filter: "number",
sortable: true // 是否排序
},
{
title: "角色",
field: "role",
visible: false,
},
{
title: "用户名",
field: "username",
filter: "string",
},
// {
// title: "等级",
// field: "level",
// visible: false,
// },
{
title: "余额",
field: "money",
formatter:Table.api.formatter.number,
sortable: true,
//visible: false,
},
{
title: "积分",
field: "score",
sortable: true,
formatter:Table.api.formatter.number
},
{
title: "待结算",
field: "currency1",
formatter:Table.api.formatter.number
},
{
title: "失效算力",
field: "currency2",
sortable: true,
formatter:Table.api.formatter.number
},
{
title: "登录时间",
field: "last_time",
formatter:Table.api.formatter.datetime,
visible: false,
},
{
title: "登录ip",
field: "last_ip",
visible: false,
},
{
title: "注册时间",
field: "join_time",
formatter:Table.api.formatter.datetime,
filter:'datetime'
},
{
title: "注册ip",
field: "join_ip",
visible: false,
},
{
title: "创建时间",
field: "created_at",
visible: false,
},
{
title: "更新时间",
field: "updated_at",
formatter:Table.api.formatter.datetime,
visible: false,
},
{
title: "状态",
field: "status",
formatter: Table.api.formatter.switch
}
]
]
};
// 初始化表格
table.bootstrapTable(tableOptions);
// 为表格绑定事件
Table.api.bindevent(table);
}
};
return User
+6 -6
View File
@@ -9,12 +9,12 @@ define(['table', 'upload','form'], function (Table,Upload,Form) {
Table.api.init({
extend: {
index_url: '/app/admin/xuanchuan/select',
add_url: '/app/admin/xuanchuan/insert',
edit_url: '/app/admin/xuanchuan/update',
del_url: '/app/admin/xuanchuan/delete',
multi_url: '/app/admin/xuanchuan/multi',
dragsort_url: '/app/admin/xuanchuan/weigh',
index_url: 'xuanchuan/select',
add_url: 'xuanchuan/insert',
edit_url: 'xuanchuan/update',
del_url: 'xuanchuan/delete',
multi_url: 'xuanchuan/multi',
dragsort_url: 'xuanchuan/weigh',
table: 'user_xuanchuan',
}
});
+16 -7
View File
@@ -106,15 +106,20 @@ define(['jquery', 'bootstrap', 'layer','lightyear'], function ($, undefined, Lay
Fast.events.onAjaxError(ret, error);
}
}, options);
options.url = Fast.api.fixurl(options.url);
return $.ajax(options);
},
//修复URL
fixurl: function (url) {
if (url.substr(0, 1) !== "/") {
var r = new RegExp('^(?:[a-z]+:)?//', 'i');
if (!r.test(url)) {
url = Config.moduleurl + "/" + url;
}
if (url.substr(0, 1) == "/") {
return url;
}
if (url.substr(0, 4) == "http") {
return url;
}
var r = new RegExp('^(?:[a-z]+:)?//', 'i');
if (!r.test(url)) {
url = Config.moduleurl + "/" + url;
}
return url;
},
@@ -148,12 +153,16 @@ define(['jquery', 'bootstrap', 'layer','lightyear'], function ($, undefined, Lay
},
//打开一个弹出窗口
open: function (url, title, options) {
if(options && options.area && (typeof options.area == 'string' && options.area.indexOf(','))){
options.area = options.area.split(',');
}
title = options && options.title ? options.title : (title ? title : "");
url = Fast.api.fixurl(url);
url = url + (url.indexOf("?") > -1 ? "&" : "?") + "dialog=1";
//var area = Fast.config.openArea != undefined ? Fast.config.openArea : [$(window).width() > 800 ? '800px' : '95%', $(window).height() > 600 ? '600px' : '95%'];
var area = Fast.config.openArea != undefined ? Fast.config.openArea : ['95%', '90%'];
var area = Fast.config.openArea != undefined ? Fast.config.openArea : (options.area || ['95%', '90%']);
//console.log(options,area)
options = $.extend({
type: 2,
title: title,
@@ -332,7 +341,7 @@ define(['jquery', 'bootstrap', 'layer','lightyear'], function ($, undefined, Lay
return self == parent;
},
isMainIframe:function(){
return parent.location.pathname.toLocaleLowerCase() == '/app/admin/index/index';
return parent.location.pathname.toLocaleLowerCase() == Config.admin_path+'/index/index';
},
isPopIframe:function(){
if(Fast.isTopWindow()){
File diff suppressed because it is too large Load Diff
@@ -1,29 +0,0 @@
{
"name": "layer",
"main": "src/layer.js",
"version": "3.5.3",
"homepage": "https://github.com/sentsin/layer",
"authors": [
"sentsin <xu@sentsin.com>"
],
"description": "弹窗组件",
"moduleType": [
"amd",
"globals"
],
"keywords": [
"layer",
"layui",
"dialog"
],
"license": "MIT",
"_release": "3.5.3",
"_resolution": {
"type": "version",
"tag": "v3.5.3",
"commit": "7ef901632a7d21f37692ae5d4f9e671c7d57ce47"
},
"_source": "https://github.com/karsonzhang/fastadmin-layer.git",
"_target": "~3.5.1",
"_originalSource": "fastadmin-layer"
}
@@ -1,23 +0,0 @@
1.8.5/
*.iml
.idea/
.ipr
.iws
*~
~*
*.diff
*.patch
*.bak
.DS_Store
Thumbs.db
.svn/
*.swp
.nojekyll
.project
.settings/
node_modules/
_site/
.npmignore
release/
skin/moon/
src/skin/moon/
@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2016 layui
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -1,15 +0,0 @@
## 概要
layer 是一款历来都备受青睐的 Web 弹出层组件,具备全方位的解决方案,面向的是各个水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验。在与同类组件的比较中,layer 会更能被开发者所选择。这不仅是凭「脸」取胜,而是它尽可能地在以更少的代码展现更强健的功能,且格外注重性能的提升、易用和实用性,layer 甚至还兼容了包括 IE6 在内的所有主流浏览器。其数量可观的基础属性和方法,使得您可以自定义太多您需要的风格,每一种弹层模式各具特色,广受欢迎。当然,这种「王婆卖瓜」的陈述听起来总是有点难受,因此你需要进一步了解她是否真的如你所愿。
[文档与演示](http://layer.layui.com/)
## 愿景
成为网页弹出层的首先交互方案
## 现状
因着数年的坚持维护,已被运用在不计其数 Web 平台。几乎所处可见,其中还不乏众多知名大型网站。layer 已被国内乃至全世界至少数十万的开发者所使用过。
## 相关
[官网](http://layer.layui.com/)
@@ -1,20 +0,0 @@
{
"name": "layer",
"main": "src/layer.js",
"version": "3.5.3",
"homepage": "https://github.com/sentsin/layer",
"authors": [
"sentsin <xu@sentsin.com>"
],
"description": "弹窗组件",
"moduleType": [
"amd",
"globals"
],
"keywords": [
"layer",
"layui",
"dialog"
],
"license": "MIT"
}
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
/*! layer mobile-v2.0.0 Web 通用弹出层组件 MIT License http://layer.layui.com/mobile By 贤心 */
;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'<h3 style="'+(e?n.title[1]:"")+'">'+(e?n.title[0]:n.title)+"</h3>":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e='<span yes type="1">'+n.btn[0]+"</span>",2===t&&(e='<span no type="0">'+n.btn[1]+"</span>"+e),'<div class="layui-m-layerbtn">'+e+"</div>"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='<i></i><i class="layui-m-layerload"></i><i></i><p>'+(n.content||"")+"</p>"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"<div "+("string"==typeof n.shade?'style="'+n.shade+'"':"")+' class="layui-m-layershade"></div>':"")+'<div class="layui-m-layermain" '+(n.fixed?"":'style="position:static;"')+'><div class="layui-m-layersection"><div class="layui-m-layerchild '+(n.skin?"layui-m-layer-"+n.skin+" ":"")+(n.className?n.className:"")+" "+(n.anim?"layui-m-anim-"+n.anim:"")+'" '+(n.style?'style="'+n.style+'"':"")+">"+l+'<div class="layui-m-layercont">'+n.content+"</div>"+c+"</div></div></div>",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;o<r;o++)l.touch(s[o],a);if(e.shade&&e.shadeClose){var c=t[i]("layui-m-layershade")[0];l.touch(c,function(){layer.close(n.index,e.end)})}e.end&&(l.end[n.index]=e.end)},e.layer={v:"2.0",index:r,open:function(e){var t=new c(e||{});return t.index},close:function(e){var n=a("#"+o[0]+e)[0];n&&(n.innerHTML="",t.body.removeChild(n),clearTimeout(l.timer[e]),delete l.timer[e],"function"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[i](o[0]),n=0,a=e.length;n<a;n++)layer.close(0|e[0].getAttribute("index"))}},"function"==typeof define?define(function(){return layer}):function(){var e=document.scripts,n=e[e.length-1],i=n.src,a=i.substring(0,i.lastIndexOf("/")+1);n.getAttribute("merge")||document.head.appendChild(function(){var e=t.createElement("link");return e.href=a+"need/layer.css?2.0",e.type="text/css",e.rel="styleSheet",e.id="layermcss",e}())}()}(window);
File diff suppressed because one or more lines are too long
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 B

Some files were not shown because too many files have changed in this diff Show More