mirror of https://gitee.com/karson/fastadmin.git
修复nice-validator在打包后台空白的BUG
将AdminLTE和Echarts从Bower中移除,极大缩减扩展资源包的大小 新增前台Ajax的处理方法 移除冗余的第三方扩展包 固定JS中第三方的语言的标识,如果需要切换语言,JS中需要手动修改 修复前台注册登录的提示错误 修复后台菜单栏在极端情况下的BUGpull/323483/MERGE
parent
9de4a1ef01
commit
13942c36fa
|
|
@ -2,6 +2,7 @@
|
|||
.idea
|
||||
composer.lock
|
||||
*.log
|
||||
*.css.map
|
||||
thinkphp
|
||||
vendor
|
||||
runtime
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ class Menu extends Command
|
|||
}
|
||||
}
|
||||
//过滤掉其它字符
|
||||
$controllerTitle = trim(preg_replace(array('/^\/\*\*(.*)[\n\r\t]/', '/[\s]+\*\//', '/\*\s@(.*)/', '/[\s|\*]+/'), '', $classComment));
|
||||
$controllerTitle = trim(preg_replace(array('/^\/\*\*(.*)[\n\r\t]/u', '/[\s]+\*\//u', '/\*\s@(.*)/u', '/[\s|\*]+/u'), '', $classComment));
|
||||
//先定入菜单的数据
|
||||
$pid = 0;
|
||||
$name = "/admin";
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@ use think\Db;
|
|||
|
||||
/**
|
||||
* 重新生成上传的参数配置
|
||||
* @return type
|
||||
* @param array $params
|
||||
* @return string
|
||||
*/
|
||||
function get_upload_multipart($params = [])
|
||||
{
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
<div class="form-group"><label class="control-sidebar-subheading"><input type="checkbox" data-layout="fixed" class="pull-right"> {:__('Fixed Layout')}</label><p>{:__("You can't use fixed and boxed layouts together")}</p></div>
|
||||
<div class="form-group"><label class="control-sidebar-subheading"><input type="checkbox" data-layout="layout-boxed" class="pull-right"> {:__('Boxed Layout')}</label><p>{:__('Activate the boxed layout')}</p></div>
|
||||
<div class="form-group"><label class="control-sidebar-subheading"><input type="checkbox" data-layout="sidebar-collapse" class="pull-right"> {:__('Toggle Sidebar')}</label><p>{:__("Toggle the left sidebar's state (open or collapse)")}</p></div>
|
||||
<!--<div class="form-group"><label class="control-sidebar-subheading"><input type="checkbox" data-enable="expandOnHover" class="pull-right"> {:__('Sidebar Expand on Hover')}</label><p>{:__('Let the sidebar mini expand on hover')}</p></div>-->
|
||||
<div class="form-group"><label class="control-sidebar-subheading"><input type="checkbox" data-enable="expandOnHover" class="pull-right"> {:__('Sidebar Expand on Hover')}</label><p>{:__('Let the sidebar mini expand on hover')}</p></div>
|
||||
<div class="form-group"><label class="control-sidebar-subheading"><input type="checkbox" data-menu="show-submenu" class="pull-right"> {:__('Show sub menu')}</label><p>{:__('Always show sub menu')}</p></div>
|
||||
<div class="form-group"><label class="control-sidebar-subheading"><input type="checkbox" data-menu="disable-top-badge" class="pull-right"> {:__('Disable top menu badge')}</label><p>{:__('Disable top menu badge without left menu')}</p></div>
|
||||
<div class="form-group"><label class="control-sidebar-subheading"><input type="checkbox" data-controlsidebar="control-sidebar-open" class="pull-right"> {:__('Toggle Right Sidebar Slide')}</label><p>{:__('Toggle between slide over content and push content effects')}</p></div>
|
||||
|
|
|
|||
|
|
@ -42,6 +42,22 @@
|
|||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="dropdown messages-menu github-commits">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<i class="fa fa-github"></i>
|
||||
<span class="label label-info"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="header">{:__('Recent commits')}</li>
|
||||
<li>
|
||||
<ul class="menu">
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
<li class="footer"><a href="#" target="_blank">{:__('View all')}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="javascript:;" data-toggle="wipecache" title="清空缓存">
|
||||
<i class="fa fa-trash"></i>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="{$config.language}">
|
||||
<head>
|
||||
{include file="common/meta" /}
|
||||
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
<footer class="main-footer hide">
|
||||
<div class="pull-right hidden-xs">
|
||||
</div>
|
||||
<strong>Copyright © 2014-2016 <a href="http://fastadmin.net">Fastadmin</a>.</strong> All rights
|
||||
<strong>Copyright © 2017-2018 <a href="http://fastadmin.net">Fastadmin</a>.</strong> All rights
|
||||
reserved.
|
||||
</footer>
|
||||
|
||||
|
|
|
|||
|
|
@ -213,8 +213,7 @@ class Backend extends Controller
|
|||
break;
|
||||
}
|
||||
}
|
||||
$where = function($query) use ($where)
|
||||
{
|
||||
$where = function($query) use ($where) {
|
||||
foreach ($where as $k => $v)
|
||||
{
|
||||
if (is_array($v))
|
||||
|
|
|
|||
|
|
@ -0,0 +1,119 @@
|
|||
<?php
|
||||
|
||||
namespace app\index\controller;
|
||||
|
||||
use app\common\controller\Frontend;
|
||||
use fast\Random;
|
||||
use think\Config;
|
||||
use think\Lang;
|
||||
|
||||
/**
|
||||
* Ajax异步请求接口
|
||||
* @internal
|
||||
*/
|
||||
class Ajax extends Frontend
|
||||
{
|
||||
|
||||
protected $noNeedLogin = ['lang'];
|
||||
protected $noNeedRight = ['*'];
|
||||
protected $layout = '';
|
||||
|
||||
/**
|
||||
* 加载语言包
|
||||
*/
|
||||
public function lang()
|
||||
{
|
||||
header('Content-Type: application/javascript');
|
||||
$modulename = $this->request->module();
|
||||
$callback = $this->request->get('callback');
|
||||
$controllername = input("controllername");
|
||||
Lang::load(APP_PATH . $modulename . '/lang/' . Lang::detect() . '/' . str_replace('.', '/', $controllername) . '.php');
|
||||
//强制输出JSON Object
|
||||
$result = 'define(' . json_encode(Lang::get(), JSON_FORCE_OBJECT | JSON_UNESCAPED_UNICODE) . ');';
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
*/
|
||||
public function upload()
|
||||
{
|
||||
$this->code = -1;
|
||||
$file = $this->request->file('file');
|
||||
|
||||
//判断是否已经存在附件
|
||||
$sha1 = $file->hash();
|
||||
$uploaded = model("attachment")->where('sha1', $sha1)->find();
|
||||
if ($uploaded)
|
||||
{
|
||||
$this->code = 1;
|
||||
$this->data = [
|
||||
'url' => $uploaded['url']
|
||||
];
|
||||
return;
|
||||
}
|
||||
|
||||
$upload = Config::get('upload');
|
||||
|
||||
preg_match('/(\d+)(\w+)/', $upload['maxsize'], $matches);
|
||||
$type = strtolower($matches[2]);
|
||||
$typeDict = ['b' => 0, 'k' => 1, 'kb' => 1, 'm' => 2, 'mb' => 2, 'gb' => 3, 'g' => 3];
|
||||
$size = (int) $upload['maxsize'] * pow(1024, isset($typeDict[$type]) ? $typeDict[$type] : 0);
|
||||
$fileInfo = $file->getInfo();
|
||||
$suffix = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION));
|
||||
$suffix = $suffix ? $suffix : 'file';
|
||||
$replaceArr = [
|
||||
'{year}' => date("Y"),
|
||||
'{mon}' => date("m"),
|
||||
'{day}' => date("d"),
|
||||
'{hour}' => date("H"),
|
||||
'{min}' => date("i"),
|
||||
'{sec}' => date("s"),
|
||||
'{random}' => Random::alnum(16),
|
||||
'{random32}' => Random::alnum(32),
|
||||
'{filename}' => $suffix ? substr($fileInfo['name'], 0, strripos($fileInfo['name'], '.')) : $fileInfo['name'],
|
||||
'{suffix}' => $suffix,
|
||||
'{.suffix}' => $suffix ? '.' . $suffix : '',
|
||||
'{filemd5}' => md5_file($fileInfo['tmp_name']),
|
||||
];
|
||||
$savekey = $upload['savekey'];
|
||||
$savekey = str_replace(array_keys($replaceArr), array_values($replaceArr), $savekey);
|
||||
|
||||
$uploadDir = substr($savekey, 0, strripos($savekey, '/') + 1);
|
||||
$fileName = substr($savekey, strripos($savekey, '/') + 1);
|
||||
//
|
||||
$splInfo = $file->validate(['size' => $size])->move(ROOT_PATH . '/public' . $uploadDir, $fileName);
|
||||
if ($splInfo)
|
||||
{
|
||||
$imagewidth = $imageheight = 0;
|
||||
if (in_array($suffix, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf']))
|
||||
{
|
||||
$imgInfo = getimagesize($splInfo->getPathname());
|
||||
$imagewidth = isset($imgInfo[0]) ? $imgInfo[0] : $imagewidth;
|
||||
$imageheight = isset($imgInfo[1]) ? $imgInfo[1] : $imageheight;
|
||||
}
|
||||
$params = array(
|
||||
'filesize' => $fileInfo['size'],
|
||||
'imagewidth' => $imagewidth,
|
||||
'imageheight' => $imageheight,
|
||||
'imagetype' => $suffix,
|
||||
'imageframes' => 0,
|
||||
'mimetype' => $fileInfo['type'],
|
||||
'url' => $uploadDir . $splInfo->getSaveName(),
|
||||
'uploadtime' => time(),
|
||||
'sha1' => $sha1,
|
||||
);
|
||||
model("attachment")->create(array_filter($params));
|
||||
$this->code = 1;
|
||||
$this->data = [
|
||||
'url' => $uploadDir . $splInfo->getSaveName()
|
||||
];
|
||||
}
|
||||
else
|
||||
{
|
||||
// 上传失败获取错误信息
|
||||
$this->data = $file->getError();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -19,4 +19,10 @@ class Index extends Frontend
|
|||
return $this->view->fetch();
|
||||
}
|
||||
|
||||
public function news()
|
||||
{
|
||||
$newslist = \app\common\model\Page::where('category_id', 1)->order('weigh', 'desc')->select();
|
||||
return jsonp(['newslist' => $newslist, 'new' => count($newslist), 'url' => 'http://www.fastadmin.net?ref=news']);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ class User extends Frontend
|
|||
$synchtml = $uc->uc_user_synregister($this->user->id, $password);
|
||||
}
|
||||
$referer = Cookie::get('referer_url');
|
||||
$this->error(__('Sign up successful') . $synchtml, $url);
|
||||
$this->success(__('Sign up successful') . $synchtml, $url);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -96,7 +96,7 @@ class User extends Frontend
|
|||
$uc = new Client();
|
||||
$synchtml = $uc->uc_user_synlogin($this->user->id);
|
||||
}
|
||||
$this->error(__('Logged in successful') . $synchtml, $url);
|
||||
$this->success(__('Logged in successful') . $synchtml, $url);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
13
bower.json
13
bower.json
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"name": "thinkphp-admin",
|
||||
"description": "",
|
||||
"name": "fastadmin",
|
||||
"description": "the fastest admin framework",
|
||||
"main": "",
|
||||
"license": "MIT",
|
||||
"homepage": "",
|
||||
"license": "Apache2.0",
|
||||
"homepage": "http://www.fastadmin.net",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"jquery": "^2.2.3",
|
||||
|
|
@ -27,10 +27,8 @@
|
|||
"require-css": "^0.1.8",
|
||||
"less": "^2.7.1",
|
||||
"tableExport.jquery.plugin": "^1.6.4",
|
||||
"echarts": "^3.3.1",
|
||||
"jquery-slimscroll": "slimscroll#^1.3.8",
|
||||
"jquery.cookie": "^1.4.1",
|
||||
"dropzone": "^4.3.0",
|
||||
"Sortable": "^1.5.0",
|
||||
"typeahead.js": "^0.11.1",
|
||||
"bootstrap-tagsinput": "^0.8.0",
|
||||
|
|
@ -40,7 +38,6 @@
|
|||
"devDependencies": {
|
||||
"dragsort": "https://github.com/karsonzhang/dragsort.git",
|
||||
"jquery-addtabs": "https://github.com/karsonzhang/jquery-addtabs.git",
|
||||
"jqcron": "https://github.com/karsonzhang/jqcron.git#",
|
||||
"AdminLTE": "https://github.com/karsonzhang/AdminLTE.git#^2.3.7"
|
||||
"jqcron": "https://github.com/karsonzhang/jqcron.git#"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ $_CACHE['apps'] = array (
|
|||
'appid' => '1',
|
||||
'type' => 'OTHER',
|
||||
'name' => 'FastAdmin',
|
||||
'url' => 'http://www.tp.com/index/ucenter',
|
||||
'url' => 'http://www.fa.com/index/ucenter',
|
||||
'ip' => '',
|
||||
'viewprourl' => '',
|
||||
'apifilename' => 'index',
|
||||
|
|
|
|||
|
|
@ -13,6 +13,22 @@ body {
|
|||
-o-transition: none;
|
||||
transition: none;
|
||||
}
|
||||
.main-header .navbar {
|
||||
position: relative;
|
||||
}
|
||||
.main-header .navbar .sidebar-toggle {
|
||||
position: absolute;
|
||||
width: 45px;
|
||||
text-align: center;
|
||||
}
|
||||
.main-header .navbar #nav {
|
||||
position: absolute;
|
||||
left: 45px;
|
||||
}
|
||||
.main-header .navbar .navbar-custom-menu {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
.note-dialog .modal {
|
||||
z-index: 1060;
|
||||
}
|
||||
|
|
@ -38,6 +54,12 @@ body {
|
|||
-webkit-overflow-scrolling: touch;
|
||||
overflow: auto;
|
||||
}
|
||||
.common-search-table {
|
||||
min-height: 20px;
|
||||
padding: 15px;
|
||||
margin-bottom: 15px;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
/*
|
||||
* RIBBON
|
||||
*/
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,388 +0,0 @@
|
|||
/*
|
||||
* The MIT License
|
||||
* Copyright (c) 2012 Matias Meno <m@tias.me>
|
||||
*/
|
||||
@-webkit-keyframes passing-through {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(40px);
|
||||
-moz-transform: translateY(40px);
|
||||
-ms-transform: translateY(40px);
|
||||
-o-transform: translateY(40px);
|
||||
transform: translateY(40px); }
|
||||
30%, 70% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0px);
|
||||
-moz-transform: translateY(0px);
|
||||
-ms-transform: translateY(0px);
|
||||
-o-transform: translateY(0px);
|
||||
transform: translateY(0px); }
|
||||
100% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(-40px);
|
||||
-moz-transform: translateY(-40px);
|
||||
-ms-transform: translateY(-40px);
|
||||
-o-transform: translateY(-40px);
|
||||
transform: translateY(-40px); } }
|
||||
@-moz-keyframes passing-through {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(40px);
|
||||
-moz-transform: translateY(40px);
|
||||
-ms-transform: translateY(40px);
|
||||
-o-transform: translateY(40px);
|
||||
transform: translateY(40px); }
|
||||
30%, 70% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0px);
|
||||
-moz-transform: translateY(0px);
|
||||
-ms-transform: translateY(0px);
|
||||
-o-transform: translateY(0px);
|
||||
transform: translateY(0px); }
|
||||
100% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(-40px);
|
||||
-moz-transform: translateY(-40px);
|
||||
-ms-transform: translateY(-40px);
|
||||
-o-transform: translateY(-40px);
|
||||
transform: translateY(-40px); } }
|
||||
@keyframes passing-through {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(40px);
|
||||
-moz-transform: translateY(40px);
|
||||
-ms-transform: translateY(40px);
|
||||
-o-transform: translateY(40px);
|
||||
transform: translateY(40px); }
|
||||
30%, 70% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0px);
|
||||
-moz-transform: translateY(0px);
|
||||
-ms-transform: translateY(0px);
|
||||
-o-transform: translateY(0px);
|
||||
transform: translateY(0px); }
|
||||
100% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(-40px);
|
||||
-moz-transform: translateY(-40px);
|
||||
-ms-transform: translateY(-40px);
|
||||
-o-transform: translateY(-40px);
|
||||
transform: translateY(-40px); } }
|
||||
@-webkit-keyframes slide-in {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(40px);
|
||||
-moz-transform: translateY(40px);
|
||||
-ms-transform: translateY(40px);
|
||||
-o-transform: translateY(40px);
|
||||
transform: translateY(40px); }
|
||||
30% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0px);
|
||||
-moz-transform: translateY(0px);
|
||||
-ms-transform: translateY(0px);
|
||||
-o-transform: translateY(0px);
|
||||
transform: translateY(0px); } }
|
||||
@-moz-keyframes slide-in {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(40px);
|
||||
-moz-transform: translateY(40px);
|
||||
-ms-transform: translateY(40px);
|
||||
-o-transform: translateY(40px);
|
||||
transform: translateY(40px); }
|
||||
30% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0px);
|
||||
-moz-transform: translateY(0px);
|
||||
-ms-transform: translateY(0px);
|
||||
-o-transform: translateY(0px);
|
||||
transform: translateY(0px); } }
|
||||
@keyframes slide-in {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(40px);
|
||||
-moz-transform: translateY(40px);
|
||||
-ms-transform: translateY(40px);
|
||||
-o-transform: translateY(40px);
|
||||
transform: translateY(40px); }
|
||||
30% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0px);
|
||||
-moz-transform: translateY(0px);
|
||||
-ms-transform: translateY(0px);
|
||||
-o-transform: translateY(0px);
|
||||
transform: translateY(0px); } }
|
||||
@-webkit-keyframes pulse {
|
||||
0% {
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
-o-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
10% {
|
||||
-webkit-transform: scale(1.1);
|
||||
-moz-transform: scale(1.1);
|
||||
-ms-transform: scale(1.1);
|
||||
-o-transform: scale(1.1);
|
||||
transform: scale(1.1); }
|
||||
20% {
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
-o-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
@-moz-keyframes pulse {
|
||||
0% {
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
-o-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
10% {
|
||||
-webkit-transform: scale(1.1);
|
||||
-moz-transform: scale(1.1);
|
||||
-ms-transform: scale(1.1);
|
||||
-o-transform: scale(1.1);
|
||||
transform: scale(1.1); }
|
||||
20% {
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
-o-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
-o-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
10% {
|
||||
-webkit-transform: scale(1.1);
|
||||
-moz-transform: scale(1.1);
|
||||
-ms-transform: scale(1.1);
|
||||
-o-transform: scale(1.1);
|
||||
transform: scale(1.1); }
|
||||
20% {
|
||||
-webkit-transform: scale(1);
|
||||
-moz-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
-o-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
.dropzone, .dropzone * {
|
||||
box-sizing: border-box; }
|
||||
|
||||
.dropzone {
|
||||
min-height: 15px;
|
||||
border: 1px solid rgba(0, 0, 0, 1);
|
||||
background: white;
|
||||
padding: 5px 5px; }
|
||||
.dropzone.dz-clickable {
|
||||
cursor: pointer; }
|
||||
.dropzone.dz-clickable * {
|
||||
cursor: default; }
|
||||
.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
|
||||
cursor: pointer; }
|
||||
.dropzone.dz-started .dz-message {
|
||||
display: none; }
|
||||
.dropzone.dz-drag-hover {
|
||||
border-style: solid; }
|
||||
.dropzone.dz-drag-hover .dz-message {
|
||||
opacity: 0.5; }
|
||||
.dropzone .dz-message {
|
||||
text-align: center;
|
||||
margin: 2em 0; }
|
||||
.dropzone .dz-preview {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
margin: 3px;
|
||||
min-height: 100px; }
|
||||
.dropzone .dz-preview:hover {
|
||||
z-index: 1000; }
|
||||
.dropzone .dz-preview:hover .dz-details {
|
||||
opacity: 1; }
|
||||
.dropzone .dz-preview.dz-file-preview .dz-image {
|
||||
border-radius: 10px;
|
||||
background: #999;
|
||||
background: linear-gradient(to bottom, #eee, #ddd); }
|
||||
.dropzone .dz-preview.dz-file-preview .dz-details {
|
||||
opacity: 1; }
|
||||
.dropzone .dz-preview.dz-image-preview {
|
||||
background: white; }
|
||||
.dropzone .dz-preview.dz-image-preview .dz-details {
|
||||
-webkit-transition: opacity 0.2s linear;
|
||||
-moz-transition: opacity 0.2s linear;
|
||||
-ms-transition: opacity 0.2s linear;
|
||||
-o-transition: opacity 0.2s linear;
|
||||
transition: opacity 0.2s linear; }
|
||||
.dropzone .dz-preview .dz-remove {
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
border: none; }
|
||||
.dropzone .dz-preview .dz-remove:hover {
|
||||
text-decoration: underline; }
|
||||
.dropzone .dz-preview:hover .dz-details {
|
||||
opacity: 1; }
|
||||
.dropzone .dz-preview .dz-details {
|
||||
z-index: 20;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
opacity: 0;
|
||||
font-size: 13px;
|
||||
min-width: 100%;
|
||||
max-width: 100%;
|
||||
padding: 2em 1em;
|
||||
text-align: center;
|
||||
color: rgba(0, 0, 0, 0.9);
|
||||
line-height: 150%; }
|
||||
.dropzone .dz-preview .dz-details .dz-size {
|
||||
margin-bottom: 1em;
|
||||
font-size: 16px; }
|
||||
.dropzone .dz-preview .dz-details .dz-filename {
|
||||
white-space: nowrap; }
|
||||
.dropzone .dz-preview .dz-details .dz-filename:hover span {
|
||||
border: 1px solid rgba(200, 200, 200, 0.8);
|
||||
background-color: rgba(255, 255, 255, 0.8); }
|
||||
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis; }
|
||||
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
|
||||
border: 1px solid transparent; }
|
||||
.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
|
||||
background-color: rgba(255, 255, 255, 0.4);
|
||||
padding: 0 0.4em;
|
||||
border-radius: 3px; }
|
||||
.dropzone .dz-preview:hover .dz-image img {
|
||||
-webkit-transform: scale(1.05, 1.05);
|
||||
-moz-transform: scale(1.05, 1.05);
|
||||
-ms-transform: scale(1.05, 1.05);
|
||||
-o-transform: scale(1.05, 1.05);
|
||||
transform: scale(1.05, 1.05);
|
||||
-webkit-filter: blur(8px);
|
||||
filter: blur(8px); }
|
||||
.dropzone .dz-preview .dz-image {
|
||||
border-radius: 10px;
|
||||
overflow: hidden;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
position: relative;
|
||||
display: block;
|
||||
z-index: 10; }
|
||||
.dropzone .dz-preview .dz-image img {
|
||||
display: block; }
|
||||
.dropzone .dz-preview.dz-success .dz-success-mark {
|
||||
-webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
|
||||
-moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
|
||||
-ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
|
||||
-o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
|
||||
animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
|
||||
.dropzone .dz-preview.dz-error .dz-error-mark {
|
||||
opacity: 1;
|
||||
-webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
|
||||
-moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
|
||||
-ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
|
||||
-o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
|
||||
animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
|
||||
.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
|
||||
pointer-events: none;
|
||||
opacity: 0;
|
||||
z-index: 500;
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -27px;
|
||||
margin-top: -27px; }
|
||||
.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
|
||||
display: block;
|
||||
width: 54px;
|
||||
height: 54px; }
|
||||
.dropzone .dz-preview.dz-processing .dz-progress {
|
||||
opacity: 1;
|
||||
-webkit-transition: all 0.2s linear;
|
||||
-moz-transition: all 0.2s linear;
|
||||
-ms-transition: all 0.2s linear;
|
||||
-o-transition: all 0.2s linear;
|
||||
transition: all 0.2s linear; }
|
||||
.dropzone .dz-preview.dz-complete .dz-progress {
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.4s ease-in;
|
||||
-moz-transition: opacity 0.4s ease-in;
|
||||
-ms-transition: opacity 0.4s ease-in;
|
||||
-o-transition: opacity 0.4s ease-in;
|
||||
transition: opacity 0.4s ease-in; }
|
||||
.dropzone .dz-preview:not(.dz-processing) .dz-progress {
|
||||
-webkit-animation: pulse 6s ease infinite;
|
||||
-moz-animation: pulse 6s ease infinite;
|
||||
-ms-animation: pulse 6s ease infinite;
|
||||
-o-animation: pulse 6s ease infinite;
|
||||
animation: pulse 6s ease infinite; }
|
||||
.dropzone .dz-preview .dz-progress {
|
||||
opacity: 1;
|
||||
z-index: 1000;
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
height: 16px;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-top: -8px;
|
||||
width: 80px;
|
||||
margin-left: -40px;
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
-webkit-transform: scale(1);
|
||||
border-radius: 8px;
|
||||
overflow: hidden; }
|
||||
.dropzone .dz-preview .dz-progress .dz-upload {
|
||||
background: #333;
|
||||
background: linear-gradient(to bottom, #666, #444);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 0;
|
||||
-webkit-transition: width 300ms ease-in-out;
|
||||
-moz-transition: width 300ms ease-in-out;
|
||||
-ms-transition: width 300ms ease-in-out;
|
||||
-o-transition: width 300ms ease-in-out;
|
||||
transition: width 300ms ease-in-out; }
|
||||
.dropzone .dz-preview.dz-error .dz-error-message {
|
||||
display: block; }
|
||||
.dropzone .dz-preview.dz-error:hover .dz-error-message {
|
||||
opacity: 1;
|
||||
pointer-events: auto; }
|
||||
.dropzone .dz-preview .dz-error-message {
|
||||
pointer-events: none;
|
||||
z-index: 1000;
|
||||
position: absolute;
|
||||
display: block;
|
||||
display: none;
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.3s ease;
|
||||
-moz-transition: opacity 0.3s ease;
|
||||
-ms-transition: opacity 0.3s ease;
|
||||
-o-transition: opacity 0.3s ease;
|
||||
transition: opacity 0.3s ease;
|
||||
border-radius: 8px;
|
||||
font-size: 13px;
|
||||
top: 130px;
|
||||
left: -10px;
|
||||
width: 140px;
|
||||
background: #be2626;
|
||||
background: linear-gradient(to bottom, #be2626, #a92222);
|
||||
padding: 0.5em 1.2em;
|
||||
color: white; }
|
||||
.dropzone .dz-preview .dz-error-message:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: 64px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #be2626; }
|
||||
|
|
@ -0,0 +1,451 @@
|
|||
body {
|
||||
background: #f1f4f6;
|
||||
}
|
||||
.selection {
|
||||
position: absolute;
|
||||
border: 1px solid #8B9;
|
||||
background-color: #BEC;
|
||||
}
|
||||
.note-dialog .modal {
|
||||
z-index: 1060;
|
||||
}
|
||||
.bootstrap-dialog .modal-dialog {
|
||||
/*width: 70%;*/
|
||||
max-width: 885px;
|
||||
}
|
||||
#header {
|
||||
background: #fff;
|
||||
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.content-wrapper {
|
||||
position: relative;
|
||||
}
|
||||
.tab-addtabs {
|
||||
overflow: hidden;
|
||||
}
|
||||
.tab-addtabs .tab-pane {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
/*
|
||||
* RIBBON
|
||||
*/
|
||||
#ribbon {
|
||||
overflow: hidden;
|
||||
padding: 15px 15px 0 15px;
|
||||
position: relative;
|
||||
}
|
||||
#ribbon a {
|
||||
color: #777 !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
#ribbon .breadcrumb {
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: none;
|
||||
vertical-align: top;
|
||||
}
|
||||
#ribbon .breadcrumb > .active,
|
||||
#ribbon .breadcrumb li:last-child {
|
||||
color: #aaa;
|
||||
}
|
||||
#ribbon .shortcut a {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.is-dialog #main {
|
||||
background: #fff;
|
||||
}
|
||||
.is-dialog form label {
|
||||
font-weight: normal;
|
||||
}
|
||||
/*panel扩展描述样式*/
|
||||
.panel-intro {
|
||||
margin-bottom: 0;
|
||||
border: none;
|
||||
}
|
||||
.panel-intro .panel-heading {
|
||||
padding: 15px;
|
||||
padding-bottom: 0;
|
||||
background: #e8edf0;
|
||||
border-color: #e8edf0;
|
||||
position: relative;
|
||||
}
|
||||
.panel-intro .panel-heading .panel-lead {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.panel-intro .panel-heading .panel-lead em {
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
.panel-intro .panel-heading .panel-title {
|
||||
height: 25px;
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.panel-intro .panel-heading .panel-control {
|
||||
height: 42px;
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
right: 8px;
|
||||
}
|
||||
.panel-intro .panel-heading .panel-control .fa {
|
||||
font-size: 14px;
|
||||
}
|
||||
.panel-intro .panel-heading .nav-tabs {
|
||||
border-bottom: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.panel-intro .panel-heading .nav-tabs > li > a {
|
||||
margin-right: 4px;
|
||||
color: #95a5a6;
|
||||
background-color: #d8e0e6;
|
||||
border: 1px solid #e8edf0;
|
||||
border-bottom-color: transparent;
|
||||
}
|
||||
.panel-intro .panel-heading .nav-tabs > li > a:hover,
|
||||
.panel-intro .panel-heading .nav-tabs > li > a:focus {
|
||||
border: 1px solid #e8edf0;
|
||||
color: #7b8a8b;
|
||||
background-color: #c9d4dc;
|
||||
}
|
||||
.panel-intro .panel-heading .nav-tabs > li.active > a,
|
||||
.panel-intro .panel-heading .nav-tabs > li.active > a:hover,
|
||||
.panel-intro .panel-heading .nav-tabs > li.active > a:focus {
|
||||
color: #7b8a8b;
|
||||
background-color: #ffffff;
|
||||
border-bottom-color: transparent;
|
||||
cursor: default;
|
||||
}
|
||||
/*单表格*/
|
||||
.panel-tabs .panel-heading {
|
||||
padding: 12px 15px 12px 15px;
|
||||
}
|
||||
.panel-tabs .panel-heading .panel-lead {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
/*选项卡*/
|
||||
.panel-nav .panel-heading {
|
||||
padding: 0px;
|
||||
padding-bottom: 0;
|
||||
background: #f1f4f6;
|
||||
border-color: #f1f4f6;
|
||||
}
|
||||
.panel-nav .nav-tabs > li > a {
|
||||
padding: 12px 15px;
|
||||
background-color: #e8edf0;
|
||||
border: 1px solid #f1f4f6;
|
||||
}
|
||||
.panel-nav .nav-tabs > li > a:hover,
|
||||
.panel-nav .nav-tabs > li > a:focus {
|
||||
border: 1px solid #e8edf0;
|
||||
background-color: #e8edf0;
|
||||
}
|
||||
.panel-nav .nav-tabs > li.active > a,
|
||||
.panel-nav .nav-tabs > li.active > a:hover,
|
||||
.panel-nav .nav-tabs > li.active > a:focus {
|
||||
border-color: #f1f4f6;
|
||||
border-bottom-color: transparent;
|
||||
}
|
||||
/*顶栏addtabs*/
|
||||
.nav-addtabs {
|
||||
border: none;
|
||||
}
|
||||
.nav-addtabs > li {
|
||||
margin: 0;
|
||||
}
|
||||
.nav-addtabs > li > a {
|
||||
height: 49px;
|
||||
line-height: 49px;
|
||||
padding: 0 15px;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.05);
|
||||
margin: 0;
|
||||
color: #95a5a6;
|
||||
}
|
||||
.nav-addtabs > li > a:hover,
|
||||
.nav-addtabs > li > a:focus {
|
||||
border: none;
|
||||
color: #2c3e50;
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.nav-addtabs > li > a i {
|
||||
margin-right: 3px;
|
||||
}
|
||||
.nav-addtabs > li.active > a {
|
||||
height: 49px;
|
||||
line-height: 49px;
|
||||
padding: 0 15px;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.05);
|
||||
background: #f1f4f6;
|
||||
color: #2c3e50;
|
||||
overflow: hidden;
|
||||
}
|
||||
.nav-addtabs > li.active > a:hover,
|
||||
.nav-addtabs > li.active > a:focus {
|
||||
border: none;
|
||||
color: #2c3e50;
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.05);
|
||||
background: #f1f4f6;
|
||||
}
|
||||
.nav-addtabs > li .close-tab {
|
||||
font-size: 10px;
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
top: 50%;
|
||||
margin-top: -7px;
|
||||
z-index: 100;
|
||||
cursor: hand;
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
display: none;
|
||||
}
|
||||
.nav-addtabs .open > a:hover,
|
||||
.nav-addtabs .open > a:focus {
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.nav-addtabs ul li {
|
||||
position: relative;
|
||||
}
|
||||
.nav-addtabs li:hover > .close-tab {
|
||||
display: block;
|
||||
}
|
||||
#treeview .jstree-container-ul .jstree-node {
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
#treeview .jstree-leaf:not(:first-child) {
|
||||
float: left;
|
||||
background: none;
|
||||
margin-left: 0;
|
||||
width: 80px;
|
||||
clear: none;
|
||||
color: #BBBDC3;
|
||||
}
|
||||
#treeview .jstree-leaf {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
padding-left: 24px;
|
||||
width: 80px;
|
||||
clear: none;
|
||||
color: #ccc;
|
||||
}
|
||||
#treeview .jstree-leaf > .jstree-icon,
|
||||
#treeview .jstree-leaf .jstree-themeicon {
|
||||
display: none;
|
||||
}
|
||||
#treeview .jstree-last {
|
||||
background-image: url("../img/32px.png");
|
||||
background-position: -292px -4px;
|
||||
background-repeat: repeat-y;
|
||||
}
|
||||
#treeview .jstree-children:before,
|
||||
#treeview .jstree-children:after {
|
||||
content: " ";
|
||||
display: table;
|
||||
}
|
||||
#treeview .jstree-children:after {
|
||||
clear: both;
|
||||
}
|
||||
#treeview .jstree-children:before,
|
||||
#treeview .jstree-children:after {
|
||||
content: " ";
|
||||
display: table;
|
||||
}
|
||||
#treeview .jstree-children:after {
|
||||
clear: both;
|
||||
}
|
||||
#treeview .jstree-themeicon {
|
||||
display: none;
|
||||
}
|
||||
/*去除bootstrap-table的边框*/
|
||||
.fixed-table-container {
|
||||
border: none!important;
|
||||
}
|
||||
.pjax-loader-bar .progress {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 2px;
|
||||
background: #77b6ff;
|
||||
box-shadow: 0 0 10px rgba(119, 182, 255, 0.7);
|
||||
-webkit-transition: width 0.4s ease;
|
||||
transition: width 0.4s ease;
|
||||
}
|
||||
.dropdown-menu.text-left a,
|
||||
.dropdown-menu.text-left li {
|
||||
text-align: left!important;
|
||||
}
|
||||
.bootstrap-table .fixed-table-toolbar .dropdown-menu {
|
||||
overflow: visible;
|
||||
}
|
||||
.bootstrap-table table tbody tr:first-child td .bs-checkbox {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.dropdown-submenu {
|
||||
position: relative;
|
||||
}
|
||||
.dropdown-submenu > .dropdown-menu {
|
||||
overflow: auto;
|
||||
top: 0;
|
||||
left: 100%;
|
||||
margin-top: -6px;
|
||||
margin-left: -1px;
|
||||
-webkit-border-radius: 0 6px 6px 6px;
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-border-radius: 0 6px 6px 6px;
|
||||
-moz-background-clip: padding;
|
||||
border-radius: 0 6px 6px 6px;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
.dropdown-submenu:hover > .dropdown-menu {
|
||||
display: block;
|
||||
}
|
||||
.dropdown-submenu:hover > a:after {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.dropdown-submenu > a:after {
|
||||
display: block;
|
||||
content: " ";
|
||||
float: right;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
border-width: 5px 0 5px 5px;
|
||||
border-left-color: #ccc;
|
||||
margin-top: 5px;
|
||||
margin-right: -10px;
|
||||
}
|
||||
.dropdown-submenu.pull-left {
|
||||
float: none;
|
||||
}
|
||||
.dropdown-submenu.pull-left > .dropdown-menu {
|
||||
left: -100%;
|
||||
margin-left: 10px;
|
||||
-webkit-border-radius: 6px 0 6px 6px;
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-border-radius: 6px 0 6px 6px;
|
||||
-moz-background-clip: padding;
|
||||
border-radius: 6px 0 6px 6px;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
/*重写toast的几个背景色*/
|
||||
.toast-primary {
|
||||
background-color: #48c9b0!important;
|
||||
}
|
||||
.toast-success {
|
||||
background-color: #2ecc71!important;
|
||||
}
|
||||
.toast-error {
|
||||
background-color: #e74c3c!important;
|
||||
}
|
||||
.toast-info {
|
||||
background-color: #5dade2!important;
|
||||
}
|
||||
.toast-warning {
|
||||
background-color: #f1c40f!important;
|
||||
}
|
||||
.toast-inverse {
|
||||
background-color: #34495e!important;
|
||||
}
|
||||
.toast-default {
|
||||
background-color: #bdc3c7!important;
|
||||
}
|
||||
.layui-layer-title {
|
||||
background: #2c3e50!important;
|
||||
color: #fff!important;
|
||||
}
|
||||
/*避免出现多滚动条*/
|
||||
.layui-layer-noborder {
|
||||
border: none!important;
|
||||
box-shadow: 1px 1px 50px rgba(0, 0, 0, 0.3) !important;
|
||||
}
|
||||
.layui-layer-moves {
|
||||
-webkit-box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
.layui-layer-iframe {
|
||||
overflow: hidden!important;
|
||||
}
|
||||
.layui-layer-iframe .layui-layer-content {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
overflow-y: hidden!important;
|
||||
overflow: hidden;
|
||||
}
|
||||
/*自定义底部灰色操作区*/
|
||||
.layui-layer-btn {
|
||||
text-align: center!important;
|
||||
padding: 10px!important;
|
||||
background: #ecf0f1;
|
||||
}
|
||||
.layui-layer-footer {
|
||||
padding: 8px 20px;
|
||||
background-color: #ecf0f1;
|
||||
height: auto;
|
||||
text-align: inherit!important;
|
||||
}
|
||||
.layui-layer-btn a {
|
||||
background-color: #95a5a6!important;
|
||||
border-color: #95a5a6!important;
|
||||
color: #fff!important;
|
||||
}
|
||||
.layui-layer-btn .layui-layer-btn0 {
|
||||
background-color: #18bc9c!important;
|
||||
border-color: #18bc9c!important;
|
||||
}
|
||||
.layui-layer-setwin {
|
||||
top: 10px!important;
|
||||
}
|
||||
.layui-layer-setwin > a {
|
||||
background: none!important;
|
||||
}
|
||||
.layui-layer-setwin > a cite {
|
||||
display: none;
|
||||
}
|
||||
.layui-layer-setwin > a:after {
|
||||
content: "\e625";
|
||||
font-family: iconfont;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
text-decoration: inherit;
|
||||
position: absolute;
|
||||
font-size: 18px;
|
||||
color: #fff;
|
||||
margin: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
.layui-layer-setwin > a:hover {
|
||||
text-decoration: none!important;
|
||||
background: none!important;
|
||||
}
|
||||
.layui-layer-setwin > a:focus {
|
||||
text-decoration: none!important;
|
||||
}
|
||||
.layui-layer-setwin .layui-layer-min:after {
|
||||
content: "\e625";
|
||||
}
|
||||
.layui-layer-setwin .layui-layer-max:after {
|
||||
content: "\e623";
|
||||
}
|
||||
.layui-layer-setwin .layui-layer-maxmin:after {
|
||||
content: "\e624";
|
||||
}
|
||||
.layui-layer-setwin .layui-layer-close1:after {
|
||||
content: "\e626";
|
||||
}
|
||||
/*手机版样式*/
|
||||
@media (max-width: 480px) {
|
||||
.nav-addtabs {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
/*平板样式*/
|
||||
/*# sourceMappingURL=frontend-func.css.map */
|
||||
|
|
@ -36,9 +36,6 @@ define(['jquery', 'bootstrap', 'backend', 'form', 'table', 'config'], function (
|
|||
{field: 'operate', title: __('Operate'), events: Table.api.events.operate, formatter: Table.api.formatter.operate}
|
||||
]
|
||||
],
|
||||
//普通搜索
|
||||
commonSearch: true,
|
||||
titleForm: '', //为空则不显示标题,不定义默认显示:普通搜索
|
||||
});
|
||||
|
||||
// 为表格绑定事件
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'validator'], function ($, undefined, Backend, undefined, AdminLTE, undefined) {
|
||||
|
||||
define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'validator'], function ($, undefined, Backend, undefined, AdminLTE, Form, Validator) {
|
||||
var Controller = {
|
||||
index: function () {
|
||||
//窗口大小改变,修正主窗体最小高度
|
||||
|
|
@ -30,6 +29,59 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'validator'], f
|
|||
}
|
||||
});
|
||||
|
||||
//读取FastAdmin的Commits信息
|
||||
$.ajax({
|
||||
url: 'https://api.github.com/repos/karsonzhang/fastadmin/commits?state=open&per_page=10&page=1&sort=updated',
|
||||
type: 'get',
|
||||
dataType: 'jsonp',
|
||||
success: function (ret) {
|
||||
$(".github-commits > a span").text(ret.data.length);
|
||||
$(".github-commits .footer a").attr("href", "https://github.com/karsonzhang/fastadmin/commits/master");
|
||||
|
||||
var dateDiff = function (hisTime, nowTime) {
|
||||
if (!arguments.length)
|
||||
return '';
|
||||
var arg = arguments,
|
||||
now = arg[1] ? arg[1] : new Date().getTime(),
|
||||
diffValue = now - arg[0],
|
||||
result = '',
|
||||
minute = 1000 * 60,
|
||||
hour = minute * 60,
|
||||
day = hour * 24,
|
||||
halfamonth = day * 15,
|
||||
month = day * 30,
|
||||
year = month * 12,
|
||||
_year = diffValue / year,
|
||||
_month = diffValue / month,
|
||||
_week = diffValue / (7 * day),
|
||||
_day = diffValue / day,
|
||||
_hour = diffValue / hour,
|
||||
_min = diffValue / minute;
|
||||
|
||||
if (_year >= 1)
|
||||
result = parseInt(_year) + "年前";
|
||||
else if (_month >= 1)
|
||||
result = parseInt(_month) + "个月前";
|
||||
else if (_week >= 1)
|
||||
result = parseInt(_week) + "周前";
|
||||
else if (_day >= 1)
|
||||
result = parseInt(_day) + "天前";
|
||||
else if (_hour >= 1)
|
||||
result = parseInt(_hour) + "个小时前";
|
||||
else if (_min >= 1)
|
||||
result = parseInt(_min) + "分钟前";
|
||||
else
|
||||
result = "刚刚";
|
||||
return result;
|
||||
};
|
||||
$.each(ret.data, function (i, j) {
|
||||
var author = j.author ? j.author : {html_url: "https://github.com/karsonzhang", avatar_url: "/assets/img/avatar.png", login: "Anonymous"};
|
||||
var item = '<li><a href="' + j.html_url + '"><div class="pull-left"><img src="' + author.avatar_url + '" class="img-circle" alt="' + author.login + '"></div><h4>' + author.login + '<small><i class="fa fa-clock-o"></i> ' + dateDiff(new Date(j.commit.committer.date).getTime()) + '</small></h4><p>' + j.commit.message + '</p></a></li>';
|
||||
$(item).appendTo($(".github-commits ul.menu"));
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//切换左侧sidebar显示隐藏
|
||||
$(document).on("click", ".sidebar-menu li > a", function (e) {
|
||||
$(".sidebar-menu li").removeClass("active");
|
||||
|
|
@ -146,12 +198,16 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'validator'], f
|
|||
* @returns Boolean false to prevent link's default action
|
||||
*/
|
||||
function change_skin(cls) {
|
||||
if (!$("body").hasClass(cls)) {
|
||||
$.each(my_skins, function (i) {
|
||||
$("body").removeClass(my_skins[i]);
|
||||
});
|
||||
|
||||
$("body").addClass(cls);
|
||||
store('skin', cls);
|
||||
var cssfile = requirejs.s.contexts._.config.config.config.upload.cdnurl + "/assets/css/skins/" + cls + ".css";
|
||||
$('head').append('<link rel="stylesheet" href="' + cssfile + '" type="text/css" />');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,112 +0,0 @@
|
|||
!function ($) {
|
||||
|
||||
/* CHECKBOX PUBLIC CLASS DEFINITION
|
||||
* ============================== */
|
||||
|
||||
var Checkbox = function (element, options) {
|
||||
this.init(element, options);
|
||||
}
|
||||
|
||||
Checkbox.prototype = {
|
||||
constructor: Checkbox
|
||||
|
||||
, init: function (element, options) {
|
||||
var $el = this.$element = $(element)
|
||||
|
||||
this.options = $.extend({}, $.fn.checkbox.defaults, options);
|
||||
$el.before(this.options.template);
|
||||
this.setState();
|
||||
}
|
||||
|
||||
, setState: function () {
|
||||
var $el = this.$element
|
||||
, $parent = $el.closest('.checkbox');
|
||||
|
||||
$el.prop('disabled') && $parent.addClass('disabled');
|
||||
$el.prop('checked') && $parent.addClass('checked');
|
||||
}
|
||||
|
||||
, toggle: function () {
|
||||
var ch = 'checked'
|
||||
, $el = this.$element
|
||||
, $parent = $el.closest('.checkbox')
|
||||
, checked = $el.prop(ch)
|
||||
, e = $.Event('toggle')
|
||||
|
||||
if ($el.prop('disabled') == false) {
|
||||
$parent.toggleClass(ch) && checked ? $el.removeAttr(ch) : $el.prop(ch, ch);
|
||||
$el.trigger(e).trigger('change');
|
||||
}
|
||||
}
|
||||
|
||||
, setCheck: function (option) {
|
||||
var d = 'disabled'
|
||||
, ch = 'checked'
|
||||
, $el = this.$element
|
||||
, $parent = $el.closest('.checkbox')
|
||||
, checkAction = option == 'check' ? true : false
|
||||
, e = $.Event(option)
|
||||
|
||||
$parent[checkAction ? 'addClass' : 'removeClass' ](ch) && checkAction ? $el.prop(ch, ch) : $el.removeAttr(ch);
|
||||
$el.trigger(e).trigger('change');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* CHECKBOX PLUGIN DEFINITION
|
||||
* ======================== */
|
||||
|
||||
var old = $.fn.checkbox
|
||||
|
||||
$.fn.checkbox = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('checkbox')
|
||||
, options = $.extend({}, $.fn.checkbox.defaults, $this.data(), typeof option == 'object' && option);
|
||||
if (!data)
|
||||
$this.data('checkbox', (data = new Checkbox(this, options)));
|
||||
if (option == 'toggle')
|
||||
data.toggle()
|
||||
if (option == 'check' || option == 'uncheck')
|
||||
data.setCheck(option)
|
||||
else if (option)
|
||||
data.setState();
|
||||
});
|
||||
}
|
||||
|
||||
$.fn.checkbox.defaults = {
|
||||
template: '<span class="icons"><span class="first-icon fa fa-square-o"></span><span class="second-icon fa fa-check-square-o"></span></span>'
|
||||
}
|
||||
|
||||
|
||||
/* CHECKBOX NO CONFLICT
|
||||
* ================== */
|
||||
|
||||
$.fn.checkbox.noConflict = function () {
|
||||
$.fn.checkbox = old;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/* CHECKBOX DATA-API
|
||||
* =============== */
|
||||
|
||||
$(document).on('click.checkbox.data-api', '[data-toggle^=checkbox], .checkbox', function (e) {
|
||||
var $checkbox = $(e.target);
|
||||
if (e.target.tagName != "A") {
|
||||
e && e.preventDefault() && e.stopPropagation();
|
||||
if (!$checkbox.hasClass('checkbox'))
|
||||
$checkbox = $checkbox.closest('.checkbox');
|
||||
$checkbox.find(':checkbox').checkbox('toggle');
|
||||
}
|
||||
});
|
||||
|
||||
$(function () {
|
||||
$('[data-toggle="checkbox"]').each(function () {
|
||||
var $checkbox = $(this);
|
||||
$checkbox.checkbox();
|
||||
});
|
||||
});
|
||||
|
||||
}(window.jQuery);
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
/* =============================================================
|
||||
* flatui-radio v0.0.3
|
||||
* ============================================================ */
|
||||
|
||||
!function ($) {
|
||||
|
||||
/* RADIO PUBLIC CLASS DEFINITION
|
||||
* ============================== */
|
||||
|
||||
var Radio = function (element, options) {
|
||||
this.init(element, options);
|
||||
}
|
||||
|
||||
Radio.prototype = {
|
||||
constructor: Radio
|
||||
|
||||
, init: function (element, options) {
|
||||
var $el = this.$element = $(element)
|
||||
|
||||
this.options = $.extend({}, $.fn.radio.defaults, options);
|
||||
$el.before(this.options.template);
|
||||
this.setState();
|
||||
}
|
||||
|
||||
, setState: function () {
|
||||
var $el = this.$element
|
||||
, $parent = $el.closest('.radio');
|
||||
|
||||
$el.prop('disabled') && $parent.addClass('disabled');
|
||||
$el.prop('checked') && $parent.addClass('checked');
|
||||
}
|
||||
|
||||
, toggle: function () {
|
||||
var d = 'disabled'
|
||||
, ch = 'checked'
|
||||
, $el = this.$element
|
||||
, checked = $el.prop(ch)
|
||||
, $parent = $el.closest('.radio')
|
||||
, $parentWrap = $el.closest('form').length ? $el.closest('form') : $el.closest('body')
|
||||
, $elemGroup = $parentWrap.find(':radio[name="' + $el.attr('name') + '"]')
|
||||
, e = $.Event('toggle')
|
||||
|
||||
if ($el.prop(d) == false) {
|
||||
$elemGroup.not($el).each(function () {
|
||||
var $el = $(this)
|
||||
, $parent = $(this).closest('.radio');
|
||||
|
||||
if ($el.prop(d) == false) {
|
||||
$parent.removeClass(ch) && $el.removeAttr(ch).trigger('change');
|
||||
}
|
||||
});
|
||||
|
||||
if (checked == false)
|
||||
$parent.addClass(ch) && $el.prop(ch, true);
|
||||
$el.trigger(e);
|
||||
|
||||
if (checked !== $el.prop(ch)) {
|
||||
$el.trigger('change');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
, setCheck: function (option) {
|
||||
var ch = 'checked'
|
||||
, $el = this.$element
|
||||
, $parent = $el.closest('.radio')
|
||||
, checkAction = option == 'check' ? true : false
|
||||
, checked = $el.prop(ch)
|
||||
, $parentWrap = $el.closest('form').length ? $el.closest('form') : $el.closest('body')
|
||||
, $elemGroup = $parentWrap.find(':radio[name="' + $el['attr']('name') + '"]')
|
||||
, e = $.Event(option)
|
||||
|
||||
$elemGroup.not($el).each(function () {
|
||||
var $el = $(this)
|
||||
, $parent = $(this).closest('.radio');
|
||||
|
||||
$parent.removeClass(ch) && $el.removeAttr(ch);
|
||||
});
|
||||
|
||||
$parent[checkAction ? 'addClass' : 'removeClass'](ch) && checkAction ? $el.prop(ch, ch) : $el.removeAttr(ch);
|
||||
$el.trigger(e);
|
||||
|
||||
if (checked !== $el.prop(ch)) {
|
||||
$el.trigger('change');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* RADIO PLUGIN DEFINITION
|
||||
* ======================== */
|
||||
|
||||
var old = $.fn.radio
|
||||
|
||||
$.fn.radio = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('radio')
|
||||
, options = $.extend({}, $.fn.radio.defaults, $this.data(), typeof option == 'object' && option);
|
||||
if (!data)
|
||||
$this.data('radio', (data = new Radio(this, options)));
|
||||
if (option == 'toggle')
|
||||
data.toggle()
|
||||
if (option == 'check' || option == 'uncheck')
|
||||
data.setCheck(option)
|
||||
else if (option)
|
||||
data.setState();
|
||||
});
|
||||
}
|
||||
|
||||
$.fn.radio.defaults = {
|
||||
template: '<span class="icons"><span class="first-icon fa fa-circle-o"></span><span class="second-icon fa fa-dot-circle-o"></span></span>'
|
||||
}
|
||||
|
||||
|
||||
/* RADIO NO CONFLICT
|
||||
* ================== */
|
||||
|
||||
$.fn.radio.noConflict = function () {
|
||||
$.fn.radio = old;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/* RADIO DATA-API
|
||||
* =============== */
|
||||
|
||||
$(document).on('click.radio.data-api', '[data-toggle^=radio], .radio', function (e) {
|
||||
var $radio = $(e.target);
|
||||
e && e.preventDefault() && e.stopPropagation();
|
||||
if (!$radio.hasClass('radio'))
|
||||
$radio = $radio.closest('.radio');
|
||||
$radio.find(':radio').radio('toggle');
|
||||
});
|
||||
|
||||
$(function () {
|
||||
$('[data-toggle="radio"]').each(function () {
|
||||
var $radio = $(this);
|
||||
$radio.radio();
|
||||
});
|
||||
});
|
||||
|
||||
}(window.jQuery);
|
||||
|
|
@ -1,251 +0,0 @@
|
|||
/* ============================================================
|
||||
* bootstrapSwitch v1.3 by Larentis Mattia @spiritualGuru
|
||||
* http://www.larentis.eu/switch/
|
||||
* ============================================================
|
||||
* Licensed under the Apache License, Version 2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* ============================================================ */
|
||||
|
||||
!function ($) {
|
||||
"use strict";
|
||||
|
||||
$.fn['bootstrapSwitch'] = function (method) {
|
||||
var methods = {
|
||||
init: function () {
|
||||
return this.each(function () {
|
||||
var $element = $(this)
|
||||
, $div
|
||||
, $switchLeft
|
||||
, $switchRight
|
||||
, $label
|
||||
, myClasses = ""
|
||||
, classes = $element.attr('class')
|
||||
, color
|
||||
, moving
|
||||
, onLabel = "开"
|
||||
, offLabel = "关"
|
||||
, icon = false;
|
||||
|
||||
$.each(['switch-mini', 'switch-small', 'switch-large'], function (i, el) {
|
||||
if (classes.indexOf(el) >= 0)
|
||||
myClasses = el;
|
||||
});
|
||||
|
||||
$element.addClass('has-switch');
|
||||
|
||||
if ($element.data('on') !== undefined)
|
||||
color = "switch-" + $element.data('on');
|
||||
|
||||
if ($element.data('on-label') !== undefined)
|
||||
onLabel = $element.data('on-label');
|
||||
|
||||
if ($element.data('off-label') !== undefined)
|
||||
offLabel = $element.data('off-label');
|
||||
|
||||
if ($element.data('icon') !== undefined)
|
||||
icon = $element.data('icon');
|
||||
|
||||
$switchLeft = $('<span>')
|
||||
.addClass("switch-left")
|
||||
.addClass(myClasses)
|
||||
.addClass(color)
|
||||
.html(onLabel);
|
||||
|
||||
color = '';
|
||||
if ($element.data('off') !== undefined)
|
||||
color = "switch-" + $element.data('off');
|
||||
|
||||
$switchRight = $('<span>')
|
||||
.addClass("switch-right")
|
||||
.addClass(myClasses)
|
||||
.addClass(color)
|
||||
.html(offLabel);
|
||||
|
||||
$label = $('<label>')
|
||||
.html(" ")
|
||||
.addClass(myClasses)
|
||||
.attr('for', $element.find('input').attr('id'));
|
||||
|
||||
if (icon) {
|
||||
$label.html('<i class="' + icon + '"></i>');
|
||||
}
|
||||
|
||||
$div = $element.find(':checkbox').wrap($('<div>')).parent().data('animated', false);
|
||||
|
||||
if ($element.data('animated') !== false)
|
||||
$div.addClass('switch-animate').data('animated', true);
|
||||
|
||||
$div
|
||||
.append($switchLeft)
|
||||
.append($label)
|
||||
.append($switchRight);
|
||||
|
||||
$element.find('>div').addClass(
|
||||
$element.find('input').is(':checked') ? 'switch-on' : 'switch-off'
|
||||
);
|
||||
|
||||
if ($element.find('input').is(':disabled'))
|
||||
$(this).addClass('deactivate');
|
||||
|
||||
var changeStatus = function ($this) {
|
||||
$this.siblings('label').trigger('mousedown').trigger('mouseup').trigger('click');
|
||||
};
|
||||
|
||||
$element.on('keydown', function (e) {
|
||||
if (e.keyCode === 32) {
|
||||
e.stopImmediatePropagation();
|
||||
e.preventDefault();
|
||||
changeStatus($(e.target).find('span:first'));
|
||||
}
|
||||
});
|
||||
|
||||
$switchLeft.on('click', function (e) {
|
||||
changeStatus($(this));
|
||||
});
|
||||
|
||||
$switchRight.on('click', function (e) {
|
||||
changeStatus($(this));
|
||||
});
|
||||
|
||||
$element.find('input').on('change', function (e) {
|
||||
var $this = $(this)
|
||||
, $element = $this.parent()
|
||||
, thisState = $this.is(':checked')
|
||||
, state = $element.is('.switch-off');
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
$element.css('left', '');
|
||||
|
||||
if (state === thisState) {
|
||||
|
||||
if (thisState)
|
||||
$element.removeClass('switch-off').addClass('switch-on');
|
||||
else
|
||||
$element.removeClass('switch-on').addClass('switch-off');
|
||||
|
||||
if ($element.data('animated') !== false)
|
||||
$element.addClass("switch-animate");
|
||||
|
||||
$element.parent().trigger('switch-change', {'el': $this, 'value': thisState})
|
||||
}
|
||||
});
|
||||
|
||||
$element.find('label').on('mousedown touchstart', function (e) {
|
||||
var $this = $(this);
|
||||
moving = false;
|
||||
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
|
||||
$this.closest('div').removeClass('switch-animate');
|
||||
|
||||
if ($this.closest('.has-switch').is('.deactivate'))
|
||||
$this.unbind('click');
|
||||
else {
|
||||
$this.on('mousemove touchmove', function (e) {
|
||||
var $element = $(this).closest('.switch')
|
||||
, relativeX = (e.pageX || e.originalEvent.targetTouches[0].pageX) - $element.offset().left
|
||||
, percent = (relativeX / $element.width()) * 100
|
||||
, left = 25
|
||||
, right = 75;
|
||||
|
||||
moving = true;
|
||||
|
||||
if (percent < left)
|
||||
percent = left;
|
||||
else if (percent > right)
|
||||
percent = right;
|
||||
|
||||
$element.find('>div').css('left', (percent - right) + "%")
|
||||
});
|
||||
|
||||
$this.on('click touchend', function (e) {
|
||||
var $this = $(this)
|
||||
, $target = $(e.target)
|
||||
, $myCheckBox = $target.siblings('input');
|
||||
|
||||
e.stopImmediatePropagation();
|
||||
e.preventDefault();
|
||||
|
||||
$this.unbind('mouseleave');
|
||||
|
||||
if (moving)
|
||||
$myCheckBox.prop('checked', !(parseInt($this.parent().css('left')) < -25));
|
||||
else
|
||||
$myCheckBox.prop("checked", !$myCheckBox.is(":checked"));
|
||||
|
||||
moving = false;
|
||||
$myCheckBox.trigger('change');
|
||||
});
|
||||
|
||||
$this.on('mouseleave', function (e) {
|
||||
var $this = $(this)
|
||||
, $myCheckBox = $this.siblings('input');
|
||||
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
|
||||
$this.unbind('mouseleave');
|
||||
$this.trigger('mouseup');
|
||||
|
||||
$myCheckBox.prop('checked', !(parseInt($this.parent().css('left')) < -25)).trigger('change');
|
||||
});
|
||||
|
||||
$this.on('mouseup', function (e) {
|
||||
e.stopImmediatePropagation();
|
||||
e.preventDefault();
|
||||
|
||||
$(this).unbind('mousemove');
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
},
|
||||
toggleActivation: function () {
|
||||
$(this).toggleClass('deactivate');
|
||||
},
|
||||
isActive: function () {
|
||||
return !$(this).hasClass('deactivate');
|
||||
},
|
||||
setActive: function (active) {
|
||||
if (active)
|
||||
$(this).removeClass('deactivate');
|
||||
else
|
||||
$(this).addClass('deactivate');
|
||||
},
|
||||
toggleState: function (skipOnChange) {
|
||||
var $input = $(this).find('input:checkbox');
|
||||
$input.prop('checked', !$input.is(':checked')).trigger('change', skipOnChange);
|
||||
},
|
||||
setState: function (value, skipOnChange) {
|
||||
$(this).find('input:checkbox').prop('checked', value).trigger('change', skipOnChange);
|
||||
},
|
||||
status: function () {
|
||||
return $(this).find('input:checkbox').is(':checked');
|
||||
},
|
||||
destroy: function () {
|
||||
var $div = $(this).find('div')
|
||||
, $checkbox;
|
||||
|
||||
$div.find(':not(input:checkbox)').remove();
|
||||
|
||||
$checkbox = $div.children();
|
||||
$checkbox.unwrap().unwrap();
|
||||
|
||||
$checkbox.unbind('change');
|
||||
|
||||
return $checkbox;
|
||||
}
|
||||
};
|
||||
|
||||
if (methods[method])
|
||||
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
||||
else if (typeof method === 'object' || !method)
|
||||
return methods.init.apply(this, arguments);
|
||||
else
|
||||
$.error('Method ' + method + ' does not exist!');
|
||||
};
|
||||
}(jQuery);
|
||||
|
||||
|
|
@ -152,19 +152,19 @@
|
|||
});
|
||||
$.extend($.fn.bootstrapTable.locales, {
|
||||
formatAdvancedSearch: function () {
|
||||
return __('Advanced search');
|
||||
return 'Advanced search';
|
||||
},
|
||||
formatAdvancedSubmitButton: function () {
|
||||
return __("Submit");
|
||||
return "Submit";
|
||||
},
|
||||
formatAdvancedResetButton: function () {
|
||||
return __("Reset");
|
||||
return "Reset";
|
||||
},
|
||||
formatAdvancedCloseButton: function () {
|
||||
return __("Close");
|
||||
return "Close";
|
||||
},
|
||||
formatAdvancedChoose: function () {
|
||||
return __("Choose");
|
||||
return "Choose";
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
var vFormCommon = createFormCommon(pColumns, that), timeoutId = 0;
|
||||
|
||||
var vModal = sprintf("<div id=\"commonSearchModalContent_%s\" class=\"well bs-component\">", that.options.idTable);
|
||||
var vModal = sprintf("<div id=\"commonSearchModalContent_%s\" class=\"common-search-table\">", that.options.idTable);
|
||||
vModal += vFormCommon.join('');
|
||||
vModal += "</div>";
|
||||
$("#myTabContent").before($(vModal));
|
||||
|
|
@ -152,7 +152,7 @@
|
|||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
commonSearch: false,
|
||||
idForm: 'commonSearch',
|
||||
titleForm: __("Common search"),
|
||||
titleForm: "Common search",
|
||||
actionForm: '',
|
||||
idTable: undefined,
|
||||
onColumnCommonSearch: function (field, text) {
|
||||
|
|
@ -170,19 +170,19 @@
|
|||
|
||||
$.extend($.fn.bootstrapTable.locales, {
|
||||
formatCommonSearch: function () {
|
||||
return __("Common search");
|
||||
return "Common search";
|
||||
},
|
||||
formatCommonSubmitButton: function () {
|
||||
return __("Submit");
|
||||
return "Submit";
|
||||
},
|
||||
formatCommonResetButton: function () {
|
||||
return __("Reset");
|
||||
return "Reset";
|
||||
},
|
||||
formatCommonCloseButton: function () {
|
||||
return __("Close");
|
||||
return "Close";
|
||||
},
|
||||
formatCommonChoose: function () {
|
||||
return __("Choose");
|
||||
return "Choose";
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -10,14 +10,12 @@ require.config({
|
|||
paths: {
|
||||
'lang': "empty:",
|
||||
'config': 'require-config',
|
||||
'bootstrap-checkbox': 'bootstrap-checkbox',
|
||||
'bootstrap-radio': 'bootstrap-radio',
|
||||
'bootstrap-switch': 'bootstrap-switch',
|
||||
'form': 'require-form',
|
||||
'table': 'require-table',
|
||||
'upload': 'require-upload',
|
||||
'drag': 'jquery.drag.min',
|
||||
'drop': 'jquery.drop.min',
|
||||
'echarts': 'echarts.min',
|
||||
'echarts-theme': 'echarts-theme',
|
||||
'adminlte': 'adminlte',
|
||||
//
|
||||
|
|
@ -47,12 +45,11 @@ require.config({
|
|||
'slimscroll': '../libs/jquery-slimscroll/jquery.slimscroll',
|
||||
'crontab': '../libs/jqcron/src/jqCron.cn',
|
||||
'summernote': '../libs/summernote/dist/lang/summernote-zh-CN.min',
|
||||
'validator': '../libs/nice-validator/dist/local/zh-CN',
|
||||
'validator': '../libs/nice-validator/dist/jquery.validator.js?local=zh-CN',
|
||||
'plupload': '../libs/plupload/js/plupload.min',
|
||||
'toastr': '../libs/toastr/toastr',
|
||||
'jstree': '../libs/jstree/dist/jstree.min',
|
||||
'layer': '../libs/layer/src/layer',
|
||||
'echarts': '../libs/echarts/dist/echarts.min',
|
||||
'cookie': '../libs/jquery.cookie/jquery.cookie',
|
||||
'template': '../libs/art-template/dist/template-native',
|
||||
},
|
||||
|
|
@ -108,7 +105,7 @@ require.config({
|
|||
'bootstrap-dialog': ['css!../libs/bootstrap3-dialog/dist/css/bootstrap-dialog.min.css'],
|
||||
'bootstrap-datetimepicker': [
|
||||
'css!../libs/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
|
||||
'moment/locale/zh-cn'
|
||||
'moment/locale/zh-cn',
|
||||
],
|
||||
'bootstrap-tagsinput': [
|
||||
'css!../libs/bootstrap-tagsinput/dist/bootstrap-tagsinput-typeahead.css',
|
||||
|
|
@ -127,9 +124,7 @@ require.config({
|
|||
exports: "plupload"
|
||||
},
|
||||
// 'layer': ['css!../libs/layer/build/skin/default/layer.css'],
|
||||
validator: {
|
||||
deps: ['../libs/nice-validator/dist/jquery.validator', 'css!../libs/nice-validator/dist/jquery.validator.css']
|
||||
}
|
||||
|
||||
},
|
||||
baseUrl: requirejs.s.contexts._.config.config.config.site.cdnurl + '/assets/js/', //资源基础路径
|
||||
map: {
|
||||
|
|
@ -175,6 +170,7 @@ require(['jquery', 'bootstrap', 'config'], function ($, undefined, Config) {
|
|||
require([Config.jsname], function (Controller) {
|
||||
Controller[Config.actionname] != undefined && Controller[Config.actionname]();
|
||||
}, function (e) {
|
||||
console.error(e);
|
||||
// 这里可捕获模块加载的错误
|
||||
});
|
||||
});
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -10,14 +10,12 @@ require.config({
|
|||
paths: {
|
||||
'lang': "empty:",
|
||||
'config': 'require-config',
|
||||
'bootstrap-checkbox': 'bootstrap-checkbox',
|
||||
'bootstrap-radio': 'bootstrap-radio',
|
||||
'bootstrap-switch': 'bootstrap-switch',
|
||||
'form': 'require-form',
|
||||
'table': 'require-table',
|
||||
'upload': 'require-upload',
|
||||
'drag': 'jquery.drag.min',
|
||||
'drop': 'jquery.drop.min',
|
||||
'echarts': 'echarts.min',
|
||||
'echarts-theme': 'echarts-theme',
|
||||
'adminlte': 'adminlte',
|
||||
//
|
||||
|
|
@ -47,12 +45,11 @@ require.config({
|
|||
'slimscroll': '../libs/jquery-slimscroll/jquery.slimscroll',
|
||||
'crontab': '../libs/jqcron/src/jqCron.cn',
|
||||
'summernote': '../libs/summernote/dist/lang/summernote-zh-CN.min',
|
||||
'validator': '../libs/nice-validator/dist/local/zh-CN',
|
||||
'validator': '../libs/nice-validator/dist/jquery.validator.js?local=zh-CN',
|
||||
'plupload': '../libs/plupload/js/plupload.min',
|
||||
'toastr': '../libs/toastr/toastr',
|
||||
'jstree': '../libs/jstree/dist/jstree.min',
|
||||
'layer': '../libs/layer/src/layer',
|
||||
'echarts': '../libs/echarts/dist/echarts.min',
|
||||
'cookie': '../libs/jquery.cookie/jquery.cookie',
|
||||
'template': '../libs/art-template/dist/template-native',
|
||||
},
|
||||
|
|
@ -108,7 +105,7 @@ require.config({
|
|||
'bootstrap-dialog': ['css!../libs/bootstrap3-dialog/dist/css/bootstrap-dialog.min.css'],
|
||||
'bootstrap-datetimepicker': [
|
||||
'css!../libs/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
|
||||
'moment/locale/zh-cn'
|
||||
'moment/locale/zh-cn',
|
||||
],
|
||||
'bootstrap-tagsinput': [
|
||||
'css!../libs/bootstrap-tagsinput/dist/bootstrap-tagsinput-typeahead.css',
|
||||
|
|
@ -127,9 +124,7 @@ require.config({
|
|||
exports: "plupload"
|
||||
},
|
||||
// 'layer': ['css!../libs/layer/build/skin/default/layer.css'],
|
||||
validator: {
|
||||
deps: ['../libs/nice-validator/dist/jquery.validator', 'css!../libs/nice-validator/dist/jquery.validator.css']
|
||||
}
|
||||
|
||||
},
|
||||
baseUrl: requirejs.s.contexts._.config.config.config.site.cdnurl + '/assets/js/', //资源基础路径
|
||||
map: {
|
||||
|
|
|
|||
|
|
@ -27,14 +27,12 @@ require.config({
|
|||
paths: {
|
||||
'lang': "empty:",
|
||||
'config': 'require-config',
|
||||
'bootstrap-checkbox': 'bootstrap-checkbox',
|
||||
'bootstrap-radio': 'bootstrap-radio',
|
||||
'bootstrap-switch': 'bootstrap-switch',
|
||||
'form': 'require-form',
|
||||
'table': 'require-table',
|
||||
'upload': 'require-upload',
|
||||
'drag': 'jquery.drag.min',
|
||||
'drop': 'jquery.drop.min',
|
||||
'echarts': 'echarts.min',
|
||||
'echarts-theme': 'echarts-theme',
|
||||
'adminlte': 'adminlte',
|
||||
//
|
||||
|
|
@ -64,12 +62,11 @@ require.config({
|
|||
'slimscroll': '../libs/jquery-slimscroll/jquery.slimscroll',
|
||||
'crontab': '../libs/jqcron/src/jqCron.cn',
|
||||
'summernote': '../libs/summernote/dist/lang/summernote-zh-CN.min',
|
||||
'validator': '../libs/nice-validator/dist/local/zh-CN',
|
||||
'validator': '../libs/nice-validator/dist/jquery.validator.js?local=zh-CN',
|
||||
'plupload': '../libs/plupload/js/plupload.min',
|
||||
'toastr': '../libs/toastr/toastr',
|
||||
'jstree': '../libs/jstree/dist/jstree.min',
|
||||
'layer': '../libs/layer/src/layer',
|
||||
'echarts': '../libs/echarts/dist/echarts.min',
|
||||
'cookie': '../libs/jquery.cookie/jquery.cookie',
|
||||
'template': '../libs/art-template/dist/template-native',
|
||||
},
|
||||
|
|
@ -125,7 +122,7 @@ require.config({
|
|||
'bootstrap-dialog': ['css!../libs/bootstrap3-dialog/dist/css/bootstrap-dialog.min.css'],
|
||||
'bootstrap-datetimepicker': [
|
||||
'css!../libs/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
|
||||
'moment/locale/zh-cn'
|
||||
'moment/locale/zh-cn',
|
||||
],
|
||||
'bootstrap-tagsinput': [
|
||||
'css!../libs/bootstrap-tagsinput/dist/bootstrap-tagsinput-typeahead.css',
|
||||
|
|
@ -144,9 +141,7 @@ require.config({
|
|||
exports: "plupload"
|
||||
},
|
||||
// 'layer': ['css!../libs/layer/build/skin/default/layer.css'],
|
||||
validator: {
|
||||
deps: ['../libs/nice-validator/dist/jquery.validator', 'css!../libs/nice-validator/dist/jquery.validator.css']
|
||||
}
|
||||
|
||||
},
|
||||
baseUrl: requirejs.s.contexts._.config.config.config.site.cdnurl + '/assets/js/', //资源基础路径
|
||||
map: {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
define(['jquery', 'bootstrap', 'backend', 'config', 'toastr', 'moment', 'bootstrap-table', 'bootstrap-table-lang', 'bootstrap-table-mobile', 'bootstrap-table-export', 'bootstrap-table-advancedsearch', 'bootstrap-table-commonsearch'], function ($, undefined, Backend, Config, Toastr, Moment) {
|
||||
|
||||
var Table = {
|
||||
list: {},
|
||||
// Bootstrap-table 基础配置
|
||||
|
|
@ -10,7 +9,7 @@ define(['jquery', 'bootstrap', 'backend', 'config', 'toastr', 'moment', 'bootstr
|
|||
toolbar: "#toolbar",
|
||||
search: true,
|
||||
cache: false,
|
||||
advancedSearch: false,
|
||||
advancedSearch: true,
|
||||
commonSearch: false,
|
||||
titleForm: '', //为空则不显示标题,不定义默认显示:普通搜索
|
||||
idTable: 'advancedTable',
|
||||
|
|
@ -22,7 +21,7 @@ define(['jquery', 'bootstrap', 'backend', 'config', 'toastr', 'moment', 'bootstr
|
|||
pagination: true,
|
||||
clickToSelect: true,
|
||||
showRefresh: false,
|
||||
locale: Config.language.replace('_', '-'),
|
||||
locale: 'zh-CN',
|
||||
showToggle: true,
|
||||
showColumns: true,
|
||||
sortName: 'id',
|
||||
|
|
|
|||
|
|
@ -31,6 +31,22 @@ body {
|
|||
.logo,.navbar {
|
||||
.transition(none);
|
||||
}
|
||||
.navbar{
|
||||
position:relative;
|
||||
.sidebar-toggle{
|
||||
position:absolute;
|
||||
width:45px;
|
||||
text-align: center;
|
||||
}
|
||||
#nav{
|
||||
position:absolute;
|
||||
left:45px;
|
||||
}
|
||||
.navbar-custom-menu {
|
||||
position:absolute;
|
||||
right:0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.note-dialog .modal {z-index:1060;}
|
||||
|
||||
|
|
@ -59,6 +75,12 @@ body {
|
|||
}
|
||||
}
|
||||
}
|
||||
.common-search-table {
|
||||
min-height: 20px;
|
||||
padding: 15px;
|
||||
margin-bottom: 15px;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
/*
|
||||
* RIBBON
|
||||
|
|
|
|||
Loading…
Reference in New Issue