正在显示
53 个修改的文件
包含
0 行增加
和
3675 行删除
addons/example/.addonrc
已删除
100644 → 0
1 | -{"files":["application\\admin\\controller\\example\\Bootstraptable.php","application\\admin\\controller\\example\\Colorbadge.php","application\\admin\\controller\\example\\Controllerjump.php","application\\admin\\controller\\example\\Customform.php","application\\admin\\controller\\example\\Customsearch.php","application\\admin\\controller\\example\\Cxselect.php","application\\admin\\controller\\example\\Echarts.php","application\\admin\\controller\\example\\Multitable.php","application\\admin\\controller\\example\\Relationmodel.php","application\\admin\\controller\\example\\Tablelink.php","application\\admin\\controller\\example\\Tabletemplate.php","application\\admin\\model\\Area.php","application\\admin\\view\\example\\bootstraptable\\detail.html","application\\admin\\view\\example\\bootstraptable\\edit.html","application\\admin\\view\\example\\bootstraptable\\index.html","application\\admin\\view\\example\\colorbadge\\index.html","application\\admin\\view\\example\\controllerjump\\index.html","application\\admin\\view\\example\\customform\\index.html","application\\admin\\view\\example\\customsearch\\index.html","application\\admin\\view\\example\\cxselect\\index.html","application\\admin\\view\\example\\echarts\\index.html","application\\admin\\view\\example\\multitable\\index.html","application\\admin\\view\\example\\relationmodel\\index.html","application\\admin\\view\\example\\tablelink\\index.html","application\\admin\\view\\example\\tabletemplate\\index.html","public\\assets\\js\\backend\\example\\bootstraptable.js","public\\assets\\js\\backend\\example\\colorbadge.js","public\\assets\\js\\backend\\example\\controllerjump.js","public\\assets\\js\\backend\\example\\customform.js","public\\assets\\js\\backend\\example\\customsearch.js","public\\assets\\js\\backend\\example\\cxselect.js","public\\assets\\js\\backend\\example\\echarts.js","public\\assets\\js\\backend\\example\\multitable.js","public\\assets\\js\\backend\\example\\relationmodel.js","public\\assets\\js\\backend\\example\\tablelink.js","public\\assets\\js\\backend\\example\\tabletemplate.js","public\\assets\\addons\\example\\css\\common.css","public\\assets\\addons\\example\\img\\200x200.png","public\\assets\\addons\\example\\img\\plus.png","public\\assets\\addons\\example\\js\\async.js"],"license":"regular","licenseto":"15629","licensekey":"bhPvgCDzwu3MR19F ksNc2PNUvdOFCKHwzx08FQ==","domains":["netcar123.com"],"licensecodes":[],"validations":["04fc4fb96e772ed591aa668d537fdaad"],"menus":["example","example\/bootstraptable","example\/bootstraptable\/index","example\/bootstraptable\/detail","example\/bootstraptable\/change","example\/bootstraptable\/del","example\/bootstraptable\/multi","example\/customsearch","example\/customsearch\/index","example\/customsearch\/del","example\/customsearch\/multi","example\/customform","example\/customform\/index","example\/tablelink","example\/tablelink\/index","example\/colorbadge","example\/colorbadge\/index","example\/colorbadge\/del","example\/colorbadge\/multi","example\/controllerjump","example\/controllerjump\/index","example\/controllerjump\/del","example\/controllerjump\/multi","example\/cxselect","example\/cxselect\/index","example\/cxselect\/del","example\/cxselect\/multi","example\/multitable","example\/multitable\/index","example\/multitable\/del","example\/multitable\/multi","example\/relationmodel","example\/relationmodel\/index","example\/relationmodel\/del","example\/relationmodel\/multi","example\/tabletemplate","example\/tabletemplate\/index","example\/tabletemplate\/detail","example\/tabletemplate\/del","example\/tabletemplate\/multi","example\/echarts","example\/echarts\/index"]} |
addons/example/Example.php
已删除
100644 → 0
1 | -<?php | ||
2 | - | ||
3 | -namespace addons\example; | ||
4 | - | ||
5 | -use app\common\library\Menu; | ||
6 | -use think\Addons; | ||
7 | - | ||
8 | -/** | ||
9 | - * Example | ||
10 | - */ | ||
11 | -class Example extends Addons | ||
12 | -{ | ||
13 | - | ||
14 | - /** | ||
15 | - * 插件安装方法 | ||
16 | - * @return bool | ||
17 | - */ | ||
18 | - public function install() | ||
19 | - { | ||
20 | - $menu = [ | ||
21 | - [ | ||
22 | - 'name' => 'example', | ||
23 | - 'title' => '开发示例管理', | ||
24 | - 'icon' => 'fa fa-magic', | ||
25 | - 'sublist' => [ | ||
26 | - [ | ||
27 | - 'name' => 'example/bootstraptable', | ||
28 | - 'title' => '表格完整示例', | ||
29 | - 'icon' => 'fa fa-table', | ||
30 | - 'sublist' => [ | ||
31 | - ['name' => 'example/bootstraptable/index', 'title' => '查看'], | ||
32 | - ['name' => 'example/bootstraptable/detail', 'title' => '详情'], | ||
33 | - ['name' => 'example/bootstraptable/change', 'title' => '变更'], | ||
34 | - ['name' => 'example/bootstraptable/del', 'title' => '删除'], | ||
35 | - ['name' => 'example/bootstraptable/multi', 'title' => '批量更新'], | ||
36 | - ] | ||
37 | - ], | ||
38 | - [ | ||
39 | - 'name' => 'example/customsearch', | ||
40 | - 'title' => '自定义搜索', | ||
41 | - 'icon' => 'fa fa-table', | ||
42 | - 'sublist' => [ | ||
43 | - ['name' => 'example/customsearch/index', 'title' => '查看'], | ||
44 | - ['name' => 'example/customsearch/del', 'title' => '删除'], | ||
45 | - ['name' => 'example/customsearch/multi', 'title' => '批量更新'], | ||
46 | - ] | ||
47 | - ], | ||
48 | - [ | ||
49 | - 'name' => 'example/customform', | ||
50 | - 'title' => '自定义表单示例', | ||
51 | - 'icon' => 'fa fa-edit', | ||
52 | - 'sublist' => [ | ||
53 | - ['name' => 'example/customform/index', 'title' => '查看'], | ||
54 | - ] | ||
55 | - ], | ||
56 | - [ | ||
57 | - 'name' => 'example/tablelink', | ||
58 | - 'title' => '表格联动示例', | ||
59 | - 'icon' => 'fa fa-table', | ||
60 | - 'remark' => '点击左侧日志列表,右侧的表格数据会显示指定管理员的日志列表', | ||
61 | - 'sublist' => [ | ||
62 | - ['name' => 'example/tablelink/index', 'title' => '查看'], | ||
63 | - ] | ||
64 | - ], | ||
65 | - [ | ||
66 | - 'name' => 'example/colorbadge', | ||
67 | - 'title' => '彩色角标', | ||
68 | - 'icon' => 'fa fa-table', | ||
69 | - 'remark' => '左侧彩色的角标会根据当前数据量的大小进行更新', | ||
70 | - 'sublist' => [ | ||
71 | - ['name' => 'example/colorbadge/index', 'title' => '查看'], | ||
72 | - ['name' => 'example/colorbadge/del', 'title' => '删除'], | ||
73 | - ['name' => 'example/colorbadge/multi', 'title' => '批量更新'], | ||
74 | - ] | ||
75 | - ], | ||
76 | - [ | ||
77 | - 'name' => 'example/controllerjump', | ||
78 | - 'title' => '控制器间跳转', | ||
79 | - 'icon' => 'fa fa-table', | ||
80 | - 'remark' => '点击IP地址可以跳转到新的选项卡中查看指定IP的数据', | ||
81 | - 'sublist' => [ | ||
82 | - ['name' => 'example/controllerjump/index', 'title' => '查看'], | ||
83 | - ['name' => 'example/controllerjump/del', 'title' => '删除'], | ||
84 | - ['name' => 'example/controllerjump/multi', 'title' => '批量更新'], | ||
85 | - ] | ||
86 | - ], | ||
87 | - [ | ||
88 | - 'name' => 'example/cxselect', | ||
89 | - 'title' => '多级联动', | ||
90 | - 'icon' => 'fa fa-table', | ||
91 | - 'remark' => '基于jquery.cxselect实现的多级联动', | ||
92 | - 'sublist' => [ | ||
93 | - ['name' => 'example/cxselect/index', 'title' => '查看'], | ||
94 | - ['name' => 'example/cxselect/del', 'title' => '删除'], | ||
95 | - ['name' => 'example/cxselect/multi', 'title' => '批量更新'], | ||
96 | - ] | ||
97 | - ], | ||
98 | - [ | ||
99 | - 'name' => 'example/multitable', | ||
100 | - 'title' => '多表格示例', | ||
101 | - 'icon' => 'fa fa-table', | ||
102 | - 'remark' => '展示在一个页面显示多个Bootstrap-table表格', | ||
103 | - 'sublist' => [ | ||
104 | - ['name' => 'example/multitable/index', 'title' => '查看'], | ||
105 | - ['name' => 'example/multitable/del', 'title' => '删除'], | ||
106 | - ['name' => 'example/multitable/multi', 'title' => '批量更新'], | ||
107 | - ] | ||
108 | - ], | ||
109 | - [ | ||
110 | - 'name' => 'example/relationmodel', | ||
111 | - 'title' => '关联模型示例', | ||
112 | - 'icon' => 'fa fa-table', | ||
113 | - 'remark' => '列表中的头像、用户名和昵称字段均从关联表中取出', | ||
114 | - 'sublist' => [ | ||
115 | - ['name' => 'example/relationmodel/index', 'title' => '查看'], | ||
116 | - ['name' => 'example/relationmodel/del', 'title' => '删除'], | ||
117 | - ['name' => 'example/relationmodel/multi', 'title' => '批量更新'], | ||
118 | - ] | ||
119 | - ], | ||
120 | - [ | ||
121 | - 'name' => 'example/tabletemplate', | ||
122 | - 'title' => '表格模板示例', | ||
123 | - 'icon' => 'fa fa-table', | ||
124 | - 'remark' => '', | ||
125 | - 'sublist' => [ | ||
126 | - ['name' => 'example/tabletemplate/index', 'title' => '查看'], | ||
127 | - ['name' => 'example/tabletemplate/detail', 'title' => '详情'], | ||
128 | - ['name' => 'example/tabletemplate/del', 'title' => '删除'], | ||
129 | - ['name' => 'example/tabletemplate/multi', 'title' => '批量更新'], | ||
130 | - ] | ||
131 | - ], | ||
132 | - [ | ||
133 | - 'name' => 'example/echarts', | ||
134 | - 'title' => '统计图表示例', | ||
135 | - 'icon' => 'fa fa-bar-chart', | ||
136 | - 'sublist' => [ | ||
137 | - ['name' => 'example/echarts/index', 'title' => '查看'], | ||
138 | - ] | ||
139 | - ], | ||
140 | - ] | ||
141 | - ] | ||
142 | - ]; | ||
143 | - Menu::create($menu); | ||
144 | - return true; | ||
145 | - } | ||
146 | - | ||
147 | - /** | ||
148 | - * 插件卸载方法 | ||
149 | - * @return bool | ||
150 | - */ | ||
151 | - public function uninstall() | ||
152 | - { | ||
153 | - Menu::delete('example'); | ||
154 | - return true; | ||
155 | - } | ||
156 | - | ||
157 | - /** | ||
158 | - * 插件启用方法 | ||
159 | - */ | ||
160 | - public function enable() | ||
161 | - { | ||
162 | - Menu::enable('example'); | ||
163 | - } | ||
164 | - | ||
165 | - /** | ||
166 | - * 插件禁用方法 | ||
167 | - */ | ||
168 | - public function disable() | ||
169 | - { | ||
170 | - Menu::disable('example'); | ||
171 | - } | ||
172 | - | ||
173 | -} |
addons/example/config.php
已删除
100644 → 0
1 | -<?php | ||
2 | - | ||
3 | -return [ | ||
4 | - [ | ||
5 | - 'name' => 'condition1', | ||
6 | - 'title' => '条件1', | ||
7 | - 'type' => 'radio', | ||
8 | - 'group' => '选项组一', | ||
9 | - 'content' => [ | ||
10 | - 'value1' => '值1', | ||
11 | - 'value2' => '值2', | ||
12 | - ], | ||
13 | - 'value' => 'value2', | ||
14 | - 'rule' => 'required', | ||
15 | - 'msg' => '', | ||
16 | - 'tip' => '', | ||
17 | - 'ok' => '', | ||
18 | - 'extend' => '', | ||
19 | - ], | ||
20 | - [ | ||
21 | - 'name' => 'condition2', | ||
22 | - 'title' => '条件2', | ||
23 | - 'type' => 'checkbox', | ||
24 | - 'group' => '选项组一', | ||
25 | - 'visible' => 'condition1=value1', | ||
26 | - 'content' => [ | ||
27 | - 'value1' => '值1', | ||
28 | - 'value2' => '值2', | ||
29 | - 'value3' => '值3', | ||
30 | - ], | ||
31 | - 'value' => 'value1,value2', | ||
32 | - 'rule' => 'required', | ||
33 | - 'msg' => '', | ||
34 | - 'tip' => '', | ||
35 | - 'ok' => '', | ||
36 | - 'extend' => '', | ||
37 | - ], | ||
38 | - [ | ||
39 | - 'name' => 'condition3', | ||
40 | - 'title' => '条件3', | ||
41 | - 'type' => 'select', | ||
42 | - 'group' => '选项组一', | ||
43 | - 'visible' => 'condition1=value2', | ||
44 | - 'content' => [ | ||
45 | - 'value1' => '值1', | ||
46 | - 'value2' => '值2', | ||
47 | - ], | ||
48 | - 'value' => 'value1', | ||
49 | - 'rule' => 'required', | ||
50 | - 'msg' => '', | ||
51 | - 'tip' => '', | ||
52 | - 'ok' => '', | ||
53 | - 'extend' => '', | ||
54 | - ], | ||
55 | - [ | ||
56 | - 'name' => 'condition4', | ||
57 | - 'title' => '条件4', | ||
58 | - 'type' => 'selects', | ||
59 | - 'group' => '选项组一', | ||
60 | - 'content' => [ | ||
61 | - 'value1' => '值1', | ||
62 | - 'value2' => '值2', | ||
63 | - 'value3' => '值3', | ||
64 | - ], | ||
65 | - 'value' => 'value1,value2', | ||
66 | - 'rule' => 'required', | ||
67 | - 'msg' => '', | ||
68 | - 'tip' => '', | ||
69 | - 'ok' => '', | ||
70 | - 'extend' => '', | ||
71 | - ], | ||
72 | - [ | ||
73 | - 'name' => 'title', | ||
74 | - 'title' => '标题', | ||
75 | - 'type' => 'string', | ||
76 | - 'group' => '选项组一', | ||
77 | - 'visible' => 'condition3=value1', | ||
78 | - 'content' => [], | ||
79 | - 'value' => '3x', | ||
80 | - 'rule' => 'required', | ||
81 | - 'msg' => '', | ||
82 | - 'tip' => '', | ||
83 | - 'ok' => '', | ||
84 | - 'extend' => '', | ||
85 | - ], | ||
86 | - [ | ||
87 | - 'name' => 'domain', | ||
88 | - 'title' => '绑定二级域名前缀', | ||
89 | - 'type' => 'string', | ||
90 | - 'group' => '选项组二', | ||
91 | - 'content' => [], | ||
92 | - 'value' => '', | ||
93 | - 'rule' => '', | ||
94 | - 'msg' => '', | ||
95 | - 'tip' => '', | ||
96 | - 'ok' => '', | ||
97 | - 'extend' => '', | ||
98 | - ], | ||
99 | - [ | ||
100 | - 'name' => 'rewrite', | ||
101 | - 'title' => '伪静态', | ||
102 | - 'type' => 'array', | ||
103 | - 'group' => '选项组二', | ||
104 | - 'content' => [], | ||
105 | - 'value' => [ | ||
106 | - 'index/index' => '/example$', | ||
107 | - 'demo/index' => '/example/d/[:name]', | ||
108 | - 'demo/demo1' => '/example/d1/[:name]', | ||
109 | - 'demo/demo2' => '/example/d2/[:name]', | ||
110 | - ], | ||
111 | - 'rule' => 'required', | ||
112 | - 'msg' => '', | ||
113 | - 'tip' => '', | ||
114 | - 'ok' => '', | ||
115 | - 'extend' => '', | ||
116 | - ], | ||
117 | - [ | ||
118 | - 'name' => '__tips__', | ||
119 | - 'title' => '温馨提示', | ||
120 | - 'type' => 'string', | ||
121 | - 'content' => [], | ||
122 | - 'value' => '这里是提示的文本内容', | ||
123 | - 'rule' => '', | ||
124 | - 'msg' => '', | ||
125 | - 'tip' => '', | ||
126 | - 'ok' => '', | ||
127 | - 'extend' => '', | ||
128 | - ], | ||
129 | -]; |
addons/example/controller/Demo.php
已删除
100644 → 0
1 | -<?php | ||
2 | - | ||
3 | -namespace addons\example\controller; | ||
4 | - | ||
5 | -use think\addons\Controller; | ||
6 | - | ||
7 | -/** | ||
8 | - * 测试控制器 | ||
9 | - */ | ||
10 | -class Demo extends Controller | ||
11 | -{ | ||
12 | - | ||
13 | - protected $layout = 'default'; | ||
14 | - protected $noNeedLogin = ['index', 'demo1']; | ||
15 | - protected $noNeedRight = ['*']; | ||
16 | - | ||
17 | - public function index() | ||
18 | - { | ||
19 | - return $this->view->fetch(); | ||
20 | - } | ||
21 | - | ||
22 | - public function demo1() | ||
23 | - { | ||
24 | - return $this->view->fetch(); | ||
25 | - } | ||
26 | - | ||
27 | - public function demo2() | ||
28 | - { | ||
29 | - return $this->view->fetch(); | ||
30 | - } | ||
31 | - | ||
32 | -} |
addons/example/controller/Index.php
已删除
100644 → 0
addons/example/info.ini
已删除
100644 → 0
addons/example/install.sql
已删除
100644 → 0
此 diff 太大无法显示。
addons/example/view/demo/demo1.html
已删除
100644 → 0
1 | -<!-- Page Content --> | ||
2 | - <div class="container"> | ||
3 | - | ||
4 | - <!-- Page Heading/Breadcrumbs --> | ||
5 | - <div class="row"> | ||
6 | - <div class="col-lg-12"> | ||
7 | - <h1 class="page-header">无需登录页面 | ||
8 | - <small>开发者示例</small> | ||
9 | - </h1> | ||
10 | - <ol class="breadcrumb"> | ||
11 | - <li><a href="{:addon_url('example/index/index')}">插件首页</a> | ||
12 | - </li> | ||
13 | - <li class="active">无需登录页面</li> | ||
14 | - </ol> | ||
15 | - </div> | ||
16 | - </div> | ||
17 | - <!-- /.row --> | ||
18 | - | ||
19 | - <!-- Content Row --> | ||
20 | - <div class="row"> | ||
21 | - <div class="col-lg-12"> | ||
22 | - <p class="well">当前登录页面无需登录即可查看,当前请求的name值为:{$Request.param.name|htmlentities}</p> | ||
23 | - {if $user} | ||
24 | - <p class="well text-danger">但是如果你登录后可以浏览到这段隐藏的信息</p> | ||
25 | - {/if} | ||
26 | - </div> | ||
27 | - </div> | ||
28 | - <!-- /.row --> | ||
29 | - | ||
30 | - <hr> | ||
31 | - | ||
32 | - </div> | ||
33 | - <!-- /.container --> |
addons/example/view/demo/demo2.html
已删除
100644 → 0
1 | -<!-- Page Content --> | ||
2 | -<div class="container"> | ||
3 | - | ||
4 | - <!-- Page Heading/Breadcrumbs --> | ||
5 | - <div class="row"> | ||
6 | - <div class="col-lg-12"> | ||
7 | - <h1 class="page-header">需登录页面 | ||
8 | - <small>开发者示例</small> | ||
9 | - </h1> | ||
10 | - <ol class="breadcrumb"> | ||
11 | - <li><a href="{:addon_url('example/index/index')}">插件首页</a> | ||
12 | - </li> | ||
13 | - <li class="active">需登录页面</li> | ||
14 | - </ol> | ||
15 | - </div> | ||
16 | - </div> | ||
17 | - <!-- /.row --> | ||
18 | - | ||
19 | - <!-- Content Row --> | ||
20 | - <div class="row"> | ||
21 | - <div class="col-lg-12"> | ||
22 | - <p class="well">当前登录页面需要登录后才可以查看,你可以退出后再访问此页面,会提醒登录,当前请求的name值为:{$Request.param.name|htmlentities}</p> | ||
23 | - <p class="well">你好!{$user.nickname|htmlentities},<a href="{:url('index/user/logout')}">注销登录</a></p> | ||
24 | - </div> | ||
25 | - </div> | ||
26 | - <!-- /.row --> | ||
27 | - | ||
28 | - <hr> | ||
29 | - | ||
30 | -</div> | ||
31 | -<!-- /.container --> |
addons/example/view/demo/index.html
已删除
100644 → 0
1 | -<!-- Page Content --> | ||
2 | - <div class="container"> | ||
3 | - | ||
4 | - <!-- Page Heading/Breadcrumbs --> | ||
5 | - <div class="row"> | ||
6 | - <div class="col-lg-12"> | ||
7 | - <h1 class="page-header">使用模板标签和变量 | ||
8 | - <small>开发者示例</small> | ||
9 | - </h1> | ||
10 | - <ol class="breadcrumb"> | ||
11 | - <li><a href="{:addon_url('example/index/index')}">插件首页</a> | ||
12 | - </li> | ||
13 | - <li class="active">使用模板标签和变量</li> | ||
14 | - </ol> | ||
15 | - </div> | ||
16 | - </div> | ||
17 | - <!-- /.row --> | ||
18 | - | ||
19 | - <!-- Content Row --> | ||
20 | - <div class="row"> | ||
21 | - <div class="col-lg-12"> | ||
22 | - <p class="well">当前请求的name值为:{$Request.param.name|htmlentities}</p> | ||
23 | - {literal} | ||
24 | - <pre> | ||
25 | -在插件视图中可以使用所有ThinkPHP5内支持的模板标签和变量,如 | ||
26 | - | ||
27 | -{$Think.server.script_name} // 输出$_SERVER['SCRIPT_NAME']变量 | ||
28 | -{$Think.session.user_id} // 输出$_SESSION['user_id']变量 | ||
29 | -{$Think.get.pageNumber} // 输出$_GET['pageNumber']变量 | ||
30 | -{$Think.cookie.name} // 输出$_COOKIE['name']变量 | ||
31 | - | ||
32 | -// 调用Request对象的get方法 传入参数为id | ||
33 | -{$Request.get.id} | ||
34 | -// 调用Request对象的param方法 传入参数为name | ||
35 | -{$Request.param.name} | ||
36 | -// 调用Request对象的param方法 传入参数为user.nickname | ||
37 | -{$Request.param.user.nickname} | ||
38 | -// 调用Request对象的root方法 | ||
39 | -{$Request.root} | ||
40 | -// 调用Request对象的root方法,并且传入参数true | ||
41 | -{$Request.root.true} | ||
42 | -// 调用Request对象的path方法 | ||
43 | -{$Request.path} | ||
44 | -// 调用Request对象的module方法 | ||
45 | -{$Request.module} | ||
46 | -// 调用Request对象的controller方法 | ||
47 | -{$Request.controller} | ||
48 | -// 调用Request对象的action方法 | ||
49 | -{$Request.action} | ||
50 | -// 调用Request对象的ext方法 | ||
51 | -{$Request.ext} | ||
52 | -// 调用Request对象的host方法 | ||
53 | -{$Request.host} | ||
54 | -// 调用Request对象的ip方法 | ||
55 | -{$Request.ip} | ||
56 | -// 调用Request对象的header方法 | ||
57 | -{$Request.header.accept-encoding} | ||
58 | - </pre> | ||
59 | - {/literal} | ||
60 | - </div> | ||
61 | - </div> | ||
62 | - <!-- /.row --> | ||
63 | - | ||
64 | - <hr> | ||
65 | - | ||
66 | - </div> | ||
67 | - <!-- /.container --> |
addons/example/view/index/index.html
已删除
100644 → 0
1 | -<!-- Header Carousel --> | ||
2 | -<header id="myCarousel" class="carousel slide"> | ||
3 | - <!-- Indicators --> | ||
4 | - <ol class="carousel-indicators"> | ||
5 | - <li data-target="#myCarousel" data-slide-to="0" class="active"></li> | ||
6 | - </ol> | ||
7 | - | ||
8 | - <!-- Wrapper for slides --> | ||
9 | - <div class="carousel-inner"> | ||
10 | - <div class="item active"> | ||
11 | - <a href="javascript:"> | ||
12 | - <div class="fill" style="background-image:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzOTMiIGhlaWdodD0iMjI2Ij48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJyZ2IoNjMsIDE0MywgODUpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjE0MTMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAtMzcuODMzMzMzMzMzMzMzKSByb3RhdGUoMTgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMTQxMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsIDE4OS4xNjY2NjY2NjY2Nykgcm90YXRlKDE4MCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA2MzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjUuNTI5MjU1NTUzMDIzLCAtMzcuODMzMzMzMzMzMzMzKSByb3RhdGUoMCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA2MzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjUuNTI5MjU1NTUzMDIzLCAxODkuMTY2NjY2NjY2NjcpIHJvdGF0ZSgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDgwNjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzEuMDU4NTExMTA2MDUsIC0zNy44MzMzMzMzMzMzMzMpIHJvdGF0ZSgxODAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wODA2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzMS4wNTg1MTExMDYwNSwgMTg5LjE2NjY2NjY2NjY3KSByb3RhdGUoMTgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDQ2IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOTYuNTg3NzY2NjU5MDcsIC0zNy44MzMzMzMzMzMzMzMpIHJvdGF0ZSgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDQ2IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOTYuNTg3NzY2NjU5MDcsIDE4OS4xNjY2NjY2NjY2Nykgcm90YXRlKDAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wODkzMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI2Mi4xMTcwMjIyMTIwOSwgLTM3LjgzMzMzMzMzMzMzMykgcm90YXRlKDE4MCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjA4OTMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjYyLjExNzAyMjIxMjA5LCAxODkuMTY2NjY2NjY2NjcpIHJvdGF0ZSgxODAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4xNDEzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzI3LjY0NjI3Nzc2NTExLCAtMzcuODMzMzMzMzMzMzMzKSByb3RhdGUoMCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjE0MTMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjcuNjQ2Mjc3NzY1MTEsIDE4OS4xNjY2NjY2NjY2Nykgcm90YXRlKDAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMiIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgMCkgcm90YXRlKDAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wMjg2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY1LjUyOTI1NTU1MzAyMywgMCkgcm90YXRlKDE4MCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjExNTMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzEuMDU4NTExMTA2MDUsIDApIHJvdGF0ZSgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDgwNjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOTYuNTg3NzY2NjU5MDcsIDApIHJvdGF0ZSgxODAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wODA2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI2Mi4xMTcwMjIyMTIwOSwgMCkgcm90YXRlKDAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMiIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzI3LjY0NjI3Nzc2NTExLCAwKSByb3RhdGUoMTgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDgwNjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAzNy44MzMzMzMzMzMzMzMpIHJvdGF0ZSgxODAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMiIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMpIHJvdGF0ZSgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDk4IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzEuMDU4NTExMTA2MDUsIDM3LjgzMzMzMzMzMzMzMykgcm90YXRlKDE4MCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjE1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOTYuNTg3NzY2NjU5MDcsIDM3LjgzMzMzMzMzMzMzMykgcm90YXRlKDAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wMjg2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI2Mi4xMTcwMjIyMTIwOSwgMzcuODMzMzMzMzMzMzMzKSByb3RhdGUoMTgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDQ2IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjcuNjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykgcm90YXRlKDAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsIDc1LjY2NjY2NjY2NjY2Nykgcm90YXRlKDAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMiIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjUuNTI5MjU1NTUzMDIzLCA3NS42NjY2NjY2NjY2NjcpIHJvdGF0ZSgxODAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xNSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMxLjA1ODUxMTEwNjA1LCA3NS42NjY2NjY2NjY2NjcpIHJvdGF0ZSgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDIiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE5Ni41ODc3NjY2NTkwNywgNzUuNjY2NjY2NjY2NjY3KSByb3RhdGUoMTgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDk4IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNjIuMTE3MDIyMjEyMDksIDc1LjY2NjY2NjY2NjY2Nykgcm90YXRlKDAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wNjMzMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMyNy42NDYyNzc3NjUxMSwgNzUuNjY2NjY2NjY2NjY3KSByb3RhdGUoMTgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMTI0IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAxMTMuNSkgcm90YXRlKDE4MCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjE1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NS41MjkyNTU1NTMwMjMsIDExMy41KSByb3RhdGUoMCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjEyNCIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMxLjA1ODUxMTEwNjA1LCAxMTMuNSkgcm90YXRlKDE4MCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjEwNjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOTYuNTg3NzY2NjU5MDcsIDExMy41KSByb3RhdGUoMCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjEyNCIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjYyLjExNzAyMjIxMjA5LCAxMTMuNSkgcm90YXRlKDE4MCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjEzMjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjcuNjQ2Mjc3NzY1MTEsIDExMy41KSByb3RhdGUoMCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjEwNjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAxNTEuMzMzMzMzMzMzMzMpIHJvdGF0ZSgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDYzMzMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NS41MjkyNTU1NTMwMjMsIDE1MS4zMzMzMzMzMzMzMykgcm90YXRlKDE4MCwgMzIuNzY0NjI3Nzc2NTExLCAzNy44MzMzMzMzMzMzMzMpIi8+PHBvbHlsaW5lIHBvaW50cz0iMCwgMCwgNjUuNTI5MjU1NTUzMDIzLCAzNy44MzMzMzMzMzMzMzMsIDAsIDc1LjY2NjY2NjY2NjY2NywgMCwgMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA4MDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMxLjA1ODUxMTEwNjA1LCAxNTEuMzMzMzMzMzMzMzMpIHJvdGF0ZSgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDIiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE5Ni41ODc3NjY2NTkwNywgMTUxLjMzMzMzMzMzMzMzKSByb3RhdGUoMTgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48cG9seWxpbmUgcG9pbnRzPSIwLCAwLCA2NS41MjkyNTU1NTMwMjMsIDM3LjgzMzMzMzMzMzMzMywgMCwgNzUuNjY2NjY2NjY2NjY3LCAwLCAwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDk4IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNjIuMTE3MDIyMjEyMDksIDE1MS4zMzMzMzMzMzMzMykgcm90YXRlKDAsIDMyLjc2NDYyNzc3NjUxMSwgMzcuODMzMzMzMzMzMzMzKSIvPjxwb2x5bGluZSBwb2ludHM9IjAsIDAsIDY1LjUyOTI1NTU1MzAyMywgMzcuODMzMzMzMzMzMzMzLCAwLCA3NS42NjY2NjY2NjY2NjcsIDAsIDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4xMjQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMyNy42NDYyNzc3NjUxMSwgMTUxLjMzMzMzMzMzMzMzKSByb3RhdGUoMTgwLCAzMi43NjQ2Mjc3NzY1MTEsIDM3LjgzMzMzMzMzMzMzMykiLz48L3N2Zz4=');"></div> | ||
13 | - <div class="carousel-body"> | ||
14 | - <div class="container"> | ||
15 | - <h1 class="display-1 text-white">开发示例</h1> | ||
16 | - <h2 class="display-4 text-white">表格、登录相关示例</h2> | ||
17 | - </div> | ||
18 | - </div> | ||
19 | - </a> | ||
20 | - </div> | ||
21 | - </div> | ||
22 | -</header> | ||
23 | - | ||
24 | -<!-- Page Content --> | ||
25 | -<div class="container"> | ||
26 | - | ||
27 | - <!-- Marketing Icons Section --> | ||
28 | - <div class="row"> | ||
29 | - <div class="col-lg-12"> | ||
30 | - <h2 class="page-header"> | ||
31 | - 基础模块 | ||
32 | - </h2> | ||
33 | - </div> | ||
34 | - <div class="col-md-4"> | ||
35 | - <div class="panel panel-default"> | ||
36 | - <div class="panel-heading"> | ||
37 | - <h4><i class="fa fa-fw fa-user"></i> 前台模块</h4> | ||
38 | - </div> | ||
39 | - <div class="panel-body"> | ||
40 | - <p>前台模块中包含基础的会员模块,前台模块中的会员账号和API模块中的会员账号是同一账号体系</p> | ||
41 | - <a href="{:url('index/index/index')}" target="_blank" class="btn btn-primary">立即访问</a> | ||
42 | - <a href="{:url('index/user/index')}" target="_blank" class="btn btn-default">会员中心</a> | ||
43 | - </div> | ||
44 | - </div> | ||
45 | - </div> | ||
46 | - <div class="col-md-4"> | ||
47 | - <div class="panel panel-default"> | ||
48 | - <div class="panel-heading"> | ||
49 | - <h4><i class="fa fa-fw fa-gift"></i> API模块</h4> | ||
50 | - </div> | ||
51 | - <div class="panel-body"> | ||
52 | - <p>API模块中包含基础的会员模块,初始化模块、短信发送模块、验证模块</p> | ||
53 | - <a href="{:url('api/index/index')}" target="_blank" class="btn btn-primary">立即访问</a> | ||
54 | - <a href="{:url('api/common/init')}?version=1.0.0" target="_blank" class="btn btn-default">初始化接口</a> | ||
55 | - </div> | ||
56 | - </div> | ||
57 | - </div> | ||
58 | - <div class="col-md-4"> | ||
59 | - <div class="panel panel-default"> | ||
60 | - <div class="panel-heading"> | ||
61 | - <h4><i class="fa fa-fw fa-compass"></i> API文档</h4> | ||
62 | - </div> | ||
63 | - <div class="panel-body"> | ||
64 | - <p>当写完API接口以后,可通过执行php think api一键生成我们所需要的API文档,并且可以直接在线测试</p> | ||
65 | - <a href="{:url('/')}api.html" target="_blank" class="btn btn-primary">立即访问</a> | ||
66 | - </div> | ||
67 | - </div> | ||
68 | - </div> | ||
69 | - </div> | ||
70 | - <div class="row"> | ||
71 | - <div class="col-lg-12"> | ||
72 | - <h2 class="page-header"> | ||
73 | - 功能示例 | ||
74 | - </h2> | ||
75 | - </div> | ||
76 | - <div class="col-md-4"> | ||
77 | - <div class="panel panel-default"> | ||
78 | - <div class="panel-heading"> | ||
79 | - <h4><i class="fa fa-fw fa-check"></i> 使用模板标签和变量</h4> | ||
80 | - </div> | ||
81 | - <div class="panel-body"> | ||
82 | - <a href="{:addon_url('example/demo/index',[':name'=>'s1'])}" class="btn btn-success">查看示例</a> | ||
83 | - </div> | ||
84 | - </div> | ||
85 | - </div> | ||
86 | - <div class="col-md-4"> | ||
87 | - <div class="panel panel-default"> | ||
88 | - <div class="panel-heading"> | ||
89 | - <h4><i class="fa fa-fw fa-gift"></i> 访问不需要登录的页面</h4> | ||
90 | - </div> | ||
91 | - <div class="panel-body"> | ||
92 | - <a href="{:addon_url('example/demo/demo1',[':name'=>'s2'])}" class="btn btn-success">立即访问</a> | ||
93 | - </div> | ||
94 | - </div> | ||
95 | - </div> | ||
96 | - <div class="col-md-4"> | ||
97 | - <div class="panel panel-default"> | ||
98 | - <div class="panel-heading"> | ||
99 | - <h4><i class="fa fa-fw fa-compass"></i> 访问需要登录的页面</h4> | ||
100 | - </div> | ||
101 | - <div class="panel-body"> | ||
102 | - <a href="{:addon_url('example/demo/demo2',[':name'=>'s3'])}" class="btn btn-success">立即访问</a> | ||
103 | - </div> | ||
104 | - </div> | ||
105 | - </div> | ||
106 | - </div> | ||
107 | - <!-- /.row --> | ||
108 | - | ||
109 | - <hr> | ||
110 | - | ||
111 | -</div> |
addons/example/view/layout/default.html
已删除
100644 → 0
1 | -<!DOCTYPE html> | ||
2 | -<html lang="en"> | ||
3 | - | ||
4 | - <head> | ||
5 | - | ||
6 | - <meta charset="utf-8"> | ||
7 | - <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
8 | - <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
9 | - <meta name="description" content=""> | ||
10 | - <meta name="author" content=""> | ||
11 | - | ||
12 | - <title>开发示例 - {$site.name|htmlentities}</title> | ||
13 | - | ||
14 | - <!-- Bootstrap Core CSS --> | ||
15 | - <link href="__CDN__/assets/libs/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> | ||
16 | - | ||
17 | - <!-- Custom CSS --> | ||
18 | - <link href="__ADDON__/css/common.css" rel="stylesheet"> | ||
19 | - | ||
20 | - <!-- Custom Fonts --> | ||
21 | - <link href="__CDN__/assets/libs/font-awesome/css/font-awesome.min.css" rel="stylesheet"> | ||
22 | - | ||
23 | - <!--[if lt IE 9]> | ||
24 | - <script src="__CDN__/assets/js/html5shiv.js"></script> | ||
25 | - <script src="__CDN__/assets/js/respond.min.js"></script> | ||
26 | - <![endif]--> | ||
27 | - | ||
28 | - </head> | ||
29 | - | ||
30 | - <body> | ||
31 | - | ||
32 | - <!-- Navigation --> | ||
33 | - <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> | ||
34 | - <div class="container"> | ||
35 | - <!-- Brand and toggle get grouped for better mobile display --> | ||
36 | - <div class="navbar-header"> | ||
37 | - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> | ||
38 | - <span class="sr-only">Toggle navigation</span> | ||
39 | - <span class="icon-bar"></span> | ||
40 | - <span class="icon-bar"></span> | ||
41 | - <span class="icon-bar"></span> | ||
42 | - </button> | ||
43 | - <a class="navbar-brand" href="{:addon_url('example/index/index')}">{$site.name|htmlentities}</a> | ||
44 | - </div> | ||
45 | - <!-- Collect the nav links, forms, and other content for toggling --> | ||
46 | - <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> | ||
47 | - <ul class="nav navbar-nav navbar-right"> | ||
48 | - <li> | ||
49 | - <a href="{:addon_url('example/index/index')}">插件首页</a> | ||
50 | - </li> | ||
51 | - <li> | ||
52 | - <a href="{:addon_url('example/demo/demo1', [':name'=>'s1'])}">无需登录页面</a> | ||
53 | - </li> | ||
54 | - <li> | ||
55 | - <a href="{:addon_url('example/demo/demo2', [':name'=>'s2'])}">需登录页面</a> | ||
56 | - </li> | ||
57 | - {if $user} | ||
58 | - <li class="dropdown"> | ||
59 | - <a href="#" class="dropdown-toggle" data-toggle="dropdown">欢迎你! {$user.nickname|htmlentities}<b class="caret"></b></a> | ||
60 | - <ul class="dropdown-menu"> | ||
61 | - <li> | ||
62 | - <a href="{:url('index/user/index')}">会员中心</a> | ||
63 | - </li> | ||
64 | - <li> | ||
65 | - <a href="{:url('index/user/profile')}">个人资料</a> | ||
66 | - </li> | ||
67 | - <li> | ||
68 | - <a href="{:url('index/user/logout')}">退出登录</a> | ||
69 | - </li> | ||
70 | - </ul> | ||
71 | - </li> | ||
72 | - {else /} | ||
73 | - <li class="dropdown"> | ||
74 | - <a href="#" class="dropdown-toggle" data-toggle="dropdown">会员中心 <b class="caret"></b></a> | ||
75 | - <ul class="dropdown-menu"> | ||
76 | - <li> | ||
77 | - <a href="{:url('index/user/login')}">登录</a> | ||
78 | - </li> | ||
79 | - <li> | ||
80 | - <a href="{:url('index/user/register')}">注册</a> | ||
81 | - </li> | ||
82 | - </ul> | ||
83 | - </li> | ||
84 | - {/if} | ||
85 | - </ul> | ||
86 | - </div> | ||
87 | - <!-- /.navbar-collapse --> | ||
88 | - </div> | ||
89 | - <!-- /.container --> | ||
90 | - </nav> | ||
91 | - | ||
92 | - {__CONTENT__} | ||
93 | - | ||
94 | - <div class="container"> | ||
95 | - <!-- Footer --> | ||
96 | - <footer> | ||
97 | - <div class="row"> | ||
98 | - <div class="col-lg-12"> | ||
99 | - <p>Copyright © {$site.name|htmlentities} 2024</p> | ||
100 | - </div> | ||
101 | - </div> | ||
102 | - </footer> | ||
103 | - | ||
104 | - </div> | ||
105 | - <!-- /.container --> | ||
106 | - | ||
107 | - <!-- jQuery --> | ||
108 | - <script src="__CDN__/assets/libs/jquery/dist/jquery.min.js"></script> | ||
109 | - | ||
110 | - <!-- Bootstrap Core JavaScript --> | ||
111 | - <script src="__CDN__/assets/libs/bootstrap/dist/js/bootstrap.min.js"></script> | ||
112 | - | ||
113 | - <!-- Script to Activate the Carousel --> | ||
114 | - <script> | ||
115 | - $('.carousel').carousel({ | ||
116 | - interval: 5000 //changes the speed | ||
117 | - }) | ||
118 | - </script> | ||
119 | - | ||
120 | - </body> | ||
121 | - | ||
122 | -</html> |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\common\controller\Backend; | ||
6 | - | ||
7 | -/** | ||
8 | - * 表格完整示例 | ||
9 | - * | ||
10 | - * @icon fa fa-table | ||
11 | - * @remark 在使用Bootstrap-table中的常用方式,更多使用方式可查看:http://bootstrap-table.wenzhixin.net.cn/zh-cn/ | ||
12 | - */ | ||
13 | -class Bootstraptable extends Backend | ||
14 | -{ | ||
15 | - /** | ||
16 | - * @var \app\admin\model\AdminLog | ||
17 | - */ | ||
18 | - protected $model = null; | ||
19 | - /** | ||
20 | - * 无需鉴权的方法(需登录) | ||
21 | - * @var array | ||
22 | - */ | ||
23 | - protected $noNeedRight = ['start', 'pause', 'change', 'detail', 'cxselect', 'searchlist', 'selectpage']; | ||
24 | - | ||
25 | - /** | ||
26 | - * 快捷搜索的字段 | ||
27 | - * @var string | ||
28 | - */ | ||
29 | - protected $searchFields = 'id,title,url'; | ||
30 | - | ||
31 | - public function _initialize() | ||
32 | - { | ||
33 | - parent::_initialize(); | ||
34 | - $this->model = model('AdminLog'); | ||
35 | - } | ||
36 | - | ||
37 | - /** | ||
38 | - * 查看 | ||
39 | - */ | ||
40 | - public function index() | ||
41 | - { | ||
42 | - if ($this->request->isAjax()) { | ||
43 | - list($where, $sort, $order, $offset, $limit) = $this->buildparams(null); | ||
44 | - $list = $this->model | ||
45 | - ->where($where) | ||
46 | - ->order($sort, $order) | ||
47 | - ->limit($offset, $limit) | ||
48 | - ->paginate($limit); | ||
49 | - $result = array("total" => $list->total(), "rows" => $list->items(), "extend" => ['money' => mt_rand(100000, 999999), 'price' => 200]); | ||
50 | - | ||
51 | - return json($result); | ||
52 | - } | ||
53 | - return $this->view->fetch(); | ||
54 | - } | ||
55 | - | ||
56 | - /** | ||
57 | - * 详情 | ||
58 | - */ | ||
59 | - public function detail($ids) | ||
60 | - { | ||
61 | - $row = $this->model->get(['id' => $ids]); | ||
62 | - if (!$row) { | ||
63 | - $this->error(__('No Results were found')); | ||
64 | - } | ||
65 | - if ($this->request->isAjax()) { | ||
66 | - $this->success("Ajax请求成功", null, ['id' => $ids]); | ||
67 | - } | ||
68 | - $this->view->assign("row", $row->toArray()); | ||
69 | - return $this->view->fetch(); | ||
70 | - } | ||
71 | - | ||
72 | - /** | ||
73 | - * 启用 | ||
74 | - */ | ||
75 | - public function start($ids = '') | ||
76 | - { | ||
77 | - $this->success("模拟启动成功"); | ||
78 | - } | ||
79 | - | ||
80 | - /** | ||
81 | - * 暂停 | ||
82 | - */ | ||
83 | - public function pause($ids = '') | ||
84 | - { | ||
85 | - $this->success("模拟暂停成功"); | ||
86 | - } | ||
87 | - | ||
88 | - /** | ||
89 | - * 切换 | ||
90 | - */ | ||
91 | - public function change($ids = '') | ||
92 | - { | ||
93 | - //你需要在此做具体的操作逻辑 | ||
94 | - | ||
95 | - $this->success("模拟切换成功"); | ||
96 | - } | ||
97 | - | ||
98 | - /** | ||
99 | - * 联动搜索 | ||
100 | - */ | ||
101 | - public function cxselect() | ||
102 | - { | ||
103 | - $type = $this->request->get('type'); | ||
104 | - $group_id = $this->request->get('group_id'); | ||
105 | - $list = null; | ||
106 | - if ($group_id !== '') { | ||
107 | - if ($type == 'group') { | ||
108 | - $groupIds = $this->auth->getChildrenGroupIds(true); | ||
109 | - $list = \app\admin\model\AuthGroup::where('id', 'in', $groupIds)->field('id as value, name')->select(); | ||
110 | - } else { | ||
111 | - $adminIds = \app\admin\model\AuthGroupAccess::where('group_id', 'in', $group_id)->column('uid'); | ||
112 | - $list = \app\admin\model\Admin::where('id', 'in', $adminIds)->field('id as value, username AS name')->select(); | ||
113 | - } | ||
114 | - } | ||
115 | - $this->success('', null, $list); | ||
116 | - } | ||
117 | - | ||
118 | - /** | ||
119 | - * 搜索下拉列表 | ||
120 | - */ | ||
121 | - public function searchlist() | ||
122 | - { | ||
123 | - $result = $this->model->limit(10)->select(); | ||
124 | - $searchlist = []; | ||
125 | - foreach ($result as $key => $value) { | ||
126 | - $searchlist[] = ['id' => $value['url'], 'name' => $value['url']]; | ||
127 | - } | ||
128 | - $data = ['searchlist' => $searchlist]; | ||
129 | - $this->success('', null, $data); | ||
130 | - } | ||
131 | - | ||
132 | - public function selectpage() | ||
133 | - { | ||
134 | - $this->model = new \app\admin\model\AdminLog; | ||
135 | - return parent::selectpage(); | ||
136 | - } | ||
137 | -} |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\common\controller\Backend; | ||
6 | - | ||
7 | -/** | ||
8 | - * 彩色角标 | ||
9 | - * | ||
10 | - * @icon fa fa-table | ||
11 | - * @remark 在JS端控制角标的显示与隐藏,请注意左侧菜单栏角标的数值变化 | ||
12 | - */ | ||
13 | -class Colorbadge extends Backend | ||
14 | -{ | ||
15 | - protected $model = null; | ||
16 | - | ||
17 | - public function _initialize() | ||
18 | - { | ||
19 | - parent::_initialize(); | ||
20 | - $this->model = model('AdminLog'); | ||
21 | - } | ||
22 | -} |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\common\controller\Backend; | ||
6 | - | ||
7 | -/** | ||
8 | - * 控制器间跳转 | ||
9 | - * | ||
10 | - * @icon fa fa-table | ||
11 | - * @remark FastAdmin支持在控制器间跳转,点击后将切换到另外一个TAB中,无需刷新当前页面 | ||
12 | - */ | ||
13 | -class Controllerjump extends Backend | ||
14 | -{ | ||
15 | - protected $model = null; | ||
16 | - | ||
17 | - public function _initialize() | ||
18 | - { | ||
19 | - parent::_initialize(); | ||
20 | - $this->model = model('AdminLog'); | ||
21 | - } | ||
22 | -} |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\admin\model\AdminLog; | ||
6 | -use app\common\controller\Backend; | ||
7 | - | ||
8 | -/** | ||
9 | - * 自定义表单示例 | ||
10 | - * | ||
11 | - * @icon fa fa-table | ||
12 | - * @remark FastAdmin支持在控制器间跳转,点击后将切换到另外一个TAB中,无需刷新当前页面 | ||
13 | - */ | ||
14 | -class Customform extends Backend | ||
15 | -{ | ||
16 | - protected $model = null; | ||
17 | - | ||
18 | - public function _initialize() | ||
19 | - { | ||
20 | - parent::_initialize(); | ||
21 | - $this->model = model('AdminLog'); | ||
22 | - } | ||
23 | - | ||
24 | - public function index() | ||
25 | - { | ||
26 | - if ($this->request->isPost()) { | ||
27 | - $this->success("提交成功", null, ['data' => json_encode($this->request->post("row/a"), JSON_UNESCAPED_UNICODE)]); | ||
28 | - } | ||
29 | - return $this->view->fetch(); | ||
30 | - } | ||
31 | - | ||
32 | - public function get_title_list() | ||
33 | - { | ||
34 | - $query = $this->request->get("query"); | ||
35 | - $suggestions = AdminLog::where('title', 'like', '%' . $query . '%')->limit(10)->column("title"); | ||
36 | - $result = [ | ||
37 | - 'query' => $query, | ||
38 | - 'suggestions' => $suggestions | ||
39 | - ]; | ||
40 | - return json($result); | ||
41 | - } | ||
42 | -} |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\common\controller\Backend; | ||
6 | - | ||
7 | -/** | ||
8 | - * 自定义搜索 | ||
9 | - * | ||
10 | - * @icon fa fa-search | ||
11 | - * @remark 自定义列表的搜索 | ||
12 | - */ | ||
13 | -class Customsearch extends Backend | ||
14 | -{ | ||
15 | - protected $model = null; | ||
16 | - | ||
17 | - public function _initialize() | ||
18 | - { | ||
19 | - parent::_initialize(); | ||
20 | - $this->model = model('AdminLog'); | ||
21 | - $ipList = $this->model->whereTime('createtime', '-37 days')->group("ip")->column("ip,ip as aa"); | ||
22 | - $this->view->assign("ipList", $ipList); | ||
23 | - } | ||
24 | -} |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\common\controller\Backend; | ||
6 | - | ||
7 | -/** | ||
8 | - * 多级联动 | ||
9 | - * | ||
10 | - * @icon fa fa-table | ||
11 | - * @remark FastAdmin使用了jQuery-cxselect实现多级联动,更多文档请参考https://github.com/karsonzhang/cxSelect | ||
12 | - */ | ||
13 | -class Cxselect extends Backend | ||
14 | -{ | ||
15 | - protected $model = null; | ||
16 | - | ||
17 | - public function _initialize() | ||
18 | - { | ||
19 | - parent::_initialize(); | ||
20 | - } | ||
21 | -} |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\common\controller\Backend; | ||
6 | - | ||
7 | -/** | ||
8 | - * 统计图表示例 | ||
9 | - * | ||
10 | - * @icon fa fa-charts | ||
11 | - * @remark 展示在FastAdmin中使用Echarts展示丰富多彩的统计图表 | ||
12 | - */ | ||
13 | -class Echarts extends Backend | ||
14 | -{ | ||
15 | - protected $model = null; | ||
16 | - | ||
17 | - public function _initialize() | ||
18 | - { | ||
19 | - parent::_initialize(); | ||
20 | - $this->model = model('AdminLog'); | ||
21 | - } | ||
22 | - | ||
23 | - /** | ||
24 | - * 查看 | ||
25 | - */ | ||
26 | - public function index() | ||
27 | - { | ||
28 | - | ||
29 | - return $this->view->fetch(); | ||
30 | - } | ||
31 | - | ||
32 | - /** | ||
33 | - * 详情 | ||
34 | - */ | ||
35 | - public function detail($ids) | ||
36 | - { | ||
37 | - $row = $this->model->get(['id' => $ids]); | ||
38 | - if (!$row) { | ||
39 | - $this->error(__('No Results were found')); | ||
40 | - } | ||
41 | - $this->view->assign("row", $row->toArray()); | ||
42 | - return $this->view->fetch(); | ||
43 | - } | ||
44 | -} |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\common\controller\Backend; | ||
6 | - | ||
7 | -/** | ||
8 | - * 多表格示例 | ||
9 | - * | ||
10 | - * @icon fa fa-table | ||
11 | - * @remark 当一个页面上存在多个Bootstrap-table时该如何控制按钮和表格 | ||
12 | - */ | ||
13 | -class Multitable extends Backend | ||
14 | -{ | ||
15 | - protected $model = null; | ||
16 | - protected $noNeedRight = ['table1', 'table2']; | ||
17 | - | ||
18 | - public function _initialize() | ||
19 | - { | ||
20 | - parent::_initialize(); | ||
21 | - } | ||
22 | - | ||
23 | - /** | ||
24 | - * 查看 | ||
25 | - */ | ||
26 | - public function index() | ||
27 | - { | ||
28 | - $this->loadlang('general/attachment'); | ||
29 | - $this->loadlang('general/crontab'); | ||
30 | - return $this->view->fetch(); | ||
31 | - } | ||
32 | - | ||
33 | - public function table1() | ||
34 | - { | ||
35 | - $this->model = model('Attachment'); | ||
36 | - //设置过滤方法 | ||
37 | - $this->request->filter(['strip_tags']); | ||
38 | - if ($this->request->isAjax()) { | ||
39 | - //如果发送的来源是Selectpage,则转发到Selectpage | ||
40 | - if ($this->request->request('keyField')) { | ||
41 | - return $this->selectpage(); | ||
42 | - } | ||
43 | - list($where, $sort, $order, $offset, $limit) = $this->buildparams(); | ||
44 | - $total = $this->model | ||
45 | - ->where($where) | ||
46 | - ->field('id,filename,filesize,imagewidth,imageheight,mimetype') | ||
47 | - ->order($sort, $order) | ||
48 | - ->count(); | ||
49 | - | ||
50 | - $list = $this->model | ||
51 | - ->where($where) | ||
52 | - ->field('id,filename,filesize,imagewidth,imageheight,mimetype') | ||
53 | - ->order($sort, $order) | ||
54 | - ->limit($offset, $limit) | ||
55 | - ->select(); | ||
56 | - | ||
57 | - $result = array("total" => $total, "rows" => $list); | ||
58 | - | ||
59 | - return json($result); | ||
60 | - } | ||
61 | - return $this->view->fetch('index'); | ||
62 | - } | ||
63 | - | ||
64 | - public function table2() | ||
65 | - { | ||
66 | - $this->model = model('AdminLog'); | ||
67 | - //设置过滤方法 | ||
68 | - $this->request->filter(['strip_tags']); | ||
69 | - if ($this->request->isAjax()) { | ||
70 | - //如果发送的来源是Selectpage,则转发到Selectpage | ||
71 | - if ($this->request->request('keyField')) { | ||
72 | - return $this->selectpage(); | ||
73 | - } | ||
74 | - list($where, $sort, $order, $offset, $limit) = $this->buildparams(); | ||
75 | - $total = $this->model | ||
76 | - ->where($where) | ||
77 | - ->order($sort, $order) | ||
78 | - ->count(); | ||
79 | - | ||
80 | - $list = $this->model | ||
81 | - ->where($where) | ||
82 | - ->order($sort, $order) | ||
83 | - ->limit($offset, $limit) | ||
84 | - ->select(); | ||
85 | - | ||
86 | - $result = array("total" => $total, "rows" => $list); | ||
87 | - | ||
88 | - return json($result); | ||
89 | - } | ||
90 | - return $this->view->fetch('index'); | ||
91 | - } | ||
92 | -} |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\common\controller\Backend; | ||
6 | - | ||
7 | -/** | ||
8 | - * 关联模型 | ||
9 | - * | ||
10 | - * @icon fa fa-table | ||
11 | - * @remark 当使用到关联模型时需要重载index方法 | ||
12 | - */ | ||
13 | -class Relationmodel extends Backend | ||
14 | -{ | ||
15 | - protected $model = null; | ||
16 | - | ||
17 | - public function _initialize() | ||
18 | - { | ||
19 | - parent::_initialize(); | ||
20 | - $this->model = model('AdminLog'); | ||
21 | - } | ||
22 | - | ||
23 | - /** | ||
24 | - * 查看 | ||
25 | - */ | ||
26 | - public function index() | ||
27 | - { | ||
28 | - $this->relationSearch = true; | ||
29 | - $this->searchFields = "admin.username,id"; | ||
30 | - if ($this->request->isAjax()) { | ||
31 | - list($where, $sort, $order, $offset, $limit) = $this->buildparams(); | ||
32 | - $list = $this->model | ||
33 | - ->with("admin") | ||
34 | - ->where($where) | ||
35 | - ->order($sort, $order) | ||
36 | - ->paginate($limit); | ||
37 | - | ||
38 | - $result = array("total" => $list->total(), "rows" => $list->items()); | ||
39 | - | ||
40 | - return json($result); | ||
41 | - } | ||
42 | - return $this->view->fetch(); | ||
43 | - } | ||
44 | -} |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\common\controller\Backend; | ||
6 | - | ||
7 | -/** | ||
8 | - * 表格联动 | ||
9 | - * 点击左侧日志列表,右侧的表格数据会显示指定管理员的日志列表 | ||
10 | - * @icon fa fa-table | ||
11 | - */ | ||
12 | -class Tablelink extends Backend | ||
13 | -{ | ||
14 | - protected $model = null; | ||
15 | - protected $noNeedRight = ['table1', 'table2']; | ||
16 | - | ||
17 | - public function _initialize() | ||
18 | - { | ||
19 | - parent::_initialize(); | ||
20 | - $this->model = model('AdminLog'); | ||
21 | - } | ||
22 | - | ||
23 | - | ||
24 | - public function table1() | ||
25 | - { | ||
26 | - $this->model = model('Admin'); | ||
27 | - //设置过滤方法 | ||
28 | - $this->request->filter(['strip_tags']); | ||
29 | - if ($this->request->isAjax()) { | ||
30 | - //如果发送的来源是Selectpage,则转发到Selectpage | ||
31 | - if ($this->request->request('keyField')) { | ||
32 | - return $this->selectpage(); | ||
33 | - } | ||
34 | - list($where, $sort, $order, $offset, $limit) = $this->buildparams(); | ||
35 | - $total = $this->model | ||
36 | - ->where($where) | ||
37 | - ->field('id,username') | ||
38 | - ->order($sort, $order) | ||
39 | - ->count(); | ||
40 | - | ||
41 | - $list = $this->model | ||
42 | - ->where($where) | ||
43 | - ->field('id,username') | ||
44 | - ->order($sort, $order) | ||
45 | - ->limit($offset, $limit) | ||
46 | - ->select(); | ||
47 | - | ||
48 | - $result = array("total" => $total, "rows" => $list); | ||
49 | - | ||
50 | - return json($result); | ||
51 | - } | ||
52 | - return $this->view->fetch('index'); | ||
53 | - } | ||
54 | - | ||
55 | - public function table2() | ||
56 | - { | ||
57 | - $this->model = model('AdminLog'); | ||
58 | - //设置过滤方法 | ||
59 | - $this->request->filter(['strip_tags']); | ||
60 | - if ($this->request->isAjax()) { | ||
61 | - //如果发送的来源是Selectpage,则转发到Selectpage | ||
62 | - if ($this->request->request('keyField')) { | ||
63 | - return $this->selectpage(); | ||
64 | - } | ||
65 | - list($where, $sort, $order, $offset, $limit) = $this->buildparams(); | ||
66 | - $total = $this->model | ||
67 | - ->where($where) | ||
68 | - ->order($sort, $order) | ||
69 | - ->count(); | ||
70 | - | ||
71 | - $list = $this->model | ||
72 | - ->where($where) | ||
73 | - ->order($sort, $order) | ||
74 | - ->limit($offset, $limit) | ||
75 | - ->select(); | ||
76 | - | ||
77 | - $result = array("total" => $total, "rows" => $list); | ||
78 | - | ||
79 | - return json($result); | ||
80 | - } | ||
81 | - return $this->view->fetch('index'); | ||
82 | - } | ||
83 | -} |
1 | -<?php | ||
2 | - | ||
3 | -namespace app\admin\controller\example; | ||
4 | - | ||
5 | -use app\common\controller\Backend; | ||
6 | - | ||
7 | -/** | ||
8 | - * 表格模板示例 | ||
9 | - * | ||
10 | - * @icon fa fa-table | ||
11 | - * @remark 可以通过使用表格模板将表格中的行渲染成一样的展现方式,基于此功能可以任意定制自己想要的展示列表 | ||
12 | - */ | ||
13 | -class Tabletemplate extends Backend | ||
14 | -{ | ||
15 | - protected $model = null; | ||
16 | - | ||
17 | - public function _initialize() | ||
18 | - { | ||
19 | - parent::_initialize(); | ||
20 | - $this->model = model('AdminLog'); | ||
21 | - } | ||
22 | - | ||
23 | - /** | ||
24 | - * 查看 | ||
25 | - */ | ||
26 | - public function index() | ||
27 | - { | ||
28 | - if ($this->request->isAjax()) { | ||
29 | - list($where, $sort, $order, $offset, $limit) = $this->buildparams(null); | ||
30 | - $total = $this->model | ||
31 | - ->where($where) | ||
32 | - ->order($sort, $order) | ||
33 | - ->count(); | ||
34 | - $list = $this->model | ||
35 | - ->where($where) | ||
36 | - ->order($sort, $order) | ||
37 | - ->limit($offset, $limit) | ||
38 | - ->select(); | ||
39 | - $result = array("total" => $total, "rows" => $list); | ||
40 | - | ||
41 | - return json($result); | ||
42 | - } | ||
43 | - return $this->view->fetch(); | ||
44 | - } | ||
45 | - | ||
46 | - /** | ||
47 | - * 详情 | ||
48 | - */ | ||
49 | - public function detail($ids) | ||
50 | - { | ||
51 | - $row = $this->model->get(['id' => $ids]); | ||
52 | - if (!$row) { | ||
53 | - $this->error(__('No Results were found')); | ||
54 | - } | ||
55 | - $this->view->assign("row", $row->toArray()); | ||
56 | - return $this->view->fetch(); | ||
57 | - } | ||
58 | -} |
application/admin/model/Area.php
已删除
100644 → 0
1 | -<table class="table table-striped"> | ||
2 | - <thead> | ||
3 | - <tr> | ||
4 | - <th>{:__('Title')}</th> | ||
5 | - <th>{:__('Content')}</th> | ||
6 | - </tr> | ||
7 | - </thead> | ||
8 | - <tbody> | ||
9 | - {volist name="row" id="vo" } | ||
10 | - <tr> | ||
11 | - <td>{$key}</td> | ||
12 | - <td style="word-break: break-all;">{$vo|htmlentities}</td> | ||
13 | - </tr> | ||
14 | - {/volist} | ||
15 | - {if $Think.get.dialog} | ||
16 | - <tr> | ||
17 | - <td>回传数据</td> | ||
18 | - <td> | ||
19 | - <div class="input-group"> | ||
20 | - <input name="callback" class="form-control" value="test" /> | ||
21 | - <span class="input-group-btn"><a href="javascript:;" class="btn btn-success btn-callback" >回传数据</a></span> | ||
22 | - </div> | ||
23 | - </td> | ||
24 | - </tr> | ||
25 | - {/if} | ||
26 | - </tbody> | ||
27 | -</table> | ||
28 | -<div class="hide layer-footer"> | ||
29 | - <label class="control-label col-xs-12 col-sm-2"></label> | ||
30 | - <div class="col-xs-12 col-sm-8"> | ||
31 | - <button type="reset" class="btn btn-primary btn-embossed btn-close" onclick="Layer.closeAll();">{:__('Close')}</button> | ||
32 | - </div> | ||
33 | -</div> |
1 | -<table class="table table-striped"> | ||
2 | - <tbody> | ||
3 | - <tr><td>这里是编辑窗口</td></tr> | ||
4 | - </tbody> | ||
5 | -</table> | ||
6 | -<div class="hide layer-footer"> | ||
7 | - <label class="control-label col-xs-12 col-sm-2"></label> | ||
8 | - <div class="col-xs-12 col-sm-8"> | ||
9 | - <button type="reset" class="btn btn-primary btn-embossed btn-close" onclick="Layer.closeAll();">{:__('Close')}</button> | ||
10 | - </div> | ||
11 | -</div> |
1 | -<div class="panel panel-default panel-intro"> | ||
2 | - | ||
3 | - <div class="panel-heading"> | ||
4 | - {:build_heading(null,FALSE)} | ||
5 | - <ul class="nav nav-tabs nav-custom-condition"> | ||
6 | - <li class="active"><a href="#t-all" data-value="" data-toggle="tab">{:__('All')}</a></li> | ||
7 | - <li class=""><a href="#t-1" data-value='1' data-toggle="tab">自定义搜索条件1</a></li> | ||
8 | - <li class=""><a href="#t-2" data-value='2' data-toggle="tab">自定义搜索条件2</a></li> | ||
9 | - </ul> | ||
10 | - </div> | ||
11 | - | ||
12 | - | ||
13 | - <div class="panel-body"> | ||
14 | - <div id="myTabContent" class="tab-content"> | ||
15 | - <div class="tab-pane fade active in" id="one"> | ||
16 | - <div class="widget-body no-padding"> | ||
17 | - <div id="toolbar" class="toolbar"> | ||
18 | - {:build_toolbar('refresh,delete')} | ||
19 | - <a class="btn btn-info btn-disabled disabled btn-selected" href="javascript:;"><i class="fa fa-leaf"></i> 获取选中项</a> | ||
20 | - <div class="dropdown btn-group"> | ||
21 | - <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> <?= __('More') ?></a> | ||
22 | - <ul class="dropdown-menu text-left" role="menu"> | ||
23 | - <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li> | ||
24 | - <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li> | ||
25 | - </ul> | ||
26 | - </div> | ||
27 | - <a class="btn btn-success btn-singlesearch" href="javascript:;"><i class="fa fa-user"></i> 自定义搜索</a> | ||
28 | - <a class="btn btn-success btn-change btn-start" data-params="action=start" data-url="example/bootstraptable/start" href="javascript:;"><i class="fa fa-play"></i> 启动</a> | ||
29 | - <a class="btn btn-danger btn-change btn-pause" data-params="action=pause" data-url="example/bootstraptable/pause" href="javascript:;"><i class="fa fa-pause"></i> 暂停</a> | ||
30 | - <a href="javascript:;" class="btn btn-default" style="font-size:14px;color:dodgerblue;"> | ||
31 | - <span class="extend"> | ||
32 | - 金额:<span id="money">0</span> | ||
33 | - 单价:<span id="price">0</span> | ||
34 | - </span> | ||
35 | - </a> | ||
36 | - </div> | ||
37 | - <table id="table" class="table table-striped table-bordered table-hover table-nowrap" width="100%"> | ||
38 | - | ||
39 | - </table> | ||
40 | - | ||
41 | - </div> | ||
42 | - </div> | ||
43 | - | ||
44 | - </div> | ||
45 | - </div> | ||
46 | -</div> | ||
47 | -<script id="categorytpl" type="text/html"> | ||
48 | - <div class="row"> | ||
49 | - <div class="col-xs-12"> | ||
50 | - <div class="form-inline" data-toggle="cxselect" data-selects="group,admin"> | ||
51 | - <select class="group form-control" name="group" data-url="example/bootstraptable/cxselect?type=group"></select> | ||
52 | - <select class="admin form-control" name="admin_id" data-url="example/bootstraptable/cxselect?type=admin" data-query-name="group_id"></select> | ||
53 | - <input type="hidden" class="operate" data-name="admin_id" value="=" /> | ||
54 | - </div> | ||
55 | - </div> | ||
56 | - </div> | ||
57 | -</script> |
1 | -<div class="panel panel-default panel-intro"> | ||
2 | - {:build_heading()} | ||
3 | - | ||
4 | - <div class="panel-body"> | ||
5 | - <div id="myTabContent" class="tab-content"> | ||
6 | - <div class="tab-pane fade active in" id="one"> | ||
7 | - <div class="widget-body no-padding"> | ||
8 | - <div id="toolbar" class="toolbar"> | ||
9 | - {:build_toolbar('refresh,delete')} | ||
10 | - </div> | ||
11 | - <table id="table" class="table table-striped table-bordered table-hover" width="100%"> | ||
12 | - | ||
13 | - </table> | ||
14 | - | ||
15 | - | ||
16 | - </div> | ||
17 | - </div> | ||
18 | - | ||
19 | - </div> | ||
20 | - </div> | ||
21 | -</div> |
1 | -<div class="panel panel-default panel-intro"> | ||
2 | - {:build_heading()} | ||
3 | - | ||
4 | - <div class="panel-body"> | ||
5 | - <div id="myTabContent" class="tab-content"> | ||
6 | - <div class="tab-pane fade active in" id="one"> | ||
7 | - <div class="widget-body no-padding"> | ||
8 | - <div id="toolbar" class="toolbar"> | ||
9 | - {:build_toolbar('refresh,delete')} | ||
10 | - </div> | ||
11 | - <table id="table" class="table table-striped table-bordered table-hover" width="100%"> | ||
12 | - | ||
13 | - </table> | ||
14 | - | ||
15 | - | ||
16 | - </div> | ||
17 | - </div> | ||
18 | - | ||
19 | - </div> | ||
20 | - </div> | ||
21 | -</div> |
1 | -<style> | ||
2 | - .upload-image { | ||
3 | - background: url('__CDN__/assets/addons/example/img/plus.png') no-repeat center center; | ||
4 | - background-size: 30px 30px; | ||
5 | - height: 30px; | ||
6 | - width: 30px; | ||
7 | - border: 1px solid #ccc; | ||
8 | - } | ||
9 | - | ||
10 | - textarea.form-control { | ||
11 | - background: #eee; | ||
12 | - } | ||
13 | -</style> | ||
14 | -<div class="row"> | ||
15 | - <div class="col-md-6"> | ||
16 | - <div class="box box-success"> | ||
17 | - <div class="panel-heading"> | ||
18 | - {:__('自定义图片描述')} | ||
19 | - </div> | ||
20 | - <div class="panel-body"> | ||
21 | - <div class="alert alert-success-light"> | ||
22 | - <b>温馨提示</b><br> | ||
23 | - 默认我们的多图是没有图片描述的,如果我们需要自定义描述,可以使用以下的自定义功能<br> | ||
24 | - 特别注意的是图片的url和描述是分开储存的,也就是说图片一个字段,描述一个字段,你在前台使用时需要自己匹配映射关系<br> | ||
25 | - <b>下面的演示textarea为了便于调试,设置为可见的,实际使用中应该添加个hidden的class进行隐藏</b> | ||
26 | - </div> | ||
27 | - <form id="first-form" role="form" data-toggle="validator" method="POST" action=""> | ||
28 | - <div class="form-group row"> | ||
29 | - <label class="control-label col-xs-12">{:__('一维数组示例')}:</label> | ||
30 | - <div class="col-xs-12"> | ||
31 | - <div class="input-group"> | ||
32 | - <input id="c-files" data-rule="required" class="form-control" size="50" name="row[files]" type="text" value="https://cdn.fastadmin.net/uploads/addons/blog.png,https://cdn.fastadmin.net/uploads/addons/cms.png,https://cdn.fastadmin.net/uploads/addons/vote.png"> | ||
33 | - <div class="input-group-addon no-border no-padding"> | ||
34 | - <span><button type="button" id="plupload-files" class="btn btn-danger plupload" data-input-id="c-files" data-mimetype="*" data-multiple="true" data-preview-id="p-files"><i class="fa fa-upload"></i> {:__('Upload')}</button></span> | ||
35 | - <span><button type="button" id="fachoose-files" class="btn btn-primary fachoose" data-input-id="c-files" data-mimetype="*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span> | ||
36 | - </div> | ||
37 | - <span class="msg-box n-right" for="c-files"></span> | ||
38 | - </div> | ||
39 | - | ||
40 | - <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 --> | ||
41 | - <ul class="row list-inline plupload-preview" id="p-files" data-template="introtpl" data-name="row[intro]"></ul> | ||
42 | - | ||
43 | - <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏--> | ||
44 | - <textarea name="row[intro]" class="form-control" style="margin-top:5px;">["简洁响应式博客","CMS内容管理系统","在线投票系统"]</textarea> | ||
45 | - | ||
46 | - <!--这里自定义图片预览的模板 开始--> | ||
47 | - <script type="text/html" id="introtpl"> | ||
48 | - <li class="col-xs-3"> | ||
49 | - <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail"> | ||
50 | - <img src="<%=fullurl%>" class="img-responsive"> | ||
51 | - </a> | ||
52 | - <input type="text" name="row[intro][<%=index%>]" class="form-control mb-1" placeholder="请输入文件描述" value="<%=value?value:''%>"/> | ||
53 | - <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a> | ||
54 | - </li> | ||
55 | - </script> | ||
56 | - <!--这里自定义图片预览的模板 结束--> | ||
57 | - </div> | ||
58 | - </div> | ||
59 | - <div class="form-group row"> | ||
60 | - <label class="control-label col-xs-12">{:__('二维数组示例')}:</label> | ||
61 | - <div class="col-xs-12"> | ||
62 | - <div class="input-group"> | ||
63 | - <input id="c-images" data-rule="required" class="form-control" size="50" name="row[images]" type="text" value="https://cdn.fastadmin.net/uploads/addons/example.png,https://cdn.fastadmin.net/uploads/addons/upyun.png,https://cdn.fastadmin.net/uploads/addons/alioss.png"> | ||
64 | - <div class="input-group-addon no-border no-padding"> | ||
65 | - <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span> | ||
66 | - <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span> | ||
67 | - </div> | ||
68 | - <span class="msg-box n-right" for="c-images"></span> | ||
69 | - </div> | ||
70 | - | ||
71 | - <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 --> | ||
72 | - <ul class="row list-inline plupload-preview" id="p-images" data-template="desctpl" data-name="row[desc]"></ul> | ||
73 | - | ||
74 | - <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏--> | ||
75 | - <textarea name="row[desc]" class="form-control" style="margin-top:5px;">[{"info":"开发者示例插件","size":"1M"},{"info":"又拍云储存整合","size":"2M"},{"info":"阿里OSS云储存","size":"1M"}]</textarea> | ||
76 | - | ||
77 | - <!--这里自定义图片预览的模板 开始--> | ||
78 | - <script type="text/html" id="desctpl"> | ||
79 | - <li class="col-xs-3"> | ||
80 | - <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail"> | ||
81 | - <img src="<%=fullurl%>" class="img-responsive"> | ||
82 | - </a> | ||
83 | - <input type="text" name="row[desc][<%=index%>][info]" class="form-control mb-1" placeholder="请输入插件描述" value="<%=value?value['info']:''%>"/> | ||
84 | - <input type="text" name="row[desc][<%=index%>][size]" class="form-control mb-1" placeholder="请输入插件大小" value="<%=value?value['size']:''%>"/> | ||
85 | - <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a> | ||
86 | - </li> | ||
87 | - </script> | ||
88 | - <!--这里自定义图片预览的模板 结束--> | ||
89 | - </div> | ||
90 | - </div> | ||
91 | - <div class="form-group row"> | ||
92 | - <label class="control-label col-xs-12"></label> | ||
93 | - <div class="col-xs-12"> | ||
94 | - <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button> | ||
95 | - <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> | ||
96 | - </div> | ||
97 | - </div> | ||
98 | - | ||
99 | - </form> | ||
100 | - </div> | ||
101 | - </div> | ||
102 | - | ||
103 | - </div> | ||
104 | - <div class="col-md-6"> | ||
105 | - <div class="box box-info"> | ||
106 | - <div class="panel-heading"> | ||
107 | - {:__('自定义Fieldlist示例')} | ||
108 | - </div> | ||
109 | - <div class="panel-body"> | ||
110 | - <div class="alert alert-danger-light"> | ||
111 | - <b>温馨提示</b><br> | ||
112 | - 默认的fieldlist为键值形式,如果需要一维数组或二维数组,可使用下面的自定义模板来实现<br> | ||
113 | - 默认追加的元素是没有进行事件绑定的,我们需要监听btn-append这个按钮的fa.event.appendfieldlist事件<br> | ||
114 | - <b>下面的演示textarea为了便于调试,设置为可见的,实际使用中应该添加个hidden的class进行隐藏</b> | ||
115 | - </div> | ||
116 | - <form id="second-form" role="form" data-toggle="validator" method="POST" action=""> | ||
117 | - <div class="form-group row"> | ||
118 | - <label class="control-label col-xs-12"> | ||
119 | - {:__('Fieldlist一维示例')}: | ||
120 | - <span style="font-weight: normal"><font color="red">只支持FastAdmin1.5.0+</font> {if version_compare($Think.config.fastadmin.version, '1.5.0')<0}<span class="label label-danger">你当前FastAdmin版本不支持</span>{/if}</span> | ||
121 | - </label> | ||
122 | - <div class="col-xs-12"> | ||
123 | - <dl class="list-unstyled fieldlist" data-template="singletpl" data-name="row[single]" id="single-table"> | ||
124 | - <dd> | ||
125 | - <ins>{:__('标题')}</ins> | ||
126 | - </dd> | ||
127 | - <dd> | ||
128 | - <ins><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></ins> | ||
129 | - </dd> | ||
130 | - </dl> | ||
131 | - | ||
132 | - <!--请注意实际开发中textarea应该添加个hidden进行隐藏--> | ||
133 | - <textarea name="row[single]" class="form-control" cols="30" rows="5">["你好","世界"]</textarea> | ||
134 | - <script id="singletpl" type="text/html"> | ||
135 | - <dd class="form-inline"> | ||
136 | - <ins><input type="text" name="<%=name%>[<%=index%>][value]" class="form-control" size="15" value="<%=row%>" placeholder="标题"/></ins> | ||
137 | - <ins> | ||
138 | - <!--下面的两个按钮务必保留--> | ||
139 | - <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> | ||
140 | - <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span> | ||
141 | - </ins> | ||
142 | - </dd> | ||
143 | - </script> | ||
144 | - </div> | ||
145 | - </div> | ||
146 | - <div class="form-group row"> | ||
147 | - <label class="control-label col-xs-12">{:__('Fieldlist一维键值示例')}:</label> | ||
148 | - <div class="col-xs-12"> | ||
149 | - <dl class="list-unstyled fieldlist" data-name="row[keyvalue]" id="keyvalue-table"> | ||
150 | - <dd> | ||
151 | - <ins>{:__('标题')}</ins> | ||
152 | - </dd> | ||
153 | - <dd> | ||
154 | - <ins><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></ins> | ||
155 | - </dd> | ||
156 | - </dl> | ||
157 | - | ||
158 | - <!--请注意实际开发中textarea应该添加个hidden进行隐藏--> | ||
159 | - <textarea name="row[keyvalue]" class="form-control" cols="30" rows="5">{"2":"Hello", "1":"World"}</textarea> | ||
160 | - </div> | ||
161 | - </div> | ||
162 | - <div class="form-group row"> | ||
163 | - <label class="control-label col-xs-12">{:__('Fieldlist二维数组示例')}:</label> | ||
164 | - <div class="col-xs-12"> | ||
165 | - <table class="table fieldlist" data-template="basictpl" data-name="row[basic]" id="first-table"> | ||
166 | - <tr> | ||
167 | - <td>{:__('标题')}</td> | ||
168 | - <td>{:__('介绍')}</td> | ||
169 | - <td>{:__('大小')}</td> | ||
170 | - <td>{:__('状态')}</td> | ||
171 | - <td width="100"></td> | ||
172 | - </tr> | ||
173 | - <tr> | ||
174 | - <td colspan="5"><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></td> | ||
175 | - </tr> | ||
176 | - </table> | ||
177 | - | ||
178 | - <!--请注意实际开发中textarea应该添加个hidden进行隐藏--> | ||
179 | - <textarea name="row[basic]" class="form-control" cols="30" rows="5">[{"title":"开发者示例插件","intro":"开发者必备","size":"1M","state":1},{"title":"又拍云储存整合","intro":"一款云储存插件","size":"2M","state":0},{"title":"阿里OSS云储存","intro":"一款云储存插件","size":"1M","state":1}]</textarea> | ||
180 | - <script id="basictpl" type="text/html"> | ||
181 | - <tr class="form-inline"> | ||
182 | - <td><input type="text" name="<%=name%>[<%=index%>][title]" class="form-control" size="15" value="<%=row.title||'fast'%>" placeholder="标题"/></td> | ||
183 | - <td><input type="text" name="<%=name%>[<%=index%>][intro]" class="form-control" size="15" value="<%=row.intro%>" placeholder="介绍"/></td> | ||
184 | - <td><input type="text" name="<%=name%>[<%=index%>][size]" class="form-control" style="width:50px" value="<%=row.size%>" placeholder="大小"/></td> | ||
185 | - <td> | ||
186 | - <input type="hidden" name="<%=name%>[<%=index%>][state]" id="c-state-<%=index%>" class="form-control" style="width:50px" value="<%=row.state%>" placeholder="状态"/> | ||
187 | - <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-state-<%=index%>" data-yes="1" data-no="0"> | ||
188 | - <i class="fa fa-toggle-on text-success <%if(row.state!=1){%>fa-flip-horizontal text-gray<%}%> fa-2x"></i> | ||
189 | - </a> | ||
190 | - </td> | ||
191 | - <td> | ||
192 | - <!--下面的两个按钮务必保留--> | ||
193 | - <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> | ||
194 | - <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span> | ||
195 | - </td> | ||
196 | - </tr> | ||
197 | - </script> | ||
198 | - </div> | ||
199 | - </div> | ||
200 | - <div class="form-group row"> | ||
201 | - <label class="control-label col-xs-12">{:__('Fieldlist绑定事件示例')}:</label> | ||
202 | - <div class="col-xs-12"> | ||
203 | - <table class="table fieldlist" data-template="eventtpl" data-name="row[event]" id="second-table"> | ||
204 | - <tr> | ||
205 | - <td>{:__('管理员')}</td> | ||
206 | - <td>{:__('图片')}</td> | ||
207 | - <td>{:__('登录时间')}</td> | ||
208 | - <td width="100"></td> | ||
209 | - </tr> | ||
210 | - <tr> | ||
211 | - <td colspan="4"><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></td> | ||
212 | - </tr> | ||
213 | - </table> | ||
214 | - | ||
215 | - <!--请注意实际开发中textarea应该添加个hidden进行隐藏--> | ||
216 | - <textarea name="row[event]" class="form-control" cols="30" rows="5">[{"id":"1","image":"/assets/addons/example/img/200x200.png","time":"2019-06-28 12:05:03"}]</textarea> | ||
217 | - <script id="eventtpl" type="text/html"> | ||
218 | - <tr class="form-inline"> | ||
219 | - <td><input type="text" name="<%=name%>[<%=index%>][id]" class="form-control selectpage" data-source="auth/admin/selectpage" data-field="username" value="<%=row.id%>" placeholder="管理员"/></td> | ||
220 | - <td> | ||
221 | - <input type="hidden" name="<%=name%>[<%=index%>][image]" id="c-image-<%=index%>" value="<%=row.image%>"> | ||
222 | - <!--@formatter:off--> | ||
223 | - <button type="button" id="faupload-image" class="btn btn-danger faupload upload-image" data-input-id="c-image-<%=index%>" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" <%if(row.image){%>style="background-image: url('<%=Fast.api.cdnurl(row.image)%>')"<%}%>></button> | ||
224 | - <!--@formatter:on--> | ||
225 | - </td> | ||
226 | - <td><input type="text" name="<%=name%>[<%=index%>][time]" class="form-control datetimepicker" style="width:120px" value="<%=row.time%>" placeholder="时间"/></td> | ||
227 | - <td> | ||
228 | - <!--下面的两个按钮务必保留--> | ||
229 | - <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> | ||
230 | - <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span> | ||
231 | - </td> | ||
232 | - </tr> | ||
233 | - </script> | ||
234 | - </div> | ||
235 | - </div> | ||
236 | - <div class="form-group row"> | ||
237 | - <label class="control-label col-xs-12"></label> | ||
238 | - <div class="col-xs-12"> | ||
239 | - <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button> | ||
240 | - <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> | ||
241 | - </div> | ||
242 | - </div> | ||
243 | - | ||
244 | - </form> | ||
245 | - </div> | ||
246 | - </div> | ||
247 | - | ||
248 | - </div> | ||
249 | - <div class="col-md-6"> | ||
250 | - <div class="box box-warning"> | ||
251 | - <div class="panel-heading"> | ||
252 | - 自动完成+标签输入示例,<font color="red">只支持FastAdmin1.3.0+</font> {if version_compare($Think.config.fastadmin.version, '1.3.0')<0}<span class="label label-danger">你当前FastAdmin版本不支持</span>{/if} | ||
253 | - </div> | ||
254 | - <div class="panel-body"> | ||
255 | - <div class="alert alert-danger-light"> | ||
256 | - <b>温馨提示</b><br> | ||
257 | - </div> | ||
258 | - <form id="third-form" role="form" data-toggle="validator" method="POST" action=""> | ||
259 | - | ||
260 | - <div class="form-group row"> | ||
261 | - <label class="control-label col-xs-12">自动完成</label> | ||
262 | - <div class="col-xs-12"> | ||
263 | - <input type="text" class="form-control" data-role="autocomplete" data-autocomplete-options='{"url":"example/customform/get_title_list", "minChars":1}'/> | ||
264 | - </div> | ||
265 | - </div> | ||
266 | - <div class="form-group row"> | ||
267 | - <label class="control-label col-xs-12">标签输入 <span class="text-muted small">输入后<code>回车</code>或<code>,</code>确认</span></label> | ||
268 | - <div class="col-xs-12"> | ||
269 | - <input type="text" class="form-control" data-role="tagsinput"/> | ||
270 | - </div> | ||
271 | - </div> | ||
272 | - <div class="form-group row"> | ||
273 | - <label class="control-label col-xs-12">自动完成+标签输入</label> | ||
274 | - <div class="col-xs-12"> | ||
275 | - <input type="text" class="form-control" data-role="tagsinput" data-tagsinput-options='{"minChars":1, "autocomplete":{"url":"example/customform/get_title_list"}}'/> | ||
276 | - </div> | ||
277 | - </div> | ||
278 | - </form> | ||
279 | - </div> | ||
280 | - </div> | ||
281 | - </div> | ||
282 | - <div class="col-md-6"> | ||
283 | - <div class="box box-danger"> | ||
284 | - <div class="panel-heading"> | ||
285 | - 动态显示,<font color="red">只支持FastAdmin1.3.3+</font> {if version_compare($Think.config.fastadmin.version, '1.3.3')<0}<span class="label label-danger">你当前FastAdmin版本不支持</span>{/if} | ||
286 | - </div> | ||
287 | - <div class="panel-body"> | ||
288 | - <form id="fourth-form" role="form" data-toggle="validator" method="POST" action=""> | ||
289 | - | ||
290 | - <div class="form-group row"> | ||
291 | - <label class="control-label col-xs-12">常规使用</label> | ||
292 | - <div class="col-xs-12"> | ||
293 | - <input type="radio" name="row[type]" value="value1" checked/> 类型1 | ||
294 | - <input type="radio" name="row[type]" value="value2"/> 类型2 | ||
295 | - <div data-favisible="type=value1" class="p-3">显示内容1</div> | ||
296 | - <div data-favisible="type=value2" class="p-3">显示内容2</div> | ||
297 | - </div> | ||
298 | - </div> | ||
299 | - <hr> | ||
300 | - <div class="form-group row"> | ||
301 | - <label class="control-label col-xs-12">使用开关组件</label> | ||
302 | - <div class="col-xs-12"> | ||
303 | - | ||
304 | - <input id="c-switch" name="row[switch]" type="hidden" value="0"> | ||
305 | - <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-switch" data-yes="1" data-no="0"> | ||
306 | - <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i> | ||
307 | - </a> | ||
308 | - | ||
309 | - <div data-favisible="switch=1" class="p-3">显示内容隐藏的内容</div> | ||
310 | - </div> | ||
311 | - </div> | ||
312 | - <hr> | ||
313 | - <div class="form-group row"> | ||
314 | - <label class="control-label col-xs-12">组件嵌套</label> | ||
315 | - <div class="col-xs-12"> | ||
316 | - <input type="radio" name="row[mode]" value="value1"/> 模式1 | ||
317 | - <input type="radio" name="row[mode]" value="value2"/> 模式2 | ||
318 | - <div data-favisible="mode=value1" class="p-3"> | ||
319 | - <h4>显示内容1</h4> | ||
320 | - <input id="c-switch1" name="row[switch1]" type="hidden" value="0"> | ||
321 | - <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-switch1" data-yes="1" data-no="0"> | ||
322 | - <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i> | ||
323 | - </a> | ||
324 | - | ||
325 | - <div data-favisible="switch1=1" class="p-3">显示内容隐藏的内容1</div> | ||
326 | - </div> | ||
327 | - <div data-favisible="mode=value2" class="p-3"> | ||
328 | - <h4>显示内容2</h4> | ||
329 | - <input id="c-switch2" name="row[switch2]" type="hidden" value="0"> | ||
330 | - <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-switch2" data-yes="1" data-no="0"> | ||
331 | - <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i> | ||
332 | - </a> | ||
333 | - | ||
334 | - <div data-favisible="switch2=1" class="p-3">显示内容隐藏的内容2</div> | ||
335 | - </div> | ||
336 | - </div> | ||
337 | - </div> | ||
338 | - <hr> | ||
339 | - <div class="form-group row"> | ||
340 | - <label class="control-label col-xs-12">使用内容判断 <span class="text-muted small">只有输入指定的内容才显示</span></label> | ||
341 | - <div class="col-xs-12"> | ||
342 | - <input type="text" class="form-control" name="row[title]" placeholder="请输入abc三个字母"> | ||
343 | - <div data-favisible="title=abc" class="p-3">显示内容隐藏的内容</div> | ||
344 | - </div> | ||
345 | - </div> | ||
346 | - </form> | ||
347 | - </div> | ||
348 | - </div> | ||
349 | - </div> | ||
350 | -</div> |
1 | -<div class="panel panel-default panel-intro"> | ||
2 | - {:build_heading()} | ||
3 | - | ||
4 | - <div class="panel-body"> | ||
5 | - <div id="myTabContent" class="tab-content"> | ||
6 | - <div class="tab-pane fade active in" id="one"> | ||
7 | - <div class="widget-body no-padding"> | ||
8 | - <div id="toolbar" class="toolbar"> | ||
9 | - {:build_toolbar('refresh')} | ||
10 | - </div> | ||
11 | - <table id="table" class="table table-striped table-bordered table-hover" width="100%"> | ||
12 | - | ||
13 | - </table> | ||
14 | - | ||
15 | - </div> | ||
16 | - </div> | ||
17 | - | ||
18 | - </div> | ||
19 | - </div> | ||
20 | -</div> | ||
21 | - | ||
22 | -<script id="customformtpl" type="text/html"> | ||
23 | - <!--form表单必须添加form-commsearch这个类--> | ||
24 | - <form action="" class="form-commonsearch"> | ||
25 | - <div style="border-radius:2px;margin-bottom:10px;background:#f5f5f5;padding:15px 20px;"> | ||
26 | - <h4>自定义搜索表单</h4> | ||
27 | - <hr> | ||
28 | - <div class="row"> | ||
29 | - <div class="col-xs-12 col-sm-6 col-md-3"> | ||
30 | - <div class="form-group"> | ||
31 | - <label class="control-label">ID</label> | ||
32 | - <!--显式的operate操作符--> | ||
33 | - <div class="input-group"> | ||
34 | - <div class="input-group-btn"> | ||
35 | - <select class="form-control operate" data-name="id" style="width:60px;"> | ||
36 | - <option value="=" selected>等于</option> | ||
37 | - <option value=">">大于</option> | ||
38 | - <option value="<">小于</option> | ||
39 | - </select> | ||
40 | - </div> | ||
41 | - <input class="form-control" type="text" name="id" placeholder="" value=""/> | ||
42 | - </div> | ||
43 | - </div> | ||
44 | - </div> | ||
45 | - <div class="col-xs-12 col-sm-6 col-md-3"> | ||
46 | - <div class="form-group"> | ||
47 | - <label class="control-label">标题</label> | ||
48 | - <!--隐式的operate操作符,必须携带一个class为operate隐藏的文本框,且它的data-name="字段",值为操作符--> | ||
49 | - <input class="operate" type="hidden" data-name="title" value="="/> | ||
50 | - <div> | ||
51 | - <input class="form-control" type="text" name="title" placeholder="请输入查找的标题" value=""/> | ||
52 | - </div> | ||
53 | - </div> | ||
54 | - </div> | ||
55 | - <div class="col-xs-12 col-sm-6 col-md-3"> | ||
56 | - <div class="form-group"> | ||
57 | - <label class="control-label">管理员ID</label> | ||
58 | - <div class="row" data-toggle="cxselect" data-selects="group,admin"> | ||
59 | - <div class="col-xs-6"> | ||
60 | - <select class="group form-control" name="group" | ||
61 | - data-url="example/bootstraptable/cxselect?type=group"></select> | ||
62 | - </div> | ||
63 | - <div class="col-xs-6"> | ||
64 | - <select class="admin form-control" name="admin_id" | ||
65 | - data-url="example/bootstraptable/cxselect?type=admin" | ||
66 | - data-query-name="group_id"></select> | ||
67 | - </div> | ||
68 | - <input type="hidden" class="operate" data-name="admin_id" value="="/> | ||
69 | - </div> | ||
70 | - </div> | ||
71 | - </div> | ||
72 | - <div class="col-xs-12 col-sm-6 col-md-3"> | ||
73 | - <div class="form-group"> | ||
74 | - <label class="control-label">用户名</label> | ||
75 | - <input type="hidden" class="operate" data-name="username" value="="/> | ||
76 | - <div> | ||
77 | - <input id="c-category_id" data-source="auth/admin/index" data-primary-key="username" | ||
78 | - data-field="username" class="form-control selectpage" name="username" type="text" | ||
79 | - value="" style="display:block;"> | ||
80 | - </div> | ||
81 | - </div> | ||
82 | - </div> | ||
83 | - | ||
84 | - <div class="col-xs-12 col-sm-6 col-md-3" style="min-height:68px;"> | ||
85 | - <!--这里添加68px是为了避免刷新时出现元素错位闪屏--> | ||
86 | - <div class="form-group"> | ||
87 | - <label class="control-label">IP</label> | ||
88 | - <input type="hidden" class="operate" data-name="ip" value="in"/> | ||
89 | - <div> | ||
90 | - <!--给select一个固定的高度--> | ||
91 | - <!--@formatter:off--> | ||
92 | - <select id="c-flag" class="form-control selectpicker" multiple name="ip" style="height:31px;"> | ||
93 | - {foreach name="ipList" item="vo"} | ||
94 | - <option value="{$key}" {in name="key" value="" }selected{/in}>{$vo}</option> | ||
95 | - {/foreach} | ||
96 | - </select> | ||
97 | - <!--@formatter:on--> | ||
98 | - </div> | ||
99 | - </div> | ||
100 | - </div> | ||
101 | - <div class="col-xs-12 col-sm-6 col-md-3"> | ||
102 | - <div class="form-group"> | ||
103 | - <label class="control-label">创建时间</label> | ||
104 | - <input type="hidden" class="operate" data-name="createtime" value="RANGE"/> | ||
105 | - <div> | ||
106 | - <input type="text" class="form-control datetimerange" name="createtime" value=""/> | ||
107 | - </div> | ||
108 | - </div> | ||
109 | - </div> | ||
110 | - <div class="col-xs-12 col-sm-6 col-md-3"> | ||
111 | - <div class="form-group"> | ||
112 | - <label class="control-label"></label> | ||
113 | - <div class="row"> | ||
114 | - <div class="col-xs-6"> | ||
115 | - <input type="submit" class="btn btn-success btn-block" value="提交"/> | ||
116 | - </div> | ||
117 | - <div class="col-xs-6"> | ||
118 | - <input type="reset" class="btn btn-primary btn-block" value="重置"/> | ||
119 | - </div> | ||
120 | - </div> | ||
121 | - </div> | ||
122 | - </div> | ||
123 | - </div> | ||
124 | - </div> | ||
125 | - </form> | ||
126 | -</script> |
1 | -<style>#cxselect-example textarea{margin:10px 0;}</style> | ||
2 | -<div class="panel panel-default panel-intro"> | ||
3 | - {:build_heading()} | ||
4 | - | ||
5 | - <div class="panel-body"> | ||
6 | - <div id="myTabContent" class="tab-content"> | ||
7 | - <div class="tab-pane fade active in" id="one"> | ||
8 | - <div class="widget-body no-padding" id="cxselect-example"> | ||
9 | - <form id="cxselectform" action=""> | ||
10 | - <div class="row"> | ||
11 | - <div class="col-md-6"> | ||
12 | - | ||
13 | - <div class="panel panel-default"> | ||
14 | - <div class="panel-heading"><b>省市区联动</b>(通过AJAX读取数据)</div> | ||
15 | - <div class="panel-body"> | ||
16 | - <div class="row"> | ||
17 | - <div class="col-xs-9"> | ||
18 | - <div class="form-inline" data-toggle="cxselect" data-selects="province,city,area"> | ||
19 | - <select class="province form-control" name="province" data-url="ajax/area"></select> | ||
20 | - <select class="city form-control" name="city" data-url="ajax/area"></select> | ||
21 | - <select class="area form-control" name="area" data-url="ajax/area"></select> | ||
22 | - </div> | ||
23 | - </div> | ||
24 | - <div class="col-xs-3 text-right"> | ||
25 | - <h6><label class="label label-primary"><i class="fa fa-pencil"></i> 增加</label></h6> | ||
26 | - </div> | ||
27 | - <div class="col-xs-12"> | ||
28 | - <textarea class="form-control" rows="8"> | ||
29 | - </textarea> | ||
30 | - </div> | ||
31 | - </div> | ||
32 | - <div class="row"> | ||
33 | - <div class="col-xs-9"> | ||
34 | - <div class="form-inline" data-toggle="cxselect" data-selects="province,city,area"> | ||
35 | - <select class="province form-control" name="province" data-url="ajax/area"> | ||
36 | - <option value="1964" selected>广东省</option> | ||
37 | - </select> | ||
38 | - <select class="city form-control" name="city" data-url="ajax/area"> | ||
39 | - <option value="1988" selected>深圳市</option> | ||
40 | - </select> | ||
41 | - <select class="area form-control" name="area" data-url="ajax/area"> | ||
42 | - <option value="1991" selected>南山区</option> | ||
43 | - </select> | ||
44 | - </div> | ||
45 | - </div> | ||
46 | - <div class="col-xs-3 text-right"> | ||
47 | - <h6><label class="label label-success"><i class="fa fa-edit"></i> 修改</label></h6> | ||
48 | - </div> | ||
49 | - <div class="col-xs-12"> | ||
50 | - <textarea class="form-control" rows="8"> | ||
51 | - </textarea> | ||
52 | - </div> | ||
53 | - </div> | ||
54 | - </div> | ||
55 | - | ||
56 | - </div> | ||
57 | - </div> | ||
58 | - <div class="col-md-6"> | ||
59 | - <div class="panel panel-default"> | ||
60 | - <div class="panel-heading"><b>类别联动</b>(Ajax读取数据)</div> | ||
61 | - <div class="panel-body"> | ||
62 | - <div class="row"> | ||
63 | - <div class="col-xs-9"> | ||
64 | - <div class="form-inline" data-toggle="cxselect" data-selects="first,second"> | ||
65 | - <select class="first form-control" name="first" data-url="ajax/category?type=page&pid=5"></select> | ||
66 | - <select class="second form-control" name="second" data-url="ajax/category" data-query-name="pid"></select> | ||
67 | - </div> | ||
68 | - </div> | ||
69 | - <div class="col-xs-3 text-right"> | ||
70 | - <h6><label class="label label-primary"><i class="fa fa-pencil"></i> 增加</label></h6> | ||
71 | - </div> | ||
72 | - <div class="col-xs-12"> | ||
73 | - <textarea class="form-control" rows="8"> | ||
74 | - </textarea> | ||
75 | - </div> | ||
76 | - </div> | ||
77 | - <div class="row"> | ||
78 | - <div class="col-xs-9"> | ||
79 | - <div class="form-inline" data-toggle="cxselect" data-selects="first,second"> | ||
80 | - <select class="first form-control" name="first" data-url="ajax/category?type=page&pid=5"> | ||
81 | - <option value="6" selected>网站建站</option> | ||
82 | - </select> | ||
83 | - <select class="second form-control" name="second" data-url="ajax/category" data-query-name="pid"> | ||
84 | - <option value="9" selected>移动端</option> | ||
85 | - </select> | ||
86 | - </div> | ||
87 | - </div> | ||
88 | - <div class="col-xs-3 text-right"> | ||
89 | - <h6><label class="label label-success"><i class="fa fa-edit"></i> 修改</label></h6> | ||
90 | - </div> | ||
91 | - <div class="col-xs-12"> | ||
92 | - <textarea class="form-control" rows="8"> | ||
93 | - </textarea> | ||
94 | - </div> | ||
95 | - </div> | ||
96 | - | ||
97 | - </div> | ||
98 | - </div> | ||
99 | - </div> | ||
100 | - <div class="col-md-6"> | ||
101 | - <div class="panel panel-default"> | ||
102 | - <div class="panel-heading"><b>省市区联动</b>(通过JSON渲染数据)</div> | ||
103 | - <div class="panel-body"> | ||
104 | - <div class="row"> | ||
105 | - <div class="col-xs-9"> | ||
106 | - <!--由于在初始化中修改了默认值,所以这里需要修改-jsonSpace/jsonValue/jsonName的值--> | ||
107 | - <div class="form-inline" data-toggle="cxselect" data-url="__CDN__/assets/libs/fastadmin-cxselect/js/cityData.min.json" | ||
108 | - data-selects="province,city,area" data-json-space="" data-json-name="n" data-json-value=""> | ||
109 | - <select class="province form-control" name="province"></select> | ||
110 | - <select class="city form-control" name="city"></select> | ||
111 | - <select class="area form-control" name="area"></select> | ||
112 | - </div> | ||
113 | - </div> | ||
114 | - <div class="col-xs-3 text-right"> | ||
115 | - <h6><label class="label label-primary"><i class="fa fa-pencil"></i> 增加</label></h6> | ||
116 | - </div> | ||
117 | - <div class="col-xs-12"> | ||
118 | - <textarea class="form-control" rows="8"> | ||
119 | - </textarea> | ||
120 | - </div> | ||
121 | - </div> | ||
122 | - <div class="row"> | ||
123 | - <div class="col-xs-9"> | ||
124 | - <!--由于在初始化中修改了默认值,所以这里需要修改-jsonSpace/jsonValue/jsonName的值--> | ||
125 | - <div class="form-inline" data-toggle="cxselect" data-url="__CDN__/assets/libs/fastadmin-cxselect/js/cityData.min.json" | ||
126 | - data-selects="province,city,area" data-json-space="" data-json-name="n" data-json-value=""> | ||
127 | - <select class="province form-control" data-first-title="选择省"> | ||
128 | - <option value="">请选择</option> | ||
129 | - <option value="浙江省" selected>浙江省</option> | ||
130 | - </select> | ||
131 | - <select class="city form-control" data-first-title="选择市"> | ||
132 | - <option value="">请选择</option> | ||
133 | - <option value="杭州市" selected>杭州市</option> | ||
134 | - </select> | ||
135 | - <select class="area form-control" data-first-title="选择地区"> | ||
136 | - <option value="">请选择</option> | ||
137 | - <option value="西湖区" selected>西湖区</option> | ||
138 | - </select> | ||
139 | - </div> | ||
140 | - </div> | ||
141 | - <div class="col-xs-3 text-right"> | ||
142 | - <h6><label class="label label-success"><i class="fa fa-edit"></i> 修改</label></h6> | ||
143 | - </div> | ||
144 | - <div class="col-xs-12"> | ||
145 | - <textarea class="form-control" rows="8"> | ||
146 | - </textarea> | ||
147 | - </div> | ||
148 | - </div> | ||
149 | - </div> | ||
150 | - | ||
151 | - </div> | ||
152 | - </div> | ||
153 | - </div> | ||
154 | - </form> | ||
155 | - </div> | ||
156 | - </div> | ||
157 | - | ||
158 | - </div> | ||
159 | - </div> | ||
160 | -</div> |
1 | -<style> | ||
2 | - .tab-content > .chart { | ||
3 | - padding: 10px; | ||
4 | - } | ||
5 | -</style> | ||
6 | -<div class="row"> | ||
7 | - <div class="col-lg-3 col-xs-6"> | ||
8 | - <!-- small box --> | ||
9 | - <div class="small-box bg-aqua"> | ||
10 | - <div class="inner"> | ||
11 | - <h3>150</h3> | ||
12 | - | ||
13 | - <p>今日订单</p> | ||
14 | - </div> | ||
15 | - <div class="icon"> | ||
16 | - <i class="fa fa-shopping-cart"></i> | ||
17 | - </div> | ||
18 | - <a href="#" class="small-box-footer">更多 <i class="fa fa-arrow-circle-right"></i></a> | ||
19 | - </div> | ||
20 | - </div> | ||
21 | - <!-- ./col --> | ||
22 | - <div class="col-lg-3 col-xs-6"> | ||
23 | - <!-- small box --> | ||
24 | - <div class="small-box bg-green"> | ||
25 | - <div class="inner"> | ||
26 | - <h3>53<sup style="font-size: 20px">%</sup></h3> | ||
27 | - | ||
28 | - <p>同比增长率</p> | ||
29 | - </div> | ||
30 | - <div class="icon"> | ||
31 | - <i class="fa fa-area-chart"></i> | ||
32 | - </div> | ||
33 | - <a href="#" class="small-box-footer">更多 <i class="fa fa-arrow-circle-right"></i></a> | ||
34 | - </div> | ||
35 | - </div> | ||
36 | - <!-- ./col --> | ||
37 | - <div class="col-lg-3 col-xs-6"> | ||
38 | - <!-- small box --> | ||
39 | - <div class="small-box bg-yellow"> | ||
40 | - <div class="inner"> | ||
41 | - <h3>44</h3> | ||
42 | - | ||
43 | - <p>今日注册用户数</p> | ||
44 | - </div> | ||
45 | - <div class="icon"> | ||
46 | - <i class="fa fa-users"></i> | ||
47 | - </div> | ||
48 | - <a href="#" class="small-box-footer">更多 <i class="fa fa-arrow-circle-right"></i></a> | ||
49 | - </div> | ||
50 | - </div> | ||
51 | - <!-- ./col --> | ||
52 | - <div class="col-lg-3 col-xs-6"> | ||
53 | - <!-- small box --> | ||
54 | - <div class="small-box bg-red"> | ||
55 | - <div class="inner"> | ||
56 | - <h3>65</h3> | ||
57 | - | ||
58 | - <p>唯一访客用户</p> | ||
59 | - </div> | ||
60 | - <div class="icon"> | ||
61 | - <i class="fa fa-user"></i> | ||
62 | - </div> | ||
63 | - <a href="#" class="small-box-footer">更多 <i class="fa fa-arrow-circle-right"></i></a> | ||
64 | - </div> | ||
65 | - </div> | ||
66 | - <!-- ./col --> | ||
67 | -</div> | ||
68 | -<!-- /.row --> | ||
69 | -<!-- Main row --> | ||
70 | -<div class="row" style="margin-bottom:5px;"> | ||
71 | - <!-- Left col --> | ||
72 | - <section class="col-lg-7 connectedSortable"> | ||
73 | - <!-- Custom tabs (Charts with tabs)--> | ||
74 | - <div class="nav-tabs-custom charts-custom"> | ||
75 | - <!-- Tabs within a box --> | ||
76 | - <ul class="nav nav-tabs pull-right"> | ||
77 | - <li class="active"><a href="#line-chart" data-toggle="tab">折线图</a></li> | ||
78 | - <li><a href="#area-chart" data-toggle="tab">区域图</a></li> | ||
79 | - <li class="pull-left header"><i class="fa fa-inbox"></i> 销售趋势</li> | ||
80 | - </ul> | ||
81 | - <div class="tab-content no-padding"> | ||
82 | - <!-- Morris chart - Sales --> | ||
83 | - <div class="chart tab-pane active" id="line-chart" style="position: relative; height: 300px;"></div> | ||
84 | - <div class="chart tab-pane" id="area-chart" style="position: relative; height: 300px;"></div> | ||
85 | - </div> | ||
86 | - </div> | ||
87 | - <div class="nav-tabs-custom charts-custom"> | ||
88 | - <!-- Tabs within a box --> | ||
89 | - <ul class="nav nav-tabs pull-right"> | ||
90 | - <li class="active"><a href="#pie-chart" data-toggle="tab">饼图</a></li> | ||
91 | - <li><a href="#bar-chart" data-toggle="tab">柱状图</a></li> | ||
92 | - <li class="pull-left header"><i class="fa fa-inbox"></i> 访问记录</li> | ||
93 | - </ul> | ||
94 | - <div class="tab-content no-padding"> | ||
95 | - <!-- Morris chart - Sales --> | ||
96 | - <div class="chart tab-pane active" id="pie-chart" style="position: relative; height: 300px;"></div> | ||
97 | - <div class="chart tab-pane" id="bar-chart" style="position: relative; height: 300px;"></div> | ||
98 | - </div> | ||
99 | - </div> | ||
100 | - <!-- /.nav-tabs-custom --> | ||
101 | - | ||
102 | - </section> | ||
103 | - <!-- /.Left col --> | ||
104 | - <section class="col-lg-5 connectedSortable"> | ||
105 | - | ||
106 | - <!-- Map box --> | ||
107 | - <div class="box box-solid bg-light-blue-gradient"> | ||
108 | - <div class="box-header"> | ||
109 | - <!-- tools box --> | ||
110 | - <div class="pull-right box-tools"> | ||
111 | - </div> | ||
112 | - <!-- /. tools --> | ||
113 | - | ||
114 | - <i class="fa fa-map-marker"></i> | ||
115 | - | ||
116 | - <h3 class="box-title"> | ||
117 | - 访客分布 | ||
118 | - </h3> | ||
119 | - </div> | ||
120 | - <div class="box-body"> | ||
121 | - <div id="simplebar-chart" style="height: 250px; width: 100%;"></div> | ||
122 | - </div> | ||
123 | - <!-- /.box-body--> | ||
124 | - <div class="box-footer no-border"> | ||
125 | - <div class="row"> | ||
126 | - <div class="col-xs-12 text-center"> | ||
127 | - <div class="knob-label">统计最近一周访客的记录</div> | ||
128 | - </div> | ||
129 | - <!-- ./col --> | ||
130 | - </div> | ||
131 | - <!-- /.row --> | ||
132 | - </div> | ||
133 | - </div> | ||
134 | - <!-- /.box --> | ||
135 | - | ||
136 | - <!-- solid sales graph --> | ||
137 | - <div class="box box-solid bg-teal-gradient"> | ||
138 | - <div class="box-header"> | ||
139 | - <i class="fa fa-th"></i> | ||
140 | - | ||
141 | - <h3 class="box-title">订单趋势</h3> | ||
142 | - | ||
143 | - <div class="box-tools pull-right"> | ||
144 | - </div> | ||
145 | - </div> | ||
146 | - <div class="box-body border-radius-none"> | ||
147 | - <div class="chart" id="smoothline-chart" style="height: 250px;"></div> | ||
148 | - </div> | ||
149 | - <!-- /.box-body--> | ||
150 | - <div class="box-footer no-border"> | ||
151 | - <div class="row"> | ||
152 | - <div class="col-xs-12 text-center"> | ||
153 | - <div class="knob-label">统计最近一周订单的趋势</div> | ||
154 | - </div> | ||
155 | - <!-- ./col --> | ||
156 | - </div> | ||
157 | - <!-- /.row --> | ||
158 | - </div> | ||
159 | - </div> | ||
160 | - <!-- /.box --> | ||
161 | - | ||
162 | - </section> | ||
163 | - <!-- right col --> | ||
164 | -</div> | ||
165 | -<!-- /.row (main row) --> |
1 | -<div class="panel panel-default panel-intro"> | ||
2 | - <div class="panel-heading"> | ||
3 | - <div class="panel-lead"><em>多表格(Multitable)</em>用于展示在一个页面展示多个表格数据,并且每次切换时刷新</div> | ||
4 | - <ul class="nav nav-tabs"> | ||
5 | - <li class="active"><a href="#first" data-toggle="tab">表格1</a></li> | ||
6 | - <li><a href="#second" data-toggle="tab">表格2</a></li> | ||
7 | - </ul> | ||
8 | - </div> | ||
9 | - <div class="panel-body"> | ||
10 | - <div id="myTabContent" class="tab-content"> | ||
11 | - <div class="tab-pane fade active in" id="first"> | ||
12 | - <div id="toolbar1" class="toolbar"> | ||
13 | - {:build_toolbar('refresh')} | ||
14 | - </div> | ||
15 | - <table id="table1" class="table table-striped table-bordered table-hover" width="100%"> | ||
16 | - </table> | ||
17 | - </div> | ||
18 | - <div class="tab-pane fade" id="second"> | ||
19 | - <div id="toolbar2" class="toolbar"> | ||
20 | - {:build_toolbar('refresh')} | ||
21 | - </div> | ||
22 | - <table id="table2" class="table table-striped table-bordered table-hover" width="100%"> | ||
23 | - </table> | ||
24 | - </div> | ||
25 | - </div> | ||
26 | - </div> | ||
27 | -</div> |
1 | -<div class="panel panel-default panel-intro"> | ||
2 | - {:build_heading()} | ||
3 | - | ||
4 | - <div class="panel-body"> | ||
5 | - <div id="myTabContent" class="tab-content"> | ||
6 | - <div class="tab-pane fade active in" id="one"> | ||
7 | - <div class="widget-body no-padding"> | ||
8 | - <div id="toolbar" class="toolbar"> | ||
9 | - {:build_toolbar('refresh,delete')} | ||
10 | - </div> | ||
11 | - <table id="table" class="table table-striped table-bordered table-hover" width="100%"> | ||
12 | - | ||
13 | - </table> | ||
14 | - | ||
15 | - | ||
16 | - </div> | ||
17 | - </div> | ||
18 | - | ||
19 | - </div> | ||
20 | - </div> | ||
21 | -</div> |
1 | -<div class="row"> | ||
2 | - <div class="col-xs-12 col-sm-6 col-md-5 col-lg-4"> | ||
3 | - <div class="panel panel-default panel-intro"> | ||
4 | - <div class="panel-body"> | ||
5 | - <div id="1" class="tab-content"> | ||
6 | - <div class="tab-pane fade active in" id="one"> | ||
7 | - <div class="widget-body no-padding"> | ||
8 | - <div id="toolbar1" class="toolbar"> | ||
9 | - {:build_toolbar('refresh')} | ||
10 | - </div> | ||
11 | - <table id="table1" class="table table-striped table-bordered table-hover" width="100%"> | ||
12 | - | ||
13 | - </table> | ||
14 | - | ||
15 | - | ||
16 | - </div> | ||
17 | - </div> | ||
18 | - | ||
19 | - </div> | ||
20 | - </div> | ||
21 | - </div> | ||
22 | - </div> | ||
23 | - <div class="col-xs-12 col-sm-6 col-md-7 col-lg-8"> | ||
24 | - <div class="panel panel-default panel-intro"> | ||
25 | - <div class="panel-body"> | ||
26 | - <div id="myTabContent2" class="tab-content"> | ||
27 | - <div class="tab-pane fade active in" id="two"> | ||
28 | - <div class="widget-body no-padding"> | ||
29 | - <div id="toolbar2" class="toolbar"> | ||
30 | - {:build_toolbar('refresh')} | ||
31 | - </div> | ||
32 | - <table id="table2" class="table table-striped table-bordered table-hover" width="100%"> | ||
33 | - | ||
34 | - </table> | ||
35 | - | ||
36 | - | ||
37 | - </div> | ||
38 | - </div> | ||
39 | - | ||
40 | - </div> | ||
41 | - </div> | ||
42 | - </div> | ||
43 | - </div> | ||
44 | -</div> |
1 | -<div class="panel panel-default panel-intro"> | ||
2 | - {:build_heading()} | ||
3 | - | ||
4 | - <div class="panel-body"> | ||
5 | - <div id="myTabContent" class="tab-content"> | ||
6 | - <div class="tab-pane fade active in" id="one"> | ||
7 | - <div class="widget-body no-padding"> | ||
8 | - <div id="toolbar" class="toolbar"> | ||
9 | - {:build_toolbar('refresh,delete')} | ||
10 | - <a class="btn btn-info btn-disabled disabled btn-selected" href="javascript:;"><i class="fa fa-leaf"></i> 获取选中项</a> | ||
11 | - <a class="btn btn-success btn-toggle-view" href="javascript:;"><i class="fa fa-leaf"></i> 切换视图</a> | ||
12 | - </div> | ||
13 | - <table id="table" class="table table-striped table-hover" width="100%"> | ||
14 | - | ||
15 | - </table> | ||
16 | - | ||
17 | - </div> | ||
18 | - </div> | ||
19 | - | ||
20 | - </div> | ||
21 | - </div> | ||
22 | -</div> | ||
23 | -<style type="text/css"> | ||
24 | - .example { | ||
25 | - height:100%;position: relative; | ||
26 | - } | ||
27 | - .example > span { | ||
28 | - position:absolute;left:15px;top:15px; | ||
29 | - } | ||
30 | -</style> | ||
31 | - | ||
32 | -<script id="itemtpl" type="text/html"> | ||
33 | - <!-- | ||
34 | - 如果启用了templateView,默认调用的是itemtpl这个模板,可以通过设置templateFormatter来修改 | ||
35 | - 在当前模板中可以使用三个变量(item:行数据,i:当前第几行,data:所有的行数据) | ||
36 | - 此模板引擎使用的是art-template的native,可参考官方文档 | ||
37 | - --> | ||
38 | - | ||
39 | - <div class="col-sm-4 col-md-3"> | ||
40 | - <!--下面四行是为了展示随机图片和标签,可移除--> | ||
41 | - <% var imagearr = ['https://cdn.fastadmin.net/uploads/addons/blog.png', 'https://cdn.fastadmin.net/uploads/addons/cms.png', 'https://cdn.fastadmin.net/uploads/addons/vote.png', 'https://cdn.fastadmin.net/uploads/addons/blog.png', 'https://cdn.fastadmin.net/uploads/addons/alisms.png']; %> | ||
42 | - <% var image = imagearr[item.id % 5]; %> | ||
43 | - <% var labelarr = ['primary', 'success', 'info', 'danger', 'warning']; %> | ||
44 | - <% var label = labelarr[item.id % 5]; %> | ||
45 | - <div class="thumbnail example"> | ||
46 | - <span class="btn btn-<%=label%>">ID:<%=item.id%></span> | ||
47 | - <img src="<%=image%>" style="width:100%;" alt="<%=item.title%>"> | ||
48 | - <div class="caption"> | ||
49 | - <h4><%=item.title?item.title:'无'%></h4> | ||
50 | - <p class="text-muted">操作者IP:<%=item.ip%></p> | ||
51 | - <p class="text-muted">操作时间:<%=Moment(item.createtime*1000).format("YYYY-MM-DD HH:mm:ss")%></p> | ||
52 | - <p> | ||
53 | - <!--详情的事件需要在JS中手动绑定--> | ||
54 | - <a href="#" class="btn btn-primary btn-success btn-detail" data-id="<%=item.id%>"><i class="fa fa-camera"></i> 详情</a> | ||
55 | - | ||
56 | - <!--如果需要响应编辑或删除事件,可以给元素添加 btn-edit或btn-del的类和data-id这个属性值--> | ||
57 | - <a href="#" class="btn btn-primary btn-edit" data-id="<%=item.id%>"><i class="fa fa-pencil"></i> 编辑</a> | ||
58 | - <a href="#" class="btn btn-danger btn-del" data-id="<%=item.id%>"><i class="fa fa-times"></i> 删除</a> | ||
59 | - <span class="pull-right" style="margin-top:10px;"> | ||
60 | - <!--如果需要多选操作,请确保有下面的checkbox元素存在,可移除--> | ||
61 | - <input name="checkbox" data-id="<%=item.id%>" type="checkbox" /> | ||
62 | - </span> | ||
63 | - </p> | ||
64 | - </div> | ||
65 | - </div> | ||
66 | - </div> | ||
67 | -</script> |
@@ -30,10 +30,6 @@ return [ | @@ -30,10 +30,6 @@ return [ | ||
30 | ], | 30 | ], |
31 | ], | 31 | ], |
32 | 'route' => [ | 32 | 'route' => [ |
33 | - '/example$' => 'example/index/index', | ||
34 | - '/example/d/[:name]' => 'example/demo/index', | ||
35 | - '/example/d1/[:name]' => 'example/demo/demo1', | ||
36 | - '/example/d2/[:name]' => 'example/demo/demo2', | ||
37 | '/qrcode$' => 'qrcode/index/index', | 33 | '/qrcode$' => 'qrcode/index/index', |
38 | '/qrcode/build$' => 'qrcode/index/build', | 34 | '/qrcode/build$' => 'qrcode/index/build', |
39 | ], | 35 | ], |
1 | -html, | ||
2 | -body { | ||
3 | - height: 100%; | ||
4 | -} | ||
5 | - | ||
6 | -body { | ||
7 | - padding-top: 50px; /* Required padding for .navbar-fixed-top. Remove if using .navbar-static-top. Change if height of navigation changes. */ | ||
8 | - -webkit-font-smoothing: antialiased; | ||
9 | - -moz-osx-font-smoothing: grayscale; | ||
10 | - font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; | ||
11 | -} | ||
12 | - | ||
13 | -.img-addon { | ||
14 | - margin-bottom: 10px; | ||
15 | - width:100%; | ||
16 | -} | ||
17 | - | ||
18 | -.img-hover:hover { | ||
19 | - opacity: 0.8; | ||
20 | -} | ||
21 | - | ||
22 | -.display-1 { | ||
23 | - font-size:44px; | ||
24 | -} | ||
25 | -.display-4 { | ||
26 | - font-size:24px; | ||
27 | - line-height:32px; | ||
28 | -} | ||
29 | - | ||
30 | -/* Home Page Carousel */ | ||
31 | - | ||
32 | -header.carousel { | ||
33 | - height: 50%; | ||
34 | -} | ||
35 | - | ||
36 | -header.carousel .item, | ||
37 | -header.carousel .item.active, | ||
38 | -header.carousel .carousel-inner { | ||
39 | - height: 100%; | ||
40 | -} | ||
41 | - | ||
42 | -header.carousel .fill { | ||
43 | - width: 100%; | ||
44 | - height: 100%; | ||
45 | -} | ||
46 | - | ||
47 | -/* 404 Page Styles */ | ||
48 | - | ||
49 | -.error-404 { | ||
50 | - font-size: 100px; | ||
51 | -} | ||
52 | - | ||
53 | -/* Pricing Page Styles */ | ||
54 | - | ||
55 | -.price { | ||
56 | - display: block; | ||
57 | - font-size: 50px; | ||
58 | - line-height: 50px; | ||
59 | -} | ||
60 | - | ||
61 | -.price sup { | ||
62 | - top: -20px; | ||
63 | - left: 2px; | ||
64 | - font-size: 20px; | ||
65 | -} | ||
66 | - | ||
67 | -.period { | ||
68 | - display: block; | ||
69 | - font-style: italic; | ||
70 | -} | ||
71 | - | ||
72 | -/* Footer Styles */ | ||
73 | - | ||
74 | -footer { | ||
75 | - margin: 50px 0; | ||
76 | -} | ||
77 | - | ||
78 | -/* Responsive Styles */ | ||
79 | - | ||
80 | -@media(max-width:991px) { | ||
81 | - .customer-img, | ||
82 | - .img-related { | ||
83 | - margin-bottom: 30px; | ||
84 | - } | ||
85 | -} | ||
86 | - | ||
87 | -@media(max-width:767px) { | ||
88 | - .img-addon { | ||
89 | - margin-bottom: 15px; | ||
90 | - } | ||
91 | - | ||
92 | - header.carousel .carousel { | ||
93 | - height: 70%; | ||
94 | - } | ||
95 | -} | ||
96 | -.carousel-body { | ||
97 | - position:absolute; | ||
98 | - width: 100%; | ||
99 | - top:25%; | ||
100 | - text-align:center; | ||
101 | - color:#fff; | ||
102 | -} | ||
103 | - | ||
104 | -.addonlist a > p{ | ||
105 | - margin-bottom:15px; | ||
106 | -} |

656 字节

17.6 KB
public/assets/addons/example/js/async.js
已删除
100644 → 0
1 | -/** @license | ||
2 | - * RequireJS plugin for async dependency load like JSONP and Google Maps | ||
3 | - * Author: Miller Medeiros | ||
4 | - * Version: 0.1.2 (2014/02/24) | ||
5 | - * Released under the MIT license | ||
6 | - */ | ||
7 | -define(function(){ | ||
8 | - | ||
9 | - var DEFAULT_PARAM_NAME = 'callback', | ||
10 | - _uid = 0; | ||
11 | - | ||
12 | - function injectScript(src){ | ||
13 | - var s, t; | ||
14 | - s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = src; | ||
15 | - t = document.getElementsByTagName('script')[0]; t.parentNode.insertBefore(s,t); | ||
16 | - } | ||
17 | - | ||
18 | - function formatUrl(name, id){ | ||
19 | - var paramRegex = /!(.+)/, | ||
20 | - url = name.replace(paramRegex, ''), | ||
21 | - param = (paramRegex.test(name))? name.replace(/.+!/, '') : DEFAULT_PARAM_NAME; | ||
22 | - url += (url.indexOf('?') < 0)? '?' : '&'; | ||
23 | - return url + param +'='+ id; | ||
24 | - } | ||
25 | - | ||
26 | - function uid() { | ||
27 | - _uid += 1; | ||
28 | - return '__async_req_'+ _uid +'__'; | ||
29 | - } | ||
30 | - | ||
31 | - return{ | ||
32 | - load : function(name, req, onLoad, config){ | ||
33 | - if(config.isBuild){ | ||
34 | - onLoad(null); //avoid errors on the optimizer | ||
35 | - }else{ | ||
36 | - var id = uid(); | ||
37 | - //create a global variable that stores onLoad so callback | ||
38 | - //function can define new module after async load | ||
39 | - window[id] = onLoad; | ||
40 | - injectScript(formatUrl(req.toUrl(name), id)); | ||
41 | - } | ||
42 | - } | ||
43 | - }; | ||
44 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function ($, undefined, Backend, Table, Form, Template) { | ||
2 | - | ||
3 | - var Controller = { | ||
4 | - index: function () { | ||
5 | - // 初始化表格参数配置 | ||
6 | - Table.api.init({ | ||
7 | - extend: { | ||
8 | - index_url: 'example/bootstraptable/index', | ||
9 | - add_url: '', | ||
10 | - edit_url: 'example/bootstraptable/edit', | ||
11 | - del_url: 'example/bootstraptable/del', | ||
12 | - multi_url: '', | ||
13 | - } | ||
14 | - }); | ||
15 | - | ||
16 | - var table = $("#table"); | ||
17 | - | ||
18 | - //在普通搜索提交搜索前 | ||
19 | - table.on('common-search.bs.table', function (event, table, query) { | ||
20 | - //这里可以获取到普通搜索表单中字段的查询条件 | ||
21 | - console.log(query); | ||
22 | - }); | ||
23 | - | ||
24 | - //在普通搜索渲染后 | ||
25 | - table.on('post-common-search.bs.table', function (event, table) { | ||
26 | - var form = $("form", table.$commonsearch); | ||
27 | - $("input[name='title']", form).addClass("selectpage").data("source", "example/bootstraptable/selectpage").data("primaryKey", "title").data("field", "title").data("orderBy", "id desc"); | ||
28 | - $("input[name='username']", form).addClass("selectpage").data("source", "auth/admin/index").data("primaryKey", "username").data("field", "username").data("orderBy", "id desc"); | ||
29 | - Form.events.cxselect(form); | ||
30 | - Form.events.selectpage(form); | ||
31 | - }); | ||
32 | - | ||
33 | - //在表格内容渲染完成后回调的事件 | ||
34 | - table.on('post-body.bs.table', function (e, settings, json, xhr) { | ||
35 | - console.log(e, settings, json, xhr); | ||
36 | - }); | ||
37 | - | ||
38 | - //当表格数据加载完成时 | ||
39 | - table.on('load-success.bs.table', function (e, data) { | ||
40 | - //这里可以获取从服务端获取的JSON数据 | ||
41 | - console.log(data); | ||
42 | - //这里我们手动设置底部的值 | ||
43 | - $("#money").text(data.extend.money); | ||
44 | - $("#price").text(data.extend.price); | ||
45 | - }); | ||
46 | - | ||
47 | - // 初始化表格 | ||
48 | - // 这里使用的是Bootstrap-table插件渲染表格 | ||
49 | - // 相关文档:https://doc.fastadmin.net/doc/table.html | ||
50 | - table.bootstrapTable({ | ||
51 | - //表格参数可以参考:https://doc.fastadmin.net/doc/190.html | ||
52 | - url: $.fn.bootstrapTable.defaults.extend.index_url, | ||
53 | - columns: [ | ||
54 | - [ | ||
55 | - //更多列参数可以参考:https://doc.fastadmin.net/doc/191.html | ||
56 | - //该列为复选框字段,如果后台的返回state值将会默认选中 | ||
57 | - {field: 'state', checkbox: true,}, | ||
58 | - //sortable为是否排序,operate为搜索时的操作符,visible表示是否可见 | ||
59 | - {field: 'id', title: 'ID', sortable: true, operate: false}, | ||
60 | - //直接响应搜索 | ||
61 | - {field: 'username', title: __('管理员'), formatter: Table.api.formatter.search}, | ||
62 | - //模糊搜索 | ||
63 | - {field: 'title', title: __('Title'), operate: 'LIKE %...%', placeholder: '模糊搜索,*表示任意字符', width: '280px'}, | ||
64 | - //通过Ajax渲染searchList,也可以使用JSON数据 | ||
65 | - { | ||
66 | - field: 'url', | ||
67 | - title: __('Url'), | ||
68 | - align: 'left', | ||
69 | - searchList: $.getJSON('example/bootstraptable/searchlist?search=a&field=row[user_id]'), | ||
70 | - formatter: Controller.api.formatter.url, | ||
71 | - addClass: "selectpicker" | ||
72 | - }, | ||
73 | - //点击IP时同时执行搜索此IP | ||
74 | - { | ||
75 | - field: 'ip', | ||
76 | - title: __('IP'), | ||
77 | - events: Controller.api.events.ip, | ||
78 | - formatter: Controller.api.formatter.ip | ||
79 | - }, | ||
80 | - //自定义栏位,custom是不存在的字段 | ||
81 | - {field: 'custom', title: __('切换'), operate: false, formatter: Controller.api.formatter.custom}, | ||
82 | - { | ||
83 | - field: 'admin_id', title: __('联动搜索'), searchList: function (column) { | ||
84 | - return Template('categorytpl', {}); | ||
85 | - }, formatter: function (value, row, index) { | ||
86 | - return '无'; | ||
87 | - }, visible: false | ||
88 | - }, | ||
89 | - //启用时间段搜索 | ||
90 | - { | ||
91 | - field: 'createtime', | ||
92 | - title: __('Update time'), | ||
93 | - sortable: true, | ||
94 | - formatter: Table.api.formatter.datetime, | ||
95 | - operate: 'RANGE', | ||
96 | - addclass: 'datetimerange' | ||
97 | - }, | ||
98 | - //操作栏,默认有编辑、删除或排序按钮,可自定义配置buttons来扩展按钮 | ||
99 | - { | ||
100 | - field: 'operate', | ||
101 | - width: "150px", | ||
102 | - title: __('Operate'), | ||
103 | - table: table, | ||
104 | - events: Table.api.events.operate, | ||
105 | - buttons: [ | ||
106 | - { | ||
107 | - name: 'click', | ||
108 | - title: __('点击执行事件'), | ||
109 | - classname: 'btn btn-xs btn-info btn-click', | ||
110 | - icon: 'fa fa-leaf', | ||
111 | - // dropdown: '更多',//如果包含dropdown,将会以下拉列表的形式展示 | ||
112 | - click: function (data) { | ||
113 | - Layer.alert("点击按钮执行的事件"); | ||
114 | - } | ||
115 | - }, | ||
116 | - { | ||
117 | - name: 'detail', | ||
118 | - title: __('弹出窗口打开'), | ||
119 | - classname: 'btn btn-xs btn-primary btn-dialog', | ||
120 | - icon: 'fa fa-list', | ||
121 | - url: 'example/bootstraptable/detail', | ||
122 | - callback: function (data) { | ||
123 | - Layer.alert("接收到回传数据:" + JSON.stringify(data), {title: "回传数据"}); | ||
124 | - } | ||
125 | - }, | ||
126 | - { | ||
127 | - name: 'ajax', | ||
128 | - title: __('发送Ajax'), | ||
129 | - classname: 'btn btn-xs btn-success btn-magic btn-ajax', | ||
130 | - icon: 'fa fa-magic', | ||
131 | - confirm: '确认发送Ajax请求?', | ||
132 | - url: 'example/bootstraptable/detail', | ||
133 | - success: function (data, ret) { | ||
134 | - Layer.alert(ret.msg + ",返回数据:" + JSON.stringify(data)); | ||
135 | - //如果需要阻止成功提示,则必须使用return false; | ||
136 | - //return false; | ||
137 | - }, | ||
138 | - error: function (data, ret) { | ||
139 | - console.log(data, ret); | ||
140 | - Layer.alert(ret.msg); | ||
141 | - return false; | ||
142 | - } | ||
143 | - }, | ||
144 | - { | ||
145 | - name: 'addtabs', | ||
146 | - title: __('新选项卡中打开'), | ||
147 | - classname: 'btn btn-xs btn-warning btn-addtabs', | ||
148 | - icon: 'fa fa-folder-o', | ||
149 | - url: 'example/bootstraptable/detail' | ||
150 | - } | ||
151 | - ], | ||
152 | - formatter: Table.api.formatter.operate | ||
153 | - }, | ||
154 | - ], | ||
155 | - ], | ||
156 | - //更多配置参数可参考:https://doc.fastadmin.net/doc/190.html | ||
157 | - //亦可以参考require-table.js中defaults的配置 | ||
158 | - //快捷搜索,这里可在控制器定义快捷搜索的字段 | ||
159 | - search: true, | ||
160 | - //启用普通表单搜索 | ||
161 | - commonSearch: true, | ||
162 | - //显示导出按钮 | ||
163 | - showExport: true, | ||
164 | - //启用跨页选择 | ||
165 | - maintainSelected: true, | ||
166 | - //启用固定列 | ||
167 | - fixedColumns: true, | ||
168 | - //固定左侧列数 | ||
169 | - fixedNumber: 3, | ||
170 | - //固定右侧列数 | ||
171 | - fixedRightNumber: 1, | ||
172 | - //导出类型 | ||
173 | - exportDataType: "all", //共有basic, all, selected三种值 basic当前页 all全部 selected仅选中 | ||
174 | - //导出下拉列表选项 | ||
175 | - exportTypes: ['json', 'xml', 'csv', 'txt', 'doc', 'excel'], | ||
176 | - //可以控制是否默认显示搜索单表,false则隐藏,默认为false | ||
177 | - searchFormVisible: true, | ||
178 | - queryParams: function (params) { | ||
179 | - //这里可以追加搜索条件 | ||
180 | - var filter = JSON.parse(params.filter); | ||
181 | - var op = JSON.parse(params.op); | ||
182 | - //这里可以动态赋值,比如从URL中获取admin_id的值,filter.admin_id=Fast.api.query('admin_id'); | ||
183 | - filter.admin_id = 1; | ||
184 | - op.admin_id = "="; | ||
185 | - params.filter = JSON.stringify(filter); | ||
186 | - params.op = JSON.stringify(op); | ||
187 | - return params; | ||
188 | - }, | ||
189 | - }); | ||
190 | - | ||
191 | - // 为表格绑定事件 | ||
192 | - Table.api.bindevent(table); | ||
193 | - | ||
194 | - // 监听下拉列表改变的事件 | ||
195 | - $(document).on('change', 'select[name=admin]', function () { | ||
196 | - $("input[name='admin_id']").val($(this).val()); | ||
197 | - }); | ||
198 | - | ||
199 | - //自定义Tab筛选条件 | ||
200 | - $('.panel-heading .nav-custom-condition a[data-toggle="tab"]', table.closest(".panel-intro")).on('shown.bs.tab', function (e) { | ||
201 | - var value = $(this).data("value"); | ||
202 | - var options = table.bootstrapTable('getOptions'); | ||
203 | - var queryParams = options.queryParams; | ||
204 | - options.pageNumber = 1; | ||
205 | - options.queryParams = function (params) { | ||
206 | - //这一行必须要存在,否则在点击下一页时会丢失搜索栏数据 | ||
207 | - params = queryParams(params); | ||
208 | - | ||
209 | - //如果希望追加搜索条件,可使用 | ||
210 | - var filter = params.filter ? JSON.parse(params.filter) : {}; | ||
211 | - var op = params.op ? JSON.parse(params.op) : {}; | ||
212 | - if (value) { | ||
213 | - //这里可以自定义多个筛选条件 | ||
214 | - filter.admin_id = value; | ||
215 | - op.admin_id = '='; | ||
216 | - } else { | ||
217 | - //选全部时要移除相应的条件 | ||
218 | - delete filter.admin_id; | ||
219 | - delete op.admin_id; | ||
220 | - } | ||
221 | - | ||
222 | - params.filter = JSON.stringify(filter); | ||
223 | - params.op = JSON.stringify(op); | ||
224 | - | ||
225 | - //如果希望忽略搜索栏搜索条件,可使用 | ||
226 | - //params.filter = JSON.stringify(value?{admin_id: value}:{}); | ||
227 | - //params.op = JSON.stringify(value?{admin_id: '='}:{}); | ||
228 | - return params; | ||
229 | - }; | ||
230 | - | ||
231 | - table.trigger("uncheckbox"); | ||
232 | - table.bootstrapTable('refresh', {pageNumber: 1}); | ||
233 | - return false; | ||
234 | - }); | ||
235 | - | ||
236 | - // 指定搜索条件 | ||
237 | - $(document).on("click", ".btn-singlesearch", function () { | ||
238 | - var options = table.bootstrapTable('getOptions'); | ||
239 | - var queryParams = options.queryParams; | ||
240 | - options.pageNumber = 1; | ||
241 | - options.queryParams = function (params) { | ||
242 | - //这一行必须要存在,否则在点击下一页时会丢失搜索栏数据 | ||
243 | - params = queryParams(params); | ||
244 | - | ||
245 | - //如果希望追加搜索条件,可使用 | ||
246 | - var filter = params.filter ? JSON.parse(params.filter) : {}; | ||
247 | - var op = params.op ? JSON.parse(params.op) : {}; | ||
248 | - filter.url = 'login'; | ||
249 | - op.url = 'like'; | ||
250 | - | ||
251 | - params.filter = JSON.stringify(filter); | ||
252 | - params.op = JSON.stringify(op); | ||
253 | - | ||
254 | - //如果希望忽略搜索栏搜索条件,可使用 | ||
255 | - //params.filter = JSON.stringify({url: 'login'}); | ||
256 | - //params.op = JSON.stringify({url: 'like'}); | ||
257 | - return params; | ||
258 | - }; | ||
259 | - table.bootstrapTable('refresh', {}); | ||
260 | - Toastr.info("当前执行的是自定义搜索,搜索URL中包含login的数据"); | ||
261 | - return false; | ||
262 | - }); | ||
263 | - | ||
264 | - // 获取选中项 | ||
265 | - $(document).on("click", ".btn-selected", function () { | ||
266 | - Layer.alert(JSON.stringify(Table.api.selecteddata(table))); | ||
267 | - }); | ||
268 | - | ||
269 | - // 启动和暂停按钮 | ||
270 | - $(document).on("click", ".btn-start,.btn-pause", function () { | ||
271 | - //在table外不可以使用添加.btn-change的方法 | ||
272 | - //只能自己调用Table.api.multi实现 | ||
273 | - //如果操作全部则ids可以置为空 | ||
274 | - var ids = Table.api.selectedids(table); | ||
275 | - Table.api.multi("changestatus", ids.join(","), table, this); | ||
276 | - }); | ||
277 | - | ||
278 | - }, | ||
279 | - add: function () { | ||
280 | - Controller.api.bindevent(); | ||
281 | - }, | ||
282 | - edit: function () { | ||
283 | - Controller.api.bindevent(); | ||
284 | - }, | ||
285 | - detail: function () { | ||
286 | - $(document).on('click', '.btn-callback', function () { | ||
287 | - Fast.api.close($("input[name=callback]").val()); | ||
288 | - }); | ||
289 | - }, | ||
290 | - api: { | ||
291 | - bindevent: function () { | ||
292 | - Form.api.bindevent($("form[role=form]")); | ||
293 | - }, | ||
294 | - formatter: {//渲染的方法 | ||
295 | - url: function (value, row, index) { | ||
296 | - return '<div class="input-group input-group-sm" style="width:250px;"><input type="text" class="form-control input-sm" value="' + value + '"><span class="input-group-btn input-group-sm"><a href="' + value + '" target="_blank" class="btn btn-default btn-sm"><i class="fa fa-link"></i></a></span></div>'; | ||
297 | - }, | ||
298 | - ip: function (value, row, index) { | ||
299 | - return '<a class="btn btn-xs btn-ip bg-success"><i class="fa fa-map-marker"></i> ' + value + '</a>'; | ||
300 | - }, | ||
301 | - custom: function (value, row, index) { | ||
302 | - //添加上btn-change可以自定义请求的URL进行数据处理 | ||
303 | - return '<a class="btn-change text-success" data-url="example/bootstraptable/change" data-confirm="确认切换状态?" data-id="' + row.id + '"><i class="fa ' + (row.title == '' ? 'fa-toggle-on fa-flip-horizontal text-gray' : 'fa-toggle-on') + ' fa-2x"></i></a>'; | ||
304 | - }, | ||
305 | - }, | ||
306 | - events: {//绑定事件的方法 | ||
307 | - ip: { | ||
308 | - //格式为:方法名+空格+DOM元素 | ||
309 | - 'click .btn-ip': function (e, value, row, index) { | ||
310 | - e.stopPropagation(); | ||
311 | - var container = $("#table").data("bootstrap.table").$container; | ||
312 | - var options = $("#table").bootstrapTable('getOptions'); | ||
313 | - //这里我们手动将数据填充到表单然后提交 | ||
314 | - $("form.form-commonsearch [name='ip']", container).val(value); | ||
315 | - $("form.form-commonsearch", container).trigger('submit'); | ||
316 | - Toastr.info("执行了自定义搜索操作"); | ||
317 | - } | ||
318 | - }, | ||
319 | - } | ||
320 | - } | ||
321 | - }; | ||
322 | - return Controller; | ||
323 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { | ||
2 | - | ||
3 | - var Controller = { | ||
4 | - index: function () { | ||
5 | - // 初始化表格参数配置 | ||
6 | - Table.api.init({ | ||
7 | - extend: { | ||
8 | - index_url: 'example/colorbadge/index', | ||
9 | - add_url: '', | ||
10 | - edit_url: '', | ||
11 | - del_url: 'example/colorbadge/del', | ||
12 | - multi_url: '', | ||
13 | - } | ||
14 | - }); | ||
15 | - | ||
16 | - var table = $("#table"); | ||
17 | - | ||
18 | - // 初始化表格 | ||
19 | - table.bootstrapTable({ | ||
20 | - url: $.fn.bootstrapTable.defaults.extend.index_url, | ||
21 | - columns: [ | ||
22 | - [ | ||
23 | - {field: 'state', checkbox: true, }, | ||
24 | - {field: 'id', title: 'ID'}, | ||
25 | - {field: 'title', title: __('Title')}, | ||
26 | - {field: 'ip', title: __('IP')}, | ||
27 | - {field: 'createtime', title: __('Create time'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, | ||
28 | - {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} | ||
29 | - ] | ||
30 | - ], | ||
31 | - onLoadSuccess: function (data) { | ||
32 | - // 在表格第次加载成功后,刷新左侧菜单栏彩色小角标,支持一次渲染多个 | ||
33 | - // 如果需要在进入后台即显示左侧的彩色小角标,请使用服务端渲染方式,详情修改application/admin/controller/Index.php | ||
34 | - Backend.api.sidebar({ | ||
35 | - 'example/colorbadge': data.total | ||
36 | - }); | ||
37 | - Toastr.info("左侧角标已经刷新成功"); | ||
38 | - } | ||
39 | - }); | ||
40 | - | ||
41 | - // 为表格绑定事件 | ||
42 | - Table.api.bindevent(table); | ||
43 | - }, | ||
44 | - add: function () { | ||
45 | - Form.api.bindevent($("form[role=form]")); | ||
46 | - }, | ||
47 | - edit: function () { | ||
48 | - Form.api.bindevent($("form[role=form]")); | ||
49 | - } | ||
50 | - }; | ||
51 | - return Controller; | ||
52 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { | ||
2 | - | ||
3 | - var Controller = { | ||
4 | - index: function () { | ||
5 | - // 初始化表格参数配置 | ||
6 | - Table.api.init({ | ||
7 | - extend: { | ||
8 | - index_url: 'example/controllerjump/index', | ||
9 | - add_url: '', | ||
10 | - edit_url: '', | ||
11 | - del_url: 'example/controllerjump/del', | ||
12 | - multi_url: '', | ||
13 | - } | ||
14 | - }); | ||
15 | - | ||
16 | - var table = $("#table"); | ||
17 | - | ||
18 | - // 初始化表格 | ||
19 | - table.bootstrapTable({ | ||
20 | - url: $.fn.bootstrapTable.defaults.extend.index_url, | ||
21 | - columns: [ | ||
22 | - [ | ||
23 | - {field: 'state', checkbox: true, }, | ||
24 | - {field: 'id', title: 'ID'}, | ||
25 | - {field: 'admin_id', title: __('Admin_id')}, | ||
26 | - {field: 'title', title: __('Title')}, | ||
27 | - {field: 'ip', title: __('IP'),formatter: Controller.api.formatter.ip}, | ||
28 | - {field: 'createtime', title: __('Create time'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, | ||
29 | - {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} | ||
30 | - ] | ||
31 | - ] | ||
32 | - }); | ||
33 | - | ||
34 | - // 为表格绑定事件 | ||
35 | - Table.api.bindevent(table); | ||
36 | - }, | ||
37 | - add: function () { | ||
38 | - Form.api.bindevent($("form[role=form]")); | ||
39 | - }, | ||
40 | - edit: function () { | ||
41 | - Form.api.bindevent($("form[role=form]")); | ||
42 | - }, | ||
43 | - api: { | ||
44 | - formatter: { | ||
45 | - ip: function (value, row, index) { | ||
46 | - //这里手动构造URL | ||
47 | - url = "example/bootstraptable?" + this.field + "=" + value; | ||
48 | - | ||
49 | - //方式一,直接返回class带有addtabsit的链接,这可以方便自定义显示内容 | ||
50 | - //return '<a href="' + url + '" class="label label-success addtabsit" title="' + __("Search %s", value) + '">' + __('Search %s', value) + '</a>'; | ||
51 | - | ||
52 | - //方式二,直接调用Table.api.formatter.addtabs | ||
53 | - this.url = url; | ||
54 | - return Table.api.formatter.addtabs.call(this, value, row, index); | ||
55 | - } | ||
56 | - } | ||
57 | - } | ||
58 | - }; | ||
59 | - return Controller; | ||
60 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { | ||
2 | - | ||
3 | - var Controller = { | ||
4 | - index: function () { | ||
5 | - Template.helper("Fast", Fast); | ||
6 | - | ||
7 | - //因为日期选择框不会触发change事件,导致无法刷新textarea,所以加上判断 | ||
8 | - $(document).on("dp.change", "#second-form .datetimepicker", function () { | ||
9 | - $(this).parent().prev().find("input").trigger("change"); | ||
10 | - }); | ||
11 | - $(document).on("fa.event.appendfieldlist", "#first-table .btn-append", function (e, obj) { | ||
12 | - | ||
13 | - }); | ||
14 | - $(document).on("fa.event.appendfieldlist", "#second-table .btn-append", function (e, obj) { | ||
15 | - //绑定动态下拉组件 | ||
16 | - Form.events.selectpage(obj); | ||
17 | - //绑定日期组件 | ||
18 | - Form.events.datetimepicker(obj); | ||
19 | - //绑定上传组件 | ||
20 | - Form.events.faupload(obj); | ||
21 | - | ||
22 | - //上传成功回调事件,变更按钮的背景 | ||
23 | - $(".upload-image", obj).data("upload-success", function (data) { | ||
24 | - $(this).css("background-image", "url('" + Fast.api.cdnurl(data.url) + "')"); | ||
25 | - }) | ||
26 | - }); | ||
27 | - Form.api.bindevent($("form[role=form]"), function (data, ret) { | ||
28 | - Layer.alert(data.data); | ||
29 | - }); | ||
30 | - }, | ||
31 | - }; | ||
32 | - return Controller; | ||
33 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { | ||
2 | - var Controller = { | ||
3 | - index: function () { | ||
4 | - // | ||
5 | - // 初始化表格参数配置 | ||
6 | - Table.api.init({ | ||
7 | - extend: { | ||
8 | - index_url: 'example/customsearch/index', | ||
9 | - add_url: 'example/customsearch/add', | ||
10 | - edit_url: '', | ||
11 | - del_url: 'example/customsearch/del', | ||
12 | - multi_url: 'example/customsearch/multi', | ||
13 | - table: '', | ||
14 | - } | ||
15 | - }); | ||
16 | - | ||
17 | - var table = $("#table"); | ||
18 | - | ||
19 | - // 初始化表格 | ||
20 | - table.bootstrapTable({ | ||
21 | - url: $.fn.bootstrapTable.defaults.extend.index_url, | ||
22 | - pk: 'id', | ||
23 | - sortName: 'id', | ||
24 | - searchFormVisible: true, | ||
25 | - searchFormTemplate: 'customformtpl', | ||
26 | - columns: [ | ||
27 | - [ | ||
28 | - {checkbox: true}, | ||
29 | - {field: 'id', title: 'ID', operate: false}, | ||
30 | - {field: 'admin_id', title: __('Admin_id'), visible: false, operate: false}, | ||
31 | - {field: 'username', title: __('Username'), formatter: Table.api.formatter.search}, | ||
32 | - {field: 'title', title: __('Title')}, | ||
33 | - {field: 'url', title: __('Url'), align: 'left'}, | ||
34 | - {field: 'ip', title: __('IP')}, | ||
35 | - {field: 'createtime', title: __('Create time'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, | ||
36 | - { | ||
37 | - field: 'operate', | ||
38 | - title: __('Operate'), | ||
39 | - table: table, | ||
40 | - events: Table.api.events.operate, | ||
41 | - formatter: Table.api.formatter.operate | ||
42 | - } | ||
43 | - ] | ||
44 | - ] | ||
45 | - }); | ||
46 | - | ||
47 | - // 为表格绑定事件 | ||
48 | - Table.api.bindevent(table); | ||
49 | - }, | ||
50 | - add: function () { | ||
51 | - Controller.api.bindevent(); | ||
52 | - }, | ||
53 | - edit: function () { | ||
54 | - Controller.api.bindevent(); | ||
55 | - }, | ||
56 | - api: { | ||
57 | - bindevent: function () { | ||
58 | - Form.api.bindevent($("form[role=form]")); | ||
59 | - } | ||
60 | - } | ||
61 | - }; | ||
62 | - return Controller; | ||
63 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { | ||
2 | - | ||
3 | - var Controller = { | ||
4 | - index: function () { | ||
5 | - $("#cxselect-example .col-xs-12").each(function () { | ||
6 | - $("textarea", this).val($(this).prev().prev().html().replace(/[ ]{2}/g, '')); | ||
7 | - }); | ||
8 | - | ||
9 | - //这里需要手动为Form绑定上元素事件 | ||
10 | - Form.api.bindevent($("form#cxselectform")); | ||
11 | - } | ||
12 | - }; | ||
13 | - return Controller; | ||
14 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template', 'echarts', 'echarts-theme'], function ($, undefined, Backend, Table, Form, Template, Echarts) { | ||
2 | - | ||
3 | - var Controller = { | ||
4 | - index: function () { | ||
5 | - //这句话在多选项卡统计表时必须存在,否则会导致影响的图表宽度不正确 | ||
6 | - $(document).on("click", ".charts-custom a[data-toggle=\"tab\"]", function () { | ||
7 | - var that = this; | ||
8 | - setTimeout(function () { | ||
9 | - var id = $(that).attr("href"); | ||
10 | - var chart = Echarts.getInstanceByDom($(id)[0]); | ||
11 | - chart.resize(); | ||
12 | - }, 0); | ||
13 | - }); | ||
14 | - | ||
15 | - // 基于准备好的dom,初始化echarts实例 | ||
16 | - var lineChart = Echarts.init(document.getElementById('line-chart'), 'walden'); | ||
17 | - | ||
18 | - // 指定图表的配置项和数据 | ||
19 | - var option = { | ||
20 | - xAxis: { | ||
21 | - type: 'category', | ||
22 | - data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] | ||
23 | - }, | ||
24 | - yAxis: { | ||
25 | - type: 'value' | ||
26 | - }, | ||
27 | - series: [{ | ||
28 | - data: [49, 92, 61, 134, 90, 130, 120], | ||
29 | - type: 'line' | ||
30 | - }] | ||
31 | - }; | ||
32 | - | ||
33 | - // 使用刚指定的配置项和数据显示图表。 | ||
34 | - lineChart.setOption(option); | ||
35 | - // 基于准备好的dom,初始化echarts实例 | ||
36 | - var areaChart = Echarts.init(document.getElementById('area-chart'), 'walden'); | ||
37 | - | ||
38 | - // 指定图表的配置项和数据 | ||
39 | - var option = { | ||
40 | - xAxis: { | ||
41 | - type: 'category', | ||
42 | - boundaryGap: false, | ||
43 | - data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] | ||
44 | - }, | ||
45 | - yAxis: { | ||
46 | - type: 'value' | ||
47 | - }, | ||
48 | - series: [{ | ||
49 | - data: [820, 932, 901, 934, 1290, 1330, 1320], | ||
50 | - type: 'line', | ||
51 | - areaStyle: {} | ||
52 | - }] | ||
53 | - }; | ||
54 | - | ||
55 | - // 使用刚指定的配置项和数据显示图表。 | ||
56 | - areaChart.setOption(option); | ||
57 | - | ||
58 | - var pieChart = Echarts.init(document.getElementById('pie-chart'), 'walden'); | ||
59 | - var option = { | ||
60 | - tooltip: { | ||
61 | - trigger: 'item', | ||
62 | - formatter: '{a} <br/>{b}: {c} ({d}%)' | ||
63 | - }, | ||
64 | - legend: { | ||
65 | - orient: 'vertical', | ||
66 | - left: 10, | ||
67 | - data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'] | ||
68 | - }, | ||
69 | - series: [ | ||
70 | - { | ||
71 | - name: '访问来源', | ||
72 | - type: 'pie', | ||
73 | - radius: ['50%', '70%'], | ||
74 | - avoidLabelOverlap: false, | ||
75 | - label: { | ||
76 | - normal: { | ||
77 | - show: false, | ||
78 | - position: 'center' | ||
79 | - }, | ||
80 | - emphasis: { | ||
81 | - show: true, | ||
82 | - textStyle: { | ||
83 | - fontSize: '30', | ||
84 | - fontWeight: 'bold' | ||
85 | - } | ||
86 | - } | ||
87 | - }, | ||
88 | - labelLine: { | ||
89 | - normal: { | ||
90 | - show: false | ||
91 | - } | ||
92 | - }, | ||
93 | - data: [ | ||
94 | - {value: 335, name: '直接访问'}, | ||
95 | - {value: 310, name: '邮件营销'}, | ||
96 | - {value: 234, name: '联盟广告'}, | ||
97 | - {value: 135, name: '视频广告'}, | ||
98 | - {value: 1548, name: '搜索引擎'} | ||
99 | - ] | ||
100 | - } | ||
101 | - ] | ||
102 | - }; | ||
103 | - // 使用刚指定的配置项和数据显示图表。 | ||
104 | - pieChart.setOption(option); | ||
105 | - | ||
106 | - var barChart = Echarts.init(document.getElementById('bar-chart'), 'walden'); | ||
107 | - option = { | ||
108 | - legend: {}, | ||
109 | - tooltip: {}, | ||
110 | - dataset: { | ||
111 | - source: [ | ||
112 | - ['产品销售', '2015', '2016', '2017'], | ||
113 | - ['风扇', 43.3, 85.8, 93.7], | ||
114 | - ['电视机', 83.1, 73.4, 55.1], | ||
115 | - ['空调', 86.4, 65.2, 82.5], | ||
116 | - ['冰箱', 72.4, 53.9, 39.1] | ||
117 | - ] | ||
118 | - }, | ||
119 | - xAxis: {type: 'category'}, | ||
120 | - yAxis: {}, | ||
121 | - // Declare several bar series, each will be mapped | ||
122 | - // to a column of dataset.source by default. | ||
123 | - series: [ | ||
124 | - {type: 'bar'}, | ||
125 | - {type: 'bar'}, | ||
126 | - {type: 'bar'} | ||
127 | - ] | ||
128 | - }; | ||
129 | - // 使用刚指定的配置项和数据显示图表。 | ||
130 | - barChart.setOption(option); | ||
131 | - | ||
132 | - | ||
133 | - var barChart = Echarts.init(document.getElementById('simplebar-chart')); | ||
134 | - option = { | ||
135 | - xAxis: { | ||
136 | - type: 'category', | ||
137 | - axisLine: { | ||
138 | - lineStyle: { | ||
139 | - color: "#fff" | ||
140 | - } | ||
141 | - }, | ||
142 | - data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] | ||
143 | - }, | ||
144 | - yAxis: { | ||
145 | - type: 'value', | ||
146 | - axisLine: { | ||
147 | - lineStyle: { | ||
148 | - color: "#fff" | ||
149 | - } | ||
150 | - } | ||
151 | - }, | ||
152 | - series: [{ | ||
153 | - data: [120, 200, 150, 80, 70, 110, 130], | ||
154 | - type: 'bar', | ||
155 | - itemStyle: { | ||
156 | - color: "#fff", | ||
157 | - opacity: 0.6 | ||
158 | - } | ||
159 | - }] | ||
160 | - }; | ||
161 | - // 使用刚指定的配置项和数据显示图表。 | ||
162 | - barChart.setOption(option); | ||
163 | - | ||
164 | - var barChart = Echarts.init(document.getElementById('smoothline-chart')); | ||
165 | - option = { | ||
166 | - textStyle: { | ||
167 | - color: "#fff" | ||
168 | - }, | ||
169 | - color: ['#fff'], | ||
170 | - xAxis: { | ||
171 | - type: 'category', | ||
172 | - boundaryGap: false, | ||
173 | - data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'], | ||
174 | - axisLine: { | ||
175 | - lineStyle: { | ||
176 | - color: "#fff" | ||
177 | - } | ||
178 | - } | ||
179 | - }, | ||
180 | - yAxis: { | ||
181 | - type: 'value', | ||
182 | - splitLine: { | ||
183 | - show: false | ||
184 | - }, | ||
185 | - axisLine: { | ||
186 | - lineStyle: { | ||
187 | - color: "#fff" | ||
188 | - } | ||
189 | - } | ||
190 | - }, | ||
191 | - series: [{ | ||
192 | - data: [820, 932, 901, 934, 1290, 1330, 1320], | ||
193 | - type: 'line', | ||
194 | - smooth: true, | ||
195 | - areaStyle: { | ||
196 | - opacity: 0.4 | ||
197 | - } | ||
198 | - | ||
199 | - }] | ||
200 | - }; | ||
201 | - // 使用刚指定的配置项和数据显示图表。 | ||
202 | - barChart.setOption(option); | ||
203 | - } | ||
204 | - }; | ||
205 | - return Controller; | ||
206 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { | ||
2 | - | ||
3 | - var Controller = { | ||
4 | - index: function () { | ||
5 | - // 初始化表格参数配置 | ||
6 | - Table.api.init(); | ||
7 | - | ||
8 | - //绑定事件 | ||
9 | - $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { | ||
10 | - var panel = $($(this).attr("href")); | ||
11 | - if (panel.length > 0) { | ||
12 | - Controller.table[panel.attr("id")].call(this); | ||
13 | - $(this).on('click', function (e) { | ||
14 | - $($(this).attr("href")).find(".btn-refresh").trigger("click"); | ||
15 | - }); | ||
16 | - } | ||
17 | - //移除绑定的事件 | ||
18 | - $(this).unbind('shown.bs.tab'); | ||
19 | - }); | ||
20 | - | ||
21 | - //必须默认触发shown.bs.tab事件 | ||
22 | - $('ul.nav-tabs li.active a[data-toggle="tab"]').trigger("shown.bs.tab"); | ||
23 | - }, | ||
24 | - table: { | ||
25 | - first: function () { | ||
26 | - // 表格1 | ||
27 | - var table1 = $("#table1"); | ||
28 | - table1.bootstrapTable({ | ||
29 | - url: 'example/multitable/table1', | ||
30 | - toolbar: '#toolbar1', | ||
31 | - sortName: 'id', | ||
32 | - search: false, | ||
33 | - columns: [ | ||
34 | - [ | ||
35 | - {field: 'state', checkbox: true, }, | ||
36 | - {field: 'id', title: 'ID'}, | ||
37 | - {field: 'filename', title: __('Name')}, | ||
38 | - {field: 'imagewidth', title: __('Imagewidth')}, | ||
39 | - {field: 'imageheight', title: __('Imageheight')}, | ||
40 | - {field: 'mimetype', title: __('Mimetype')}, | ||
41 | - {field: 'operate', title: __('Operate'), table: table1, events: Table.api.events.operate, formatter: Table.api.formatter.operate} | ||
42 | - ] | ||
43 | - ] | ||
44 | - }); | ||
45 | - | ||
46 | - // 为表格1绑定事件 | ||
47 | - Table.api.bindevent(table1); | ||
48 | - }, | ||
49 | - second: function () { | ||
50 | - // 表格2 | ||
51 | - var table2 = $("#table2"); | ||
52 | - table2.bootstrapTable({ | ||
53 | - url: 'example/multitable/table2', | ||
54 | - extend: { | ||
55 | - index_url: '', | ||
56 | - add_url: '', | ||
57 | - edit_url: '', | ||
58 | - del_url: '', | ||
59 | - multi_url: '', | ||
60 | - table: '', | ||
61 | - }, | ||
62 | - toolbar: '#toolbar2', | ||
63 | - sortName: 'id', | ||
64 | - search: false, | ||
65 | - columns: [ | ||
66 | - [ | ||
67 | - {field: 'id', title: 'ID'}, | ||
68 | - {field: 'title', title: __('Title')}, | ||
69 | - {field: 'url', title: __('Url'), align: 'left', formatter: Table.api.formatter.url}, | ||
70 | - {field: 'ip', title: __('ip')}, | ||
71 | - {field: 'createtime', title: __('Createtime'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, | ||
72 | - ] | ||
73 | - ] | ||
74 | - }); | ||
75 | - | ||
76 | - // 为表格2绑定事件 | ||
77 | - Table.api.bindevent(table2); | ||
78 | - } | ||
79 | - }, | ||
80 | - add: function () { | ||
81 | - Controller.api.bindevent(); | ||
82 | - }, | ||
83 | - edit: function () { | ||
84 | - Controller.api.bindevent(); | ||
85 | - }, | ||
86 | - api: { | ||
87 | - bindevent: function () { | ||
88 | - Form.api.bindevent($("form[role=form]")); | ||
89 | - }, | ||
90 | - } | ||
91 | - }; | ||
92 | - return Controller; | ||
93 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { | ||
2 | - | ||
3 | - var Controller = { | ||
4 | - index: function () { | ||
5 | - // 初始化表格参数配置 | ||
6 | - Table.api.init({ | ||
7 | - extend: { | ||
8 | - index_url: 'example/relationmodel/index', | ||
9 | - add_url: '', | ||
10 | - edit_url: '', | ||
11 | - del_url: 'example/relationmodel/del', | ||
12 | - multi_url: '', | ||
13 | - } | ||
14 | - }); | ||
15 | - | ||
16 | - var table = $("#table"); | ||
17 | - | ||
18 | - // 初始化表格 | ||
19 | - table.bootstrapTable({ | ||
20 | - url: $.fn.bootstrapTable.defaults.extend.index_url, | ||
21 | - columns: [ | ||
22 | - [ | ||
23 | - {field: 'state', checkbox: true, }, | ||
24 | - {field: 'id', title: 'ID', operate: '='}, | ||
25 | - {field: 'title', title: __('Title'), operate: 'LIKE %...%', placeholder: '关键字,模糊搜索'}, | ||
26 | - {field: 'admin.avatar', title: __('Avatar'), operate: false, formatter: Table.api.formatter.image}, | ||
27 | - {field: 'admin.username', title: __('Username'), operate: 'FIND_IN_SET'}, | ||
28 | - {field: 'admin.nickname', title: __('Nickname'), operate: 'LIKE %...%', placeholder: '关键字,模糊搜索'}, | ||
29 | - {field: 'ip', title: __('IP'), operate: '='}, | ||
30 | - {field: 'createtime', title: __('Create time'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, | ||
31 | - {field: 'admin.createtime', title: __('Create time'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, | ||
32 | - {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} | ||
33 | - ] | ||
34 | - ], | ||
35 | - }); | ||
36 | - | ||
37 | - // 为表格绑定事件 | ||
38 | - Table.api.bindevent(table); | ||
39 | - }, | ||
40 | - add: function () { | ||
41 | - Form.api.bindevent($("form[role=form]")); | ||
42 | - }, | ||
43 | - edit: function () { | ||
44 | - Form.api.bindevent($("form[role=form]")); | ||
45 | - }, | ||
46 | - }; | ||
47 | - return Controller; | ||
48 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { | ||
2 | - | ||
3 | - var Controller = { | ||
4 | - index: function () { | ||
5 | - // 初始化表格参数配置 | ||
6 | - Table.api.init(); | ||
7 | - this.table.first(); | ||
8 | - this.table.second(); | ||
9 | - }, | ||
10 | - table: { | ||
11 | - first: function () { | ||
12 | - // 表格1 | ||
13 | - var table1 = $("#table1"); | ||
14 | - table1.bootstrapTable({ | ||
15 | - url: 'example/tablelink/table1', | ||
16 | - toolbar: '#toolbar1', | ||
17 | - sortName: 'id', | ||
18 | - search: false, | ||
19 | - columns: [ | ||
20 | - [ | ||
21 | - // {field: 'state', checkbox: true,}, | ||
22 | - {field: 'id', title: 'ID'}, | ||
23 | - {field: 'username', title: __('Nickname')}, | ||
24 | - { | ||
25 | - field: 'operate', title: __('Operate'), table: table1, events: Table.api.events.operate, buttons: [ | ||
26 | - { | ||
27 | - name: 'log', | ||
28 | - title: '日志列表', | ||
29 | - text: '日志列表', | ||
30 | - icon: 'fa fa-list', | ||
31 | - classname: 'btn btn-primary btn-xs btn-click', | ||
32 | - click: function (e, data) { | ||
33 | - $("#myTabContent2 .form-commonsearch input[name='username']").val(data.username); | ||
34 | - $("#myTabContent2 .btn-refresh").trigger("click"); | ||
35 | - } | ||
36 | - } | ||
37 | - ], formatter: Table.api.formatter.operate | ||
38 | - } | ||
39 | - ] | ||
40 | - ] | ||
41 | - }); | ||
42 | - | ||
43 | - // 为表格1绑定事件 | ||
44 | - Table.api.bindevent(table1); | ||
45 | - }, | ||
46 | - second: function () { | ||
47 | - // 表格2 | ||
48 | - var table2 = $("#table2"); | ||
49 | - table2.bootstrapTable({ | ||
50 | - url: 'example/tablelink/table2', | ||
51 | - extend: { | ||
52 | - index_url: '', | ||
53 | - add_url: '', | ||
54 | - edit_url: '', | ||
55 | - del_url: '', | ||
56 | - multi_url: '', | ||
57 | - table: '', | ||
58 | - }, | ||
59 | - toolbar: '#toolbar2', | ||
60 | - sortName: 'id', | ||
61 | - search: false, | ||
62 | - columns: [ | ||
63 | - [ | ||
64 | - {field: 'state', checkbox: true,}, | ||
65 | - {field: 'id', title: 'ID'}, | ||
66 | - {field: 'username', title: __('Nickname')}, | ||
67 | - {field: 'title', title: __('Title')}, | ||
68 | - {field: 'url', title: __('Url'), align: 'left', formatter: Table.api.formatter.url}, | ||
69 | - {field: 'ip', title: __('ip')}, | ||
70 | - {field: 'createtime', title: __('Createtime'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, | ||
71 | - ] | ||
72 | - ] | ||
73 | - }); | ||
74 | - | ||
75 | - // 为表格2绑定事件 | ||
76 | - Table.api.bindevent(table2); | ||
77 | - } | ||
78 | - }, | ||
79 | - }; | ||
80 | - return Controller; | ||
81 | -}); |
1 | -define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function ($, undefined, Backend, Table, Form, Template) { | ||
2 | - | ||
3 | - var Controller = { | ||
4 | - index: function () { | ||
5 | - // 初始化表格参数配置 | ||
6 | - Table.api.init({ | ||
7 | - extend: { | ||
8 | - index_url: 'example/tabletemplate/index', | ||
9 | - add_url: '', | ||
10 | - edit_url: '', | ||
11 | - del_url: 'example/tabletemplate/del', | ||
12 | - multi_url: '', | ||
13 | - } | ||
14 | - }); | ||
15 | - | ||
16 | - var table = $("#table"); | ||
17 | - | ||
18 | - Template.helper("Moment", Moment); | ||
19 | - | ||
20 | - // 初始化表格 | ||
21 | - table.bootstrapTable({ | ||
22 | - url: $.fn.bootstrapTable.defaults.extend.index_url, | ||
23 | - templateView: true, | ||
24 | - columns: [ | ||
25 | - [ | ||
26 | - {field: 'state', checkbox: true, }, | ||
27 | - {field: 'id', title: 'ID', operate: false}, | ||
28 | - //直接响应搜索 | ||
29 | - {field: 'username', title: __('Username'), formatter: Table.api.formatter.search}, | ||
30 | - //模糊搜索 | ||
31 | - {field: 'title', title: __('Title'), operate: 'LIKE %...%', placeholder: '模糊搜索,*表示任意字符', style: 'width:200px'}, | ||
32 | - //通过Ajax渲染searchList | ||
33 | - {field: 'url', title: __('Url'), align: 'left', formatter: Controller.api.formatter.url}, | ||
34 | - //点击IP时同时执行搜索此IP,同时普通搜索使用下拉列表的形式 | ||
35 | - {field: 'ip', title: __('IP'), searchList: ['127.0.0.1', '127.0.0.2'], events: Controller.api.events.ip, formatter: Controller.api.formatter.ip}, | ||
36 | - //browser是一个不存在的字段 | ||
37 | - //通过formatter来渲染数据,同时为它添加上事件 | ||
38 | - {field: 'browser', title: __('Browser'), operate: false, events: Controller.api.events.browser, formatter: Controller.api.formatter.browser}, | ||
39 | - //启用时间段搜索 | ||
40 | - {field: 'createtime', title: __('Create time'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, | ||
41 | - {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} | ||
42 | - ], | ||
43 | - ], | ||
44 | - //禁用默认搜索 | ||
45 | - search: false, | ||
46 | - //启用普通表单搜索 | ||
47 | - commonSearch: false, | ||
48 | - //可以控制是否默认显示搜索单表,false则隐藏,默认为false | ||
49 | - searchFormVisible: false, | ||
50 | - //分页大小 | ||
51 | - pageSize: 12 | ||
52 | - }); | ||
53 | - | ||
54 | - // 为表格绑定事件 | ||
55 | - Table.api.bindevent(table); | ||
56 | - | ||
57 | - //指定搜索条件 | ||
58 | - $(document).on("click", ".btn-toggle-view", function () { | ||
59 | - var options = table.bootstrapTable('getOptions'); | ||
60 | - table.bootstrapTable('refreshOptions', {templateView: !options.templateView}); | ||
61 | - }); | ||
62 | - | ||
63 | - //点击详情 | ||
64 | - $(document).on("click", ".btn-detail[data-id]", function () { | ||
65 | - Backend.api.open('example/bootstraptable/detail/ids/' + $(this).data('id'), __('Detail')); | ||
66 | - }); | ||
67 | - | ||
68 | - //获取选中项 | ||
69 | - $(document).on("click", ".btn-selected", function () { | ||
70 | - //在templateView的模式下不能调用table.bootstrapTable('getSelections')来获取选中的ID,只能通过下面的Table.api.selectedids来获取 | ||
71 | - Layer.alert(JSON.stringify(Table.api.selectedids(table))); | ||
72 | - }); | ||
73 | - }, | ||
74 | - add: function () { | ||
75 | - Controller.api.bindevent(); | ||
76 | - }, | ||
77 | - edit: function () { | ||
78 | - Controller.api.bindevent(); | ||
79 | - }, | ||
80 | - api: { | ||
81 | - bindevent: function () { | ||
82 | - Form.api.bindevent($("form[role=form]")); | ||
83 | - }, | ||
84 | - formatter: { | ||
85 | - url: function (value, row, index) { | ||
86 | - return '<div class="input-group input-group-sm" style="width:250px;"><input type="text" class="form-control input-sm" value="' + value + '"><span class="input-group-btn input-group-sm"><a href="' + value + '" target="_blank" class="btn btn-default btn-sm"><i class="fa fa-link"></i></a></span></div>'; | ||
87 | - }, | ||
88 | - ip: function (value, row, index) { | ||
89 | - return '<a class="btn btn-xs btn-ip bg-success"><i class="fa fa-map-marker"></i> ' + value + '</a>'; | ||
90 | - }, | ||
91 | - browser: function (value, row, index) { | ||
92 | - //这里我们直接使用row的数据 | ||
93 | - return '<a class="btn btn-xs btn-browser">' + row.useragent.split(" ")[0] + '</a>'; | ||
94 | - } | ||
95 | - }, | ||
96 | - events: { | ||
97 | - ip: { | ||
98 | - 'click .btn-ip': function (e, value, row, index) { | ||
99 | - var options = $("#table").bootstrapTable('getOptions'); | ||
100 | - //这里我们手动将数据填充到表单然后提交 | ||
101 | - $("#commonSearchContent_" + options.idTable + " form [name='ip']").val(value); | ||
102 | - $("#commonSearchContent_" + options.idTable + " form").trigger('submit'); | ||
103 | - Toastr.info("执行了自定义搜索操作"); | ||
104 | - } | ||
105 | - }, | ||
106 | - browser: { | ||
107 | - 'click .btn-browser': function (e, value, row, index) { | ||
108 | - Layer.alert("该行数据为: <code>" + JSON.stringify(row) + "</code>"); | ||
109 | - } | ||
110 | - } | ||
111 | - } | ||
112 | - } | ||
113 | - }; | ||
114 | - return Controller; | ||
115 | -}); |
-
请 注册 或 登录 后发表评论