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
ef0fadb0
Commit
ef0fadb0
authored
Sep 08, 2021
by
前端-黄佳鑫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🐞
fix(询价报价): 修复bug
parent
70120e1b
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
274 additions
and
56 deletions
+274
-56
index.tsx
...ges/transaction/dealAbility/inquiryOffer/detail/index.tsx
+14
-3
index.tsx
...ction/dealAbility/productInquiry/waitAddInquiry/index.tsx
+7
-2
index.tsx
...n/marketingAbility/components/couponsListLayout/index.tsx
+2
-0
index.tsx
...n/marketingAbility/components/productListLayout/index.tsx
+6
-4
add.tsx
...arketingAbility/selfManagement/readySubmitExamine/add.tsx
+8
-4
index.tsx
...t/readySubmitExamine/components/basicInfoLayout/index.tsx
+1
-1
index.less
...nt/readySubmitExamine/components/couponsLayout/index.less
+2
-1
index.tsx
...ent/readySubmitExamine/components/couponsLayout/index.tsx
+57
-14
index.tsx
...t/readySubmitExamine/components/prizeListLayout/index.tsx
+177
-27
No files found.
src/pages/transaction/dealAbility/inquiryOffer/detail/index.tsx
View file @
ef0fadb0
import
React
,
{
Fragment
,
use
Callback
,
use
Effect
,
useState
}
from
'react'
;
import
React
,
{
Fragment
,
useEffect
,
useState
}
from
'react'
;
import
{
Button
,
Tag
,
Badge
,
Typography
,
Space
,
Drawer
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
...
...
@@ -16,6 +16,7 @@ import GeneralLayout from '@/pages/transaction/components/detailLayout/component
import
RecordLyout
from
'@/pages/transaction/components/detailLayout/components/recordLyout'
;
import
ModalOperate
from
'@/pages/transaction/components/modalOperate'
;
import
{
StandardTable
}
from
'god'
;
import
{
getAuth
}
from
'@/utils/auth'
const
TABLINK
=
[
{
id
:
'progressLayout'
,
title
:
'流转进度'
},
...
...
@@ -207,6 +208,15 @@ const InquiryOfferDetail = () => {
},
]
const
handleJump
=
(
val
)
=>
{
const
{
memberId
}
=
getAuth
()
if
(
val
.
quoteMemberId
===
memberId
)
{
window
.
open
(
`/memberCenter/tranactionAbility/inquiryOffer/offerSearch/offer/preview?id=
${
val
.
id
}
`
)
}
else
{
window
.
open
(
`memberCenter/tranactionAbility/confirmOffer/offerSearch/offer/preview?id=
${
val
.
id
}
`
)
}
}
const
hitoryColumns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'商品ID'
,
...
...
@@ -264,7 +274,8 @@ const InquiryOfferDetail = () => {
{
title
:
'报价单'
,
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
dataIndex
:
'quotationNo'
,
render
:
(
_text
,
_record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleJump
(
_record
)
}
>
{
_text
}
</
Button
>
},
{
title
:
'外部状态'
,
...
...
@@ -371,7 +382,7 @@ const InquiryOfferDetail = () => {
>
<
StandardTable
columns=
{
hitoryColumns
}
tableProps=
{
{
rowKey
:
'
productI
d'
}
}
tableProps=
{
{
rowKey
:
'
i
d'
}
}
fetchTableData=
{
fetchTableData
}
/>
</
Drawer
>
...
...
src/pages/transaction/dealAbility/productInquiry/waitAddInquiry/index.tsx
View file @
ef0fadb0
...
...
@@ -113,6 +113,7 @@ const WaitAddInquiry = () => {
render
:
(
text
:
any
,
record
:
any
)
=>
{
return
(
<>
{
record
.
isSubmit
&&
(
<
Popconfirm
title=
"确定要提交吗?"
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
<
Button
type=
'link'
...
...
@@ -120,22 +121,26 @@ const WaitAddInquiry = () => {
提交审核
</
Button
>
</
Popconfirm
>
)
}
{
record
.
isUpdate
&&
(
<
Button
type=
"link"
disabled=
{
record
.
interiorState
!==
1
&&
record
.
interiorState
!==
6
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/productInquiry/waitAddInquiry/edit?id=${record.id}`
)
}
>
编辑
</
Button
>
)
}
{
record
.
isDelete
&&
(
<
Popconfirm
title=
"确定要删除吗?"
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
fetchDeleteBatch
(
record
.
id
)
}
disabled=
{
record
.
interiorState
!==
1
&&
record
.
externalState
!==
1
}
>
<
Button
disabled=
{
record
.
interiorState
!==
1
&&
record
.
externalState
!==
1
}
type=
"link"
>
删除
</
Button
>
</
Popconfirm
>
)
}
</>
)
}
...
...
src/pages/transaction/marketingAbility/components/couponsListLayout/index.tsx
View file @
ef0fadb0
...
...
@@ -5,6 +5,7 @@ import CollapseLayout from './components/collapseLayout';
import
{
isArray
,
isEmpty
}
from
'lodash'
;
import
ProductLayout
from
'./components/productLayout'
;
import
CouponsLayout
from
'@/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/couponsLayout'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
layout
:
any
=
{
labelCol
:
{
style
:
{
width
:
"100px"
}
},
...
...
@@ -232,6 +233,7 @@ const CouponsListLayout: React.FC<CouponsListLayoutProps> = (props: any) => {
<
Button
type=
"dashed"
block
icon=
{
<
PlusOutlined
/>
}
onClick=
{
handleAppend
}
>
添加
</
Button
>
{
/* 弹框: 优惠券 */
}
<
CouponsLayout
fieldApi=
{
PublicApi
.
getMarketingMerchantActivityDetailGoodsCouponSelect
}
visible=
{
tableModalVisible
}
onClose=
{
()
=>
toggle
(
false
)
}
onSubmit=
{
handleCouponSubmit
}
...
...
src/pages/transaction/marketingAbility/components/productListLayout/index.tsx
View file @
ef0fadb0
...
...
@@ -25,7 +25,7 @@ interface ProductListProps {
activityId
?:
any
,
form
?:
FormInstance
,
/** umi-hooks */
focus$
?:
EventEmitter
<
void
>
,
focus$
?:
any
,
/** 适用商城 */
shopIdList
?:
number
[],
/** 接口 */
...
...
@@ -57,10 +57,12 @@ const ProductListLayout: React.FC<ProductListProps> = (props: any) => {
})
}
focus$
&&
focus$
.
useSubscription
((
val
:
optionProps
)
=>
{
setValue
(
val
.
value
)
useEffect
(()
=>
{
if
(
focus$
)
{
setValue
(
focus$
)
setDataSource
([])
});
}
},
[
focus$
])
/** 删除一个 */
const
handleDelete
=
(
key
)
=>
{
...
...
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/add.tsx
View file @
ef0fadb0
...
...
@@ -51,6 +51,7 @@ const AddedMarketing = () => {
const
[
memberType
,
setMemberType
]
=
useState
<
any
[]
>
([]);
const
[
activityId
,
setActivityId
]
=
useState
<
number
>
();
const
[
value
,
setValue
]
=
useState
<
number
>
();
const
[
prizeList
,
setPrizeList
]
=
useState
<
any
[]
>
([]);
const
handleGetShopList
=
(
mall
)
=>
{
const
checkedList
=
mall
.
filter
(
item
=>
item
.
checked
);
...
...
@@ -98,7 +99,7 @@ const AddedMarketing = () => {
oldMember
:
(
res
.
allUser
.
includes
(
4
)
?
1
:
0
),
memberLevelList
,
shopList
:
res
.
shopList
,
productList
:
res
.
productList
.
map
(
item
=>
{
productList
:
res
.
productList
&&
res
.
productList
.
map
(
item
=>
{
if
(
item
.
couponGroupList
)
{
return
{
...
item
,
...
...
@@ -178,6 +179,9 @@ const AddedMarketing = () => {
if
(
data
[
'activityDefinedBO'
][
'attemptEndTime'
])
{
data
[
'activityDefinedBO'
][
'attemptEndTime'
]
=
moment
(
data
[
'activityDefinedBO'
][
'attemptEndTime'
]);
}
if
(
data
[
'activityDefinedBO'
][
'prizeBOList'
])
{
setPrizeList
(
data
[
'activityDefinedBO'
][
'prizeBOList'
])
}
form
.
setFieldsValue
({
allUser
:
[
data
.
newUser
&&
1
,
data
.
oldUser
&&
2
,
data
.
newMember
&&
3
,
data
.
oldMember
&&
4
],
activityDefinedBO
:
data
.
activityDefinedBO
,
...
...
@@ -197,7 +201,7 @@ const AddedMarketing = () => {
},
[
id
])
focus$
.
useSubscription
((
val
:
any
)
=>
{
setValue
(
val
.
value
)
;
setValue
(
val
.
value
)
form
.
resetFields
([
'activityDefinedBO'
]);
});
...
...
@@ -236,8 +240,8 @@ const AddedMarketing = () => {
<
BasicInfoLayout
form=
{
form
}
focus
$=
{
focus$
}
/>
<
ShopLayout
onGetShopList=
{
handleGetShopList
}
onSetShopList=
{
shopList
}
/>
<
RulesLayout
form=
{
form
}
focus
$=
{
focus$
}
/>
{
value
!==
10
&&
(<
ProductListLayout
activityId=
{
activityId
&&
{
activityId
:
activityId
}
}
form=
{
form
}
focus
$=
{
focus$
}
shopIdList=
{
shopIdList
}
fieldApi=
{
PublicApi
.
getMarketingMerchantActivityDetailGoodsPage
}
/>)
}
{
value
===
10
&&
(<
PrizeListLayout
form=
{
form
}
/>)
}
{
value
!==
10
&&
(<
ProductListLayout
activityId=
{
activityId
&&
{
activityId
:
activityId
}
}
form=
{
form
}
focus
$=
{
value
}
shopIdList=
{
shopIdList
}
fieldApi=
{
PublicApi
.
getMarketingMerchantActivityDetailGoodsPage
}
/>)
}
{
value
===
10
&&
(<
PrizeListLayout
form=
{
form
}
prizeList=
{
prizeList
}
focus
$=
{
value
}
/>)
}
<
PartakeUserLayout
onGetLevel=
{
handleGetLevel
}
onSetLevel=
{
memberLevelList
}
setMemberType=
{
memberType
}
/>
</
Form
>
}
...
...
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/basicInfoLayout/index.tsx
View file @
ef0fadb0
...
...
@@ -65,7 +65,7 @@ const BasicInfoLayout: React.FC<BasicInfoProps> = (props: any) => {
};
const
handleChange
=
(
e
,
option
)
=>
{
focus$
.
emit
(
option
)
focus$
.
emit
(
option
)
;
}
return
(
...
...
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/couponsLayout/index.less
View file @
ef0fadb0
...
...
@@ -3,7 +3,8 @@
align-items: center;
:global {
.ant-checkbox+span {
.ant-checkbox+span,
.ant-radio+span {
flex: 1;
margin-left: 20px;
}
...
...
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/couponsLayout/index.tsx
View file @
ef0fadb0
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Drawer
,
Space
,
Form
,
Select
,
Input
,
Button
,
Row
,
Col
,
Checkbox
,
Empty
,
Pagination
}
from
'antd'
;
import
React
,
{
useEffect
,
useState
,
useCallback
}
from
'react'
;
import
{
Drawer
,
Space
,
Form
,
Select
,
Input
,
Button
,
Row
,
Col
,
Checkbox
,
Empty
,
Pagination
,
Radio
}
from
'antd'
;
import
{
CaretDownOutlined
}
from
'@ant-design/icons'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
CouponItem
from
'@/pages/transaction/marketingAbility/components/couponItem'
;
...
...
@@ -15,10 +15,14 @@ interface CouponsLayoutProps {
onSubmit
?:
(
e
:
any
)
=>
void
,
/** 已选择的id */
value
?:
any
,
/** 多选&单选 */
mode
?:
'checkbox'
|
'radio'
,
/** 接口api */
fieldApi
?:
()
=>
Promise
<
unknown
>
,
}
const
CouponsLayout
:
React
.
FC
<
CouponsLayoutProps
>
=
(
props
:
any
)
=>
{
const
{
visible
,
onClose
,
onSubmit
,
value
}
=
props
;
const
{
visible
,
onClose
,
onSubmit
,
value
,
mode
=
'checkbox'
,
fieldApi
}
=
props
;
const
[
form
]
=
Form
.
useForm
();
const
[
state
,
setState
]
=
useState
({
filterSearch
:
false
...
...
@@ -32,6 +36,8 @@ const CouponsLayout: React.FC<CouponsLayoutProps> = (props: any) => {
const
[
chekedId
,
setCheckedId
]
=
useState
<
number
[]
>
([]);
// 已选择的优惠券
const
[
selectCouponList
,
setSelectCouponList
]
=
useState
<
any
[]
>
([]);
// checkbox 勾选到的数据 需要去重
const
[
couponsList
,
setCouponsList
]
=
useState
<
any
[]
>
([]);
// 提交的优惠券
const
[
options
,
setOptions
]
=
useState
<
any
[]
>
([]);
// 选择附属优惠券查询条件
const
changeFilterVisible
=
()
=>
{
setState
({
filterSearch
:
!
state
.
filterSearch
,
...
...
@@ -41,7 +47,7 @@ const CouponsLayout: React.FC<CouponsLayoutProps> = (props: any) => {
// 提交搜索
const
handleSubmit
=
async
()
=>
{
await
form
.
validateFields
().
then
(
res
=>
{
PublicApi
.
getMarketingMerchantActivityDetailGoodsCouponSelect
({
...
res
,
...
params
}).
then
(
res
=>
{
fieldApi
({
...
res
,
...
params
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
}
...
...
@@ -58,9 +64,24 @@ const CouponsLayout: React.FC<CouponsLayoutProps> = (props: any) => {
handleSubmit
()
}
const
handleCondition
=
useCallback
(
async
()
=>
{
await
PublicApi
.
getMarketingMerchantActivityDetailGoodsCouponSelectCondition
().
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
}
setOptions
(
res
.
data
.
map
(
_item
=>
{
return
{
label
:
_item
.
name
,
value
:
_item
.
value
}
}))
})
},
[])
useEffect
(()
=>
{
if
(
visible
)
{
handleSubmit
()
handleSubmit
();
handleCondition
();
}
},
[
visible
,
params
])
...
...
@@ -81,6 +102,7 @@ const CouponsLayout: React.FC<CouponsLayoutProps> = (props: any) => {
)
}
/** checkbox 选择 */
const
_setCheckList
=
(
_e
,
_item
)
=>
{
const
ids
=
[...
chekedId
];
const
selcetLits
=
[...
selectCouponList
];
...
...
@@ -93,9 +115,16 @@ const CouponsLayout: React.FC<CouponsLayoutProps> = (props: any) => {
}
}
/** radio 选择 */
const
_setRadioList
=
(
_e
)
=>
{
const
{
value
}
=
_e
.
target
;
const
_item
=
_e
.
target
[
'data-item'
];
setCheckedId
([
value
])
setSelectCouponList
([
_item
])
}
useEffect
(()
=>
{
const
newData
=
selectCouponList
.
filter
(
_item
=>
chekedId
.
includes
(
_item
.
id
));
console
.
log
(
newData
,
98
)
setCouponsList
(
newData
)
},
[
chekedId
])
...
...
@@ -136,12 +165,7 @@ const CouponsLayout: React.FC<CouponsLayoutProps> = (props: any) => {
<
Select
style=
{
{
width
:
'160px'
}
}
placeholder=
'优惠劵类型'
options=
{
[
{
label
:
'通用优惠券'
,
value
:
1
},
{
label
:
'品类优惠券'
,
value
:
2
},
{
label
:
'品牌优惠券'
,
value
:
3
},
{
label
:
'商品优惠券'
,
value
:
4
},
]
}
options=
{
options
}
/>
</
Form
.
Item
>
<
Form
.
Item
...
...
@@ -168,6 +192,8 @@ const CouponsLayout: React.FC<CouponsLayoutProps> = (props: any) => {
{
couponList
.
length
===
0
?
<
Empty
image=
{
Empty
.
PRESENTED_IMAGE_SIMPLE
}
/>
:
(
<
Row
>
{
mode
===
'checkbox'
&&
(
<>
{
couponList
.
map
((
item
:
any
,
index
:
number
)
=>
{
return
(
<
Col
span=
{
22
}
key=
{
`Col_${index}`
}
style=
{
{
marginBottom
:
24
}
}
>
...
...
@@ -179,8 +205,25 @@ const CouponsLayout: React.FC<CouponsLayoutProps> = (props: any) => {
</
Col
>
)
})
}
<
Col
span=
{
24
}
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
}
}
>
<
Pagination
size=
"small"
total=
{
total
}
current=
{
params
.
current
}
onChange=
{
handlePagination
}
/>
</>
)
}
{
mode
===
'radio'
&&
(
<
Radio
.
Group
style=
{
{
flex
:
1
}
}
onChange=
{
(
_e
)
=>
_setRadioList
(
_e
)
}
>
{
couponList
.
map
((
item
:
any
,
index
:
number
)
=>
{
return
(
<
Col
span=
{
22
}
key=
{
`Col_${index}`
}
style=
{
{
marginBottom
:
24
}
}
>
<
Radio
checked=
{
chekedId
.
includes
(
item
.
id
)
}
value=
{
item
.
id
}
data
-
item=
{
item
}
className=
{
styles
.
customsCheckbox
}
>
<
CouponItem
fieldListData=
{
item
}
/>
</
Radio
>
</
Col
>
)
})
}
</
Radio
.
Group
>
)
}
<
Col
span=
{
24
}
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
}
}
>
<
Pagination
size=
"small"
total=
{
total
}
current=
{
params
.
current
}
onChange=
{
handlePagination
}
/>
</
Col
>
</
Row
>
)
}
...
...
src/pages/transaction/marketingAbility/selfManagement/readySubmitExamine/components/prizeListLayout/index.tsx
View file @
ef0fadb0
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Form
,
Table
,
Tooltip
,
Button
,
Select
,
Input
,
Popconfirm
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table'
;
import
{
PlusOutlined
,
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
EditOutlined
,
PlusOutlined
,
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
CardLayout
from
'../card'
;
import
{
FormInstance
}
from
'antd/es/form/Form'
;
import
{
isEmpty
}
from
'@antv/util'
;
import
CouponsLayout
from
'../couponsLayout'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
levelList
=
[
{
value
:
1
,
name
:
'一等奖'
},
...
...
@@ -24,20 +26,42 @@ const typeList = [
interface
PrizeListProps
{
form
?:
FormInstance
,
/** 回显数据 */
prizeList
?:
any
[],
/** 活动类型 */
focus$
?:
number
,
}
const
PrizeListLayout
:
React
.
FC
<
PrizeListProps
>
=
(
props
:
any
)
=>
{
const
{
form
}
=
props
;
const
{
form
,
prizeList
,
focus$
}
=
props
;
const
[
dataSource
,
setDataSource
]
=
useState
<
any
[]
>
([]);
const
[
levelIds
,
setLevelIds
]
=
useState
<
number
[]
>
([]);
const
[
tableModalVisible
,
setTableModalVisible
]
=
useState
<
boolean
>
(
false
);
const
[
_type
,
setType
]
=
useState
<
number
>
();
const
[
_index_
,
setIndex
]
=
useState
<
number
>
();
const
toggle
=
(
flag
:
boolean
)
=>
{
setTableModalVisible
(
flag
)
};
/** 更新form回显 */
const
handleSetFieldsValue
=
(
prams
:
any
[])
=>
{
prams
.
forEach
((
_item
,
index
)
=>
{
form
.
setFieldsValue
({
[
`level_
${
index
}
`
]:
_item
.
level
,
[
`type_
${
index
}
`
]:
_item
.
type
,
[
`probability_
${
index
}
`
]:
_item
.
probability
,
[
`prize_
${
index
}
`
]:
_item
.
prize
,
})
})
}
/** 选择奖项等级 */
const
handleChangeLevel
=
(
e
,
_index
)
=>
{
const
fields
=
[...
dataSource
];
const
ids
=
[...
levelIds
];
console
.
log
(
ids
)
ids
[
_index
]
=
e
;
setLevelIds
(
ids
);
const
newData
=
fields
.
map
((
_item
,
_i
)
=>
{
...
...
@@ -52,23 +76,73 @@ const PrizeListLayout: React.FC<PrizeListProps> = (props: any) => {
setDataSource
(
newData
)
}
/** 选择奖品类别 */
const
handleChangeType
=
(
e
,
_index
)
=>
{
const
fields
=
[...
dataSource
];
const
newData
=
fields
.
map
((
_item
,
_i
)
=>
{
if
(
_i
===
_index
)
{
return
{
...
_item
,
type
:
e
}
}
return
_item
})
setDataSource
(
newData
)
}
/** 输入中奖概率 */
const
handleChangeProbability
=
(
e
,
_index
)
=>
{
const
{
value
}
=
e
.
target
;
const
fields
=
[...
dataSource
];
const
newData
=
fields
.
map
((
_item
,
_i
)
=>
{
if
(
_i
===
_index
)
{
return
{
...
_item
,
probability
:
Number
(
value
)
}
}
return
_item
})
setDataSource
(
newData
)
}
/** 奖项 */
const
handleChangePrize
=
(
e
,
_index
)
=>
{
const
{
value
}
=
e
.
target
;
const
fields
=
[...
dataSource
];
const
newData
=
fields
.
map
((
_item
,
_i
)
=>
{
if
(
_i
===
_index
)
{
return
{
...
_item
,
prize
:
value
}
}
return
_item
})
setDataSource
(
newData
)
}
/** 删除一条奖项 */
const
handleDelete
=
(
_index
)
=>
{
const
handleDelete
=
(
_index
,
_record
)
=>
{
const
fields
=
[...
dataSource
];
const
ids
=
[...
levelIds
];
fields
.
splice
(
_index
,
1
)
fields
.
forEach
((
_item
,
index
)
=>
{
form
.
setFieldsValue
({
[
`level_
${
index
}
`
]:
_item
.
level
,
[
`type_
${
index
}
`
]:
_item
.
type
,
[
`probability_
${
index
}
`
]:
_item
.
probability
,
[
`prize_
${
index
}
`
]:
_item
.
prize
,
})
})
setLevelIds
(
ids
.
splice
(
_index
,
1
))
handleSetFieldsValue
(
fields
)
if
(
_record
.
level
)
{
setLevelIds
(
ids
.
filter
(
_item
=>
_item
!==
_record
.
level
))
}
setDataSource
(
fields
)
}
/** 选择优惠券 */
const
handleClickButton
=
(
value
,
_index
)
=>
{
setType
(
value
);
setIndex
(
_index
)
toggle
(
true
);
}
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'奖项等级'
,
...
...
@@ -100,7 +174,7 @@ const PrizeListLayout: React.FC<PrizeListProps> = (props: any) => {
name=
{
`type_${_index}`
}
rules=
{
[{
required
:
true
,
message
:
'请选择奖品类别'
}]
}
>
<
Select
>
<
Select
onChange=
{
(
e
)
=>
handleChangeType
(
e
,
_index
)
}
>
{
typeList
.
map
(
_item
=>
(
<
Select
.
Option
key=
{
_item
.
value
}
value=
{
_item
.
value
}
>
{
_item
.
name
}
</
Select
.
Option
>
))
}
...
...
@@ -119,9 +193,23 @@ const PrizeListLayout: React.FC<PrizeListProps> = (props: any) => {
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
`probability_${_index}`
}
rules=
{
[{
required
:
true
,
message
:
'请输入中奖概率'
}]
}
rules=
{
[{
required
:
true
,
validator
:
(
_rule
,
value
)
=>
{
const
pattern
=
/^-
?[
1-9
]\d
*
(\.\d
{1,2}
)?
$/
;
if
(
!
value
)
{
return
Promise
.
reject
(
new
Error
(
'请输入中奖概率'
));
}
if
(
!
pattern
.
test
(
value
))
{
return
Promise
.
reject
(
new
Error
(
`中奖概率必须大于0最多保留2位小数`
));
}
if
(
Number
(
value
)
>
100
)
{
return
Promise
.
reject
(
new
Error
(
`中奖概率必须小于或等于100`
));
}
return
Promise
.
resolve
();
}
}]
}
>
<
Input
style=
{
{
width
:
176
}
}
addonAfter=
'%'
/>
<
Input
style=
{
{
width
:
176
}
}
addonAfter=
'%'
onChange=
{
(
e
)
=>
handleChangeProbability
(
e
,
_index
)
}
/>
</
Form
.
Item
>
)
},
...
...
@@ -138,9 +226,9 @@ const PrizeListLayout: React.FC<PrizeListProps> = (props: any) => {
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
`prize_${_index}`
}
rules=
{
[{
required
:
true
,
message
:
'请输选择
优惠券
'
}]
}
rules=
{
[{
required
:
true
,
message
:
'请输选择
商品
'
}]
}
>
<
div
>
123
</
div
>
<
Button
icon=
{
<
EditOutlined
/>
}
type=
'text'
onClick=
{
()
=>
handleClickButton
(
getFieldValue
([
`type_${_index}`
]),
_index
)
}
>
选择0元购买抵扣劵
</
Button
>
</
Form
.
Item
>
)
:
getFieldValue
([
`type_${_index}`
])
===
2
?
(
<
Form
.
Item
...
...
@@ -148,23 +236,45 @@ const PrizeListLayout: React.FC<PrizeListProps> = (props: any) => {
name=
{
`prize_${_index}`
}
rules=
{
[{
required
:
true
,
message
:
'请输选择优惠券'
}]
}
>
<
div
>
123
</
div
>
<
Button
icon=
{
<
EditOutlined
/>
}
type=
'text'
onClick=
{
()
=>
handleClickButton
(
getFieldValue
([
`type_${_index}`
]),
_index
)
}
>
选择优惠券
</
Button
>
</
Form
.
Item
>
)
:
getFieldValue
([
`type_${_index}`
])
===
3
?
(
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
`prize_${_index}`
}
rules=
{
[{
required
:
true
,
message
:
'请输入金额'
}]
}
rules=
{
[{
required
:
true
,
validator
:
(
_rule
,
value
)
=>
{
const
pattern
=
/^-
?[
1-9
]\d
*
(\.\d
{1,2}
)?
$/
;
if
(
!
value
)
{
return
Promise
.
reject
(
new
Error
(
'请输入金额'
));
}
if
(
!
pattern
.
test
(
value
))
{
return
Promise
.
reject
(
new
Error
(
`金额必须大于0最多保留2位小数`
));
}
return
Promise
.
resolve
();
}
}]
}
>
<
Input
addonAfter=
'元'
/>
<
Input
addonAfter=
'元'
onChange=
{
(
e
)
=>
handleChangePrize
(
e
,
_index
)
}
/>
</
Form
.
Item
>
)
:
getFieldValue
([
`type_${_index}`
])
===
4
?
(
<
Form
.
Item
style=
{
{
margin
:
0
}
}
name=
{
`prize_${_index}`
}
rules=
{
[{
required
:
true
,
message
:
'请输入积分'
}]
}
rules=
{
[{
required
:
true
,
validator
:
(
_rule
,
value
)
=>
{
const
pattern
=
/^-
?[
1-9
]\d
*$/
;
if
(
!
value
)
{
return
Promise
.
reject
(
new
Error
(
'请输入积分'
));
}
if
(
!
pattern
.
test
(
value
))
{
return
Promise
.
reject
(
new
Error
(
`积分必须大于0`
));
}
return
Promise
.
resolve
();
}
}]
}
>
<
Input
addonAfter=
'积分'
/>
<
Input
addonAfter=
'积分'
onChange=
{
(
e
)
=>
handleChangePrize
(
e
,
_index
)
}
/>
</
Form
.
Item
>
)
:
'无'
}
</
Form
.
Item
>
...
...
@@ -178,7 +288,7 @@ const PrizeListLayout: React.FC<PrizeListProps> = (props: any) => {
render
:
(
_text
,
_record
,
_index
)
=>
(
<
Popconfirm
title=
"是否删除?"
onConfirm=
{
()
=>
handleDelete
(
_index
)
}
onConfirm=
{
()
=>
handleDelete
(
_index
,
_record
)
}
>
<
Button
type=
'link'
>
删除
</
Button
>
</
Popconfirm
>
...
...
@@ -196,12 +306,44 @@ const PrizeListLayout: React.FC<PrizeListProps> = (props: any) => {
prize
:
null
,
}
const
field
=
[...
dataSource
];
setDataSource
([...
field
,
field_Obj
]);
const
newData
=
[...
field
,
field_Obj
];
handleSetFieldsValue
(
newData
)
setDataSource
(
newData
);
}
useEffect
(()
=>
{
form
.
setFieldsValue
({
'activityDefinedBO'
:
{
'prizeBOList'
:
dataSource
}
})
},
[
dataSource
])
useEffect
(()
=>
{
if
(
!
isEmpty
(
prizeList
))
{
handleSetFieldsValue
(
prizeList
)
setLevelIds
(
prizeList
.
map
(
_item
=>
{
return
_item
.
level
}))
setDataSource
(
prizeList
)
}
},
[
prizeList
])
const
handleCouponSubmit
=
(
selectRowRecord
:
any
)
=>
{
console
.
log
(
selectRowRecord
)
toggle
(
false
);
}
useEffect
(()
=>
{
if
(
focus$
)
{
setLevelIds
([])
setDataSource
([])
}
},
[
focus$
])
return
(
<
CardLayout
id=
"
productLis
tLayout"
id=
"
activityProduc
tLayout"
title=
"奖品设置"
weight
>
...
...
@@ -210,13 +352,21 @@ const PrizeListLayout: React.FC<PrizeListProps> = (props: any) => {
rules=
{
[{
required
:
true
,
message
:
'请选择奖品设置!'
}]
}
>
<
Table
rowKey=
{
(
_record
,
_index
)
=>
_index
}
rowKey=
{
(
_record
,
_index
)
=>
`table_${_index + 1}`
}
columns=
{
columns
}
dataSource=
{
dataSource
}
pagination=
{
false
}
/>
</
Form
.
Item
>
<
Button
style=
{
{
marginBottom
:
'16px'
}
}
block
type=
"dashed"
icon=
{
<
PlusOutlined
/>
}
onClick=
{
handleApped
}
>
添加新奖项
</
Button
>
{
/* 选择优惠券 */
}
<
CouponsLayout
mode=
'radio'
fieldApi=
{
_type
===
1
?
PublicApi
.
getMarketingMerchantActivityDetailPrizeCouponSelect
:
PublicApi
.
getMarketingMerchantActivityDetailGoodsCouponSelect
}
visible=
{
tableModalVisible
}
onClose=
{
()
=>
toggle
(
false
)
}
onSubmit=
{
handleCouponSubmit
}
/>
</
CardLayout
>
)
}
...
...
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