Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
farming
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
郑云飞
farming
Commits
674df5c6
Commit
674df5c6
authored
2 years ago
by
郑云飞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.开团时间明明是10点半但是在这之前居然也可下单付款修改
2.开团放多个地址选项 已知2个 3.用户信息没有随机头像和名称 4.显示售出多少份
parent
49970133
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
2755 additions
and
43 deletions
+2755
-43
src/main/java/com/yunniu/farming/util/FileUtil.java
+2
-2
src/main/java/com/yunniu/farming/webadmin/model/GroupBuyProduct.java
+3
-0
src/main/java/com/yunniu/farming/webadmin/service/impl/GroupBuyServiceimpl.java
+2
-1
src/main/java/com/yunniu/farming/webadmin/service/impl/WxServiceImpl.java
+18
-5
src/main/resources/application.properties
+6
-7
src/main/resources/mappings/GroupBuyProductMapper.xml
+23
-0
src/main/resources/static/css/dist_formSelects-v4.css
+808
-0
src/main/resources/static/js/dist_formSelects-v4.js
+1844
-0
src/main/resources/templates/groupBuy/addOrEdit.html
+48
-28
src/main/resources/templates/groupBuy/list.html
+1
-0
No files found.
src/main/java/com/yunniu/farming/util/FileUtil.java
View file @
674df5c6
...
@@ -10,9 +10,9 @@ public class FileUtil {
...
@@ -10,9 +10,9 @@ public class FileUtil {
public
static
final
String
Base
=
"D:/service"
;
public
static
final
String
Base
=
"D:/service"
;
//public static final String BasePath = "D:
//upload";
public
static
final
String
BasePath
=
"C://data
//upload"
;
public
static
final
String
BasePath
=
"/usr/upload"
;
//
public static final String BasePath = "/usr/upload";
//public static final String BasePath = "/upload";
//public static final String BasePath = "/upload";
public
static
final
String
Path
=
"/upload"
;
public
static
final
String
Path
=
"/upload"
;
...
...
This diff is collapsed.
Click to expand it.
src/main/java/com/yunniu/farming/webadmin/model/GroupBuyProduct.java
View file @
674df5c6
...
@@ -42,6 +42,9 @@ public class GroupBuyProduct {
...
@@ -42,6 +42,9 @@ public class GroupBuyProduct {
private
String
updateBy
;
private
String
updateBy
;
@TableField
(
exist
=
false
)
private
Integer
ipronum
;
/**
/**
* 辅助对象:分页信息对象
* 辅助对象:分页信息对象
*/
*/
...
...
This diff is collapsed.
Click to expand it.
src/main/java/com/yunniu/farming/webadmin/service/impl/GroupBuyServiceimpl.java
View file @
674df5c6
...
@@ -92,7 +92,8 @@ public class GroupBuyServiceimpl implements GroupBuyService {
...
@@ -92,7 +92,8 @@ public class GroupBuyServiceimpl implements GroupBuyService {
groupBuy
.
setEndDate
(
formatter
.
format
(
groupBuy
.
getEndTime
()));
groupBuy
.
setEndDate
(
formatter
.
format
(
groupBuy
.
getEndTime
()));
// 团购商品
// 团购商品
List
<
Product
>
productList
=
groupBuyProductDao
.
getProductList
(
id
);
List
<
Product
>
productList
=
groupBuyProductDao
.
getProductList
(
id
);
List
<
GroupBuyProduct
>
products
=
groupBuyProductDao
.
selectList
(
Wrappers
.<
GroupBuyProduct
>
lambdaQuery
().
eq
(
GroupBuyProduct:
:
getGroupBuyId
,
id
));
List
<
GroupBuyProduct
>
products
=
groupBuyProductDao
.
getList
(
id
);
// List<GroupBuyProduct> products = groupBuyProductDao.selectList(Wrappers.<GroupBuyProduct>lambdaQuery().eq(GroupBuyProduct::getGroupBuyId, id));
groupBuy
.
setProductList
(
JSON
.
toJSONString
(
productList
));
groupBuy
.
setProductList
(
JSON
.
toJSONString
(
productList
));
groupBuy
.
setProducts
(
products
);
groupBuy
.
setProducts
(
products
);
// 团购小区
// 团购小区
...
...
This diff is collapsed.
Click to expand it.
src/main/java/com/yunniu/farming/webadmin/service/impl/WxServiceImpl.java
View file @
674df5c6
...
@@ -3,9 +3,13 @@ package com.yunniu.farming.webadmin.service.impl;
...
@@ -3,9 +3,13 @@ package com.yunniu.farming.webadmin.service.impl;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yunniu.farming.util.*
;
import
com.yunniu.farming.util.*
;
import
com.yunniu.farming.webadmin.dao.*
;
import
com.yunniu.farming.webadmin.dao.CustomerDao
;
import
com.yunniu.farming.webadmin.model.*
;
import
com.yunniu.farming.webadmin.dao.IntegralrecDao
;
import
com.yunniu.farming.webadmin.service.GroupOrderService
;
import
com.yunniu.farming.webadmin.dao.OrderMainDao
;
import
com.yunniu.farming.webadmin.model.Customer
;
import
com.yunniu.farming.webadmin.model.Integralrec
;
import
com.yunniu.farming.webadmin.model.OrderMain
;
import
com.yunniu.farming.webadmin.model.Result
;
import
com.yunniu.farming.webadmin.service.WxService
;
import
com.yunniu.farming.webadmin.service.WxService
;
import
com.yunniu.farming.wx.WxConfigUtil
;
import
com.yunniu.farming.wx.WxConfigUtil
;
import
com.yunniu.farming.wx.WxUtil
;
import
com.yunniu.farming.wx.WxUtil
;
...
@@ -44,7 +48,10 @@ public class WxServiceImpl implements WxService {
...
@@ -44,7 +48,10 @@ public class WxServiceImpl implements WxService {
@Autowired
@Autowired
private
GroupOrderServiceImpl
groupOrderService
;
private
GroupOrderServiceImpl
groupOrderService
;
private
String
[]
imageUrl
=
{
"https://yuezhi-1314984551.cos.ap-shanghai.myqcloud.com/register/41e98a7cc2834450b41927219197d713.jpeg"
,
"https://yuezhi-1314984551.cos.ap-shanghai.myqcloud.com/register/65daa7ab2a9c46c99a580874c73465e3.jpeg"
,
"https://yuezhi-1314984551.cos.ap-shanghai.myqcloud.com/register/056bb47d0b274ab7b430ddd522b18ee3.jpeg"
,
"https://yuezhi-1314984551.cos.ap-shanghai.myqcloud.com/register/d8cee72db9e84166937e26e5871d9324.jpeg"
};
// @Autowired
// @Autowired
// private RedisUtil redisUtil;
// private RedisUtil redisUtil;
...
@@ -54,7 +61,7 @@ public class WxServiceImpl implements WxService {
...
@@ -54,7 +61,7 @@ public class WxServiceImpl implements WxService {
public
Result
login
(
String
code
)
{
public
Result
login
(
String
code
)
{
if
(
StringHelper
.
isEmpty
(
code
)
||
if
(
StringHelper
.
isEmpty
(
code
)
||
code
.
equals
(
"the code is a mock one"
))
{
code
.
equals
(
"the code is a mock one"
))
{
return
new
Result
(
103
,
"Error::获取小程序Js_code失败!"
);
return
new
Result
(
103
,
"Error::获取小程序Js_code失败!"
);
...
@@ -88,6 +95,12 @@ public class WxServiceImpl implements WxService {
...
@@ -88,6 +95,12 @@ public class WxServiceImpl implements WxService {
// u.setUnionId(unionId);
// u.setUnionId(unionId);
u
.
setIroleid
(
Customer
.
ROLE_NORMAL
);
//普通用户
u
.
setIroleid
(
Customer
.
ROLE_NORMAL
);
//普通用户
u
.
setTcreatetime
(
new
Date
());
u
.
setTcreatetime
(
new
Date
());
int
index
=
(
int
)
(
Math
.
random
()
*
imageUrl
.
length
);
u
.
setSwximgurl
(
imageUrl
[
index
]);
Random
random
=
new
Random
();
int
number
=
random
.
nextInt
(
10000
);
// 生成[0,10000)之间的随机整数
String
result
=
String
.
format
(
"%04d"
,
number
);
u
.
setSwxnick
(
"小菜果"
+
result
);
int
insert
=
this
.
customerDao
.
insert
(
u
);
int
insert
=
this
.
customerDao
.
insert
(
u
);
if
(
insert
>
0
)
{
if
(
insert
>
0
)
{
...
...
This diff is collapsed.
Click to expand it.
src/main/resources/application.properties
View file @
674df5c6
#spring.datasource.url=jdbc:mysql://152.136.113.101:3306/farming?autoReconnect=true&useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#spring.datasource.url=jdbc:mysql://152.136.113.101:3306/farming?autoReconnect=true&useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#spring.datasource.username=root
#spring.datasource.username=root
#spring.datasource.password=Root_123456
#spring.datasource.password=Root_123456
spring.datasource.url
=
jdbc:mysql://localhost:3306/farming?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
#spring.datasource.url=jdbc:mysql://localhost:3306/farming?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
spring.datasource.username
=
farming
#spring.datasource.username=farming
spring.datasource.password
=
PKWB6psxa7FBApZB
#spring.datasource.password=PKWB6psxa7FBApZB
spring.datasource.url
=
jdbc:mysql://db1.prd.jianghuxx.com:3317/farming?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
#spring.datasource.url=jdbc:mysql://db1.prd.jianghuxx.com:3317/farming?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
spring.datasource.username
=
root
#spring.datasource.username=root
spring.datasource.password
=
4f9fa23639242790
#spring.datasource.password=4f9fa23639242790
#7LwimZ27FqEnzIPg
#7LwimZ27FqEnzIPg
##47.101.199.10
##47.101.199.10
spring.datasource.driverClassName
=
com.mysql.cj.jdbc.Driver
spring.datasource.driverClassName
=
com.mysql.cj.jdbc.Driver
...
...
This diff is collapsed.
Click to expand it.
src/main/resources/mappings/GroupBuyProductMapper.xml
View file @
674df5c6
...
@@ -29,4 +29,26 @@
...
@@ -29,4 +29,26 @@
and gbp.status = 0
and gbp.status = 0
</select>
</select>
<select
id=
"getList"
resultType=
"com.yunniu.farming.webadmin.model.GroupBuyProduct"
>
SELECT
gbp.*,
ms.ipronum
FROM
group_buy_product gbp
LEFT JOIN (
SELECT
om.id,
om.group_order_id,
os.productid,
SUM( os.ipronum ) AS ipronum
FROM
order_main om
LEFT JOIN order_sub os ON om.id = os.mainid
WHERE
om.group_order_id IS NOT NULL
GROUP BY
os.productid
) ms ON gbp.product_id = ms.productid
where gbp.group_buy_id = #{id,jdbcType=BIGINT}
</select>
</mapper>
</mapper>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
src/main/resources/static/css/dist_formSelects-v4.css
0 → 100644
View file @
674df5c6
/* formSelects多选css */
select
[
xm-select
]
{
display
:
none
!important
;
}
.xm-select-parent
*
{
margin
:
0
;
padding
:
0
;
font-family
:
"Helvetica Neue"
,
Helvetica
,
"PingFang SC"
,
微软雅黑
,
Tahoma
,
Arial
,
sans-serif
;
box-sizing
:
initial
;
}
.xm-select-parent
{
text-align
:
left
;
}
.xm-select-parent
select
{
display
:
none
;
}
.xm-select-parent
.xm-select-title
{
position
:
relative
;
min-height
:
36px
;
}
.xm-select-parent
.xm-input
{
cursor
:
pointer
;
border-radius
:
2px
;
border-width
:
1px
;
border-style
:
solid
;
border-color
:
#E6E6E6
;
display
:
block
;
width
:
100%
;
box-sizing
:
border-box
;
background-color
:
#FFF
;
height
:
36px
;
line-height
:
1.3
;
padding-left
:
10px
;
outline
:
0
}
.xm-select-parent
.xm-select-sj
{
display
:
inline-block
;
width
:
0
;
height
:
0
;
border-style
:
dashed
;
border-color
:
transparent
;
overflow
:
hidden
;
position
:
absolute
;
right
:
10px
;
top
:
50%
;
margin-top
:
-3px
;
cursor
:
pointer
;
border-width
:
6px
;
border-top-color
:
#C2C2C2
;
border-top-style
:
solid
;
transition
:
all
.3s
;
-webkit-transition
:
all
.3s
}
.xm-select-parent
.xm-form-selected
.xm-select-sj
{
margin-top
:
-9px
;
transform
:
rotate
(
180deg
)
}
.xm-select-parent
.xm-form-select
dl
{
display
:
none
;
position
:
absolute
;
left
:
0
;
top
:
42px
;
padding
:
5px
0
;
z-index
:
999
;
min-width
:
100%
;
border
:
1px
solid
#d2d2d2
;
max-height
:
300px
;
overflow-y
:
auto
;
background-color
:
#fff
;
border-radius
:
2px
;
box-shadow
:
0
2px
4px
rgba
(
0
,
0
,
0
,
.12
);
box-sizing
:
border-box
;
animation-fill-mode
:
both
;
-webkit-animation-name
:
layui-upbit
;
animation-name
:
layui-upbit
;
-webkit-animation-duration
:
.3s
;
animation-duration
:
.3s
;
-webkit-animation-fill-mode
:
both
;
animation-fill-mode
:
both
}
@-webkit-keyframes
layui-upbit
{
from
{
-webkit-transform
:
translate3d
(
0
,
30px
,
0
);
opacity
:
.3
}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
opacity
:
1
}
}
@keyframes
layui-upbit
{
from
{
transform
:
translate3d
(
0
,
30px
,
0
);
opacity
:
.3
}
to
{
transform
:
translate3d
(
0
,
0
,
0
);
opacity
:
1
}
}
.xm-select-parent
.xm-form-selected
dl
{
display
:
block
}
.xm-select-parent
.xm-form-select
dl
dd
,
.xm-select-parent
.xm-form-select
dl
dt
{
padding
:
0
10px
;
line-height
:
36px
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
}
.xm-select-parent
.xm-form-select
dl
dd
{
cursor
:
pointer
;
height
:
36px
;
}
.xm-select-parent
.xm-form-select
dl
dd
:hover
{
background-color
:
#f2f2f2
}
.xm-select-parent
.xm-form-select
dl
dt
{
font-size
:
12px
;
color
:
#999
}
.layui-select-disabled
.xm-dis-disabled
{
border-color
:
#eee
!important
}
.xm-select-parent
.xm-form-select
dl
.xm-select-tips
{
padding-left
:
10px
!important
;
color
:
#999
;
font-size
:
14px
}
.xm-unselect
{
-moz-user-select
:
none
;
-webkit-user-select
:
none
;
-ms-user-select
:
none
}
.xm-form-checkbox
{
position
:
relative
;
display
:
block
;
vertical-align
:
middle
;
cursor
:
pointer
;
font-size
:
0
;
-webkit-transition
:
.1s
linear
;
transition
:
.1s
linear
;
box-sizing
:
border-box
;
height
:
auto
!important
;
line-height
:
normal
!important
;
border
:
none
!important
;
margin-right
:
0
;
padding-right
:
0
;
background
:
0
0
;
}
.xm-form-checkbox
>
i
{
color
:
#FFF
;
font-size
:
16px
;
width
:
16px
;
height
:
16px
;
position
:
absolute
;
top
:
9px
;
border
:
1px
solid
#5FB878
;
border-radius
:
3px
;
z-index
:
2
;
}
.xm-form-checkbox
:hover
>
i
{
border-color
:
#5FB878
;
}
.xm-form-checkbox
>
span
{
display
:
block
;
position
:
relative
;
padding
:
0
15px
0
30px
;
height
:
100%
;
font-size
:
14px
;
border-radius
:
2px
0
0
2px
;
background-color
:
#d2d2d2
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
background
:
0
0
;
color
:
#666
;
line-height
:
36px
;
}
.xm-select-parent
dl
{
width
:
100%
;
}
.xm-select-parent
dl
dd
{
position
:
relative
;
}
.xm-select-parent
dl
dd
>
i
:not
(
.icon-sousuo
)
{
position
:
absolute
;
right
:
10px
;
top
:
0
;
color
:
#AAAAAA
;
}
.xm-select-parent
dl
dd
.xm-select-this
div
i
{
border
:
none
;
color
:
#009688
;
font-size
:
18px
;
}
.xm-select-parent
dl
dd
.xm-select-this
div
i
:after
{
content
:
'\e613'
;
}
.xm-select-parent
dl
dd
.xm-dis-disabled
div
i
{
border-color
:
#C2C2C2
;
}
.xm-select-parent
dl
dd
.xm-dis-disabled.xm-select-this
div
i
{
color
:
#C2C2C2
;
}
.xm-select-radio
div
.xm-form-checkbox
>
i
{
border-radius
:
20px
;
}
.xm-select-parent
dl
.xm-select-radio
dd
.xm-select-this
div
i
:after
{
content
:
'\e62b'
;
}
.xm-dis-disabled
,
.xm-dis-disabled
:hover
{
cursor
:
not-allowed
!important
}
.xm-form-select
dl
dd
.xm-dis-disabled
{
background-color
:
#fff
!important
}
.xm-form-select
dl
dd
.xm-dis-disabled
span
{
color
:
#C2C2C2
}
.xm-form-select
dl
dd
.xm-dis-disabled
.xm-icon-yes
{
border-color
:
#C2C2C2
}
.xm-select-parent
{
position
:
relative
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
-webkit-user-select
:
none
}
.xm-select-parent
.xm-select
{
line-height
:
normal
;
height
:
auto
;
padding
:
4px
10px
1px
10px
;
overflow
:
hidden
;
min-height
:
36px
;
left
:
0
;
z-index
:
99
;
position
:
absolute
;
background
:
0
0
;
padding-right
:
20px
}
.xm-select-parent
.xm-select
:hover
{
border-color
:
#C0C4CC
}
.xm-select-parent
.xm-select
.xm-select-label
{
display
:
inline-block
;
margin
:
0
;
vertical-align
:
middle
}
.xm-select-parent
.xm-select-title
div
.xm-select-label
>
span
{
position
:
relative
;
padding
:
2px
5px
;
background-color
:
#009688
;
border-radius
:
2px
;
color
:
#FFF
;
display
:
inline-block
;
line-height
:
18px
;
height
:
18px
;
margin
:
2px
5px
2px
0
;
cursor
:
initial
;
user-select
:
none
;
font-size
:
14px
;
padding-right
:
25px
;
-webkit-user-select
:
none
;
}
.xm-select-parent
.xm-select-title
div
.xm-select-label
>
span
i
{
position
:
absolute
;
margin-left
:
8px
;
font-size
:
12px
;
cursor
:
pointer
;
line-height
:
20px
;
}
.xm-select-parent
.xm-select
.xm-select-input
{
border
:
none
;
height
:
28px
;
background-color
:
transparent
;
padding
:
0
;
vertical-align
:
middle
;
display
:
inline-block
;
width
:
50px
}
.xm-select-parent
.xm-select--suffix
input
{
border
:
none
}
.xm-form-selected
.xm-select
,
.xm-form-selected
.xm-select
:hover
{
border-color
:
#009688
!important
}
.xm-select--suffix
+
div
{
position
:
absolute
;
top
:
0
;
left
:
0
;
bottom
:
0
;
right
:
0
}
.xm-select-dis
.xm-select--suffix
+
div
{
z-index
:
100
;
cursor
:
no-drop
!important
;
opacity
:
.2
;
background-color
:
#FFF
;
}
.xm-select-disabled
,
.xm-select-disabled
:hover
{
color
:
#d2d2d2
!important
;
cursor
:
not-allowed
!important
;
background-color
:
#fff
}
.xm-select-none
{
display
:
none
;
margin
:
5px
0
;
text-align
:
center
;
}
.xm-select-none
:hover
{
background-color
:
#FFF
!important
}
.xm-select-empty
{
display
:
block
}
.xm-span-hide
{
display
:
none
!important
;
}
.layui-form-pane
.xm-select
,
.layui-form-pane
.xm-select
:hover
{
border
:
none
!important
;
top
:
0px
}
.layui-form-pane
.xm-select-title
{
border
:
1px
solid
#e6e6e6
!important
}
.xm-select-hide
{
display
:
none
!important
;
}
div
[
xm-hg
]
.xm-select-label
{
white-space
:
nowrap
;
overflow
:
hidden
;
position
:
absolute
;
right
:
30px
;
left
:
0
;
padding-left
:
10px
;
}
/* 颜色相关 */
div
[
xm-select-skin
]
.xm-select-title
div
.xm-select-label
>
span
{
border
:
1px
solid
#009688
}
div
[
xm-select-skin
]
.xm-select-title
div
.xm-select-label
>
span
i
:hover
{
opacity
:
.8
;
filter
:
alpha
(
opacity
=
80
);
cursor
:
pointer
}
div
[
xm-select-skin
=
default
]
.xm-select-title
div
.xm-select-label
>
span
{
background-color
:
#F0F2F5
;
color
:
#909399
;
border
:
1px
solid
#F0F2F5
}
div
[
xm-select-skin
=
default
]
.xm-select-title
div
.xm-select-label
>
span
i
{
color
:
#C0C4CC
}
div
[
xm-select-skin
=
default
]
.xm-select-title
div
.xm-select-label
>
span
i
:before
{
content
:
'\e60b'
;
font-size
:
16px
;
margin-left
:
-3px
;
}
div
[
xm-select-skin
=
default
]
dl
dd
:not
(
.xm-dis-disabled
)
i
{
border-color
:
#5FB878
}
div
[
xm-select-skin
=
default
]
dl
dd
.xm-select-this
:not
(
.xm-dis-disabled
)
i
{
color
:
#5FB878
}
div
[
xm-select-skin
=
default
]
.xm-form-selected
.xm-select
,
div
[
xm-select-skin
=
default
]
.xm-form-selected
.xm-select
:hover
{
border-color
:
#C0C4CC
!important
}
div
[
xm-select-skin
=
primary
]
.xm-select-title
div
.xm-select-label
>
span
{
background-color
:
#009688
;
color
:
#FFF
;
border
:
1px
solid
#009688
}
div
[
xm-select-skin
=
primary
]
.xm-select-title
div
.xm-select-label
>
span
i
{
background-color
:
#009688
;
color
:
#FFF
}
div
[
xm-select-skin
=
primary
]
dl
dd
:not
(
.xm-dis-disabled
)
i
{
border-color
:
#009688
}
div
[
xm-select-skin
=
primary
]
dl
dd
.xm-select-this
:not
(
.xm-dis-disabled
)
i
{
color
:
#009688
}
div
[
xm-select-skin
=
primary
]
.xm-form-selected
.xm-select
,
div
[
xm-select-skin
=
primary
]
.xm-form-selected
.xm-select
:hover
{
border-color
:
#009688
!important
}
div
[
xm-select-skin
=
normal
]
.xm-select-title
div
.xm-select-label
>
span
{
background-color
:
#1E9FFF
;
color
:
#FFF
;
border
:
1px
solid
#1E9FFF
}
div
[
xm-select-skin
=
normal
]
.xm-select-title
div
.xm-select-label
>
span
i
{
background-color
:
#1E9FFF
;
color
:
#FFF
}
div
[
xm-select-skin
=
normal
]
dl
dd
:not
(
.xm-dis-disabled
)
i
{
border-color
:
#1E9FFF
}
div
[
xm-select-skin
=
normal
]
dl
dd
.xm-select-this
:not
(
.xm-dis-disabled
)
i
{
color
:
#1E9FFF
}
div
[
xm-select-skin
=
normal
]
.xm-form-selected
.xm-select
,
div
[
xm-select-skin
=
normal
]
.xm-form-selected
.xm-select
:hover
{
border-color
:
#1E9FFF
!important
}
div
[
xm-select-skin
=
warm
]
.xm-select-title
div
.xm-select-label
>
span
{
background-color
:
#FFB800
;
color
:
#FFF
;
border
:
1px
solid
#FFB800
}
div
[
xm-select-skin
=
warm
]
.xm-select-title
div
.xm-select-label
>
span
i
{
background-color
:
#FFB800
;
color
:
#FFF
}
div
[
xm-select-skin
=
warm
]
dl
dd
:not
(
.xm-dis-disabled
)
i
{
border-color
:
#FFB800
}
div
[
xm-select-skin
=
warm
]
dl
dd
.xm-select-this
:not
(
.xm-dis-disabled
)
i
{
color
:
#FFB800
}
div
[
xm-select-skin
=
warm
]
.xm-form-selected
.xm-select
,
div
[
xm-select-skin
=
warm
]
.xm-form-selected
.xm-select
:hover
{
border-color
:
#FFB800
!important
}
div
[
xm-select-skin
=
danger
]
.xm-select-title
div
.xm-select-label
>
span
{
background-color
:
#FF5722
;
color
:
#FFF
;
border
:
1px
solid
#FF5722
}
div
[
xm-select-skin
=
danger
]
.xm-select-title
div
.xm-select-label
>
span
i
{
background-color
:
#FF5722
;
color
:
#FFF
}
div
[
xm-select-skin
=
danger
]
dl
dd
:not
(
.xm-dis-disabled
)
i
{
border-color
:
#FF5722
}
div
[
xm-select-skin
=
danger
]
dl
dd
.xm-select-this
:not
(
.xm-dis-disabled
)
i
{
color
:
#FF5722
}
div
[
xm-select-skin
=
danger
]
.xm-form-selected
.xm-select
,
div
[
xm-select-skin
=
danger
]
.xm-form-selected
.xm-select
:hover
{
border-color
:
#FF5722
!important
}
/* 多选联动 */
.xm-select-parent
.layui-form-danger
+
.xm-select-title
.xm-select
{
border-color
:
#FF5722
!important
;
}
.xm-select-linkage
li
{
padding
:
10px
0px
;
cursor
:
pointer
;
}
.xm-select-linkage
li
span
{
padding-left
:
20px
;
padding-right
:
30px
;
display
:
inline-block
;
height
:
20px
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.xm-select-linkage
li
.xm-select-this
span
{
border-left
:
5px
solid
#009688
;
color
:
#009688
;
padding-left
:
15px
;
}
.xm-select-linkage-group
{
position
:
absolute
;
left
:
0
;
top
:
0
;
right
:
0
;
bottom
:
0
;
overflow-x
:
hidden
;
overflow-y
:
auto
;
}
.xm-select-linkage-group
li
:hover
{
border-left
:
1px
solid
#009688
;
}
.xm-select-linkage-group
li
:hover
span
{
padding-left
:
19px
;
}
.xm-select-linkage-group
li
.xm-select-this
:hover
span
{
padding-left
:
15px
;
border-left-width
:
4px
;
}
.xm-select-linkage-group
:nth-child
(
4n
+
1
)
{
background-color
:
#EFEFEF
;
left
:
0
;
}
.xm-select-linkage-group
:nth-child
(
4n
+
1
)
li
.xm-select-active
{
background-color
:
#F5F5F5
;
}
.xm-select-linkage-group
:nth-child
(
4n
+
2
)
{
background-color
:
#F5F5F5
;
left
:
100px
;
}
.xm-select-linkage-group
:nth-child
(
4n
+
3
)
li
.xm-select-active
{
background-color
:
#FAFAFA
;
}
.xm-select-linkage-group
:nth-child
(
4n
+
3
)
{
background-color
:
#FAFAFA
;
left
:
200px
;
}
.xm-select-linkage-group
:nth-child
(
4n
+
3
)
li
.xm-select-active
{
background-color
:
#FFFFFF
;
}
.xm-select-linkage-group
:nth-child
(
4n
+
4
)
{
background-color
:
#FFFFFF
;
left
:
300px
;
}
.xm-select-linkage-group
:nth-child
(
4n
+
4
)
li
.xm-select-active
{
background-color
:
#EFEFEF
;
}
.xm-select-linkage
li
{
list-style
:
none
;
}
.xm-select-linkage-hide
{
display
:
none
;
}
.xm-select-linkage-show
{
display
:
block
;
}
div
[
xm-select-skin
=
'default'
]
.xm-select-linkage
li
.xm-select-this
span
{
border-left-color
:
#5FB878
;
color
:
#5FB878
;
}
div
[
xm-select-skin
=
'default'
]
.xm-select-linkage-group
li
:hover
{
border-left-color
:
#5FB878
;
}
div
[
xm-select-skin
=
'primary'
]
.xm-select-linkage
li
.xm-select-this
span
{
border-left-color
:
#1E9FFF
;
color
:
#1E9FFF
;
}
div
[
xm-select-skin
=
'primary'
]
.xm-select-linkage-group
li
:hover
{
border-left-color
:
#1E9FFF
;
}
div
[
xm-select-skin
=
'normal'
]
.xm-select-linkage
li
.xm-select-this
span
{
border-left-color
:
#1E9FFF
;
color
:
#1E9FFF
;
}
div
[
xm-select-skin
=
'normal'
]
.xm-select-linkage-group
li
:hover
{
border-left-color
:
#1E9FFF
;
}
div
[
xm-select-skin
=
'warm'
]
.xm-select-linkage
li
.xm-select-this
span
{
border-left-color
:
#FFB800
;
color
:
#FFB800
;
}
div
[
xm-select-skin
=
'warm'
]
.xm-select-linkage-group
li
:hover
{
border-left-color
:
#FFB800
;
}
div
[
xm-select-skin
=
'danger'
]
.xm-select-linkage
li
.xm-select-this
span
{
border-left-color
:
#FF5722
;
color
:
#FF5722
;
}
div
[
xm-select-skin
=
'danger'
]
.xm-select-linkage-group
li
:hover
{
border-left-color
:
#FF5722
;
}
/* 快捷操作 */
.xm-select-tips
[
style
]
:hover
{
background-color
:
#FFF
!important
;
}
.xm-select-parent
dd
>
.xm-cz
{
position
:
absolute
;
top
:
0px
;
right
:
10px
;
}
.xm-select-parent
dd
>
.xm-cz-group
{
margin-right
:
30px
;
border-right
:
2px
solid
#ddd
;
height
:
16px
;
margin-top
:
10px
;
line-height
:
16px
;
overflow
:
hidden
;
}
.xm-select-parent
dd
>
.xm-cz-group
.xm-cz
{
display
:
inline-block
;
margin-right
:
30px
;
}
.xm-select-parent
dd
>
.xm-cz-group
.xm-cz
i
{
margin-right
:
10px
;
}
.xm-select-parent
dd
>
.xm-cz-group
[
show
=
'name'
]
.xm-cz
i
{
display
:
none
;
}
.xm-select-parent
dd
>
.xm-cz-group
[
show
=
'icon'
]
.xm-cz
span
{
display
:
none
;
}
.xm-select-parent
dd
.xm-cz
:hover
{
color
:
#009688
;
}
div
[
xm-select-skin
=
'default'
]
dd
.xm-cz
:hover
{
color
:
#C0C4CC
;
}
div
[
xm-select-skin
=
'primary'
]
dd
.xm-cz
:hover
{
color
:
#009688
;
}
div
[
xm-select-skin
=
'normal'
]
dd
.xm-cz
:hover
{
color
:
#1E9FFF
;
}
div
[
xm-select-skin
=
'warm'
]
dd
.xm-cz
:hover
{
color
:
#FFB800
;
}
div
[
xm-select-skin
=
'danger'
]
dd
.xm-cz
:hover
{
color
:
#FF5722
;
}
/* 下拉里面的搜索 */
.xm-select-tips
.xm-input
{
border
:
none
;
border-bottom
:
1px
solid
#E6E6E6
;
padding-left
:
27px
;
}
.xm-select-tips
.icon-sousuo
{
position
:
absolute
;
}
.xm-select-tips.xm-dl-input
{
display
:
none
;
}
div
[
xm-select-search-type
=
"1"
]
.xm-select-tips.xm-dl-input
{
display
:
block
;
}
div
[
xm-select-search-type
=
"1"
]
.xm-select
.xm-select-input
{
display
:
none
!important
;
}
/* 阿里巴巴矢量图标库 */
@font-face
{
font-family
:
"xm-iconfont"
;
src
:
url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.eot?t=1534240067831')
;
/* IE9*/
src
:
url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.eot?t=1534240067831#iefix')
format
(
'embedded-opentype'
),
/* IE6-IE8 */
url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAsYAAsAAAAAEQwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY8ukovY21hcAAAAYAAAACrAAACPBtV6wxnbHlmAAACLAAABnEAAAmMovtEvWhlYWQAAAigAAAAMQAAADYSctBCaGhlYQAACNQAAAAgAAAAJAgBA69obXR4AAAI9AAAABsAAAAwMCX//WxvY2EAAAkQAAAAGgAAABoN8gwubWF4cAAACSwAAAAeAAAAIAEiAM9uYW1lAAAJTAAAAUUAAAJtPlT+fXBvc3QAAAqUAAAAhAAAALJ1LunfeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkYWacwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGByeMbwwZ27438AQw9zMcAQozAiSAwDk4AxmeJzlks0JwzAMhZ8bN/1xD4GU0h2Se26BbJMJOkkn6KmTPbJF8mT5UGg3qMRn0EPIRs8A9gAq0YsIhDcCLF5SQ9YrnLMe8VB9RSMlMjCxYcueIyfOy7CuAFHU7lP9iqApt5L3ksBJbzlgZ9PVkXDUvbWa6x8T/i0u+XyWKtmmHW0NDI55yeRok2DjaKdg65jX7Bzzm71jXnN08vzJkQvg7Ng/WAYH9Qb3wzM/AHicjVVvbFzFEd/Zfbv7/vn9uXf33vl8Pt/dO99BHOzEZ9/DKTImRS0KjUoLDUFCjtpCMGkT1D9qldQmhkiUSv2G1BBB1VYqilGREOIDViWEGzttqkpI/cAXqyL5gFRALVIF+VCJe9fZd+fEpR/o6d3s7G9mZ2dmZ3aJIKR3h0ZYmVgkIjGZJV8mDxECtenOTDOu1UU+hJoD+TCqzcNMk2V8O5OCbDVRPgZhEt4JCNTZ/4HA3+DfuWIxl8pcFFErG3K7oD7fvev8UaMUmEu259lrRjBsfs6cLhYbRfzSbSjGRVAkfQYihUXsyPkHTVyyZDNmXzSHg3Tl+aPKxpJFqbWGdtLl8w8iYDxuDTQIx7yc1YCdIx7Jk3HSwbwQwGBcyMKZVtG0ZCuJxjFJBb+foMSfhJaPOSr4FYgwSwqIx2MHJALtAdBi/7xcSMJL+fxmmBS2guD61tZm96X02mgcj0J1NAaIR9UMmhXIV24FuLUC71+r1AEmK1AYrQHUK/Tly/m8MrOZz2+FSf7jzc3NK9XR9F2lVq+gmRp0r+HK9B+VJmR263Rgd7ALwR/FOFfx/FeJS0YxQh9drakgMJhaBVizkwgqWxLD6eQ0Qo8f7p44fJziSH9x+PjLZUO+/jZ9+K35X37ljn/Rv+yW4Ziuf2nl4PfS5/LrP47OHTsFJULYjf369UZAEBmSqEOSJmG4Me6LeznA0BFkcDoJlGynVzmH2vY21DhPr25v9DjvbfTp2TXG1s5mlK0q4S7lT++6obbRox/s6CHF2LMEsHvoFfSFQIKnKQMZJVFCD6WH0p0PVvvcRx8uph8eUks0jOFNtskOkpDsJ18k9+NqVRg3qqMCSSerjyRuYUi1/vFH7YIqikGVcD+ehFl/pqPSPKZ6DG6mHisljFhBFvU/PoRkSNd/JHO6Ja5JOXcfwIGJbm/igBq/hn8Kfb57YbYUxyX4cwkLKH1u4gD9GVSL6USxCjjCO2p8VdcvH9XRYIQWqUblu3pR/v2BvXMAc3tTmJiDAQ895B9NL0C9BFdKqqRKczDX/Whg7O1irVbcqZ8/sbfYBOZwihC+6wSDzszUf+dF7rRO1O+fKaDO+nXOr6+vf8L5J44Qe4UvnlyRntwrxMoKzpFdeRJBNb9dGyiur1+nE59R+uwi9M1G395jb9KP0bcK2YM9nJB5cojcS75OFskxclzdc+pW699z8iYbtf14BGKf77ruZNyXKC0e50OEBI+V/Aug5Dex/9WjJfipuqnS00gfybjXbNe1f762tXmRPp3Bdl/l6g5JXyqXR0bK8J3PR+jvwYs8/GBnTM+kr8FX4ZknwC16XtG9iH9QfNn1vDHPe2GAj3ieV3XdF2+IPdeteh62Ra+HfQrsKWKSBtlHSOBgM7KkKQBLWnZoq1mVwotCLRGhOtSkMzMuqq2ml3SqUehdnZtynbtPLB88/Dy9dDrYVzoy/MTT6Svnlpd/AHueon5wpnGsEae/PZm+d3Jp6SSUTy7R3xw4f9/B5RN3O+5t3VNncjm6Cnt+uLx8DpedGj4yvD84HceNxTcG6ku4VPmZ9n6nNdj95BHyB3IJKxBPsKm6rpn4QopmqzlFm1MwqdxO5rPGnIc7aSfCGg1Vqyo6nUlQhnh7WiFhXzgGhVC4qjPRki9xdGCc4zXeSWb9BG1ktlqz2Q5Y7S2sIJfivkpVKCCDpyCWdbQzECj76qMVqvyJ/LxyI2rTv1bTC25lSM9xAUJ4Lc+U0wXTsKXDmaA8tHX+hvDt4Wa9IHLcMUBz9VwpL4xi2aGasAPPKNUbbmD/2jAtk0uXY4eJx8zRgj9iAnVNt5X+BL5vlHTOaiOmG7g6+7ZBNUOaefNXuJF3u25RjVvBLeW8E4wV7ZJBpbAXXGnqrwgupWVTAKqZjq5HbW44fMguNJhgwmw8oOk8GCqE8F3GhLB0uS/UDVt4lgjtqGxK/rpwuaDAqKHZNuWmJjVKuWUxbpg2B9DtoRdN3TKF9B0hw4p41C5i3CI9w4civP3aQLlmLMK3wpJpaI7BvmlhPtH3nPWCKQAdE2hK9zyuUeAm921qCA2kvqY8N1yDMq4beJlG+4XQqHDCQnqPlJIyyN579S4tIGcRv/82BbFfK9SgnVHkZzMeaSQjqR5/fP5XF2Chh+sW0g0gn27snqXv3/bsszsfJbCAIiTdjRTVCBL6jV0K5D8H/8xVAAAAeJxjYGRgYADi16c/vIvnt/nKwM3CAALXZxxzhtH///23YVFhbgZyORiYQKIAm34OJQAAAHicY2BkYGBu+N/AEMOi/P/f//8sKgxAERTAAwCmuAa3eJxjYWBgYAFhRiiNFf//z6L8/x+IDQAkCQRQAAAAAAAAjAEAATgBfgGaAiACbgMMA2AEhATGAAB4nGNgZGBg4GE4DMQgwATEXEDIwPAfzGcAAB2tAfIAAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nG2L3QqCQBCFZ9RWU7sOfAeh8IFi3N10EHYUG1p8+gSjqz44F+cPEjgo4T81Jphihic0mGOBZyyxwhovUCxKIe4ylthRuDqV+I22UcLQ6+QH4ubWdZZkU3m4o/0tUqtSvT33TPLits12fzc+zhRcvoquo0o281OLhcMw7Q+AD8sULE0=')
format
(
'woff'
),
url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.ttf?t=1534240067831')
format
(
'truetype'
),
/* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.svg?t=1534240067831#iconfont')
format
(
'svg'
);
/* iOS 4.1- */
}
.xm-iconfont
{
font-family
:
"xm-iconfont"
!important
;
font-size
:
16px
;
font-style
:
normal
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
}
.icon-quanxuan
:before
{
content
:
"\e62c"
;
}
.icon-caidan
:before
{
content
:
"\e610"
;
}
.icon-fanxuan
:before
{
content
:
"\e837"
;
}
.icon-pifu
:before
{
content
:
"\e668"
;
}
.icon-qingkong
:before
{
content
:
"\e63e"
;
}
.icon-sousuo
:before
{
content
:
"\e600"
;
}
.icon-danx
:before
{
content
:
"\e62b"
;
}
.icon-duox
:before
{
content
:
"\e613"
;
}
.icon-close
:before
{
content
:
"\e601"
;
}
.icon-expand
:before
{
content
:
"\e641"
;
}
This diff is collapsed.
Click to expand it.
src/main/resources/static/js/dist_formSelects-v4.js
0 → 100644
View file @
674df5c6
'use strict'
;
var
_typeof
=
typeof
Symbol
===
"function"
&&
typeof
Symbol
.
iterator
===
"symbol"
?
function
(
obj
)
{
return
typeof
obj
;
}
:
function
(
obj
)
{
return
obj
&&
typeof
Symbol
===
"function"
&&
obj
.
constructor
===
Symbol
&&
obj
!==
Symbol
.
prototype
?
"symbol"
:
typeof
obj
;
};
function
_defineProperty
(
obj
,
key
,
value
)
{
if
(
key
in
obj
)
{
Object
.
defineProperty
(
obj
,
key
,
{
value
:
value
,
enumerable
:
true
,
configurable
:
true
,
writable
:
true
});
}
else
{
obj
[
key
]
=
value
;
}
return
obj
;
}
/**
* name: formSelects
* 基于Layui Select多选
* version: 4.0.0.0910
* http://sun.faysunshine.com/layui/formSelects-v4/dist/formSelects-v4.js
*/
(
function
(
layui
,
window
,
factory
)
{
if
((
typeof
exports
===
'undefined'
?
'undefined'
:
_typeof
(
exports
))
===
'object'
)
{
// 支持 CommonJS
module
.
exports
=
factory
();
}
else
if
(
typeof
define
===
'function'
&&
define
.
amd
)
{
// 支持 AMD
define
(
factory
);
}
else
if
(
window
.
layui
&&
layui
.
define
)
{
//layui加载
layui
.
define
([
'jquery'
],
function
(
exports
)
{
exports
(
'formSelects'
,
factory
());
});
}
else
{
window
.
formSelects
=
factory
();
}
})(
typeof
layui
==
'undefined'
?
null
:
layui
,
window
,
function
()
{
var
v
=
'4.0.0.0910'
,
NAME
=
'xm-select'
,
PNAME
=
'xm-select-parent'
,
INPUT
=
'xm-select-input'
,
TDIV
=
'xm-select--suffix'
,
THIS
=
'xm-select-this'
,
LABEL
=
'xm-select-label'
,
SEARCH
=
'xm-select-search'
,
SEARCH_TYPE
=
'xm-select-search-type'
,
SHOW_COUNT
=
'xm-select-show-count'
,
CREATE
=
'xm-select-create'
,
CREATE_LONG
=
'xm-select-create-long'
,
MAX
=
'xm-select-max'
,
SKIN
=
'xm-select-skin'
,
DIRECTION
=
"xm-select-direction"
,
HEIGHT
=
'xm-select-height'
,
DISABLED
=
'xm-dis-disabled'
,
DIS
=
'xm-select-dis'
,
TEMP
=
'xm-select-temp'
,
RADIO
=
'xm-select-radio'
,
LINKAGE
=
'xm-select-linkage'
,
DL
=
'xm-select-dl'
,
DD_HIDE
=
'xm-select-hide'
,
HIDE_INPUT
=
'xm-hide-input'
,
SANJIAO
=
'xm-select-sj'
,
ICON_CLOSE
=
'xm-icon-close'
,
FORM_TITLE
=
'xm-select-title'
,
FORM_SELECT
=
'xm-form-select'
,
FORM_SELECTED
=
'xm-form-selected'
,
FORM_NONE
=
'xm-select-none'
,
FORM_EMPTY
=
'xm-select-empty'
,
FORM_INPUT
=
'xm-input'
,
FORM_DL_INPUT
=
'xm-dl-input'
,
FORM_SELECT_TIPS
=
'xm-select-tips'
,
CHECKBOX_YES
=
'xm-iconfont'
,
FORM_TEAM_PID
=
'XM_PID_VALUE'
,
CZ
=
'xm-cz'
,
CZ_GROUP
=
'xm-cz-group'
,
TIPS
=
'请选择'
,
data
=
{},
events
=
{
on
:
{},
endOn
:
{},
filter
:
{},
maxTips
:
{},
opened
:
{},
closed
:
{}
},
ajax
=
{
type
:
'get'
,
header
:
{},
first
:
true
,
data
:
{},
searchUrl
:
''
,
searchName
:
'keyword'
,
searchVal
:
null
,
keyName
:
'name'
,
keyVal
:
'value'
,
keySel
:
'selected'
,
keyDis
:
'disabled'
,
keyChildren
:
'children'
,
dataType
:
''
,
delay
:
500
,
beforeSuccess
:
null
,
success
:
null
,
error
:
null
,
beforeSearch
:
null
,
response
:
{
statusCode
:
0
,
statusName
:
'code'
,
msgName
:
'msg'
,
dataName
:
'data'
},
tree
:
{
nextClick
:
function
nextClick
(
id
,
item
,
callback
)
{
callback
([]);
},
folderChoose
:
true
,
lazy
:
true
}
},
quickBtns
=
[{
icon
:
'xm-iconfont icon-quanxuan'
,
name
:
'全选'
,
click
:
function
click
(
id
,
cm
)
{
cm
.
selectAll
(
id
,
true
,
true
);
}
},
{
icon
:
'xm-iconfont icon-qingkong'
,
name
:
'清空'
,
click
:
function
click
(
id
,
cm
)
{
cm
.
removeAll
(
id
,
true
,
true
);
}
},
{
icon
:
'xm-iconfont icon-fanxuan'
,
name
:
'反选'
,
click
:
function
click
(
id
,
cm
)
{
cm
.
reverse
(
id
,
true
,
true
);
}
},
{
icon
:
'xm-iconfont icon-pifu'
,
name
:
'换肤'
,
click
:
function
click
(
id
,
cm
)
{
cm
.
skin
(
id
);
}
}],
$
=
window
.
$
||
window
.
layui
&&
window
.
layui
.
jquery
,
$win
=
$
(
window
),
ajaxs
=
{},
fsConfig
=
{},
fsConfigs
=
{},
FormSelects
=
function
FormSelects
(
options
)
{
var
_this
=
this
;
this
.
config
=
{
name
:
null
,
//xm-select="xxx"
max
:
null
,
maxTips
:
function
maxTips
(
id
,
vals
,
val
,
max
)
{
var
ipt
=
$
(
'[xid="'
+
_this
.
config
.
name
+
'"]'
).
prev
().
find
(
'.'
+
NAME
);
if
(
ipt
.
parents
(
'.layui-form-item[pane]'
).
length
)
{
ipt
=
ipt
.
parents
(
'.layui-form-item[pane]'
);
}
ipt
.
attr
(
'style'
,
'border-color: red !important'
);
setTimeout
(
function
()
{
ipt
.
removeAttr
(
'style'
);
},
300
);
},
init
:
null
,
//初始化的选择值,
on
:
null
,
//select值发生变化
opened
:
null
,
closed
:
null
,
filter
:
function
filter
(
id
,
inputVal
,
val
,
isDisabled
)
{
return
val
.
name
.
indexOf
(
inputVal
)
==
-
1
;
},
clearid
:
-
1
,
direction
:
'auto'
,
height
:
null
,
isEmpty
:
false
,
btns
:
[
quickBtns
[
0
],
quickBtns
[
1
],
quickBtns
[
2
]],
searchType
:
0
,
create
:
function
create
(
id
,
name
)
{
return
Date
.
now
();
},
template
:
function
template
(
id
,
item
)
{
return
item
.
name
;
},
showCount
:
0
,
isCreate
:
false
,
placeholder
:
TIPS
,
clearInput
:
false
};
this
.
select
=
null
;
this
.
values
=
[];
$
.
extend
(
this
.
config
,
options
,
{
searchUrl
:
options
.
isSearch
?
options
.
searchUrl
:
null
,
placeholder
:
options
.
optionsFirst
?
options
.
optionsFirst
.
value
?
TIPS
:
options
.
optionsFirst
.
innerHTML
||
TIPS
:
TIPS
,
btns
:
options
.
radio
?
[
quickBtns
[
1
]]
:
[
quickBtns
[
0
],
quickBtns
[
1
],
quickBtns
[
2
]]
},
fsConfigs
[
options
.
name
]
||
fsConfig
);
if
(
isNaN
(
this
.
config
.
showCount
)
||
this
.
config
.
showCount
<=
0
)
{
this
.
config
.
showCount
=
19921012
;
}
};
//一些简单的处理方法
var
Common
=
function
Common
()
{
this
.
appender
();
this
.
on
();
this
.
onreset
();
};
Common
.
prototype
.
appender
=
function
()
{
//针对IE做的一些拓展
//拓展Array map方法
if
(
!
Array
.
prototype
.
map
)
{
Array
.
prototype
.
map
=
function
(
i
,
h
)
{
var
b
,
a
,
c
,
e
=
Object
(
this
),
f
=
e
.
length
>>>
0
;
if
(
h
)
{
b
=
h
;
}
a
=
new
Array
(
f
);
c
=
0
;
while
(
c
<
f
)
{
var
d
,
g
;
if
(
c
in
e
)
{
d
=
e
[
c
];
g
=
i
.
call
(
b
,
d
,
c
,
e
);
a
[
c
]
=
g
;
}
c
++
;
}
return
a
;
};
}
;
//拓展Array foreach方法
if
(
!
Array
.
prototype
.
forEach
)
{
Array
.
prototype
.
forEach
=
function
forEach
(
g
,
b
)
{
var
d
,
c
;
if
(
this
==
null
)
{
throw
new
TypeError
(
"this is null or not defined"
);
}
var
f
=
Object
(
this
);
var
a
=
f
.
length
>>>
0
;
if
(
typeof
g
!==
"function"
)
{
throw
new
TypeError
(
g
+
" is not a function"
);
}
if
(
arguments
.
length
>
1
)
{
d
=
b
;
}
c
=
0
;
while
(
c
<
a
)
{
var
e
;
if
(
c
in
f
)
{
e
=
f
[
c
];
g
.
call
(
d
,
e
,
c
,
f
);
}
c
++
;
}
};
}
;
//拓展Array filter方法
if
(
!
Array
.
prototype
.
filter
)
{
Array
.
prototype
.
filter
=
function
(
b
)
{
if
(
this
===
void
0
||
this
===
null
)
{
throw
new
TypeError
();
}
var
f
=
Object
(
this
);
var
a
=
f
.
length
>>>
0
;
if
(
typeof
b
!==
"function"
)
{
throw
new
TypeError
();
}
var
e
=
[];
var
d
=
arguments
[
1
];
for
(
var
c
=
0
;
c
<
a
;
c
++
)
{
if
(
c
in
f
)
{
var
g
=
f
[
c
];
if
(
b
.
call
(
d
,
g
,
c
,
f
))
{
e
.
push
(
g
);
}
}
}
return
e
;
};
}
;
};
Common
.
prototype
.
init
=
function
(
target
)
{
var
_this2
=
this
;
//初始化页面上已有的select
$
(
target
?
target
:
'select['
+
NAME
+
']'
).
each
(
function
(
index
,
select
)
{
var
othis
=
$
(
select
),
id
=
othis
.
attr
(
NAME
),
hasLayuiRender
=
othis
.
next
(
'.layui-form-select'
),
hasRender
=
othis
.
next
(
'.'
+
PNAME
),
options
=
{
name
:
id
,
disabled
:
select
.
disabled
,
max
:
othis
.
attr
(
MAX
)
-
0
,
isSearch
:
othis
.
attr
(
SEARCH
)
!=
undefined
,
searchUrl
:
othis
.
attr
(
SEARCH
),
isCreate
:
othis
.
attr
(
CREATE
)
!=
undefined
,
radio
:
othis
.
attr
(
RADIO
)
!=
undefined
,
skin
:
othis
.
attr
(
SKIN
),
direction
:
othis
.
attr
(
DIRECTION
),
optionsFirst
:
select
.
options
[
0
],
height
:
othis
.
attr
(
HEIGHT
),
formname
:
othis
.
attr
(
'name'
)
||
othis
.
attr
(
'_name'
),
layverify
:
othis
.
attr
(
'lay-verify'
)
||
othis
.
attr
(
'_lay-verify'
),
layverType
:
othis
.
attr
(
'lay-verType'
),
searchType
:
othis
.
attr
(
SEARCH_TYPE
)
==
'dl'
?
1
:
0
,
showCount
:
othis
.
attr
(
SHOW_COUNT
)
-
0
},
value
=
othis
.
find
(
'option[selected]'
).
toArray
().
map
(
function
(
option
)
{
//获取已选中的数据
return
{
name
:
option
.
innerHTML
,
value
:
option
.
value
};
}),
fs
=
new
FormSelects
(
options
);
fs
.
values
=
value
;
if
(
fs
.
config
.
init
)
{
fs
.
values
=
fs
.
config
.
init
.
map
(
function
(
item
)
{
if
((
typeof
item
===
'undefined'
?
'undefined'
:
_typeof
(
item
))
==
'object'
)
{
return
item
;
}
return
{
name
:
othis
.
find
(
'option[value="'
+
item
+
'"]'
).
text
(),
value
:
item
};
}).
filter
(
function
(
item
)
{
return
item
.
name
;
});
fs
.
config
.
init
=
fs
.
values
.
concat
([]);
}
else
{
fs
.
config
.
init
=
value
.
concat
([]);
}
!
fs
.
values
&&
(
fs
.
values
=
[]);
data
[
id
]
=
fs
;
//先取消layui对select的渲染
hasLayuiRender
[
0
]
&&
hasLayuiRender
.
remove
();
hasRender
[
0
]
&&
hasRender
.
remove
();
//构造渲染div
var
dinfo
=
_this2
.
renderSelect
(
id
,
fs
.
config
.
placeholder
,
select
);
var
heightStyle
=
!
fs
.
config
.
height
||
fs
.
config
.
height
==
'auto'
?
''
:
'xm-hg style="height: 34px;"'
;
var
inputHtml
=
[
'<div class="'
+
LABEL
+
'">'
,
'<input type="text" fsw class="'
+
FORM_INPUT
+
' '
+
INPUT
+
'" '
+
(
fs
.
config
.
isSearch
?
''
:
'style="display: none;"'
)
+
' autocomplete="off" debounce="0" />'
,
'</div>'
];
var
reElem
=
$
(
'<div class="'
+
FORM_SELECT
+
'" '
+
SKIN
+
'="'
+
fs
.
config
.
skin
+
'">
\
n
\
t
\
t
\
t
\
t
\
t<input class="'
+
HIDE_INPUT
+
'" value="" name="'
+
fs
.
config
.
formname
+
'" lay-verify="'
+
fs
.
config
.
layverify
+
'" lay-verType="'
+
fs
.
config
.
layverType
+
'" type="text" style="position: absolute;bottom: 0; z-index: -1;width: 100%; height: 100%; border: none; opacity: 0;"/>
\
n
\
t
\
t
\
t
\
t
\
t<div class="'
+
FORM_TITLE
+
' '
+
(
fs
.
config
.
disabled
?
DIS
:
''
)
+
'">
\
n
\
t
\
t
\
t
\
t
\
t
\
t<div class="'
+
FORM_INPUT
+
' '
+
NAME
+
'" '
+
heightStyle
+
'>
\
n
\
t
\
t
\
t
\
t
\
t
\
t
\
t'
+
inputHtml
.
join
(
''
)
+
'
\
n
\
t
\
t
\
t
\
t
\
t
\
t
\
t<i class="'
+
SANJIAO
+
'"></i>
\
n
\
t
\
t
\
t
\
t
\
t
\
t</div>
\
n
\
t
\
t
\
t
\
t
\
t
\
t<div class="'
+
TDIV
+
'">
\
n
\
t
\
t
\
t
\
t
\
t
\
t
\
t<input type="text" autocomplete="off" placeholder="'
+
fs
.
config
.
placeholder
+
'" readonly="readonly" unselectable="on" class="'
+
FORM_INPUT
+
'">
\
n
\
t
\
t
\
t
\
t
\
t
\
t</div>
\
n
\
t
\
t
\
t
\
t
\
t
\
t<div></div>
\
n
\
t
\
t
\
t
\
t
\
t</div>
\
n
\
t
\
t
\
t
\
t
\
t<dl xid="'
+
id
+
'" class="'
+
DL
+
' '
+
(
fs
.
config
.
radio
?
RADIO
:
''
)
+
'">'
+
dinfo
+
'</dl>
\
n
\
t
\
t
\
t
\
t</div>'
);
var
$parent
=
$
(
'<div class="'
+
PNAME
+
'" FS_ID="'
+
id
+
'"></div>'
);
$parent
.
append
(
reElem
);
othis
.
after
(
$parent
);
othis
.
attr
(
'lay-ignore'
,
''
);
othis
.
removeAttr
(
'name'
)
&&
othis
.
attr
(
'_name'
,
fs
.
config
.
formname
);
othis
.
removeAttr
(
'lay-verify'
)
&&
othis
.
attr
(
'_lay-verify'
,
fs
.
config
.
layverify
);
//如果可搜索, 加上事件
if
(
fs
.
config
.
isSearch
)
{
ajaxs
[
id
]
=
$
.
extend
({},
ajax
,
{
searchUrl
:
fs
.
config
.
searchUrl
},
ajaxs
[
id
]);
$
(
document
).
on
(
'input'
,
'div.'
+
PNAME
+
'[FS_ID="'
+
id
+
'"] .'
+
INPUT
,
function
(
e
)
{
_this2
.
search
(
id
,
e
,
fs
.
config
.
searchUrl
);
});
if
(
fs
.
config
.
searchUrl
)
{
//触发第一次请求事件
_this2
.
triggerSearch
(
reElem
,
true
);
}
}
else
{
//隐藏第二个dl
reElem
.
find
(
'dl dd.'
+
FORM_DL_INPUT
).
css
(
'display'
,
'none'
);
}
});
};
Common
.
prototype
.
search
=
function
(
id
,
e
,
searchUrl
,
call
)
{
var
_this3
=
this
;
var
input
=
void
0
;
if
(
call
)
{
input
=
call
;
}
else
{
input
=
e
.
target
;
var
keyCode
=
e
.
keyCode
;
if
(
keyCode
===
9
||
keyCode
===
13
||
keyCode
===
37
||
keyCode
===
38
||
keyCode
===
39
||
keyCode
===
40
)
{
return
false
;
}
}
var
inputValue
=
$
.
trim
(
input
.
value
);
//过滤一下tips
this
.
changePlaceHolder
(
$
(
input
));
var
ajaxConfig
=
ajaxs
[
id
]
?
ajaxs
[
id
]
:
ajax
;
searchUrl
=
ajaxConfig
.
searchUrl
||
searchUrl
;
var
fs
=
data
[
id
],
isCreate
=
fs
.
config
.
isCreate
,
reElem
=
$
(
'dl[xid="'
+
id
+
'"]'
).
parents
(
'.'
+
FORM_SELECT
);
//如果开启了远程搜索
if
(
searchUrl
)
{
if
(
ajaxConfig
.
searchVal
)
{
inputValue
=
ajaxConfig
.
searchVal
;
ajaxConfig
.
searchVal
=
''
;
}
if
(
!
ajaxConfig
.
beforeSearch
||
ajaxConfig
.
beforeSearch
&&
ajaxConfig
.
beforeSearch
instanceof
Function
&&
ajaxConfig
.
beforeSearch
(
id
,
searchUrl
,
inputValue
))
{
var
delay
=
ajaxConfig
.
delay
;
if
(
ajaxConfig
.
first
)
{
ajaxConfig
.
first
=
false
;
delay
=
10
;
}
clearTimeout
(
fs
.
clearid
);
fs
.
clearid
=
setTimeout
(
function
()
{
reElem
.
find
(
'dl > *:not(.'
+
FORM_SELECT_TIPS
+
')'
).
remove
();
reElem
.
find
(
'dd.'
+
FORM_NONE
).
addClass
(
FORM_EMPTY
).
text
(
'请求中'
);
_this3
.
ajax
(
id
,
searchUrl
,
inputValue
,
false
,
null
,
true
);
},
delay
);
}
}
else
{
reElem
.
find
(
'dl .'
+
DD_HIDE
).
removeClass
(
DD_HIDE
);
//遍历选项, 选择可以显示的值
reElem
.
find
(
'dl dd:not(.'
+
FORM_SELECT_TIPS
+
')'
).
each
(
function
(
idx
,
item
)
{
var
_item
=
$
(
item
);
var
searchFun
=
events
.
filter
[
id
]
||
data
[
id
].
config
.
filter
;
if
(
searchFun
&&
searchFun
(
id
,
inputValue
,
_this3
.
getItem
(
id
,
_item
),
_item
.
hasClass
(
DISABLED
))
==
true
)
{
_item
.
addClass
(
DD_HIDE
);
}
});
//控制分组名称
reElem
.
find
(
'dl dt'
).
each
(
function
(
index
,
item
)
{
if
(
!
$
(
item
).
nextUntil
(
'dt'
,
':not(.'
+
DD_HIDE
+
')'
).
length
)
{
$
(
item
).
addClass
(
DD_HIDE
);
}
});
//动态创建
this
.
create
(
id
,
isCreate
,
inputValue
);
var
shows
=
reElem
.
find
(
'dl dd:not(.'
+
FORM_SELECT_TIPS
+
'):not(.'
+
DD_HIDE
+
')'
);
if
(
!
shows
.
length
)
{
reElem
.
find
(
'dd.'
+
FORM_NONE
).
addClass
(
FORM_EMPTY
).
text
(
'无匹配项'
);
}
else
{
reElem
.
find
(
'dd.'
+
FORM_NONE
).
removeClass
(
FORM_EMPTY
);
}
}
};
Common
.
prototype
.
isArray
=
function
(
obj
)
{
return
Object
.
prototype
.
toString
.
call
(
obj
)
==
"[object Array]"
;
};
Common
.
prototype
.
triggerSearch
=
function
(
div
,
isCall
)
{
var
_this4
=
this
;
(
div
?
[
div
]
:
$
(
'.'
+
FORM_SELECT
).
toArray
()).
forEach
(
function
(
reElem
,
index
)
{
reElem
=
$
(
reElem
);
var
id
=
reElem
.
find
(
'dl'
).
attr
(
'xid'
);
if
(
id
&&
data
[
id
]
&&
data
[
id
].
config
.
isEmpty
||
isCall
)
{
_this4
.
search
(
id
,
null
,
null
,
data
[
id
].
config
.
searchType
==
0
?
reElem
.
find
(
'.'
+
LABEL
+
' .'
+
INPUT
)
:
reElem
.
find
(
'dl .'
+
FORM_DL_INPUT
+
' .'
+
INPUT
));
}
});
};
Common
.
prototype
.
clearInput
=
function
(
id
)
{
var
div
=
$
(
'.'
+
PNAME
+
'[fs_id="'
+
id
+
'"]'
);
var
input
=
data
[
id
].
config
.
searchType
==
0
?
div
.
find
(
'.'
+
LABEL
+
' .'
+
INPUT
)
:
div
.
find
(
'dl .'
+
FORM_DL_INPUT
+
' .'
+
INPUT
);
input
.
val
(
''
);
};
Common
.
prototype
.
ajax
=
function
(
id
,
searchUrl
,
inputValue
,
isLinkage
,
linkageWidth
,
isSearch
,
successCallback
,
isReplace
)
{
var
_this5
=
this
;
var
reElem
=
$
(
'.'
+
PNAME
+
' dl[xid="'
+
id
+
'"]'
).
parents
(
'.'
+
FORM_SELECT
);
if
(
!
reElem
[
0
]
||
!
searchUrl
)
{
return
;
}
var
ajaxConfig
=
ajaxs
[
id
]
?
ajaxs
[
id
]
:
ajax
;
var
ajaxData
=
$
.
extend
(
true
,
{},
ajaxConfig
.
data
);
ajaxData
[
ajaxConfig
.
searchName
]
=
inputValue
;
//是否需要对ajax添加随机时间
//ajaxData['_'] = Date.now();
$
.
ajax
({
type
:
ajaxConfig
.
type
,
headers
:
ajaxConfig
.
header
,
url
:
searchUrl
,
data
:
ajaxConfig
.
dataType
==
'json'
?
JSON
.
stringify
(
ajaxData
)
:
ajaxData
,
success
:
function
success
(
res
)
{
if
(
typeof
res
==
'string'
)
{
res
=
JSON
.
parse
(
res
);
}
ajaxConfig
.
beforeSuccess
&&
ajaxConfig
.
beforeSuccess
instanceof
Function
&&
(
res
=
ajaxConfig
.
beforeSuccess
(
id
,
searchUrl
,
inputValue
,
res
));
if
(
_this5
.
isArray
(
res
))
{
var
newRes
=
{};
newRes
[
ajaxConfig
.
response
.
statusName
]
=
ajaxConfig
.
response
.
statusCode
;
newRes
[
ajaxConfig
.
response
.
msgName
]
=
""
;
newRes
[
ajaxConfig
.
response
.
dataName
]
=
res
;
res
=
newRes
;
}
if
(
res
[
ajaxConfig
.
response
.
statusName
]
!=
ajaxConfig
.
response
.
statusCode
)
{
reElem
.
find
(
'dd.'
+
FORM_NONE
).
addClass
(
FORM_EMPTY
).
text
(
res
[
ajaxConfig
.
response
.
msgName
]);
}
else
{
reElem
.
find
(
'dd.'
+
FORM_NONE
).
removeClass
(
FORM_EMPTY
);
_this5
.
renderData
(
id
,
res
[
ajaxConfig
.
response
.
dataName
],
isLinkage
,
linkageWidth
,
isSearch
,
isReplace
);
data
[
id
].
config
.
isEmpty
=
res
[
ajaxConfig
.
response
.
dataName
].
length
==
0
;
}
successCallback
&&
successCallback
(
id
);
ajaxConfig
.
success
&&
ajaxConfig
.
success
instanceof
Function
&&
ajaxConfig
.
success
(
id
,
searchUrl
,
inputValue
,
res
);
},
error
:
function
error
(
err
)
{
reElem
.
find
(
'dd[lay-value]:not(.'
+
FORM_SELECT_TIPS
+
')'
).
remove
();
reElem
.
find
(
'dd.'
+
FORM_NONE
).
addClass
(
FORM_EMPTY
).
text
(
'服务异常'
);
ajaxConfig
.
error
&&
ajaxConfig
.
error
instanceof
Function
&&
ajaxConfig
.
error
(
id
,
searchUrl
,
inputValue
,
err
);
}
});
};
Common
.
prototype
.
renderData
=
function
(
id
,
dataArr
,
linkage
,
linkageWidth
,
isSearch
,
isReplace
)
{
var
_this6
=
this
;
if
(
linkage
)
{
//渲染多级联动
this
.
renderLinkage
(
id
,
dataArr
,
linkageWidth
);
return
;
}
if
(
isReplace
)
{
this
.
renderReplace
(
id
,
dataArr
);
return
;
}
var
reElem
=
$
(
'.'
+
PNAME
+
' dl[xid="'
+
id
+
'"]'
).
parents
(
'.'
+
FORM_SELECT
);
var
ajaxConfig
=
ajaxs
[
id
]
?
ajaxs
[
id
]
:
ajax
;
var
pcInput
=
reElem
.
find
(
'.'
+
TDIV
+
' input'
);
dataArr
=
this
.
exchangeData
(
id
,
dataArr
);
var
values
=
[];
reElem
.
find
(
'dl'
).
html
(
this
.
renderSelect
(
id
,
pcInput
.
attr
(
'placeholder'
)
||
pcInput
.
attr
(
'back'
),
dataArr
.
map
(
function
(
item
)
{
var
itemVal
=
$
.
extend
({},
item
,
{
innerHTML
:
item
[
ajaxConfig
.
keyName
],
value
:
item
[
ajaxConfig
.
keyVal
],
sel
:
item
[
ajaxConfig
.
keySel
],
disabled
:
item
[
ajaxConfig
.
keyDis
],
type
:
item
.
type
,
name
:
item
[
ajaxConfig
.
keyName
]
});
if
(
itemVal
.
sel
)
{
values
.
push
(
itemVal
);
}
return
itemVal
;
})));
var
label
=
reElem
.
find
(
'.'
+
LABEL
);
var
dl
=
reElem
.
find
(
'dl[xid]'
);
if
(
isSearch
)
{
//如果是远程搜索, 这里需要判重
var
oldVal
=
data
[
id
].
values
;
oldVal
.
forEach
(
function
(
item
,
index
)
{
dl
.
find
(
'dd[lay-value="'
+
item
.
value
+
'"]'
).
addClass
(
THIS
);
});
values
.
forEach
(
function
(
item
,
index
)
{
if
(
_this6
.
indexOf
(
oldVal
,
item
)
==
-
1
)
{
_this6
.
addLabel
(
id
,
label
,
item
);
dl
.
find
(
'dd[lay-value="'
+
item
.
value
+
'"]'
).
addClass
(
THIS
);
oldVal
.
push
(
item
);
}
});
}
else
{
values
.
forEach
(
function
(
item
,
index
)
{
_this6
.
addLabel
(
id
,
label
,
item
);
dl
.
find
(
'dd[lay-value="'
+
item
.
value
+
'"]'
).
addClass
(
THIS
);
});
data
[
id
].
values
=
values
;
}
this
.
commonHandler
(
id
,
label
);
};
Common
.
prototype
.
renderLinkage
=
function
(
id
,
dataArr
,
linkageWidth
)
{
var
result
=
[],
index
=
0
,
temp
=
{
"0"
:
dataArr
},
ajaxConfig
=
ajaxs
[
id
]
?
ajaxs
[
id
]
:
ajax
;
db
[
id
]
=
{};
var
_loop
=
function
_loop
()
{
var
group
=
result
[
index
++
]
=
[],
_temp
=
temp
;
temp
=
{};
$
.
each
(
_temp
,
function
(
pid
,
arr
)
{
$
.
each
(
arr
,
function
(
idx
,
item
)
{
var
val
=
{
pid
:
pid
,
name
:
item
[
ajaxConfig
.
keyName
],
value
:
item
[
ajaxConfig
.
keyVal
]
};
db
[
id
][
val
.
value
]
=
$
.
extend
(
item
,
val
);
group
.
push
(
val
);
var
children
=
item
[
ajaxConfig
.
keyChildren
];
if
(
children
&&
children
.
length
)
{
temp
[
val
.
value
]
=
children
;
}
});
});
};
do
{
_loop
();
}
while
(
Object
.
getOwnPropertyNames
(
temp
).
length
);
var
reElem
=
$
(
'.'
+
PNAME
+
' dl[xid="'
+
id
+
'"]'
).
parents
(
'.'
+
FORM_SELECT
);
var
html
=
[
'<div class="xm-select-linkage">'
];
$
.
each
(
result
,
function
(
idx
,
arr
)
{
var
groupDiv
=
[
'<div style="left: '
+
(
linkageWidth
-
0
)
*
idx
+
'px;" class="xm-select-linkage-group xm-select-linkage-group'
+
(
idx
+
1
)
+
' '
+
(
idx
!=
0
?
'xm-select-linkage-hide'
:
''
)
+
'">'
];
$
.
each
(
arr
,
function
(
idx2
,
item
)
{
var
span
=
'<li title="'
+
item
.
name
+
'" pid="'
+
item
.
pid
+
'" xm-value="'
+
item
.
value
+
'"><span>'
+
item
.
name
+
'</span></li>'
;
groupDiv
.
push
(
span
);
});
groupDiv
.
push
(
'</div>'
);
html
=
html
.
concat
(
groupDiv
);
});
html
.
push
(
'<div style="clear: both; height: 288px;"></div>'
);
html
.
push
(
'</div>'
);
reElem
.
find
(
'dl'
).
html
(
html
.
join
(
''
));
reElem
.
find
(
'.'
+
INPUT
).
css
(
'display'
,
'none'
);
//联动暂时不支持搜索
};
Common
.
prototype
.
renderReplace
=
function
(
id
,
dataArr
)
{
var
_this7
=
this
;
var
dl
=
$
(
'.'
+
PNAME
+
' dl[xid="'
+
id
+
'"]'
);
var
ajaxConfig
=
ajaxs
[
id
]
?
ajaxs
[
id
]
:
ajax
;
dataArr
=
this
.
exchangeData
(
id
,
dataArr
);
db
[
id
]
=
dataArr
;
var
html
=
dataArr
.
map
(
function
(
item
)
{
var
itemVal
=
$
.
extend
({},
item
,
{
innerHTML
:
item
[
ajaxConfig
.
keyName
],
value
:
item
[
ajaxConfig
.
keyVal
],
sel
:
item
[
ajaxConfig
.
keySel
],
disabled
:
item
[
ajaxConfig
.
keyDis
],
type
:
item
.
type
,
name
:
item
[
ajaxConfig
.
keyName
]
});
return
_this7
.
createDD
(
id
,
itemVal
);
}).
join
(
''
);
dl
.
find
(
'dd:not(.'
+
FORM_SELECT_TIPS
+
'),dt:not([style])'
).
remove
();
dl
.
find
(
'dt[style]'
).
after
(
$
(
html
));
};
Common
.
prototype
.
exchangeData
=
function
(
id
,
arr
)
{
//这里处理树形结构
var
ajaxConfig
=
ajaxs
[
id
]
?
ajaxs
[
id
]
:
ajax
;
var
childrenName
=
ajaxConfig
[
'keyChildren'
];
var
disabledName
=
ajaxConfig
[
'keyDis'
];
db
[
id
]
=
{};
var
result
=
this
.
getChildrenList
(
arr
,
childrenName
,
disabledName
,
[],
false
);
return
result
;
};
Common
.
prototype
.
getChildrenList
=
function
(
arr
,
childrenName
,
disabledName
,
pid
,
disabled
)
{
var
result
=
[],
offset
=
0
;
for
(
var
a
=
0
;
a
<
arr
.
length
;
a
++
)
{
var
item
=
arr
[
a
];
if
(
item
.
type
&&
item
.
type
==
'optgroup'
)
{
result
.
push
(
item
);
continue
;
}
else
{
offset
++
;
}
var
parentIds
=
pid
.
concat
([]);
parentIds
.
push
(
offset
-
1
+
'_E'
);
item
[
FORM_TEAM_PID
]
=
JSON
.
stringify
(
parentIds
);
item
[
disabledName
]
=
item
[
disabledName
]
||
disabled
;
result
.
push
(
item
);
var
child
=
item
[
childrenName
];
if
(
child
&&
common
.
isArray
(
child
)
&&
child
.
length
)
{
item
[
'XM_TREE_FOLDER'
]
=
true
;
var
pidArr
=
parentIds
.
concat
([]);
var
childResult
=
this
.
getChildrenList
(
child
,
childrenName
,
disabledName
,
pidArr
,
item
[
disabledName
]);
result
=
result
.
concat
(
childResult
);
}
}
return
result
;
};
Common
.
prototype
.
create
=
function
(
id
,
isCreate
,
inputValue
)
{
if
(
isCreate
&&
inputValue
)
{
var
fs
=
data
[
id
],
dl
=
$
(
'[xid="'
+
id
+
'"]'
),
tips
=
dl
.
find
(
'dd.'
+
FORM_SELECT_TIPS
+
'.'
+
FORM_DL_INPUT
),
tdd
=
null
,
temp
=
dl
.
find
(
'dd.'
+
TEMP
);
dl
.
find
(
'dd:not(.'
+
FORM_SELECT_TIPS
+
'):not(.'
+
TEMP
+
')'
).
each
(
function
(
index
,
item
)
{
if
(
inputValue
==
$
(
item
).
find
(
'span'
).
attr
(
'name'
))
{
tdd
=
item
;
}
});
if
(
!
tdd
)
{
//如果不存在, 则创建
var
val
=
fs
.
config
.
create
(
id
,
inputValue
);
if
(
temp
[
0
])
{
temp
.
attr
(
'lay-value'
,
val
);
temp
.
find
(
'span'
).
text
(
inputValue
);
temp
.
find
(
'span'
).
attr
(
"name"
,
inputValue
);
temp
.
removeClass
(
DD_HIDE
);
}
else
{
tips
.
after
(
$
(
this
.
createDD
(
id
,
{
name
:
inputValue
,
innerHTML
:
inputValue
,
value
:
val
},
TEMP
+
' '
+
CREATE_LONG
)));
}
}
}
else
{
$
(
'[xid='
+
id
+
'] dd.'
+
TEMP
).
remove
();
}
};
Common
.
prototype
.
createDD
=
function
(
id
,
item
,
clz
)
{
var
ajaxConfig
=
ajaxs
[
id
]
?
ajaxs
[
id
]
:
ajax
;
var
name
=
$
.
trim
(
item
.
innerHTML
);
db
[
id
][
item
.
value
]
=
$
(
item
).
is
(
'option'
)
?
item
=
function
()
{
var
resultItem
=
{};
resultItem
[
ajaxConfig
.
keyName
]
=
name
;
resultItem
[
ajaxConfig
.
keyVal
]
=
item
.
value
;
resultItem
[
ajaxConfig
.
keyDis
]
=
item
.
disabled
;
return
resultItem
;
}()
:
item
;
var
template
=
data
[
id
].
config
.
template
(
id
,
item
);
var
pid
=
item
[
FORM_TEAM_PID
];
pid
?
pid
=
JSON
.
parse
(
pid
)
:
pid
=
[
-
1
];
var
attr
=
pid
[
0
]
==
-
1
?
''
:
'tree-id="'
+
pid
.
join
(
'-'
)
+
'" tree-folder="'
+
!!
item
[
'XM_TREE_FOLDER'
]
+
'"'
;
return
'<dd lay-value="'
+
item
.
value
+
'" class="'
+
(
item
.
disabled
?
DISABLED
:
''
)
+
' '
+
(
clz
?
clz
:
''
)
+
'" '
+
attr
+
'>
\
n
\
t
\
t
\
t
\
t
\
t<div class="xm-unselect xm-form-checkbox '
+
(
item
.
disabled
?
DISABLED
:
''
)
+
'" style="margin-left: '
+
(
pid
.
length
-
1
)
*
30
+
'px">
\
n
\
t
\
t
\
t
\
t
\
t
\
t<i class="'
+
CHECKBOX_YES
+
'"></i>
\
n
\
t
\
t
\
t
\
t
\
t
\
t<span name="'
+
name
+
'">'
+
template
+
'</span>
\
n
\
t
\
t
\
t
\
t
\
t</div>
\
n
\
t
\
t
\
t
\
t</dd>'
;
};
Common
.
prototype
.
createQuickBtn
=
function
(
obj
,
right
)
{
return
'<div class="'
+
CZ
+
'" method="'
+
obj
.
name
+
'" title="'
+
obj
.
name
+
'" '
+
(
right
?
'style="margin-right: '
+
right
+
'"'
:
''
)
+
'><i class="'
+
obj
.
icon
+
'"></i><span>'
+
obj
.
name
+
'</span></div>'
;
};
Common
.
prototype
.
renderBtns
=
function
(
id
,
show
,
right
)
{
var
_this8
=
this
;
var
quickBtn
=
[];
var
dl
=
$
(
'dl[xid="'
+
id
+
'"]'
);
quickBtn
.
push
(
'<div class="'
+
CZ_GROUP
+
'" show="'
+
show
+
'" style="max-width: '
+
(
dl
.
prev
().
width
()
-
54
)
+
'px;">'
);
$
.
each
(
data
[
id
].
config
.
btns
,
function
(
index
,
item
)
{
quickBtn
.
push
(
_this8
.
createQuickBtn
(
item
,
right
));
});
quickBtn
.
push
(
'</div>'
);
quickBtn
.
push
(
this
.
createQuickBtn
({
icon
:
'xm-iconfont icon-caidan'
,
name
:
''
}));
return
quickBtn
.
join
(
''
);
};
Common
.
prototype
.
renderSelect
=
function
(
id
,
tips
,
select
)
{
var
_this9
=
this
;
db
[
id
]
=
{};
var
arr
=
[];
if
(
data
[
id
].
config
.
btns
.
length
)
{
setTimeout
(
function
()
{
var
dl
=
$
(
'dl[xid="'
+
id
+
'"]'
);
dl
.
parents
(
'.'
+
FORM_SELECT
).
attr
(
SEARCH_TYPE
,
data
[
id
].
config
.
searchType
);
dl
.
find
(
'.'
+
CZ_GROUP
).
css
(
'max-width'
,
dl
.
prev
().
width
()
-
54
+
'px'
);
},
10
);
arr
.
push
([
'<dd lay-value="" class="'
+
FORM_SELECT_TIPS
+
'" style="background-color: #FFF!important;">'
,
this
.
renderBtns
(
id
,
null
,
'30px'
),
'</dd>'
,
'<dd lay-value="" class="'
+
FORM_SELECT_TIPS
+
' '
+
FORM_DL_INPUT
+
'" style="background-color: #FFF!important;">'
,
'<i class="xm-iconfont icon-sousuo"></i>'
,
'<input type="text" class="'
+
FORM_INPUT
+
' '
+
INPUT
+
'" placeholder="
\
u8BF7
\
u641C
\
u7D22"/>'
,
'</dd>'
].
join
(
''
));
}
else
{
arr
.
push
(
'<dd lay-value="" class="'
+
FORM_SELECT_TIPS
+
'">'
+
tips
+
'</dd>'
);
}
if
(
this
.
isArray
(
select
))
{
$
(
select
).
each
(
function
(
index
,
item
)
{
if
(
item
)
{
if
(
item
.
type
&&
item
.
type
===
'optgroup'
)
{
arr
.
push
(
'<dt>'
+
item
.
name
+
'</dt>'
);
}
else
{
arr
.
push
(
_this9
.
createDD
(
id
,
item
));
}
}
});
}
else
{
$
(
select
).
find
(
'*'
).
each
(
function
(
index
,
item
)
{
if
(
item
.
tagName
.
toLowerCase
()
==
'option'
&&
index
==
0
&&
!
item
.
value
)
{
return
;
}
if
(
item
.
tagName
.
toLowerCase
()
===
'optgroup'
)
{
arr
.
push
(
'<dt>'
+
item
.
label
+
'</dt>'
);
}
else
{
arr
.
push
(
_this9
.
createDD
(
id
,
item
));
}
});
}
arr
.
push
(
'<dt style="display:none;"> </dt>'
);
arr
.
push
(
'<dd class="'
+
FORM_SELECT_TIPS
+
' '
+
FORM_NONE
+
' '
+
(
arr
.
length
===
2
?
FORM_EMPTY
:
''
)
+
'">
\
u6CA1
\
u6709
\
u9009
\
u9879</dd>'
);
return
arr
.
join
(
''
);
};
Common
.
prototype
.
on
=
function
()
{
var
_this10
=
this
;
//事件绑定
this
.
one
();
$
(
document
).
on
(
'click'
,
function
(
e
)
{
if
(
!
$
(
e
.
target
).
parents
(
'.'
+
FORM_TITLE
)[
0
])
{
//清空input中的值
$
(
'.'
+
PNAME
+
' dl .'
+
DD_HIDE
).
removeClass
(
DD_HIDE
);
$
(
'.'
+
PNAME
+
' dl dd.'
+
FORM_EMPTY
).
removeClass
(
FORM_EMPTY
);
$
(
'.'
+
PNAME
+
' dl dd.'
+
TEMP
).
remove
();
$
.
each
(
data
,
function
(
key
,
fs
)
{
_this10
.
clearInput
(
key
);
if
(
!
fs
.
values
.
length
)
{
_this10
.
changePlaceHolder
(
$
(
'div[FS_ID="'
+
key
+
'"] .'
+
LABEL
));
}
});
}
$
(
'.'
+
PNAME
+
' .'
+
FORM_SELECTED
).
each
(
function
(
index
,
item
)
{
_this10
.
changeShow
(
$
(
item
).
find
(
'.'
+
FORM_TITLE
),
false
);
});
});
};
Common
.
prototype
.
calcLabelLeft
=
function
(
label
,
w
,
call
)
{
var
pos
=
this
.
getPosition
(
label
[
0
]);
pos
.
y
=
pos
.
x
+
label
[
0
].
clientWidth
;
var
left
=
label
[
0
].
offsetLeft
;
if
(
!
label
.
find
(
'span'
).
length
)
{
left
=
0
;
}
else
if
(
call
)
{
//校正归位
var
span
=
label
.
find
(
'span:last'
);
span
.
css
(
'display'
)
==
'none'
?
span
=
span
.
prev
()[
0
]
:
span
=
span
[
0
];
var
spos
=
this
.
getPosition
(
span
);
spos
.
y
=
spos
.
x
+
span
.
clientWidth
;
if
(
spos
.
y
>
pos
.
y
)
{
left
=
left
-
(
spos
.
y
-
pos
.
y
)
-
5
;
}
else
{
left
=
0
;
}
}
else
{
if
(
w
<
0
)
{
var
_span
=
label
.
find
(
':last'
);
_span
.
css
(
'display'
)
==
'none'
?
_span
=
_span
.
prev
()[
0
]
:
_span
=
_span
[
0
];
var
_spos
=
this
.
getPosition
(
_span
);
_spos
.
y
=
_spos
.
x
+
_span
.
clientWidth
;
if
(
_spos
.
y
>
pos
.
y
)
{
left
-=
10
;
}
}
else
{
if
(
left
<
0
)
{
left
+=
10
;
}
if
(
left
>
0
)
{
left
=
0
;
}
}
}
label
.
css
(
'left'
,
left
+
'px'
);
};
Common
.
prototype
.
one
=
function
(
target
)
{
var
_this11
=
this
;
//一次性事件绑定
$
(
target
?
target
:
document
).
off
(
'click'
,
'.'
+
FORM_TITLE
).
on
(
'click'
,
'.'
+
FORM_TITLE
,
function
(
e
)
{
var
othis
=
$
(
e
.
target
),
title
=
othis
.
is
(
FORM_TITLE
)
?
othis
:
othis
.
parents
(
'.'
+
FORM_TITLE
),
dl
=
title
.
next
(),
id
=
dl
.
attr
(
'xid'
);
//清空非本select的input val
$
(
'dl[xid]'
).
not
(
dl
).
each
(
function
(
index
,
item
)
{
_this11
.
clearInput
(
$
(
item
).
attr
(
'xid'
));
});
$
(
'dl[xid]'
).
not
(
dl
).
find
(
'dd.'
+
DD_HIDE
).
removeClass
(
DD_HIDE
);
//如果是disabled select
if
(
title
.
hasClass
(
DIS
))
{
return
false
;
}
//如果点击的是右边的三角或者只读的input
if
(
othis
.
is
(
'.'
+
SANJIAO
)
||
othis
.
is
(
'.'
+
INPUT
+
'[readonly]'
))
{
_this11
.
changeShow
(
title
,
!
title
.
parents
(
'.'
+
FORM_SELECT
).
hasClass
(
FORM_SELECTED
));
return
false
;
}
//如果点击的是input的右边, focus一下
if
(
title
.
find
(
'.'
+
INPUT
+
':not(readonly)'
)[
0
])
{
var
input
=
title
.
find
(
'.'
+
INPUT
),
epos
=
{
x
:
e
.
pageX
,
y
:
e
.
pageY
},
pos
=
_this11
.
getPosition
(
title
[
0
]),
width
=
title
.
width
();
while
(
epos
.
x
>
pos
.
x
)
{
if
(
$
(
document
.
elementFromPoint
(
epos
.
x
,
epos
.
y
)).
is
(
input
))
{
input
.
focus
();
_this11
.
changeShow
(
title
,
true
);
return
false
;
}
epos
.
x
-=
50
;
}
}
//如果点击的是可搜索的input
if
(
othis
.
is
(
'.'
+
INPUT
))
{
_this11
.
changeShow
(
title
,
true
);
return
false
;
}
//如果点击的是x按钮
if
(
othis
.
is
(
'i[fsw="'
+
NAME
+
'"]'
))
{
var
val
=
_this11
.
getItem
(
id
,
othis
),
dd
=
dl
.
find
(
'dd[lay-value=
\'
'
+
val
.
value
+
'
\'
]'
);
if
(
dd
.
hasClass
(
DISABLED
))
{
//如果是disabled状态, 不可选, 不可删
return
false
;
}
_this11
.
handlerLabel
(
id
,
dd
,
false
,
val
);
return
false
;
}
_this11
.
changeShow
(
title
,
!
title
.
parents
(
'.'
+
FORM_SELECT
).
hasClass
(
FORM_SELECTED
));
return
false
;
});
$
(
target
?
target
:
document
).
off
(
'click'
,
'dl.'
+
DL
).
on
(
'click'
,
'dl.'
+
DL
,
function
(
e
)
{
var
othis
=
$
(
e
.
target
);
if
(
othis
.
is
(
'.'
+
LINKAGE
)
||
othis
.
parents
(
'.'
+
LINKAGE
)[
0
])
{
//linkage的处理
othis
=
othis
.
is
(
'li'
)
?
othis
:
othis
.
parents
(
'li[xm-value]'
);
var
_group
=
othis
.
parents
(
'.xm-select-linkage-group'
),
_id
=
othis
.
parents
(
'dl'
).
attr
(
'xid'
);
if
(
!
_id
)
{
return
false
;
}
//激活li
_group
.
find
(
'.xm-select-active'
).
removeClass
(
'xm-select-active'
);
othis
.
addClass
(
'xm-select-active'
);
//激活下一个group, 激活前显示对应数据
_group
.
nextAll
(
'.xm-select-linkage-group'
).
addClass
(
'xm-select-linkage-hide'
);
var
nextGroup
=
_group
.
next
(
'.xm-select-linkage-group'
);
nextGroup
.
find
(
'li'
).
addClass
(
'xm-select-linkage-hide'
);
nextGroup
.
find
(
'li[pid="'
+
othis
.
attr
(
'xm-value'
)
+
'"]'
).
removeClass
(
'xm-select-linkage-hide'
);
//如果没有下一个group, 或没有对应的值
if
(
!
nextGroup
[
0
]
||
nextGroup
.
find
(
'li:not(.xm-select-linkage-hide)'
).
length
==
0
)
{
var
vals
=
[],
index
=
0
,
isAdd
=
!
othis
.
hasClass
(
'xm-select-this'
);
if
(
data
[
_id
].
config
.
radio
)
{
othis
.
parents
(
'.xm-select-linkage'
).
find
(
'.xm-select-this'
).
removeClass
(
'xm-select-this'
);
}
do
{
vals
[
index
++
]
=
{
name
:
othis
.
find
(
'span'
).
text
(),
value
:
othis
.
attr
(
'xm-value'
)
};
othis
=
othis
.
parents
(
'.xm-select-linkage-group'
).
prev
().
find
(
'li[xm-value="'
+
othis
.
attr
(
'pid'
)
+
'"]'
);
}
while
(
othis
.
length
);
vals
.
reverse
();
var
val
=
{
name
:
vals
.
map
(
function
(
item
)
{
return
item
.
name
;
}).
join
(
'/'
),
value
:
vals
.
map
(
function
(
item
)
{
return
item
.
value
;
}).
join
(
'/'
)
};
_this11
.
handlerLabel
(
_id
,
null
,
isAdd
,
val
);
}
else
{
nextGroup
.
removeClass
(
'xm-select-linkage-hide'
);
}
return
false
;
}
if
(
othis
.
is
(
'dl'
))
{
return
false
;
}
if
(
othis
.
is
(
'dt'
))
{
othis
.
nextUntil
(
'dt'
).
each
(
function
(
index
,
item
)
{
item
=
$
(
item
);
if
(
item
.
hasClass
(
DISABLED
)
||
item
.
hasClass
(
THIS
))
{
}
else
{
item
.
find
(
'i:not(.icon-expand)'
).
click
();
}
});
return
false
;
}
var
dd
=
othis
.
is
(
'dd'
)
?
othis
:
othis
.
parents
(
'dd'
);
var
id
=
dd
.
parent
(
'dl'
).
attr
(
'xid'
);
if
(
dd
.
hasClass
(
DISABLED
))
{
//被禁用选项的处理
return
false
;
}
//菜单功效
if
(
othis
.
is
(
'i.icon-caidan'
))
{
var
opens
=
[],
closes
=
[];
othis
.
parents
(
'dl'
).
find
(
'dd[tree-folder="true"]'
).
each
(
function
(
index
,
item
)
{
$
(
item
).
attr
(
'xm-tree-hidn'
)
==
undefined
?
opens
.
push
(
item
)
:
closes
.
push
(
item
);
});
var
arr
=
closes
.
length
?
closes
:
opens
;
arr
.
forEach
(
function
(
item
)
{
return
item
.
click
();
});
return
false
;
}
//树状结构的选择
var
treeId
=
dd
.
attr
(
'tree-id'
);
if
(
treeId
)
{
//忽略右边的图标
if
(
othis
.
is
(
'i:not(.icon-expand)'
))
{
_this11
.
handlerLabel
(
id
,
dd
,
!
dd
.
hasClass
(
THIS
));
return
false
;
}
var
ajaxConfig
=
ajaxs
[
id
]
||
ajax
;
var
treeConfig
=
ajaxConfig
.
tree
;
var
childrens
=
dd
.
nextAll
(
'dd[tree-id^="'
+
treeId
+
'"]'
);
if
(
childrens
&&
childrens
.
length
)
{
var
len
=
childrens
[
0
].
clientHeight
;
len
?
(
_this11
.
addTreeHeight
(
dd
,
len
),
len
=
0
)
:
(
len
=
dd
.
attr
(
'xm-tree-hidn'
)
||
36
,
dd
.
removeAttr
(
'xm-tree-hidn'
),
dd
.
find
(
'>i'
).
remove
(),
childrens
=
childrens
.
filter
(
function
(
index
,
item
)
{
return
$
(
item
).
attr
(
'tree-id'
).
split
(
'-'
).
length
-
1
==
treeId
.
split
(
'-'
).
length
;
}));
childrens
.
animate
({
height
:
len
},
150
);
return
false
;
}
else
{
if
(
treeConfig
.
nextClick
&&
treeConfig
.
nextClick
instanceof
Function
)
{
treeConfig
.
nextClick
(
id
,
_this11
.
getItem
(
id
,
dd
),
function
(
res
)
{
if
(
!
res
||
!
res
.
length
)
{
_this11
.
handlerLabel
(
id
,
dd
,
!
dd
.
hasClass
(
THIS
));
}
else
{
dd
.
attr
(
'tree-folder'
,
'true'
);
var
ddChilds
=
[];
res
.
forEach
(
function
(
item
,
idx
)
{
item
.
innerHTML
=
item
[
ajaxConfig
.
keyName
];
item
[
FORM_TEAM_PID
]
=
JSON
.
stringify
(
treeId
.
split
(
'-'
).
concat
([
idx
]));
ddChilds
.
push
(
_this11
.
createDD
(
id
,
item
));
db
[
id
][
item
[
ajaxConfig
.
keyVal
]]
=
item
;
});
dd
.
after
(
ddChilds
.
join
(
''
));
}
});
return
false
;
}
}
}
if
(
dd
.
hasClass
(
FORM_SELECT_TIPS
))
{
//tips的处理
var
btn
=
othis
.
is
(
'.'
+
CZ
)
?
othis
:
othis
.
parents
(
'.'
+
CZ
);
if
(
!
btn
[
0
])
{
return
false
;
}
var
method
=
btn
.
attr
(
'method'
);
var
obj
=
data
[
id
].
config
.
btns
.
filter
(
function
(
bean
)
{
return
bean
.
name
==
method
;
})[
0
];
obj
&&
obj
.
click
&&
obj
.
click
instanceof
Function
&&
obj
.
click
(
id
,
_this11
);
return
false
;
}
_this11
.
handlerLabel
(
id
,
dd
,
!
dd
.
hasClass
(
THIS
));
return
false
;
});
};
Common
.
prototype
.
addTreeHeight
=
function
(
dd
,
len
)
{
var
_this12
=
this
;
var
treeId
=
dd
.
attr
(
'tree-id'
);
var
childrens
=
dd
.
nextAll
(
'dd[tree-id^="'
+
treeId
+
'"]'
);
if
(
childrens
.
length
)
{
dd
.
append
(
'<i class="xm-iconfont icon-expand"></i>'
);
dd
.
attr
(
'xm-tree-hidn'
,
len
);
childrens
.
each
(
function
(
index
,
item
)
{
var
that
=
$
(
item
);
_this12
.
addTreeHeight
(
that
,
len
);
});
}
};
var
db
=
{};
Common
.
prototype
.
getItem
=
function
(
id
,
value
)
{
if
(
value
instanceof
$
)
{
if
(
value
.
is
(
'i[fsw="'
+
NAME
+
'"]'
))
{
var
span
=
value
.
parent
();
return
db
[
id
][
value
]
||
{
name
:
span
.
find
(
'font'
).
text
(),
value
:
span
.
attr
(
'value'
)
};
}
var
val
=
value
.
attr
(
'lay-value'
);
return
!
db
[
id
][
val
]
?
db
[
id
][
val
]
=
{
name
:
value
.
find
(
'span[name]'
).
attr
(
'name'
),
value
:
val
}
:
db
[
id
][
val
];
}
else
if
(
typeof
value
==
'string'
&&
value
.
indexOf
(
'/'
)
!=
-
1
)
{
return
db
[
id
][
value
]
||
{
name
:
this
.
valToName
(
id
,
value
),
value
:
value
};
}
return
db
[
id
][
value
];
};
Common
.
prototype
.
linkageAdd
=
function
(
id
,
val
)
{
var
dl
=
$
(
'dl[xid="'
+
id
+
'"]'
);
dl
.
find
(
'.xm-select-active'
).
removeClass
(
'xm-select-active'
);
var
vs
=
val
.
value
.
split
(
'/'
);
var
pid
=
void
0
,
li
=
void
0
,
index
=
0
;
var
lis
=
[];
do
{
pid
=
vs
[
index
];
li
=
dl
.
find
(
'.xm-select-linkage-group'
+
(
index
+
1
)
+
' li[xm-value="'
+
pid
+
'"]'
);
li
[
0
]
&&
lis
.
push
(
li
);
index
++
;
}
while
(
li
.
length
&&
pid
!=
undefined
);
if
(
lis
.
length
==
vs
.
length
)
{
$
.
each
(
lis
,
function
(
idx
,
item
)
{
item
.
addClass
(
'xm-select-this'
);
});
}
};
Common
.
prototype
.
linkageDel
=
function
(
id
,
val
)
{
var
dl
=
$
(
'dl[xid="'
+
id
+
'"]'
);
var
vs
=
val
.
value
.
split
(
'/'
);
var
pid
=
void
0
,
li
=
void
0
,
index
=
vs
.
length
-
1
;
do
{
pid
=
vs
[
index
];
li
=
dl
.
find
(
'.xm-select-linkage-group'
+
(
index
+
1
)
+
' li[xm-value="'
+
pid
+
'"]'
);
if
(
!
li
.
parent
().
next
().
find
(
'li[pid='
+
pid
+
'].xm-select-this'
).
length
)
{
li
.
removeClass
(
'xm-select-this'
);
}
index
--
;
}
while
(
li
.
length
&&
pid
!=
undefined
);
};
Common
.
prototype
.
valToName
=
function
(
id
,
val
)
{
var
dl
=
$
(
'dl[xid="'
+
id
+
'"]'
);
var
vs
=
(
val
+
""
).
split
(
'/'
);
if
(
!
vs
.
length
)
{
return
null
;
}
var
names
=
[];
$
.
each
(
vs
,
function
(
idx
,
item
)
{
var
name
=
dl
.
find
(
'.xm-select-linkage-group'
+
(
idx
+
1
)
+
' li[xm-value="'
+
item
+
'"] span'
).
text
();
names
.
push
(
name
);
});
return
names
.
length
==
vs
.
length
?
names
.
join
(
'/'
)
:
null
;
};
Common
.
prototype
.
commonHandler
=
function
(
key
,
label
)
{
if
(
!
label
||
!
label
[
0
])
{
return
;
}
this
.
checkHideSpan
(
key
,
label
);
//计算input的提示语
this
.
changePlaceHolder
(
label
);
//计算高度
this
.
retop
(
label
.
parents
(
'.'
+
FORM_SELECT
));
this
.
calcLabelLeft
(
label
,
0
,
true
);
//表单默认值
this
.
setHidnVal
(
key
,
label
);
//title值
label
.
parents
(
'.'
+
FORM_TITLE
+
' .'
+
NAME
).
attr
(
'title'
,
data
[
key
].
values
.
map
(
function
(
val
)
{
return
val
.
name
;
}).
join
(
','
));
};
Common
.
prototype
.
initVal
=
function
(
id
)
{
var
_this13
=
this
;
var
target
=
{};
if
(
id
)
{
target
[
id
]
=
data
[
id
];
}
else
{
target
=
data
;
}
$
.
each
(
target
,
function
(
key
,
val
)
{
var
values
=
val
.
values
,
div
=
$
(
'dl[xid="'
+
key
+
'"]'
).
parent
(),
label
=
div
.
find
(
'.'
+
LABEL
),
dl
=
div
.
find
(
'dl'
);
dl
.
find
(
'dd.'
+
THIS
).
removeClass
(
THIS
);
var
_vals
=
values
.
concat
([]);
_vals
.
concat
([]).
forEach
(
function
(
item
,
index
)
{
_this13
.
addLabel
(
key
,
label
,
item
);
dl
.
find
(
'dd[lay-value="'
+
item
.
value
+
'"]'
).
addClass
(
THIS
);
});
if
(
val
.
config
.
radio
)
{
_vals
.
length
&&
values
.
push
(
_vals
[
_vals
.
length
-
1
]);
}
_this13
.
commonHandler
(
key
,
label
);
});
};
Common
.
prototype
.
setHidnVal
=
function
(
key
,
label
)
{
if
(
!
label
||
!
label
[
0
])
{
return
;
}
label
.
parents
(
'.'
+
PNAME
).
find
(
'.'
+
HIDE_INPUT
).
val
(
data
[
key
].
values
.
map
(
function
(
val
)
{
return
val
.
value
;
}).
join
(
','
));
};
Common
.
prototype
.
handlerLabel
=
function
(
id
,
dd
,
isAdd
,
oval
,
notOn
)
{
var
div
=
$
(
'[xid="'
+
id
+
'"]'
).
prev
().
find
(
'.'
+
LABEL
),
val
=
dd
&&
this
.
getItem
(
id
,
dd
),
vals
=
data
[
id
].
values
,
on
=
data
[
id
].
config
.
on
||
events
.
on
[
id
],
endOn
=
data
[
id
].
config
.
endOn
||
events
.
endOn
[
id
];
if
(
oval
)
{
val
=
oval
;
}
var
fs
=
data
[
id
];
if
(
isAdd
&&
fs
.
config
.
max
&&
fs
.
values
.
length
>=
fs
.
config
.
max
)
{
var
maxTipsFun
=
events
.
maxTips
[
id
]
||
data
[
id
].
config
.
maxTips
;
maxTipsFun
&&
maxTipsFun
(
id
,
vals
.
concat
([]),
val
,
fs
.
config
.
max
);
return
;
}
if
(
!
notOn
)
{
if
(
on
&&
on
instanceof
Function
&&
on
(
id
,
vals
.
concat
([]),
val
,
isAdd
,
dd
&&
dd
.
hasClass
(
DISABLED
))
==
false
)
{
return
;
}
}
var
dl
=
$
(
'dl[xid="'
+
id
+
'"]'
);
isAdd
?
(
dd
&&
dd
[
0
]
?
(
dd
.
addClass
(
THIS
),
dd
.
removeClass
(
TEMP
))
:
dl
.
find
(
'.xm-select-linkage'
)[
0
]
&&
this
.
linkageAdd
(
id
,
val
),
this
.
addLabel
(
id
,
div
,
val
),
vals
.
push
(
val
))
:
(
dd
&&
dd
[
0
]
?
dd
.
removeClass
(
THIS
)
:
dl
.
find
(
'.xm-select-linkage'
)[
0
]
&&
this
.
linkageDel
(
id
,
val
),
this
.
delLabel
(
id
,
div
,
val
),
this
.
remove
(
vals
,
val
));
if
(
!
div
[
0
])
return
;
//单选选完后直接关闭选择域
if
(
fs
.
config
.
radio
)
{
this
.
changeShow
(
div
,
false
);
}
//移除表单验证的红色边框
div
.
parents
(
'.'
+
FORM_TITLE
).
prev
().
removeClass
(
'layui-form-danger'
);
//清空搜索值
fs
.
config
.
clearInput
&&
this
.
clearInput
(
id
);
this
.
commonHandler
(
id
,
div
);
!
notOn
&&
endOn
&&
endOn
instanceof
Function
&&
endOn
(
id
,
vals
.
concat
([]),
val
,
isAdd
,
dd
&&
dd
.
hasClass
(
DISABLED
));
};
Common
.
prototype
.
addLabel
=
function
(
id
,
div
,
val
)
{
if
(
!
val
)
return
;
var
tips
=
'fsw="'
+
NAME
+
'"'
;
var
_ref
=
[
$
(
'<span '
+
tips
+
' value="'
+
val
.
value
+
'"><font '
+
tips
+
'>'
+
val
.
name
+
'</font></span>'
),
$
(
'<i '
+
tips
+
' class="xm-iconfont icon-close"></i>'
)],
$label
=
_ref
[
0
],
$close
=
_ref
[
1
];
$label
.
append
(
$close
);
//如果是radio模式
var
fs
=
data
[
id
];
if
(
fs
.
config
.
radio
)
{
fs
.
values
.
length
=
0
;
$
(
'dl[xid="'
+
id
+
'"]'
).
find
(
'dd.'
+
THIS
+
':not([lay-value="'
+
val
.
value
+
'"])'
).
removeClass
(
THIS
);
div
.
find
(
'span'
).
remove
();
}
//如果是固定高度
div
.
find
(
'input'
).
css
(
'width'
,
'50px'
);
div
.
find
(
'input'
).
before
(
$label
);
};
Common
.
prototype
.
delLabel
=
function
(
id
,
div
,
val
)
{
if
(
!
val
)
return
;
div
.
find
(
'span[value="'
+
val
.
value
+
'"]:first'
).
remove
();
};
Common
.
prototype
.
checkHideSpan
=
function
(
id
,
div
)
{
var
parentHeight
=
div
.
parents
(
'.'
+
NAME
)[
0
].
offsetHeight
+
5
;
div
.
find
(
'span.xm-span-hide'
).
removeClass
(
'xm-span-hide'
);
div
.
find
(
'span[style]'
).
remove
();
var
count
=
data
[
id
].
config
.
showCount
;
div
.
find
(
'span'
).
each
(
function
(
index
,
item
)
{
if
(
index
>=
count
)
{
$
(
item
).
addClass
(
'xm-span-hide'
);
}
});
var
prefix
=
div
.
find
(
'span:eq('
+
count
+
')'
);
prefix
[
0
]
&&
prefix
.
before
(
$
(
'<span style="padding-right: 6px;" fsw="'
+
NAME
+
'"> + '
+
(
div
.
find
(
'span'
).
length
-
count
)
+
'</span>'
));
};
Common
.
prototype
.
retop
=
function
(
div
)
{
//计算dl显示的位置
var
dl
=
div
.
find
(
'dl'
),
top
=
div
.
offset
().
top
+
div
.
outerHeight
()
+
5
-
$win
.
scrollTop
(),
dlHeight
=
dl
.
outerHeight
();
var
up
=
div
.
hasClass
(
'layui-form-selectup'
)
||
dl
.
css
(
'top'
).
indexOf
(
'-'
)
!=
-
1
||
top
+
dlHeight
>
$win
.
height
()
&&
top
>=
dlHeight
;
div
=
div
.
find
(
'.'
+
NAME
);
var
fs
=
data
[
dl
.
attr
(
'xid'
)];
var
base
=
dl
.
parents
(
'.layui-form-pane'
)[
0
]
&&
dl
.
prev
()[
0
].
clientHeight
>
38
?
14
:
10
;
if
(
fs
&&
fs
.
config
.
direction
==
'up'
||
up
)
{
up
=
true
;
if
(
fs
&&
fs
.
config
.
direction
==
'down'
)
{
up
=
false
;
}
}
var
reHeight
=
div
[
0
].
offsetTop
+
div
.
height
()
+
base
;
if
(
up
)
{
dl
.
css
({
top
:
'auto'
,
bottom
:
reHeight
+
3
+
'px'
});
}
else
{
dl
.
css
({
top
:
reHeight
+
'px'
,
bottom
:
'auto'
});
}
};
Common
.
prototype
.
changeShow
=
function
(
children
,
isShow
)
{
//显示于隐藏
$
(
'.layui-form-selected'
).
removeClass
(
'layui-form-selected'
);
var
top
=
children
.
parents
(
'.'
+
FORM_SELECT
),
realShow
=
top
.
hasClass
(
FORM_SELECTED
),
id
=
top
.
find
(
'dl'
).
attr
(
'xid'
);
$
(
'.'
+
PNAME
+
' .'
+
FORM_SELECT
).
not
(
top
).
removeClass
(
FORM_SELECTED
);
if
(
isShow
)
{
this
.
retop
(
top
);
top
.
addClass
(
FORM_SELECTED
);
top
.
find
(
'.'
+
INPUT
).
focus
();
if
(
!
top
.
find
(
'dl dd[lay-value]:not(.'
+
FORM_SELECT_TIPS
+
')'
).
length
)
{
top
.
find
(
'dl .'
+
FORM_NONE
).
addClass
(
FORM_EMPTY
);
}
}
else
{
top
.
removeClass
(
FORM_SELECTED
);
this
.
clearInput
(
id
);
top
.
find
(
'dl .'
+
FORM_EMPTY
).
removeClass
(
FORM_EMPTY
);
top
.
find
(
'dl dd.'
+
DD_HIDE
).
removeClass
(
DD_HIDE
);
top
.
find
(
'dl dd.'
+
TEMP
).
remove
();
//计算ajax数据是否为空, 然后重新请求数据
if
(
id
&&
data
[
id
]
&&
data
[
id
].
config
.
isEmpty
)
{
this
.
triggerSearch
(
top
);
}
this
.
changePlaceHolder
(
top
.
find
(
'.'
+
LABEL
));
}
if
(
isShow
!=
realShow
)
{
var
openFun
=
data
[
id
].
config
.
opened
||
events
.
opened
[
id
];
isShow
&&
openFun
&&
openFun
instanceof
Function
&&
openFun
(
id
);
var
closeFun
=
data
[
id
].
config
.
closed
||
events
.
closed
[
id
];
!
isShow
&&
closeFun
&&
closeFun
instanceof
Function
&&
closeFun
(
id
);
}
};
Common
.
prototype
.
changePlaceHolder
=
function
(
div
)
{
//显示于隐藏提示语
//调整pane模式下的高度
var
title
=
div
.
parents
(
'.'
+
FORM_TITLE
);
title
[
0
]
||
(
title
=
div
.
parents
(
'dl'
).
prev
());
if
(
!
title
[
0
])
{
return
;
}
var
id
=
div
.
parents
(
'.'
+
PNAME
).
find
(
'dl[xid]'
).
attr
(
'xid'
);
if
(
data
[
id
]
&&
data
[
id
].
config
.
height
)
{
//既然固定高度了, 那就看着办吧
}
else
{
var
height
=
title
.
find
(
'.'
+
NAME
)[
0
].
clientHeight
;
title
.
css
(
'height'
,
(
height
>
36
?
height
+
4
:
height
)
+
'px'
);
//如果是layui pane模式, 处理label的高度
var
label
=
title
.
parents
(
'.'
+
PNAME
).
parent
().
prev
();
if
(
label
.
is
(
'.layui-form-label'
)
&&
title
.
parents
(
'.layui-form-pane'
)[
0
])
{
height
=
height
>
36
?
height
+
4
:
height
;
title
.
css
(
'height'
,
height
+
'px'
);
label
.
css
({
height
:
height
+
2
+
'px'
,
lineHeight
:
height
-
18
+
'px'
});
}
}
var
input
=
title
.
find
(
'.'
+
TDIV
+
' input'
),
isShow
=
!
div
.
find
(
'span:last'
)[
0
]
&&
!
title
.
find
(
'.'
+
INPUT
).
val
();
if
(
isShow
)
{
var
ph
=
input
.
attr
(
'back'
);
input
.
removeAttr
(
'back'
);
input
.
attr
(
'placeholder'
,
ph
);
}
else
{
var
_ph
=
input
.
attr
(
'placeholder'
);
input
.
removeAttr
(
'placeholder'
);
input
.
attr
(
'back'
,
_ph
);
}
};
Common
.
prototype
.
indexOf
=
function
(
arr
,
val
)
{
for
(
var
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
if
(
arr
[
i
].
value
==
val
||
arr
[
i
].
value
==
(
val
?
val
.
value
:
val
)
||
arr
[
i
]
==
val
||
JSON
.
stringify
(
arr
[
i
])
==
JSON
.
stringify
(
val
))
{
return
i
;
}
}
return
-
1
;
};
Common
.
prototype
.
remove
=
function
(
arr
,
val
)
{
var
idx
=
this
.
indexOf
(
arr
,
val
?
val
.
value
:
val
);
if
(
idx
>
-
1
)
{
arr
.
splice
(
idx
,
1
);
return
true
;
}
return
false
;
};
Common
.
prototype
.
selectAll
=
function
(
id
,
isOn
,
skipDis
)
{
var
_this14
=
this
;
var
dl
=
$
(
'[xid="'
+
id
+
'"]'
);
if
(
!
dl
[
0
])
{
return
;
}
if
(
dl
.
find
(
'.xm-select-linkage'
)[
0
])
{
return
;
}
dl
.
find
(
'dd[lay-value]:not(.'
+
FORM_SELECT_TIPS
+
'):not(.'
+
THIS
+
')'
+
(
skipDis
?
':not(.'
+
DISABLED
+
')'
:
''
)).
each
(
function
(
index
,
item
)
{
item
=
$
(
item
);
var
val
=
_this14
.
getItem
(
id
,
item
);
_this14
.
handlerLabel
(
id
,
dl
.
find
(
'dd[lay-value="'
+
val
.
value
+
'"]'
),
true
,
val
,
!
isOn
);
});
};
Common
.
prototype
.
removeAll
=
function
(
id
,
isOn
,
skipDis
)
{
var
_this15
=
this
;
var
dl
=
$
(
'[xid="'
+
id
+
'"]'
);
if
(
!
dl
[
0
])
{
return
;
}
if
(
dl
.
find
(
'.xm-select-linkage'
)[
0
])
{
//针对多级联动的处理
data
[
id
].
values
.
concat
([]).
forEach
(
function
(
item
,
idx
)
{
var
vs
=
item
.
value
.
split
(
'/'
);
var
pid
=
void
0
,
li
=
void
0
,
index
=
0
;
do
{
pid
=
vs
[
index
++
];
li
=
dl
.
find
(
'.xm-select-linkage-group'
+
index
+
':not(.xm-select-linkage-hide) li[xm-value="'
+
pid
+
'"]'
);
li
.
click
();
}
while
(
li
.
length
&&
pid
!=
undefined
);
});
return
;
}
data
[
id
].
values
.
concat
([]).
forEach
(
function
(
item
,
index
)
{
if
(
skipDis
&&
dl
.
find
(
'dd[lay-value="'
+
item
.
value
+
'"]'
).
hasClass
(
DISABLED
))
{
}
else
{
_this15
.
handlerLabel
(
id
,
dl
.
find
(
'dd[lay-value="'
+
item
.
value
+
'"]'
),
false
,
item
,
!
isOn
);
}
});
};
Common
.
prototype
.
reverse
=
function
(
id
,
isOn
,
skipDis
)
{
var
_this16
=
this
;
var
dl
=
$
(
'[xid="'
+
id
+
'"]'
);
if
(
!
dl
[
0
])
{
return
;
}
if
(
dl
.
find
(
'.xm-select-linkage'
)[
0
])
{
return
;
}
dl
.
find
(
'dd[lay-value]:not(.'
+
FORM_SELECT_TIPS
+
')'
+
(
skipDis
?
':not(.'
+
DISABLED
+
')'
:
''
)).
each
(
function
(
index
,
item
)
{
item
=
$
(
item
);
var
val
=
_this16
.
getItem
(
id
,
item
);
_this16
.
handlerLabel
(
id
,
dl
.
find
(
'dd[lay-value="'
+
val
.
value
+
'"]'
),
!
item
.
hasClass
(
THIS
),
val
,
!
isOn
);
});
};
Common
.
prototype
.
skin
=
function
(
id
)
{
var
skins
=
[
'default'
,
'primary'
,
'normal'
,
'warm'
,
'danger'
];
var
skin
=
skins
[
Math
.
floor
(
Math
.
random
()
*
skins
.
length
)];
$
(
'dl[xid="'
+
id
+
'"]'
).
parents
(
'.'
+
PNAME
).
find
(
'.'
+
FORM_SELECT
).
attr
(
'xm-select-skin'
,
skin
);
this
.
check
(
id
)
&&
this
.
commonHandler
(
id
,
$
(
'dl[xid="'
+
id
+
'"]'
).
parents
(
'.'
+
PNAME
).
find
(
'.'
+
LABEL
));
};
Common
.
prototype
.
getPosition
=
function
(
e
)
{
var
x
=
0
,
y
=
0
;
while
(
e
!=
null
)
{
x
+=
e
.
offsetLeft
;
y
+=
e
.
offsetTop
;
e
=
e
.
offsetParent
;
}
return
{
x
:
x
,
y
:
y
};
};
Common
.
prototype
.
onreset
=
function
()
{
//监听reset按钮, 然后重置多选
$
(
document
).
on
(
'click'
,
'[type=reset]'
,
function
(
e
)
{
$
(
e
.
target
).
parents
(
'form'
).
find
(
'.'
+
PNAME
+
' dl[xid]'
).
each
(
function
(
index
,
item
)
{
var
id
=
item
.
getAttribute
(
'xid'
),
dl
=
$
(
item
),
dd
=
void
0
,
temp
=
{};
common
.
removeAll
(
id
);
data
[
id
].
config
.
init
.
forEach
(
function
(
val
,
idx
)
{
if
(
val
&&
(
!
temp
[
val
]
||
data
[
id
].
config
.
repeat
)
&&
(
dd
=
dl
.
find
(
'dd[lay-value="'
+
val
.
value
+
'"]'
))[
0
])
{
common
.
handlerLabel
(
id
,
dd
,
true
);
temp
[
val
]
=
1
;
}
});
});
});
};
Common
.
prototype
.
bindEvent
=
function
(
name
,
id
,
fun
)
{
if
(
id
&&
id
instanceof
Function
)
{
fun
=
id
;
id
=
null
;
}
if
(
fun
&&
fun
instanceof
Function
)
{
if
(
!
id
)
{
$
.
each
(
data
,
function
(
id
,
val
)
{
data
[
id
]
?
data
[
id
].
config
[
name
]
=
fun
:
events
[
name
][
id
]
=
fun
;
});
}
else
{
data
[
id
]
?
(
data
[
id
].
config
[
name
]
=
fun
,
delete
events
[
name
][
id
])
:
events
[
name
][
id
]
=
fun
;
}
}
};
Common
.
prototype
.
check
=
function
(
id
,
notAutoRender
)
{
if
(
$
(
'dl[xid="'
+
id
+
'"]'
).
length
)
{
return
true
;
}
else
if
(
$
(
'select[xm-select="'
+
id
+
'"]'
).
length
)
{
if
(
!
notAutoRender
)
{
this
.
render
(
id
,
$
(
'select[xm-select="'
+
id
+
'"]'
));
return
true
;
}
}
else
{
delete
data
[
id
];
return
false
;
}
};
Common
.
prototype
.
render
=
function
(
id
,
select
)
{
common
.
init
(
select
);
common
.
one
(
$
(
'dl[xid="'
+
id
+
'"]'
).
parents
(
'.'
+
PNAME
));
common
.
initVal
(
id
);
};
Common
.
prototype
.
log
=
function
(
obj
)
{
console
.
log
(
obj
);
};
var
Select4
=
function
Select4
()
{
this
.
v
=
v
;
this
.
render
();
};
var
common
=
new
Common
();
Select4
.
prototype
.
value
=
function
(
id
,
type
,
isAppend
)
{
if
(
typeof
id
!=
'string'
)
{
return
[];
}
var
fs
=
data
[
id
];
if
(
!
common
.
check
(
id
))
{
return
[];
}
if
(
typeof
type
==
'string'
||
type
==
undefined
)
{
var
arr
=
fs
.
values
.
concat
([])
||
[];
if
(
type
==
'val'
)
{
return
arr
.
map
(
function
(
val
)
{
return
val
.
value
;
});
}
if
(
type
==
'valStr'
)
{
return
arr
.
map
(
function
(
val
)
{
return
val
.
value
;
}).
join
(
','
);
}
if
(
type
==
'name'
)
{
return
arr
.
map
(
function
(
val
)
{
return
val
.
name
;
});
}
if
(
type
==
'nameStr'
)
{
return
arr
.
map
(
function
(
val
)
{
return
val
.
name
;
}).
join
(
','
);
}
return
arr
;
}
if
(
common
.
isArray
(
type
))
{
var
dl
=
$
(
'[xid="'
+
id
+
'"]'
),
temp
=
{},
dd
=
void
0
,
isAdd
=
true
;
if
(
isAppend
==
false
)
{
//删除传入的数组
isAdd
=
false
;
}
else
if
(
isAppend
==
true
)
{
//追加模式
isAdd
=
true
;
}
else
{
//删除原有的数据
common
.
removeAll
(
id
);
}
if
(
isAdd
)
{
fs
.
values
.
forEach
(
function
(
val
,
index
)
{
temp
[
val
.
value
]
=
1
;
});
}
type
.
forEach
(
function
(
val
,
index
)
{
if
(
val
&&
(
!
temp
[
val
]
||
fs
.
config
.
repeat
))
{
if
((
dd
=
dl
.
find
(
'dd[lay-value="'
+
val
+
'"]'
))[
0
])
{
common
.
handlerLabel
(
id
,
dd
,
isAdd
,
null
,
true
);
temp
[
val
]
=
1
;
}
else
{
var
name
=
common
.
valToName
(
id
,
val
);
if
(
name
)
{
common
.
handlerLabel
(
id
,
dd
,
isAdd
,
common
.
getItem
(
id
,
val
),
true
);
temp
[
val
]
=
1
;
}
}
}
});
}
};
Select4
.
prototype
.
on
=
function
(
id
,
fun
,
isEnd
)
{
common
.
bindEvent
(
isEnd
?
'endOn'
:
'on'
,
id
,
fun
);
return
this
;
};
Select4
.
prototype
.
filter
=
function
(
id
,
fun
)
{
common
.
bindEvent
(
'filter'
,
id
,
fun
);
return
this
;
};
Select4
.
prototype
.
maxTips
=
function
(
id
,
fun
)
{
common
.
bindEvent
(
'maxTips'
,
id
,
fun
);
return
this
;
};
Select4
.
prototype
.
opened
=
function
(
id
,
fun
)
{
common
.
bindEvent
(
'opened'
,
id
,
fun
);
return
this
;
};
Select4
.
prototype
.
closed
=
function
(
id
,
fun
)
{
common
.
bindEvent
(
'closed'
,
id
,
fun
);
return
this
;
};
Select4
.
prototype
.
config
=
function
(
id
,
config
,
isJson
)
{
if
(
id
&&
(
typeof
id
===
'undefined'
?
'undefined'
:
_typeof
(
id
))
==
'object'
)
{
isJson
=
config
==
true
;
config
=
id
;
id
=
null
;
}
if
(
config
&&
(
typeof
config
===
'undefined'
?
'undefined'
:
_typeof
(
config
))
==
'object'
)
{
if
(
isJson
)
{
config
.
header
||
(
config
.
header
=
{});
config
.
header
[
'Content-Type'
]
=
'application/json; charset=UTF-8'
;
config
.
dataType
=
'json'
;
}
id
?
(
ajaxs
[
id
]
=
$
.
extend
(
true
,
{},
ajaxs
[
id
]
||
ajax
,
config
),
!
common
.
check
(
id
)
&&
this
.
render
(
id
),
data
[
id
]
&&
config
.
direction
&&
(
data
[
id
].
config
.
direction
=
config
.
direction
),
data
[
id
]
&&
config
.
clearInput
&&
(
data
[
id
].
config
.
clearInput
=
true
),
config
.
searchUrl
&&
data
[
id
]
&&
common
.
triggerSearch
(
$
(
'.'
+
PNAME
+
' dl[xid="'
+
id
+
'"]'
).
parents
(
'.'
+
FORM_SELECT
),
true
))
:
(
$
.
extend
(
true
,
ajax
,
config
),
$
.
each
(
ajaxs
,
function
(
key
,
item
)
{
$
.
extend
(
true
,
item
,
config
);
}));
}
return
this
;
};
Select4
.
prototype
.
render
=
function
(
id
,
options
)
{
var
_ref2
;
if
(
id
&&
(
typeof
id
===
'undefined'
?
'undefined'
:
_typeof
(
id
))
==
'object'
)
{
options
=
id
;
id
=
null
;
}
var
config
=
options
?
(
_ref2
=
{
init
:
options
.
init
,
disabled
:
options
.
disabled
,
max
:
options
.
max
,
isSearch
:
options
.
isSearch
,
searchUrl
:
options
.
searchUrl
,
isCreate
:
options
.
isCreate
,
radio
:
options
.
radio
,
skin
:
options
.
skin
,
direction
:
options
.
direction
,
height
:
options
.
height
,
formname
:
options
.
formname
,
layverify
:
options
.
layverify
,
layverType
:
options
.
layverType
,
showCount
:
options
.
showCount
,
placeholder
:
options
.
placeholder
,
create
:
options
.
create
,
filter
:
options
.
filter
,
maxTips
:
options
.
maxTips
,
on
:
options
.
on
},
_defineProperty
(
_ref2
,
'on'
,
options
.
on
),
_defineProperty
(
_ref2
,
'opened'
,
options
.
opened
),
_defineProperty
(
_ref2
,
'closed'
,
options
.
closed
),
_defineProperty
(
_ref2
,
'template'
,
options
.
template
),
_defineProperty
(
_ref2
,
'clearInput'
,
options
.
clearInput
),
_ref2
)
:
{};
options
&&
options
.
searchType
!=
undefined
&&
(
config
.
searchType
=
options
.
searchType
==
'dl'
?
1
:
0
);
if
(
id
)
{
fsConfigs
[
id
]
=
{};
$
.
extend
(
fsConfigs
[
id
],
data
[
id
]
?
data
[
id
].
config
:
{},
config
);
}
else
{
$
.
extend
(
fsConfig
,
config
);
}
(
$
(
'select['
+
NAME
+
'="'
+
id
+
'"]'
)[
0
]
?
$
(
'select['
+
NAME
+
'="'
+
id
+
'"]'
)
:
$
(
'select['
+
NAME
+
']'
)).
each
(
function
(
index
,
select
)
{
var
sid
=
select
.
getAttribute
(
NAME
);
common
.
render
(
sid
,
select
);
setTimeout
(
function
()
{
return
common
.
setHidnVal
(
sid
,
$
(
'select[xm-select="'
+
sid
+
'"] + div.'
+
PNAME
+
' .'
+
LABEL
));
},
10
);
});
return
this
;
};
Select4
.
prototype
.
disabled
=
function
(
id
)
{
var
target
=
{};
id
?
common
.
check
(
id
)
&&
(
target
[
id
]
=
data
[
id
])
:
target
=
data
;
$
.
each
(
target
,
function
(
key
,
val
)
{
$
(
'dl[xid="'
+
key
+
'"]'
).
prev
().
addClass
(
DIS
);
});
return
this
;
};
Select4
.
prototype
.
undisabled
=
function
(
id
)
{
var
target
=
{};
id
?
common
.
check
(
id
)
&&
(
target
[
id
]
=
data
[
id
])
:
target
=
data
;
$
.
each
(
target
,
function
(
key
,
val
)
{
$
(
'dl[xid="'
+
key
+
'"]'
).
prev
().
removeClass
(
DIS
);
});
return
this
;
};
Select4
.
prototype
.
data
=
function
(
id
,
type
,
config
)
{
if
(
!
id
||
!
type
||
!
config
)
{
common
.
log
(
'id: '
+
id
+
' param error !!!'
);
return
this
;
}
if
(
!
common
.
check
(
id
))
{
common
.
log
(
'id: '
+
id
+
' not render !!!'
);
return
this
;
}
this
.
value
(
id
,
[]);
this
.
config
(
id
,
config
);
if
(
type
==
'local'
)
{
common
.
renderData
(
id
,
config
.
arr
,
config
.
linkage
==
true
,
config
.
linkageWidth
?
config
.
linkageWidth
:
'100'
);
}
else
if
(
type
==
'server'
)
{
common
.
ajax
(
id
,
config
.
url
,
config
.
keyword
,
config
.
linkage
==
true
,
config
.
linkageWidth
?
config
.
linkageWidth
:
'100'
);
}
return
this
;
};
Select4
.
prototype
.
btns
=
function
(
id
,
btns
,
config
)
{
if
(
id
&&
common
.
isArray
(
id
))
{
btns
=
id
;
id
=
null
;
}
if
(
!
btns
||
!
common
.
isArray
(
btns
))
{
return
this
;
}
;
var
target
=
{};
id
?
common
.
check
(
id
)
&&
(
target
[
id
]
=
data
[
id
])
:
target
=
data
;
btns
=
btns
.
map
(
function
(
obj
)
{
if
(
typeof
obj
==
'string'
)
{
if
(
obj
==
'select'
)
{
return
quickBtns
[
0
];
}
if
(
obj
==
'remove'
)
{
return
quickBtns
[
1
];
}
if
(
obj
==
'reverse'
)
{
return
quickBtns
[
2
];
}
if
(
obj
==
'skin'
)
{
return
quickBtns
[
3
];
}
}
return
obj
;
});
$
.
each
(
target
,
function
(
key
,
val
)
{
val
.
config
.
btns
=
btns
;
var
dd
=
$
(
'dl[xid="'
+
key
+
'"]'
).
find
(
'.'
+
FORM_SELECT_TIPS
+
':first'
);
if
(
btns
.
length
)
{
var
show
=
config
&&
config
.
show
&&
(
config
.
show
==
'name'
||
config
.
show
==
'icon'
)
?
config
.
show
:
''
;
var
html
=
common
.
renderBtns
(
key
,
show
,
config
&&
config
.
space
?
config
.
space
:
'30px'
);
dd
.
html
(
html
);
}
else
{
var
pcInput
=
dd
.
parents
(
'.'
+
FORM_SELECT
).
find
(
'.'
+
TDIV
+
' input'
);
var
_html
=
pcInput
.
attr
(
'placeholder'
)
||
pcInput
.
attr
(
'back'
);
dd
.
html
(
_html
);
dd
.
removeAttr
(
'style'
);
}
});
return
this
;
};
Select4
.
prototype
.
search
=
function
(
id
,
val
)
{
if
(
id
&&
common
.
check
(
id
))
{
ajaxs
[
id
]
=
$
.
extend
(
true
,
{},
ajaxs
[
id
]
||
ajax
,
{
first
:
true
,
searchVal
:
val
});
common
.
triggerSearch
(
$
(
'dl[xid="'
+
id
+
'"]'
).
parents
(
'.'
+
FORM_SELECT
),
true
);
}
return
this
;
};
Select4
.
prototype
.
replace
=
function
(
id
,
type
,
config
)
{
var
_this17
=
this
;
if
(
!
id
||
!
type
||
!
config
)
{
common
.
log
(
'id: '
+
id
+
' param error !!!'
);
return
this
;
}
if
(
!
common
.
check
(
id
,
true
))
{
common
.
log
(
'id: '
+
id
+
' not render !!!'
);
return
this
;
}
var
oldVals
=
this
.
value
(
id
,
'val'
);
this
.
value
(
id
,
[]);
this
.
config
(
id
,
config
);
if
(
type
==
'local'
)
{
common
.
renderData
(
id
,
config
.
arr
,
config
.
linkage
==
true
,
config
.
linkageWidth
?
config
.
linkageWidth
:
'100'
,
false
,
true
);
this
.
value
(
id
,
oldVals
,
true
);
}
else
if
(
type
==
'server'
)
{
common
.
ajax
(
id
,
config
.
url
,
config
.
keyword
,
config
.
linkage
==
true
,
config
.
linkageWidth
?
config
.
linkageWidth
:
'100'
,
false
,
function
(
id
)
{
_this17
.
value
(
id
,
oldVals
,
true
);
},
true
);
}
};
return
new
Select4
();
});
\ No newline at end of file
This diff is collapsed.
Click to expand it.
src/main/resources/templates/groupBuy/addOrEdit.html
View file @
674df5c6
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
<link
rel=
"stylesheet"
th:href=
"@{/js/upload_img/css/index.css}"
>
<link
rel=
"stylesheet"
th:href=
"@{/js/upload_img/css/index.css}"
>
<script
type=
"text/javascript"
th:src=
"@{/js/jquery-3.3.1.min.js}"
></script>
<script
type=
"text/javascript"
th:src=
"@{/js/jquery-3.3.1.min.js}"
></script>
<script
type=
"text/javascript"
th:src=
"@{/js/xm-select.js}"
></script>
<script
th:src=
"@{/js/layui/layui.js}"
charset=
"utf-8"
></script>
<script
th:src=
"@{/js/layui/layui.js}"
charset=
"utf-8"
></script>
<script
type=
"text/javascript"
th:src=
"@{/js/layui/layui.all.js}"
charset=
"utf-8"
></script>
<script
type=
"text/javascript"
th:src=
"@{/js/layui/layui.all.js}"
charset=
"utf-8"
></script>
<link
rel=
"stylesheet"
th:href=
"@{/js/ueditor/themes/default/css/ueditor.css}"
type=
"text/css"
/>
<link
rel=
"stylesheet"
th:href=
"@{/js/ueditor/themes/default/css/ueditor.css}"
type=
"text/css"
/>
...
@@ -63,11 +64,10 @@
...
@@ -63,11 +64,10 @@
</div>
</div>
<div
class=
"layui-form-item"
>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
><span
style=
"color: red"
>
*
</span>
配送小区
</label>
<label
class=
"layui-form-label"
><span
style=
"color: red"
>
*
</span>
配送小区
</label>
<div
class=
"layui-input-inline"
>
<div
class=
"layui-input-inline"
id=
"areaIdList"
>
<select
name=
"areaIdList"
id=
"areaIdList"
multiple
>
<!-- <select name="areaIdList" id="areaIdList" xm-select="multiSelect" xm-select-skin="primary" lay-omit>-->
<option
th:each=
"list:${areaList}"
th:value=
"${list.id}"
<!-- <!– 选项列表 –>-->
th:text=
"${list.areaName }"
></option>
<!-- </select>-->
</select>
</div>
</div>
<label
class=
"layui-form-label"
>
简介
</label>
<label
class=
"layui-form-label"
>
简介
</label>
<div
class=
"layui-input-inline"
>
<div
class=
"layui-input-inline"
>
...
@@ -139,6 +139,7 @@
...
@@ -139,6 +139,7 @@
<script>
<script>
var
id
=
'[[${id}]]'
;
var
id
=
'[[${id}]]'
;
var
areaList
=
'[[${areaList}]]'
;
var
ue
=
UE
.
getEditor
(
'editor'
);
var
ue
=
UE
.
getEditor
(
'editor'
);
UE
.
Editor
.
prototype
.
_bkGetActionUrl
=
UE
.
Editor
.
prototype
.
getActionUrl
;
UE
.
Editor
.
prototype
.
_bkGetActionUrl
=
UE
.
Editor
.
prototype
.
getActionUrl
;
...
@@ -153,18 +154,7 @@
...
@@ -153,18 +154,7 @@
}
}
}
}
// 设置默认选中项
// 设置默认选中项
var
selectedValues
=
[];
var
selectedValues
;
if
(
id
)
{
selectedValues
=
JSON
.
parse
(
'[[${obj.areaIdList}]]'
);
// 获取下拉框元素
var
select
=
document
.
getElementById
(
'areaIdList'
);
// 遍历下拉框选项,设置选中状态
for
(
var
i
=
0
;
i
<
select
.
options
.
length
;
i
++
)
{
if
(
selectedValues
.
includes
(
parseInt
(
select
.
options
[
i
].
value
)))
{
select
.
options
[
i
].
selected
=
true
;
}
}
}
layui
.
use
([
'laydate'
],
function
()
{
layui
.
use
([
'laydate'
],
function
()
{
var
laydate
=
layui
.
laydate
;
var
laydate
=
layui
.
laydate
;
...
@@ -177,17 +167,47 @@
...
@@ -177,17 +167,47 @@
type
:
'datetime'
// 设置日期时间类型,带时分秒
type
:
'datetime'
// 设置日期时间类型,带时分秒
});
});
});
});
layui
.
use
([
'form'
,
'jquery'
,
'xmSelect'
],
function
()
{
layui
.
use
(
'form'
,
function
()
{
var
form
=
layui
.
form
;
var
form
=
layui
.
form
;
var
$
=
layui
.
jquery
;
var
xmSelect
=
layui
.
xmSelect
;
var
item
=
{
curpage
:
1
,
pagesize
:
99999
};
$
.
ajax
({
url
:
'/groupArea/findPageList'
,
// 替换成你的接口地址
type
:
'post'
,
dataType
:
'json'
,
data
:
JSON
.
stringify
(
item
),
processData
:
false
,
contentType
:
"application/json"
,
success
:
function
(
res
)
{
// 渲染下拉选项
let
arr
=
new
Array
(),
brr
=
new
Array
();
if
(
res
.
data
.
items
&&
res
.
data
.
items
.
length
)
{
res
.
data
.
items
.
forEach
(
item
=>
{
arr
.
push
({
name
:
item
.
areaName
,
value
:
item
.
id
})
})
if
(
'[[${obj.areaIdList}]]'
)
{
brr
=
JSON
.
parse
(
'[[${obj.areaIdList}]]'
);
}
}
selectedValues
=
xmSelect
.
render
({
el
:
'#areaIdList'
,
// 下拉框容器的 id
data
:
arr
,
// 接口返回的数据,格式为 [{name: '选项1', value: 'value1'}, {name: '选项2', value: 'value2'}, ...]
layVerify
:
'required'
,
// 表单验证规则,可根据需要自定义
initValue
:
brr
,
// 设置初始值,格式为 ['value1', 'value2', ...]
});
// 渲染完成后,调用 layui 的 form.render() 方法更新渲染
form
.
render
();
form
.
render
();
// 监听 select 元素的 change 事件
},
form
.
on
(
'select(areaIdList)'
,
function
(
data
)
{
error
:
function
(
err
)
{
if
(
selectedValues
.
includes
(
parseInt
(
data
.
value
)))
{
console
.
error
(
'接口请求失败:'
,
err
);
var
index
=
selectedValues
.
indexOf
(
parseInt
(
data
.
value
));
selectedValues
.
splice
(
index
,
1
);
}
else
{
selectedValues
.
push
(
parseInt
(
data
.
value
));
}
}
});
});
});
});
...
@@ -350,7 +370,7 @@
...
@@ -350,7 +370,7 @@
var
startTime
=
$
(
"#formId input[name='startDate']"
).
val
();
var
startTime
=
$
(
"#formId input[name='startDate']"
).
val
();
var
endTime
=
$
(
"#formId input[name='endDate']"
).
val
();
var
endTime
=
$
(
"#formId input[name='endDate']"
).
val
();
if
(
!
$
(
"#areaIdList"
).
val
()
)
{
if
(
selectedValues
.
getValue
(
"value"
).
length
<=
0
)
{
layer
.
msg
(
"配送小区不能为空!"
);
layer
.
msg
(
"配送小区不能为空!"
);
return
false
;
return
false
;
}
}
...
@@ -367,7 +387,7 @@
...
@@ -367,7 +387,7 @@
}
}
var
form
=
document
.
querySelector
(
"#formId"
);
var
form
=
document
.
querySelector
(
"#formId"
);
var
formdata
=
new
FormData
(
form
);
var
formdata
=
new
FormData
(
form
);
var
areaIdList
=
$
(
"#areaIdList"
).
val
(
);
var
areaIdList
=
selectedValues
.
getValue
(
"value"
);
var
products
=
[];
var
products
=
[];
// 遍历原数组
// 遍历原数组
for
(
var
i
=
0
;
i
<
selectedData
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
selectedData
.
length
;
i
++
)
{
...
...
This diff is collapsed.
Click to expand it.
src/main/resources/templates/groupBuy/list.html
View file @
674df5c6
...
@@ -185,6 +185,7 @@
...
@@ -185,6 +185,7 @@
str
+=
'<div>'
;
str
+=
'<div>'
;
//订单状态
//订单状态
var
status
=
""
;
var
status
=
""
;
if
(
d
.
groupStatus
==
2
)
status
=
"<span class='layui-badge layui-bg-green'>待生效</span>"
;
if
(
d
.
groupStatus
==
3
)
status
=
"<span class='layui-badge layui-bg-orange'>生效中</span>"
;
if
(
d
.
groupStatus
==
3
)
status
=
"<span class='layui-badge layui-bg-orange'>生效中</span>"
;
if
(
d
.
groupStatus
==
4
)
status
=
"<span class='layui-badge layui-bg-black'>已失效</span>"
;
if
(
d
.
groupStatus
==
4
)
status
=
"<span class='layui-badge layui-bg-black'>已失效</span>"
;
str
+=
' <span>'
+
status
+
'</span>'
;
str
+=
' <span>'
+
status
+
'</span>'
;
...
...
This diff is collapsed.
Click to expand it.
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