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
linweijiong
jinfa-platform
Commits
32a68cc0
Commit
32a68cc0
authored
Dec 08, 2021
by
前端-黄佳鑫
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'v2' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into v2
parents
b46ad1d8
9cf6e782
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
399 additions
and
213 deletions
+399
-213
zh-CN.ts
src/locales/zh-CN.ts
+2
-0
merchantCoupon.ts
src/locales/zh-CN/marketingAbility/merchantCoupon.ts
+2
-3
paltformSign.ts
src/locales/zh-CN/marketingAbility/paltformSign.ts
+185
-0
test.ts
src/locales/zh-CN/marketingAbility/test.ts
+0
-9
index.tsx
...ransaction/marketingAbility/paltformSign/detail/index.tsx
+22
-22
index.tsx
...n/marketingAbility/paltformSign/readyExamineOne/index.tsx
+21
-19
index.tsx
...n/marketingAbility/paltformSign/readyExamineTwo/index.tsx
+19
-19
index.tsx
...ction/marketingAbility/paltformSign/readySubmit/index.tsx
+21
-23
add.tsx
.../marketingAbility/paltformSign/readySubmitExamine/add.tsx
+22
-21
columns.tsx
...ty/paltformSign/readySubmitExamine/components/columns.tsx
+0
-0
EditableCell.tsx
...bmitExamine/components/productListLayout/EditableCell.tsx
+21
-18
index.tsx
...readySubmitExamine/components/productListLayout/index.tsx
+5
-3
remind.ts
...readySubmitExamine/components/productListLayout/remind.ts
+39
-36
constants.tsx
...tingAbility/paltformSign/readySubmitExamine/constants.tsx
+0
-0
index.tsx
...arketingAbility/paltformSign/readySubmitExamine/index.tsx
+22
-24
index.tsx
...ransaction/marketingAbility/paltformSign/search/index.tsx
+18
-16
No files found.
src/locales/zh-CN.ts
View file @
32a68cc0
...
...
@@ -14,6 +14,7 @@ import systemSetting from './zh-CN/system/systemSetting'
import
accountSetting
from
'./zh-CN/system/accountSetting'
import
activityPage
from
'./zh-CN/marketingAbility/activityPage'
import
merchantCoupon
from
'./zh-CN/marketingAbility/merchantCoupon'
import
paltformSign
from
'./zh-CN/marketingAbility/paltformSign'
import
logistics
from
'./zh-CN/logistics'
import
dealAbility
from
'./zh-CN/dealAbility'
import
purchaserEvaluation
from
'./zh-CN/purchaserEvaluation'
...
...
@@ -46,6 +47,7 @@ export default {
...
accountSetting
,
...
activityPage
,
...
merchantCoupon
,
...
paltformSign
,
...
logistics
,
...
dealAbility
,
...
purchaserEvaluation
,
...
...
src/locales/zh-CN/marketingAbility/merchantCoupon.ts
View file @
32a68cc0
...
...
@@ -190,7 +190,5 @@ export default {
"merchantCoupon.VipIDGiveMountDaily"
:
"每会员ID总共可领取必须大于每日可领取"
,
"merchantCoupon.giveCouponStartTimeValid"
:
"领(发)券截止时间应该小于券有效期截止时间"
,
"merchantCoupon.giveCouponStartTimeValidUpto"
:
"券有效期截止时间应该大于领(发)券截止时间"
,
"merchantCoupon.giveCouponEveryID"
:
"发券数量应该大于等于每会员ID总共可领取数量"
,
"merchantCoupon.lfy"
:
""
,
"merchantCoupon.giveCouponEveryID"
:
"发券数量应该大于等于每会员ID总共可领取数量"
}
\ No newline at end of file
src/locales/zh-CN/marketingAbility/paltformSign.ts
0 → 100644
View file @
32a68cc0
This diff is collapsed.
Click to expand it.
src/locales/zh-CN/marketingAbility/test.ts
deleted
100644 → 0
View file @
b46ad1d8
"merchantCoupon.EnterMemberNameForSearch"
:
"Enter a member name for search"
,
"merchantCoupon.MemberID"
:
"Member ID"
,
"merchantCoupon.Membertype"
:
"会员类型(所有)"
,
"merchantCoupon.Memberlevel"
:
"会员等级(所有)"
,
"merchantCoupon.Applicableusers"
:
"适用用户(所有)"
,
"merchantCoupon.customID"
:
"客户ID"
,
"merchantCoupon.LeadSend"
:
"领(发)放劵时间"
,
"merchantCoupon.OrderUseTime"
:
"下单(使用)时间"
,
\ No newline at end of file
src/pages/transaction/marketingAbility/paltformSign/detail/index.tsx
View file @
32a68cc0
import
{
useIntl
}
from
'umi'
;
import
React
,
{
Fragment
,
useCallback
,
useMemo
,
useState
}
from
'react'
;
import
{
Button
}
from
'antd'
;
import
{
history
}
from
'umi'
;
...
...
@@ -23,6 +24,7 @@ import CouponsListLayout from '../../components/couponsListLayout';
import
{
getMarketingPlatformActivitySignupDetail
,
getMarketingPlatformActivitySignupDetailGoodsPage
,
postMarketingPlatformActivitySignupExamineStep1
,
postMarketingPlatformActivitySignupExamineStep2
}
from
'@/services/MarketingV2Api'
;
const
DetialLayout
=
()
=>
{
const
intl
=
useIntl
();
const
{
query
:
{
activityId
,
signUpId
},
pathname
}
=
history
.
location
;
const
[
path
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
]);
const
[
pathPci
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
2
]);
...
...
@@ -42,23 +44,23 @@ const DetialLayout = () => {
setBasicEffect
([
{
col
:
[
{
label
:
'活动ID'
,
extra
:
data
.
id
},
{
label
:
'活动名称'
,
extra
:
data
.
activityName
},
{
label
:
'外部状态'
,
extra
:
data
.
outerStatusName
},
{
label
:
'内部状态'
,
extra
:
data
.
innerStatusName
},
{
label
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
extra
:
data
.
id
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theNameOfTheEvent'
})}
`
,
extra
:
data
.
activityName
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.externalState'
})}
`
,
extra
:
data
.
outerStatusName
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.internalState'
})}
`
,
extra
:
data
.
innerStatusName
},
]
},
{
col
:
[
{
label
:
'活动类型'
,
extra
:
data
.
activityTypeName
},
{
label
:
'活动参与类型'
,
extra
:
data
.
activitySignUpTypeName
},
{
label
:
'活动开始时间'
,
extra
:
format
(
data
.
startTime
)
},
{
label
:
'活动结束时间'
,
extra
:
format
(
data
.
endTime
)
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theActivityType'
})}
`
,
extra
:
data
.
activityTypeName
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activitiesInvolvedInType'
})}
`
,
extra
:
data
.
activitySignUpTypeName
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activitiesStartTime'
})}
`
,
extra
:
format
(
data
.
startTime
)
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activityOverTime'
})}
`
,
extra
:
format
(
data
.
endTime
)
},
]
},
{
col
:
[
{
label
:
'要求报名时间'
,
extra
:
<>
{
format
(
data
.
signUpStartTime
)
}
~
{
format
(
data
.
signUpEndTime
)
}
</>
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.requestTimeSigningUp'
})}
`
,
extra
:
<>
{
format
(
data
.
signUpStartTime
)
}
~
{
format
(
data
.
signUpEndTime
)
}
</>
},
]
},
])
...
...
@@ -192,13 +194,13 @@ const DetialLayout = () => {
no=
{
dataSource
.
activityId
}
detail=
{
dataSource
.
activityName
}
tabLink=
{
[
{
id
:
'progressLayout'
,
title
:
'流转进度'
},
{
id
:
'basicLayout'
,
title
:
'基本信息'
},
{
id
:
'activityRuleLayout'
,
title
:
'活动规则'
},
{
id
:
'activityProductLayout'
,
title
:
'活动商品'
},
{
id
:
'activityUserLayout'
,
title
:
'活动用户'
},
{
id
:
'applyMallLayout'
,
title
:
'适用商城'
},
{
id
:
'recordLyout'
,
title
:
'流转记录'
},
{
id
:
'progressLayout'
,
title
:
`${intl.formatMessage({ id: 'paltformSign.theCirculationProgress'})}`
},
{
id
:
'basicLayout'
,
title
:
`${intl.formatMessage({ id: 'paltformSign.theBasicInformation'})}`
},
{
id
:
'activityRuleLayout'
,
title
:
`${intl.formatMessage({ id: 'paltformSign.activityRules'})}`
},
{
id
:
'activityProductLayout'
,
title
:
`${intl.formatMessage({ id: 'paltformSign.activitiesOfGoods'})}`
},
{
id
:
'activityUserLayout'
,
title
:
`${intl.formatMessage({ id: 'paltformSign.activeUsers'})}`
},
{
id
:
'applyMallLayout'
,
title
:
`${intl.formatMessage({ id: 'paltformSign.applyToMall'})}`
},
{
id
:
'recordLyout'
,
title
:
`${intl.formatMessage({ id: 'paltformSign.transferRecord'})}`
},
]
}
effect=
{
<>
...
...
@@ -208,9 +210,7 @@ const DetialLayout = () => {
type=
'primary'
onClick=
{
()
=>
setVisible
(
true
)
}
>
<
CheckCircleOutlined
/>
单据审核
</
Button
>
<
CheckCircleOutlined
/>
{
intl
.
formatMessage
({
id
:
'paltformSign.documentsReview'
})
}
</
Button
>
)
}
</>
}
...
...
@@ -220,14 +220,14 @@ const DetialLayout = () => {
<
BasicLayout
effect=
{
basicEffect
}
/>
<
GeneralLayout
visible
title=
{
`
活动规则
-${ACTIVITYTYPENAME[dataSource.activityType]}`
}
title=
{
`
${intl.formatMessage({ id: 'paltformSign.activityRules' })}
-${ACTIVITYTYPENAME[dataSource.activityType]}`
}
anchor=
"activityRuleLayout"
effect=
{
generalEffect
}
/>
<
ListLayout
anchor=
"activityProductLayout"
ids=
{
signUpId
!==
'null'
&&
{
signUpId
}
}
title=
"活动商品"
title=
{
intl
.
formatMessage
({
id
:
'paltformSign.activitiesOfGoods'
})
}
fetch=
{
getMarketingPlatformActivitySignupDetailGoodsPage
}
columns=
{
columns
}
/>
...
...
@@ -240,7 +240,7 @@ const DetialLayout = () => {
{
/* 审核 */
}
<
ModalOperate
id=
{
signUpId
}
title=
"单据审核"
title=
{
intl
.
formatMessage
({
id
:
'paltformSign.documentsReview'
})
}
modalType=
"merkeingAudit"
visible=
{
visible
}
fetch=
{
fetchLink
()
}
...
...
src/pages/transaction/marketingAbility/paltformSign/readyExamineOne/index.tsx
View file @
32a68cc0
import
{
useIntl
}
from
'umi'
;
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
TableLayout
from
'../../../components/tableLayout'
;
...
...
@@ -11,57 +12,60 @@ import { useLinkageUtils } from '@/utils/formEffectUtils';
import
{
FormEffectHooks
}
from
'@formily/antd'
;
import
{
InnerStatusColor
,
OuterStatusColor
}
from
'../../common/tagColor'
;
import
{
getMarketingPlatformActivitySignupGetActivityTypeList
,
getMarketingPlatformActivitySignupPageTobeExamineStep1
,
postMarketingPlatformActivitySignupExamineStep1Batch
}
from
'@/services/MarketingV2Api'
;
const
{
onFormMount$
}
=
FormEffectHooks
;
const
ReadyExamineOne
=
()
=>
{
const
intl
=
useIntl
();
const
ref
=
useRef
<
any
>
({});
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'活动ID'
,
title
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
key
:
'activityId'
,
dataIndex
:
'activityId'
,
},
{
title
:
'活动名称'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theNameOfTheEvent'
})}
`
,
key
:
'activityName'
,
dataIndex
:
'activityName'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/memberCenter/marketingAbility/paltformSign/readyExamineOne/preview?activityId=${record.activityId}&signUpId=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'活动类型'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theActivityType'
})}
`
,
key
:
'activityType'
,
dataIndex
:
'activityType'
,
render
:
(
_text
,
record
)
=>
<>
{
record
.
activityTypeName
}
</>,
},
{
title
:
'活动开始时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activitiesStartTime'
})}
`
,
key
:
'startTime'
,
dataIndex
:
'startTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'活动结束时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activityOverTime'
})}
`
,
key
:
'endTime'
,
dataIndex
:
'endTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'报名开始时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.startTimeSigningUp'
})}
`
,
key
:
'signUpStartTime'
,
dataIndex
:
'signUpStartTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'报名结束时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.endTimeSigningUp'
})}
`
,
key
:
'signUpEndTime'
,
dataIndex
:
'signUpEndTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'外部状态'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.externalState'
})}
`
,
key
:
'outerStatus'
,
dataIndex
:
'outerStatus'
,
render
:
(
_
,
record
)
=>
(
...
...
@@ -69,7 +73,7 @@ const ReadyExamineOne = () => {
)
},
{
title
:
'内部状态'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.internalState'
})}
`
,
key
:
'innerStatus'
,
dataIndex
:
'innerStatus'
,
render
:
(
_
,
record
)
=>
(
...
...
@@ -77,10 +81,10 @@ const ReadyExamineOne = () => {
)
},
{
title
:
'操作'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.operation'
})}
`
,
key
:
'state'
,
dataIndex
:
'state'
,
render
:
(
_
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readyExamineOne/detail?activityId=${record.activityId}&signUpId=${record.id}`
)
}
>
审核
</
Button
>
render
:
(
_
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readyExamineOne/detail?activityId=${record.activityId}&signUpId=${record.id}`
)
}
>
{
intl
.
formatMessage
({
id
:
'paltformSign.audit'
})
}
</
Button
>
},
]
...
...
@@ -104,9 +108,7 @@ const ReadyExamineOne = () => {
disabled=
{
rowkeys
.
length
===
0
}
loading=
{
submitLoading
}
onClick=
{
()
=>
fetchSubmitBatch
()
}
>
批量提交审核
</
Button
>
>
{
intl
.
formatMessage
({
id
:
'paltformSign.batchSubmitAudit'
})
}
</
Button
>
</
Col
>
</
Row
>
)
...
...
@@ -156,7 +158,7 @@ const ReadyExamineOne = () => {
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'活动ID'
,
placeholder
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
},
},
},
...
...
@@ -173,7 +175,7 @@ const ReadyExamineOne = () => {
activityName
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'活动名称'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.theNameOfTheEvent'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -182,7 +184,7 @@ const ReadyExamineOne = () => {
'[startTime,endTime]'
:
{
type
:
'daterange'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
placeholder
:
[
`${intl.formatMessage({ id: 'paltformSign.theStartTime'})}`
,
`${intl.formatMessage({ id: 'paltformSign.theEndOfTime'})}`
],
style
:
{
width
:
240
,
},
...
...
@@ -191,7 +193,7 @@ const ReadyExamineOne = () => {
activityType
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'活动类型'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.theActivityType'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -204,7 +206,7 @@ const ReadyExamineOne = () => {
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
children
:
`${intl.formatMessage({ id: 'paltformSign.theQuery'})}`
,
},
},
},
...
...
src/pages/transaction/marketingAbility/paltformSign/readyExamineTwo/index.tsx
View file @
32a68cc0
import
{
useIntl
}
from
'umi'
;
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
TableLayout
from
'../../../components/tableLayout'
;
...
...
@@ -14,54 +15,55 @@ import { getMarketingPlatformActivitySignupGetActivityTypeList, getMarketingPlat
const
{
onFormMount$
}
=
FormEffectHooks
;
const
ReadyExamineTwo
=
()
=>
{
const
intl
=
useIntl
();
const
ref
=
useRef
<
any
>
({});
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'活动ID'
,
title
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
key
:
'activityId'
,
dataIndex
:
'activityId'
,
},
{
title
:
'活动名称'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theNameOfTheEvent'
})}
`
,
key
:
'activityName'
,
dataIndex
:
'activityName'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/memberCenter/marketingAbility/paltformSign/readyExamineTwo/preview?activityId=${record.activityId}&signUpId=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'活动类型'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theActivityType'
})}
`
,
key
:
'activityType'
,
dataIndex
:
'activityType'
,
render
:
(
_text
,
record
)
=>
<>
{
record
.
activityTypeName
}
</>,
},
{
title
:
'活动开始时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activitiesStartTime'
})}
`
,
key
:
'startTime'
,
dataIndex
:
'startTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'活动结束时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activityOverTime'
})}
`
,
key
:
'endTime'
,
dataIndex
:
'endTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'报名开始时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.startTimeSigningUp'
})}
`
,
key
:
'signUpStartTime'
,
dataIndex
:
'signUpStartTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'报名结束时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.endTimeSigningUp'
})}
`
,
key
:
'signUpEndTime'
,
dataIndex
:
'signUpEndTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'外部状态'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.externalState'
})}
`
,
key
:
'outerStatus'
,
dataIndex
:
'outerStatus'
,
render
:
(
_
,
record
)
=>
(
...
...
@@ -69,7 +71,7 @@ const ReadyExamineTwo = () => {
)
},
{
title
:
'内部状态'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.internalState'
})}
`
,
key
:
'innerStatus'
,
dataIndex
:
'innerStatus'
,
render
:
(
_
,
record
)
=>
(
...
...
@@ -77,10 +79,10 @@ const ReadyExamineTwo = () => {
)
},
{
title
:
'操作'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.operation'
})}
`
,
key
:
'state'
,
dataIndex
:
'state'
,
render
:
(
_
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readyExamineTwo/detail?activityId=${record.activityId}&signUpId=${record.id}`
)
}
>
审核
</
Button
>
render
:
(
_
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readyExamineTwo/detail?activityId=${record.activityId}&signUpId=${record.id}`
)
}
>
{
intl
.
formatMessage
({
id
:
'paltformSign.audit'
})
}
</
Button
>
},
]
...
...
@@ -104,9 +106,7 @@ const ReadyExamineTwo = () => {
disabled=
{
rowkeys
.
length
===
0
}
loading=
{
submitLoading
}
onClick=
{
()
=>
fetchSubmitBatch
()
}
>
批量提交审核
</
Button
>
>
{
intl
.
formatMessage
({
id
:
'paltformSign.batchSubmitAudit'
})
}
</
Button
>
</
Col
>
</
Row
>
)
...
...
@@ -156,7 +156,7 @@ const ReadyExamineTwo = () => {
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'活动ID'
,
placeholder
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
},
},
},
...
...
@@ -173,7 +173,7 @@ const ReadyExamineTwo = () => {
activityName
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'活动名称'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.theNameOfTheEvent'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -182,7 +182,7 @@ const ReadyExamineTwo = () => {
'[startTime,endTime]'
:
{
type
:
'daterange'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
placeholder
:
[
`${intl.formatMessage({ id: 'paltformSign.theStartTime'})}`
,
`${intl.formatMessage({ id: 'paltformSign.theEndOfTime'})}`
],
style
:
{
width
:
240
,
},
...
...
@@ -191,7 +191,7 @@ const ReadyExamineTwo = () => {
activityType
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'活动类型'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.theActivityType'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -204,7 +204,7 @@ const ReadyExamineTwo = () => {
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
children
:
`${intl.formatMessage({ id: 'paltformSign.theQuery'})}`
,
},
},
},
...
...
src/pages/transaction/marketingAbility/paltformSign/readySubmit/index.tsx
View file @
32a68cc0
import
{
useIntl
}
from
'umi'
;
import
React
,
{
useState
,
useRef
}
from
'react'
;
import
TableLayout
from
'../../../components/tableLayout'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
...
...
@@ -14,6 +14,8 @@ import { getMarketingPlatformActivitySignupGetActivityTypeList, getMarketingPlat
const
{
onFormMount$
}
=
FormEffectHooks
;
const
ReadySubmit
=
()
=>
{
const
intl
=
useIntl
();
const
ref
=
useRef
<
any
>
({});
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
[
confirmLoading
,
setConfirmLoading
]
=
useState
<
boolean
>
(
false
)
...
...
@@ -37,48 +39,48 @@ const ReadySubmit = () => {
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'活动ID'
,
title
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
key
:
'activityId'
,
dataIndex
:
'activityId'
,
},
{
title
:
'活动名称'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theNameOfTheEvent'
})}
`
,
key
:
'activityName'
,
dataIndex
:
'activityName'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/memberCenter/marketingAbility/paltformSign/readySubmit/preview?activityId=${record.activityId}&signUpId=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'活动类型'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theActivityType'
})}
`
,
key
:
'activityType'
,
dataIndex
:
'activityType'
,
render
:
(
_text
,
record
)
=>
<>
{
record
.
activityTypeName
}
</>,
},
{
title
:
'活动开始时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activitiesStartTime'
})}
`
,
key
:
'startTime'
,
dataIndex
:
'startTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'活动结束时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activityOverTime'
})}
`
,
key
:
'endTime'
,
dataIndex
:
'endTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'报名开始时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.startTimeSigningUp'
})}
`
,
key
:
'signUpStartTime'
,
dataIndex
:
'signUpStartTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'报名结束时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.endTimeSigningUp'
})}
`
,
key
:
'signUpEndTime'
,
dataIndex
:
'signUpEndTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'外部状态'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.externalState'
})}
`
,
key
:
'outerStatus'
,
dataIndex
:
'outerStatus'
,
render
:
(
_
,
record
)
=>
(
...
...
@@ -86,7 +88,7 @@ const ReadySubmit = () => {
)
},
{
title
:
'内部状态'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.internalState'
})}
`
,
key
:
'innerStatus'
,
dataIndex
:
'innerStatus'
,
render
:
(
text
,
record
)
=>
(
...
...
@@ -94,13 +96,11 @@ const ReadySubmit = () => {
)
},
{
title
:
'操作'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.operation'
})}
`
,
key
:
'state'
,
dataIndex
:
'state'
,
render
:
(
text
,
record
)
=>
<
Popconfirm
title=
"确定要提交吗?"
okButtonProps=
{
{
loading
:
confirmLoading
}
}
disabled=
{
!
record
.
id
}
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
<
Button
type=
'link'
disabled=
{
!
record
.
id
}
>
提交
</
Button
>
render
:
(
text
,
record
)
=>
<
Popconfirm
title=
"确定要提交吗?"
okButtonProps=
{
{
loading
:
confirmLoading
}
}
disabled=
{
!
record
.
id
}
okText=
{
intl
.
formatMessage
({
id
:
'paltformSign.is'
})
}
cancelText=
{
intl
.
formatMessage
({
id
:
'paltformSign.no'
})
}
onConfirm=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
<
Button
type=
'link'
disabled=
{
!
record
.
id
}
>
{
intl
.
formatMessage
({
id
:
'paltformSign.submit'
})
}
</
Button
>
</
Popconfirm
>
},
]
...
...
@@ -133,9 +133,7 @@ const ReadySubmit = () => {
loading=
{
confirmLoading
}
disabled=
{
rowkeys
.
length
===
0
}
onClick=
{
()
=>
fetchSubmitBatch
()
}
>
批量提交
</
Button
>
>
{
intl
.
formatMessage
({
id
:
'paltformSign.batchSubmission'
})
}
</
Button
>
</
Space
>
}
schema=
{
{
...
...
@@ -156,7 +154,7 @@ const ReadySubmit = () => {
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'活动ID'
,
placeholder
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
},
},
}
...
...
@@ -186,7 +184,7 @@ const ReadySubmit = () => {
activityName
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'活动名称'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.theNameOfTheEvent'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -195,7 +193,7 @@ const ReadySubmit = () => {
'[startTime,endTime]'
:
{
type
:
'daterange'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
placeholder
:
[
`${intl.formatMessage({ id: 'paltformSign.theStartTime'})}`
,
`${intl.formatMessage({ id: 'paltformSign.theEndOfTime'})}`
],
style
:
{
width
:
240
,
},
...
...
@@ -204,7 +202,7 @@ const ReadySubmit = () => {
activityType
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'活动类型'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.theActivityType'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -219,7 +217,7 @@ const ReadySubmit = () => {
span
:
1
},
"x-component-props"
:
{
children
:
"查询"
children
:
`${intl.formatMessage({ id: 'paltformSign.theQuery'})}`
}
}
}
...
...
src/pages/transaction/marketingAbility/paltformSign/readySubmitExamine/add.tsx
View file @
32a68cc0
import
{
useIntl
}
from
'umi'
;
import
React
,
{
useState
}
from
'react'
;
import
{
Button
,
Form
}
from
'antd'
;
import
{
history
,
Prompt
}
from
'umi'
;
...
...
@@ -16,15 +17,17 @@ import { isEmpty } from 'lodash';
import
{
SaveOutlined
}
from
'@ant-design/icons'
;
import
ProductListLayout
from
'../../components/productListLayout'
;
import
{
getMarketingPlatformActivitySignupDetail
,
getMarketingPlatformActivitySignupDetailGoodsPage
,
postMarketingPlatformActivitySignupGetFilterSkuId
,
postMarketingPlatformActivitySignupSave
,
postMarketingPlatformActivitySignupUpdate
}
from
'@/services/MarketingV2Api'
;
import
{
getIntl
}
from
'umi'
const
intl
=
getIntl
();
const
TABLINK
=
[
{
id
:
'progressLayout'
,
title
:
'流转进度'
},
{
id
:
'basicLayout'
,
title
:
'基本信息'
},
{
id
:
'activityRuleLayout'
,
title
:
'活动规则'
},
{
id
:
'activityProductLayout'
,
title
:
'活动商品'
},
{
id
:
'activityUserLayout'
,
title
:
'活动用户'
},
{
id
:
'applyMallLayout'
,
title
:
'适用商城'
},
{
id
:
'recordLyout'
,
title
:
'流转记录'
},
{
id
:
'progressLayout'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theCirculationProgress'
})}
`
},
{
id
:
'basicLayout'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theBasicInformation'
})}
`
},
{
id
:
'activityRuleLayout'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activityRules'
})}
`
},
{
id
:
'activityProductLayout'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activitiesOfGoods'
})}
`
},
{
id
:
'activityUserLayout'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activeUsers'
})}
`
},
{
id
:
'applyMallLayout'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.applyToMall'
})}
`
},
{
id
:
'recordLyout'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.transferRecord'
})}
`
},
]
const
DetialLayout
=
()
=>
{
...
...
@@ -50,23 +53,23 @@ const DetialLayout = () => {
setBasicEffect
([
{
col
:
[
{
label
:
'活动ID'
,
extra
:
data
.
id
},
{
label
:
'活动名称'
,
extra
:
data
.
activityName
},
{
label
:
'外部状态'
,
extra
:
data
.
outerStatusName
},
{
label
:
'内部状态'
,
extra
:
data
.
innerStatusName
},
{
label
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
extra
:
data
.
id
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theNameOfTheEvent'
})}
`
,
extra
:
data
.
activityName
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.externalState'
})}
`
,
extra
:
data
.
outerStatusName
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.internalState'
})}
`
,
extra
:
data
.
innerStatusName
},
]
},
{
col
:
[
{
label
:
'活动类型'
,
extra
:
data
.
activityTypeName
},
{
label
:
'活动参与类型'
,
extra
:
data
.
activitySignUpTypeName
},
{
label
:
'活动开始时间'
,
extra
:
format
(
data
.
startTime
)
},
{
label
:
'活动结束时间'
,
extra
:
format
(
data
.
endTime
)
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theActivityType'
})}
`
,
extra
:
data
.
activityTypeName
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activitiesInvolvedInType'
})}
`
,
extra
:
data
.
activitySignUpTypeName
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activitiesStartTime'
})}
`
,
extra
:
format
(
data
.
startTime
)
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activityOverTime'
})}
`
,
extra
:
format
(
data
.
endTime
)
},
]
},
{
col
:
[
{
label
:
'要求报名时间'
,
extra
:
<>
{
format
(
data
.
signUpStartTime
)
}
~
{
format
(
data
.
signUpEndTime
)
}
</>
},
{
label
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.requestTimeSigningUp'
})}
`
,
extra
:
<>
{
format
(
data
.
signUpStartTime
)
}
~
{
format
(
data
.
signUpEndTime
)
}
</>
},
]
},
])
...
...
@@ -228,9 +231,7 @@ const DetialLayout = () => {
icon=
{
<
SaveOutlined
/>
}
type=
"primary"
onClick=
{
handleSubmit
}
>
提交
</
Button
>
>
{
intl
.
formatMessage
({
id
:
'paltformSign.submit'
})
}
</
Button
>
}
components=
{
<
Form
...
...
@@ -245,7 +246,7 @@ const DetialLayout = () => {
<
BasicLayout
effect=
{
basicEffect
}
/>
<
GeneralLayout
visible
title=
{
`
活动规则
-${ACTIVITYTYPENAME[dataSource.activityType]}`
}
title=
{
`
${intl.formatMessage({ id: 'paltformSign.activityRules' })}
-${ACTIVITYTYPENAME[dataSource.activityType]}`
}
anchor=
"activityRuleLayout"
effect=
{
generalEffect
}
/>
...
...
@@ -256,7 +257,7 @@ const DetialLayout = () => {
</
Form
>
}
/>
<
Prompt
when=
{
unsaved
}
message=
"您还有未保存的内容,是否确定要离开?"
/>
<
Prompt
when=
{
unsaved
}
message=
{
intl
.
formatMessage
({
id
:
'paltformSign.unsavedContentToLeave'
})
}
/>
</
Context
.
Provider
>
)
}
...
...
src/pages/transaction/marketingAbility/paltformSign/readySubmitExamine/components/columns.tsx
View file @
32a68cc0
This diff is collapsed.
Click to expand it.
src/pages/transaction/marketingAbility/paltformSign/readySubmitExamine/components/productListLayout/EditableCell.tsx
View file @
32a68cc0
import
{
useIntl
}
from
'umi'
;
import
React
,
{
useContext
}
from
'react'
;
import
{
Input
,
Form
,
Popconfirm
,
Button
}
from
'antd'
;
import
{
EditableContext
}
from
'@/pages/transaction/components/detailLayout/components/context'
;
...
...
@@ -18,6 +19,7 @@ const EditableCell = ({
})
=>
{
const
form
=
useContext
(
EditableContext
);
let
childNode
=
children
;
const
intl
=
useIntl
();
const
save
=
async
()
=>
{
try
{
...
...
@@ -45,16 +47,17 @@ const EditableCell = ({
}
const
handleValidator
=
async
(
_rule
,
value
,
dataIndex
)
=>
{
const
intl
=
useIntl
();
const
pattern
=
/^
(\-)?\d
+
(\.\d{1,4})?
$/
;
const
plummetPrice
=
await
form
.
getFieldValue
(
'plummetPrice'
);
if
(
!
value
)
{
return
Promise
.
reject
(
new
Error
(
'必填项'
));
return
Promise
.
reject
(
new
Error
(
`
${
intl
.
formatMessage
({
id
:
'paltformSign.mandatory'
})}
`
));
}
if
((
Number
(
activities
)
===
11
&&
dataIndex
===
'activityPrice'
)
&&
(
!
pattern
.
test
(
value
)
||
(
Number
(
value
)
>=
Number
(
plummetPrice
))))
{
return
Promise
.
reject
(
new
Error
(
'必须大于0且小于起始价格'
));
return
Promise
.
reject
(
new
Error
(
intl
.
formatMessage
({
id
:
'paltformSign.greaterThan0'
})
));
}
if
(
!
pattern
.
test
(
value
)
||
(
Number
(
value
)
>=
Number
(
record
.
price
)))
{
return
Promise
.
reject
(
new
Error
(
'必须大于0且小于商品价格'
));
return
Promise
.
reject
(
new
Error
(
intl
.
formatMessage
({
id
:
'paltformSign.greaterThan0LessThanProductPrice'
})
));
}
return
Promise
.
resolve
();
}
...
...
@@ -97,10 +100,10 @@ const EditableCell = ({
const
pattern
=
/^
(\-)?\d
+
(\.\d
{1,3}
)?
$/
;
const
restrictTotalNum
=
await
form
.
getFieldValue
(
'restrictTotalNum'
);
if
(
!
value
)
{
return
Promise
.
reject
(
new
Error
(
'必填项'
));
return
Promise
.
reject
(
new
Error
(
`${intl.formatMessage({ id: 'paltformSign.mandatory'})}`
));
}
if
(
!
pattern
.
test
(
value
)
||
!
(
Number
(
value
)
<=
Number
(
restrictTotalNum
)))
{
return
Promise
.
reject
(
new
Error
(
'个人限购数量必须大于0且小于活动限购总数量'
));
return
Promise
.
reject
(
new
Error
(
intl
.
formatMessage
({
id
:
'paltformSign.personLimitAmount'
})
));
}
return
Promise
.
resolve
();
},
...
...
@@ -125,10 +128,10 @@ const EditableCell = ({
validator
:
(
_rule
,
value
)
=>
{
const
pattern
=
/^
(\-)?\d
+
(\.\d
{1,3}
)?
$/
;
if
(
!
value
)
{
return
Promise
.
reject
(
new
Error
(
'必填项'
));
return
Promise
.
reject
(
new
Error
(
`${intl.formatMessage({ id: 'paltformSign.mandatory'})}`
));
}
if
(
!
pattern
.
test
(
value
))
{
return
Promise
.
reject
(
new
Error
(
'活动限购总数量必须大于0'
));
return
Promise
.
reject
(
new
Error
(
intl
.
formatMessage
({
id
:
'paltformSign.totalNumberActivitiesGreaterThan0'
})
));
}
return
Promise
.
resolve
();
},
...
...
@@ -153,17 +156,17 @@ const EditableCell = ({
validator
:
(
_rule
,
value
)
=>
{
const
pattern
=
/^
(\-)?\d
+
(\.\d
{1,2}
)?
$/
;
if
(
!
value
)
{
return
Promise
.
reject
(
new
Error
(
'必填项'
));
return
Promise
.
reject
(
new
Error
(
`${intl.formatMessage({ id: 'paltformSign.mandatory'})}`
));
}
if
(
!
pattern
.
test
(
value
))
{
return
Promise
.
reject
(
new
Error
(
'折扣必须大于0'
));
return
Promise
.
reject
(
new
Error
(
intl
.
formatMessage
({
id
:
'paltformSign.DiscountGreaterThan0'
})
));
}
return
Promise
.
resolve
();
},
},
]
}
>
<
Input
style=
{
{
width
:
'112px'
}
}
addonBefore=
"折"
onPressEnter=
{
rate
}
onBlur=
{
rate
}
/>
<
Input
style=
{
{
width
:
'112px'
}
}
addonBefore=
{
intl
.
formatMessage
({
id
:
'paltformSign.fold'
})
}
onPressEnter=
{
rate
}
onBlur=
{
rate
}
/>
</
Form
.
Item
>
)
}
...
...
@@ -175,12 +178,12 @@ const EditableCell = ({
case
6
:
childNode
=
(
<>
<
Button
type=
'link'
onClick=
{
()
=>
handleSetting
(
record
)
}
>
设置赠品
</
Button
>
<
Button
type=
'link'
onClick=
{
()
=>
handleSetting
(
record
)
}
>
{
intl
.
formatMessage
({
id
:
'paltformSign.setTheGift'
})
}
</
Button
>
<
Popconfirm
title=
"是否删除?"
title=
{
intl
.
formatMessage
({
id
:
'paltformSign.ifDelete'
})
}
onConfirm=
{
()
=>
handleDelete
(
record
.
id
)
}
>
<
Button
type=
'link'
>
删除
</
Button
>
<
Button
type=
'link'
>
{
intl
.
formatMessage
({
id
:
'paltformSignelete'
})
}
</
Button
>
</
Popconfirm
>
</>
)
...
...
@@ -188,12 +191,12 @@ const EditableCell = ({
case
15
:
childNode
=
(
<>
<
Button
type=
'link'
onClick=
{
()
=>
handleSetting
(
record
)
}
>
设置搭配
</
Button
>
<
Button
type=
'link'
onClick=
{
()
=>
handleSetting
(
record
)
}
>
{
intl
.
formatMessage
({
id
:
'paltformSign.setTheCollocation'
})
}
</
Button
>
<
Popconfirm
title=
"是否删除?"
title=
{
intl
.
formatMessage
({
id
:
'paltformSign.ifDelete'
})
}
onConfirm=
{
()
=>
handleDelete
(
record
.
id
)
}
>
<
Button
type=
'link'
>
删除
</
Button
>
<
Button
type=
'link'
>
{
intl
.
formatMessage
({
id
:
'paltformSignelete'
})
}
</
Button
>
</
Popconfirm
>
</>
)
...
...
@@ -201,10 +204,10 @@ const EditableCell = ({
default
:
childNode
=
(
<
Popconfirm
title=
"是否删除?"
title=
{
intl
.
formatMessage
({
id
:
'paltformSign.ifDelete'
})
}
onConfirm=
{
()
=>
handleDelete
(
record
.
id
)
}
>
<
a
>
删除
</
a
>
<
a
>
{
intl
.
formatMessage
({
id
:
'paltformSignelete'
})
}
</
a
>
</
Popconfirm
>
)
break
;
...
...
src/pages/transaction/marketingAbility/paltformSign/readySubmitExamine/components/productListLayout/index.tsx
View file @
32a68cc0
import
{
useIntl
}
from
'umi'
;
import
React
,
{
useState
,
useMemo
,
useEffect
}
from
'react'
;
import
{
Table
,
Form
,
Button
}
from
'antd'
;
import
Card
from
'@/pages/transaction/components/card'
;
...
...
@@ -32,6 +33,7 @@ interface ProductListLayoutProps {
}
/** 主体内容 */
const
ProductListLayout
:
React
.
FC
<
ProductListLayoutProps
>
=
(
props
:
any
)
=>
{
const
intl
=
useIntl
();
const
{
data
,
getDataSource
,
signUpId
}
=
props
;
const
[
type
,
setType
]
=
useState
<
number
>
(
0
);
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
);
...
...
@@ -121,7 +123,7 @@ const ProductListLayout: React.FC<ProductListLayoutProps> = (props: any) => {
useEffect
(()
=>
{
if
(
signUpId
)
{
getMarketingPlatformActivitySignupDetailGoodsPage
({
signUpId
,
current
:
'1'
,
pageSize
:
'999'
}).
then
(
res
=>
{
getMarketingPlatformActivitySignupDetailGoodsPage
({
signUpId
,
current
:
`
${
intl
.
formatMessage
({
id
:
'undefined'
})}
`
,
pageSize
:
`
${
intl
.
formatMessage
({
id
:
'undefined'
})}
`
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
}
...
...
@@ -145,9 +147,9 @@ const ProductListLayout: React.FC<ProductListLayoutProps> = (props: any) => {
return
(
<
Card
id=
"productListLayout"
title=
"活动商品"
title=
{
intl
.
formatMessage
({
id
:
'paltformSign.activitiesOfGoods'
})
}
>
<
Button
style=
{
{
marginBottom
:
'16px'
}
}
block
type=
"dashed"
icon=
{
<
PlusOutlined
/>
}
onClick=
{
()
=>
toggle
(
true
)
}
>
选择活动商品
</
Button
>
<
Button
style=
{
{
marginBottom
:
'16px'
}
}
block
type=
"dashed"
icon=
{
<
PlusOutlined
/>
}
onClick=
{
()
=>
toggle
(
true
)
}
>
{
intl
.
formatMessage
({
id
:
'paltformSign.choiceActivityGoods'
})
}
</
Button
>
<
Table
rowKey=
{
(
record
)
=>
record
.
id
}
components=
{
components
}
...
...
src/pages/transaction/marketingAbility/paltformSign/readySubmitExamine/components/productListLayout/remind.ts
View file @
32a68cc0
import
{
useIntl
}
from
'umi'
export
type
RemindLayoutProps
=
{
/** name */
name
?:
string
,
...
...
@@ -18,8 +20,9 @@ export type RemindLayoutProps = {
}
export
const
remindLayout
=
(
int
,
giveType
?,
giftType
?)
=>
{
const
give
=
(
giveType
===
1
?
'满额'
:
'买商品'
);
const
gift
=
(
giftType
===
1
?
'商品'
:
'优惠券'
);
const
intl
=
useIntl
();
const
give
=
(
giveType
===
1
?
`
${
intl
.
formatMessage
({
id
:
'paltformSign.top-up'
})}
`
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.BuyGoods'
})}
`
);
const
gift
=
(
giftType
===
1
?
`
${
intl
.
formatMessage
({
id
:
'paltformSign.goods'
})}
`
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.coupon'
})}
`
);
switch
(
int
)
{
case
6
:
return
{
...
...
@@ -30,19 +33,19 @@ export const remindLayout = (int, giveType?, giftType?) => {
buttonTitle
:
`添加赠送
${
gift
}
`
,
listTitle
:
`
${
give
}${
gift
}
`
,
label
:
{
1
:
'优惠门槛'
,
2
:
giveType
===
1
?
'元'
:
'个'
,
3
:
giveType
===
1
?
'赠送商品'
:
'赠送优惠券'
,
4
:
'赠送数量'
,
5
:
'买'
,
1
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.preferentialThreshold'
})}
`
,
2
:
giveType
===
1
?
`
${
intl
.
formatMessage
({
id
:
'paltformSign.yuan'
})}
`
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.a'
})}
`
,
3
:
giveType
===
1
?
`
${
intl
.
formatMessage
({
id
:
'paltformSign.freeGoods'
})}
`
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.coupons'
})}
`
,
4
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.giveTheNumber'
})}
`
,
5
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.buy'
})}
`
,
6
:
''
,
},
message
:
{
1
:
giveType
===
1
?
'请选择赠送商品!'
:
'请选择赠送优惠券!'
,
2
:
giveType
===
1
?
'请设置赠送商品!'
:
'请设置赠送优惠券!'
,
3
:
giveType
===
1
?
'请选择赠送商品!'
:
'请选择赠送优惠券!'
,
4
:
'请输入优惠门槛!'
,
5
:
'请输入赠送数量!'
,
1
:
giveType
===
1
?
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseSelectACommodity'
})}
`
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseSelectTheCoupons'
})}
`
,
2
:
giveType
===
1
?
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseSetTheGoods'
})}
`
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseSetTheCoupons'
})}
`
,
3
:
giveType
===
1
?
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseSelectACommodity'
})}
`
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseSelectTheCoupons'
})}
`
,
4
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseEnterADiscountThreshold'
})}
`
,
5
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseEnterANumber'
})}
`
,
}
}
case
13
:
{
...
...
@@ -51,22 +54,22 @@ export const remindLayout = (int, giveType?, giftType?) => {
value
:
1
,
type
:
'limitValue'
,
modalTitle
:
`设置换购商品-
${
give
}
换购商品`
,
buttonTitle
:
'添加换购商品'
,
buttonTitle
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.addBuyGoods'
})}
`
,
listTitle
:
`
${
give
}
换购商品`
,
label
:
{
1
:
'换购门槛'
,
2
:
giveType
===
1
?
'元'
:
'个'
,
3
:
'换购商品'
,
4
:
'换购数量'
,
5
:
'满'
,
6
:
'换购单价'
,
1
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.redemptionThreshold'
})}
`
,
2
:
giveType
===
1
?
`
${
intl
.
formatMessage
({
id
:
'paltformSign.yuan'
})}
`
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.a'
})}
`
,
3
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.buyGoods'
})}
`
,
4
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.buyTheNumber'
})}
`
,
5
:
intl
.
formatMessage
({
id
:
'paltformSign.fill'
})
,
6
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.buyTheUnitPrice'
})}
`
,
},
message
:
{
1
:
'请选择换购商品!'
,
2
:
'请设置换购商品!'
,
3
:
'请选择换购商品!'
,
4
:
'请输入换购门槛!'
,
5
:
'请输入允许换购数量!'
,
1
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseChooseToBuyGoods'
})}
`
,
2
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseSetUpForGoods'
})}
`
,
3
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseChooseToBuyGoods'
})}
`
,
4
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseEnterTheRedemptionThreshold'
})}
`
,
5
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseNumber'
})}
`
,
}
}
}
...
...
@@ -75,23 +78,23 @@ export const remindLayout = (int, giveType?, giftType?) => {
name
:
'groupValue'
,
value
:
1
,
type
:
'groupPrice'
,
modalTitle
:
'设置搭配商品'
,
buttonTitle
:
'选择搭配商品'
,
listTitle
:
'套餐搭配商品'
,
modalTitle
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.setTheCollocationOfGoods'
})}
`
,
buttonTitle
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.chooseGoods'
})}
`
,
listTitle
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.packageIsTie-inMerchandise'
})}
`
,
label
:
{
1
:
'套餐价格'
,
2
:
'元'
,
3
:
'搭配商品'
,
4
:
'搭配数量'
,
1
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.packagePrice'
})}
`
,
2
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.yuan'
})}
`
,
3
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.withGoods'
})}
`
,
4
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.matchTheNumberOf'
})}
`
,
5
:
''
,
6
:
''
,
},
message
:
{
1
:
'请选择搭配商品!'
,
2
:
'请设置搭配商品!'
,
3
:
'请选择搭配商品!'
,
4
:
'请输入套餐价格!'
,
5
:
'请输入搭配数量!'
,
1
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseSelectAMatchGoods'
})}
`
,
2
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseSetTheMatchGoods'
})}
`
,
3
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseSelectAMatchGoods'
})}
`
,
4
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseEnterThePackagePrice'
})}
`
,
5
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.pleaseNumberCollocation'
})}
`
,
}
}
}
...
...
src/pages/transaction/marketingAbility/paltformSign/readySubmitExamine/constants.tsx
View file @
32a68cc0
This diff is collapsed.
Click to expand it.
src/pages/transaction/marketingAbility/paltformSign/readySubmitExamine/index.tsx
View file @
32a68cc0
import
{
useIntl
}
from
'umi'
;
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
TableLayout
from
'../../../components/tableLayout'
;
...
...
@@ -14,6 +15,7 @@ import { getMarketingPlatformActivitySignupGetActivityTypeList, getMarketingPlat
const
{
onFormMount$
}
=
FormEffectHooks
;
const
ReadySubmitExamine
=
()
=>
{
const
intl
=
useIntl
();
const
ref
=
useRef
<
any
>
({});
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
...
...
@@ -41,48 +43,48 @@ const ReadySubmitExamine = () => {
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'活动ID'
,
title
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
key
:
'activityId'
,
dataIndex
:
'activityId'
,
},
{
title
:
'活动名称'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theNameOfTheEvent'
})}
`
,
key
:
'activityName'
,
dataIndex
:
'activityName'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/memberCenter/marketingAbility/paltformSign/readySubmitExamine/preview?activityId=${record.activityId}&signUpId=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'活动类型'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theActivityType'
})}
`
,
key
:
'activityType'
,
dataIndex
:
'activityType'
,
render
:
(
_text
,
record
)
=>
<>
{
record
.
activityTypeName
}
</>,
},
{
title
:
'活动开始时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activitiesStartTime'
})}
`
,
key
:
'startTime'
,
dataIndex
:
'startTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'活动结束时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activityOverTime'
})}
`
,
key
:
'endTime'
,
dataIndex
:
'endTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'报名开始时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.startTimeSigningUp'
})}
`
,
key
:
'signUpStartTime'
,
dataIndex
:
'signUpStartTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'报名结束时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.endTimeSigningUp'
})}
`
,
key
:
'signUpEndTime'
,
dataIndex
:
'signUpEndTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'外部状态'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.externalState'
})}
`
,
key
:
'outerStatus'
,
dataIndex
:
'outerStatus'
,
render
:
(
_
,
record
)
=>
(
...
...
@@ -90,7 +92,7 @@ const ReadySubmitExamine = () => {
)
},
{
title
:
'内部状态'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.internalState'
})}
`
,
key
:
'innerStatus'
,
dataIndex
:
'innerStatus'
,
render
:
(
text
,
record
)
=>
(
...
...
@@ -98,20 +100,18 @@ const ReadySubmitExamine = () => {
)
},
{
title
:
'操作'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.operation'
})}
`
,
key
:
'state'
,
dataIndex
:
'state'
,
render
:
(
text
,
record
)
=>
(
<>
{
record
.
update
&&
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readySubmitExamine/edit?activityId=${record.activityId}&signUpId=${record.id}`
)
}
>
修改报名资料
</
Button
>
}
{
record
.
update
&&
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readySubmitExamine/edit?activityId=${record.activityId}&signUpId=${record.id}`
)
}
>
{
intl
.
formatMessage
({
id
:
'paltformSign.modifyTheRegistrationInformation'
})
}
</
Button
>
}
{
record
.
submit
&&
(
<
Popconfirm
title=
"确定要提交吗?"
disabled=
{
!
record
.
id
}
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
handleSubmit
(
record
.
id
)
}
>
<
Button
type=
'link'
disabled=
{
!
record
.
id
}
>
提交审核
</
Button
>
<
Popconfirm
title=
{
intl
.
formatMessage
({
id
:
'paltformSign.sureToSummit'
})
}
disabled=
{
!
record
.
id
}
okText=
{
intl
.
formatMessage
({
id
:
'paltformSign.is'
})
}
cancelText=
{
intl
.
formatMessage
({
id
:
'paltformSign.no'
})
}
onConfirm=
{
()
=>
handleSubmit
(
record
.
id
)
}
>
<
Button
type=
'link'
disabled=
{
!
record
.
id
}
>
{
intl
.
formatMessage
({
id
:
'paltformSign.submitAudit'
})
}
</
Button
>
</
Popconfirm
>
)
}
{
record
.
save
&&
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readySubmitExamine/add?activityId=${record.activityId}`
)
}
>
填写报名资料
</
Button
>
}
{
record
.
save
&&
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/marketingAbility/paltformSign/readySubmitExamine/add?activityId=${record.activityId}`
)
}
>
{
intl
.
formatMessage
({
id
:
'paltformSign.fillInTheRegistrationInformation'
})
}
</
Button
>
}
</>
)
},
...
...
@@ -125,9 +125,7 @@ const ReadySubmitExamine = () => {
disabled=
{
rowkeys
.
length
===
0
}
loading=
{
submitLoading
}
onClick=
{
()
=>
fetchSubmitBatch
()
}
>
批量提交审核
</
Button
>
>
{
intl
.
formatMessage
({
id
:
'paltformSign.batchSubmitAudit'
})
}
</
Button
>
</
Col
>
</
Row
>
)
...
...
@@ -179,7 +177,7 @@ const ReadySubmitExamine = () => {
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'活动ID'
,
placeholder
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
},
},
}
...
...
@@ -209,7 +207,7 @@ const ReadySubmitExamine = () => {
activityName
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'活动名称'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.theNameOfTheEvent'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -218,7 +216,7 @@ const ReadySubmitExamine = () => {
'[startTime,endTime]'
:
{
type
:
'daterange'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
placeholder
:
[
`${intl.formatMessage({ id: 'paltformSign.theStartTime'})}`
,
`${intl.formatMessage({ id: 'paltformSign.theEndOfTime'})}`
],
style
:
{
width
:
240
,
},
...
...
@@ -227,7 +225,7 @@ const ReadySubmitExamine = () => {
activityType
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'活动类型'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.theActivityType'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -242,7 +240,7 @@ const ReadySubmitExamine = () => {
span
:
1
},
"x-component-props"
:
{
children
:
"查询"
children
:
`${intl.formatMessage({ id: 'paltformSign.theQuery'})}`
}
}
}
...
...
src/pages/transaction/marketingAbility/paltformSign/search/index.tsx
View file @
32a68cc0
import
{
useIntl
}
from
'umi'
;
import
React
from
'react'
;
import
TableLayout
from
'../../../components/tableLayout'
;
...
...
@@ -13,50 +14,51 @@ import { InnerStatusColor, OuterStatusColor } from '../../common/tagColor';
import
{
getMarketingPlatformActivitySignupGetActivityTypeList
,
getMarketingPlatformActivitySignupGetInnerStatusList
,
getMarketingPlatformActivitySignupGetOuterStatusList
,
getMarketingPlatformActivitySignupPage
}
from
'@/services/MarketingV2Api'
;
const
{
onFormMount$
}
=
FormEffectHooks
;
const
Search
=
()
=>
{
const
intl
=
useIntl
();
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'活动ID'
,
title
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
key
:
'activityId'
,
dataIndex
:
'activityId'
,
},
{
title
:
'活动名称'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theNameOfTheEvent'
})}
`
,
key
:
'activityName'
,
dataIndex
:
'activityName'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/memberCenter/marketingAbility/paltformSign/search/preview?activityId=${record.activityId}&signUpId=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'活动类型'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.theActivityType'
})}
`
,
key
:
'activityType'
,
dataIndex
:
'activityType'
,
render
:
(
_text
,
record
)
=>
<>
{
record
.
activityTypeName
}
</>,
},
{
title
:
'活动开始时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activitiesStartTime'
})}
`
,
key
:
'startTime'
,
dataIndex
:
'startTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'活动结束时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.activityOverTime'
})}
`
,
key
:
'endTime'
,
dataIndex
:
'endTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'报名开始时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.startTimeSigningUp'
})}
`
,
key
:
'signUpStartTime'
,
dataIndex
:
'signUpStartTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'报名结束时间'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.endTimeSigningUp'
})}
`
,
key
:
'signUpEndTime'
,
dataIndex
:
'signUpEndTime'
,
render
:
(
text
)
=>
format
(
text
)
},
{
title
:
'外部状态'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.externalState'
})}
`
,
key
:
'outerStatus'
,
dataIndex
:
'outerStatus'
,
render
:
(
_
,
record
)
=>
(
...
...
@@ -64,7 +66,7 @@ const Search = () => {
)
},
{
title
:
'内部状态'
,
title
:
`
${
intl
.
formatMessage
({
id
:
'paltformSign.internalState'
})}
`
,
key
:
'innerStatus'
,
dataIndex
:
'innerStatus'
,
render
:
(
text
,
record
)
=>
(
...
...
@@ -118,7 +120,7 @@ const Search = () => {
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'活动ID'
,
placeholder
:
intl
.
formatMessage
({
id
:
'paltformSign.activityID'
})
,
align
:
"flex-left"
,
},
},
...
...
@@ -150,7 +152,7 @@ const Search = () => {
activityName
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'活动名称'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.theNameOfTheEvent'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -159,7 +161,7 @@ const Search = () => {
'[startTime,endTime]'
:
{
type
:
'daterange'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
placeholder
:
[
`${intl.formatMessage({ id: 'paltformSign.theStartTime'})}`
,
`${intl.formatMessage({ id: 'paltformSign.theEndOfTime'})}`
],
style
:
{
width
:
240
,
},
...
...
@@ -168,7 +170,7 @@ const Search = () => {
activityType
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'活动类型'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.theActivityType'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -178,7 +180,7 @@ const Search = () => {
outerStatus
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'外部状态'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.externalState'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -188,7 +190,7 @@ const Search = () => {
innerStatus
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'内部状态'
,
placeholder
:
`${intl.formatMessage({ id: 'paltformSign.internalState'})}`
,
style
:
{
width
:
160
,
},
...
...
@@ -203,7 +205,7 @@ const Search = () => {
span
:
1
},
"x-component-props"
:
{
children
:
"查询"
children
:
`${intl.formatMessage({ id: 'paltformSign.theQuery'})}`
}
}
}
...
...
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