Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄庭坚
jinfa-platform
Commits
34d4cc4b
Commit
34d4cc4b
authored
Aug 27, 2021
by
前端-黄佳鑫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✨
feat(平台营销活动报名): 修改按钮显示
parent
69c448a9
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1169 additions
and
23 deletions
+1169
-23
index.ts
config/routes/index.ts
+2
-2
index.tsx
...ction/marketingAbility/paltformSign/readySubmit/index.tsx
+1
-0
add.tsx
.../marketingAbility/paltformSign/readySubmitExamine/add.tsx
+4
-2
index.tsx
...arketingAbility/paltformSign/readySubmitExamine/index.tsx
+9
-13
index.tsx
...ransaction/marketingAbility/paltformSign/search/index.tsx
+1
-0
add.tsx
...arketingAbility/selfManagement/readySubmitExamine/add.tsx
+54
-3
index.less
...eadySubmitExamine/components/partakeUserLayout/index.less
+79
-0
index.tsx
...readySubmitExamine/components/partakeUserLayout/index.tsx
+132
-0
index.less
...ment/readySubmitExamine/components/rulesLayout/index.less
+33
-0
index.tsx
...ement/readySubmitExamine/components/rulesLayout/index.tsx
+564
-3
index.less
...ement/readySubmitExamine/components/shopLayout/index.less
+24
-0
index.tsx
...gement/readySubmitExamine/components/shopLayout/index.tsx
+97
-0
index.ts
...lity/selfManagement/readySubmitExamine/constants/index.ts
+169
-0
No files found.
config/routes/index.ts
View file @
34d4cc4b
...
...
@@ -83,10 +83,10 @@ const memberCenterRoute = {
// MemberRoute,
// HandlingRoute,
// PayandSettleRoute,
//
marketingRoute,
marketingRoute
,
// DealAbilityRoute,
// ...asyncRoutes,
...
routes
,
//
...routes,
{
path
:
'/memberCenter/noAuth'
,
auth
:
false
,
...
...
src/pages/transaction/marketingAbility/paltformSign/readySubmit/index.tsx
View file @
34d4cc4b
...
...
@@ -122,6 +122,7 @@ const ReadySubmit = () => {
reload=
{
ref
}
columns=
{
columns
}
effects=
"id"
rowKey=
"activityId"
fetch=
{
PublicApi
.
getMarketingPlatformActivitySignupPageTobeSubmitSignUp
}
selectedRow=
{
true
}
fetchRowkeys=
{
(
e
)
=>
setRowKeys
(
e
)
}
...
...
src/pages/transaction/marketingAbility/paltformSign/readySubmitExamine/add.tsx
View file @
34d4cc4b
...
...
@@ -28,7 +28,8 @@ const TABLINK = [
]
const
DetialLayout
=
()
=>
{
const
{
query
:
{
activityId
,
signUpId
}
}
=
history
.
location
;
const
{
query
:
{
activityId
,
signUpId
},
pathname
}
=
history
.
location
;
const
[
path
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
]);
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
)
const
[
unsaved
,
setUnsaved
]
=
useState
<
boolean
>
(
false
);
const
[
productList
,
setProductList
]
=
useState
<
any
[]
>
([]);
...
...
@@ -107,7 +108,8 @@ const DetialLayout = () => {
signUpId
!==
null
&&
(
params
.
id
=
signUpId
)
if
(
!
isEmpty
(
productList
))
{
setLoading
(
true
)
PublicApi
.
postMarketingPlatformActivitySignupSave
({
...
params
}).
then
(
res
=>
{
const
fieldApi
=
(
path
===
'add'
?
PublicApi
.
postMarketingPlatformActivitySignupSave
:
PublicApi
.
postMarketingPlatformActivitySignupUpdate
)
fieldApi
({
...
params
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
setLoading
(
false
)
return
...
...
src/pages/transaction/marketingAbility/paltformSign/readySubmitExamine/index.tsx
View file @
34d4cc4b
...
...
@@ -89,19 +89,15 @@ const ReadySubmitExamine = () => {
dataIndex
:
'state'
,
render
:
(
text
,
record
)
=>
(
<>
{
record
.
button
===
7
&&
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readySubmitExamine/edit?activityId=${record.activityId}&signUpId=${record.id}`
)
}
>
修改报名资料
</
Button
>
}
{
record
.
button
===
6
&&
(
<>
<
Popconfirm
title=
"确定要提交吗?"
disabled=
{
!
record
.
id
}
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
handleSubmit
(
record
.
id
)
}
>
<
Button
type=
'link'
disabled=
{
!
record
.
id
}
>
提交审核
</
Button
>
</
Popconfirm
>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readySubmitExamine/add?activityId=${record.activityId}`
)
}
>
填写报名资料
</
Button
>
</>
)
}
{
record
.
update
&&
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readySubmitExamine/edit?activityId=${record.activityId}&signUpId=${record.id}`
)
}
>
修改报名资料
</
Button
>
}
{
record
.
submit
&&
(
<
Popconfirm
title=
"确定要提交吗?"
disabled=
{
!
record
.
id
}
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
handleSubmit
(
record
.
id
)
}
>
<
Button
type=
'link'
disabled=
{
!
record
.
id
}
>
提交审核
</
Button
>
</
Popconfirm
>
)
}
{
record
.
save
&&
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readySubmitExamine/add?activityId=${record.activityId}`
)
}
>
填写报名资料
</
Button
>
}
</>
)
},
...
...
src/pages/transaction/marketingAbility/paltformSign/search/index.tsx
View file @
34d4cc4b
...
...
@@ -102,6 +102,7 @@ const Search = () => {
<
TableLayout
columns=
{
columns
}
effects=
"id"
rowKey=
"activityId"
fetch=
{
PublicApi
.
getMarketingPlatformActivitySignupPage
}
useStateEffects=
{
useStateEffects
}
schema=
{
{
...
...
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/add.tsx
View file @
34d4cc4b
...
...
@@ -6,6 +6,9 @@ import { SaveOutlined } from '@ant-design/icons';
import
PeripheralLayout
from
'@/pages/transaction/components/detailLayout'
;
import
BasicInfoLayout
from
'./components/basicInfoLayout'
;
import
RulesLayout
from
'./components/rulesLayout'
;
import
ShopLayout
from
'./components/shopLayout'
;
import
ProductListLayout
from
'../../paltformSign/readySubmitExamine/components/productListLayout'
;
import
PartakeUserLayout
from
'./components/partakeUserLayout'
;
const
layout
:
any
=
{
colon
:
false
,
...
...
@@ -14,9 +17,55 @@ const layout: any = {
};
const
AddedMarketing
=
()
=>
{
const
{
query
:
{
activityId
,
signUpId
}
}
=
history
.
location
;
const
focus$
=
useEventEmitter
();
const
[
form
]
=
Form
.
useForm
();
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
)
const
[
unsaved
,
setUnsaved
]
=
useState
<
boolean
>
(
false
);
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
);
const
[
shopList
,
setShopList
]
=
useState
<
any
[]
>
([]);
const
[
dataSource
,
setDataSource
]
=
useState
<
any
>
({});
const
[
productList
,
setProductList
]
=
useState
<
any
[]
>
([]);
const
[
memberLevelList
,
setMemberLevelList
]
=
useState
<
any
[]
>
([]);
const
[
memberType
,
setMemberType
]
=
useState
<
any
[]
>
([]);
const
handleGetShopList
=
(
mall
)
=>
{
console
.
log
(
mall
,
10086
)
const
shopList
=
mall
.
filter
(
item
=>
item
.
checked
)
form
.
setFieldsValue
({
"shopList"
:
shopList
.
map
(
item
=>
{
return
{
shopId
:
item
.
id
,
shopName
:
item
.
name
,
logo
:
item
.
logoUrl
,
}
})
})
}
const
handleGetDataSoure
=
(
e
)
=>
{
if
(
!
unsaved
)
{
setUnsaved
(
true
)
}
setProductList
([...
e
])
}
const
handleGetLevel
=
(
levels
)
=>
{
const
list
=
levels
.
map
(
item
=>
{
return
{
id
:
item
.
id
,
memberLevelId
:
item
.
id
,
memberType
:
item
.
memberType
,
memberTypeName
:
item
.
memberTypeName
,
roleType
:
item
.
roleId
,
roleTypeName
:
item
.
roleName
,
level
:
item
.
level
,
levelTypeName
:
item
.
levelTypeName
,
levelTag
:
item
.
levelTag
,
}
})
setMemberLevelList
([...
list
])
}
return
(
<
PeripheralLayout
detail=
'新增营销活动'
...
...
@@ -26,7 +75,6 @@ const AddedMarketing = () => {
{
id
:
'activityProductLayout'
,
title
:
'活动商品'
},
{
id
:
'partakeUserLayout'
,
title
:
'参与用户'
},
{
id
:
'shopLayout'
,
title
:
'适用商城'
},
{
id
:
'applyMemberLayout'
,
title
:
'适用会员'
},
]
}
effect=
{
<
Button
...
...
@@ -44,7 +92,10 @@ const AddedMarketing = () => {
{
...
layout
}
>
<
BasicInfoLayout
form=
{
form
}
focus
$=
{
focus$
}
/>
<
RulesLayout
focus
$=
{
focus$
}
/>
<
RulesLayout
form=
{
form
}
focus
$=
{
focus$
}
/>
<
ProductListLayout
signUpId=
{
signUpId
!==
'null'
&&
signUpId
}
data=
{
dataSource
}
getDataSource=
{
handleGetDataSoure
}
/>
<
PartakeUserLayout
onGetLevel=
{
handleGetLevel
}
onSetLevel=
{
memberLevelList
}
setMemberType=
{
memberType
}
/>
<
ShopLayout
onGetShopList=
{
handleGetShopList
}
onSetShopList=
{
shopList
}
/>
</
Form
>
}
/>
...
...
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/partakeUserLayout/index.less
0 → 100644
View file @
34d4cc4b
.rulesLayout {
:global {
.ant-checkbox {
display: none;
}
.ant-checkbox-wrapper {
min-width: 56px;
text-align: center;
color: rgba(0, 0, 0, 0.85);
font-weight: 400;
padding: 5.6px 0px;
border: 1px solid transparent;
box-shadow: 0 2px 0 rgb(0 0 0 / 2%);
border-color: #d9d9d9;
}
.ant-checkbox-wrapper-checked {
color: @main-color;
border-color: @main-color;
}
}
}
.cell {
display: flex;
align-items: center;
h5 { margin-bottom: 2em; }
.label {
flex: 0 0 25%;
color: #909399;
}
.content {
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
.selector {
width: 68px;
height: 32px;
color: #252D37;
background: #FAFBFC;
text-align: center;
line-height: 32px;
}
}
}
.colStyle {
position: relative;
padding: 10px 16px;
border-color: transparent;
background-color: #FAFBFC;
cursor: pointer;
.cell {
h5 { margin-bottom: 0px; }
.label,
.content {
flex: 1;
}
}
:global {
.ant-checkbox-wrapper {
width: 100%;
height: 100%;
display: block;
position: absolute;
left: 0;
top: 0;
.ant-checkbox {
display: none;
}
}
.ant-checkbox-wrapper-checked {
border: 1px solid @main-color;
}
}
}
.shopLevelConfigChecked {
border: 1px solid;
border-color: @main-color;
box-sizing: border-box;
}
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/partakeUserLayout/index.tsx
0 → 100644
View file @
34d4cc4b
import
React
,
{
useCallback
,
useState
,
useEffect
}
from
'react'
;
import
{
Form
,
Checkbox
,
Row
,
Col
,
Image
}
from
'antd'
;
import
CardLayout
from
'../card'
;
import
cx
from
'classnames'
;
import
style
from
'./index.less'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
isEmpty
}
from
'@/components/NiceForm/components/AntUpload/shared'
;
import
IMG_LEVEL1
from
'@/assets/imgs/level1.png'
;
import
IMG_LEVEL2
from
'@/assets/imgs/level2.png'
;
import
IMG_LEVEL3
from
'@/assets/imgs/level3.png'
;
import
IMG_LEVEL4
from
'@/assets/imgs/level4.png'
;
const
PIC_MAP
=
{
1
:
IMG_LEVEL1
,
2
:
IMG_LEVEL2
,
3
:
IMG_LEVEL3
,
4
:
IMG_LEVEL4
,
};
interface
PartakeUserLayoutProps
{
/** 返回等级 */
onGetLevel
?:
(
e
:
any
)
=>
void
,
/** 回显数据 */
onSetLevel
?:
any
[],
/** 会员类型 */
setMemberType
?:
any
[]
}
const
PartakeUserLayout
:
React
.
FC
<
PartakeUserLayoutProps
>
=
(
props
:
any
)
=>
{
const
{
onGetLevel
,
onSetLevel
,
setMemberType
}
=
props
const
[
allUser
,
setAllUser
]
=
useState
<
any
[]
>
([]);
const
[
user
,
setUser
]
=
useState
<
Number
[]
>
([]);
const
[
levelConfig
,
setLevelConfig
]
=
useState
<
any
[]
>
([]);
const
suitableMemberTypeList
=
useCallback
(
async
()
=>
{
await
PublicApi
.
getMarketingCouponSuitableMemberTypeList
().
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
}
setAllUser
(
res
.
data
)
})
},
[])
const
handleChange
=
(
e
)
=>
{
setUser
(
e
.
filter
(
_item
=>
_item
!==
1
&&
_item
!==
2
))
}
useEffect
(()
=>
{
suitableMemberTypeList
()
},
[])
useEffect
(()
=>
{
if
(
!
isEmpty
(
user
))
{
PublicApi
.
getMemberManageMarketingSuitableLevelConfigPage
({
levelConfigIds
:
''
,
roleIds
:
''
,
memberTypes
:
''
,
current
:
'1'
,
pageSize
:
'999'
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
}
setLevelConfig
(
res
.
data
.
data
)
})
}
},
[
user
])
const
handleLevelConfig
=
(
e
)
=>
{
const
data
=
[...
levelConfig
]
onGetLevel
(
data
.
filter
(
item
=>
e
.
includes
(
item
.
id
)))
}
return
(
<
CardLayout
id=
"partakeUserLayout"
title=
"参与用户"
weight
>
<
Form
.
Item
name=
"allUser"
label=
"适用新老会员"
tooltip=
"当天平台审核通过的平台会员为新会员,非当天审核通过的平台会员为老会员"
rules=
{
[{
required
:
true
,
message
:
'请选择适用新老会员'
}]
}
className=
{
style
.
rulesLayout
}
>
<
Checkbox
.
Group
onChange=
{
handleChange
}
>
{
allUser
.
map
(
item
=>
(
<
Checkbox
key=
{
`allUser${item.value}`
}
value=
{
item
.
value
}
>
{
item
.
name
}
</
Checkbox
>
))
}
</
Checkbox
.
Group
>
</
Form
.
Item
>
{
!
isEmpty
(
user
)
&&
(
<
Form
.
Item
name=
"memberLevelList"
>
<
Checkbox
.
Group
onChange=
{
handleLevelConfig
}
>
<
Row
gutter=
{
[
24
,
24
]
}
>
{
levelConfig
.
map
(
item
=>
(
<
Col
span=
{
12
}
key=
{
item
.
id
}
>
<
div
className=
{
style
.
colStyle
}
>
<
Row
>
<
Col
span=
{
6
}
>
<
div
className=
{
style
.
cell
}
>
<
h5
className=
{
style
.
label
}
>
会员类型:
</
h5
>
<
h5
className=
{
style
.
content
}
>
{
item
.
memberTypeName
}
</
h5
>
</
div
>
</
Col
>
<
Col
span=
{
6
}
>
<
div
className=
{
style
.
cell
}
>
<
h5
className=
{
style
.
label
}
>
会员角色:
</
h5
>
<
h5
className=
{
style
.
content
}
>
{
item
.
roleName
}
</
h5
>
</
div
>
</
Col
>
<
Col
span=
{
6
}
>
<
div
className=
{
style
.
cell
}
>
<
h5
className=
{
style
.
label
}
>
等级类型:
</
h5
>
<
h5
className=
{
style
.
content
}
>
{
item
.
levelTypeName
}
</
h5
>
</
div
>
</
Col
>
<
Col
span=
{
6
}
>
<
div
className=
{
style
.
cell
}
>
<
h5
className=
{
style
.
label
}
>
等级标签:
</
h5
>
<
h5
className=
{
style
.
content
}
><
Image
width=
{
56
}
height=
{
16
}
preview=
{
false
}
src=
{
PIC_MAP
[
item
.
level
]
}
/></
h5
>
</
div
>
</
Col
>
</
Row
>
<
Checkbox
value=
{
item
.
id
}
/>
</
div
>
</
Col
>
))
}
</
Row
>
</
Checkbox
.
Group
>
</
Form
.
Item
>
)
}
</
CardLayout
>
)
}
export
default
PartakeUserLayout
;
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/rulesLayout/index.less
0 → 100644
View file @
34d4cc4b
.rulesLayout {
:global {
.ant-radio-button-wrapper {
min-width: 80px;
max-width: 80px;
text-align: center;
padding-left: 0px;
padding-right: 0px;
}
.ant-checkbox {
display: none;
}
.ant-checkbox-wrapper {
min-width: 80px;
max-width: 80px;
text-align: center;
color: rgba(0, 0, 0, 0.85);
font-weight: 400;
padding: 5.6px 0px;
border: 1px solid transparent;
// box-shadow: 0 2px 0 rgb(0 0 0 / 2%);
border-color: #d9d9d9;
justify-content: center;
}
.ant-checkbox-wrapper-checked {
color: @main-color;
border-color: @main-color;
}
.inputWidth {
width: 160px;
}
}
}
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/rulesLayout/index.tsx
View file @
34d4cc4b
import
React
,
{
useState
}
from
'react'
;
import
CardLayout
from
'../car
d'
;
import
{
Form
,
Checkbox
,
Radio
,
Input
,
Space
,
Button
,
DatePicker
}
from
'ant
d'
;
import
{
EventEmitter
}
from
'@umijs/hooks/lib/useEventEmitter'
import
{
isEmpty
}
from
'@formily/shared'
;
import
{
FormInstance
}
from
'antd/es/form/Form'
;
import
{
MinusOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
;
import
moment
from
'moment'
;
import
style
from
'./index.less'
;
import
CardLayout
from
'../card'
;
import
{
OVERLAYACTIVITYTYPE
,
OVERRUNRULETYPE
,
PROMOTIONTYPE
,
LADDERBOLIST
}
from
'../../constants'
;
interface
RulesLayoutProps
{
/** umi-hooks */
focus$
?:
EventEmitter
<
void
>
,
/** FormInstance */
form
?:
FormInstance
,
}
type
optionProps
=
{
...
...
@@ -17,20 +26,572 @@ type optionProps = {
}
const
RulesLayout
:
React
.
FC
<
RulesLayoutProps
>
=
(
props
:
any
)
=>
{
const
{
focus$
}
=
props
;
const
{
focus$
,
form
}
=
props
;
const
[
option
,
setOption
]
=
useState
<
optionProps
>
();
const
[
ladderType
,
setLadderType
]
=
useState
<
number
>
(
1
)
const
handleActivityDefinedBO
=
(
e
)
=>
{
const
{
value
}
=
e
.
target
setLadderType
(
Number
(
value
));
}
focus$
.
useSubscription
((
val
:
optionProps
)
=>
{
setOption
(
val
);
});
/** 叠加活动类型 */
const
allowActivity
=
(
int
=
1
)
=>
{
switch
(
int
)
{
case
1
:
case
2
:
case
3
:
case
4
:
case
5
:
case
6
:
case
7
:
case
8
:
case
13
:
return
(
<
Form
.
Item
name=
{
[
'activityDefinedBO'
,
'allowActivity'
]
}
tooltip=
"允许叠加活动类型表明在同一时间内允许同一个商品可以叠加的活动类型"
label=
"叠加活动类型"
rules=
{
[{
required
:
true
,
message
:
'请选择叠加活动类型'
}]
}
className=
{
style
.
rulesLayout
}
>
<
Checkbox
.
Group
>
{
OVERLAYACTIVITYTYPE
(
int
)?.
map
(
item
=>
(
<
Checkbox
key=
{
item
.
value
}
value=
{
item
.
value
}
>
{
item
.
label
}
</
Checkbox
>
))
}
</
Checkbox
.
Group
>
</
Form
.
Item
>
)
}
}
/** 叠加优惠券 */
const
allowCoupon
=
(
int
=
1
)
=>
{
switch
(
int
)
{
case
1
:
case
2
:
case
3
:
case
4
:
case
5
:
case
6
:
case
7
:
case
8
:
case
12
:
case
13
:
case
15
:
return
(
<
Form
.
Item
name=
{
[
'activityDefinedBO'
,
'allowCoupon'
]
}
tooltip=
"叠加优惠劵表示活动商品是否可以同时使用优惠劵"
label=
"叠加优惠券"
rules=
{
[{
required
:
true
,
message
:
'请选择是否叠加优惠'
}]
}
>
<
Radio
.
Group
>
<
Radio
value=
{
true
}
>
是
</
Radio
>
<
Radio
value=
{
false
}
>
否
</
Radio
>
</
Radio
.
Group
>
</
Form
.
Item
>
)
}
}
/** 超限规则 */
const
exceedRule
=
(
int
=
1
)
=>
{
switch
(
int
)
{
case
1
:
case
2
:
case
3
:
case
8
:
case
4
:
case
5
:
case
6
:
case
7
:
case
12
:
case
13
:
return
(
<
Form
.
Item
name=
{
[
'activityDefinedBO'
,
'exceedRule'
]
}
tooltip=
"超限规则表示超过个人限购数量时,超出部分可以设定为原价购买,也可以设定为不可购买"
label=
"超限规则"
rules=
{
[{
required
:
true
,
message
:
'请选择超限规则'
}]
}
>
<
Radio
.
Group
>
{
OVERRUNRULETYPE
(
int
)?.
map
(
item
=>
(
<
Radio
key=
{
item
.
value
}
value=
{
item
.
value
}
>
{
item
.
label
}
</
Radio
>
))
}
</
Radio
.
Group
>
</
Form
.
Item
>
)
}
}
/** 满量/满额/赠送促销类型 */
const
type
=
(
int
=
1
)
=>
{
switch
(
int
)
{
/** 满量促销 */
case
4
:
/** 满额促销 */
case
5
:
/** 赠送促销 */
case
6
:
return
(
<
Form
.
Item
name=
{
[
'activityDefinedBO'
,
PROMOTIONTYPE
(
int
)
!
.
name
]
}
tooltip=
{
PROMOTIONTYPE
(
int
)?.
tooltip
}
label=
{
PROMOTIONTYPE
(
int
)?.
label
}
rules=
{
[{
required
:
true
,
message
:
PROMOTIONTYPE
(
int
)?.
message
}]
}
className=
{
style
.
rulesLayout
}
initialValue=
{
1
}
>
<
Radio
.
Group
onChange=
{
handleActivityDefinedBO
}
>
{
PROMOTIONTYPE
(
int
)?.
radio
.
map
(
item
=>
(
<
Radio
.
Button
key=
{
item
.
value
}
value=
{
item
.
value
}
>
{
item
.
label
}
</
Radio
.
Button
>
))
}
</
Radio
.
Group
>
</
Form
.
Item
>
)
/** 砍价 */
case
11
:
return
(
<
Form
.
Item
tooltip=
"每次用户帮砍价时最多能砍价的金额,固定金额表示每次砍掉的金额为固定,随机金额表示每次砍掉的金额为设置范围内的随机金额"
label=
"每次砍价金额"
required
className=
{
style
.
rulesLayout
}
>
<
Space
direction=
'vertical'
>
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'type'
]
}
rules=
{
[{
required
:
true
,
message
:
"请选择"
}]
}
>
<
Radio
.
Group
>
<
Radio
.
Button
value=
{
1
}
>
随机金额
</
Radio
.
Button
>
<
Radio
.
Button
value=
{
2
}
>
固定金额
</
Radio
.
Button
>
</
Radio
.
Group
>
</
Form
.
Item
>
<
Form
.
Item
noStyle
shouldUpdate=
{
(
prevValues
,
currentValues
)
=>
prevValues
.
activityDefinedBO
!==
currentValues
.
activityDefinedBO
}
>
{
({
getFieldValue
})
=>
getFieldValue
([
'activityDefinedBO'
,
'type'
])
===
1
?
(
<
Space
style=
{
{
display
:
'flex'
}
}
>
随机金额范围
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'randomStartPrice'
]
}
rules=
{
[{
required
:
true
,
message
:
'请输入'
}]
}
>
<
Input
style=
{
{
width
:
'160px'
}
}
addonAfter=
"元"
/>
</
Form
.
Item
>
~
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'randomEndPrice'
]
}
rules=
{
[{
required
:
true
,
message
:
'请输入'
}]
}
>
<
Input
style=
{
{
width
:
'160px'
}
}
addonAfter=
"元"
/>
</
Form
.
Item
>
</
Space
>
)
:
getFieldValue
([
'activityDefinedBO'
,
'type'
])
===
2
?
(
<
Space
style=
{
{
display
:
'flex'
}
}
>
每次砍价金额
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'restrictPrice'
]
}
rules=
{
[{
required
:
true
,
message
:
'请输入'
}]
}
>
<
Input
style=
{
{
width
:
'160px'
}
}
addonAfter=
"元"
/>
</
Form
.
Item
>
</
Space
>
)
:
null
}
</
Form
.
Item
>
</
Space
>
</
Form
.
Item
>
)
}
}
/** 满量/额减 */
const
ladderBOList
=
(
int
=
1
,
type
)
=>
{
switch
(
int
)
{
/** 满量促销 */
case
4
:
/** 满额促销 */
case
5
:
/** 多件促销 */
case
7
:
return
(
<
Form
.
List
name=
{
[
'activityDefinedBO'
,
'ladderBOList'
]
}
rules=
{
[
{
validator
:
async
(
_
,
ladderBOList
)
=>
{
if
(
!
ladderBOList
||
isEmpty
(
ladderBOList
))
{
return
Promise
.
reject
(
new
Error
(
LADDERBOLIST
(
int
,
type
)?.
message
));
}
},
},
]
}
>
{
(
fields
,
{
add
,
remove
},
{
errors
})
=>
(
<
Form
.
Item
tooltip=
{
LADDERBOLIST
(
int
,
type
)?.
tooltip
}
label=
{
LADDERBOLIST
(
int
,
type
)?.
label
}
required
>
{
fields
.
map
(({
key
,
name
,
fieldKey
,
...
restField
})
=>
(
<
Space
key=
{
key
}
style=
{
{
display
:
'flex'
,
marginBottom
:
8
}
}
align=
"center"
>
满
<
Form
.
Item
{
...
restField
}
style=
{
{
margin
:
0
}
}
name=
{
[
name
,
`${int === 7 ? 'num' : 'key'}`
]
}
fieldKey=
{
[
fieldKey
,
`${int === 7 ? 'num' : 'key'}`
]
}
rules=
{
[{
required
:
true
,
message
:
'请输入'
}]
}
>
<
Input
addonAfter=
{
LADDERBOLIST
(
int
,
type
)?.
addon
}
/>
</
Form
.
Item
>
{
LADDERBOLIST
(
int
,
type
)?.
addonAfter
}
<
Form
.
Item
{
...
restField
}
style=
{
{
margin
:
0
}
}
name=
{
[
name
,
`${int === 7 ? 'discount' : 'value'}`
]
}
fieldKey=
{
[
fieldKey
,
`${int === 7 ? 'discount' : 'value'}`
]
}
rules=
{
[{
required
:
true
,
message
:
'请输入'
}]
}
>
<
Input
addonAfter=
{
LADDERBOLIST
(
int
,
type
)?.
addonBefore
}
/>
</
Form
.
Item
>
<
Button
icon=
{
<
MinusOutlined
/>
}
onClick=
{
()
=>
remove
(
name
)
}
/>
</
Space
>
))
}
<
Button
type=
"dashed"
onClick=
{
()
=>
add
()
}
block
icon=
{
<
PlusOutlined
/>
}
>
新增
</
Button
>
<
Form
.
ErrorList
errors=
{
errors
}
/>
</
Form
.
Item
>
)
}
</
Form
.
List
>
)
/** 组合促销 */
case
8
:
return
(
<
Form
.
Item
label=
'优惠规则'
required
>
<
Space
style=
{
{
display
:
'flex'
,
marginBottom
:
8
}
}
align=
"center"
>
任选
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'num'
]
}
rules=
{
[{
required
:
true
,
message
:
'请输入'
}]
}
>
<
Input
addonAfter=
"件"
/>
</
Form
.
Item
>
付
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'price'
]
}
rules=
{
[{
required
:
true
,
message
:
'请输入'
}]
}
>
<
Input
addonAfter=
"元"
/>
</
Form
.
Item
>
</
Space
>
</
Form
.
Item
>
)
}
}
/** 赠品类型 */
const
giftType
=
(
int
=
1
)
=>
{
switch
(
int
)
{
/** 赠品类型 */
case
6
:
return
(
<
Form
.
Item
name=
{
[
'activityDefinedBO'
,
'giftType'
]
}
tooltip=
'赠商品为赠送特定的商品,赠优惠劵为赠送特定的优惠劵'
label=
'赠品类型'
rules=
{
[{
required
:
true
,
message
:
'请选择赠品类型'
}]
}
className=
{
style
.
rulesLayout
}
>
<
Radio
.
Group
>
<
Radio
.
Button
value=
{
1
}
>
赠商品
</
Radio
.
Button
>
<
Radio
.
Button
value=
{
2
}
>
赠优惠劵
</
Radio
.
Button
>
</
Radio
.
Group
>
</
Form
.
Item
>
)
}
}
/** 换购类型 */
const
swapType
=
(
int
=
1
)
=>
{
switch
(
int
)
{
/** 换购类型 */
case
13
:
return
(
<
Form
.
Item
name=
{
[
'activityDefinedBO'
,
'swapType'
]
}
tooltip=
'满额换购为订单满足要求购买的金额后,以优惠价格换购商品,买商品换购为购买满足数量的活动商品后,以优惠价格换购商品'
label=
'换购类型'
rules=
{
[{
required
:
true
,
message
:
'请选择换购类型'
}]
}
className=
{
style
.
rulesLayout
}
>
<
Radio
.
Group
>
<
Radio
.
Button
value=
{
1
}
>
满额换购
</
Radio
.
Button
>
<
Radio
.
Button
value=
{
2
}
>
买商品换购
</
Radio
.
Button
>
</
Radio
.
Group
>
</
Form
.
Item
>
)
}
}
/** 同一用户帮砍价限制次数 */
const
restrictNum
=
(
int
=
1
)
=>
{
switch
(
int
)
{
/** 砍价 */
case
11
:
return
(
<
Form
.
Item
tooltip=
"每个用户帮砍价的最大次数"
label=
"用户限制次数"
required
>
<
Space
style=
{
{
display
:
'flex'
}
}
>
同一用户限制
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'restrictNum'
]
}
rules=
{
[{
required
:
true
,
message
:
'请输入'
}]
}
>
<
Input
style=
{
{
width
:
'160px'
}
}
addonAfter=
"次"
/>
</
Form
.
Item
>
</
Space
>
</
Form
.
Item
>
)
}
}
/** 拼团 */
const
grouPing
=
(
int
=
1
)
=>
{
switch
(
Number
(
int
))
{
case
9
:
return
(
<>
<
Form
.
Item
tooltip=
"要求成团必须达到的人数,如只有参加团购的人数满足成团人数设置要求,团购才成立"
label=
"成团人数"
name=
{
[
'activityDefinedBO'
,
'assembleNum'
]
}
required
>
<
Input
style=
{
{
width
:
'359px'
}
}
addonAfter=
"人"
/>
</
Form
.
Item
>
<
Form
.
Item
tooltip=
"成团时间表示在活动有效期内,是否需要限制成团时间,不限制表示在活动有效时间内都可以参团,限制时要求输入限制时间,达到限制时间时自动成团,不能再参团。"
label=
"成团时间"
className=
{
style
.
rulesLayout
}
required
>
<
Space
>
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'assembleStatus'
]
}
rules=
{
[{
required
:
true
,
message
:
"请选择"
}]
}
>
<
Radio
.
Group
>
<
Radio
.
Button
value=
{
0
}
>
不限制
</
Radio
.
Button
>
<
Radio
.
Button
value=
{
1
}
>
限制
</
Radio
.
Button
>
</
Radio
.
Group
>
</
Form
.
Item
>
<
Form
.
Item
noStyle
shouldUpdate=
{
(
prevValues
,
currentValues
)
=>
prevValues
.
activityDefinedBO
!==
currentValues
.
activityDefinedBO
}
>
{
({
getFieldValue
})
=>
getFieldValue
([
'activityDefinedBO'
,
'assembleStatus'
])
===
1
&&
(
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'assembleTime'
]
}
rules=
{
[
{
required
:
true
,
message
:
'请选择成团时间!'
},
()
=>
({
async
validator
(
_
,
value
)
{
let
_exStartVal
=
await
form
.
getFieldValue
(
'startTime'
);
let
_exEndVal
=
await
form
.
getFieldValue
(
'endTime'
);
if
(
_exStartVal
&&
moment
(
value
).
isBefore
(
_exStartVal
))
{
return
Promise
.
reject
(
new
Error
(
'成团时间需要晚于活动开始时间'
));
}
if
(
_exEndVal
&&
moment
(
value
).
isAfter
(
_exEndVal
))
{
return
Promise
.
reject
(
new
Error
(
'成团时间需要早于活动结束时间'
));
}
return
Promise
.
resolve
();
}
})
]
}
>
<
DatePicker
showTime
allowClear
disabledDate=
{
(
current
)
=>
{
const
_startTime
=
form
.
getFieldValue
(
'startTime'
);
const
_endTime
=
form
.
getFieldValue
(
'startTime'
);
if
(
_startTime
&&
_endTime
)
{
return
current
&&
(
current
<
moment
(
_startTime
).
startOf
(
'second'
)
&&
current
>
moment
(
_endTime
).
startOf
(
'second'
))
}
else
{
return
current
&&
current
<
moment
().
startOf
(
'second'
)
}
}
}
/>
</
Form
.
Item
>
)
}
</
Form
.
Item
>
</
Space
>
</
Form
.
Item
>
<
Form
.
Item
tooltip=
"用户参团限制表示已在本团购活动内参团的用户是否可以参加其他有效团购活动,不限制表示可以无限制参加,限制时要求填写次数,默认为1"
label=
"用户参团限制"
className=
{
style
.
rulesLayout
}
required
>
<
Space
>
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'joinAssembleStatus'
]
}
rules=
{
[{
required
:
true
,
message
:
"请选择"
}]
}
>
<
Radio
.
Group
>
<
Radio
.
Button
value=
{
0
}
>
不限制
</
Radio
.
Button
>
<
Radio
.
Button
value=
{
1
}
>
限制
</
Radio
.
Button
>
</
Radio
.
Group
>
</
Form
.
Item
>
<
Form
.
Item
noStyle
shouldUpdate=
{
(
prevValues
,
currentValues
)
=>
prevValues
.
activityDefinedBO
!==
currentValues
.
activityDefinedBO
}
>
{
({
getFieldValue
})
=>
getFieldValue
([
'activityDefinedBO'
,
'joinAssembleStatus'
])
===
1
&&
(
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
[
'activityDefinedBO'
,
'joinAssembleNum'
]
}
rules=
{
[{
required
:
true
,
message
:
'请选择'
}]
}
>
<
Input
style=
{
{
width
:
'191px'
}
}
addonAfter=
"次"
/>
</
Form
.
Item
>
)
}
</
Form
.
Item
>
</
Space
>
</
Form
.
Item
>
</>
)
}
}
/** 秒杀 */
const
secondKill
=
(
int
=
1
)
=>
{
switch
(
Number
(
int
))
{
case
12
:
return
(
<
Form
.
Item
tooltip=
"设置活动周期内每日可以秒杀时间段,在秒杀时间段内,可以用秒杀价购买,不在秒杀时间段内,恢复原价购买"
label=
"每日秒杀时间段"
style=
{
{
margin
:
0
}
}
required
>
<
Space
style=
{
{
display
:
'flex'
}
}
align=
'baseline'
>
<
Form
.
Item
name=
{
[
'activityDefinedBO'
,
'startTime'
]
}
rules=
{
[{
required
:
true
,
message
:
'开始秒杀!'
},
()
=>
({
validator
(
_
,
value
)
{
const
_endTime
=
form
.
getFieldValue
(
'activityDefinedBO'
).
endTime
;
if
(
_endTime
&&
!
moment
(
value
).
isBefore
(
_endTime
))
{
return
Promise
.
reject
(
new
Error
(
'开始秒杀时间必须小于结束秒杀时间'
)
);
}
return
Promise
.
resolve
();
}
})]
}
>
<
DatePicker
style=
{
{
width
:
'168px'
}
}
picker=
'time'
allowClear
/>
</
Form
.
Item
>
~
<
Form
.
Item
name=
{
[
'activityDefinedBO'
,
'endTime'
]
}
rules=
{
[{
required
:
true
,
message
:
'结束秒杀!'
},
()
=>
({
validator
(
_
,
value
)
{
const
_startTime
=
form
.
getFieldValue
(
'activityDefinedBO'
).
startTime
;
if
(
_startTime
&&
!
moment
(
value
).
isAfter
(
_startTime
))
{
return
Promise
.
reject
(
new
Error
(
'结束秒杀时间必须大于开始秒杀时间'
)
);
}
return
Promise
.
resolve
();
}
})]
}
>
<
DatePicker
style=
{
{
width
:
'168px'
}
}
picker=
'time'
allowClear
/>
</
Form
.
Item
>
</
Space
>
</
Form
.
Item
>
)
}
}
/** 试用 */
const
probation
=
(
int
=
1
)
=>
{
console
.
log
(
int
)
switch
(
Number
(
int
))
{
case
16
:
return
(
<>
<
Form
.
Item
tooltip=
'当试用活动到期后,按设置的抽取试用用户时间,系统自动从申请试用用户中抽取试用用户并生成订单'
label=
'抽取试用用户时间'
name=
{
[
'activityDefinedBO'
,
'extractAttemptUserTime'
]
}
rules=
{
[{
required
:
true
,
message
:
'请选择抽取试用用户时间'
}]
}
>
<
DatePicker
showTime
style=
{
{
width
:
'168px'
}
}
allowClear
disabledDate=
{
(
current
)
=>
{
return
current
&&
current
<
moment
().
startOf
(
'second'
);
}
}
/>
</
Form
.
Item
>
<
Form
.
Item
tooltip=
'试用结束时间到达后,要求试用用户提交试用报告,系统提醒试用用户提交试用报告'
label=
'试用结束时间'
name=
{
[
'activityDefinedBO'
,
'attemptEndTime'
]
}
rules=
{
[{
required
:
true
,
message
:
'请选择试用结束时间'
}]
}
>
<
DatePicker
showTime
style=
{
{
width
:
'168px'
}
}
allowClear
disabledDate=
{
(
current
)
=>
{
return
current
&&
current
<
moment
().
endOf
(
'second'
);
}
}
/>
</
Form
.
Item
>
</>
)
}
}
return
(
<
CardLayout
id=
"rulesLayout"
weight
title=
{
`活动规则-${!isEmpty(option) ? option.children : '特价促销'}`
}
>
123
{
secondKill
(
option
?.
value
)
}
{
type
(
option
?.
value
)
}
{
restrictNum
(
option
?.
value
)
}
{
ladderBOList
(
option
?.
value
,
ladderType
)
}
{
giftType
(
option
?.
value
)
}
{
swapType
(
option
?.
value
)
}
{
allowActivity
(
option
?.
value
)
}
{
allowCoupon
(
option
?.
value
)
}
{
grouPing
(
option
?.
value
)
}
{
exceedRule
(
option
?.
value
)
}
{
probation
(
option
?.
value
)
}
<
Form
.
Item
name=
{
[
'activityDefinedBO'
,
'describe'
]
}
label=
"活动描述"
>
<
Input
.
TextArea
rows=
{
4
}
placeholder=
"最长500个汉字"
maxLength=
{
500
}
/>
</
Form
.
Item
>
</
CardLayout
>
)
}
...
...
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/shopLayout/index.less
0 → 100644
View file @
34d4cc4b
.shopListLayout {
display: flex;
align-items: center;
border: 1px solid transparent;
border-color: #5C626A;
padding: 8px 16px;
cursor: pointer;
.shopListLogo {
width: 32px;
height: 32px;
border-radius: 50%;
overflow: hidden;
}
.shopListName {
color: #5C626A;
margin-left: 10px;
}
}
.shopListLayoutChecked {
border-color: @main-color;
.shopListName {
color: @main-color;
}
}
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/shopLayout/index.tsx
0 → 100644
View file @
34d4cc4b
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Form
,
Row
,
Col
,
Image
}
from
'antd'
;
import
cx
from
'classnames'
;
import
CardLayout
from
'../card'
;
import
style
from
'./index.less'
;
import
{
isEmpty
}
from
'lodash'
;
import
{
PublicApi
}
from
'@/services/api'
;
type
ShopItem
=
{
describe
?:
string
environment
?:
number
,
id
?:
number
,
isDefault
?:
number
,
logoUrl
?:
string
,
name
?:
string
state
?:
number
,
type
?:
number
,
url
?:
string
,
checked
?:
boolean
,
}
interface
shopListProps
{
/** 返回选择商城 */
onGetShopList
?:
(
e
:
any
)
=>
void
,
/** 回显数据 */
onSetShopList
?:
any
[],
}
const
ShopLayout
:
React
.
FC
<
shopListProps
>
=
(
props
:
any
)
=>
{
const
{
onGetShopList
,
onSetShopList
}
=
props
;
const
[
mallList
,
setMallList
]
=
useState
<
ShopItem
[]
>
([]);
useEffect
(()
=>
{
PublicApi
.
getManageShopFindByMemberType
().
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
}
setMallList
(
res
.
data
)
})
},
[])
const
handleShopList
=
(
index
)
=>
{
let
mall
=
[...
mallList
]
const
newData
=
mall
.
map
((
_item
,
_i
)
=>
{
if
(
_i
===
index
)
{
return
{
...
_item
,
checked
:
!
_item
.
checked
}
}
return
_item
;
})
setMallList
(
newData
)
onGetShopList
(
newData
)
}
useEffect
(()
=>
{
if
(
!
isEmpty
(
onSetShopList
))
{
mallList
.
forEach
(
item
=>
{
onSetShopList
.
filter
(
_item
=>
_item
.
shopId
===
item
.
id
).
forEach
(
v
=>
{
if
(
v
.
shopId
===
item
.
id
)
{
item
.
checked
=
true
}
})
})
setMallList
([...
mallList
]);
onGetShopList
([...
mallList
])
}
console
.
log
(
onSetShopList
,
mallList
)
},
[
onSetShopList
])
return
(
<
CardLayout
id=
"shopLayout"
title=
"适用商城"
weight
>
<
Form
.
Item
name=
"shopList"
>
<
Row
gutter=
{
[
16
,
16
]
}
>
{
mallList
.
map
((
item
:
ShopItem
,
index
:
number
)
=>
(
<
Col
span=
{
6
}
key=
{
item
.
id
}
>
<
div
className=
{
cx
(
style
.
shopListLayout
,
item
.
checked
&&
style
.
shopListLayoutChecked
)
}
onClick=
{
()
=>
handleShopList
(
index
)
}
>
<
div
className=
{
style
.
shopListLogo
}
>
<
Image
width=
{
32
}
height=
{
32
}
src=
{
item
.
logoUrl
}
preview=
{
false
}
/>
</
div
>
<
span
className=
{
style
.
shopListName
}
>
{
item
.
name
}
</
span
>
</
div
>
</
Col
>
))
}
</
Row
>
</
Form
.
Item
>
</
CardLayout
>
)
}
export
default
ShopLayout
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/constants/index.ts
0 → 100644
View file @
34d4cc4b
/**
* 活动类型
*/
type
activityType
=
{
lable
:
string
,
value
:
number
,
}[]
export
const
ACTIVITYTYPEARRAY
:
activityType
=
[
{
lable
:
'特价促销'
,
value
:
1
},
{
lable
:
'直降促销'
,
value
:
2
},
{
lable
:
'折价促销'
,
value
:
3
},
{
lable
:
'满量促销'
,
value
:
4
},
{
lable
:
'满额促销'
,
value
:
5
},
{
lable
:
'赠送促销'
,
value
:
6
},
{
lable
:
'多件促销'
,
value
:
7
},
{
lable
:
'组合促销'
,
value
:
8
},
{
lable
:
'拼团'
,
value
:
9
},
{
lable
:
'抽奖'
,
value
:
10
},
{
lable
:
'砍价'
,
value
:
11
},
{
lable
:
'秒杀'
,
value
:
12
},
{
lable
:
'换购'
,
value
:
13
},
{
lable
:
'预售'
,
value
:
14
},
{
lable
:
'套餐'
,
value
:
15
},
{
lable
:
'试用'
,
value
:
16
},
]
/** 叠加活动类型 */
export
const
OVERLAYACTIVITYTYPE
=
(
int
)
=>
{
switch
(
Number
(
int
))
{
case
1
:
case
2
:
case
3
:
return
[
{
label
:
'满量促销'
,
value
:
4
},
{
label
:
'满额促销'
,
value
:
5
},
{
label
:
'赠送促销'
,
value
:
6
},
{
label
:
'换购'
,
value
:
13
},
]
case
4
:
case
5
:
return
[
{
label
:
'特价促销'
,
value
:
1
},
{
label
:
'直降促销'
,
value
:
2
},
{
label
:
'折扣促销'
,
value
:
3
},
{
label
:
'赠送促销'
,
value
:
6
},
{
label
:
'换购'
,
value
:
13
},
]
case
6
:
return
[
{
label
:
'特价促销'
,
value
:
1
},
{
label
:
'直降促销'
,
value
:
2
},
{
label
:
'折扣促销'
,
value
:
3
},
{
label
:
'满量促销'
,
value
:
4
},
{
label
:
'满额促销'
,
value
:
5
},
{
label
:
'多件促销'
,
value
:
7
},
{
label
:
'组合促销'
,
value
:
8
},
{
label
:
'换购'
,
value
:
13
},
]
case
7
:
case
8
:
return
[
{
label
:
'赠送促销'
,
value
:
6
},
{
label
:
'换购'
,
value
:
13
},
]
case
13
:
return
[
{
label
:
'特价促销'
,
value
:
1
},
{
label
:
'直降促销'
,
value
:
2
},
{
label
:
'折扣促销'
,
value
:
3
},
{
label
:
'满量促销'
,
value
:
4
},
{
label
:
'满额促销'
,
value
:
5
},
{
label
:
'多件促销'
,
value
:
6
},
{
label
:
'组合促销'
,
value
:
7
},
{
label
:
'换购'
,
value
:
8
},
]
}
}
/** 超限规则 */
export
const
OVERRUNRULETYPE
=
(
int
)
=>
{
switch
(
Number
(
int
))
{
case
1
:
case
2
:
case
3
:
case
8
:
case
12
:
return
[
{
label
:
'原价购买'
,
value
:
1
},
{
label
:
'不可购买'
,
value
:
2
},
]
case
4
:
case
5
:
case
6
:
case
7
:
case
13
:
return
[
{
label
:
'不可购买'
,
value
:
2
},
{
label
:
'按个人限购最高级享受优惠'
,
value
:
1
},
]
}
}
/** 满量/满额/赠送促销类型 */
export
const
PROMOTIONTYPE
=
(
int
)
=>
{
switch
(
Number
(
int
))
{
case
4
:
return
{
name
:
"type"
,
tooltip
:
"满量减为订单满足要求购买的数量后,订单金额减去设定的优惠金额,满量折则为订单金额乘以设定的折扣"
,
label
:
"满量促销类型"
,
message
:
"请选择满量促销类型"
,
radio
:
[
{
label
:
'满量减'
,
value
:
1
},
{
label
:
'满量折'
,
value
:
2
},
]
}
case
5
:
return
{
name
:
"type"
,
tooltip
:
"满额减为订单满足要求购买的总额后,订单金额减去设定的优惠金额,满额折则为订单金额乘以设定的折扣"
,
label
:
"满额促销类型"
,
message
:
"请选择满额促销类型"
,
radio
:
[
{
label
:
'满额减'
,
value
:
1
},
{
label
:
'满额折'
,
value
:
2
},
]
}
case
6
:
return
{
name
:
"giveType"
,
tooltip
:
"满额赠为订单满足要求购买的金额后,赠送商品或优惠劵,买商品赠为购买活动商品时,赠送商品或优惠劵"
,
label
:
"赠送促销类型"
,
message
:
"请选择赠送促销类型"
,
radio
:
[
{
label
:
'满额赠'
,
value
:
1
},
{
label
:
'买商品赠'
,
value
:
2
},
]
}
}
}
/** 满量/额减 */
export
const
LADDERBOLIST
=
(
int
,
type
=
1
)
=>
{
switch
(
Number
(
int
))
{
case
4
:
return
{
tooltip
:
type
===
1
?
'优惠金额为最后订单总额减去的优惠金额'
:
'折扣为最后订单总额的折扣,输入数字,如85折,输入85,9折输入90'
,
label
:
`满量
${
type
===
1
?
'减'
:
'折'
}
`
,
message
:
`请新增满量
${
type
===
1
?
'减'
:
'折'
}
`
,
addon
:
'数量'
,
addonAfter
:
type
===
1
?
'减'
:
'打'
,
addonBefore
:
type
===
1
?
'元'
:
'折'
,
}
case
5
:
return
{
tooltip
:
type
===
1
?
'优惠金额为最后订单总额减去的优惠金额'
:
'折扣为最后订单总额的折扣,输入数字,如85折,输入85,9折输入90'
,
label
:
`满额
${
type
===
1
?
'减'
:
'折'
}
`
,
message
:
`请新增满额
${
type
===
1
?
'减'
:
'折'
}
`
,
addon
:
'元'
,
addonAfter
:
type
===
1
?
'减'
:
'打'
,
addonBefore
:
type
===
1
?
'元'
:
'折'
,
}
case
7
:
return
{
tooltip
:
'折扣为最后订单总额的折扣,输入数字,如85折,输入85,9折输入90'
,
label
:
'优惠规则'
,
addon
:
'件'
,
message
:
'请新增优惠规则'
,
addonAfter
:
'打'
,
addonBefore
:
'折'
,
}
}
}
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