记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
5adf9280
Commit
5adf9280
authored
Sep 18, 2021
by
张国柄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
+优先购菜单;
parent
413b943c
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
661 additions
and
30 deletions
+661
-30
CandyMgtCouponAdminController.java
...troller/zhengzai/candy/CandyMgtCouponAdminController.java
+20
-18
code.html
.../resources/templates/zhengzai/candy/coupon/code/code.html
+18
-6
add1.html
...n/resources/templates/zhengzai/candy/coupon/mgt/add1.html
+1
-1
add101.html
...resources/templates/zhengzai/candy/coupon/mgt/add101.html
+484
-0
add2.html
...n/resources/templates/zhengzai/candy/coupon/mgt/add2.html
+1
-1
coupon1.html
...esources/templates/zhengzai/candy/coupon/mgt/coupon1.html
+1
-1
coupon101.html
...ources/templates/zhengzai/candy/coupon/mgt/coupon101.html
+133
-0
coupon2.html
...esources/templates/zhengzai/candy/coupon/mgt/coupon2.html
+1
-1
coupon3.html
...esources/templates/zhengzai/candy/coupon/mgt/coupon3.html
+1
-1
coupon4.html
...esources/templates/zhengzai/candy/coupon/mgt/coupon4.html
+1
-1
No files found.
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/candy/CandyMgtCouponAdminController.java
View file @
5adf9280
...
@@ -13,6 +13,7 @@ import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminServic
...
@@ -13,6 +13,7 @@ import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminServic
import
com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRuleAdminService
;
import
com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRuleAdminService
;
import
com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService
;
import
com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService
;
import
com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinPerformancesAdminServiceImpl
;
import
com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinPerformancesAdminServiceImpl
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.candy.dto.admin.CandyCouponRuleBuildParam
;
import
com.liquidnet.service.candy.dto.admin.CandyCouponRuleBuildParam
;
import
com.liquidnet.service.candy.dto.admin.CandyMgtCouponBuildParam
;
import
com.liquidnet.service.candy.dto.admin.CandyMgtCouponBuildParam
;
import
com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto
;
import
com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto
;
...
@@ -71,23 +72,21 @@ public class CandyMgtCouponAdminController extends BaseController {
...
@@ -71,23 +72,21 @@ public class CandyMgtCouponAdminController extends BaseController {
startPage
();
startPage
();
List
<
CandyMgtCouponInfoDto
>
list
=
candyMgtCouponAdminService
.
listForMgtCouponInfoDto
(
listParam
);
List
<
CandyMgtCouponInfoDto
>
list
=
candyMgtCouponAdminService
.
listForMgtCouponInfoDto
(
listParam
);
if
(!
CollectionUtils
.
isEmpty
(
list
))
{
if
(!
CollectionUtils
.
isEmpty
(
list
))
{
switch
(
listParam
.
getCouType
())
{
if
(
Arrays
.
asList
(
3
,
101
).
contains
(
listParam
.
getCouType
()))
{
case
3
:
String
[]
couponIdArr
=
list
.
stream
().
map
(
CandyMgtCouponInfoDto:
:
getCouponId
).
toArray
(
String
[]::
new
);
String
[]
couponIdArr
=
list
.
stream
().
map
(
CandyMgtCouponInfoDto:
:
getCouponId
).
toArray
(
String
[]::
new
);
LambdaQueryWrapper
<
CandyCouponRule
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
CandyCouponRule
.
class
);
LambdaQueryWrapper
<
CandyCouponRule
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
CandyCouponRule
.
class
);
queryWrapper
.
in
(
CandyCouponRule:
:
getCouponId
,
couponIdArr
);
queryWrapper
.
in
(
CandyCouponRule:
:
getCouponId
,
couponIdArr
);
queryWrapper
.
eq
(
CandyCouponRule:
:
getState
,
1
);
queryWrapper
.
eq
(
CandyCouponRule:
:
getState
,
1
);
queryWrapper
.
select
(
CandyCouponRule:
:
getCruleId
,
CandyCouponRule:
:
getCouponId
,
CandyCouponRule:
:
getComment
);
queryWrapper
.
select
(
CandyCouponRule:
:
getCruleId
,
CandyCouponRule:
:
getCouponId
,
CandyCouponRule:
:
getBusiName
);
List
<
CandyCouponRule
>
couponRuleList
=
candyCouponRuleAdminService
.
list
(
queryWrapper
);
List
<
CandyCouponRule
>
couponRuleList
=
candyCouponRuleAdminService
.
list
(
queryWrapper
);
list
.
stream
().
forEach
(
r
->{
list
.
stream
().
forEach
(
r
->{
couponRuleList
.
forEach
(
cr
->
{
couponRuleList
.
forEach
(
cr
->
{
if
(
r
.
getCouponId
().
equals
(
cr
.
getCouponId
()))
{
if
(
r
.
getCouponId
().
equals
(
cr
.
getCouponId
()))
{
r
.
setCouponRuleScopeName
(
cr
.
getBusiName
());
r
.
setCouponRuleScopeName
(
cr
.
getBusiName
());
}
}
});
});
});
break
;
})
;
}
}
}
}
return
getDataTable
(
list
);
return
getDataTable
(
list
);
...
@@ -161,7 +160,7 @@ public class CandyMgtCouponAdminController extends BaseController {
...
@@ -161,7 +160,7 @@ public class CandyMgtCouponAdminController extends BaseController {
@PostMapping
(
"add"
)
@PostMapping
(
"add"
)
@ResponseBody
@ResponseBody
public
AjaxResult
addSave
(
@RequestBody
@Validated
CandyMgtCouponBuildParam
buildParam
)
{
public
AjaxResult
addSave
(
@RequestBody
@Validated
CandyMgtCouponBuildParam
buildParam
)
{
logger
.
info
(
"operator:{},buildParam:{}"
,
ShiroUtils
.
getLoginName
(),
buildParam
);
logger
.
info
(
"operator:{},buildParam:{}"
,
ShiroUtils
.
getLoginName
(),
JsonUtils
.
toJson
(
buildParam
)
);
AjaxResult
ajaxResult
=
this
.
buildValidProcessing
(
buildParam
);
AjaxResult
ajaxResult
=
this
.
buildValidProcessing
(
buildParam
);
if
(((
int
)
ajaxResult
.
get
(
AjaxResult
.
CODE_TAG
))
!=
0
)
{
if
(((
int
)
ajaxResult
.
get
(
AjaxResult
.
CODE_TAG
))
!=
0
)
{
return
ajaxResult
;
return
ajaxResult
;
...
@@ -205,17 +204,20 @@ public class CandyMgtCouponAdminController extends BaseController {
...
@@ -205,17 +204,20 @@ public class CandyMgtCouponAdminController extends BaseController {
if
(
null
==
discount
||
discount
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
if
(
null
==
discount
||
discount
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
AjaxResult
.
warn
(
"折扣配置无效"
);
return
AjaxResult
.
warn
(
"折扣配置无效"
);
}
}
if
(
buildParam
.
getBusiType
()
!=
3
)
{
if
(
buildParam
.
getBusiType
()
!=
2
)
{
return
AjaxResult
.
warn
(
"当前类别不支持折扣券"
);
return
AjaxResult
.
warn
(
"当前类别不支持折扣券"
);
}
}
buildParam
.
setValFace
(
null
);
buildParam
.
setValFace
(
null
);
buildParam
.
setValOver
(
null
);
buildParam
.
setValOver
(
null
);
buildParam
.
setValMinus
(
null
);
buildParam
.
setValMinus
(
null
);
break
;
break
;
case
101
:
case
101
:
// 优先券
if
(
null
==
buildParam
.
getOverlay
())
{
if
(
null
==
buildParam
.
getOverlay
())
{
return
AjaxResult
.
warn
(
"叠加限制配置无效"
);
return
AjaxResult
.
warn
(
"叠加限制配置无效"
);
}
}
if
(
buildParam
.
getBusiType
()
!=
3
)
{
return
AjaxResult
.
warn
(
"当前类别不支持优先券"
);
}
buildParam
.
setDiscount
(
null
);
buildParam
.
setDiscount
(
null
);
buildParam
.
setValFace
(
null
);
buildParam
.
setValFace
(
null
);
buildParam
.
setValOver
(
null
);
buildParam
.
setValOver
(
null
);
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/candy/coupon/code/code.html
View file @
5adf9280
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
<ul>
<ul>
<input
type=
"text"
name=
"couponId"
hidden=
"hidden"
th:value=
"${couponId}"
readonly
/>
<input
type=
"text"
name=
"couponId"
hidden=
"hidden"
th:value=
"${couponId}"
readonly
/>
<li>
<li>
状态:
<select
name=
"state"
th:with=
"type=${@dict.getType('zhengzai_coupon_code_state')}"
>
状态:
<select
name=
"state"
th:with=
"type=${@dict.getType('zhengzai_coupon_code_state')}"
onchange=
"selectChange()"
class=
"selectChange"
>
<option
value=
""
>
所有
</option>
<option
value=
""
>
所有
</option>
<option
th:each=
"dict : ${type}"
th:text=
"${dict.dictLabel}"
th:value=
"${dict.dictValue}"
></option>
<option
th:each=
"dict : ${type}"
th:text=
"${dict.dictLabel}"
th:value=
"${dict.dictValue}"
></option>
</select>
</select>
...
@@ -31,10 +31,10 @@
...
@@ -31,10 +31,10 @@
<a
class=
"btn btn-warning multiple disabled"
onclick=
"$.table.exportExcel()"
shiro:hasPermission=
"candy:coupon:code:export"
>
<a
class=
"btn btn-warning multiple disabled"
onclick=
"$.table.exportExcel()"
shiro:hasPermission=
"candy:coupon:code:export"
>
<i
class=
"fa fa-download"
></i>
导出
<i
class=
"fa fa-download"
></i>
导出
</a>
</a>
<a
class=
"btn btn-primary multiple disabled"
onclick=
"invalidHandler()"
shiro:hasPermission=
"candy:coupon:code:invalid"
>
<a
class=
"btn btn-primary multiple disabled
selectChangeShow"
style=
"display: none
"
onclick=
"invalidHandler()"
shiro:hasPermission=
"candy:coupon:code:invalid"
>
<i
class=
"fa fa-edit"
></i>
批量失效
<i
class=
"fa fa-edit"
></i>
批量失效
</a>
</a>
<a
class=
"btn btn-danger multiple disabled"
onclick=
"recoverHandler()"
shiro:hasPermission=
"candy:coupon:code:recover"
>
<a
class=
"btn btn-danger multiple disabled
selectChangeShow"
style=
"display: none
"
onclick=
"recoverHandler()"
shiro:hasPermission=
"candy:coupon:code:recover"
>
<i
class=
"fa fa-remove"
></i>
批量退回
<i
class=
"fa fa-remove"
></i>
批量退回
</a>
</a>
</div>
</div>
...
@@ -66,7 +66,7 @@
...
@@ -66,7 +66,7 @@
},
},
{
{
field
:
'ccode'
,
field
:
'ccode'
,
title
:
'
代金
码'
title
:
'
券
码'
},
},
{
{
field
:
'redeemMobile'
,
field
:
'redeemMobile'
,
...
@@ -89,8 +89,10 @@
...
@@ -89,8 +89,10 @@
align
:
'center'
,
align
:
'center'
,
formatter
:
function
(
value
,
row
,
index
)
{
formatter
:
function
(
value
,
row
,
index
)
{
var
actions
=
[];
var
actions
=
[];
actions
.
push
(
'<a class="btn btn-primary btn-xs '
+
invalidFlag
+
'" href="javascript:void(0)" onclick="invalidHandler(
\'
'
+
row
.
ccode
+
'
\'
)"><i class="fa fa-edit"></i>失效</a> '
);
if
(
row
.
state
===
0
)
{
actions
.
push
(
'<a class="btn btn-danger btn-xs '
+
recoverFlag
+
'" href="javascript:void(0)" onclick="recoverHandler(
\'
'
+
row
.
ccode
+
'
\'
)"><i class="fa fa-remove"></i>退回</a>'
);
actions
.
push
(
'<a class="btn btn-primary btn-xs '
+
invalidFlag
+
'" href="javascript:void(0)" onclick="invalidHandler(
\'
'
+
row
.
ccode
+
'
\'
)"><i class="fa fa-edit"></i>失效</a> '
);
actions
.
push
(
'<a class="btn btn-danger btn-xs '
+
recoverFlag
+
'" href="javascript:void(0)" onclick="recoverHandler(
\'
'
+
row
.
ccode
+
'
\'
)"><i class="fa fa-remove"></i>退回</a>'
);
}
return
actions
.
join
(
''
);
return
actions
.
join
(
''
);
}
}
}]
}]
...
@@ -125,6 +127,16 @@
...
@@ -125,6 +127,16 @@
$
.
operate
.
batchProcessingForCouponCode
(
couponId
,
2
);
$
.
operate
.
batchProcessingForCouponCode
(
couponId
,
2
);
}
}
}
}
function
selectChange
()
{
let
val
=
$
(
".selectChange"
).
val
();
console
.
log
(
typeof
val
);
if
(
val
===
'0'
)
{
$
(
".selectChangeShow"
).
show
();
}
else
{
$
(
".selectChangeShow"
).
hide
();
}
}
</script>
</script>
</body>
</body>
</html>
</html>
\ No newline at end of file
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/candy/coupon/mgt/add1.html
View file @
5adf9280
...
@@ -150,7 +150,7 @@
...
@@ -150,7 +150,7 @@
<input
type=
"radio"
value=
"0"
class=
"typeOne"
name=
"typeOne"
checked
><span>
全场
</span>
<input
type=
"radio"
value=
"0"
class=
"typeOne"
name=
"typeOne"
checked
><span>
全场
</span>
<input
type=
"radio"
value=
"1"
class=
"typeOne"
name=
"typeOne"
><span>
演出
</span>
<input
type=
"radio"
value=
"1"
class=
"typeOne"
name=
"typeOne"
><span>
演出
</span>
<input
type=
"radio"
value=
"2"
class=
"typeOne"
name=
"typeOne"
><span>
商品
</span>
<input
type=
"radio"
value=
"2"
class=
"typeOne"
name=
"typeOne"
><span>
商品
</span>
<input
type=
"radio"
value=
"3"
class=
"typeOne"
name=
"typeOne"
><span>
优先购
</span
>
<!-- <input type="radio" value="3" class="typeOne" name="typeOne"><span>优先购</span>--
>
</div>
</div>
</div>
</div>
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/candy/coupon/mgt/add101.html
0 → 100644
View file @
5adf9280
<!DOCTYPE html>
<html
lang=
"zh"
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<th:block
th:include=
"include :: header('新增优先券')"
/>
<th:block
th:include=
"include :: select2-css"
/>
<link
rel=
"stylesheet"
href=
""
>
<style>
.layui-form
{
padding
:
20px
;
}
.main_title
,
.main_type
,
.scope_application
,
.sendType
,
.phoneNumber
{
margin-bottom
:
20px
;
}
.sendType
,
.phoneNumber
,
#test1
{
display
:
none
;
}
#test1
{
display
:
none
;
}
.labelName
{
display
:
inline-block
;
width
:
100px
;
text-align
:
right
;
}
input
{
border
:
1px
solid
#ddd
;
border-radius
:
4px
;
background
:
transparent
;
outline
:
none
;
padding-left
:
5px
;
height
:
30px
;
}
.main_title
input
{
width
:
200px
;
}
.prompt
{
margin-left
:
100px
!important
;
}
.main_type
input
,
.sendType
input
,
.playMethod
input
{
margin-top
:
-2px
;
margin-right
:
5px
;
}
.main_type
span
,
.sendType
span
,
.playMethod
span
{
margin-right
:
12px
;
line-height
:
28px
;
}
.layui-form
.money
input
{
width
:
60px
;
}
.changeData
.dataOne
{
margin-bottom
:
20px
;
}
.changeData
.dataOne
p
{
margin
:
12px
0
0
20px
;
color
:
#ccc
;
}
.changeData
.dataOne
input
{
width
:
60px
;
}
.main_bottom
.describe
,
.main_bottom
.sendTime
{
margin-bottom
:
20px
;
}
.describe
,
.main_type
{
display
:
flex
;
}
.describe
textarea
,
.phoneNumber
textarea
{
width
:
400px
;
}
.sendTime
{
display
:
flex
;
}
.sendTime
input
{
margin-top
:
-6px
;
margin-right
:
5px
;
}
.bottom_btn
{
width
:
25%
;
text-align
:
center
;
}
select
{
border
:
1px
solid
#ddd
;
border-radius
:
4px
;
background
:
transparent
;
outline
:
none
;
height
:
30px
;
width
:
200px
;
}
.search_ipt
ul
,
.search_ipt
li
{
padding
:
0
;
margin
:
0
;
font-style
:
normal
;
list-style
:
none
;
}
.search_ipt
ul
{
display
:
none
;
position
:
absolute
;
left
:
0
;
top
:
26px
;
padding
:
5px
0
;
z-index
:
899
;
min-width
:
200px
;
border
:
1px
solid
#eee
;
max-height
:
300px
;
overflow-y
:
auto
;
background-color
:
#fff
;
border-radius
:
2px
;
box-sizing
:
border-box
;
box-shadow
:
1px
1px
4px
rgb
(
0
0
0
/
8%
);
}
.search_ipt
li
{
background-color
:
#fff
;
cursor
:
pointer
;
padding-left
:
10px
!important
;
color
:
#999
;
padding
:
0
10px
;
line-height
:
36px
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.search_ipt
li
:hover
{
background
:
#F6F6F6
;
}
.search_ipt
.layui-input
{
width
:
200px
;
}
#test1
{
display
:
none
;
}
.required
{
font-style
:
normal
;
color
:
red
;
}
#iptModal
{
display
:
none
;
}
#valOver
,
#valMinus
{
margin
:
0
12px
;
}
</style>
</head>
<body>
<form
id=
"form-user-add"
class=
"layui-form"
>
<div
class=
"main_title"
>
<span
class=
"labelName"
><i
class=
"required"
>
*
</i>
名称:
</span><input
type=
"text"
id=
"title"
name=
"keyword"
placeholder=
"券名称"
/>
</div>
<div
class=
"main_type"
>
<span
class=
"labelName"
>
类别:
</span>
<div
class=
"layui-input-block"
style=
"display: flex"
>
<input
type=
"radio"
value=
"3"
class=
"typeOne"
name=
"typeOne"
checked
><span>
优先购
</span>
</div>
</div>
<div
class=
"main_type"
>
<span
class=
"labelName"
>
类型:
</span>
<div
class=
"layui-input-block"
style=
"display: flex"
>
<input
type=
"radio"
value=
"0"
class=
"typeTwo"
name=
"typeTwo"
checked
><span>
用户输入兑换
</span>
<input
type=
"radio"
value=
"1"
class=
"typeTwo"
name=
"typeTwo"
><span>
发送至“我的券”
</span>
</div>
</div>
<div
class=
"scope_application"
id=
"scope_application"
>
<span
class=
"labelName"
>
适用范围:
</span>
<div
class=
"search_ipt"
style=
"position: relative;display: inline;"
>
<input
type=
"text"
id=
"searchIpt"
autocomplete=
"off"
class=
"layui-input"
placeholder=
"全部"
>
<ul
id=
"dataList"
style=
"position: absolute;"
></ul>
</div>
<select
name=
"bindType"
id=
"selectTwo"
hidden
>
<option
value=
""
>
所有
</option>
</select>
<select
name=
"bindType"
id=
"selectThree"
hidden
>
<option
value=
""
>
所有
</option>
</select>
</div>
<div
class=
"changeData"
>
<div
id=
"modalOne"
>
<div
class=
"dataOne"
>
<span
class=
"labelName"
><i
class=
"required"
>
*
</i>
数量:
</span>
<input
type=
"text"
id=
"num"
required
/>
张
</div>
<div
class=
"dataOne"
>
<span
class=
"labelName"
><i
class=
"required"
>
*
</i>
券的有效期:
</span>
<input
type=
"text"
id=
"ticketTime"
required
/>
天
<p
class=
"prompt"
>
*可兑换的时间
</p>
</div>
<div
class=
"dataOne"
id=
"exchange"
>
<span
class=
"labelName"
><i
class=
"required"
>
*
</i>
兑换有效期:
</span>
<input
type=
"text"
id=
"exchangeTime"
required
/>
天
<p
class=
"prompt"
>
*兑换后的有效时间
</p>
</div>
</div>
</div>
<div
class=
"sendType"
>
<div
style=
"display: flex;align-items: center;"
>
<span
class=
"labelName"
>
发送类型:
</span>
<div
class=
"layui-input-block"
style=
"display: flex"
>
<input
type=
"radio"
value=
"10"
class=
"sendType"
name=
"sendType"
checked
><span>
全体用户
</span>
<input
type=
"radio"
value=
"1"
class=
"sendType"
name=
"sendType"
><span>
会员
</span>
<input
type=
"radio"
value=
"2"
class=
"sendType"
name=
"sendType"
><span>
手机号
</span>
</div>
</div>
</div>
<div
class=
"phoneNumber"
>
<span
style=
"display:inline-block;margin-bottom: 12px;"
><i
class=
"required"
>
*
</i>
请输入手机号
<span
style=
"color: #ccc"
>
(手机号可填多个,使用","隔开)
</span>
:
</span>
<textarea
id=
"phoneNum"
class=
"form-control"
rows=
"4"
style=
"margin-left: 100px"
></textarea>
</div>
<div
class=
"main_bottom"
>
<div
class=
"describe"
>
<span
class=
"labelName"
>
描述说明:
</span>
<textarea
id=
"describeTxt"
class=
"form-control"
rows=
"4"
></textarea>
</div>
</div>
<div
class=
"main_type"
>
<span
class=
"labelName"
>
使用限制:
</span>
<div
class=
"layui-input-block"
style=
"display: flex"
>
<input
type=
"radio"
value=
"0"
class=
"typeOverlay"
name=
"typeOverlay"
><span>
叠加
</span>
<input
type=
"radio"
value=
"1"
class=
"typeOverlay"
name=
"typeOverlay"
checked
><span>
限制
</span>
</div>
</div>
<div
class=
"sendTime"
>
<span
class=
"labelName"
>
发送时间:
</span>
<div
class=
"layui-input-block"
style=
"display: flex"
>
<input
type=
"radio"
name=
"sex"
value=
"1"
title=
"立即"
checked
><span>
立即
</span>
<span
style=
"margin-right:12px;"
id=
"iptModal"
><p
style=
"display:flex"
><input
type=
"radio"
name=
"sex"
value=
"2"
title=
"预约"
style=
"margin-left: 12px;"
>
预约
</p></span>
</div>
<input
type=
"text"
class=
"layui-input"
id=
"test1"
placeholder=
"请选择时间"
>
</div>
<div
class=
"bottom_btn"
>
<!-- <button type="button" class="layui-btn btn btn-primary" lay-filter="formDemo" onclick="create()">创建代金券</button> -->
<button
type=
"button"
class=
"btn btn-primary"
onclick=
"create()"
>
创建优先券
</button>
</div>
</form>
<th:block
th:include=
"include :: footer"
/>
<th:block
th:include=
"include :: select2-js"
/>
<th:block
th:include=
"include :: bootstrap-suggest-js"
/>
</body>
<script
th:inline=
"javascript"
>
var
phpMallUrl
=
[[
$
{
phpMallUrl
}]];
var
roadShowId
=
'[[${roadShowId}]]'
.
replaceAll
(
"
\"
"
,
""
);
let
prefix
=
ctx
;
let
typeOne
=
'3'
;
// 类别
let
typeTwo
=
'0'
;
// 类型
let
sendType
=
'10'
;
// 发送类型
let
searchVal
=
''
;
// 输入框内数据
let
searchData
=
[];
// 搜索总数据
let
showId
=
''
;
// 选中演出id
let
selectTwoId
=
''
;
// 选中演出下级的ID
let
selectTwoName
=
''
;
// 选中演出下级的名称
let
selectThreeId
=
''
;
// 选中演出三级的ID
let
selectThreeName
=
''
;
// 选中演出三级的名称
let
sendTimeType
=
''
;
let
playMethod
=
'1'
;
// 叠加/限制
function
search
()
{
let
data
=
{
status
:
'(3,6)'
,
title
:
searchVal
}
let
str
=
''
;
promiseMethods
(
ctx
+
'kylin/base/performance/status'
,
'get'
,
data
,
'application/x-www-form-urlencoded'
).
then
(
res
=>
{
if
(
res
.
value
.
length
>
0
)
{
searchData
=
res
.
value
;
searchData
.
forEach
((
item
,
index
)
=>
{
str
+=
`<li class="selectData" onclick="selectOne('
${
item
.
performancesId
}
','
${
item
.
title
}
')">
${
item
.
title
}
</li>`
})
$
(
'#dataList'
).
html
(
str
);
}
else
{
$
(
'#dataList'
).
html
(
'<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>'
);
}
})
};
function
getMallList
()
{
let
data
=
{
title
:
''
}
let
str
=
''
;
promiseMethods
(
phpMallUrl
+
'/admin/goodListForQuick'
,
'get'
,
data
,
'application/x-www-form-urlencoded'
).
then
(
res
=>
{
if
(
res
.
data
.
length
>
0
)
{
searchData
=
res
.
data
;
searchData
.
forEach
((
item
,
index
)
=>
{
str
+=
`<li class="selectData" onclick="selectOne('
${
item
.
id
}
','
${
item
.
title
}
')">
${
item
.
title
}
</li>`
})
$
(
'#dataList'
).
html
(
str
);
}
else
{
$
(
'#dataList'
).
html
(
'<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>'
);
}
})
};
function
selectOne
(
id
,
name
)
{
$
(
"#searchIpt"
).
val
(
name
);
showId
=
id
;
if
(
typeOne
==
2
)
{
return
}
let
str
=
`<option value="0" label="">所有</option>`
;
searchData
.
forEach
(
item
=>
{
if
(
item
.
performancesId
==
id
)
{
str
+=
`<option value='
${
item
.
timeId
}
' label=
${
item
.
timeTitle
}
>
${
item
.
timeTitle
}
</option>`
}
})
selectTwoId
=
''
;
// 选中演出下级的ID
selectThreeId
=
''
;
// 选中演出三级的ID
$
(
'#selectTwo'
).
empty
().
append
(
str
);
$
(
'#selectThree'
).
empty
();
};
$
(
"#searchIpt"
).
focus
(
function
(){
if
(
typeOne
==
2
)
{
getMallList
()
}
else
{
console
.
log
(
'search'
)
search
()
}
$
(
'#dataList'
).
show
()
});
$
(
"#searchIpt"
).
blur
(
function
(){
setTimeout
(()
=>
{
$
(
'#dataList'
).
hide
()
},
500
);
});
$
(
"#searchIpt"
).
keyup
(
function
(){
searchVal
=
$
(
"#searchIpt"
).
val
()
search
()
});
$
(
'#selectTwo'
).
change
(
function
(
e
){
selectTwoId
=
$
(
this
).
val
();
console
.
log
(
selectTwoId
,
'kankna'
)
selectTwoName
=
$
(
'#selectTwo'
).
find
(
'option:selected'
).
attr
(
'label'
);
let
str
=
`<option value="0" label="" >所有</option>`
;
searchData
.
forEach
(
item
=>
{
if
(
item
.
timeId
==
selectTwoId
)
{
str
+=
`<option value='
${
item
.
ticketId
}
' label=
${
item
.
ticketTitle
}
>
${
item
.
ticketTitle
}
</option>`
}
})
selectThreeId
=
''
;
// 选中演出三级的ID
$
(
'#selectThree'
).
empty
().
append
(
str
);
});
$
(
'#selectThree'
).
change
(
function
(
e
){
selectThreeId
=
$
(
this
).
val
();
selectThreeName
=
$
(
'#selectThree'
).
find
(
'option:selected'
).
attr
(
'label'
);
});
$
(
"input[name=typeTwo]"
).
change
(
function
(
e
){
typeTwo
=
e
.
target
.
value
;
if
(
typeTwo
==
1
)
{
$
(
'#iptModal'
).
show
();
$
(
'.sendType'
).
show
();
$
(
'#exchangeTime'
).
val
(
''
)
$
(
'#exchange'
).
hide
();
if
(
sendType
==
2
)
{
$
(
'.phoneNumber'
).
show
();
}
}
else
{
$
(
'#iptModal'
).
hide
();
$
(
'#exchange'
).
show
();
$
(
'.sendType'
).
hide
();
$
(
'.phoneNumber'
).
hide
();
$
(
'.test1'
).
val
(
''
);
$
(
'.phoneNum'
).
val
(
''
);
$
(
'.test1'
).
hide
();
}
});
$
(
"input[name=sendType]"
).
change
(
function
(
e
){
sendType
=
e
.
target
.
value
;
if
(
e
.
target
.
value
==
2
)
{
$
(
'.phoneNumber'
).
show
();
$
(
'.test1'
).
show
();
}
else
{
$
(
'.phoneNumber'
).
hide
();
$
(
'.test1'
).
val
(
''
);
$
(
'.test1'
).
hide
();
}
});
$
(
"input[name=sex]"
).
change
(
function
(
e
){
sendTimeType
=
e
.
target
.
value
;
if
(
sendTimeType
==
2
)
{
$
(
'#test1'
).
show
();
}
else
{
$
(
'#test1'
).
val
(
''
)
$
(
'#test1'
).
hide
();
}
});
$
(
"input[name=typeOverlay]"
).
change
(
function
(
e
){
playMethod
=
e
.
target
.
value
;
});
layui
.
use
(
'laydate'
,
function
(){
var
laydate
=
layui
.
laydate
;
//执行一个laydate实例
laydate
.
render
({
elem
:
'#test1'
,
//指定元素
type
:
'datetime'
});
});
function
create
()
{
if
(
!
$
(
'#title'
).
val
()
||
!
$
(
'#num'
).
val
()
||
!
$
(
'#ticketTime'
).
val
())
{
return
layer
.
msg
(
'请将必填项输入完整~!'
);
if
(
typeTwo
!=
1
)
{
if
(
!
$
(
'#exchangeTime'
).
val
())
{
return
layer
.
msg
(
'请将必填项输入完整~!'
);
}
}
}
let
useScope
=
100
;
let
busiName
=
$
(
'#searchIpt'
).
val
();
let
busiId
=
''
;
if
(
!
$
(
'#searchIpt'
).
val
())
{
showId
=
''
;
}
if
(
showId
)
{
useScope
=
90
;
busiId
=
showId
;
}
if
(
selectTwoId
)
{
useScope
=
91
;
busiId
=
selectTwoId
;
// busiName = selectTwoName;
}
if
(
selectThreeId
)
{
useScope
=
92
;
busiId
=
selectThreeId
;
// busiName = selectThreeName;
}
let
data
=
{
"bindType"
:
Number
(
typeTwo
),
// 兑换券/发放
"busiType"
:
Number
(
typeOne
),
// 业务类别
"couType"
:
101
,
// 券类型
"couponRuleList"
:
[
// 适用范围[100-全场|90-演出|91-场次|92-票|80-商品|81-款式]
{
"useScope"
:
90
,
"busiName"
:
busiName
||
'全部演出'
,
"busiId"
:
busiId
}
],
"discount"
:
''
,
// 折扣券需传
"eventAmt"
:
Number
(
$
(
'#num'
).
val
()),
// 数量
"eventAt"
:
$
(
'#test1'
).
val
()
||
$
.
common
.
dateFormat
(
new
Date
(),
'yyyy-MM-dd HH:mm:ss'
),
"eventLimit"
:
$
(
'#phoneNum'
).
val
(),
// 手机号
"eventType"
:
Number
(
sendType
),
"label"
:
"标注"
,
// 不需管
"notice"
:
$
(
'#describeTxt'
).
val
(),
"overlay"
:
playMethod
,
// 优先购ticketTime
"redeemValidity"
:
Number
(
$
(
'#exchangeTime'
).
val
()),
// 兑换有效期
"title"
:
$
(
'#title'
).
val
(),
"valOver"
:
$
(
'#valOver'
).
val
(),
"valMinus"
:
$
(
'#valMinus'
).
val
(),
// "valFace": $('#valFace').val(), // 金额
"validity"
:
Number
(
$
(
'#ticketTime'
).
val
()),
}
if
(
typeTwo
==
1
)
{
// 发放
delete
data
.
redeemValidity
}
else
{
delete
data
.
eventType
}
if
(
sendType
!=
2
)
{
delete
data
.
eventLimit
;
}
console
.
log
(
data
,
'data'
)
promiseMethods
(
'/candy/coupon/mgt/add'
,
'post'
,
JSON
.
stringify
(
data
),
'application/json'
).
then
(
res
=>
{
console
.
log
(
res
)
})
}
function
promiseMethods
(
url
,
type
,
data
,
contentType
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
$
.
ajax
({
url
,
type
,
data
,
contentType
,
success
:
function
(
res
)
{
resolve
(
res
)
}
})
})
}
</script>
</html>
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/candy/coupon/mgt/add2.html
View file @
5adf9280
...
@@ -153,7 +153,7 @@
...
@@ -153,7 +153,7 @@
<input
type=
"radio"
value=
"0"
class=
"typeOne"
name=
"typeOne"
checked
><span>
全场
</span>
<input
type=
"radio"
value=
"0"
class=
"typeOne"
name=
"typeOne"
checked
><span>
全场
</span>
<input
type=
"radio"
value=
"1"
class=
"typeOne"
name=
"typeOne"
><span>
演出
</span>
<input
type=
"radio"
value=
"1"
class=
"typeOne"
name=
"typeOne"
><span>
演出
</span>
<input
type=
"radio"
value=
"2"
class=
"typeOne"
name=
"typeOne"
><span>
商品
</span>
<input
type=
"radio"
value=
"2"
class=
"typeOne"
name=
"typeOne"
><span>
商品
</span>
<input
type=
"radio"
value=
"3"
class=
"typeOne"
name=
"typeOne"
><span>
优先购
</span
>
<!-- <input type="radio" value="3" class="typeOne" name="typeOne"><span>优先购</span>--
>
</div>
</div>
</div>
</div>
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/candy/coupon/mgt/coupon1.html
View file @
5adf9280
...
@@ -132,7 +132,7 @@
...
@@ -132,7 +132,7 @@
// if (row.state === 0) {
// if (row.state === 0) {
// actions.push('
<
a
class
=
"btn btn-danger btn-xs ' + cancelMgtCouponFlag + '"
href
=
"javascript:void(0)"
onclick
=
"$.operate.remove(
\
'' + row.mcouponId + '
\
')"
><
i
class
=
"fa fa-remove"
><
/i>取消</
a
>
');
// actions.push('
<
a
class
=
"btn btn-danger btn-xs ' + cancelMgtCouponFlag + '"
href
=
"javascript:void(0)"
onclick
=
"$.operate.remove(
\
'' + row.mcouponId + '
\
')"
><
i
class
=
"fa fa-remove"
><
/i>取消</
a
>
');
// }
// }
if (row.bindType === 0) {
if (row.bindType === 0
&& row.state === 1
) {
actions.push('
<
a
class
=
"btn btn-info btn-xs"
href
=
"javascript:void(0)"
onclick
=
"couponCodeList(
\
'' + row.couponId + '
\
')"
><
i
class
=
"fa fa-list-ul"
><
/i>码列表</
a
>
');
actions.push('
<
a
class
=
"btn btn-info btn-xs"
href
=
"javascript:void(0)"
onclick
=
"couponCodeList(
\
'' + row.couponId + '
\
')"
><
i
class
=
"fa fa-list-ul"
><
/i>码列表</
a
>
');
}
}
return actions.join('');
return actions.join('');
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/candy/coupon/mgt/coupon101.html
0 → 100644
View file @
5adf9280
<!DOCTYPE html>
<html
lang=
"zh"
xmlns:th=
"http://www.thymeleaf.org"
xmlns:shiro=
"http://www.pollix.at/thymeleaf/shiro"
>
<head>
<th:block
th:include=
"include :: header('兑换券')"
/>
</head>
<body
class=
"gray-bg"
>
<div
class=
"container-div"
>
<div
class=
"row"
>
<div
class=
"col-sm-12 search-collapse"
>
<form
id=
"coupon-form"
>
<div
class=
"select-list"
>
<ul>
<input
type=
"hidden"
name=
"couType"
th:value=
"${couType}"
/>
<li>
<input
type=
"text"
name=
"keyword"
placeholder=
"搜索"
/>
</li>
<li>
类型:
<select
name=
"bindType"
th:with=
"type=${@dict.getType('zhengzai_coupon_bind_type')}"
>
<option
value=
""
>
所有
</option>
<option
th:each=
"dict : ${type}"
th:text=
"${dict.dictLabel}"
th:value=
"${dict.dictValue}"
></option>
</select>
</li>
<li>
适用范围:
<select
name=
"busiType"
th:with=
"type=${@dict.getType('zhengzai_coupon_busi_type')}"
>
<option
value=
""
>
所有
</option>
<option
th:each=
"dict : ${type}"
th:text=
"${dict.dictLabel}"
th:value=
"${dict.dictValue}"
></option>
</select>
</li>
<li>
<a
class=
"btn btn-primary btn-rounded btn-sm"
onclick=
"$.table.search()"
><i
class=
"fa fa-search"
></i>
搜索
</a>
<a
class=
"btn btn-warning btn-rounded btn-sm"
onclick=
"$.form.reset()"
><i
class=
"fa fa-refresh"
></i>
重置
</a>
</li>
</ul>
</div>
</form>
</div>
<div
class=
"btn-group-sm"
id=
"toolbar"
role=
"group"
>
<a
class=
"btn btn-success"
th:onclick=
"$.operate.addTab([[${couType}]])"
shiro:hasPermission=
"candy:coupon:mgt:add"
>
<i
class=
"fa fa-plus"
></i>
新增
</a>
</div>
<div
class=
"col-sm-12 select-table table-striped"
>
<table
id=
"bootstrap-table"
></table>
</div>
</div>
</div>
<th:block
th:include=
"include :: footer"
/>
<script
th:inline=
"javascript"
>
var
prefix
=
ctx
+
"candy/coupon/mgt"
;
var
viewMgtCouponFlag
=
[[
$
{@
permission
.
hasPermi
(
'candy:coupon:mgt:detail'
)}]];
var
cancelMgtCouponFlag
=
[[
$
{@
permission
.
hasPermi
(
'candy:coupon:mgt:cancel'
)}]];
var
couType
=
[[
$
{
couType
}]];
$
(
function
()
{
var
options
=
{
url
:
prefix
+
"/list"
,
createUrl
:
prefix
+
"/add/{id}"
,
detailUrl
:
prefix
+
"/detail/"
+
couType
+
"/{id}"
,
removeUrl
:
prefix
+
"/cancel/{id}"
,
// updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export",
sortName
:
"createdAt"
,
modalName
:
"优先券"
,
columns
:
[
{
checkbox
:
true
},
{
field
:
'couponRuleScopeName'
,
title
:
'适用演出'
},
{
field
:
'eventAmt'
,
title
:
'数量'
},
{
field
:
'title'
,
title
:
'标题'
},
{
field
:
'notice'
,
title
:
'描述'
},
{
field
:
'operator'
,
title
:
'创建人'
},
{
field
:
'createdAt'
,
title
:
'生成时间'
,
sortable
:
true
,
formatter
:
function
(
value
,
row
,
index
)
{
return
$
.
common
.
sprintf
(
"<span>%s</span>"
,
null
!=
value
?
value
.
substring
(
0
,
19
)
:
value
);
}
},
{
field
:
'expireAt'
,
title
:
'失效时间'
,
formatter
:
function
(
value
,
row
,
index
)
{
return
$
.
common
.
sprintf
(
"<span>%s</span>"
,
value
);
}
},
{
title
:
'操作'
,
// align: 'center',
formatter
:
function
(
value
,
row
,
index
)
{
var
actions
=
[];
actions
.
push
(
'<a class="btn btn-warning btn-xs '
+
viewMgtCouponFlag
+
'" href="javascript:void(0)" onclick="$.operate.detail(
\'
'
+
row
.
mcouponId
+
'
\'
)"><i class="fa fa-search"></i>详情</a>'
);
// if (row.state === 0) {
// actions.push('
<
a
class
=
"btn btn-danger btn-xs ' + cancelMgtCouponFlag + '"
href
=
"javascript:void(0)"
onclick
=
"$.operate.remove(
\
'' + row.mcouponId + '
\
')"
><
i
class
=
"fa fa-remove"
><
/i>取消</
a
>
');
// }
if (row.bindType === 0 && row.state === 1) {
actions.push('
<
a
class
=
"btn btn-info btn-xs"
href
=
"javascript:void(0)"
onclick
=
"couponCodeList(
\
'' + row.couponId + '
\
')"
><
i
class
=
"fa fa-list-ul"
><
/i>码列表</
a
>
');
}
return actions.join('');
}
}]
};
$.table.init(options);
});
/* 查看码列表 */
function couponCodeList(couponId) {
var url = '
candy
/
coupon
/
code
?
couponId
=
' + couponId;
$.modal.openTab("查看码列表", url);
}
</script>
</body>
</html>
\ No newline at end of file
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/candy/coupon/mgt/coupon2.html
View file @
5adf9280
...
@@ -132,7 +132,7 @@
...
@@ -132,7 +132,7 @@
// if (row.state === 0) {
// if (row.state === 0) {
// actions.push('
<
a
class
=
"btn btn-danger btn-xs ' + cancelMgtCouponFlag + '"
href
=
"javascript:void(0)"
onclick
=
"$.operate.remove(
\
'' + row.mcouponId + '
\
')"
><
i
class
=
"fa fa-remove"
><
/i>取消</
a
>
');
// actions.push('
<
a
class
=
"btn btn-danger btn-xs ' + cancelMgtCouponFlag + '"
href
=
"javascript:void(0)"
onclick
=
"$.operate.remove(
\
'' + row.mcouponId + '
\
')"
><
i
class
=
"fa fa-remove"
><
/i>取消</
a
>
');
// }
// }
if (row.bindType === 0) {
if (row.bindType === 0
&& row.state === 1
) {
actions.push('
<
a
class
=
"btn btn-info btn-xs"
href
=
"javascript:void(0)"
onclick
=
"couponCodeList(
\
'' + row.couponId + '
\
')"
><
i
class
=
"fa fa-list-ul"
><
/i>码列表</
a
>
');
actions.push('
<
a
class
=
"btn btn-info btn-xs"
href
=
"javascript:void(0)"
onclick
=
"couponCodeList(
\
'' + row.couponId + '
\
')"
><
i
class
=
"fa fa-list-ul"
><
/i>码列表</
a
>
');
}
}
return actions.join('');
return actions.join('');
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/candy/coupon/mgt/coupon3.html
View file @
5adf9280
...
@@ -113,7 +113,7 @@
...
@@ -113,7 +113,7 @@
// if (row.state === 0) {
// if (row.state === 0) {
// actions.push('
<
a
class
=
"btn btn-danger btn-xs ' + cancelMgtCouponFlag + '"
href
=
"javascript:void(0)"
onclick
=
"$.operate.remove(
\
'' + row.mcouponId + '
\
')"
><
i
class
=
"fa fa-remove"
><
/i>取消</
a
>
');
// actions.push('
<
a
class
=
"btn btn-danger btn-xs ' + cancelMgtCouponFlag + '"
href
=
"javascript:void(0)"
onclick
=
"$.operate.remove(
\
'' + row.mcouponId + '
\
')"
><
i
class
=
"fa fa-remove"
><
/i>取消</
a
>
');
// }
// }
if (row.bindType === 0) {
if (row.bindType === 0
&& row.state === 1
) {
actions.push('
<
a
class
=
"btn btn-info btn-xs"
href
=
"javascript:void(0)"
onclick
=
"couponCodeList(
\
'' + row.couponId + '
\
')"
><
i
class
=
"fa fa-list-ul"
><
/i>码列表</
a
>
');
actions.push('
<
a
class
=
"btn btn-info btn-xs"
href
=
"javascript:void(0)"
onclick
=
"couponCodeList(
\
'' + row.couponId + '
\
')"
><
i
class
=
"fa fa-list-ul"
><
/i>码列表</
a
>
');
}
}
return actions.join('');
return actions.join('');
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/candy/coupon/mgt/coupon4.html
View file @
5adf9280
...
@@ -132,7 +132,7 @@
...
@@ -132,7 +132,7 @@
// if (row.state === 0) {
// if (row.state === 0) {
// actions.push('
<
a
class
=
"btn btn-danger btn-xs ' + cancelMgtCouponFlag + '"
href
=
"javascript:void(0)"
onclick
=
"$.operate.remove(
\
'' + row.mcouponId + '
\
')"
><
i
class
=
"fa fa-remove"
><
/i>取消</
a
>
');
// actions.push('
<
a
class
=
"btn btn-danger btn-xs ' + cancelMgtCouponFlag + '"
href
=
"javascript:void(0)"
onclick
=
"$.operate.remove(
\
'' + row.mcouponId + '
\
')"
><
i
class
=
"fa fa-remove"
><
/i>取消</
a
>
');
// }
// }
if (row.bindType === 0) {
if (row.bindType === 0
&& row.state === 1
) {
actions.push('
<
a
class
=
"btn btn-info btn-xs"
href
=
"javascript:void(0)"
onclick
=
"couponCodeList(
\
'' + row.couponId + '
\
')"
><
i
class
=
"fa fa-list-ul"
><
/i>码列表</
a
>
');
actions.push('
<
a
class
=
"btn btn-info btn-xs"
href
=
"javascript:void(0)"
onclick
=
"couponCodeList(
\
'' + row.couponId + '
\
')"
><
i
class
=
"fa fa-list-ul"
><
/i>码列表</
a
>
');
}
}
return actions.join('');
return actions.join('');
...
...
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