Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-admin
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
project
jinfa-admin
Commits
70da4672
Commit
70da4672
authored
Sep 02, 2021
by
前端-黄佳鑫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✨
feat(平台营销活动管理): 活动规则完善
parent
bb664d91
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
89 additions
and
190 deletions
+89
-190
index.tsx
src/pages/demand/components/modalOperate/index.tsx
+8
-4
constants.tsx
src/pages/marketing/detail/constants.tsx
+2
-2
index.less
...erchantMarketing/components/activityUserLayout/index.less
+7
-6
index.tsx
...merchantMarketing/components/activityUserLayout/index.tsx
+41
-22
data.ts
src/pages/marketingManage/merchantMarketing/detail/data.ts
+0
-114
index.tsx
src/pages/marketingManage/merchantMarketing/detail/index.tsx
+28
-39
index.tsx
...anage/merchantMarketing/merchantMarketingSearch/index.tsx
+1
-1
index.tsx
...ge/merchantMarketing/waitAuditMerchantMarketing/index.tsx
+2
-2
No files found.
src/pages/demand/components/modalOperate/index.tsx
View file @
70da4672
import
React
from
'react'
;
import
React
,
{
useState
}
from
'react'
;
import
{
Modal
}
from
'antd'
;
import
{
SchemaForm
,
SchemaMarkupField
as
Field
,
...
...
@@ -37,7 +37,7 @@ const ModalOperate: React.FC<IProps> = (props: any) => {
modalType
,
fetch
,
}
=
props
;
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
);
const
useFormEffects
=
()
=>
{
const
{
setFieldState
}
=
createFormActions
()
if
(
modalType
===
'audit'
)
{
...
...
@@ -107,6 +107,7 @@ const ModalOperate: React.FC<IProps> = (props: any) => {
const
handleSubmit
=
(
val
:
any
)
=>
{
let
value
=
{
...
val
}
let
params
:
any
=
{}
setLoading
(
true
)
if
(
modalType
===
'audit'
)
{
params
.
id
=
id
;
params
.
state
=
value
.
state
;
...
...
@@ -123,9 +124,11 @@ const ModalOperate: React.FC<IProps> = (props: any) => {
}
fetch
({
...
params
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
onOk
()
if
(
res
.
code
!==
1000
)
{
setLoading
(
false
)
return
}
onOk
&&
onOk
()
})
}
...
...
@@ -140,6 +143,7 @@ const ModalOperate: React.FC<IProps> = (props: any) => {
title=
{
title
}
visible=
{
visible
}
onCancel=
{
handleClose
}
confirmLoading=
{
loading
}
onOk=
{
()
=>
actions
.
submit
()
}
afterClose=
{
()
=>
actions
.
reset
()
}
>
...
...
src/pages/marketing/detail/constants.tsx
View file @
70da4672
...
...
@@ -368,13 +368,13 @@ export const GeneralEffect = (int, data) => {
return
[
{
col
:
[
{
label
:
'抽取用户时间'
,
extra
:
''
},
{
label
:
'抽取用户时间'
,
extra
:
data
.
extractAttemptUserTime
&&
format
(
data
.
extractAttemptUserTime
)
},
{
label
:
'活动描述'
,
extra
:
data
.
describe
},
]
},
{
col
:
[
{
label
:
'试用结束时间'
,
extra
:
''
},
{
label
:
'试用结束时间'
,
extra
:
data
.
attemptEndTime
&&
format
(
data
.
attemptEndTime
)
},
]
}
]
...
...
src/pages/marketingManage/merchantMarketing/components/activityUserLayout/index.less
View file @
70da4672
...
...
@@ -3,21 +3,22 @@
align-items: center;
h5 { margin-bottom: 2em; }
.label {
flex: 0 0
25%
;
flex: 0 0
84.66px
;
color: #909399;
}
.content {
flex: 0 0 70%;
display: flex;
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
.selector {
max-width: 130px;
min-width: 56px;
padding: 0px 6px;
min-width: 68px;
height: 32px;
color: #252D37;
background: #FAFBFC;
text-align: center;
line-height: 32px;
padding: 0px 4px;
}
}
}
...
...
src/pages/marketingManage/merchantMarketing/components/activityUserLayout/index.tsx
View file @
70da4672
...
...
@@ -14,7 +14,9 @@ interface ActivityUserLayoutProps {
/** 适用用户 */
isFlag
?:
boolean
,
/** 数据回显 */
dataScoure
?:
any
dataScoure
?:
any
,
/** 适用用户 */
allUsers
?:
any
[],
}
const
PIC_MAP
=
{
...
...
@@ -25,7 +27,7 @@ const PIC_MAP = {
};
const
ActivityUserLayout
:
React
.
FC
<
ActivityUserLayoutProps
>
=
(
props
:
any
)
=>
{
const
{
title
,
isFlag
,
dataScoure
}
=
props
;
const
{
title
,
isFlag
,
dataScoure
,
allUsers
}
=
props
;
const
[
data
,
setData
]
=
useState
<
any
>
({});
const
[
memberLevelList
,
setMemberLevelList
]
=
useState
<
any
[]
>
([]);
...
...
@@ -41,26 +43,43 @@ const ActivityUserLayout: React.FC<ActivityUserLayoutProps> = (props: any) => {
title=
{
title
}
>
<
Row
gutter=
{
[
8
,
8
]
}
>
<
Col
span=
{
8
}
>
<
div
className=
{
style
.
cell
}
>
<
h5
className=
{
style
.
label
}
>
适用用户:
</
h5
>
<
h5
className=
{
style
.
content
}
>
<
Space
>
{
data
.
newMember
!==
0
&&
<
div
className=
{
style
.
selector
}
>
新会员(平台会员)
</
div
>
}
{
data
.
oldMember
!==
0
&&
<
div
className=
{
style
.
selector
}
>
老会员(平台会员)
</
div
>
}
</
Space
>
</
h5
>
</
div
>
<
div
className=
{
style
.
cell
}
>
<
h5
className=
{
style
.
label
}
>
适用用户角色:
</
h5
>
<
h5
className=
{
style
.
content
}
>
<
Space
>
{
data
.
enterpriseMember
!==
0
&&
<
div
className=
{
style
.
selector
}
>
企业会员
</
div
>
}
{
data
.
personalMember
!==
0
&&
<
div
className=
{
style
.
selector
}
>
个人会员
</
div
>
}
</
Space
>
</
h5
>
</
div
>
</
Col
>
{
!
isEmpty
(
allUsers
)
?
allUsers
.
map
((
item
,
i
)
=>
(
<
Col
span=
{
24
}
key=
{
`allUsers_${i}`
}
>
<
div
className=
{
style
.
cell
}
>
<
h5
className=
{
style
.
label
}
>
{
item
.
title
}
:
</
h5
>
<
h5
className=
{
style
.
content
}
>
<
Space
>
{
item
.
value
.
filter
(
_item
=>
_item
.
key
!==
0
).
map
((
_item
,
_i
)
=>
(
<
div
className=
{
style
.
selector
}
key=
{
`_item_${_i}`
}
>
{
_item
.
name
}
</
div
>
))
}
</
Space
>
</
h5
>
</
div
>
</
Col
>
))
:
(
<
Col
span=
{
24
}
>
<
div
className=
{
style
.
cell
}
>
<
h5
className=
{
style
.
label
}
>
适用用户:
</
h5
>
<
h5
className=
{
style
.
content
}
>
<
Space
>
{
data
.
newMember
&&
<
div
className=
{
style
.
selector
}
>
新会员(平台会员)
</
div
>
}
{
data
.
oldMember
&&
<
div
className=
{
style
.
selector
}
>
老会员(平台会员)
</
div
>
}
</
Space
>
</
h5
>
</
div
>
<
div
className=
{
style
.
cell
}
>
<
h5
className=
{
style
.
label
}
>
适用用户角色:
</
h5
>
<
h5
className=
{
style
.
content
}
>
<
Space
>
{
data
.
enterpriseMember
&&
<
div
className=
{
style
.
selector
}
>
企业会员
</
div
>
}
{
data
.
personalMember
&&
<
div
className=
{
style
.
selector
}
>
个人会员
</
div
>
}
</
Space
>
</
h5
>
</
div
>
</
Col
>
)
}
</
Row
>
{
!
isFlag
&&
(
<
Row
gutter=
{
[
24
,
24
]
}
>
...
...
src/pages/marketingManage/merchantMarketing/detail/data.ts
deleted
100644 → 0
View file @
bb664d91
export
const
_data
=
{
id
:
1
,
activityId
:
888
,
activityName
:
'自建营销活动管理'
,
marketingNo
:
'XJBX888888'
,
externalState
:
5
,
externalStateName
:
'已结束'
,
interiorState
:
5
,
interiorStateName
:
'已结束'
,
activityType
:
1
,
orderModal
:
'询价报价下单'
,
membersName
:
'温州龙昌手袋有限公司'
,
creationTime
:
1624603001552
,
activityStartTime
:
1624603001552
,
activityEndTime
:
1624603001552
,
externalLogStates
:
[
{
isExecute
:
1
,
operationalProcess
:
"提交营销活动"
,
roleName
:
"供应商"
,
state
:
1
,
stateName
:
null
,
},
{
isExecute
:
0
,
operationalProcess
:
"审核营销活动"
,
roleName
:
"平台"
,
state
:
1
,
stateName
:
null
,
},
{
isExecute
:
0
,
operationalProcess
:
"上线营销活动"
,
roleName
:
"供应商"
,
state
:
1
,
stateName
:
null
,
},
],
externalLogs
:
[
{
auditOpinion
:
""
,
createMemberId
:
20
,
createMemberRoleId
:
11
,
createTime
:
1624600139800
,
id
:
1
,
operation
:
"提交营销活动"
,
purchaseInquiryId
:
956
,
roleName
:
"供应商"
,
state
:
2
,
stateName
:
"待平台审核"
,
},
{
auditOpinion
:
"同意"
,
createMemberId
:
20
,
createMemberRoleId
:
11
,
createTime
:
1624600139800
,
id
:
2
,
operation
:
"审核营销活动"
,
purchaseInquiryId
:
956
,
roleName
:
"平台"
,
state
:
2
,
stateName
:
"待上线活动"
,
},
],
interiorLogStates
:
[
{
isExecute
:
1
,
operationalProcess
:
"提交营销活动"
,
roleName
:
"新增营销活动"
,
state
:
1
,
stateName
:
null
,
},
{
isExecute
:
0
,
operationalProcess
:
"审核营销活动"
,
roleName
:
"审核营销活动(一级)"
,
state
:
1
,
stateName
:
null
,
},
{
isExecute
:
0
,
operationalProcess
:
"审核营销活动(二级)"
,
roleName
:
"运营总监"
,
state
:
1
,
stateName
:
null
,
},
{
isExecute
:
0
,
operationalProcess
:
"提交营销活动"
,
roleName
:
"运营人员"
,
state
:
1
,
stateName
:
null
,
},
],
interiorLogs
:
[
{
auditOpinion
:
""
,
createMemberId
:
20
,
createRoleId
:
11
,
createTime
:
1624600137942
,
department
:
"运营人员"
,
id
:
3968
,
memberId
:
null
,
memberRoleId
:
null
,
operation
:
"新增营销活动"
,
position
:
"运营部"
,
purchaseInquiryId
:
956
,
roleName
:
"张三"
,
state
:
1
,
stateName
:
"待审核(一级)"
,
step
:
1
,
},
],
}
src/pages/marketingManage/merchantMarketing/detail/index.tsx
View file @
70da4672
...
...
@@ -34,7 +34,9 @@ const DetialLayout = () => {
const
{
query
:
{
id
,
signUpId
},
pathname
}:
any
=
history
.
location
;
const
[
path
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
]);
const
[
pathPci
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
2
]);
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
)
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
);
const
[
allUsers
,
setAllusers
]
=
useState
<
any
[]
>
([]);
const
format
=
(
text
,
fmt
?:
string
)
=>
{
return
<>
{
moment
(
text
).
format
(
fmt
||
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
...
...
@@ -49,7 +51,6 @@ const DetialLayout = () => {
{
col
:
[
{
label
:
'活动ID'
,
extra
:
data
.
id
},
{
label
:
'活动名称'
,
extra
:
data
.
activityName
},
{
label
:
'外部状态'
,
extra
:
data
.
outerStatusName
},
{
label
:
'内部状态'
,
extra
:
data
.
innerStatusName
},
]
...
...
@@ -57,14 +58,15 @@ const DetialLayout = () => {
{
col
:
[
{
label
:
'活动类型'
,
extra
:
data
.
activityTypeName
},
{
label
:
'活动参与类型'
,
extra
:
data
.
activitySignUpTypeName
},
{
label
:
'活动开始时间'
,
extra
:
format
(
data
.
startTime
)
},
{
label
:
'活动结束时间'
,
extra
:
format
(
data
.
endTime
)
},
{
label
:
'活动名称'
,
extra
:
data
.
activityName
},
{
label
:
'会员名称'
,
extra
:
data
.
activitySignUpTypeName
},
]
},
{
col
:
[
{
label
:
'要求报名时间'
,
extra
:
<>
{
format
(
data
.
signUpStartTime
)
}
~
{
format
(
data
.
signUpEndTime
)
}
</>
},
{
label
:
'活动开始时间'
,
extra
:
format
(
data
.
startTime
)
},
{
label
:
'活动结束时间'
,
extra
:
format
(
data
.
endTime
)
},
{
label
:
'创建时间'
,
extra
:
format
(
data
.
createTime
)
},
]
},
])
...
...
@@ -83,9 +85,7 @@ const DetialLayout = () => {
}
let
{
data
}
=
res
;
let
externalLogStates
:
any
=
[];
let
interiorLogStates
:
any
=
[];
let
externalLogs
:
any
=
[];
let
interiorLogs
:
any
=
[];
if
(
data
.
outerTaskList
)
{
data
.
outerTaskList
.
forEach
((
item
:
any
)
=>
{
externalLogStates
.
push
({
...
...
@@ -98,18 +98,6 @@ const DetialLayout = () => {
})
data
.
externalLogStates
=
externalLogStates
;
}
if
(
data
.
innerTaskList
)
{
data
.
innerTaskList
.
forEach
((
item
:
any
)
=>
{
interiorLogStates
.
push
({
state
:
item
.
step
,
stateName
:
null
,
isExecute
:
item
.
isExecute
,
operationalProcess
:
item
.
taskName
,
roleName
:
item
.
roleName
,
})
})
data
.
interiorLogStates
=
interiorLogStates
;
}
if
(
data
.
outerRecordDOList
)
{
data
.
outerRecordDOList
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
externalLogs
.
push
({
...
...
@@ -125,23 +113,24 @@ const DetialLayout = () => {
})
data
.
externalLogs
=
externalLogs
;
}
if
(
data
.
innerRecordDOList
)
{
data
.
innerRecordDOList
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
interiorLogs
.
push
({
department
:
item
.
department
,
position
:
item
.
jobTitle
,
operation
:
item
.
operate
,
createTime
:
item
.
operateTime
,
roleName
:
item
.
operator
,
auditOpinion
:
item
.
opinion
,
stateName
:
item
.
statusName
,
id
:
index
+
1
,
state
:
item
.
status
,
step
:
index
,
})
})
data
.
interiorLogs
=
interiorLogs
;
}
setAllusers
([
{
title
:
'适用用户'
,
value
:
[{
key
:
data
.
newUser
,
name
:
'新用户(不包含会员)'
},{
key
:
data
.
oldUser
,
name
:
'老用户(不包含会员)'
},{
key
:
data
.
newMember
,
name
:
'新会员(仅会员用户)'
},{
key
:
data
.
oldMember
,
name
:
'老会员(仅会员用户)'
}]
}
])
setDataSource
(
data
);
handleBasicEffect
(
data
)
handleGeneralEffect
(
data
.
activityDefinedBO
,
data
.
activityType
)
...
...
@@ -204,7 +193,7 @@ const DetialLayout = () => {
title=
"活动商品"
columns=
{
columns
}
/>
<
ActivityUserLayout
dataScoure=
{
dataSource
}
/>
<
ActivityUserLayout
dataScoure=
{
dataSource
}
allUsers=
{
allUsers
}
/>
<
DemandLayout
storeList=
{
dataSource
.
shopList
}
/>
<
RecordLyout
/>
</
Fragment
>
...
...
@@ -214,7 +203,7 @@ const DetialLayout = () => {
<
ModalOperate
id=
{
signUpId
?
signUpId
:
id
}
title=
"单据审核"
modalType=
{
signUpId
?
'merkeingAudit'
:
'merkeingAuditId'
}
modalType=
{
signUpId
?
'merkeingAudit'
:
'merkeingAuditId'
}
visible=
{
visible
}
fetch=
{
fetchLink
()
}
onCancel=
{
()
=>
setVisible
(
false
)
}
...
...
src/pages/marketingManage/merchantMarketing/merchantMarketingSearch/index.tsx
View file @
70da4672
...
...
@@ -22,7 +22,7 @@ const MerchantMarketingSearch = () => {
title
:
'活动名称'
,
key
:
'activityName'
,
dataIndex
:
'activityName'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/merchantMarketing/merchantMarketingSearch/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/m
arketingManage/m
erchantMarketing/merchantMarketingSearch/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'活动类型'
,
...
...
src/pages/marketingManage/merchantMarketing/waitAuditMerchantMarketing/index.tsx
View file @
70da4672
...
...
@@ -50,7 +50,7 @@ const WaitAuditMerchantMarketing = () => {
title
:
'活动名称'
,
key
:
'activityName'
,
dataIndex
:
'activityName'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/merchantMarketing/waitAuditMerchantMarketing/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/m
arketingManage/m
erchantMarketing/waitAuditMerchantMarketing/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'活动类型'
,
...
...
@@ -86,7 +86,7 @@ const WaitAuditMerchantMarketing = () => {
title
:
'操作'
,
key
:
'state'
,
dataIndex
:
'state'
,
render
:
(
_text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/merchantMarketing/waitAuditMerchantMarketing/detail?id=${record.id}`
)
}
>
审核
</
Button
>
render
:
(
_text
,
record
)
=>
(
record
.
exam
&&
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/marketingManage/merchantMarketing/waitAuditMerchantMarketing/detail?id=${record.id}`
)
}
>
审核
</
Button
>)
}
]
...
...
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