作者 Karson

新增Bootstrap-table分页跳转

新增后台修改会员积分日志
优化控制台切换时图表展示
修复安卓下图片无法上传的BUG
修复附件类型筛选时多条件的BUG
修复Backend基类无法捕获Exception异常的BUG
修复Form::checkboxs名称生成错误的BUG
@@ -158,7 +158,7 @@ class Ajax extends Backend @@ -158,7 +158,7 @@ class Ajax extends Backend
158 //主键 158 //主键
159 $pk = $this->request->post("pk"); 159 $pk = $this->request->post("pk");
160 //排序的方式 160 //排序的方式
161 - $orderway = $this->request->post("orderway", "", 'strtolower'); 161 + $orderway = strtolower($this->request->post("orderway", ""));
162 $orderway = $orderway == 'asc' ? 'ASC' : 'DESC'; 162 $orderway = $orderway == 'asc' ? 'ASC' : 'DESC';
163 $sour = $weighdata = []; 163 $sour = $weighdata = [];
164 $ids = explode(',', $ids); 164 $ids = explode(',', $ids);
@@ -9,7 +9,7 @@ use fast\Tree; @@ -9,7 +9,7 @@ use fast\Tree;
9 /** 9 /**
10 * 分类管理 10 * 分类管理
11 * 11 *
12 - * @icon fa fa-list 12 + * @icon fa fa-list
13 * @remark 用于统一管理网站的所有分类,分类可进行无限级分类,分类类型请在常规管理->系统配置->字典配置中添加 13 * @remark 用于统一管理网站的所有分类,分类可进行无限级分类,分类类型请在常规管理->系统配置->字典配置中添加
14 */ 14 */
15 class Category extends Backend 15 class Category extends Backend
@@ -102,7 +102,7 @@ class Category extends Backend @@ -102,7 +102,7 @@ class Category extends Backend
102 $params = $this->preExcludeFields($params); 102 $params = $this->preExcludeFields($params);
103 103
104 if ($params['pid'] != $row['pid']) { 104 if ($params['pid'] != $row['pid']) {
105 - $childrenIds = Tree::instance()->init(collection(\app\common\model\Category::select())->toArray())->getChildrenIds($row['id'] true); 105 + $childrenIds = Tree::instance()->init(collection(\app\common\model\Category::select())->toArray())->getChildrenIds($row['id'], true);
106 if (in_array($params['pid'], $childrenIds)) { 106 if (in_array($params['pid'], $childrenIds)) {
107 $this->error(__('Can not change the parent to child or itself')); 107 $this->error(__('Can not change the parent to child or itself'));
108 } 108 }
@@ -36,7 +36,7 @@ class Attachment extends Backend @@ -36,7 +36,7 @@ class Attachment extends Backend
36 $filter = $this->request->request('filter'); 36 $filter = $this->request->request('filter');
37 $filterArr = (array)json_decode($filter, TRUE); 37 $filterArr = (array)json_decode($filter, TRUE);
38 if (isset($filterArr['mimetype']) && stripos($filterArr['mimetype'], ',') !== false) { 38 if (isset($filterArr['mimetype']) && stripos($filterArr['mimetype'], ',') !== false) {
39 - $this->request->get(['filter' => json_encode(array_merge($filterArr, ['mimetype' => '']))]); 39 + $this->request->get(['filter' => json_encode(array_diff_key($filterArr, ['mimetype' => '']))]);
40 $mimetypeQuery = function ($query) use ($filterArr) { 40 $mimetypeQuery = function ($query) use ($filterArr) {
41 $mimetypeArr = explode(',', $filterArr['mimetype']); 41 $mimetypeArr = explode(',', $filterArr['mimetype']);
42 foreach ($mimetypeArr as $index => $item) { 42 foreach ($mimetypeArr as $index => $item) {
@@ -56,6 +56,7 @@ return [ @@ -56,6 +56,7 @@ return [
56 'Execute' => '执行', 56 'Execute' => '执行',
57 'Close' => '关闭', 57 'Close' => '关闭',
58 'Choose' => '选择', 58 'Choose' => '选择',
  59 + 'Go' => '跳转',
59 'Search' => '搜索', 60 'Search' => '搜索',
60 'Refresh' => '刷新', 61 'Refresh' => '刷新',
61 'Install' => '安装', 62 'Install' => '安装',
@@ -3,12 +3,12 @@ @@ -3,12 +3,12 @@
3 namespace app\admin\library\traits; 3 namespace app\admin\library\traits;
4 4
5 use app\admin\library\Auth; 5 use app\admin\library\Auth;
  6 +use Exception;
6 use PhpOffice\PhpSpreadsheet\Cell\Coordinate; 7 use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
7 use PhpOffice\PhpSpreadsheet\Reader\Xlsx; 8 use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
8 use PhpOffice\PhpSpreadsheet\Reader\Xls; 9 use PhpOffice\PhpSpreadsheet\Reader\Xls;
9 use PhpOffice\PhpSpreadsheet\Reader\Csv; 10 use PhpOffice\PhpSpreadsheet\Reader\Csv;
10 use think\Db; 11 use think\Db;
11 -use think\Exception;  
12 use think\exception\PDOException; 12 use think\exception\PDOException;
13 use think\exception\ValidateException; 13 use think\exception\ValidateException;
14 14
@@ -470,7 +470,7 @@ trait Backend @@ -470,7 +470,7 @@ trait Backend
470 $msg = "导入失败,包含【{$matches[1]}】的记录已存在"; 470 $msg = "导入失败,包含【{$matches[1]}】的记录已存在";
471 }; 471 };
472 $this->error($msg); 472 $this->error($msg);
473 - } catch (\Exception $e) { 473 + } catch (Exception $e) {
474 $this->error($e->getMessage()); 474 $this->error($e->getMessage());
475 } 475 }
476 476
@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 namespace app\admin\model; 3 namespace app\admin\model;
4 4
5 use app\common\model\MoneyLog; 5 use app\common\model\MoneyLog;
  6 +use app\common\model\ScoreLog;
6 use think\Model; 7 use think\Model;
7 8
8 class User extends Model 9 class User extends Model
@@ -50,6 +51,10 @@ class User extends Model @@ -50,6 +51,10 @@ class User extends Model
50 $origin = $row->getOriginData(); 51 $origin = $row->getOriginData();
51 MoneyLog::create(['user_id' => $row['id'], 'money' => $changedata['money'] - $origin['money'], 'before' => $origin['money'], 'after' => $changedata['money'], 'memo' => '管理员变更金额']); 52 MoneyLog::create(['user_id' => $row['id'], 'money' => $changedata['money'] - $origin['money'], 'before' => $origin['money'], 'after' => $changedata['money'], 'memo' => '管理员变更金额']);
52 } 53 }
  54 + if (isset($changedata['score'])) {
  55 + $origin = $row->getOriginData();
  56 + ScoreLog::create(['user_id' => $row['id'], 'score' => $changedata['score'] - $origin['score'], 'before' => $origin['score'], 'after' => $changedata['score'], 'memo' => '管理员变更积分']);
  57 + }
53 }); 58 });
54 } 59 }
55 60
@@ -208,7 +208,7 @@ @@ -208,7 +208,7 @@
208 208
209 <div class="row"> 209 <div class="row">
210 <div class="col-lg-8"> 210 <div class="col-lg-8">
211 - <div id="echart" style="height:200px;width:100%;"></div> 211 + <div id="echart" class="btn-refresh" style="height:200px;width:100%;"></div>
212 </div> 212 </div>
213 <div class="col-lg-4"> 213 <div class="col-lg-4">
214 <div class="card sameheight-item stats"> 214 <div class="card sameheight-item stats">
@@ -76,7 +76,7 @@ class User extends Frontend @@ -76,7 +76,7 @@ class User extends Frontend
76 */ 76 */
77 public function register() 77 public function register()
78 { 78 {
79 - $url = $this->request->request('url', '', 'trim'); 79 + $url = $this->request->request('url', '');
80 if ($this->auth->id) { 80 if ($this->auth->id) {
81 $this->success(__('You\'ve logged in, do not login again'), $url ? $url : url('user/index')); 81 $this->success(__('You\'ve logged in, do not login again'), $url ? $url : url('user/index'));
82 } 82 }
@@ -144,7 +144,7 @@ class User extends Frontend @@ -144,7 +144,7 @@ class User extends Frontend
144 */ 144 */
145 public function login() 145 public function login()
146 { 146 {
147 - $url = $this->request->request('url', '', 'trim'); 147 + $url = $this->request->request('url', '');
148 if ($this->auth->id) { 148 if ($this->auth->id) {
149 $this->success(__('You\'ve logged in, do not login again'), $url ? $url : url('user/index')); 149 $this->success(__('You\'ve logged in, do not login again'), $url ? $url : url('user/index'));
150 } 150 }
@@ -157,9 +157,9 @@ class FormBuilder @@ -157,9 +157,9 @@ class FormBuilder
157 /** 157 /**
158 * 生成Label标签 158 * 生成Label标签
159 * 159 *
160 - * @param string $name  
161 - * @param string $value  
162 - * @param array $options 160 + * @param string $name
  161 + * @param string $value
  162 + * @param array $options
163 * @return string 163 * @return string
164 */ 164 */
165 public function label($name, $value = null, $options = []) 165 public function label($name, $value = null, $options = [])
@@ -175,8 +175,8 @@ class FormBuilder @@ -175,8 +175,8 @@ class FormBuilder
175 /** 175 /**
176 * Format the label value. 176 * Format the label value.
177 * 177 *
178 - * @param string $name  
179 - * @param string|null $value 178 + * @param string $name
  179 + * @param string|null $value
180 * @return string 180 * @return string
181 */ 181 */
182 protected function formatLabel($name, $value) 182 protected function formatLabel($name, $value)
@@ -187,10 +187,10 @@ class FormBuilder @@ -187,10 +187,10 @@ class FormBuilder
187 /** 187 /**
188 * 生成文本框(按类型) 188 * 生成文本框(按类型)
189 * 189 *
190 - * @param string $type  
191 - * @param string $name  
192 - * @param string $value  
193 - * @param array $options 190 + * @param string $type
  191 + * @param string $name
  192 + * @param string $value
  193 + * @param array $options
194 * @return string 194 * @return string
195 */ 195 */
196 public function input($type, $name, $value = null, $options = []) 196 public function input($type, $name, $value = null, $options = [])
@@ -215,9 +215,9 @@ class FormBuilder @@ -215,9 +215,9 @@ class FormBuilder
215 /** 215 /**
216 * 生成普通文本框 216 * 生成普通文本框
217 * 217 *
218 - * @param string $name  
219 - * @param string $value  
220 - * @param array $options 218 + * @param string $name
  219 + * @param string $value
  220 + * @param array $options
221 * @return string 221 * @return string
222 */ 222 */
223 public function text($name, $value = null, $options = []) 223 public function text($name, $value = null, $options = [])
@@ -228,8 +228,8 @@ class FormBuilder @@ -228,8 +228,8 @@ class FormBuilder
228 /** 228 /**
229 * 生成密码文本框 229 * 生成密码文本框
230 * 230 *
231 - * @param string $name  
232 - * @param array $options 231 + * @param string $name
  232 + * @param array $options
233 * @return string 233 * @return string
234 */ 234 */
235 public function password($name, $options = []) 235 public function password($name, $options = [])
@@ -240,9 +240,9 @@ class FormBuilder @@ -240,9 +240,9 @@ class FormBuilder
240 /** 240 /**
241 * 生成隐藏文本框 241 * 生成隐藏文本框
242 * 242 *
243 - * @param string $name  
244 - * @param string $value  
245 - * @param array $options 243 + * @param string $name
  244 + * @param string $value
  245 + * @param array $options
246 * @return string 246 * @return string
247 */ 247 */
248 public function hidden($name, $value = null, $options = []) 248 public function hidden($name, $value = null, $options = [])
@@ -253,9 +253,9 @@ class FormBuilder @@ -253,9 +253,9 @@ class FormBuilder
253 /** 253 /**
254 * 生成Email文本框 254 * 生成Email文本框
255 * 255 *
256 - * @param string $name  
257 - * @param string $value  
258 - * @param array $options 256 + * @param string $name
  257 + * @param string $value
  258 + * @param array $options
259 * @return string 259 * @return string
260 */ 260 */
261 public function email($name, $value = null, $options = []) 261 public function email($name, $value = null, $options = [])
@@ -266,9 +266,9 @@ class FormBuilder @@ -266,9 +266,9 @@ class FormBuilder
266 /** 266 /**
267 * 生成URL文本框 267 * 生成URL文本框
268 * 268 *
269 - * @param string $name  
270 - * @param string $value  
271 - * @param array $options 269 + * @param string $name
  270 + * @param string $value
  271 + * @param array $options
272 * @return string 272 * @return string
273 */ 273 */
274 public function url($name, $value = null, $options = []) 274 public function url($name, $value = null, $options = [])
@@ -279,8 +279,8 @@ class FormBuilder @@ -279,8 +279,8 @@ class FormBuilder
279 /** 279 /**
280 * 生成上传文件组件 280 * 生成上传文件组件
281 * 281 *
282 - * @param string $name  
283 - * @param array $options 282 + * @param string $name
  283 + * @param array $options
284 * @return string 284 * @return string
285 */ 285 */
286 public function file($name, $options = []) 286 public function file($name, $options = [])
@@ -291,9 +291,9 @@ class FormBuilder @@ -291,9 +291,9 @@ class FormBuilder
291 /** 291 /**
292 * 生成多行文本框 292 * 生成多行文本框
293 * 293 *
294 - * @param string $name  
295 - * @param string $value  
296 - * @param array $options 294 + * @param string $name
  295 + * @param string $value
  296 + * @param array $options
297 * @return string 297 * @return string
298 */ 298 */
299 public function textarea($name, $value = null, $options = []) 299 public function textarea($name, $value = null, $options = [])
@@ -331,7 +331,7 @@ class FormBuilder @@ -331,7 +331,7 @@ class FormBuilder
331 /** 331 /**
332 * 设置默认的文本框行列数 332 * 设置默认的文本框行列数
333 * 333 *
334 - * @param array $options 334 + * @param array $options
335 * @return array 335 * @return array
336 */ 336 */
337 protected function setTextAreaSize($options) 337 protected function setTextAreaSize($options)
@@ -349,7 +349,7 @@ class FormBuilder @@ -349,7 +349,7 @@ class FormBuilder
349 /** 349 /**
350 * 根据size设置行数和列数 350 * 根据size设置行数和列数
351 * 351 *
352 - * @param array $options 352 + * @param array $options
353 * @return array 353 * @return array
354 */ 354 */
355 protected function setQuickTextAreaSize($options) 355 protected function setQuickTextAreaSize($options)
@@ -379,10 +379,10 @@ class FormBuilder @@ -379,10 +379,10 @@ class FormBuilder
379 /** 379 /**
380 * 生成下拉列表框 380 * 生成下拉列表框
381 * 381 *
382 - * @param string $name  
383 - * @param array $list  
384 - * @param mixed $selected  
385 - * @param array $options 382 + * @param string $name
  383 + * @param array $list
  384 + * @param mixed $selected
  385 + * @param array $options
386 * @return string 386 * @return string
387 */ 387 */
388 public function select($name, $list = [], $selected = null, $options = []) 388 public function select($name, $list = [], $selected = null, $options = [])
@@ -719,11 +719,11 @@ EOD; @@ -719,11 +719,11 @@ EOD;
719 /** 719 /**
720 * 创建一个下拉列表选择区间组件 720 * 创建一个下拉列表选择区间组件
721 * 721 *
722 - * @param string $name  
723 - * @param string $begin  
724 - * @param string $end  
725 - * @param string $selected  
726 - * @param array $options 722 + * @param string $name
  723 + * @param string $begin
  724 + * @param string $end
  725 + * @param string $selected
  726 + * @param array $options
727 * @return string 727 * @return string
728 */ 728 */
729 public function selectRange($name, $begin, $end, $selected = null, $options = []) 729 public function selectRange($name, $begin, $end, $selected = null, $options = [])
@@ -735,11 +735,11 @@ EOD; @@ -735,11 +735,11 @@ EOD;
735 /** 735 /**
736 * 生成选择年组件 736 * 生成选择年组件
737 * 737 *
738 - * @param string $name  
739 - * @param string $begin  
740 - * @param string $end  
741 - * @param string $selected  
742 - * @param array $options 738 + * @param string $name
  739 + * @param string $begin
  740 + * @param string $end
  741 + * @param string $selected
  742 + * @param array $options
743 * @return string 743 * @return string
744 */ 744 */
745 public function selectYear($name, $begin, $end, $selected, $options) 745 public function selectYear($name, $begin, $end, $selected, $options)
@@ -750,10 +750,10 @@ EOD; @@ -750,10 +750,10 @@ EOD;
750 /** 750 /**
751 * 生成选择月组件 751 * 生成选择月组件
752 * 752 *
753 - * @param string $name  
754 - * @param string $selected  
755 - * @param array $options  
756 - * @param string $format 753 + * @param string $name
  754 + * @param string $selected
  755 + * @param array $options
  756 + * @param string $format
757 * @return string 757 * @return string
758 */ 758 */
759 public function selectMonth($name, $selected = null, $options = [], $format = '%m') 759 public function selectMonth($name, $selected = null, $options = [], $format = '%m')
@@ -770,9 +770,9 @@ EOD; @@ -770,9 +770,9 @@ EOD;
770 /** 770 /**
771 * 根据传递的值生成option 771 * 根据传递的值生成option
772 * 772 *
773 - * @param string $display  
774 - * @param string $value  
775 - * @param string $selected 773 + * @param string $display
  774 + * @param string $value
  775 + * @param string $selected
776 * @return string 776 * @return string
777 */ 777 */
778 public function getSelectOption($display, $value, $selected) 778 public function getSelectOption($display, $value, $selected)
@@ -787,9 +787,9 @@ EOD; @@ -787,9 +787,9 @@ EOD;
787 /** 787 /**
788 * 生成optionGroup 788 * 生成optionGroup
789 * 789 *
790 - * @param array $list  
791 - * @param string $label  
792 - * @param string $selected 790 + * @param array $list
  791 + * @param string $label
  792 + * @param string $selected
793 * @return string 793 * @return string
794 */ 794 */
795 protected function optionGroup($list, $label, $selected) 795 protected function optionGroup($list, $label, $selected)
@@ -806,9 +806,9 @@ EOD; @@ -806,9 +806,9 @@ EOD;
806 /** 806 /**
807 * 生成option选项 807 * 生成option选项
808 * 808 *
809 - * @param string $display  
810 - * @param string $value  
811 - * @param string $selected 809 + * @param string $display
  810 + * @param string $value
  811 + * @param string $selected
812 * @return string 812 * @return string
813 */ 813 */
814 protected function option($display, $value, $selected) 814 protected function option($display, $value, $selected)
@@ -823,8 +823,8 @@ EOD; @@ -823,8 +823,8 @@ EOD;
823 /** 823 /**
824 * 检测value是否选中 824 * 检测value是否选中
825 * 825 *
826 - * @param string $value  
827 - * @param string $selected 826 + * @param string $value
  827 + * @param string $selected
828 * @return string 828 * @return string
829 */ 829 */
830 protected function getSelectedValue($value, $selected) 830 protected function getSelectedValue($value, $selected)
@@ -839,10 +839,10 @@ EOD; @@ -839,10 +839,10 @@ EOD;
839 /** 839 /**
840 * 生成复选按钮 840 * 生成复选按钮
841 * 841 *
842 - * @param string $name  
843 - * @param mixed $value  
844 - * @param bool $checked  
845 - * @param array $options 842 + * @param string $name
  843 + * @param mixed $value
  844 + * @param bool $checked
  845 + * @param array $options
846 * @return string 846 * @return string
847 */ 847 */
848 public function checkbox($name, $value = 1, $checked = null, $options = []) 848 public function checkbox($name, $value = 1, $checked = null, $options = [])
@@ -870,7 +870,7 @@ EOD; @@ -870,7 +870,7 @@ EOD;
870 $checked = is_array($checked) ? $checked : explode(',', $checked); 870 $checked = is_array($checked) ? $checked : explode(',', $checked);
871 foreach ($list as $k => $v) { 871 foreach ($list as $k => $v) {
872 $options['id'] = "{$name}-{$k}"; 872 $options['id'] = "{$name}-{$k}";
873 - $html[] = sprintf(Form::label("{$name}-{$k}", "%s {$v}"), Form::checkbox($name, $k, in_array($k, $checked), $options)); 873 + $html[] = sprintf(Form::label("{$name}-{$k}", "%s {$v}"), Form::checkbox("{$name}[{$k}}]", $k, in_array($k, $checked), $options));
874 } 874 }
875 return '<div class="checkbox">' . implode(' ', $html) . '</div>'; 875 return '<div class="checkbox">' . implode(' ', $html) . '</div>';
876 } 876 }
@@ -878,10 +878,10 @@ EOD; @@ -878,10 +878,10 @@ EOD;
878 /** 878 /**
879 * 生成单选按钮 879 * 生成单选按钮
880 * 880 *
881 - * @param string $name  
882 - * @param mixed $value  
883 - * @param bool $checked  
884 - * @param array $options 881 + * @param string $name
  882 + * @param mixed $value
  883 + * @param bool $checked
  884 + * @param array $options
885 * @return string 885 * @return string
886 */ 886 */
887 public function radio($name, $value = null, $checked = null, $options = []) 887 public function radio($name, $value = null, $checked = null, $options = [])
@@ -1042,8 +1042,8 @@ EOD; @@ -1042,8 +1042,8 @@ EOD;
1042 /** 1042 /**
1043 * 生成一个按钮 1043 * 生成一个按钮
1044 * 1044 *
1045 - * @param string $value  
1046 - * @param array $options 1045 + * @param string $value
  1046 + * @param array $options
1047 * @return string 1047 * @return string
1048 */ 1048 */
1049 public function button($value = null, $options = []) 1049 public function button($value = null, $options = [])
@@ -1058,8 +1058,8 @@ EOD; @@ -1058,8 +1058,8 @@ EOD;
1058 /** 1058 /**
1059 * 获取ID属性值 1059 * 获取ID属性值
1060 * 1060 *
1061 - * @param string $name  
1062 - * @param array $attributes 1061 + * @param string $name
  1062 + * @param array $attributes
1063 * @return string 1063 * @return string
1064 */ 1064 */
1065 public function getIdAttribute($name, $attributes) 1065 public function getIdAttribute($name, $attributes)
@@ -1076,8 +1076,8 @@ EOD; @@ -1076,8 +1076,8 @@ EOD;
1076 /** 1076 /**
1077 * 获取Value属性值 1077 * 获取Value属性值
1078 * 1078 *
1079 - * @param string $name  
1080 - * @param string $value 1079 + * @param string $name
  1080 + * @param string $value
1081 * @return string 1081 * @return string
1082 */ 1082 */
1083 public function getValueAttribute($name, $value = null) 1083 public function getValueAttribute($name, $value = null)
@@ -1094,7 +1094,7 @@ EOD; @@ -1094,7 +1094,7 @@ EOD;
1094 /** 1094 /**
1095 * 数组转换成一个HTML属性字符串。 1095 * 数组转换成一个HTML属性字符串。
1096 * 1096 *
1097 - * @param array $attributes 1097 + * @param array $attributes
1098 * @return string 1098 * @return string
1099 */ 1099 */
1100 public function attributes($attributes) 1100 public function attributes($attributes)
@@ -1115,8 +1115,8 @@ EOD; @@ -1115,8 +1115,8 @@ EOD;
1115 /** 1115 /**
1116 * 拼接成一个属性。 1116 * 拼接成一个属性。
1117 * 1117 *
1118 - * @param string $key  
1119 - * @param string $value 1118 + * @param string $key
  1119 + * @param string $value
1120 * @return string 1120 * @return string
1121 */ 1121 */
1122 protected function attributeElement($key, $value) 1122 protected function attributeElement($key, $value)
@@ -1141,7 +1141,7 @@ class Arr @@ -1141,7 +1141,7 @@ class Arr
1141 /** 1141 /**
1142 * Determine whether the given value is array accessible. 1142 * Determine whether the given value is array accessible.
1143 * 1143 *
1144 - * @param mixed $value 1144 + * @param mixed $value
1145 * @return bool 1145 * @return bool
1146 */ 1146 */
1147 public static function accessible($value) 1147 public static function accessible($value)
@@ -1152,8 +1152,8 @@ class Arr @@ -1152,8 +1152,8 @@ class Arr
1152 /** 1152 /**
1153 * Determine if the given key exists in the provided array. 1153 * Determine if the given key exists in the provided array.
1154 * 1154 *
1155 - * @param \ArrayAccess|array $array  
1156 - * @param string|int $key 1155 + * @param \ArrayAccess|array $array
  1156 + * @param string|int $key
1157 * @return bool 1157 * @return bool
1158 */ 1158 */
1159 public static function exists($array, $key) 1159 public static function exists($array, $key)
@@ -1167,9 +1167,9 @@ class Arr @@ -1167,9 +1167,9 @@ class Arr
1167 /** 1167 /**
1168 * Get an item from an array using "dot" notation. 1168 * Get an item from an array using "dot" notation.
1169 * 1169 *
1170 - * @param \ArrayAccess|array $array  
1171 - * @param string $key  
1172 - * @param mixed $default 1170 + * @param \ArrayAccess|array $array
  1171 + * @param string $key
  1172 + * @param mixed $default
1173 * @return mixed 1173 * @return mixed
1174 */ 1174 */
1175 public static function get($array, $key, $default = null) 1175 public static function get($array, $key, $default = null)
@@ -1196,8 +1196,8 @@ class Arr @@ -1196,8 +1196,8 @@ class Arr
1196 /** 1196 /**
1197 * Get all of the given array except for a specified array of items. 1197 * Get all of the given array except for a specified array of items.
1198 * 1198 *
1199 - * @param array $array  
1200 - * @param array|string $keys 1199 + * @param array $array
  1200 + * @param array|string $keys
1201 * @return array 1201 * @return array
1202 */ 1202 */
1203 public static function except($array, $keys) 1203 public static function except($array, $keys)
@@ -1209,8 +1209,8 @@ class Arr @@ -1209,8 +1209,8 @@ class Arr
1209 /** 1209 /**
1210 * Remove one or many array items from a given array using "dot" notation. 1210 * Remove one or many array items from a given array using "dot" notation.
1211 * 1211 *
1212 - * @param array $array  
1213 - * @param array|string $keys 1212 + * @param array $array
  1213 + * @param array|string $keys
1214 * @return void 1214 * @return void
1215 */ 1215 */
1216 public static function forget(&$array, $keys) 1216 public static function forget(&$array, $keys)
@@ -1247,9 +1247,9 @@ if (!function_exists('array_get')) { @@ -1247,9 +1247,9 @@ if (!function_exists('array_get')) {
1247 /** 1247 /**
1248 * Get an item from an array using "dot" notation. 1248 * Get an item from an array using "dot" notation.
1249 * 1249 *
1250 - * @param \ArrayAccess|array $array  
1251 - * @param string $key  
1252 - * @param mixed $default 1250 + * @param \ArrayAccess|array $array
  1251 + * @param string $key
  1252 + * @param mixed $default
1253 * @return mixed 1253 * @return mixed
1254 */ 1254 */
1255 function array_get($array, $key, $default = null) 1255 function array_get($array, $key, $default = null)
@@ -1278,8 +1278,8 @@ if (!function_exists('array_except')) { @@ -1278,8 +1278,8 @@ if (!function_exists('array_except')) {
1278 /** 1278 /**
1279 * Get all of the given array except for a specified array of items. 1279 * Get all of the given array except for a specified array of items.
1280 * 1280 *
1281 - * @param array $array  
1282 - * @param array|string $keys 1281 + * @param array $array
  1282 + * @param array|string $keys
1283 * @return array 1283 * @return array
1284 */ 1284 */
1285 function array_except($array, $keys) 1285 function array_except($array, $keys)
@@ -997,4 +997,12 @@ table.table-nowrap thead > tr > th { @@ -997,4 +997,12 @@ table.table-nowrap thead > tr > th {
997 .btn-switcher .text-gray { 997 .btn-switcher .text-gray {
998 color: #d2d6de !important; 998 color: #d2d6de !important;
999 } 999 }
  1000 +.jumpto input {
  1001 + height: 31px;
  1002 + width: 50px;
  1003 + margin-left: 5px;
  1004 + margin-right: 5px;
  1005 + text-align: center;
  1006 + display: inline-block;
  1007 +}
1000 /*# sourceMappingURL=backend.css.map */ 1008 /*# sourceMappingURL=backend.css.map */
@@ -510,4 +510,12 @@ main.content { @@ -510,4 +510,12 @@ main.content {
510 padding: .5em .93em; 510 padding: .5em .93em;
511 font-size: 14px; 511 font-size: 14px;
512 } 512 }
513 -/*# sourceMappingURL=../css/frontend.css.map */  
  513 +.jumpto input {
  514 + height: 31px;
  515 + width: 50px;
  516 + margin-left: 5px;
  517 + margin-right: 5px;
  518 + text-align: center;
  519 + display: inline-block;
  520 +}
  521 +/*# sourceMappingURL=frontend.css.map */
@@ -162,13 +162,14 @@ define(['fast', 'template', 'moment'], function (Fast, Template, Moment) { @@ -162,13 +162,14 @@ define(['fast', 'template', 'moment'], function (Fast, Template, Moment) {
162 var options = $.extend({}, $(that).data() || {}); 162 var options = $.extend({}, $(that).data() || {});
163 var url = Backend.api.replaceids(that, $(that).attr('href')); 163 var url = Backend.api.replaceids(that, $(that).attr('href'));
164 var title = $(that).attr("title") || $(that).data("title") || $(that).data('original-title'); 164 var title = $(that).attr("title") || $(that).data("title") || $(that).data('original-title');
  165 + var icon = $(that).attr("icon") || $(that).data("icon");
165 if (typeof options.confirm !== 'undefined') { 166 if (typeof options.confirm !== 'undefined') {
166 Layer.confirm(options.confirm, function (index) { 167 Layer.confirm(options.confirm, function (index) {
167 - Backend.api.addtabs(url, title); 168 + Backend.api.addtabs(url, title, icon);
168 Layer.close(index); 169 Layer.close(index);
169 }); 170 });
170 } else { 171 } else {
171 - Backend.api.addtabs(url, title); 172 + Backend.api.addtabs(url, title, icon);
172 } 173 }
173 return false; 174 return false;
174 }); 175 });
@@ -153,7 +153,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function @@ -153,7 +153,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
153 commonSearch: true, 153 commonSearch: true,
154 searchFormVisible: true, 154 searchFormVisible: true,
155 searchFormTemplate: 'searchformtpl', 155 searchFormTemplate: 'searchformtpl',
156 - pageSize: 30, 156 + pageSize: 50,
157 }); 157 });
158 158
159 // 为表格绑定事件 159 // 为表格绑定事件
@@ -96,9 +96,6 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'table', 'echarts', 'echart @@ -96,9 +96,6 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'table', 'echarts', 'echart
96 data: Orderdata.createdata 96 data: Orderdata.createdata
97 }] 97 }]
98 }); 98 });
99 - if ($("#echart").width() != $("#echart canvas").width() && $("#echart canvas").width() < $("#echart").width()) {  
100 - myChart.resize();  
101 - }  
102 }, 2000); 99 }, 2000);
103 $(window).resize(function () { 100 $(window).resize(function () {
104 myChart.resize(); 101 myChart.resize();
@@ -108,6 +105,12 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'table', 'echarts', 'echart @@ -108,6 +105,12 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'table', 'echarts', 'echart
108 top.window.$("[data-toggle=checkupdate]").trigger("click"); 105 top.window.$("[data-toggle=checkupdate]").trigger("click");
109 }); 106 });
110 107
  108 + $(document).on("click", ".btn-refresh", function () {
  109 + setTimeout(function () {
  110 + myChart.resize();
  111 + }, 0);
  112 + });
  113 +
111 } 114 }
112 }; 115 };
113 116
@@ -29,10 +29,11 @@ require.config({ @@ -29,10 +29,11 @@ require.config({
29 'bootstrap-daterangepicker': '../libs/bootstrap-daterangepicker/daterangepicker', 29 'bootstrap-daterangepicker': '../libs/bootstrap-daterangepicker/daterangepicker',
30 'bootstrap-select': '../libs/bootstrap-select/dist/js/bootstrap-select.min', 30 'bootstrap-select': '../libs/bootstrap-select/dist/js/bootstrap-select.min',
31 'bootstrap-select-lang': '../libs/bootstrap-select/dist/js/i18n/defaults-zh_CN', 31 'bootstrap-select-lang': '../libs/bootstrap-select/dist/js/i18n/defaults-zh_CN',
32 - 'bootstrap-table': '../libs/bootstrap-table/dist/bootstrap-table.min', 32 + 'bootstrap-table': '../libs/bootstrap-table/dist/bootstrap-table',
33 'bootstrap-table-export': '../libs/bootstrap-table/dist/extensions/export/bootstrap-table-export.min', 33 'bootstrap-table-export': '../libs/bootstrap-table/dist/extensions/export/bootstrap-table-export.min',
34 'bootstrap-table-mobile': '../libs/bootstrap-table/dist/extensions/mobile/bootstrap-table-mobile', 34 'bootstrap-table-mobile': '../libs/bootstrap-table/dist/extensions/mobile/bootstrap-table-mobile',
35 'bootstrap-table-lang': '../libs/bootstrap-table/dist/locale/bootstrap-table-zh-CN', 35 'bootstrap-table-lang': '../libs/bootstrap-table/dist/locale/bootstrap-table-zh-CN',
  36 + 'bootstrap-table-jumpto': '../libs/bootstrap-table/dist/extensions/page-jumpto/bootstrap-table-jumpto',
36 'bootstrap-slider': '../libs/bootstrap-slider/bootstrap-slider', 37 'bootstrap-slider': '../libs/bootstrap-slider/bootstrap-slider',
37 'tableexport': '../libs/tableExport.jquery.plugin/tableExport.min', 38 'tableexport': '../libs/tableExport.jquery.plugin/tableExport.min',
38 'dragsort': '../libs/fastadmin-dragsort/jquery.dragsort', 39 'dragsort': '../libs/fastadmin-dragsort/jquery.dragsort',
@@ -87,6 +88,10 @@ require.config({ @@ -87,6 +88,10 @@ require.config({
87 deps: ['bootstrap-table', 'template'], 88 deps: ['bootstrap-table', 'template'],
88 exports: '$.fn.bootstrapTable.defaults' 89 exports: '$.fn.bootstrapTable.defaults'
89 }, 90 },
  91 + 'bootstrap-table-jumpto': {
  92 + deps: ['bootstrap-table'],
  93 + exports: '$.fn.bootstrapTable.defaults'
  94 + },
90 'tableexport': { 95 'tableexport': {
91 deps: ['jquery'], 96 deps: ['jquery'],
92 exports: '$.fn.extend' 97 exports: '$.fn.extend'
@@ -33,6 +33,7 @@ require.config({ @@ -33,6 +33,7 @@ require.config({
33 'bootstrap-table-export': '../libs/bootstrap-table/dist/extensions/export/bootstrap-table-export.min', 33 'bootstrap-table-export': '../libs/bootstrap-table/dist/extensions/export/bootstrap-table-export.min',
34 'bootstrap-table-mobile': '../libs/bootstrap-table/dist/extensions/mobile/bootstrap-table-mobile', 34 'bootstrap-table-mobile': '../libs/bootstrap-table/dist/extensions/mobile/bootstrap-table-mobile',
35 'bootstrap-table-lang': '../libs/bootstrap-table/dist/locale/bootstrap-table-zh-CN', 35 'bootstrap-table-lang': '../libs/bootstrap-table/dist/locale/bootstrap-table-zh-CN',
  36 + 'bootstrap-table-jumpto': '../libs/bootstrap-table/dist/extensions/page-jumpto/bootstrap-table-jumpto',
36 'tableexport': '../libs/tableExport.jquery.plugin/tableExport.min', 37 'tableexport': '../libs/tableExport.jquery.plugin/tableExport.min',
37 'dragsort': '../libs/fastadmin-dragsort/jquery.dragsort', 38 'dragsort': '../libs/fastadmin-dragsort/jquery.dragsort',
38 'sortable': '../libs/Sortable/Sortable.min', 39 'sortable': '../libs/Sortable/Sortable.min',
@@ -86,6 +87,10 @@ require.config({ @@ -86,6 +87,10 @@ require.config({
86 deps: ['bootstrap-table', 'template'], 87 deps: ['bootstrap-table', 'template'],
87 exports: '$.fn.bootstrapTable.defaults' 88 exports: '$.fn.bootstrapTable.defaults'
88 }, 89 },
  90 + 'bootstrap-table-jumpto': {
  91 + deps: ['bootstrap-table'],
  92 + exports: '$.fn.bootstrapTable.defaults'
  93 + },
89 'tableexport': { 94 'tableexport': {
90 deps: ['jquery'], 95 deps: ['jquery'],
91 exports: '$.fn.extend' 96 exports: '$.fn.extend'
@@ -46,6 +46,7 @@ require.config({ @@ -46,6 +46,7 @@ require.config({
46 'bootstrap-table-export': '../libs/bootstrap-table/dist/extensions/export/bootstrap-table-export.min', 46 'bootstrap-table-export': '../libs/bootstrap-table/dist/extensions/export/bootstrap-table-export.min',
47 'bootstrap-table-mobile': '../libs/bootstrap-table/dist/extensions/mobile/bootstrap-table-mobile', 47 'bootstrap-table-mobile': '../libs/bootstrap-table/dist/extensions/mobile/bootstrap-table-mobile',
48 'bootstrap-table-lang': '../libs/bootstrap-table/dist/locale/bootstrap-table-zh-CN', 48 'bootstrap-table-lang': '../libs/bootstrap-table/dist/locale/bootstrap-table-zh-CN',
  49 + 'bootstrap-table-jumpto': '../libs/bootstrap-table/dist/extensions/page-jumpto/bootstrap-table-jumpto',
49 'tableexport': '../libs/tableExport.jquery.plugin/tableExport.min', 50 'tableexport': '../libs/tableExport.jquery.plugin/tableExport.min',
50 'dragsort': '../libs/fastadmin-dragsort/jquery.dragsort', 51 'dragsort': '../libs/fastadmin-dragsort/jquery.dragsort',
51 'sortable': '../libs/Sortable/Sortable.min', 52 'sortable': '../libs/Sortable/Sortable.min',
@@ -99,6 +100,10 @@ require.config({ @@ -99,6 +100,10 @@ require.config({
99 deps: ['bootstrap-table', 'template'], 100 deps: ['bootstrap-table', 'template'],
100 exports: '$.fn.bootstrapTable.defaults' 101 exports: '$.fn.bootstrapTable.defaults'
101 }, 102 },
  103 + 'bootstrap-table-jumpto': {
  104 + deps: ['bootstrap-table'],
  105 + exports: '$.fn.bootstrapTable.defaults'
  106 + },
102 'tableexport': { 107 'tableexport': {
103 deps: ['jquery'], 108 deps: ['jquery'],
104 exports: '$.fn.extend' 109 exports: '$.fn.extend'
1 -define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table', 'bootstrap-table-lang', 'bootstrap-table-export', 'bootstrap-table-commonsearch', 'bootstrap-table-template'], function ($, undefined, Moment) { 1 +define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table', 'bootstrap-table-lang', 'bootstrap-table-export', 'bootstrap-table-commonsearch', 'bootstrap-table-template', 'bootstrap-table-jumpto'], function ($, undefined, Moment) {
2 var Table = { 2 var Table = {
3 list: {}, 3 list: {},
4 // Bootstrap-table 基础配置 4 // Bootstrap-table 基础配置
@@ -27,6 +27,7 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table @@ -27,6 +27,7 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table
27 dblClickToEdit: true, //是否启用双击编辑 27 dblClickToEdit: true, //是否启用双击编辑
28 singleSelect: false, //是否启用单选 28 singleSelect: false, //是否启用单选
29 showRefresh: false, 29 showRefresh: false,
  30 + showJumpto: true,
30 locale: 'zh-CN', 31 locale: 'zh-CN',
31 showToggle: true, 32 showToggle: true,
32 showColumns: true, 33 showColumns: true,
@@ -124,6 +125,9 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table @@ -124,6 +125,9 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table
124 }, 125 },
125 formatCommonChoose: function () { 126 formatCommonChoose: function () {
126 return __('Choose'); 127 return __('Choose');
  128 + },
  129 + formatJumpto: function () {
  130 + return __('Go');
127 } 131 }
128 }, locales); 132 }, locales);
129 if (typeof defaults.exportTypes != 'undefined') { 133 if (typeof defaults.exportTypes != 'undefined') {
@@ -434,7 +438,7 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table @@ -434,7 +438,7 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table
434 image: { 438 image: {
435 'click .img-center': function (e, value, row, index) { 439 'click .img-center': function (e, value, row, index) {
436 var data = []; 440 var data = [];
437 - value = value.split(","); 441 + value = value.toString().split(",");
438 $.each(value, function (index, value) { 442 $.each(value, function (index, value) {
439 data.push({ 443 data.push({
440 src: Fast.api.cdnurl(value), 444 src: Fast.api.cdnurl(value),
@@ -9,8 +9,8 @@ define(['jquery', 'bootstrap', 'plupload', 'template'], function ($, undefined, @@ -9,8 +9,8 @@ define(['jquery', 'bootstrap', 'plupload', 'template'], function ($, undefined,
9 events: { 9 events: {
10 onInit: function (up) { 10 onInit: function (up) {
11 //修复少数安卓浏览器无法上传图片的Bug 11 //修复少数安卓浏览器无法上传图片的Bug
12 - var input = $("input[type=file]", $(up.settings.button).next());  
13 - if (input && input.prop("accept") && input.prop("accept").match(/image\/jpeg/)) { 12 + var input = $("input[type=file]", up.settings.container);
  13 + if (input && input.prop("accept") && input.prop("accept").match(/image\//)) {
14 input.prop("accept", "image/jpg," + input.prop("accept")); 14 input.prop("accept", "image/jpg," + input.prop("accept"));
15 } 15 }
16 }, 16 },
@@ -214,6 +214,7 @@ define(['jquery', 'bootstrap', 'plupload', 'template'], function ($, undefined, @@ -214,6 +214,7 @@ define(['jquery', 'bootstrap', 'plupload', 'template'], function ($, undefined,
214 url: url, 214 url: url,
215 multipart_params: $.isArray(multipart) ? {} : multipart, 215 multipart_params: $.isArray(multipart) ? {} : multipart,
216 init: { 216 init: {
  217 + Init: Upload.events.onInit,
217 PostInit: Upload.events.onPostInit, 218 PostInit: Upload.events.onPostInit,
218 FilesAdded: Upload.events.onFileAdded, 219 FilesAdded: Upload.events.onFileAdded,
219 BeforeUpload: Upload.events.onBeforeUpload, 220 BeforeUpload: Upload.events.onBeforeUpload,
@@ -46,6 +46,7 @@ body.is-dialog { @@ -46,6 +46,7 @@ body.is-dialog {
46 .logo, .navbar { 46 .logo, .navbar {
47 .transition(none); 47 .transition(none);
48 } 48 }
  49 +
49 .navbar { 50 .navbar {
50 position: relative; 51 position: relative;
51 } 52 }
@@ -62,9 +63,11 @@ html.ios-fix, html.ios-fix body { @@ -62,9 +63,11 @@ html.ios-fix, html.ios-fix body {
62 overflow: auto; 63 overflow: auto;
63 -webkit-overflow-scrolling: touch; 64 -webkit-overflow-scrolling: touch;
64 } 65 }
  66 +
65 .wrapper { 67 .wrapper {
66 height: 100%; 68 height: 100%;
67 } 69 }
  70 +
68 #header { 71 #header {
69 background: #fff; 72 background: #fff;
70 //box-shadow: 0 2px 2px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05); 73 //box-shadow: 0 2px 2px rgba(0,0,0,.05),0 1px 0 rgba(0,0,0,.05);
@@ -72,7 +75,7 @@ html.ios-fix, html.ios-fix body { @@ -72,7 +75,7 @@ html.ios-fix, html.ios-fix body {
72 75
73 .content-wrapper { 76 .content-wrapper {
74 position: relative; 77 position: relative;
75 - height:100%; 78 + height: 100%;
76 } 79 }
77 80
78 .control-relative { 81 .control-relative {
@@ -119,6 +122,7 @@ html.ios-fix, html.ios-fix body { @@ -119,6 +122,7 @@ html.ios-fix, html.ios-fix body {
119 color: #fff; 122 color: #fff;
120 background-color: @brand-danger; 123 background-color: @brand-danger;
121 } 124 }
  125 +
122 &.btn-primary { 126 &.btn-primary {
123 color: #fff; 127 color: #fff;
124 background-color: @brand-primary; 128 background-color: @brand-primary;
@@ -187,6 +191,7 @@ table.table-template { @@ -187,6 +191,7 @@ table.table-template {
187 color: #777 !important; 191 color: #777 !important;
188 text-decoration: none !important; 192 text-decoration: none !important;
189 } 193 }
  194 +
190 .breadcrumb { 195 .breadcrumb {
191 display: inline-block; 196 display: inline-block;
192 margin: 0; 197 margin: 0;
@@ -199,6 +204,7 @@ table.table-template { @@ -199,6 +204,7 @@ table.table-template {
199 .breadcrumb li { 204 .breadcrumb li {
200 color: #aaa; 205 color: #aaa;
201 } 206 }
  207 +
202 .shortcut { 208 .shortcut {
203 a { 209 a {
204 margin-left: 10px; 210 margin-left: 10px;
@@ -211,6 +217,7 @@ table.table-template { @@ -211,6 +217,7 @@ table.table-template {
211 #main { 217 #main {
212 background: #fff; 218 background: #fff;
213 } 219 }
  220 +
214 .layer-footer { 221 .layer-footer {
215 display: none; 222 display: none;
216 } 223 }
@@ -229,14 +236,17 @@ form.form-horizontal .control-label { @@ -229,14 +236,17 @@ form.form-horizontal .control-label {
229 .panel-intro { 236 .panel-intro {
230 margin-bottom: 0; 237 margin-bottom: 0;
231 border: none; 238 border: none;
  239 +
232 > .panel-heading { 240 > .panel-heading {
233 padding: 15px; 241 padding: 15px;
234 padding-bottom: 0; 242 padding-bottom: 0;
235 background: @panel-intro-bg; 243 background: @panel-intro-bg;
236 border-color: @panel-intro-bg; 244 border-color: @panel-intro-bg;
237 position: relative; 245 position: relative;
  246 +
238 .panel-lead { 247 .panel-lead {
239 margin-bottom: 15px; 248 margin-bottom: 15px;
  249 +
240 em { 250 em {
241 display: block; 251 display: block;
242 font-weight: bold; 252 font-weight: bold;
@@ -257,10 +267,12 @@ form.form-horizontal .control-label { @@ -257,10 +267,12 @@ form.form-horizontal .control-label {
257 position: absolute; 267 position: absolute;
258 top: 8px; 268 top: 8px;
259 right: 8px; 269 right: 8px;
  270 +
260 .fa { 271 .fa {
261 font-size: 14px; 272 font-size: 14px;
262 } 273 }
263 } 274 }
  275 +
264 .nav-tabs { 276 .nav-tabs {
265 border-bottom: 0; 277 border-bottom: 0;
266 margin-bottom: 0; 278 margin-bottom: 0;
@@ -273,11 +285,13 @@ form.form-horizontal .control-label { @@ -273,11 +285,13 @@ form.form-horizontal .control-label {
273 border: 1px solid @panel-intro-bg; 285 border: 1px solid @panel-intro-bg;
274 border-bottom-color: transparent; 286 border-bottom-color: transparent;
275 } 287 }
  288 +
276 .nav-tabs > li > a:hover, .nav-tabs > li > a:focus { 289 .nav-tabs > li > a:hover, .nav-tabs > li > a:focus {
277 border: 1px solid @panel-intro-bg; 290 border: 1px solid @panel-intro-bg;
278 color: #7b8a8b; 291 color: #7b8a8b;
279 background-color: darken(@panel-intro-bg, 10%); 292 background-color: darken(@panel-intro-bg, 10%);
280 } 293 }
  294 +
281 .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { 295 .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
282 color: #7b8a8b; 296 color: #7b8a8b;
283 background-color: #ffffff; 297 background-color: #ffffff;
@@ -291,9 +305,11 @@ form.form-horizontal .control-label { @@ -291,9 +305,11 @@ form.form-horizontal .control-label {
291 .panel-tabs { 305 .panel-tabs {
292 .panel-heading { 306 .panel-heading {
293 padding: 12px 15px 12px 15px; 307 padding: 12px 15px 12px 15px;
  308 +
294 .panel-lead { 309 .panel-lead {
295 margin-bottom: 0px; 310 margin-bottom: 0px;
296 } 311 }
  312 +
297 .panel-title { 313 .panel-title {
298 314
299 } 315 }
@@ -309,15 +325,18 @@ form.form-horizontal .control-label { @@ -309,15 +325,18 @@ form.form-horizontal .control-label {
309 background: @main-bg; 325 background: @main-bg;
310 border-color: @main-bg; 326 border-color: @main-bg;
311 } 327 }
  328 +
312 .nav-tabs > li > a { 329 .nav-tabs > li > a {
313 padding: 12px 15px; 330 padding: 12px 15px;
314 background-color: @panel-intro-bg; 331 background-color: @panel-intro-bg;
315 border: 1px solid @main-bg; 332 border: 1px solid @main-bg;
316 } 333 }
  334 +
317 .nav-tabs > li > a:hover, .nav-tabs > li > a:focus { 335 .nav-tabs > li > a:hover, .nav-tabs > li > a:focus {
318 border: 1px solid @panel-intro-bg; 336 border: 1px solid @panel-intro-bg;
319 background-color: @panel-intro-bg; 337 background-color: @panel-intro-bg;
320 } 338 }
  339 +
321 .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { 340 .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
322 border-color: @main-bg; 341 border-color: @main-bg;
323 border-bottom-color: transparent; 342 border-bottom-color: transparent;
@@ -327,14 +346,18 @@ form.form-horizontal .control-label { @@ -327,14 +346,18 @@ form.form-horizontal .control-label {
327 /*顶栏addtabs*/ 346 /*顶栏addtabs*/
328 .nav-addtabs { 347 .nav-addtabs {
329 height: 100%; 348 height: 100%;
  349 +
330 &.disable-top-badge { 350 &.disable-top-badge {
331 > li > a > .pull-right-container { 351 > li > a > .pull-right-container {
332 display: none; 352 display: none;
333 } 353 }
334 } 354 }
  355 +
335 border: none; 356 border: none;
  357 +
336 > li { 358 > li {
337 margin: 0; 359 margin: 0;
  360 +
338 > a { 361 > a {
339 height: 50px; 362 height: 50px;
340 line-height: 50px; 363 line-height: 50px;
@@ -344,12 +367,14 @@ form.form-horizontal .control-label { @@ -344,12 +367,14 @@ form.form-horizontal .control-label {
344 border-right: 1px solid rgba(0, 0, 0, 0.05); 367 border-right: 1px solid rgba(0, 0, 0, 0.05);
345 margin: 0; 368 margin: 0;
346 color: #95a5a6; 369 color: #95a5a6;
  370 +
347 &:hover, &:focus { 371 &:hover, &:focus {
348 border: none; 372 border: none;
349 color: #2c3e50; 373 color: #2c3e50;
350 border-right: 1px solid rgba(0, 0, 0, 0.05); 374 border-right: 1px solid rgba(0, 0, 0, 0.05);
351 } 375 }
352 } 376 }
  377 +
353 &.active > a { 378 &.active > a {
354 height: 50px; 379 height: 50px;
355 line-height: 50px; 380 line-height: 50px;
@@ -360,6 +385,7 @@ form.form-horizontal .control-label { @@ -360,6 +385,7 @@ form.form-horizontal .control-label {
360 background: #f1f4f6; 385 background: #f1f4f6;
361 color: #2c3e50; 386 color: #2c3e50;
362 overflow: hidden; 387 overflow: hidden;
  388 +
363 &:hover, &:focus { 389 &:hover, &:focus {
364 border: none; 390 border: none;
365 color: #2c3e50; 391 color: #2c3e50;
@@ -367,6 +393,7 @@ form.form-horizontal .control-label { @@ -367,6 +393,7 @@ form.form-horizontal .control-label {
367 border-right: 1px solid rgba(0, 0, 0, 0.05); 393 border-right: 1px solid rgba(0, 0, 0, 0.05);
368 } 394 }
369 } 395 }
  396 +
370 .close-tab { 397 .close-tab {
371 font-size: 10px; 398 font-size: 10px;
372 position: absolute; 399 position: absolute;
@@ -385,17 +412,21 @@ form.form-horizontal .control-label { @@ -385,17 +412,21 @@ form.form-horizontal .control-label {
385 text-decoration: inherit; 412 text-decoration: inherit;
386 font-size: 18px; 413 font-size: 18px;
387 } 414 }
  415 +
388 display: none; 416 display: none;
389 } 417 }
390 } 418 }
  419 +
391 .open > a { 420 .open > a {
392 &:hover, &:focus { 421 &:hover, &:focus {
393 border-right: 1px solid rgba(0, 0, 0, 0.05); 422 border-right: 1px solid rgba(0, 0, 0, 0.05);
394 } 423 }
395 } 424 }
  425 +
396 ul li { 426 ul li {
397 position: relative; 427 position: relative;
398 } 428 }
  429 +
399 li:hover > .close-tab { 430 li:hover > .close-tab {
400 display: block; 431 display: block;
401 } 432 }
@@ -416,6 +447,7 @@ form.form-horizontal .control-label { @@ -416,6 +447,7 @@ form.form-horizontal .control-label {
416 border-bottom: 1px solid transparent; 447 border-bottom: 1px solid transparent;
417 box-shadow: 0 1px 4px rgba(0, 21, 41, .08); 448 box-shadow: 0 1px 4px rgba(0, 21, 41, .08);
418 position: relative; 449 position: relative;
  450 +
419 .sidebar-toggle { 451 .sidebar-toggle {
420 position: absolute; 452 position: absolute;
421 width: 45px; 453 width: 45px;
@@ -424,11 +456,13 @@ form.form-horizontal .control-label { @@ -424,11 +456,13 @@ form.form-horizontal .control-label {
424 line-height: 50px; 456 line-height: 50px;
425 padding: 0; 457 padding: 0;
426 } 458 }
  459 +
427 .nav-addtabs { 460 .nav-addtabs {
428 position: absolute; 461 position: absolute;
429 left: 45px; 462 left: 45px;
430 z-index: 98; 463 z-index: 98;
431 } 464 }
  465 +
432 .navbar-custom-menu { 466 .navbar-custom-menu {
433 position: absolute; 467 position: absolute;
434 top: 0; 468 top: 0;
@@ -451,14 +485,18 @@ form.form-horizontal .control-label { @@ -451,14 +485,18 @@ form.form-horizontal .control-label {
451 -webkit-user-select: none; 485 -webkit-user-select: none;
452 -moz-user-select: none; 486 -moz-user-select: none;
453 user-select: none; 487 user-select: none;
  488 +
454 .nav-addtabs { 489 .nav-addtabs {
455 height: 100%; 490 height: 100%;
  491 +
456 &.disable-top-badge { 492 &.disable-top-badge {
457 > li > a > .pull-right-container { 493 > li > a > .pull-right-container {
458 display: none; 494 display: none;
459 } 495 }
460 } 496 }
  497 +
461 border: none; 498 border: none;
  499 +
462 > li { 500 > li {
463 border: 1px solid #eee; 501 border: 1px solid #eee;
464 border-radius: 3px; 502 border-radius: 3px;
@@ -467,6 +505,7 @@ form.form-horizontal .control-label { @@ -467,6 +505,7 @@ form.form-horizontal .control-label {
467 line-height: 30px; 505 line-height: 30px;
468 margin: 2px 5px 2px 0; 506 margin: 2px 5px 2px 0;
469 background: #fff; 507 background: #fff;
  508 +
470 > a { 509 > a {
471 display: block; 510 display: block;
472 color: #495060 !important; 511 color: #495060 !important;
@@ -480,10 +519,12 @@ form.form-horizontal .control-label { @@ -480,10 +519,12 @@ form.form-horizontal .control-label {
480 background: none; 519 background: none;
481 border: none; 520 border: none;
482 } 521 }
  522 +
483 &.active { 523 &.active {
484 border-color: #bdbebd; 524 border-color: #bdbebd;
485 background-color: #f7f7f7; 525 background-color: #f7f7f7;
486 } 526 }
  527 +
487 .close-tab { 528 .close-tab {
488 font-size: 10px; 529 font-size: 10px;
489 position: absolute; 530 position: absolute;
@@ -503,13 +544,16 @@ form.form-horizontal .control-label { @@ -503,13 +544,16 @@ form.form-horizontal .control-label {
503 font-size: 18px; 544 font-size: 18px;
504 } 545 }
505 } 546 }
  547 +
506 &:hover, &:focus { 548 &:hover, &:focus {
507 border-color: #bdbebd; 549 border-color: #bdbebd;
508 } 550 }
509 } 551 }
  552 +
510 ul li { 553 ul li {
511 position: relative; 554 position: relative;
512 } 555 }
  556 +
513 li:hover > .close-tab { 557 li:hover > .close-tab {
514 display: block; 558 display: block;
515 border-color: #222e32; 559 border-color: #222e32;
@@ -521,6 +565,7 @@ form.form-horizontal .control-label { @@ -521,6 +565,7 @@ form.form-horizontal .control-label {
521 565
522 .main-sidebar .sidebar-form { 566 .main-sidebar .sidebar-form {
523 overflow: visible; 567 overflow: visible;
  568 +
524 .menuresult { 569 .menuresult {
525 z-index: 999; 570 z-index: 999;
526 position: absolute; 571 position: absolute;
@@ -533,6 +578,7 @@ form.form-horizontal .control-label { @@ -533,6 +578,7 @@ form.form-horizontal .control-label {
533 border-top: none; 578 border-top: none;
534 border-top-left-radius: 0; 579 border-top-left-radius: 0;
535 border-top-right-radius: 0; 580 border-top-right-radius: 0;
  581 +
536 a { 582 a {
537 border-top: 1px solid #eee; 583 border-top: 1px solid #eee;
538 display: block; 584 display: block;
@@ -542,6 +588,7 @@ form.form-horizontal .control-label { @@ -542,6 +588,7 @@ form.form-horizontal .control-label {
542 display: block; 588 display: block;
543 padding: 10px 15px; 589 padding: 10px 15px;
544 color: #222d32; 590 color: #222d32;
  591 +
545 &:hover { 592 &:hover {
546 background: #eee; 593 background: #eee;
547 } 594 }
@@ -559,9 +606,11 @@ form.form-horizontal .control-label { @@ -559,9 +606,11 @@ form.form-horizontal .control-label {
559 display: block; 606 display: block;
560 } 607 }
561 } 608 }
  609 +
562 > li .badge { 610 > li .badge {
563 margin-top: 0; 611 margin-top: 0;
564 } 612 }
  613 +
565 .treeview-menu > li > a { 614 .treeview-menu > li > a {
566 font-size: inherit; 615 font-size: inherit;
567 } 616 }
@@ -588,13 +637,16 @@ form.form-horizontal .control-label { @@ -588,13 +637,16 @@ form.form-horizontal .control-label {
588 .fieldlist dd { 637 .fieldlist dd {
589 display: block; 638 display: block;
590 margin: 5px 0; 639 margin: 5px 0;
  640 +
591 input { 641 input {
592 display: inline-block; 642 display: inline-block;
593 width: 300px; 643 width: 300px;
594 } 644 }
  645 +
595 input:first-child { 646 input:first-child {
596 width: 110px; 647 width: 110px;
597 } 648 }
  649 +
598 ins { 650 ins {
599 width: 110px; 651 width: 110px;
600 display: inline-block; 652 display: inline-block;
@@ -608,6 +660,7 @@ form.form-horizontal .control-label { @@ -608,6 +660,7 @@ form.form-horizontal .control-label {
608 height: 100%; 660 height: 100%;
609 min-height: 150px; 661 min-height: 150px;
610 min-width: 300px; 662 min-width: 300px;
  663 +
611 .form-body { 664 .form-body {
612 width: 100%; 665 width: 100%;
613 overflow: auto; 666 overflow: auto;
@@ -617,6 +670,7 @@ form.form-horizontal .control-label { @@ -617,6 +670,7 @@ form.form-horizontal .control-label {
617 bottom: 50px; 670 bottom: 50px;
618 padding: 15px; 671 padding: 15px;
619 } 672 }
  673 +
620 .form-footer { 674 .form-footer {
621 height: 50px; 675 height: 50px;
622 line-height: 50px; 676 line-height: 50px;
@@ -627,6 +681,7 @@ form.form-horizontal .control-label { @@ -627,6 +681,7 @@ form.form-horizontal .control-label {
627 bottom: 0; 681 bottom: 0;
628 margin: 0; 682 margin: 0;
629 } 683 }
  684 +
630 .form-footer .form-group { 685 .form-footer .form-group {
631 margin-left: 0; 686 margin-left: 0;
632 margin-right: 0; 687 margin-right: 0;
@@ -638,6 +693,7 @@ form.form-horizontal .control-label { @@ -638,6 +693,7 @@ form.form-horizontal .control-label {
638 display: block; 693 display: block;
639 clear: both; 694 clear: both;
640 } 695 }
  696 +
641 .jstree-leaf:not(:first-child) { 697 .jstree-leaf:not(:first-child) {
642 float: left; 698 float: left;
643 background: none; 699 background: none;
@@ -645,6 +701,7 @@ form.form-horizontal .control-label { @@ -645,6 +701,7 @@ form.form-horizontal .control-label {
645 min-width: 80px; 701 min-width: 80px;
646 clear: none; 702 clear: none;
647 } 703 }
  704 +
648 .jstree-leaf { 705 .jstree-leaf {
649 float: left; 706 float: left;
650 margin-left: 0; 707 margin-left: 0;
@@ -653,17 +710,21 @@ form.form-horizontal .control-label { @@ -653,17 +710,21 @@ form.form-horizontal .control-label {
653 clear: none; 710 clear: none;
654 color: #777; 711 color: #777;
655 } 712 }
  713 +
656 .jstree-leaf > .jstree-icon, .jstree-leaf .jstree-themeicon { 714 .jstree-leaf > .jstree-icon, .jstree-leaf .jstree-themeicon {
657 display: none; 715 display: none;
658 } 716 }
  717 +
659 .jstree-last { 718 .jstree-last {
660 background-image: url("../img/32px.png"); 719 background-image: url("../img/32px.png");
661 background-position: -292px -4px; 720 background-position: -292px -4px;
662 background-repeat: repeat-y; 721 background-repeat: repeat-y;
663 } 722 }
  723 +
664 .jstree-children { 724 .jstree-children {
665 .clearfix(); 725 .clearfix();
666 } 726 }
  727 +
667 .jstree-themeicon { 728 .jstree-themeicon {
668 display: none; 729 display: none;
669 } 730 }
@@ -692,17 +753,22 @@ form.form-horizontal .control-label { @@ -692,17 +753,22 @@ form.form-horizontal .control-label {
692 .plupload-preview { 753 .plupload-preview {
693 padding: 0 10px; 754 padding: 0 10px;
694 margin-bottom: 0; 755 margin-bottom: 0;
  756 +
695 li { 757 li {
696 margin-top: 15px; 758 margin-top: 15px;
697 } 759 }
  760 +
698 .thumbnail { 761 .thumbnail {
699 margin-bottom: 10px; 762 margin-bottom: 10px;
700 } 763 }
  764 +
701 a { 765 a {
702 display: block; 766 display: block;
  767 +
703 &:first-child { 768 &:first-child {
704 height: 90px; 769 height: 90px;
705 } 770 }
  771 +
706 img { 772 img {
707 height: 80px; 773 height: 80px;
708 object-fit: cover; 774 object-fit: cover;
@@ -775,6 +841,7 @@ table.table-nowrap { @@ -775,6 +841,7 @@ table.table-nowrap {
775 841
776 .dropdown-submenu { 842 .dropdown-submenu {
777 position: relative; 843 position: relative;
  844 +
778 > .dropdown-menu { 845 > .dropdown-menu {
779 overflow: auto; 846 overflow: auto;
780 top: 0; 847 top: 0;
@@ -783,14 +850,17 @@ table.table-nowrap { @@ -783,14 +850,17 @@ table.table-nowrap {
783 margin-left: -1px; 850 margin-left: -1px;
784 .border-radius(0 6px 6px 6px); 851 .border-radius(0 6px 6px 6px);
785 } 852 }
  853 +
786 &:hover { 854 &:hover {
787 > .dropdown-menu { 855 > .dropdown-menu {
788 display: block; 856 display: block;
789 } 857 }
  858 +
790 > a:after { 859 > a:after {
791 border-left-color: #fff; 860 border-left-color: #fff;
792 } 861 }
793 } 862 }
  863 +
794 > a:after { 864 > a:after {
795 display: block; 865 display: block;
796 content: " "; 866 content: " ";
@@ -804,8 +874,10 @@ table.table-nowrap { @@ -804,8 +874,10 @@ table.table-nowrap {
804 margin-top: 5px; 874 margin-top: 5px;
805 margin-right: -10px; 875 margin-right: -10px;
806 } 876 }
  877 +
807 &.pull-left { 878 &.pull-left {
808 float: none; 879 float: none;
  880 +
809 > .dropdown-menu { 881 > .dropdown-menu {
810 left: -100%; 882 left: -100%;
811 margin-left: 10px; 883 margin-left: 10px;
@@ -859,6 +931,7 @@ table.table-nowrap { @@ -859,6 +931,7 @@ table.table-nowrap {
859 ~ .layui-layer-setwin { 931 ~ .layui-layer-setwin {
860 top: 0px; 932 top: 0px;
861 height: 42px; 933 height: 42px;
  934 +
862 > a { 935 > a {
863 height: 42px; 936 height: 42px;
864 line-height: 42px; 937 line-height: 42px;
@@ -871,19 +944,24 @@ table.table-nowrap { @@ -871,19 +944,24 @@ table.table-nowrap {
871 border: none !important; 944 border: none !important;
872 box-shadow: 1px 1px 50px rgba(0, 0, 0, .3) !important; 945 box-shadow: 1px 1px 50px rgba(0, 0, 0, .3) !important;
873 } 946 }
  947 +
874 &.layui-layer-iframe { 948 &.layui-layer-iframe {
875 //overflow:hidden!important; 949 //overflow:hidden!important;
876 overflow: visible; 950 overflow: visible;
877 } 951 }
  952 +
878 .layui-layer-moves { 953 .layui-layer-moves {
879 .box-sizing(content-box); 954 .box-sizing(content-box);
880 } 955 }
  956 +
881 /*自定义底部灰色操作区*/ 957 /*自定义底部灰色操作区*/
  958 +
882 .layui-layer-btn { 959 .layui-layer-btn {
883 text-align: center !important; 960 text-align: center !important;
884 padding: 10px !important; 961 padding: 10px !important;
885 background: #ecf0f1; 962 background: #ecf0f1;
886 overflow: hidden; 963 overflow: hidden;
  964 +
887 a { 965 a {
888 background-color: #95a5a6; 966 background-color: #95a5a6;
889 border-color: #95a5a6; 967 border-color: #95a5a6;
@@ -892,11 +970,13 @@ table.table-nowrap { @@ -892,11 +970,13 @@ table.table-nowrap {
892 margin-top: 0; 970 margin-top: 0;
893 border: 1px solid transparent; 971 border: 1px solid transparent;
894 } 972 }
  973 +
895 .layui-layer-btn0 { 974 .layui-layer-btn0 {
896 background-color: #18bc9c; 975 background-color: #18bc9c;
897 border-color: #18bc9c; 976 border-color: #18bc9c;
898 } 977 }
899 } 978 }
  979 +
900 .layui-layer-footer { 980 .layui-layer-footer {
901 padding: 8px 20px; 981 padding: 8px 20px;
902 background-color: #ecf0f1; 982 background-color: #ecf0f1;
@@ -907,9 +987,11 @@ table.table-nowrap { @@ -907,9 +987,11 @@ table.table-nowrap {
907 .layui-layer-setwin { 987 .layui-layer-setwin {
908 > a { 988 > a {
909 background: none !important; 989 background: none !important;
  990 +
910 cite { 991 cite {
911 display: none; 992 display: none;
912 } 993 }
  994 +
913 &:after { 995 &:after {
914 content: "\e625"; 996 content: "\e625";
915 font-family: iconfont; 997 font-family: iconfont;
@@ -922,42 +1004,53 @@ table.table-nowrap { @@ -922,42 +1004,53 @@ table.table-nowrap {
922 margin: 0; 1004 margin: 0;
923 z-index: 1; 1005 z-index: 1;
924 } 1006 }
  1007 +
925 &:hover { 1008 &:hover {
926 text-decoration: none !important; 1009 text-decoration: none !important;
927 background: none !important; 1010 background: none !important;
928 } 1011 }
  1012 +
929 &:focus { 1013 &:focus {
930 text-decoration: none !important; 1014 text-decoration: none !important;
931 } 1015 }
932 } 1016 }
  1017 +
933 .layui-layer-min { 1018 .layui-layer-min {
934 display: none; 1019 display: none;
  1020 +
935 &:after { 1021 &:after {
936 content: "\e625"; 1022 content: "\e625";
937 } 1023 }
938 } 1024 }
  1025 +
939 .layui-layer-max { 1026 .layui-layer-max {
940 display: none; 1027 display: none;
  1028 +
941 &:after { 1029 &:after {
942 content: "\e623"; 1030 content: "\e623";
943 } 1031 }
944 } 1032 }
  1033 +
945 .layui-layer-maxmin { 1034 .layui-layer-maxmin {
946 display: none; 1035 display: none;
  1036 +
947 &:after { 1037 &:after {
948 content: "\e624"; 1038 content: "\e624";
949 } 1039 }
950 } 1040 }
  1041 +
951 .layui-layer-close1 { 1042 .layui-layer-close1 {
952 &:after { 1043 &:after {
953 content: "\e626"; 1044 content: "\e626";
954 } 1045 }
955 } 1046 }
  1047 +
956 //样式二关闭按钮 1048 //样式二关闭按钮
957 .layui-layer-close2, .layui-layer-close2:hover { 1049 .layui-layer-close2, .layui-layer-close2:hover {
958 background: url('../libs/fastadmin-layer/dist/theme/default/icon.png') no-repeat -149px -31px !important; 1050 background: url('../libs/fastadmin-layer/dist/theme/default/icon.png') no-repeat -149px -31px !important;
959 top: -30px; 1051 top: -30px;
960 right: -30px; 1052 right: -30px;
  1053 +
961 &:after { 1054 &:after {
962 display: none; 1055 display: none;
963 } 1056 }
@@ -976,12 +1069,14 @@ table.table-nowrap { @@ -976,12 +1069,14 @@ table.table-nowrap {
976 .layui-layer-fast-tab { 1069 .layui-layer-fast-tab {
977 .layui-layer-title { 1070 .layui-layer-title {
978 .layui-this { 1071 .layui-this {
979 - color:#333; 1072 + color: #333;
980 } 1073 }
981 } 1074 }
  1075 +
982 .layui-layer-content { 1076 .layui-layer-content {
983 .layui-layer-tabmain { 1077 .layui-layer-tabmain {
984 - margin:0;padding:0; 1078 + margin: 0;
  1079 + padding: 0;
985 } 1080 }
986 } 1081 }
987 } 1082 }
@@ -1008,12 +1103,14 @@ table.table-nowrap { @@ -1008,12 +1103,14 @@ table.table-nowrap {
1008 .nav-addtabs { 1103 .nav-addtabs {
1009 //display: none; 1104 //display: none;
1010 } 1105 }
  1106 +
1011 .navbar-custom-menu { 1107 .navbar-custom-menu {
1012 ul li a { 1108 ul li a {
1013 padding-left: 10px; 1109 padding-left: 10px;
1014 padding-right: 10px; 1110 padding-right: 10px;
1015 } 1111 }
1016 } 1112 }
  1113 +
1017 .navbar-nav > .user-menu .user-image { 1114 .navbar-nav > .user-menu .user-image {
1018 margin-top: -3px; 1115 margin-top: -3px;
1019 } 1116 }
@@ -1065,13 +1162,16 @@ table.table-nowrap { @@ -1065,13 +1162,16 @@ table.table-nowrap {
1065 width: 100px; 1162 width: 100px;
1066 height: 70px; 1163 height: 70px;
1067 font-size: 13px; 1164 font-size: 13px;
  1165 +
1068 i.fa { 1166 i.fa {
1069 font-size: 24px; 1167 font-size: 24px;
1070 } 1168 }
  1169 +
1071 span { 1170 span {
1072 margin-top: 5px; 1171 margin-top: 5px;
1073 display: block; 1172 display: block;
1074 } 1173 }
  1174 +
1075 &.active { 1175 &.active {
1076 color: #222d32; 1176 color: #222d32;
1077 } 1177 }
@@ -1080,12 +1180,15 @@ table.table-nowrap { @@ -1080,12 +1180,15 @@ table.table-nowrap {
1080 body .wrapper .main-header .navbar .dropdown-menu li { 1180 body .wrapper .main-header .navbar .dropdown-menu li {
1081 > a { 1181 > a {
1082 color: #333; 1182 color: #333;
  1183 +
1083 &:hover { 1184 &:hover {
1084 background: #eee; 1185 background: #eee;
1085 } 1186 }
1086 } 1187 }
  1188 +
1087 &.active > a { 1189 &.active > a {
1088 color: #fff; 1190 color: #fff;
  1191 +
1089 &:hover { 1192 &:hover {
1090 background: #222d32 1193 background: #222d32
1091 } 1194 }
@@ -1104,10 +1207,12 @@ table.table-nowrap { @@ -1104,10 +1207,12 @@ table.table-nowrap {
1104 left: 0; 1207 left: 0;
1105 text-align: right; 1208 text-align: right;
1106 width: 100%; 1209 width: 100%;
  1210 +
1107 .msg-wrap { 1211 .msg-wrap {
1108 position: relative; 1212 position: relative;
1109 } 1213 }
1110 } 1214 }
  1215 +
1111 .col-xs-12 > .n-right { 1216 .col-xs-12 > .n-right {
1112 .msg-wrap { 1217 .msg-wrap {
1113 margin-right: 15px; 1218 margin-right: 15px;
@@ -1120,6 +1225,7 @@ table.table-nowrap { @@ -1120,6 +1225,7 @@ table.table-nowrap {
1120 .radio, .checkbox { 1225 .radio, .checkbox {
1121 > label { 1226 > label {
1122 margin-right: 10px; 1227 margin-right: 10px;
  1228 +
1123 > input { 1229 > input {
1124 margin: 2px 0 0; 1230 margin: 2px 0 0;
1125 } 1231 }
@@ -1136,7 +1242,17 @@ table.table-nowrap { @@ -1136,7 +1242,17 @@ table.table-nowrap {
1136 opacity: .6; 1242 opacity: .6;
1137 cursor: not-allowed; 1243 cursor: not-allowed;
1138 } 1244 }
  1245 +
1139 .text-gray { 1246 .text-gray {
1140 color: #d2d6de !important; 1247 color: #d2d6de !important;
1141 } 1248 }
1142 } 1249 }
  1250 +
  1251 +.jumpto input {
  1252 + height: 31px;
  1253 + width: 50px;
  1254 + margin-left: 5px;
  1255 + margin-right: 5px;
  1256 + text-align: center;
  1257 + display: inline-block;
  1258 +}
@@ -476,4 +476,13 @@ main.content { @@ -476,4 +476,13 @@ main.content {
476 border-radius: 0.25em; 476 border-radius: 0.25em;
477 padding: .5em .93em; 477 padding: .5em .93em;
478 font-size: 14px; 478 font-size: 14px;
  479 +}
  480 +
  481 +.jumpto input {
  482 + height: 31px;
  483 + width: 50px;
  484 + margin-left: 5px;
  485 + margin-right: 5px;
  486 + text-align: center;
  487 + display: inline-block;
479 } 488 }