Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
guns-vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
guns-vip
Commits
e2a03854
Commit
e2a03854
authored
Mar 27, 2019
by
fengshuonan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新高级表单
parent
2ba1d61d
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1447 additions
and
66 deletions
+1447
-66
sql/guns.sql
+65
-63
src/main/java/cn/stylefeng/guns/modular/demos/controller/EgFormController.java
+112
-0
src/main/java/cn/stylefeng/guns/modular/demos/controller/ExcelController.java
+2
-2
src/main/java/cn/stylefeng/guns/modular/demos/entity/EgForm.java
+114
-0
src/main/java/cn/stylefeng/guns/modular/demos/entity/ExcelItem.java
+1
-1
src/main/java/cn/stylefeng/guns/modular/demos/model/EgFormParam.java
+101
-0
src/main/java/cn/stylefeng/guns/modular/demos/model/EgFormResult.java
+95
-0
src/main/webapp/assets/common/js/common.js
+1
-0
src/main/webapp/assets/common/module/selectPlus/selectPlus.js
+503
-0
src/main/webapp/assets/modular/demos/form/egForm.js
+134
-0
src/main/webapp/assets/modular/demos/form/egForm_add.js
+128
-0
src/main/webapp/assets/modular/demos/form/form.css
+12
-0
src/main/webapp/pages/modular/demos/form/egForm.html
+35
-0
src/main/webapp/pages/modular/demos/form/egForm_add.html
+144
-0
No files found.
sql/guns.sql
View file @
e2a03854
...
@@ -16,7 +16,7 @@ USE guns;
...
@@ -16,7 +16,7 @@ USE guns;
Target Server Version : 50724
Target Server Version : 50724
File Encoding : 65001
File Encoding : 65001
Date: 27/03/2019 1
3:44:26
Date: 27/03/2019 1
4:22:32
*/
*/
SET
NAMES
utf8mb4
;
SET
NAMES
utf8mb4
;
...
@@ -153,7 +153,7 @@ CREATE TABLE `sys_login_log` (
...
@@ -153,7 +153,7 @@ CREATE TABLE `sys_login_log` (
`MESSAGE`
text
COMMENT
'具体消息'
,
`MESSAGE`
text
COMMENT
'具体消息'
,
`IP_ADDRESS`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'登录ip'
,
`IP_ADDRESS`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'登录ip'
,
PRIMARY
KEY
(
`LOGIN_LOG_ID`
)
USING
BTREE
PRIMARY
KEY
(
`LOGIN_LOG_ID`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
11107
78599792734210
DEFAULT
CHARSET
=
utf8
ROW_FORMAT
=
DYNAMIC
COMMENT
=
'登录记录'
;
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
11107
88937904869378
DEFAULT
CHARSET
=
utf8
ROW_FORMAT
=
DYNAMIC
COMMENT
=
'登录记录'
;
-- ----------------------------
-- ----------------------------
-- Table structure for sys_menu
-- Table structure for sys_menu
...
@@ -179,7 +179,7 @@ CREATE TABLE `sys_menu` (
...
@@ -179,7 +179,7 @@ CREATE TABLE `sys_menu` (
`CREATE_USER`
bigint
(
20
)
DEFAULT
NULL
COMMENT
'创建人'
,
`CREATE_USER`
bigint
(
20
)
DEFAULT
NULL
COMMENT
'创建人'
,
`UPDATE_USER`
bigint
(
20
)
DEFAULT
NULL
COMMENT
'修改人'
,
`UPDATE_USER`
bigint
(
20
)
DEFAULT
NULL
COMMENT
'修改人'
,
PRIMARY
KEY
(
`MENU_ID`
)
USING
BTREE
PRIMARY
KEY
(
`MENU_ID`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
11107
77491464667138
DEFAULT
CHARSET
=
utf8
ROW_FORMAT
=
DYNAMIC
COMMENT
=
'菜单表'
;
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
11107
87391943098371
DEFAULT
CHARSET
=
utf8
ROW_FORMAT
=
DYNAMIC
COMMENT
=
'菜单表'
;
-- ----------------------------
-- ----------------------------
-- Records of sys_menu
-- Records of sys_menu
...
@@ -244,6 +244,7 @@ INSERT INTO `sys_menu` VALUES (172, 'system_message', '0', '[0],', '系统消息
...
@@ -244,6 +244,7 @@ INSERT INTO `sys_menu` VALUES (172, 'system_message', '0', '[0],', '系统消息
INSERT
INTO
`sys_menu`
VALUES
(
1110777136265838594
,
'demos_show'
,
'0'
,
'[0],'
,
'demos展示'
,
'layui-icon layui-icon-fire'
,
'#'
,
40
,
1
,
'Y'
,
NULL
,
'ENABLE'
,
NULL
,
NULL
,
'2019-03-27 13:34:41'
,
'2019-03-27 13:34:59'
,
1
,
1
);
INSERT
INTO
`sys_menu`
VALUES
(
1110777136265838594
,
'demos_show'
,
'0'
,
'[0],'
,
'demos展示'
,
'layui-icon layui-icon-fire'
,
'#'
,
40
,
1
,
'Y'
,
NULL
,
'ENABLE'
,
NULL
,
NULL
,
'2019-03-27 13:34:41'
,
'2019-03-27 13:34:59'
,
1
,
1
);
INSERT
INTO
`sys_menu`
VALUES
(
1110777366856089602
,
'excel_import'
,
'demos_show'
,
'[0],[demos_show],'
,
'excel导入'
,
''
,
'/excel/import'
,
10
,
2
,
'Y'
,
NULL
,
'ENABLE'
,
NULL
,
NULL
,
'2019-03-27 13:35:36'
,
NULL
,
1
,
NULL
);
INSERT
INTO
`sys_menu`
VALUES
(
1110777366856089602
,
'excel_import'
,
'demos_show'
,
'[0],[demos_show],'
,
'excel导入'
,
''
,
'/excel/import'
,
10
,
2
,
'Y'
,
NULL
,
'ENABLE'
,
NULL
,
NULL
,
'2019-03-27 13:35:36'
,
NULL
,
1
,
NULL
);
INSERT
INTO
`sys_menu`
VALUES
(
1110777491464667137
,
'excel_export'
,
'demos_show'
,
'[0],[demos_show],'
,
'excel导出'
,
''
,
'/excel/export'
,
20
,
2
,
'Y'
,
NULL
,
'ENABLE'
,
NULL
,
NULL
,
'2019-03-27 13:36:06'
,
NULL
,
1
,
NULL
);
INSERT
INTO
`sys_menu`
VALUES
(
1110777491464667137
,
'excel_export'
,
'demos_show'
,
'[0],[demos_show],'
,
'excel导出'
,
''
,
'/excel/export'
,
20
,
2
,
'Y'
,
NULL
,
'ENABLE'
,
NULL
,
NULL
,
'2019-03-27 13:36:06'
,
NULL
,
1
,
NULL
);
INSERT
INTO
`sys_menu`
VALUES
(
1110787391943098370
,
'advanced_form'
,
'demos_show'
,
'[0],[demos_show],'
,
'高级表单'
,
''
,
'/egForm'
,
30
,
2
,
'Y'
,
NULL
,
'ENABLE'
,
NULL
,
NULL
,
'2019-03-27 14:15:26'
,
NULL
,
1
,
NULL
);
COMMIT
;
COMMIT
;
-- ----------------------------
-- ----------------------------
...
@@ -284,7 +285,7 @@ CREATE TABLE `sys_operation_log` (
...
@@ -284,7 +285,7 @@ CREATE TABLE `sys_operation_log` (
`SUCCEED`
varchar
(
32
)
DEFAULT
NULL
COMMENT
'是否成功(字典)'
,
`SUCCEED`
varchar
(
32
)
DEFAULT
NULL
COMMENT
'是否成功(字典)'
,
`MESSAGE`
text
COMMENT
'备注'
,
`MESSAGE`
text
COMMENT
'备注'
,
PRIMARY
KEY
(
`OPERATION_LOG_ID`
)
USING
BTREE
PRIMARY
KEY
(
`OPERATION_LOG_ID`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
11107
77792913489923
DEFAULT
CHARSET
=
utf8
ROW_FORMAT
=
DYNAMIC
COMMENT
=
'操作日志'
;
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
11107
87420636332034
DEFAULT
CHARSET
=
utf8
ROW_FORMAT
=
DYNAMIC
COMMENT
=
'操作日志'
;
-- ----------------------------
-- ----------------------------
-- Table structure for sys_relation
-- Table structure for sys_relation
...
@@ -353,65 +354,66 @@ INSERT INTO `sys_relation` VALUES (1071348922618982402, 141, 5);
...
@@ -353,65 +354,66 @@ INSERT INTO `sys_relation` VALUES (1071348922618982402, 141, 5);
INSERT
INTO
`sys_relation`
VALUES
(
1071348922627371009
,
142
,
5
);
INSERT
INTO
`sys_relation`
VALUES
(
1071348922627371009
,
142
,
5
);
INSERT
INTO
`sys_relation`
VALUES
(
1071348922631565313
,
143
,
5
);
INSERT
INTO
`sys_relation`
VALUES
(
1071348922631565313
,
143
,
5
);
INSERT
INTO
`sys_relation`
VALUES
(
1071348922639953922
,
144
,
5
);
INSERT
INTO
`sys_relation`
VALUES
(
1071348922639953922
,
144
,
5
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527208525826
,
105
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418312687618
,
105
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527225303041
,
106
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418333659138
,
106
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527242080258
,
107
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418350436354
,
107
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527258857473
,
108
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418367213569
,
108
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527275634689
,
109
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418383990786
,
109
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527292411905
,
110
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418400768002
,
110
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527309189121
,
111
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418417545218
,
111
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527321772033
,
112
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418434322433
,
112
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527342743553
,
113
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418455293953
,
113
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527355326465
,
165
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418467876865
,
165
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527372103682
,
166
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418484654082
,
166
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527388880898
,
167
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418501431298
,
167
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527405658113
,
114
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418522402817
,
114
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527422435330
,
115
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418543374338
,
115
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527439212545
,
116
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418560151553
,
116
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527451795458
,
117
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418576928770
,
117
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527472766978
,
118
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418597900290
,
118
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527493738497
,
162
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418614677506
,
162
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527510515714
,
163
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418635649025
,
163
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527527292930
,
164
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418652426241
,
164
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527544070145
,
119
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418669203457
,
119
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527560847361
,
120
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418690174977
,
120
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527577624578
,
121
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418706952193
,
121
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527594401794
,
122
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418723729409
,
122
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527611179010
,
150
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418740506625
,
150
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527627956226
,
151
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418761478146
,
151
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527648927746
,
128
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418778255361
,
128
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527665704961
,
134
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418799226882
,
134
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527686676481
,
158
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418816004097
,
158
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527711842305
,
159
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418832781314
,
159
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527728619522
,
130
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418853752834
,
130
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527749591041
,
131
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418870530050
,
131
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527774756866
,
135
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418895695873
,
135
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527791534082
,
136
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418916667393
,
136
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527812505601
,
137
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418941833218
,
137
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527837671425
,
152
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418966999042
,
152
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527862837249
,
153
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787418996359170
,
153
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527883808769
,
154
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419021524993
,
154
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527908974593
,
132
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419046690818
,
132
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527938334722
,
138
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419071856641
,
138
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527963500546
,
139
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419097022466
,
139
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777527988666370
,
140
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419122188289
,
140
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528013832193
,
155
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419147354114
,
155
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528038998017
,
156
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419176714242
,
156
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528059969538
,
157
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419206074370
,
157
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528080941058
,
133
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419231240194
,
133
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528106106882
,
160
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419260600321
,
160
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528131272705
,
161
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419285766146
,
161
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528152244225
,
141
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419306737665
,
141
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528177410050
,
142
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419331903490
,
142
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528198381569
,
143
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419357069313
,
143
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528223547393
,
144
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419382235137
,
144
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528252907521
,
171
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419407400962
,
171
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528273879042
,
149
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419428372481
,
149
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528299044866
,
172
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419457732609
,
172
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528320016386
,
145
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419495481345
,
145
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528345182210
,
1110777136265838594
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419520647169
,
1110777136265838594
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528366153730
,
1110777366856089602
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419550007297
,
1110777366856089602
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110777528387125250
,
1110777491464667137
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419570978818
,
1110777491464667137
,
1
);
INSERT
INTO
`sys_relation`
VALUES
(
1110787419596144641
,
1110787391943098370
,
1
);
COMMIT
;
COMMIT
;
-- ----------------------------
-- ----------------------------
...
...
src/main/java/cn/stylefeng/guns/modular/demos/controller/EgFormController.java
0 → 100644
View file @
e2a03854
package
cn
.
stylefeng
.
guns
.
modular
.
demos
.
controller
;
import
cn.stylefeng.guns.core.common.page.LayuiPageFactory
;
import
cn.stylefeng.guns.core.common.page.LayuiPageInfo
;
import
cn.stylefeng.guns.modular.demos.entity.EgForm
;
import
cn.stylefeng.guns.modular.demos.model.EgFormParam
;
import
cn.stylefeng.roses.core.base.controller.BaseController
;
import
cn.stylefeng.roses.core.reqres.response.ResponseData
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
java.util.ArrayList
;
/**
* Guns复杂表单的示例控制器
*
* @author stylefeng
* @Date 2019-02-18 21:37:43
*/
@Controller
@RequestMapping
(
"/egForm"
)
public
class
EgFormController
extends
BaseController
{
private
String
PREFIX
=
"/modular/demos/form"
;
/**
* 跳转到主页面
*
* @author stylefeng
* @Date 2019-02-18
*/
@RequestMapping
(
""
)
public
String
index
()
{
return
PREFIX
+
"/egForm.html"
;
}
/**
* 新增页面
*
* @author stylefeng
* @Date 2019-02-18
*/
@RequestMapping
(
"/add"
)
public
String
add
()
{
return
PREFIX
+
"/egForm_add.html"
;
}
/**
* 新增接口
*
* @author stylefeng
* @Date 2019-02-18
*/
@RequestMapping
(
"/addItem"
)
@ResponseBody
public
ResponseData
addItem
(
EgFormParam
egFormParam
)
{
System
.
out
.
println
(
egFormParam
);
return
ResponseData
.
success
();
}
/**
* 删除接口
*
* @author stylefeng
* @Date 2019-02-18
*/
@RequestMapping
(
"/delete"
)
@ResponseBody
public
ResponseData
delete
(
EgFormParam
egFormParam
)
{
System
.
out
.
println
(
egFormParam
);
return
ResponseData
.
success
();
}
/**
* 查询列表
*
* @author stylefeng
* @Date 2019-02-18
*/
@ResponseBody
@RequestMapping
(
"/list"
)
public
LayuiPageInfo
list
(
EgFormParam
egFormParam
)
{
ArrayList
<
EgForm
>
records
=
new
ArrayList
<>();
EgForm
egForm
=
new
EgForm
();
egForm
.
setName
(
"高级表单"
);
egForm
.
setSingleTime
(
"2019-03-27 14:16:03"
);
egForm
.
setBetweenTime
(
"2019-02-07 - 2019-03-14"
);
egForm
.
setFenzuSelect
(
"fenzuSelect"
);
egForm
.
setFormId
(
111L
);
egForm
.
setLongText
(
"xxxxxx"
);
egForm
.
setSex
(
"M"
);
egForm
.
setSimpleSelect
(
"111"
);
egForm
.
setMultiSelectHidden
(
"shiro,mybatis-puls"
);
records
.
add
(
egForm
);
records
.
add
(
egForm
);
Page
<
EgForm
>
egFormPage
=
new
Page
<>();
egFormPage
.
setSize
(
10
);
egFormPage
.
setTotal
(
2
);
egFormPage
.
setRecords
(
records
);
return
LayuiPageFactory
.
createPageInfo
(
egFormPage
);
}
}
src/main/java/cn/stylefeng/guns/modular/demos/ExcelController.java
→
src/main/java/cn/stylefeng/guns/modular/demos/
controller/
ExcelController.java
View file @
e2a03854
package
cn
.
stylefeng
.
guns
.
modular
.
excel
;
package
cn
.
stylefeng
.
guns
.
modular
.
demos
.
controller
;
import
cn.afterturn.easypoi.entity.vo.MapExcelConstants
;
import
cn.afterturn.easypoi.entity.vo.MapExcelConstants
;
import
cn.afterturn.easypoi.excel.ExcelImportUtil
;
import
cn.afterturn.easypoi.excel.ExcelImportUtil
;
...
@@ -10,7 +10,7 @@ import cn.afterturn.easypoi.view.PoiBaseView;
...
@@ -10,7 +10,7 @@ import cn.afterturn.easypoi.view.PoiBaseView;
import
cn.stylefeng.guns.config.properties.GunsProperties
;
import
cn.stylefeng.guns.config.properties.GunsProperties
;
import
cn.stylefeng.guns.core.common.exception.BizExceptionEnum
;
import
cn.stylefeng.guns.core.common.exception.BizExceptionEnum
;
import
cn.stylefeng.guns.core.common.page.LayuiPageInfo
;
import
cn.stylefeng.guns.core.common.page.LayuiPageInfo
;
import
cn.stylefeng.guns.modular.demos.ExcelItem
;
import
cn.stylefeng.guns.modular.demos.
entity.
ExcelItem
;
import
cn.stylefeng.guns.modular.system.service.UserService
;
import
cn.stylefeng.guns.modular.system.service.UserService
;
import
cn.stylefeng.roses.core.reqres.response.ResponseData
;
import
cn.stylefeng.roses.core.reqres.response.ResponseData
;
import
cn.stylefeng.roses.kernel.model.exception.ServiceException
;
import
cn.stylefeng.roses.kernel.model.exception.ServiceException
;
...
...
src/main/java/cn/stylefeng/guns/modular/demos/entity/EgForm.java
0 → 100644
View file @
e2a03854
package
cn
.
stylefeng
.
guns
.
modular
.
demos
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* <p>
* Guns复杂表单的示例
* </p>
*
* @author stylefeng
* @since 2019-02-23
*/
@TableName
(
"sys_eg_form"
)
@Data
public
class
EgForm
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键id
*/
@TableId
(
"FORM_ID"
)
private
Long
formId
;
/**
* 名称
*/
@TableField
(
"NAME"
)
private
String
name
;
/**
* 单个时间
*/
@TableField
(
"SINGLE_TIME"
)
private
String
singleTime
;
/**
* 时间段
*/
@TableField
(
"BETWEEN_TIME"
)
private
String
betweenTime
;
/**
* 单行选择
*/
@TableField
(
"SIMPLE_SELECT"
)
private
String
simpleSelect
;
/**
* 分组选择
*/
@TableField
(
"FENZU_SELECT"
)
private
String
fenzuSelect
;
/**
* 搜索选择
*/
@TableField
(
"MODULES"
)
private
String
modules
;
/**
* 多个选择
*/
@TableField
(
"MULTI_SELECT_HIDDEN"
)
private
String
multiSelectHidden
;
/**
* 图片文件id
*/
@TableField
(
"PICTURE_INPUT_HIDDEN"
)
private
String
pictureInputHidden
;
/**
* 文件id
*/
@TableField
(
"FILE_INPUT_HIDDEN"
)
private
String
fileInputHidden
;
/**
* 开关标识
*/
@TableField
(
"CLOSE_FLAG"
)
private
String
closeFlag
;
/**
* 单选
*/
@TableField
(
"SEX"
)
private
String
sex
;
/**
* 复选框
*/
@TableField
(
"CHECKBOX"
)
private
String
checkbox
;
/**
* 数字
*/
@TableField
(
"NUMBER"
)
private
Integer
number
;
/**
* 长字段
*/
@TableField
(
"LONG_TEXT"
)
private
String
longText
;
}
src/main/java/cn/stylefeng/guns/modular/demos/ExcelItem.java
→
src/main/java/cn/stylefeng/guns/modular/demos/
entity/
ExcelItem.java
View file @
e2a03854
package
cn
.
stylefeng
.
guns
.
modular
.
demos
;
package
cn
.
stylefeng
.
guns
.
modular
.
demos
.
entity
;
import
cn.afterturn.easypoi.excel.annotation.Excel
;
import
cn.afterturn.easypoi.excel.annotation.Excel
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.baomidou.mybatisplus.annotation.*
;
...
...
src/main/java/cn/stylefeng/guns/modular/demos/model/EgFormParam.java
0 → 100644
View file @
e2a03854
package
cn
.
stylefeng
.
guns
.
modular
.
demos
.
model
;
import
cn.stylefeng.roses.kernel.model.validator.BaseValidatingParam
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* <p>
* Guns复杂表单的示例
* </p>
*
* @author stylefeng
* @since 2019-02-18
*/
@Data
public
class
EgFormParam
implements
Serializable
,
BaseValidatingParam
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* id
*/
private
Long
formId
;
/**
* 名称
*/
private
String
name
;
/**
* 单个时间
*/
private
String
singleTime
;
/**
* 时间段
*/
private
String
betweenTime
;
/**
* 单行选择框
*/
private
String
simpleSelect
;
/**
* 分组选择框
*/
private
String
fenzuSelect
;
/**
* 搜索选择框
*/
private
String
modules
;
/**
* 多个选择
*/
private
String
multiSelectHidden
;
/**
* 图片文件id
*/
private
String
pictureInputHidden
;
/**
* 文件id
*/
private
String
fileInputHidden
;
/**
* close
*/
private
String
closeFlag
;
/**
* 单选框
*/
private
String
sex
;
/**
* 复选框
*/
private
String
[]
checkbox
;
/**
* 数字选择
*/
private
Integer
number
;
/**
* 长字段
*/
private
String
longText
;
@Override
public
String
checkParam
()
{
return
null
;
}
}
src/main/java/cn/stylefeng/guns/modular/demos/model/EgFormResult.java
0 → 100644
View file @
e2a03854
package
cn
.
stylefeng
.
guns
.
modular
.
demos
.
model
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* <p>
* Guns复杂表单的示例
* </p>
*
* @author stylefeng
* @since 2019-02-18
*/
@Data
public
class
EgFormResult
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* id
*/
private
Long
formId
;
/**
* 名称
*/
private
String
name
;
/**
* 单个时间
*/
private
String
singleTime
;
/**
* 时间段
*/
private
String
betweenTime
;
/**
* 单行选择框
*/
private
String
simpleSelect
;
/**
* 分组选择框
*/
private
String
fenzuSelect
;
/**
* 搜索选择框
*/
private
String
modules
;
/**
* 多个选择
*/
private
String
multiSelectHidden
;
/**
* 图片文件id
*/
private
String
pictureInputHidden
;
/**
* 文件id
*/
private
String
fileInputHidden
;
/**
* close
*/
private
String
closeFlag
;
/**
* 单选框
*/
private
String
sex
;
/**
* 复选框
*/
private
String
[]
checkbox
;
/**
* 数字选择
*/
private
Integer
number
;
/**
* 长字段
*/
private
String
longText
;
}
src/main/webapp/assets/common/js/common.js
View file @
e2a03854
...
@@ -88,6 +88,7 @@ Feng.closeAllLoading = function () {
...
@@ -88,6 +88,7 @@ Feng.closeAllLoading = function () {
layui
.
config
({
layui
.
config
({
base
:
Feng
.
ctxPath
+
'/assets/common/module/'
base
:
Feng
.
ctxPath
+
'/assets/common/module/'
}).
extend
({
}).
extend
({
selectPlus
:
'selectPlus/selectPlus'
,
formSelects
:
'formSelects/formSelects-v4'
,
formSelects
:
'formSelects/formSelects-v4'
,
treetable
:
'treetable-lay/treetable'
,
treetable
:
'treetable-lay/treetable'
,
dropdown
:
'dropdown/dropdown'
,
dropdown
:
'dropdown/dropdown'
,
...
...
src/main/webapp/assets/common/module/selectPlus/selectPlus.js
0 → 100644
View file @
e2a03854
/**
* @ Name:selectPlus 加强版的选择框,可以多选、单选以及通过ulr导入数据
* @ Author: YWang
* @ License: MIT
*/
layui
.
define
(
'form'
,
function
(
exports
)
{
var
$
=
layui
.
$
,
form
=
layui
.
form
,
hint
=
layui
.
hint
()
// 字符常量
,
MOD_NAME
=
'selectPlus'
,
SELECT
=
'layui-form-select'
,
SELECTED
=
'layui-form-selected'
,
selectPlus
=
{
index
:
layui
.
selectPlus
?
layui
.
selectPlus
.
index
:
0
// 设置全局项
,
set
:
function
(
options
)
{
var
that
=
this
;
that
.
config
=
$
.
extend
({},
that
.
config
,
options
);
return
that
;
}
// 事件监听
,
on
:
function
(
events
,
callback
)
{
return
layui
.
onevent
.
call
(
this
,
MOD_NAME
,
events
,
callback
);
}
}
// 操作当前实例
,
thisIns
=
function
()
{
var
that
=
this
,
options
=
that
.
config
;
return
{
// 获取数据
getChecked
:
function
()
{
return
that
.
getChecked
.
call
(
that
);
},
// 配置数据
config
:
options
}
}
// 构造器
,
Class
=
function
(
options
)
{
var
that
=
this
;
that
.
index
=
++
selectPlus
.
index
;
that
.
config
=
$
.
extend
({},
that
.
config
,
selectPlus
.
config
,
options
);
that
.
render
();
};
//默认配置
Class
.
prototype
.
config
=
{
type
:
'checkbox'
,
valueSeparator
:
'/'
,
labelSeparator
:
' --- '
,
data
:
[],
valueName
:
'title'
,
label
:
[],
values
:
[],
url
:
''
,
method
:
'get'
,
where
:
''
,
contentType
:
''
,
headers
:
''
,
response
:
'data'
,
parseData
:
null
,
config
:
{
checkedName
:
'SELECTPLUS_CHECKED'
,
indexName
:
'SELECTPLUS_INDEX'
},
error
:
''
};
//渲染视图
Class
.
prototype
.
render
=
function
()
{
var
that
=
this
,
options
=
that
.
config
;
typeof
(
options
.
el
)
===
'string'
?
options
.
el
=
$
(
options
.
el
):
options
.
el
;
options
.
reElem
=
$
(
'<div class="layui-unselect layui-form-select">'
+
'<div class="layui-select-title">'
+
'<input type="text" placeholder="请选择" value="" readonly="" class="layui-input layui-unselect">'
+
'<i class="layui-edge"></i>'
+
'</div>'
+
'<dl class="layui-anim layui-anim-upbit">'
+
'<dd lay-value="" class="layui-select-tips layui-hide">请选择</dd>'
+
'</dl>'
+
'</div>'
);
// 事件
options
.
reElem
.
find
(
'.layui-select-title'
).
on
(
'click'
,
function
(
e
)
{
!
$
(
this
).
parent
().
hasClass
(
SELECTED
)
?
$
(
document
).
find
(
'.'
+
SELECT
).
removeClass
(
SELECTED
)
:
""
;
$
(
this
).
parent
().
toggleClass
(
SELECTED
);
});
$
(
document
).
on
(
'click'
,
function
(
e
)
{
(
$
(
e
.
target
).
parents
(
'.'
+
SELECT
).
length
<=
0
)
&&
(
options
.
reElem
.
hasClass
(
SELECTED
))
?
options
.
reElem
.
removeClass
(
SELECTED
):
""
;
});
!
Array
.
isArray
(
options
.
values
)
?
options
.
values
=
[
options
.
values
]
:
""
;
// 查找 表单的 filter
options
.
filter
=
options
.
el
.
parents
(
'.layui-form'
).
attr
(
'lay-filter'
);
options
.
el
.
append
(
options
.
reElem
);
if
(
options
.
url
)
{
// 获取后端数据
this
.
pullData
();
}
else
{
that
.
renderData
();
// 数据渲染
}
options
.
el
.
on
(
'click'
,
'.layui-select-title'
,
function
()
{
var
$title
=
$
(
this
),
$dd0
=
$title
.
next
().
find
(
'dd'
).
eq
(
0
);
if
(
!
$dd0
.
hasClass
(
'layui-hide'
))
{
$dd0
.
addClass
(
'layui-hide'
);
}
$title
.
find
(
'input'
).
val
(
options
.
values
.
join
(
options
.
valueSeparator
));
})
}
Class
.
prototype
.
pullData
=
function
()
{
var
that
=
this
,
options
=
that
.
config
;
$
.
ajax
({
type
:
options
.
method
||
'get'
,
url
:
options
.
url
,
contentType
:
options
.
contentType
,
data
:
options
.
where
||
{},
dataType
:
'json'
,
headers
:
options
.
headers
||
{},
success
:
function
(
res
)
{
//如果有数据解析的回调,则获得其返回的数据
if
(
typeof
options
.
parseData
===
'function'
)
{
res
=
options
.
parseData
(
res
)
||
res
[
options
.
response
];
}
// 如果是数组,则覆盖options.data
if
(
Array
.
isArray
(
res
))
{
options
.
data
=
that
.
formatData
(
res
);
options
.
error
=
''
;
that
.
renderData
();
}
else
{
options
.
error
=
'数据格式不对'
;
}
},
error
:
function
(
e
,
m
)
{
options
.
error
=
'数据接口请求异常:'
+
m
;
}
});
}
// 格式化数据
Class
.
prototype
.
formatData
=
function
(
data
)
{
var
that
=
this
,
options
=
that
.
config
,
valueName
=
options
.
valueName
,
values
=
options
.
values
,
checkedName
=
options
.
config
.
checkedName
,
indexName
=
options
.
config
.
indexName
;
layui
.
each
(
data
,
function
(
i
,
item
)
{
if
(
typeof
item
!==
'object'
)
{
data
[
i
]
=
{
title
:
item
}
}
data
[
i
][
indexName
]
=
i
;
if
(
!
data
[
i
][
checkedName
])
data
[
i
][
checkedName
]
=
false
;
layui
.
each
(
values
,
function
(
index
,
value
)
{
if
(
data
[
i
][
valueName
]
===
value
)
{
data
[
i
][
checkedName
]
=
true
;
}
})
});
values
.
splice
(
0
);
return
data
;
}
// 渲染数据
Class
.
prototype
.
renderData
=
function
(
data
)
{
var
that
=
this
,
options
=
that
.
config
,
type
=
options
.
type
,
id
=
that
.
index
,
data
=
data
?
that
.
formatData
(
data
)
:
that
.
formatData
(
options
.
data
)
items
=
{
// 多选
checkbox
:
function
(
config
,
data
,
id
)
{
var
CLASSNAME
=
'layui-form-checkbox'
,
CHECKED
=
'layui-form-checked'
,
el
=
config
.
reElem
.
find
(
'dl'
),
valueName
=
config
.
valueName
,
checkedName
=
config
.
config
.
checkedName
,
indexName
=
config
.
config
.
indexName
,
values
=
config
.
values
,
label
=
config
.
label
,
filter
=
config
.
filter
,
labelSeparator
=
config
.
labelSeparator
,
valueSeparator
=
config
.
valueSeparator
,
sum
=
0
;
// 添加选项
el
.
append
(
$
(
'<dd lay-value="全选"></dd>'
));
layui
.
each
(
data
,
function
(
i
,
item
)
{
el
.
append
(
$
(
'<dd lay-value="'
+
item
[
valueName
]
+
'"></dd>'
));
})
var
allEle
=
el
.
find
(
'dd'
).
eq
(
1
);
// 添加多选框
allEle
.
nextAll
().
each
(
function
(
index
)
{
var
$dd
=
$
(
this
),
item
=
data
[
index
],
layuiValue
=
item
[
valueName
],
title
=
layuiValue
;
if
(
label
.
length
>
0
)
{
title
=
""
;
layui
.
each
(
label
,
function
(
i
,
n
)
{
title
+=
item
[
n
];
i
<
(
label
.
length
-
1
)
?
title
+=
labelSeparator
:
''
;
})
}
var
checkbox
=
$
(
'<input type="checkbox" name="'
+
MOD_NAME
+
'checkbox'
+
id
+
'" yw-index="'
+
item
[
indexName
]
+
'" lay-skin="primary" title="'
+
title
+
'" layui-value="'
+
layuiValue
+
'">'
);
if
(
item
[
checkedName
])
{
checkbox
.
prop
(
'checked'
,
true
);
values
.
push
(
layuiValue
);
sum
++
;
}
$dd
.
html
(
checkbox
);
})
var
allcheckbox
=
$
(
'<input type="checkbox" selectplus-all lay-skin="primary" title="全选" layui-value="全选">'
);
sum
===
data
.
length
?
allcheckbox
.
prop
(
'checked'
,
true
)
:
""
;
allEle
.
html
(
allcheckbox
);
allEle
.
parent
().
prev
().
find
(
'input'
).
val
(
values
.
join
(
valueSeparator
));
// 添加事件
allEle
.
on
(
'click'
,
function
(
event
)
{
var
$all
=
$
(
this
),
checked
=
event
.
target
.
nodeName
===
'DD'
?
$all
.
find
(
'.'
+
CLASSNAME
).
toggleClass
(
CHECKED
).
hasClass
(
CHECKED
)
:
$all
.
find
(
'input'
).
prop
(
'checked'
);
// 禁止下拉框收回
$all
.
parents
(
'.'
+
SELECT
).
addClass
(
SELECTED
);
// 设置选中状态
$all
.
find
(
'input'
).
prop
(
'checked'
,
checked
);
$all
.
nextAll
().
each
(
function
()
{
var
dd
=
$
(
this
);
checked
?
dd
.
find
(
'.'
+
CLASSNAME
).
addClass
(
CHECKED
)
:
dd
.
find
(
'.'
+
CLASSNAME
).
removeClass
(
CHECKED
);
dd
.
find
(
'input'
).
prop
(
'checked'
,
checked
);
})
// 显示选中数据
layui
.
event
.
call
(
$all
,
MOD_NAME
,
'checkbox'
+
'('
+
MOD_NAME
+
')'
,
{
type
:
"checkbox"
,
ele
:
$all
,
eleChecked
:
checked
,
isAll
:
checked
});
})
allEle
.
nextAll
().
on
(
'click'
,
function
(
e
)
{
var
$dd
=
$
(
this
),
checked
=
event
.
target
.
nodeName
===
'DD'
?
$dd
.
find
(
'.'
+
CLASSNAME
).
toggleClass
(
CHECKED
).
hasClass
(
CHECKED
)
:
$dd
.
find
(
'input'
).
prop
(
'checked'
);
// 禁止下拉框收回
$dd
.
parents
(
'.'
+
SELECT
).
addClass
(
SELECTED
);
// 设置选中状态
$dd
.
find
(
'input'
).
prop
(
'checked'
,
checked
);
// 判断全选
var
$all
=
$dd
.
parents
(
'dl'
).
find
(
'dd'
).
eq
(
1
),
$dds
=
$all
.
nextAll
(),
sum
=
0
;
$dds
.
each
(
function
()
{
$
(
this
).
find
(
'input'
).
prop
(
'checked'
)
?
sum
++
:
''
;
})
if
(
sum
===
$dds
.
length
)
{
$all
.
find
(
'input'
).
prop
(
'checked'
,
true
);
$all
.
find
(
'.'
+
CLASSNAME
).
addClass
(
CHECKED
);
}
else
{
$all
.
find
(
'input'
).
prop
(
'checked'
,
false
);
$all
.
find
(
'.'
+
CLASSNAME
).
removeClass
(
CHECKED
);
}
// 显示选中数据
layui
.
event
.
call
(
$all
,
MOD_NAME
,
'checkbox'
+
'('
+
MOD_NAME
+
')'
,
{
type
:
"checkbox"
,
ele
:
$dd
,
eleChecked
:
checked
,
isAll
:
(
sum
===
$dds
.
length
)
});
// 阻断事件
event
.
stopPropagation
();
})
// 渲染多选框
// el.next().find('dl').addClass('yw-selectPlus');
form
.
render
(
'checkbox'
,
filter
);
},
// 单选
radio
:
function
(
config
,
data
,
id
)
{
var
CLASSNAME
=
'layui-form-radio'
,
CHECKED
=
'layui-form-radioed'
,
ICON
=
[
''
,
''
],
CHECKED_ICON
=
'layui-anim-scaleSpring'
,
elID
=
config
.
el
,
el
=
config
.
reElem
.
find
(
'dl'
),
valueName
=
config
.
valueName
,
checkedName
=
config
.
config
.
checkedName
,
indexName
=
config
.
config
.
indexName
,
checkedData
=
data
.
filter
(
function
(
item
)
{
return
item
[
checkedName
]
===
true
;
}),
values
=
config
.
values
,
label
=
config
.
label
,
filter
=
config
.
filter
,
labelSeparator
=
config
.
labelSeparator
,
valueSeparator
=
config
.
valueSeparator
;
// 添加选项
layui
.
each
(
data
,
function
(
i
,
item
)
{
el
.
append
(
'<dd lay-value="'
+
item
[
valueName
]
+
'"></dd>'
);
})
form
.
render
(
'select'
,
options
.
filter
);
// 渲染单选框
el
.
find
(
'dd'
).
eq
(
0
).
nextAll
().
each
(
function
(
index
)
{
var
$dd
=
$
(
this
),
item
=
data
[
index
],
layuiValue
=
item
[
valueName
],
title
=
layuiValue
;
if
(
label
.
length
>
0
)
{
title
=
""
;
layui
.
each
(
label
,
function
(
i
,
n
)
{
title
+=
item
[
n
];
i
<
(
label
.
length
-
1
)
?
title
+=
labelSeparator
:
''
;
})
}
var
dd
=
$
(
'<input type="radio" name="'
+
MOD_NAME
+
'radio'
+
id
+
'" yw-index="'
+
item
[
indexName
]
+
'" lay-skin="primary" title="'
+
title
+
'" layui-value="'
+
layuiValue
+
'">'
);
if
(
checkedData
.
length
>
0
&&
checkedData
[
0
][
indexName
]
===
item
[
indexName
])
{
dd
.
prop
(
'checked'
,
true
);
values
.
push
(
layuiValue
);
$dd
.
parent
().
prev
().
find
(
'input'
).
val
(
values
.
join
(
valueSeparator
))
}
$dd
.
html
(
dd
);
})
// el.next().find('dl').addClass('yw-selectPlus');
form
.
render
(
'radio'
,
filter
);
// 事件
el
.
find
(
'dd'
).
on
(
'click'
,
function
(
event
)
{
var
$dd
=
$
(
this
);
$dd
.
find
(
'.'
+
CLASSNAME
).
addClass
(
CHECKED
).
find
(
'i'
).
addClass
(
CHECKED_ICON
).
html
(
ICON
[
0
]);
$dd
.
find
(
'input'
).
prop
(
'checked'
,
true
);
$dd
.
siblings
().
find
(
'.'
+
CLASSNAME
).
removeClass
(
CHECKED
).
find
(
'i'
).
removeClass
(
CHECKED_ICON
).
html
(
ICON
[
1
]);
$dd
.
siblings
().
find
(
'input'
).
prop
(
'checked'
,
false
);
// 显示选中数据
layui
.
event
.
call
(
$dd
,
MOD_NAME
,
'radio'
+
'('
+
MOD_NAME
+
')'
,
{
type
:
"radio"
,
ele
:
$dd
,
eleChecked
:
true
,
isAll
:
false
});
})
}
};
// 选择时触发的事件
layui
.
onevent
.
call
(
that
,
MOD_NAME
,
type
+
'('
+
MOD_NAME
+
')'
,
that
.
checked
.
bind
(
that
));
items
[
type
]
?
items
[
type
](
options
,
data
,
id
)
:
hint
.
error
(
'不支持的'
+
type
+
'表单渲染'
);
}
// 选中数据处理
Class
.
prototype
.
checked
=
function
(
res
)
{
var
that
=
this
,
options
=
that
.
config
,
data
=
options
.
data
,
checkedName
=
options
.
config
.
checkedName
,
type
=
res
.
type
,
isAll
=
res
.
isAll
,
ele
=
res
.
ele
,
eleChecked
=
res
.
eleChecked
,
filter
=
options
.
el
.
attr
(
'lay-filter'
);
if
(
type
===
'checkbox'
)
{
options
.
values
=
[];
ele
.
parents
(
'dl'
).
find
(
'[type="checkbox"]'
).
each
(
function
(
i
)
{
var
$dd
=
$
(
this
),
ywIndex
=
$dd
.
attr
(
'yw-index'
),
checked
=
$dd
.
prop
(
'checked'
);
ywIndex
?
data
[
ywIndex
][
checkedName
]
=
checked
:
""
;
checked
&&
ywIndex
?
options
.
values
.
push
(
$dd
.
attr
(
'layui-value'
))
:
""
;
})
ele
.
parent
().
prev
().
find
(
'input'
).
val
(
options
.
values
.
join
(
options
.
valueSeparator
));
layui
.
event
.
call
(
ele
,
MOD_NAME
,
MOD_NAME
+
'('
+
filter
+
')'
,
{
checked
:
eleChecked
,
isAll
:
isAll
,
values
:
options
.
values
,
checkedData
:
data
.
filter
(
function
(
item
)
{
return
item
[
checkedName
]
===
true
;
}),
ele
:
ele
});
}
else
if
(
type
===
'radio'
)
{
var
index
=
ele
.
find
(
'input'
).
attr
(
'yw-index'
),
value
=
ele
.
find
(
'input'
).
attr
(
'layui-value'
);
options
.
values
=
[
value
];
ele
.
parent
().
prev
().
find
(
'input'
).
val
(
value
);
layui
.
each
(
data
,
function
(
i
,
item
)
{
item
[
checkedName
]
=
false
;
})
data
[
index
][
checkedName
]
=
true
;
layui
.
event
.
call
(
ele
,
MOD_NAME
,
MOD_NAME
+
'('
+
filter
+
')'
,
{
value
:
value
,
checkedData
:
data
[
index
],
ele
:
ele
});
}
}
// 获取选中数据
Class
.
prototype
.
getChecked
=
function
()
{
var
that
=
this
,
options
=
that
.
config
,
data
=
options
.
data
,
checkedName
=
options
.
config
.
checkedName
;
return
{
values
:
options
.
values
,
data
:
data
.
filter
(
function
(
item
)
{
return
item
[
checkedName
]
===
true
;
})
};
}
// 核心入口
selectPlus
.
render
=
function
(
options
)
{
var
ins
=
new
Class
(
options
);
return
thisIns
.
call
(
ins
);
};
exports
(
'selectPlus'
,
selectPlus
);
})
\ No newline at end of file
src/main/webapp/assets/modular/demos/form/egForm.js
0 → 100644
View file @
e2a03854
layui
.
use
([
'table'
,
'admin'
,
'ax'
],
function
()
{
var
$
=
layui
.
$
;
var
table
=
layui
.
table
;
var
$ax
=
layui
.
ax
;
var
admin
=
layui
.
admin
;
/**
* Guns复杂表单的示例管理
*/
var
EgForm
=
{
tableId
:
"egFormTable"
};
/**
* 初始化表格的列
*/
EgForm
.
initColumn
=
function
()
{
return
[[
{
type
:
'checkbox'
},
{
field
:
'formId'
,
hide
:
true
,
title
:
'主键id'
},
{
field
:
'name'
,
sort
:
true
,
title
:
'名称'
},
{
field
:
'singleTime'
,
sort
:
true
,
title
:
'单个时间'
},
{
field
:
'betweenTime'
,
sort
:
true
,
title
:
'时间段'
},
{
field
:
'simpleSelect'
,
sort
:
true
,
title
:
'单行选择'
},
{
field
:
'fenzuSelect'
,
sort
:
true
,
title
:
'分组选择'
},
{
field
:
'modules'
,
sort
:
true
,
title
:
'搜索选择'
},
{
field
:
'multiSelectHidden'
,
sort
:
true
,
title
:
'多个选择'
},
{
align
:
'center'
,
templet
:
function
(
d
)
{
// var url = d.imgUrl;
var
url
=
'https://pic.qqtn.com/up/2018-9/15367146917869444.jpg'
;
return
'<img src="'
+
url
+
'" class="tdImg" />'
;
},
title
:
'缩略图'
,
width
:
90
,
unresize
:
true
},
{
field
:
'fileInputHidden'
,
sort
:
true
,
title
:
'文件id'
},
{
field
:
'closeFlag'
,
sort
:
true
,
title
:
'开关标识'
},
{
field
:
'sex'
,
sort
:
true
,
title
:
'单选'
},
{
field
:
'checkbox'
,
sort
:
true
,
title
:
'复选框'
},
{
field
:
'number'
,
sort
:
true
,
title
:
'数字'
},
{
field
:
'longText'
,
sort
:
true
,
title
:
'长字段'
},
{
align
:
'center'
,
toolbar
:
'#tableBar'
,
title
:
'操作'
}
]];
};
/**
* 点击查询按钮
*/
EgForm
.
search
=
function
()
{
var
queryData
=
{};
queryData
[
'condition'
]
=
$
(
"#condition"
).
val
();
table
.
reload
(
EgForm
.
tableId
,
{
where
:
queryData
});
};
/**
* 弹出添加对话框
*/
EgForm
.
openAddDlg
=
function
()
{
admin
.
putTempData
(
'formOk'
,
false
);
top
.
layui
.
admin
.
open
({
type
:
2
,
title
:
'添加Guns复杂表单的示例'
,
content
:
Feng
.
ctxPath
+
'/egForm/add'
,
end
:
function
()
{
admin
.
getTempData
(
'formOk'
)
&&
table
.
reload
(
EgForm
.
tableId
);
}
});
};
/**
* 导出excel按钮
*/
EgForm
.
exportExcel
=
function
()
{
var
checkRows
=
table
.
checkStatus
(
EgForm
.
tableId
);
if
(
checkRows
.
data
.
length
===
0
)
{
Feng
.
error
(
"请选择要导出的数据"
);
}
else
{
table
.
exportFile
(
tableResult
.
config
.
id
,
checkRows
.
data
,
'xls'
);
}
};
/**
* 点击删除
*
* @param data 点击按钮时候的行数据
*/
EgForm
.
onDeleteItem
=
function
(
data
)
{
var
operation
=
function
()
{
var
ajax
=
new
$ax
(
Feng
.
ctxPath
+
"/egForm/delete"
,
function
(
data
)
{
Feng
.
success
(
"删除成功!"
);
table
.
reload
(
EgForm
.
tableId
);
},
function
(
data
)
{
Feng
.
error
(
"删除失败!"
+
data
.
responseJSON
.
message
+
"!"
);
});
ajax
.
set
(
"formId"
,
data
.
formId
);
ajax
.
start
();
};
Feng
.
confirm
(
"是否删除?"
,
operation
);
};
// 渲染表格
var
tableResult
=
table
.
render
({
elem
:
'#'
+
EgForm
.
tableId
,
url
:
Feng
.
ctxPath
+
'/egForm/list'
,
page
:
true
,
height
:
"full-158"
,
cellMinWidth
:
100
,
cols
:
EgForm
.
initColumn
()
});
// 搜索按钮点击事件
$
(
'#btnSearch'
).
click
(
function
()
{
EgForm
.
search
();
});
// 添加按钮点击事件
$
(
'#btnAdd'
).
click
(
function
()
{
window
.
location
.
href
=
Feng
.
ctxPath
+
"/egForm/add"
;
});
// 导出excel
$
(
'#btnExp'
).
click
(
function
()
{
EgForm
.
exportExcel
();
});
// 工具条点击事件
table
.
on
(
'tool('
+
EgForm
.
tableId
+
')'
,
function
(
obj
)
{
var
data
=
obj
.
data
;
var
layEvent
=
obj
.
event
;
if
(
layEvent
===
'delete'
)
{
EgForm
.
onDeleteItem
(
data
);
}
});
});
src/main/webapp/assets/modular/demos/form/egForm_add.js
0 → 100644
View file @
e2a03854
/**
* 详情对话框
*/
var
EgFormInfoDlg
=
{
data
:
{
title
:
""
,
singleTime
:
""
,
beginTime
:
""
,
endTime
:
""
,
multiSelect
:
""
,
pictureOne
:
""
,
number
:
""
,
singleSelectOne
:
""
,
singleSelectTwo
:
""
,
pictureTwo
:
""
,
longText
:
""
}
};
layui
.
use
([
'form'
,
'admin'
,
'ax'
,
'upload'
,
'laydate'
,
'selectPlus'
],
function
()
{
var
$
=
layui
.
jquery
;
var
$ax
=
layui
.
ax
;
var
form
=
layui
.
form
;
var
admin
=
layui
.
admin
;
var
upload
=
layui
.
upload
;
var
laydate
=
layui
.
laydate
;
var
selectPlus
=
layui
.
selectPlus
;
//初始化时间选择器
laydate
.
render
({
elem
:
'#singleTime'
,
type
:
'datetime'
});
laydate
.
render
({
elem
:
'#betweenTime'
,
range
:
true
//或 range: '~' 来自定义分割字符
});
//初始化多选
var
test
=
selectPlus
.
render
({
el
:
'#multiSelect'
,
data
:
[{
"id"
:
1
,
"name"
:
"spring"
},
{
"id"
:
2
,
"name"
:
"shiro"
},
{
"id"
:
3
,
"name"
:
"mybatis-puls"
},
{
"id"
:
4
,
"name"
:
"beetl"
}],
valueName
:
"name"
,
values
:
[
'abc'
],
valueSeparator
:
" --- "
});
selectPlus
.
on
(
'selectPlus(multiSelect)'
,
function
(
obj
)
{
console
.
log
(
obj
.
checked
);
//当前是否选中状态
console
.
log
(
obj
.
values
);
//选中的数据
console
.
log
(
obj
.
checkedData
);
//选中的相关数据
console
.
log
(
obj
.
isAll
);
//是否是全选
console
.
log
(
obj
.
ele
);
//点击的DOM
$
(
"#multiSelectHidden"
).
val
(
obj
.
values
);
});
//上传文件
upload
.
render
({
elem
:
'#fileBtn'
,
url
:
Feng
.
ctxPath
+
'/system/upload'
,
accept
:
'file'
,
before
:
function
(
obj
)
{
obj
.
preview
(
function
(
index
,
file
,
result
)
{
$
(
"#fileNameTip"
).
html
(
file
.
name
);
});
}
,
done
:
function
(
res
)
{
$
(
"#fileInputHidden"
).
val
(
res
.
data
.
fileId
);
Feng
.
success
(
res
.
message
);
}
,
error
:
function
()
{
Feng
.
error
(
"上传图片失败!"
);
}
});
//普通图片上传
upload
.
render
({
elem
:
'#picBtn'
,
url
:
Feng
.
ctxPath
+
'/system/upload'
,
before
:
function
(
obj
)
{
obj
.
preview
(
function
(
index
,
file
,
result
)
{
$
(
'#img1'
).
attr
(
'src'
,
result
);
});
}
,
done
:
function
(
res
)
{
$
(
"#pictureInputHidden"
).
val
(
res
.
data
.
fileId
);
Feng
.
success
(
res
.
message
);
}
,
error
:
function
()
{
Feng
.
error
(
"上传图片失败!"
);
}
});
//表单提交事件
form
.
on
(
'submit(btnSubmit)'
,
function
(
data
)
{
var
ajax
=
new
$ax
(
Feng
.
ctxPath
+
"/egForm/addItem"
,
function
(
data
)
{
Feng
.
success
(
"添加成功!"
);
//传给上个页面,刷新table用
admin
.
putTempData
(
'formOk'
,
true
);
//关掉对话框
admin
.
closeThisDialog
();
},
function
(
data
)
{
Feng
.
error
(
"添加失败!"
+
data
.
responseJSON
.
message
)
});
ajax
.
set
(
data
.
field
);
ajax
.
start
();
});
//返回按钮
$
(
"#backupPage"
).
click
(
function
()
{
window
.
location
.
href
=
Feng
.
ctxPath
+
"/egForm"
;
});
});
\ No newline at end of file
src/main/webapp/assets/modular/demos/form/form.css
0 → 100644
View file @
e2a03854
#egFormTable
+
.layui-table-view
tbody
>
tr
>
td
>
.layui-table-cell
{
height
:
60px
;
line-height
:
60px
;
}
.tdImg
{
width
:
50px
;
height
:
50px
;
max-width
:
none
;
cursor
:
pointer
;
}
\ No newline at end of file
src/main/webapp/pages/modular/demos/form/egForm.html
0 → 100644
View file @
e2a03854
@layout("/common/_container.html",{js:["/assets/modular/demos/form/egForm.js"],css:["/assets/modular/demos/form/form.css"]}){
<div
class=
"layui-body-header"
>
<span
class=
"layui-body-header-title"
>
Guns复杂表单的示例管理
</span>
</div>
<div
class=
"layui-fluid"
>
<div
class=
"layui-row layui-col-space15"
>
<div
class=
"layui-col-sm12 layui-col-md12 layui-col-lg12"
>
<div
class=
"layui-card"
>
<div
class=
"layui-card-body"
>
<div
class=
"layui-form toolbar"
>
<div
class=
"layui-form-item"
>
<div
class=
"layui-inline"
>
<input
id=
"condition"
class=
"layui-input"
type=
"text"
placeholder=
"名称"
/>
</div>
<div
class=
"layui-inline"
>
<button
id=
"btnSearch"
class=
"layui-btn icon-btn"
><i
class=
"layui-icon"
>

</i>
搜索
</button>
<button
id=
"btnAdd"
class=
"layui-btn icon-btn"
><i
class=
"layui-icon"
>

</i>
添加
</button>
<button
id=
"btnExp"
class=
"layui-btn icon-btn"
><i
class=
"layui-icon"
>

</i>
导出
</button>
</div>
</div>
</div>
<table
class=
"layui-table"
id=
"egFormTable"
lay-filter=
"egFormTable"
></table>
</div>
</div>
</div>
</div>
</div>
<script
type=
"text/html"
id=
"tableBar"
>
<
a
class
=
"layui-btn layui-btn-danger layui-btn-xs"
lay
-
event
=
"delete"
>
删除
<
/a
>
</script>
@}
\ No newline at end of file
src/main/webapp/pages/modular/demos/form/egForm_add.html
0 → 100644
View file @
e2a03854
@layout("/common/_container.html",{js:["/assets/modular/demos/form/egForm_add.js"]}){
<div
class=
"layui-body-header"
>
<span
class=
"layui-body-header-title"
>
表单的示例-添加
</span>
</div>
<div
class=
"layui-fluid "
style=
""
>
<div
class=
"layui-card"
>
<div
class=
"layui-card-body"
>
<form
id=
"egFormForm"
lay-filter=
"egFormForm"
class=
"layui-form model-form"
style=
"max-width: 700px;margin: 40px auto;"
>
<input
name=
"formId"
type=
"hidden"
/>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
名称
<span
style=
"color: red;"
>
*
</span></label>
<div
class=
"layui-input-block"
>
<input
id=
"name"
name=
"name"
placeholder=
"请输入标题"
type=
"text"
class=
"layui-input"
lay-verify=
"required"
required
autocomplete=
"off"
/>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
单个时间
</label>
<div
class=
"layui-input-block"
>
<input
id=
"singleTime"
name=
"singleTime"
placeholder=
"请输入单个时间,例如2015-01-12 12:00"
type=
"text"
class=
"layui-input"
autocomplete=
"off"
/>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
时间段
</label>
<div
class=
"layui-input-block"
>
<input
id=
"betweenTime"
name=
"betweenTime"
placeholder=
"请输入时间段,例如2019-02-06 - 2019-03-20"
type=
"text"
class=
"layui-input"
autocomplete=
"off"
/>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
单行选择框
</label>
<div
class=
"layui-input-block"
>
<select
name=
"simpleSelect"
lay-filter=
"simpleSelect"
>
<option
value=
""
></option>
<option
value=
"0"
>
写作
</option>
<option
value=
"1"
selected=
""
>
阅读
</option>
<option
value=
"2"
>
游戏
</option>
<option
value=
"3"
>
音乐
</option>
<option
value=
"4"
>
旅行
</option>
</select>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
分组选择框
</label>
<div
class=
"layui-input-block"
>
<select
name=
"fenzuSelect"
>
<option
value=
""
>
请选择问题
</option>
<optgroup
label=
"城市记忆"
>
<option
value=
"你工作的第一个城市"
>
你工作的第一个城市
</option>
</optgroup>
<optgroup
label=
"学生时代"
>
<option
value=
"你的工号"
>
你的工号
</option>
<option
value=
"你最喜欢的老师"
>
你最喜欢的老师
</option>
</optgroup>
</select>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
搜索选择框
</label>
<div
class=
"layui-input-block"
>
<select
name=
"modules"
lay-search=
""
>
<option
value=
""
>
直接选择或搜索选择
</option>
<option
value=
"1"
>
layer
</option>
<option
value=
"2"
>
form
</option>
<option
value=
"3"
>
layim
</option>
</select>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
多个选择
</label>
<input
id=
"multiSelectHidden"
name=
"multiSelectHidden"
type=
"hidden"
class=
"layui-input"
/>
<div
class=
"layui-input-block"
id=
"multiSelect"
lay-filter=
"multiSelect"
></div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
图片
</label>
<div
class=
"layui-input-block"
>
<input
id=
"pictureInputHidden"
name=
"pictureInputHidden"
type=
"hidden"
class=
"layui-input"
/>
<button
type=
"button"
class=
"layui-btn layui-btn-sm"
id=
"picBtn"
><i
class=
"layui-icon"
>
</i>
选择图片
</button>
<div
class=
"layui-upload-list"
>
<img
class=
"layui-upload-img"
id=
"img1"
width=
"92px"
height=
"92px"
>
</div>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
文件
</label>
<div
class=
"layui-input-block"
>
<input
id=
"fileInputHidden"
name=
"fileInputHidden"
type=
"hidden"
class=
"layui-input"
/>
<div
style=
"float: left;"
>
<button
type=
"button"
class=
"layui-btn layui-btn-sm"
id=
"fileBtn"
><i
class=
"layui-icon"
>
</i>
选择文件
</button>
</div>
<div
style=
"float: left;"
>
<span
class=
"layui-inline layui-upload-choose"
style=
"padding: 4px 10px;"
id=
"fileNameTip"
></span>
</div>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
开关-默认关
</label>
<div
class=
"layui-input-block"
>
<input
type=
"checkbox"
name=
"closeFlag"
lay-skin=
"switch"
lay-text=
"ON|OFF"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
单选框
</label>
<div
class=
"layui-input-block"
>
<input
type=
"radio"
name=
"sex"
value=
"M"
title=
"男"
checked=
""
>
<input
type=
"radio"
name=
"sex"
value=
"F"
title=
"女"
>
<input
type=
"radio"
name=
"sex"
value=
"D"
title=
"禁用"
disabled=
""
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
复选框
</label>
<div
class=
"layui-input-block"
>
<input
type=
"checkbox"
name=
"checkbox[]"
value=
"write"
title=
"写作"
>
<input
type=
"checkbox"
name=
"checkbox[]"
value=
"read"
title=
"阅读"
>
<input
type=
"checkbox"
name=
"checkbox[]"
value=
"game"
title=
"游戏"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
数字
</label>
<div
class=
"layui-input-inline"
>
<input
type=
"number"
name=
"number"
placeholder=
"请输入"
class=
"layui-input"
/>
</div>
<div
class=
"layui-form-mid layui-word-aux"
>
%
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
长字段
</label>
<div
class=
"layui-input-block"
>
<textarea
id=
"longText"
name=
"longText"
placeholder=
"请输入长字段"
class=
"layui-textarea"
></textarea>
</div>
<div
class=
"layui-form-mid layui-word-aux"
style=
"margin-left: 110px;"
>
客户、邀评人默认被分享
</div>
</div>
<div
class=
"layui-form-item"
>
<div
class=
"layui-input-block"
>
<button
class=
"layui-btn"
lay-filter=
"btnSubmit"
lay-submit
>
 
提交
 
</button>
<button
class=
"layui-btn layui-btn-primary"
type=
"button"
id=
"backupPage"
>
 
返回
 
</button>
</div>
</div>
</form>
</div>
</div>
</div>
@}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment