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
shenshaokai
jinfa-platform
Commits
57693b79
Commit
57693b79
authored
Apr 25, 2021
by
卢均锐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:加入在线竞价页面&对接采购竞价部分字段
parent
1f6f178b
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
1553 additions
and
562 deletions
+1553
-562
index.ts
config/routes/procurementRoute/index.ts
+3
-0
onlineBid.ts
config/routes/procurementRoute/onlineBid.ts
+33
-0
win-bid.png
src/assets/imgs/win-bid.png
+0
-0
index.less
...s/detail/components/bidCommonLayout/resultItem/index.less
+56
-43
index.tsx
...ts/detail/components/bidCommonLayout/resultItem/index.tsx
+21
-2
index.tsx
...ty/components/detail/components/bidDetailLayout/index.tsx
+5
-8
index.tsx
...es/transaction/purchaseAbility/components/table/index.tsx
+16
-1
onlineBid.ts
src/pages/transaction/purchaseAbility/constants/onlineBid.ts
+60
-0
purchaseBid.ts
...ages/transaction/purchaseAbility/constants/purchaseBid.ts
+66
-54
index.tsx
.../transaction/purchaseAbility/onlineBid/readyBid/index.tsx
+122
-0
index.tsx
...ansaction/purchaseAbility/onlineBid/readySignUp/index.tsx
+122
-0
index.tsx
...es/transaction/purchaseAbility/onlineBid/search/index.tsx
+112
-0
add.tsx
.../transaction/purchaseAbility/purchaseBid/readyAdd/add.tsx
+29
-9
basic.tsx
...purchaseAbility/purchaseBid/readyAdd/components/basic.tsx
+18
-15
bidRequirement.tsx
...bility/purchaseBid/readyAdd/components/bidRequirement.tsx
+77
-21
bidRules.tsx
...chaseAbility/purchaseBid/readyAdd/components/bidRules.tsx
+99
-48
condition.tsx
...haseAbility/purchaseBid/readyAdd/components/condition.tsx
+6
-8
file.tsx
.../purchaseAbility/purchaseBid/readyAdd/components/file.tsx
+113
-0
index.less
...urchaseAbility/purchaseBid/readyAdd/components/index.less
+11
-0
index.tsx
...ransaction/purchaseAbility/purchaseBid/readyAdd/index.tsx
+45
-50
index.tsx
...ransaction/purchaseAbility/purchaseBid/readyBid/index.tsx
+25
-29
index.less
...Bid/readyBid/management/components/triangleTag/index.less
+1
-0
index.tsx
...action/purchaseAbility/purchaseBid/readyConfirm/index.tsx
+28
-32
index.tsx
...ion/purchaseAbility/purchaseBid/readyExamineOne/index.tsx
+27
-29
index.tsx
...rchaseAbility/purchaseBid/readyExamineResultOne/index.tsx
+29
-33
index.tsx
...rchaseAbility/purchaseBid/readyExamineResultTwo/index.tsx
+28
-32
index.tsx
.../purchaseAbility/purchaseBid/readyExamineSignUp/index.tsx
+30
-34
index.tsx
...ion/purchaseAbility/purchaseBid/readyExamineTwo/index.tsx
+26
-29
index.tsx
...saction/purchaseAbility/purchaseBid/readySubmit/index.tsx
+26
-29
index.tsx
...aseAbility/purchaseBid/readySubmitExamineResult/index.tsx
+28
-32
index.tsx
.../transaction/purchaseAbility/purchaseBid/search/index.tsx
+24
-21
onlineBid.ts
src/pages/transaction/purchaseAbility/schema/onlineBid.ts
+264
-0
purchaseBid.ts
src/pages/transaction/purchaseAbility/schema/purchaseBid.ts
+3
-3
No files found.
config/routes/procurementRoute/index.ts
View file @
57693b79
...
...
@@ -4,6 +4,7 @@ import { purchaseInquiryRoute } from './purchaseInquiry';
import
{
confirmOfferRoute
}
from
'./confirmOffer'
;
import
{
tenderRoute
}
from
'./tender'
;
import
{
purchaseBidRoute
}
from
'./purchaseBid'
;
import
{
onlineBidRoute
}
from
'./onlineBid'
;
/**
* 采购能力路由
...
...
@@ -25,6 +26,8 @@ const ProcurementRoute = {
...
confirmOfferRoute
,
/** 采购竞价 */
...
purchaseBidRoute
,
/** 在线竞价 */
...
onlineBidRoute
,
],
}
...
...
config/routes/procurementRoute/onlineBid.ts
0 → 100644
View file @
57693b79
/**
* @description: 采购能力 在线竞价
* @param {type}
* @return {type}
*/
export
const
onlineBidRoute
=
[
// 在线竞价
{
path
:
'/memberCenter/procurementAbility/onlineBid'
,
name
:
'采购竞价'
,
routes
:
[
// 采购竞价单查询
{
path
:
'/memberCenter/procurementAbility/onlineBid/search'
,
name
:
'采购竞价单查询'
,
component
:
'@/pages/transaction/purchaseAbility/onlineBid/search'
},
// 待竞价报名
{
path
:
'/memberCenter/procurementAbility/onlineBid/readySignUp'
,
name
:
'待竞价报名'
,
component
:
'@/pages/transaction/purchaseAbility/onlineBid/readySignUp'
},
// 待竞价
{
path
:
'/memberCenter/procurementAbility/onlineBid/readyBid'
,
name
:
'待竞价'
,
component
:
'@/pages/transaction/purchaseAbility/onlineBid/readyBid'
},
]
},
]
src/assets/imgs/win-bid.png
0 → 100644
View file @
57693b79
6.08 KB
src/pages/transaction/purchaseAbility/components/detail/components/bidCommonLayout/resultItem/index.less
View file @
57693b79
.resultItem {
height: 131px;
background: #FAFBFC;
padding: 12px 14px;
.resultItemRow {
display: flex;
margin-bottom: 6px;
font-size: 12px;
color: #909399;
height: 131px;
background: #FAFBFC;
padding: 12px 14px;
position: absolute;
.money{
color: #303133;
font-size: 16px;
flex: 1;
span{
color: #909399;
font-size: 12px;
}
}
.badge {
width: 24px;
height: 24px;
background: #EBECF0;
border-radius: 12px;
text-align: center;
line-height: 24px;
.resultItemWinBid{
position: absolute;
width: 40px;
right: 8px;
top: -8px;
}
.resultItemRow {
display: flex;
margin-bottom: 6px;
font-size: 12px;
color: #909399;
.money {
color: #303133;
font-size: 16px;
flex: 1;
span {
color: #909399;
font-size: 12px;
margin-left: 4px;
display: inline-block;
}
.title {
font-size: 12px;
color: #303133;
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-break: break-all;
}
.label{
width: 40%;
}
.badge {
width: 24px;
height: 24px;
background: #EBECF0;
border-radius: 12px;
text-align: center;
line-height: 24px;
color: #909399;
font-size: 12px;
margin-left: 4px;
display: inline-block;
}
.title {
font-size: 12px;
color: #303133;
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-break: break-all;
img {
margin-left: 4px;
width: 24px;
}
}
.label {
width: 40%;
}
}
\ No newline at end of file
}
src/pages/transaction/purchaseAbility/components/detail/components/bidCommonLayout/resultItem/index.tsx
View file @
57693b79
import
React
from
'react'
;
import
{
Divider
,
Table
,
Row
,
Col
,
Space
,
Typography
,
Button
,
Tooltip
}
from
'antd'
;
import
level1
from
'@/assets/icons/the_first.png'
;
import
level2
from
'@/assets/icons/the_second.png'
;
import
level3
from
'@/assets/icons/the_third.png'
;
import
winBig
from
'@/assets/imgs/win-bid.png'
;
import
styles
from
'./index.less'
;
export
interface
ResultItemPrpos
{
itemIndex
:
number
,
detail
?:
any
,
checkDetailFunc
?
:
Function
checkDetailFunc
?:
Function
}
const
ResultItem
:
React
.
FC
<
ResultItemPrpos
>
=
(
props
:
any
)
=>
{
const
{
itemIndex
,
detial
,
checkDetailFunc
}
=
props
;
const
_returnBadge
=
(
number
)
=>
{
switch
(
number
)
{
case
1
:
return
<
img
src=
{
level1
}
alt=
'第一名'
/>;
case
2
:
return
<
img
src=
{
level2
}
alt=
'第二名'
/>;
case
3
:
return
<
img
src=
{
level3
}
alt=
'第三名'
/>;
default
:
return
<
div
className=
{
styles
.
badge
}
>
number
</
div
>
}
}
return
(
<
div
key=
{
`msgItem_key_${itemIndex}`
}
className=
{
styles
.
resultItem
}
>
<
img
src=
{
winBig
}
alt=
"授标"
className=
{
styles
.
resultItemWinBid
}
/>
<
div
className=
{
styles
.
resultItemRow
}
>
<
div
className=
{
styles
.
title
}
>
广州白马皮具交易中心
<
div
className=
{
styles
.
badge
}
>
1
</
div
>
</
div
>
<
div
className=
{
styles
.
title
}
>
广州白马皮具交易中心
{
_returnBadge
(
1
)
}
</
div
>
</
div
>
<
div
className=
{
styles
.
resultItemRow
}
>
<
div
className=
{
styles
.
money
}
>
¥900.00
<
span
>
(含税)
</
span
></
div
>
...
...
src/pages/transaction/purchaseAbility/components/detail/components/bidDetailLayout/index.tsx
View file @
57693b79
import
React
,
{
useContext
,
useEffect
,
useState
}
from
'react'
;
import
{
Row
,
Col
,
Table
,
Button
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
Card
from
'../../../card'
;
import
BtnItem
from
'./btnItem'
;
const
BidDetailLayout
=
()
=>
{
const
columns
=
[
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'物料编号/名称'
,
dataIndex
:
'materielNo'
,
align
:
'center'
,
},
{
title
:
'规格型号'
,
dataIndex
:
'type'
,
align
:
'center'
,
},
{
title
:
'品类'
,
dataIndex
:
'category'
,
align
:
'center'
,
},
...
...
@@ -17,12 +19,7 @@ const BidDetailLayout = () => {
{
title
:
'金额(含税)'
,
dataIndex
:
'price'
,
align
:
'center'
,
},
]
const
dataSource
=
[
{
key
:
'1'
,
materielNo
:
'Q89YTE1'
,
},
]
const
dataSource
=
[]
return
(
<
div
style=
{
{
width
:
'100%'
}
}
>
<
Card
...
...
@@ -34,7 +31,7 @@ const BidDetailLayout = () => {
<
BtnItem
/>
</
Col
>
</
Row
>
{
/* <Table dataSource={dataSource} columns={columns} />; */
}
<
Table
dataSource=
{
dataSource
}
columns=
{
columns
}
/>
;
<
Button
type=
"link"
block
>
显示更多
</
Button
>
</
Card
>
</
div
>
...
...
src/pages/transaction/purchaseAbility/components/table/index.tsx
View file @
57693b79
...
...
@@ -26,6 +26,12 @@ import {
PURCHASEBIDOSIGNUP_SCHEMA
,
}
from
'../../schema/purchaseBid'
;
import
{
ONLINEBIDORDER_SCHEMA
,
ONLINEBIDREADYBID_SCHEMA
,
ONLINEBIDREADYSIGN_SCHEMA
,
}
from
'../../schema/onlineBid'
;
interface
Iprops
{
fetch
?:
()
=>
Promise
<
unknown
>
,
fetchRowkeys
?(
e
:
any
),
...
...
@@ -43,7 +49,10 @@ interface Iprops {
'CONFIRMOFFERAUDIT_SCHEMA'
|
'PURCHASEBIDORDER_SCHEMA'
|
'PURCHASEBIDREADYADD_SCHEMA'
|
'PURCHASEBIDOSIGNUP_SCHEMA'
'PURCHASEBIDOSIGNUP_SCHEMA'
|
'ONLINEBIDORDER_SCHEMA'
|
'ONLINEBIDREADYBID_SCHEMA'
|
'ONLINEBIDREADYSIGN_SCHEMA'
columns
:
ColumnType
<
any
>
[],
effects
?:
string
,
selectedRow
?:
boolean
,
...
...
@@ -91,6 +100,12 @@ const Table: React.FC<Iprops> = (props: any) => {
return
PURCHASEBIDREADYADD_SCHEMA
;
case
'PURCHASEBIDOSIGNUP_SCHEMA'
:
return
PURCHASEBIDOSIGNUP_SCHEMA
;
case
'ONLINEBIDORDER_SCHEMA'
:
return
ONLINEBIDORDER_SCHEMA
;
case
'ONLINEBIDREADYBID_SCHEMA'
:
return
ONLINEBIDREADYBID_SCHEMA
;
case
'ONLINEBIDREADYSIGN_SCHEMA'
:
return
ONLINEBIDREADYSIGN_SCHEMA
;
}
}
/** 列表数据 */
...
...
src/pages/transaction/purchaseAbility/constants/onlineBid.ts
0 → 100644
View file @
57693b79
/** 筛选竞价单外部状态 */
export
const
FILTEREXTERNALBIDSTATE
=
[
{
label
:
'待提交竞价单'
,
value
:
1
},
{
label
:
'待审核竞价单'
,
value
:
2
},
{
label
:
'待提交报价单'
,
value
:
3
},
{
label
:
'待确认授标结果'
,
value
:
4
},
{
label
:
'已完成'
,
value
:
99
},
{
label
:
'已作废'
,
value
:
'-1'
},
]
/** 筛选竞价单内部状态 */
export
const
FILTERINTERNALBIDSTATE
=
[
{
label
:
'待提交审核'
,
value
:
1
},
{
label
:
'待审核(一级)'
,
value
:
2
},
{
label
:
'待审核(二级)'
,
value
:
3
},
{
label
:
'待提交报价单'
,
value
:
4
},
{
label
:
'待比价'
,
value
:
5
},
{
label
:
'审核通过(一级)'
,
value
:
6
},
{
label
:
'审核通过(二级)'
,
value
:
7
},
{
label
:
'.审核不通过(一级)'
,
value
:
8
},
{
label
:
'审核不通过(二级)'
,
value
:
9
},
{
label
:
'已完成'
,
value
:
99
},
{
label
:
'已作废'
,
value
:
'-1'
},
]
\ No newline at end of file
src/pages/transaction/purchaseAbility/constants/purchaseBid.ts
View file @
57693b79
/** 筛选竞价单外部状态 */
export
const
FILTEREXTERNALBIDSTATE
=
[
{
label
:
'待提交
采购竞价单'
,
value
:
-
1
label
:
'待提交
竞价单'
,
value
:
1
},
{
label
:
'待审核
采购竞价单'
,
value
:
1
label
:
'待审核
竞价单'
,
value
:
2
},
{
label
:
'
采购竞价单审核不通过'
,
value
:
2
label
:
'
待提交报价单'
,
value
:
3
},
{
label
:
'待竞价报名'
,
value
:
3
},
{
label
:
'待审核竞价报名'
,
value
:
4
},
{
label
:
'竞价报名审核不通过'
,
value
:
5
},
{
label
:
'待竞价'
,
value
:
99
},
{
label
:
'待确认竞价结果'
,
value
:
99
label
:
'待确认授标结果'
,
value
:
4
},
{
label
:
'已完成'
,
value
:
99
},
{
label
:
'已作废'
,
value
:
99
label
:
'已作废'
,
value
:
'-1'
},
]
/** 价单外部状态 */
export
const
BID_EXTERNALSTATE
=
{
'-1'
:
'作废'
,
99
:
'已完成'
,
1
:
'待提交竞价单'
,
2
:
'待审核竞价单'
,
3
:
'待提交报价单'
,
4
:
'待确认授标结果'
}
/** 价单外部状态颜色 */
export
const
BID_EXTERNALSTATE_COLOR
=
{
'-1'
:
'error'
,
99
:
'success'
,
1
:
'default'
,
2
:
'warning'
,
3
:
'warning'
,
4
:
'warning'
,
}
/** 筛选竞价单内部状态 */
export
const
FILTERINTERNALBIDSTATE
=
[
{
label
:
'待提交审核采购竞价单'
,
value
:
-
1
},
{
label
:
'待审核采购竞价单(一级)'
,
value
:
1
},
{
label
:
'采购竞价单审核不通过(一级)'
,
value
:
2
},
{
label
:
'待审核采购竞价单(二级)'
,
value
:
3
},
{
label
:
'采购竞价单审核不通过(二级)'
,
value
:
4
},
{
label
:
'待提交采购竞价单'
,
value
:
5
},
{
label
:
'已提交采购竞价单'
,
value
:
6
label
:
'待提交审核'
,
value
:
1
},
{
label
:
'待审核
竞价报名'
,
value
:
7
label
:
'待审核
(一级)'
,
value
:
2
},
{
label
:
'
竞价报名审核不通过'
,
value
:
8
label
:
'
待审核(二级)'
,
value
:
3
},
{
label
:
'
已审核竞价报名'
,
value
:
9
label
:
'
待提交报价单'
,
value
:
4
},
{
label
:
'待
管理竞价'
,
value
:
10
label
:
'待
比价'
,
value
:
5
},
{
label
:
'
待提交审核竞价结果'
,
value
:
11
label
:
'
审核通过(一级)'
,
value
:
6
},
{
label
:
'
待审核竞价结果(一级)'
,
value
:
12
label
:
'
审核通过(二级)'
,
value
:
7
},
{
label
:
'
竞价结果审核不通过(一级)'
,
value
:
13
label
:
'
.审核不通过(一级)'
,
value
:
8
},
{
label
:
'
待审核竞价结果(二级)'
,
value
:
14
label
:
'
审核不通过(二级)'
,
value
:
9
},
{
label
:
'竞价结果审核不通过(二级)'
,
value
:
15
},
{
label
:
'待确认竞价结果'
,
value
:
16
},
{
label
:
'已完成'
,
value
:
17
label
:
'已完成'
,
value
:
99
},
{
label
:
'已作废'
,
value
:
99
label
:
'已作废'
,
value
:
'-1'
},
]
\ No newline at end of file
]
/** 报价内部状态 */
export
const
BID_INTERNALSTATE
=
{
'-1'
:
'作废'
,
99
:
'已完成'
,
1
:
'待提交审核'
,
2
:
'待审核(一级)'
,
3
:
'待审核(二级)'
,
4
:
'待提交报价单'
,
5
:
'待比价'
,
6
:
'审核通过(一级)'
,
7
:
'审核通过(二级)'
,
8
:
'审核不通过(一级)'
,
9
:
'审核不通过(二级)'
,
}
/** 报价内部状态颜色 */
export
const
BID_INTERNALSTATE_COLOR
=
{
'-1'
:
'error'
,
99
:
'success'
,
1
:
'default'
,
2
:
'warning'
,
3
:
'warning'
,
4
:
'warning'
,
5
:
'default'
,
6
:
'success'
,
7
:
'success'
,
8
:
'error'
,
9
:
'error'
,
}
\ No newline at end of file
src/pages/transaction/purchaseAbility/onlineBid/readyBid/index.tsx
0 → 100644
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
Button
,
Tag
,
Badge
,
Typography
,
Space
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
{
formatTimeString
}
from
'@/utils'
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
Table
from
'../../components/table'
import
ModalOperate
from
'../../components/modalOperate'
;
import
{
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
const
ReadyBid
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
id
,
setId
]
=
useState
<
number
>
();
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'序号'
,
align
:
'center'
,
dataIndex
:
'id'
,
key
:
'id'
,
render
:
(
t
,
r
,
i
)
=>
++
i
},
{
title
:
'竞价单号/摘要'
,
key
:
'biddingNo'
,
dataIndex
:
'biddingNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
"secondary"
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'采购会员'
,
key
:
'createMemberName'
,
dataIndex
:
'createMemberName'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
EyePreview
url=
{
`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`
}
>
{
text
}
</
EyePreview
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'biddingStartTime'
,
dataIndex
:
'biddingStartTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStartTime
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEndTime
)
}
</
div
>
</>,
width
:
180
},
{
title
:
'竞价开始/结束时间'
,
key
:
'startSignUp'
,
dataIndex
:
'startSignUp'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
startSignUp
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
endSignUp
)
}
</
div
>
</>,
width
:
180
},
{
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
开始竞价
</
Button
>
</>
}
</>
}];
const
handleSubmit
=
()
=>
{
setVisible
(
false
);
ref
.
current
.
reload
();
}
return
(
<>
<
Table
schemaType=
"ONLINEBIDREADYBID_SCHEMA"
columns=
{
columns
}
effects=
"biddingNo"
fetch=
{
PublicApi
.
getPurchaseBiddingList
}
reload=
{
ref
}
/>
<
ModalOperate
id=
{
id
}
title=
"作废原因"
visible=
{
visible
}
modalType=
'abandon'
onOk=
{
()
=>
handleSubmit
()
}
onCancel=
{
()
=>
setVisible
(
false
)
}
fetch=
{
PublicApi
.
postPurchaseBiddingDiscard
}
/>
</>
)
}
export
default
ReadyBid
\ No newline at end of file
src/pages/transaction/purchaseAbility/onlineBid/readySignUp/index.tsx
0 → 100644
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
Button
,
Tag
,
Badge
,
Typography
,
Space
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
{
formatTimeString
}
from
'@/utils'
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
Table
from
'../../components/table'
import
ModalOperate
from
'../../components/modalOperate'
;
import
{
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
const
ReadySignUp
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
id
,
setId
]
=
useState
<
number
>
();
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'序号'
,
align
:
'center'
,
dataIndex
:
'id'
,
key
:
'id'
,
render
:
(
t
,
r
,
i
)
=>
++
i
},
{
title
:
'竞价单号/摘要'
,
key
:
'biddingNo'
,
dataIndex
:
'biddingNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
"secondary"
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'采购会员'
,
key
:
'createMemberName'
,
dataIndex
:
'createMemberName'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
EyePreview
url=
{
`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`
}
>
{
text
}
</
EyePreview
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'biddingStartTime'
,
dataIndex
:
'biddingStartTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStartTime
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEndTime
)
}
</
div
>
</>,
width
:
180
},
{
title
:
'竞价开始/结束时间'
,
key
:
'startSignUp'
,
dataIndex
:
'startSignUp'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
startSignUp
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
endSignUp
)
}
</
div
>
</>,
width
:
180
},
{
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
报名
</
Button
>
</>
}
</>
}];
const
handleSubmit
=
()
=>
{
setVisible
(
false
);
ref
.
current
.
reload
();
}
return
(
<>
<
Table
schemaType=
"ONLINEBIDREADYSIGN_SCHEMA"
columns=
{
columns
}
effects=
"biddingNo"
fetch=
{
PublicApi
.
getPurchaseBiddingList
}
reload=
{
ref
}
/>
<
ModalOperate
id=
{
id
}
title=
"作废原因"
visible=
{
visible
}
modalType=
'abandon'
onOk=
{
()
=>
handleSubmit
()
}
onCancel=
{
()
=>
setVisible
(
false
)
}
fetch=
{
PublicApi
.
postPurchaseBiddingDiscard
}
/>
</>
)
}
export
default
ReadySignUp
\ No newline at end of file
src/pages/transaction/purchaseAbility/onlineBid/search/index.tsx
0 → 100644
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
Button
,
Tag
,
Badge
,
Typography
,
Space
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
{
formatTimeString
}
from
'@/utils'
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
Table
from
'../../components/table'
import
ModalOperate
from
'../../components/modalOperate'
;
import
{
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
const
Search
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
id
,
setId
]
=
useState
<
number
>
();
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'序号'
,
align
:
'center'
,
dataIndex
:
'id'
,
key
:
'id'
,
render
:
(
t
,
r
,
i
)
=>
++
i
},
{
title
:
'竞价单号/摘要'
,
key
:
'biddingNo'
,
dataIndex
:
'biddingNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
"secondary"
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'采购会员'
,
key
:
'createMemberName'
,
dataIndex
:
'createMemberName'
,
render
:
(
text
:
any
,
record
:
any
)
=>
text
},
{
title
:
'竞价开始/结束时间'
,
key
:
'biddingStartTime'
,
dataIndex
:
'biddingStartTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStartTime
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEndTime
)
}
</
div
>
</>,
width
:
180
},
{
title
:
'竞价开始/结束时间'
,
key
:
'startSignUp'
,
dataIndex
:
'startSignUp'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
startSignUp
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
endSignUp
)
}
</
div
>
</>,
width
:
180
},
{
title
:
'是否中标'
,
key
:
'isPrize'
,
dataIndex
:
'isPrize'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
(
text
!==
1
||
text
!==
0
)
?
null
:
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
}
</>,
width
:
180
},
{
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
}];
const
handleSubmit
=
()
=>
{
setVisible
(
false
);
ref
.
current
.
reload
();
}
return
(
<>
<
Table
schemaType=
"ONLINEBIDORDER_SCHEMA"
columns=
{
columns
}
effects=
"biddingNo"
fetch=
{
PublicApi
.
getPurchaseBiddingList
}
reload=
{
ref
}
/>
<
ModalOperate
id=
{
id
}
title=
"作废原因"
visible=
{
visible
}
modalType=
'abandon'
onOk=
{
()
=>
handleSubmit
()
}
onCancel=
{
()
=>
setVisible
(
false
)
}
fetch=
{
PublicApi
.
postPurchaseBiddingDiscard
}
/>
</>
)
}
export
default
Search
\ No newline at end of file
src/pages/transaction/purchaseAbility/purchaseBid/readyAdd/add.tsx
View file @
57693b79
...
...
@@ -2,13 +2,18 @@ import React, { useState, useRef, useEffect } from 'react';
import
{
history
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Tabs
,
Card
,
Button
,
Badge
}
from
'antd'
;
import
ReutrnEle
from
'@/components/ReturnEle'
;
import
Material
from
'../../purchaseInquiry/addInquiry/components/material'
;
import
Demand
from
'../../purchaseInquiry/addInquiry/components/demand'
;
import
Basic
from
'./components/basic'
;
import
BidRules
from
'./components/bidRules'
;
import
BidRequirement
from
'./components/bidRequirement'
;
import
Material
from
'../../purchaseInquiry/addInquiry/components/material'
;
import
Condition
from
'./components/condition'
;
import
Demand
from
'../../purchaseInquiry/addInquiry/components/demand
'
;
import
ReutrnEle
from
'@/components/ReturnEle'
;
import
File
from
'./components/file
'
;
import
{
PostPurchasePurchaseInquiryAddRequest
,
GetPurchasePurchaseInquiryDetailsResponse
...
...
@@ -40,6 +45,8 @@ const AddForm = () => {
const
[
condition
,
setCondition
]
=
useState
<
any
>
({});
/** 需求对接 */
const
[
demand
,
setDemand
]
=
useState
<
any
>
({});
/** 附件 */
const
[
file
,
setfile
]
=
useState
<
any
>
([]);
const
[
badge
,
setbadge
]
=
useState
<
any
>
([
0
,
0
,
0
,
0
,
0
,
0
]);
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
);
...
...
@@ -50,6 +57,8 @@ const AddForm = () => {
const
currentMaterial
=
useRef
<
any
>
({});
const
currentCondition
=
useRef
<
any
>
({});
const
currentDemand
=
useRef
<
any
>
({});
const
currentFile
=
useRef
<
any
>
({});
/** 提交&修改 */
const
handleSubmit
=
async
()
=>
{
...
...
@@ -58,18 +67,23 @@ const AddForm = () => {
const
materialRef
=
await
currentMaterial
.
current
.
get
();
const
conditionRef
=
await
currentCondition
.
current
.
get
();
const
demandRef
=
await
currentDemand
.
current
.
get
();
if
(
basicRef
.
state
&&
materialRef
.
state
&&
conditionRef
.
state
&&
demandRef
.
state
&&
fileRef
.
state
)
{
const
fileRef
=
await
currentFile
.
current
.
get
();
const
ruleRef
=
await
currentRules
.
current
.
get
();
const
requirementRef
=
await
currentRequirement
.
current
.
get
();
if
(
basicRef
.
state
&&
materialRef
.
state
&&
conditionRef
.
state
&&
demandRef
.
state
&&
fileRef
.
state
&&
ruleRef
.
state
&&
requirementRef
.
state
)
{
const
params
:
PostPurchasePurchaseInquiryAddRequest
=
{
memberId
,
memberRoleId
,
memberName
:
name
,
details
:
basicRef
.
data
.
details
,
areas
:
basicRef
.
data
.
requisitionFormAddress
,
priceContrast
:
basicRef
.
data
.
priceContrast
,
purchaseType
:
basicRef
.
data
.
purchaseType
,
isAreas
:
basicRef
.
data
.
isAreas
,
areas
:
basicRef
.
data
.
areas
,
...
materialRef
.
data
,
...
conditionRef
.
data
,
...
demandRef
.
data
,
...
ruleRef
.
data
,
...
requirementRef
.
data
,
urls
:
[...
fileRef
.
data
]
}
let
res
:
{
code
:
number
,
...
...
@@ -77,9 +91,9 @@ const AddForm = () => {
time
:
number
,
}
=
null
;
if
(
id
)
{
res
=
await
PublicApi
.
postPurchase
PurchaseInquiry
Update
({
id
,
...
params
})
res
=
await
PublicApi
.
postPurchase
Bidding
Update
({
id
,
...
params
})
}
else
{
res
=
await
PublicApi
.
postPurchase
PurchaseInquiry
Add
({
...
params
});
res
=
await
PublicApi
.
postPurchase
Bidding
Add
({
...
params
});
}
if
(
res
.
code
!==
1000
)
{
setLoading
(
false
);
...
...
@@ -211,6 +225,12 @@ const AddForm = () => {
onBadge=
{
getError
}
/>
</
TabPane
>
<
TabPane
key=
'7'
tab=
'附件'
forceRender
>
<
File
fetchdata=
{
file
}
currentRef=
{
currentFile
}
/>
</
TabPane
>
</
Tabs
>
</
Card
>
</
PageHeaderWrapper
>
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyAdd/components/basic.tsx
View file @
57693b79
...
...
@@ -10,17 +10,24 @@ import {
Button
,
Typography
}
from
'antd'
;
import
style
from
'./index.less'
;
import
{
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetPurchasePurchaseInquiryDetailsResponse
}
from
'@/services/PurchaseApi/id4177'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
style
from
'./index.less'
;
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_INTERNALSTATE
,
}
from
'../../../constants'
;
import
moment
from
'moment'
;
BID_EXTERNALSTATE
,
BID_INTERNALSTATE
}
from
'../../../constants/purchaseBid'
;
const
{
Option
}
=
Select
;
const
{
Text
}
=
Typography
;
...
...
@@ -38,9 +45,6 @@ interface Iprops {
}
const
BasicInfo
:
React
.
FC
<
Iprops
>
=
(
props
:
any
)
=>
{
const
format
=
(
text
)
=>
{
return
<>
{
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
const
{
currentRef
,
fetchdata
,
onBadge
}
=
props
;
const
[
form
]
=
Form
.
useForm
();
/** 省列表 */
...
...
@@ -180,8 +184,6 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
setcode
([...
code
,
item
.
cityCode
])
form
.
setFieldsValue
({
details
:
fetchdata
.
details
,
purchaseType
:
fetchdata
.
purchaseType
,
priceContrast
:
fetchdata
.
priceContrast
,
[
'province_'
+
index
]:
item
.
provinceCode
,
[
'city_'
+
index
]:
item
.
cityCode
,
});
...
...
@@ -201,7 +203,8 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
name
:
'basic'
,
data
:
{
...
res
,
requisitionFormAddress
,
isAreas
:
1
,
areas
:
[...
requisitionFormAddress
],
},
})
onBadge
(
0
,
0
)
...
...
@@ -296,7 +299,7 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
label=
'单据时间'
name=
'createTime'
>
<
Text
strong
>
{
(
fetchdata
&&
fetchdata
.
createTime
)
&&
format
(
fetchdata
.
createTime
)
}
</
Text
>
<
Text
strong
>
{
(
fetchdata
&&
fetchdata
.
createTime
)
&&
format
TimeString
(
fetchdata
.
createTime
)
}
</
Text
>
</
Form
.
Item
>
<
Form
.
Item
label=
'竞价单号'
...
...
@@ -308,13 +311,13 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
label=
'外部状态'
name=
'externalState'
>
<
Text
type=
"warning"
strong
>
{
(
fetchdata
&&
fetchdata
.
externalState
)
&&
OFFTER
_EXTERNALSTATE
[
fetchdata
.
externalState
]
}
</
Text
>
<
Text
type=
"warning"
strong
>
{
(
fetchdata
&&
fetchdata
.
externalState
)
&&
BID
_EXTERNALSTATE
[
fetchdata
.
externalState
]
}
</
Text
>
</
Form
.
Item
>
<
Form
.
Item
label=
'内部状态'
name=
'interiorState'
>
<
Text
type=
"warning"
strong
>
{
(
fetchdata
&&
fetchdata
.
interiorState
)
&&
OFFTER
_INTERNALSTATE
[
fetchdata
.
interiorState
]
}
</
Text
>
<
Text
type=
"warning"
strong
>
{
(
fetchdata
&&
fetchdata
.
interiorState
)
&&
BID
_INTERNALSTATE
[
fetchdata
.
interiorState
]
}
</
Text
>
</
Form
.
Item
>
</
Form
>
</>
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyAdd/components/bidRequirement.tsx
View file @
57693b79
...
...
@@ -13,11 +13,11 @@ import {
Upload
,
Space
}
from
'antd'
;
import
style
from
'./index.less'
;
import
style
s
from
'./index.less'
;
import
{
UPLOAD_TYPE
}
from
'@/constants'
import
{
UploadOutlined
}
from
'@ant-design/icons'
;
import
{
UploadOutlined
,
DeleteOutlined
,
LinkOutlined
}
from
'@ant-design/icons'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
File
from
'../../../purchaseInquiry/addInquiry/components/file'
;
import
moment
from
'moment'
;
const
{
TextArea
}
=
Input
;
const
layout
:
any
=
{
...
...
@@ -34,19 +34,50 @@ interface Iprops {
}
const
BidRequirement
:
React
.
FC
<
Iprops
>
=
(
props
:
any
)
=>
{
const
{
currentRef
,
fetchdata
,
onBadge
}
=
props
;
const
[
files
,
setFiles
]
=
useState
<
any
>
([]);
const
[
loading
,
setloading
]
=
useState
(
false
);
const
currentFile
=
useRef
<
any
>
({});
const
format
=
(
text
)
=>
{
return
<>
{
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
const
{
currentRef
,
fetchdata
,
onBadge
}
=
props
;
const
[
form
]
=
Form
.
useForm
();
useEffect
(()
=>
{
currentRef
.
current
=
{
get
:
()
=>
new
Promise
((
resolve
:
any
)
=>
{
form
.
validateFields
().
then
(
res
=>
{
let
_formData
=
{
...
res
};
resolve
({
state
:
true
,
name
:
'requirement'
,
data
:
{
startSignUp
:
moment
(
_formData
.
signUpTime
[
0
]).
format
(
'x'
),
endSignUp
:
moment
(
_formData
.
signUpTime
[
1
]).
format
(
'x'
),
demand
:
_formData
.
demand
,
demandUrls
:
files
},
})
onBadge
(
0
,
3
)
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
onBadge
(
error
.
errorFields
.
length
,
3
)
}
})
})
}
})
useEffect
(()
=>
{
fetchdata
.
demandUrls
&&
setFiles
([...
fetchdata
.
demandUrls
])
form
.
setFieldsValue
({
signUpTime
:
[
fetchdata
.
startSignUp
?
moment
(
fetchdata
.
startSignUp
)
:
''
,
fetchdata
.
endSignUp
?
moment
(
fetchdata
.
endSignUp
)
:
''
],
demand
:
fetchdata
.
demand
,
demandUrls
:
fetchdata
.
demandUrls
})
},[
fetchdata
])
/**判断文件类型和大小 */
const
beforeDocUpload
=
(
file
:
any
)
=>
{
const
isLt20M
=
file
.
size
/
1024
/
1024
<
20
;
if
(
!
isLt20M
)
{
message
.
error
(
'上传文件大小不超过 20M!'
);
message
.
error
(
'上传文件大小不超过 20M!'
);
}
return
isLt20M
;
}
...
...
@@ -55,40 +86,65 @@ const BidRequirement: React.FC<Iprops> = (props: any) => {
const
arr
:
any
=
files
;
setloading
(
true
);
if
(
file
.
response
)
{
if
(
file
.
response
.
code
===
1000
)
{
arr
.
push
({
name
:
file
.
name
,
url
:
file
.
response
.
data
})
setloading
(
false
);
}
if
(
file
.
response
.
code
===
1000
)
{
arr
.
push
({
name
:
file
.
name
,
url
:
file
.
response
.
data
})
setloading
(
false
);
}
}
setFiles
([...
arr
])
form
.
setFieldsValue
({
demandUrls
:
[...
arr
]})
}
// 删除附件
const
removeFiles
=
(
index
:
any
)
=>
{
const
arr
=
[...
files
];
arr
.
splice
(
index
,
1
);
setFiles
(
arr
);
form
.
setFieldsValue
({
demandUrls
:
[...
arr
]})
}
return
(
<>
<
Form
{
...
layout
}
form=
{
form
}
className=
{
style
.
form
}
className=
{
style
s
.
revise_style
}
>
<
Form
.
Item
label=
'报名要求时间'
name=
'
details
'
name=
'
signUpTime
'
rules=
{
[{
required
:
true
,
message
:
'报名要求时间'
}]
}
>
<
DatePicker
.
RangePicker
showTime
format=
"YYYY-MM-DD HH:mm:ss"
placeholder=
{
[
'开始时间'
,
'结束时间'
]
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"报名要求"
name=
"
offer
"
name=
"
demand
"
>
<
TextArea
rows=
{
3
}
maxLength=
{
200
}
placeholder=
"最长
1
200个字符,100个汉字"
/>
<
TextArea
rows=
{
3
}
maxLength=
{
200
}
placeholder=
"最长200个字符,100个汉字"
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"报名要求附件"
name=
"file"
name=
"demandUrls"
rules=
{
[{
required
:
true
,
message
:
'请上传报名要求附件'
}]
}
>
<
div
className=
{
styles
.
upload_data
}
>
{
files
.
length
>
0
&&
files
.
map
((
v
,
index
)
=>
(
<
div
key=
{
index
}
className=
{
styles
.
upload_item
}
>
<
div
className=
{
styles
.
upload_left
}
>
<
LinkOutlined
/>
<
span
>
{
v
.
name
}
</
span
>
</
div
>
<
div
className=
{
styles
.
upload_right
}
onClick=
{
()
=>
removeFiles
(
index
)
}
>
<
DeleteOutlined
/>
</
div
>
</
div
>
))
}
</
div
>
<
Upload
action=
"/api/file/file/upload"
data=
{
{
fileType
:
UPLOAD_TYPE
}
}
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyAdd/components/bidRules.tsx
View file @
57693b79
...
...
@@ -13,11 +13,15 @@ import {
Checkbox
,
Space
}
from
'antd'
;
import
style
from
'./index.less'
;
import
{
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
moment
from
'moment'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
styles
from
'./index.less'
;
const
layout
:
any
=
{
colon
:
false
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
...
...
@@ -32,91 +36,138 @@ interface Iprops {
}
const
BidRules
:
React
.
FC
<
Iprops
>
=
(
props
:
any
)
=>
{
const
format
=
(
text
)
=>
{
return
<>
{
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
const
{
currentRef
,
fetchdata
,
onBadge
}
=
props
;
const
[
isStartingPrice
,
setIsStartingPrice
]
=
useState
<
boolean
>
(
true
)
const
[
isTargetPrice
,
setIsTargetPrice
]
=
useState
<
boolean
>
(
true
)
const
[
isMinPrice
,
setIsMinPrice
]
=
useState
<
boolean
>
(
true
)
const
[
isOpenPurchase
,
setIsOpenPurchase
]
=
useState
<
boolean
>
(
false
)
const
[
isOpenRanking
,
setIsOpenRanking
]
=
useState
<
boolean
>
(
false
)
const
[
form
]
=
Form
.
useForm
();
useEffect
(()
=>
{
currentRef
.
current
=
{
get
:
()
=>
new
Promise
((
resolve
:
any
)
=>
{
form
.
validateFields
().
then
(
res
=>
{
let
_formData
=
{...
res
};
resolve
({
state
:
true
,
name
:
'rules'
,
data
:
{
biddingStartTime
:
moment
(
_formData
.
biddingTime
[
0
]).
format
(
'x'
),
biddingEndTime
:
moment
(
_formData
.
biddingTime
[
1
]).
format
(
'x'
),
isStartingPrice
:
_formData
.
isStartingPrice
?
1
:
0
,
isTargetPrice
:
_formData
.
isTargetPrice
?
1
:
0
,
isMinPrice
:
_formData
.
isMinPrice
?
1
:
0
,
isOpenPurchase
:
_formData
.
sOpenPurchase
?
1
:
0
,
isOpenRanking
:
_formData
.
isOpenRanking
?
1
:
0
,
startingPrice
:
_formData
.
startingPrice
,
targetPrice
:
_formData
.
targetPrice
,
allowPurchaseCount
:
_formData
.
allowPurchaseCount
,
minPrice
:
_formData
.
minPrice
,
},
})
onBadge
(
0
,
2
)
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
onBadge
(
error
.
errorFields
.
length
,
2
)
}
})
})
}
},
[])
useEffect
(()
=>
{
form
.
setFieldsValue
({
biddingTime
:
[
fetchdata
.
biddingStartTime
?
moment
(
fetchdata
.
biddingStartTime
)
:
''
,
fetchdata
.
biddingEndTime
?
moment
(
fetchdata
.
biddingEndTime
)
:
''
],
isStartingPrice
:
!!
fetchdata
.
isStartingPrice
,
isTargetPrice
:
!!
fetchdata
.
isTargetPrice
,
isMinPrice
:
!!
fetchdata
.
isMinPrice
,
isOpenPurchase
:
!!
fetchdata
.
isOpenPurchase
,
isOpenRanking
:
!!
fetchdata
.
isOpenRanking
,
startingPrice
:
fetchdata
.
startingPrice
,
targetPrice
:
fetchdata
.
targetPrice
,
allowPurchaseCount
:
fetchdata
.
allowPurchaseCount
,
minPrice
:
fetchdata
.
minPrice
})
},[
fetchdata
])
const
onCheckboxChange
=
(
e
:
{
target
:
{
checked
:
boolean
}
},
func
:
Function
)
=>
{
func
(
e
.
target
.
checked
);
};
return
(
<>
<
Form
{
...
layout
}
form=
{
form
}
className=
{
style
.
form
}
className=
{
style
s
.
form
}
>
<
Form
.
Item
label=
'竞价时间'
name=
'
details
'
name=
'
biddingTime
'
rules=
{
[{
required
:
true
,
message
:
'请选择竞价时间'
}]
}
>
<
DatePicker
.
RangePicker
showTime
format=
"YYYY-MM-DD HH:mm:ss"
placeholder=
{
[
'开始时间'
,
'结束时间'
]
}
/>
</
Form
.
Item
>
<
Form
.
Item
name=
'isStartingPrice'
label=
{
<
Tooltip
placement=
"right"
title=
'初始起拍价,首次报价要低于或等于起拍价'
>
起拍价
<
QuestionCircleOutlined
style=
{
{
marginLeft
:
'5px'
}
}
/></
Tooltip
>
}
>
<
Row
style=
{
{
marginBottom
:
'9px'
}
}
>
<
Checkbox
>
是否有起拍价
</
Checkbox
>
</
Row
>
<
Row
>
<
Input
addonBefore=
{
'¥'
}
/>
</
Row
>
<
Checkbox
checked=
{
isStartingPrice
}
onChange=
{
(
e
)
=>
{
onCheckboxChange
(
e
,
setIsStartingPrice
)
}
}
>
是否有起拍价
</
Checkbox
>
</
Form
.
Item
>
<
Form
.
Item
label=
" "
name=
'startingPrice'
className=
{
styles
.
hidden
}
rules=
{
[{
required
:
true
,
message
:
'请输入起拍价'
}]
}
>
<
Input
addonBefore=
{
'¥'
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
{
<
Tooltip
placement=
"right"
title=
'期望成交价格'
>
目标价
<
QuestionCircleOutlined
style=
{
{
marginLeft
:
'5px'
}
}
/></
Tooltip
>
}
name=
'isTargetPrice'
>
<
Row
style=
{
{
marginBottom
:
'9px'
}
}
>
<
Checkbox
>
是否有目标价
</
Checkbox
>
</
Row
>
<
Row
>
<
Input
addonBefore=
{
'¥'
}
/>
</
Row
>
<
Checkbox
checked=
{
isTargetPrice
}
onChange=
{
(
e
)
=>
{
onCheckboxChange
(
e
,
setIsTargetPrice
)
}
}
>
是否有目标价
</
Checkbox
>
</
Form
.
Item
>
<
Form
.
Item
label=
" "
name=
'targetPrice'
className=
{
styles
.
hidden
}
rules=
{
[{
required
:
true
,
message
:
'请输入目标价'
}]
}
>
<
Input
addonBefore=
{
'¥'
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
{
<
Tooltip
placement=
"right"
title=
'每次报价降价幅度须大于或等于最小价差'
>
最小价差
<
QuestionCircleOutlined
style=
{
{
marginLeft
:
'5px'
}
}
/></
Tooltip
>
}
name=
'isMinPrice'
>
<
Row
style=
{
{
marginBottom
:
'9px'
}
}
>
<
Checkbox
>
是否有最小价差
</
Checkbox
>
</
Row
>
<
Row
>
<
Input
addonBefore=
{
'¥'
}
/>
</
Row
>
<
Checkbox
checked=
{
isMinPrice
}
onChange=
{
(
e
)
=>
{
onCheckboxChange
(
e
,
setIsMinPrice
)
}
}
>
是否有最小价差
</
Checkbox
>
</
Form
.
Item
>
<
Form
.
Item
name=
'minPrice'
label=
" "
className=
{
styles
.
hidden
}
rules=
{
[{
required
:
true
,
message
:
'请输入最小价差'
}]
}
>
<
Input
addonBefore=
{
'¥'
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
{
<
Tooltip
placement=
"right"
title=
'允许每个供应商最多可以报价的次数'
>
允许报价次数
<
QuestionCircleOutlined
style=
{
{
marginLeft
:
'5px'
}
}
/></
Tooltip
>
}
name=
"bidnumber"
name=
'allowPurchaseCount'
rules=
{
[{
required
:
true
,
message
:
'请输入允许报价次数'
}]
}
>
<
Input
/>
</
Form
.
Item
>
<
Form
.
Item
label=
{
<
Tooltip
placement=
"right"
title=
'选择公开当前最低报价,竞价过程中将供应商所报当前最低价在竞价页面即时公开。'
>
公开当前最低报价
<
QuestionCircleOutlined
style=
{
{
marginLeft
:
'5px'
}
}
/></
Tooltip
>
}
name=
'isOpenPurchase'
>
<
Checkbox
>
是否公开当前最低报价
</
Checkbox
>
<
Checkbox
checked=
{
isOpenPurchase
}
onChange=
{
(
e
)
=>
{
onCheckboxChange
(
e
,
setIsOpenPurchase
)
}
}
>
是否公开当前最低报价
</
Checkbox
>
</
Form
.
Item
>
<
Form
.
Item
label=
{
<
Tooltip
placement=
"right"
title=
'选择公开报价排名,竞价过程中将供应商当前报价排名在竞价页面即时公开。'
>
公开报价排名
<
QuestionCircleOutlined
style=
{
{
marginLeft
:
'5px'
}
}
/></
Tooltip
>
}
name=
'isOpenRanking'
>
<
Checkbox
>
是否公开报价排名
</
Checkbox
>
<
Checkbox
checked=
{
isOpenRanking
}
onChange=
{
(
e
)
=>
{
onCheckboxChange
(
e
,
setIsOpenRanking
)
}
}
>
是否公开报价排名
</
Checkbox
>
</
Form
.
Item
>
</
Form
>
</>
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyAdd/components/condition.tsx
View file @
57693b79
...
...
@@ -63,8 +63,7 @@ const Condition: React.FC<Iprops> = (props: any) => {
state
:
true
,
name
:
'condition'
,
data
:
{
deliveryTime
:
moment
(
res
.
deliveryTime
).
format
(
'x'
),
offerEndTime
:
moment
(
res
.
offerEndTime
).
format
(
'x'
),
deliver
:
moment
(
res
.
deliver
).
format
(
'x'
),
logistics
:
res
.
logistics
,
offer
:
res
.
offer
,
otherRequire
:
res
.
otherRequire
,
...
...
@@ -74,10 +73,10 @@ const Condition: React.FC<Iprops> = (props: any) => {
...
selAddress
,
},
})
onBadge
(
0
,
2
)
onBadge
(
0
,
4
)
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
onBadge
(
error
.
errorFields
.
length
,
2
)
onBadge
(
error
.
errorFields
.
length
,
4
)
}
})
})
...
...
@@ -89,9 +88,8 @@ const Condition: React.FC<Iprops> = (props: any) => {
console
.
log
(
fetchdata
)
if
(
fetchdata
)
{
form
.
setFieldsValue
({
deliver
yTime
:
fetchdata
.
deliveryTime
?
moment
(
fetchdata
.
deliveryTime
)
:
undefined
,
deliver
:
fetchdata
.
deliver
?
moment
(
fetchdata
.
deliver
)
:
undefined
,
addressId
:
fetchdata
.
addressId
,
offerEndTime
:
fetchdata
.
offerEndTime
?
moment
(
fetchdata
.
offerEndTime
)
:
undefined
,
offer
:
fetchdata
.
offer
,
paymentType
:
fetchdata
.
paymentType
,
taxes
:
fetchdata
.
taxes
,
...
...
@@ -116,7 +114,7 @@ const Condition: React.FC<Iprops> = (props: any) => {
>
<
Form
.
Item
label=
"交付日期"
name=
"deliver
yTime
"
name=
"deliver"
rules=
{
[{
required
:
true
,
message
:
'请选择支付日期'
}]
}
>
<
DatePicker
style=
{
{
width
:
'100%'
}
}
/>
...
...
@@ -141,7 +139,7 @@ const Condition: React.FC<Iprops> = (props: any) => {
<
TextArea
rows=
{
3
}
maxLength=
{
100
}
placeholder=
"最长100个字符,50个汉字"
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"付款
要求
"
label=
"付款
方式
"
name=
"paymentType"
>
<
TextArea
rows=
{
3
}
maxLength=
{
100
}
placeholder=
"最长100个字符,50个汉字"
/>
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyAdd/components/file.tsx
0 → 100644
View file @
57693b79
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Form
,
Button
,
Upload
,
message
}
from
'antd'
;
import
{
UPLOAD_TYPE
}
from
'@/constants'
import
styles
from
'./index.less'
;
import
{
UploadOutlined
,
DeleteOutlined
,
LinkOutlined
}
from
'@ant-design/icons'
;
const
layout
:
any
=
{
colon
:
false
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
wrapperCol
:
{
span
:
9
},
labelAlign
:
"left"
};
export
interface
IProps
{
fetchdata
:
any
,
currentRef
:
any
}
const
File
:
React
.
FC
<
IProps
>
=
(
props
)
=>
{
const
{
fetchdata
,
currentRef
}
=
props
;
const
[
form
]
=
Form
.
useForm
();
const
[
files
,
setFiles
]
=
useState
([]);
const
[
loading
,
setloading
]
=
useState
(
false
);
/**判断文件类型和大小 */
const
beforeDocUpload
=
(
file
:
any
)
=>
{
const
isLt20M
=
file
.
size
/
1024
/
1024
<
20
;
if
(
!
isLt20M
)
{
message
.
error
(
'上传文件大小不超过 20M!'
);
}
return
isLt20M
;
}
// 上传回调
const
handleChange
=
({
file
})
=>
{
const
arr
:
any
=
files
;
setloading
(
true
);
if
(
file
.
response
)
{
if
(
file
.
response
.
code
===
1000
)
{
arr
.
push
({
name
:
file
.
name
,
url
:
file
.
response
.
data
})
setloading
(
false
);
}
}
setFiles
([...
arr
])
}
// 删除附件
const
removeFiles
=
(
index
:
any
)
=>
{
const
arr
=
[...
files
];
arr
.
splice
(
index
,
1
);
setFiles
(
arr
);
}
// useEffect(() => {
// if (Object.keys(editData).length > 0) {
// setFiles(editData.enclosureUrls)
// }
// }, [editData])
useEffect
(()
=>
{
currentRef
.
current
=
{
get
:
()
=>
new
Promise
((
resolve
:
any
)
=>
{
form
.
validateFields
().
then
(
res
=>
{
resolve
({
state
:
true
,
name
:
'explain'
,
data
:
files
,
})
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
}
})
})
}
})
return
(
<
Form
form=
{
form
}
{
...
layout
}
className=
{
styles
.
revise_style
}
>
<
Form
.
Item
label=
'附件'
name=
'upload'
>
<
div
className=
{
styles
.
upload_data
}
>
{
files
.
length
>
0
&&
files
.
map
((
v
,
index
)
=>
(
<
div
key=
{
index
}
className=
{
styles
.
upload_item
}
>
<
div
className=
{
styles
.
upload_left
}
>
<
LinkOutlined
/>
<
span
>
{
v
.
name
}
</
span
>
</
div
>
<
div
className=
{
styles
.
upload_right
}
onClick=
{
()
=>
removeFiles
(
index
)
}
>
<
DeleteOutlined
/>
</
div
>
</
div
>
))
}
</
div
>
<
Upload
action=
"/api/file/file/upload"
data=
{
{
fileType
:
UPLOAD_TYPE
}
}
showUploadList=
{
false
}
accept=
'.doc,.docx,.pdf,.ppt,.pptx,.xls,.xlsx'
beforeUpload=
{
beforeDocUpload
}
onChange=
{
handleChange
}
>
<
Button
loading=
{
loading
}
icon=
{
<
UploadOutlined
/>
}
>
上传文件
</
Button
>
<
div
style=
{
{
marginTop
:
'8px'
}
}
>
一次上传一个文件,每个附件大小不能超过 20M
</
div
>
</
Upload
>
</
Form
.
Item
>
</
Form
>
)
}
export
default
File
;
src/pages/transaction/purchaseAbility/purchaseBid/readyAdd/components/index.less
View file @
57693b79
...
...
@@ -21,6 +21,17 @@
}
}
}
.hidden{
:global{
.ant-form-item-label-left{
.ant-form-item-required{
&::before{
content: '';
}
}
}
}
}
}
.editableRow {
:global {
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyAdd/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Popconfirm
,
Badge
,
Tag
,
Menu
,
Dropdown
}
from
'antd'
;
import
{
PlusOutlined
,
PlayCircleOutlined
,
PoweroffOutlined
,
CaretDownOutlined
}
from
'@ant-design/icons'
;
import
{
formatTimeString
}
from
'@/utils'
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Popconfirm
,
Badge
,
Tag
,
Menu
,
Dropdown
}
from
'antd'
;
import
{
PlusOutlined
,
PlayCircleOutlined
,
PoweroffOutlined
,
CaretDownOutlined
}
from
'@ant-design/icons'
;
import
{
formatTimeString
}
from
'@/utils'
import
Table
from
'../../components/table'
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_EXTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE
,
OFFTER_INTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE_TYPE
,
CHNUM_TYPE
}
from
'../../constants'
;
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
...
...
@@ -26,21 +24,21 @@ const ReadyAdd = () => {
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'竞价单号/摘要'
,
key
:
'
quotedPrice
No'
,
dataIndex
:
'
quotedPrice
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'
offerEnd
Time'
,
dataIndex
:
'
offerEnd
Time'
,
key
:
'
biddingStart
Time'
,
dataIndex
:
'
biddingStart
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStart
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEnd
Time
)
}
</
div
>
</>,
width
:
180
},
{
...
...
@@ -53,49 +51,46 @@ const ReadyAdd = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
OFFTER_EXTERNALSTATE_COLOR
[
text
]
}
>
{
OFFTER_EXTERNALSTATE
[
text
]
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
OFFTER_INTERNALSTATE_COLOR
[
text
]
}
text=
{
OFFTER_INTERNALSTATE
[
text
]
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
record
.
interiorState
===
OFFTER_INTERNALSTATE_TYPE
.
WAITSUBMITAUDIT_TYPE
&&
(
<>
<
Popconfirm
title=
"确定要提交审核吗?"
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
<
Button
type=
'link'
>
提交
</
Button
>
</
Popconfirm
>
<
Dropdown
overlay=
{
()
=>
(
<
Menu
onClick=
{
(
e
)
=>
handleMenuClick
(
e
)
}
>
<
Menu
.
Item
key=
"1"
>
修改
</
Menu
.
Item
>
<
Menu
.
Item
key=
"2"
>
<>
<
Popconfirm
title=
"确定要提交审核吗?"
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
<
Button
type=
'link'
>
提交
</
Button
>
</
Popconfirm
>
<
Dropdown
overlay=
{
()
=>
(
<
Menu
onClick=
{
(
e
)
=>
handleMenuClick
(
e
)
}
>
<
Menu
.
Item
key=
"1"
>
修改
</
Menu
.
Item
>
<
Menu
.
Item
key=
"2"
>
删除
</
Menu
.
Item
>
</
Menu
>
)
}
>
<
Button
type=
'link'
>
更多
<
CaretDownOutlined
/></
Button
>
</
Dropdown
>
{
/* <Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>修改</Button>
<Popconfirm title="确定要删除吗?" okText="是" cancelText="否" onConfirm={() => fetchDeleteBatch(record.id)}>
<Button type='link'>
删除
</Button>
</Popconfirm> */
}
</>
)
</
Menu
.
Item
>
</
Menu
>
)
}
>
<
Button
type=
'link'
>
更多
<
CaretDownOutlined
/></
Button
>
</
Dropdown
>
{
/* <Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>修改</Button>
<Popconfirm title="确定要删除吗?" okText="是" cancelText="否" onConfirm={() => fetchDeleteBatch(record.id)}>
<Button type='link'>
删除
</Button>
</Popconfirm> */
}
</>
}
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyBid/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Badge
,
Tag
}
from
'antd'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
;
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_EXTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE
,
OFFTER_INTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE_TYPE
,
CHNUM_TYPE
}
from
'../../constants'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
Table
from
'../../components/table'
import
{
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
const
ReadyBid
=
()
=>
{
...
...
@@ -29,21 +28,21 @@ const ReadyBid = () => {
render
:
(
t
,
r
,
i
)
=>
++
i
},
{
title
:
'竞价单号/摘要'
,
key
:
'
quotedPrice
No'
,
dataIndex
:
'
quotedPrice
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'
offerEnd
Time'
,
dataIndex
:
'
offerEnd
Time'
,
key
:
'
biddingStart
Time'
,
dataIndex
:
'
biddingStart
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStart
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEnd
Time
)
}
</
div
>
</>,
width
:
180
},
{
...
...
@@ -56,12 +55,12 @@ const ReadyBid = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
OFFTER_EXTERNALSTATE_COLOR
[
text
]
}
>
{
OFFTER_EXTERNALSTATE
[
text
]
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
OFFTER_INTERNALSTATE_COLOR
[
text
]
}
text=
{
OFFTER_INTERNALSTATE
[
text
]
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
@@ -69,15 +68,12 @@ const ReadyBid = () => {
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
record
.
interiorState
===
OFFTER_INTERNALSTATE_TYPE
.
WAITSUBMITAUDIT_TYPE
&&
(
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
竞价管理
</
Button
>
</>
)
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
竞价管理
</
Button
>
</>
}
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyBid/management/components/triangleTag/index.less
View file @
57693b79
...
...
@@ -4,6 +4,7 @@
color: #FFFFFF;
font-size: 12px;
border-radius: 2px;
padding: 0 2px;
.directionTriangle{
width: 0;
height: 0;
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyConfirm/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Badge
,
Tag
}
from
'antd'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
;
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_EXTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE
,
OFFTER_INTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE_TYPE
,
CHNUM_TYPE
}
from
'../../constants'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
Table
from
'../../components/table'
import
{
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
const
ReadyConfirm
=
()
=>
{
...
...
@@ -29,28 +28,28 @@ const ReadyConfirm = () => {
render
:
(
t
,
r
,
i
)
=>
++
i
},
{
title
:
'竞价单号/摘要'
,
key
:
'
quotedPrice
No'
,
dataIndex
:
'
quotedPrice
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'授标会员'
,
key
:
'
quotedPriceNo
'
,
dataIndex
:
'
quotedPriceNo
'
,
key
:
'
createMemberName
'
,
dataIndex
:
'
createMemberName
'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'
offerEnd
Time'
,
dataIndex
:
'
offerEnd
Time'
,
key
:
'
biddingStart
Time'
,
dataIndex
:
'
biddingStart
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStart
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEnd
Time
)
}
</
div
>
</>,
width
:
180
},
{
...
...
@@ -63,12 +62,12 @@ const ReadyConfirm = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
OFFTER_EXTERNALSTATE_COLOR
[
text
]
}
>
{
OFFTER_EXTERNALSTATE
[
text
]
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
OFFTER_INTERNALSTATE_COLOR
[
text
]
}
text=
{
OFFTER_INTERNALSTATE
[
text
]
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
@@ -76,15 +75,12 @@ const ReadyConfirm = () => {
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
record
.
interiorState
===
OFFTER_INTERNALSTATE_TYPE
.
WAITSUBMITAUDIT_TYPE
&&
(
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
确认
</
Button
>
</>
)
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
确认
</
Button
>
</>
}
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyExamineOne/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Badge
,
Tag
}
from
'antd'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
Table
from
'../../components/table'
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_EXTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE
,
OFFTER_INTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE_TYPE
,
CHNUM_TYPE
}
from
'../../constants'
;
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
import
{
formatTimeString
}
from
'@/utils'
const
ReadyExamineOne
=
()
=>
{
/** 多选操作 */
...
...
@@ -24,21 +25,21 @@ const ReadyExamineOne = () => {
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'竞价单号/摘要'
,
key
:
'
quotedPrice
No'
,
dataIndex
:
'
quotedPrice
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'
offerEnd
Time'
,
dataIndex
:
'
offerEnd
Time'
,
key
:
'
biddingStart
Time'
,
dataIndex
:
'
biddingStart
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStart
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEnd
Time
)
}
</
div
>
</>,
width
:
180
},
{
...
...
@@ -51,12 +52,12 @@ const ReadyExamineOne = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
OFFTER_EXTERNALSTATE_COLOR
[
text
]
}
>
{
OFFTER_EXTERNALSTATE
[
text
]
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
OFFTER_INTERNALSTATE_COLOR
[
text
]
}
text=
{
OFFTER_INTERNALSTATE
[
text
]
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
@@ -64,15 +65,12 @@ const ReadyExamineOne = () => {
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
record
.
interiorState
===
OFFTER_INTERNALSTATE_TYPE
.
WAITSUBMITAUDIT_TYPE
&&
(
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
审核
</
Button
>
</>
)
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
审核
</
Button
>
</>
}
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyExamineResultOne/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Badge
,
Tag
}
from
'antd'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
;
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_EXTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE
,
OFFTER_INTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE_TYPE
,
CHNUM_TYPE
}
from
'../../constants'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
Table
from
'../../components/table'
import
{
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
const
ReadyExamineResultOne
=
()
=>
{
...
...
@@ -24,28 +23,28 @@ const ReadyExamineResultOne = () => {
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'竞价单号/摘要'
,
key
:
'
quotedPrice
No'
,
dataIndex
:
'
quotedPrice
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'授标会员'
,
key
:
'
quotedPriceNo
'
,
dataIndex
:
'
quotedPriceNo
'
,
key
:
'
createMemberId
'
,
dataIndex
:
'
createMemberId
'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text}`
}
>
{
record
.
createMemberName
}
</
EyePreview
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'
offerEnd
Time'
,
dataIndex
:
'
offerEnd
Time'
,
key
:
'
biddingStart
Time'
,
dataIndex
:
'
biddingStart
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStart
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEnd
Time
)
}
</
div
>
</>,
width
:
180
},
{
...
...
@@ -58,28 +57,25 @@ const ReadyExamineResultOne = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
OFFTER_EXTERNALSTATE_COLOR
[
text
]
}
>
{
OFFTER_EXTERNALSTATE
[
text
]
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
OFFTER_INTERNALSTATE_COLOR
[
text
]
}
text=
{
OFFTER_INTERNALSTATE
[
text
]
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
align
:
'center'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
record
.
interiorState
===
OFFTER_INTERNALSTATE_TYPE
.
WAITSUBMITAUDIT_TYPE
&&
(
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
审核
</
Button
>
</>
)
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
审核
</
Button
>
</>
}
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyExamineResultTwo/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Badge
,
Tag
}
from
'antd'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
;
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_EXTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE
,
OFFTER_INTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE_TYPE
,
CHNUM_TYPE
}
from
'../../constants'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
Table
from
'../../components/table'
import
{
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
...
...
@@ -25,28 +24,28 @@ const ReadyExamineResultTwo = () => {
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'竞价单号/摘要'
,
key
:
'
quotedPrice
No'
,
dataIndex
:
'
quotedPrice
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'授标会员'
,
key
:
'
quotedPriceNo
'
,
dataIndex
:
'
quotedPriceNo
'
,
key
:
'
createMemberId
'
,
dataIndex
:
'
createMemberId
'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text}`
}
>
{
record
.
createMemberName
}
</
EyePreview
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'
offerEnd
Time'
,
dataIndex
:
'
offerEnd
Time'
,
key
:
'
biddingStart
Time'
,
dataIndex
:
'
biddingStart
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStart
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEnd
Time
)
}
</
div
>
</>,
width
:
180
},
{
...
...
@@ -59,12 +58,12 @@ const ReadyExamineResultTwo = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
OFFTER_EXTERNALSTATE_COLOR
[
text
]
}
>
{
OFFTER_EXTERNALSTATE
[
text
]
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
OFFTER_INTERNALSTATE_COLOR
[
text
]
}
text=
{
OFFTER_INTERNALSTATE
[
text
]
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
@@ -72,15 +71,12 @@ const ReadyExamineResultTwo = () => {
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
record
.
interiorState
===
OFFTER_INTERNALSTATE_TYPE
.
WAITSUBMITAUDIT_TYPE
&&
(
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
审核
</
Button
>
</>
)
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
审核
</
Button
>
</>
}
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyExamineSignUp/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Badge
,
Tag
}
from
'antd'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
;
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_EXTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE
,
OFFTER_INTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE_TYPE
,
CHNUM_TYPE
}
from
'../../constants'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
Table
from
'../../components/table'
import
{
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
const
ReadyExamineSignUp
=
()
=>
{
...
...
@@ -27,33 +26,33 @@ const ReadyExamineSignUp = () => {
dataIndex
:
'id'
,
key
:
'id'
,
render
:
(
t
,
r
,
i
)
=>
++
i
},
{
},
{
title
:
'竞价单号/摘要'
,
key
:
'
quotedPrice
No'
,
dataIndex
:
'
quotedPrice
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'报名会员/时间'
,
key
:
'
create
Time'
,
dataIndex
:
'
create
Time'
,
key
:
'
signUp
Time'
,
dataIndex
:
'
signUp
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.
quotedPriceNo}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
formatTimeString
(
record
.
create
Time
)
}
</
Text
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.
biddingNo}`
}
>
{
record
.
createMemberName
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
formatTimeString
(
record
.
signUp
Time
)
}
</
Text
>
</
Space
>
)
},
{
title
:
'报名开始/结束时间'
,
key
:
'
offerEndTime
'
,
dataIndex
:
'
offerEndTime
'
,
key
:
'
startSignUp
'
,
dataIndex
:
'
startSignUp
'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
createTime
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
createTime
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
startSignUp
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
endSignUp
)
}
</
div
>
</>,
width
:
180
},
{
...
...
@@ -66,12 +65,12 @@ const ReadyExamineSignUp = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
OFFTER_EXTERNALSTATE_COLOR
[
text
]
}
>
{
OFFTER_EXTERNALSTATE
[
text
]
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
OFFTER_INTERNALSTATE_COLOR
[
text
]
}
text=
{
OFFTER_INTERNALSTATE
[
text
]
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
@@ -79,15 +78,12 @@ const ReadyExamineSignUp = () => {
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
record
.
interiorState
===
OFFTER_INTERNALSTATE_TYPE
.
WAITSUBMITAUDIT_TYPE
&&
(
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
审核
</
Button
>
</>
)
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
审核
</
Button
>
</>
}
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyExamineTwo/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Badge
,
Tag
}
from
'antd'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
Table
from
'../../components/table'
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_EXTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE
,
OFFTER_INTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE_TYPE
,
CHNUM_TYPE
}
from
'../../constants'
;
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
import
{
formatTimeString
}
from
'@/utils'
const
ReadyExamineTwo
=
()
=>
{
/** 多选操作 */
...
...
@@ -24,21 +24,21 @@ const ReadyExamineTwo = () => {
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'竞价单号/摘要'
,
key
:
'
quotedPrice
No'
,
dataIndex
:
'
quotedPrice
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'
offerEnd
Time'
,
dataIndex
:
'
offerEnd
Time'
,
key
:
'
biddingStart
Time'
,
dataIndex
:
'
biddingStart
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStart
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEnd
Time
)
}
</
div
>
</>,
width
:
180
},
{
...
...
@@ -51,12 +51,12 @@ const ReadyExamineTwo = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
OFFTER_EXTERNALSTATE_COLOR
[
text
]
}
>
{
OFFTER_EXTERNALSTATE
[
text
]
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
OFFTER_INTERNALSTATE_COLOR
[
text
]
}
text=
{
OFFTER_INTERNALSTATE
[
text
]
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
@@ -64,15 +64,12 @@ const ReadyExamineTwo = () => {
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
record
.
interiorState
===
OFFTER_INTERNALSTATE_TYPE
.
WAITSUBMITAUDIT_TYPE
&&
(
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
审核
</
Button
>
</>
)
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
审核
</
Button
>
</>
}
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readySubmit/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Badge
,
Tag
}
from
'antd'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
Table
from
'../../components/table'
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_EXTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE
,
OFFTER_INTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE_TYPE
,
CHNUM_TYPE
}
from
'../../constants'
;
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
import
{
formatTimeString
}
from
'@/utils'
const
ReadySubmit
=
()
=>
{
/** 多选操作 */
...
...
@@ -24,21 +24,21 @@ const ReadySubmit = () => {
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'竞价单号/摘要'
,
key
:
'
quotedPrice
No'
,
dataIndex
:
'
quotedPrice
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'
offerEnd
Time'
,
dataIndex
:
'
offerEnd
Time'
,
key
:
'
biddingStart
Time'
,
dataIndex
:
'
biddingStart
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStart
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEnd
Time
)
}
</
div
>
</>,
width
:
180
},
{
...
...
@@ -51,12 +51,12 @@ const ReadySubmit = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
OFFTER_EXTERNALSTATE_COLOR
[
text
]
}
>
{
OFFTER_EXTERNALSTATE
[
text
]
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
OFFTER_INTERNALSTATE_COLOR
[
text
]
}
text=
{
OFFTER_INTERNALSTATE
[
text
]
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
@@ -64,15 +64,12 @@ const ReadySubmit = () => {
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
record
.
interiorState
===
OFFTER_INTERNALSTATE_TYPE
.
WAITSUBMITAUDIT_TYPE
&&
(
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
提交
</
Button
>
</>
)
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
提交
</
Button
>
</>
}
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readySubmitExamineResult/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Badge
,
Tag
}
from
'antd'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
;
import
{
OFFTER_EXTERNALSTATE
,
OFFTER_EXTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE
,
OFFTER_INTERNALSTATE_COLOR
,
OFFTER_INTERNALSTATE_TYPE
,
CHNUM_TYPE
}
from
'../../constants'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
Table
from
'../../components/table'
import
{
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
const
ReadySubmitExamineResult
=
()
=>
{
...
...
@@ -25,28 +24,28 @@ const ReadySubmitExamineResult = () => {
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'竞价单号/摘要'
,
key
:
'
quotedPrice
No'
,
dataIndex
:
'
quotedPrice
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
record.quotedPriceNo
}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${
text
}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'授标会员'
,
key
:
'
quotedPriceNo
'
,
dataIndex
:
'
quotedPriceNo
'
,
key
:
'
createMemberName
'
,
dataIndex
:
'
createMemberName
'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.
quotedPrice
No}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.
bidding
No}`
}
>
{
text
}
</
EyePreview
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'
offerEnd
Time'
,
dataIndex
:
'
offerEnd
Time'
,
key
:
'
biddingStart
Time'
,
dataIndex
:
'
biddingStart
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
create
Time
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
biddingStart
Time
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
biddingEnd
Time
)
}
</
div
>
</>,
width
:
180
},
{
...
...
@@ -59,12 +58,12 @@ const ReadySubmitExamineResult = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
OFFTER_EXTERNALSTATE_COLOR
[
text
]
}
>
{
OFFTER_EXTERNALSTATE
[
text
]
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
OFFTER_INTERNALSTATE_COLOR
[
text
]
}
text=
{
OFFTER_INTERNALSTATE
[
text
]
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
@@ -72,15 +71,12 @@ const ReadySubmitExamineResult = () => {
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
record
.
interiorState
===
OFFTER_INTERNALSTATE_TYPE
.
WAITSUBMITAUDIT_TYPE
&&
(
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
提交审核
</
Button
>
</>
)
<>
<
Button
onClick=
{
()
=>
history
.
push
(
`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`
)
}
type=
'link'
>
提交审核
</
Button
>
</>
}
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/search/index.tsx
View file @
57693b79
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
Table
from
'../../components/table'
import
{
Button
,
Tag
,
Badge
,
Typography
,
Space
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
{
formatTimeString
}
from
'@/utils'
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
INQUIRY_EXTERNALSTATE_COLOR
,
INQUIRY_INTERNALSTATE_COLOR
}
from
'../../constants'
;
import
Table
from
'../../components/table'
import
ModalOperate
from
'../../components/modalOperate'
;
import
{
BID_EXTERNALSTATE_COLOR
,
BID_INTERNALSTATE_COLOR
}
from
'../../constants/purchaseBid'
;
const
{
Text
}
=
Typography
;
const
Search
=
()
=>
{
...
...
@@ -27,39 +30,40 @@ const Search = () => {
render
:
(
t
,
r
,
i
)
=>
++
i
},
{
title
:
'竞价单号/摘要'
,
key
:
'
purchaseInquiry
No'
,
dataIndex
:
'
purchaseInquiry
No'
,
key
:
'
bidding
No'
,
dataIndex
:
'
bidding
No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.
purchaseInquiry
No}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.
bidding
No}`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
"secondary"
>
{
record
.
details
}
</
Text
>
</
Space
>
)
},
{
title
:
'竞价开始/结束时间'
,
key
:
'
delivery
Time'
,
dataIndex
:
'
delivery
Time'
,
key
:
'
biddingStart
Time'
,
dataIndex
:
'
biddingStart
Time'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
inviteTender
.
register
StartTime
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
inviteTender
.
register
EndTime
)
}
</
div
>
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
bidding
StartTime
)
}
</
div
>
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
bidding
EndTime
)
}
</
div
>
</>,
width
:
180
},
{
title
:
'单据时间'
,
key
:
'voucherTime'
,
dataIndex
:
'voucherTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
formatTimeString
(
text
)
key
:
'createTime'
,
dataIndex
:
'createTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
formatTimeString
(
text
),
width
:
180
},
{
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
INQUIRY
_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID
_EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
externalStateName
}
</
Tag
>
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
INQUIRY
_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID
_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
@@ -68,7 +72,6 @@ const Search = () => {
<>
<
Button
type=
'link'
disabled=
{
(
record
.
interiorState
===
-
1
&&
record
.
externalState
===
-
1
)
}
onClick=
{
()
=>
{
setId
(
record
.
id
);
setVisible
(
true
);
...
...
@@ -90,8 +93,8 @@ const Search = () => {
<
Table
schemaType=
"PURCHASEBIDORDER_SCHEMA"
columns=
{
columns
}
effects=
"
purchaseInquiry
No"
fetch=
{
PublicApi
.
getPurchase
PurchaseInquiry
List
}
effects=
"
bidding
No"
fetch=
{
PublicApi
.
getPurchase
Bidding
List
}
reload=
{
ref
}
/>
<
ModalOperate
...
...
@@ -101,7 +104,7 @@ const Search = () => {
modalType=
'abandon'
onOk=
{
()
=>
handleSubmit
()
}
onCancel=
{
()
=>
setVisible
(
false
)
}
fetch=
{
PublicApi
.
postPurchase
PurchaseInquiryCancel
}
fetch=
{
PublicApi
.
postPurchase
BiddingDiscard
}
/>
</>
)
...
...
src/pages/transaction/purchaseAbility/schema/onlineBid.ts
0 → 100644
View file @
57693b79
import
{
ISchema
}
from
'@formily/antd'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
PublicApi
}
from
'@/services/api'
import
{
FILTEREXTERNALBIDSTATE
,
FILTERINTERNALBIDSTATE
}
from
'../constants/onlineBid'
/** 在线竞价 - 采购竞价单查询 */
export
const
ONLINEBIDORDER_SCHEMA
:
ISchema
=
{
type
:
'object'
,
properties
:
{
megalayout
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
properties
:
{
purchaseInquiryNo
:
{
type
:
'string'
,
"x-component"
:
"Search"
,
"x-mega-props"
:
{
},
"x-component-props"
:
{
placeholder
:
'竞价单号'
,
align
:
'flex-left'
,
}
}
}
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
"x-component"
:
"flex-layout"
,
"x-component-props"
:
{
rowStyle
:
{
justifyContent
:
'flex-start'
,
flexWrap
:
'nowrap'
},
colStyle
:
{
//改变间隔
marginRight
:
20
}
},
properties
:
{
PRO_LAYOUT
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-mega-props"
:
{
span
:
5
},
"x-component-props"
:
{
inline
:
true
},
properties
:
{
details
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'竞价单摘要'
,
}
},
memberName
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'采购会员'
,
}
},
"[startTime,endTime]"
:
{
type
:
'string'
,
"x-component"
:
"dateSelect"
,
"x-component-props"
:
{
placeholder
:
'报名开始时间'
,
}
},
externalState
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'外部状态'
,
style
:
{
width
:
160
}
},
enum
:
FILTEREXTERNALBIDSTATE
},
interiorState
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'内部状态'
,
style
:
{
width
:
160
}
},
enum
:
FILTERINTERNALBIDSTATE
},
}
},
sumbit
:
{
"x-component"
:
'Submit'
,
"x-mega-props"
:
{
span
:
1
},
"x-component-props"
:
{
children
:
'查询'
}
}
}
}
}
}
/** 在线竞价 - 待竞价报名 */
export
const
ONLINEBIDREADYSIGN_SCHEMA
:
ISchema
=
{
type
:
'object'
,
properties
:
{
megalayout
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-component-props"
:
{
grid
:
true
},
properties
:
{
biddingNo
:
{
type
:
'string'
,
"x-component"
:
"Search"
,
"x-mega-props"
:
{
},
"x-component-props"
:
{
placeholder
:
'竞价单号'
}
}
}
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
"x-component"
:
"flex-layout"
,
"x-component-props"
:
{
rowStyle
:
{
flexWrap
:
'nowrap'
},
colStyle
:
{
marginLeft
:
20
}
},
properties
:
{
PRO_LAYOUT
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-mega-props"
:
{
span
:
5
},
"x-component-props"
:
{
inline
:
true
},
properties
:
{
details
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'竞价单摘要'
}
},
memberName
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'采购会员'
,
}
},
"[startTime,endTime]"
:
{
type
:
'string'
,
"x-component"
:
"dateSelect"
,
"x-component-props"
:
{
placeholder
:
'报名开始时间'
,
}
},
}
},
sumbit
:
{
"x-component"
:
'Submit'
,
"x-mega-props"
:
{
span
:
1
},
"x-component-props"
:
{
children
:
'查询'
}
}
}
}
}
}
/** 在线竞价 - 待竞价报名 */
export
const
ONLINEBIDREADYBID_SCHEMA
:
ISchema
=
{
type
:
'object'
,
properties
:
{
megalayout
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-component-props"
:
{
grid
:
true
},
properties
:
{
biddingNo
:
{
type
:
'string'
,
"x-component"
:
"Search"
,
"x-mega-props"
:
{
},
"x-component-props"
:
{
placeholder
:
'竞价单号'
}
}
}
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
"x-component"
:
"flex-layout"
,
"x-component-props"
:
{
rowStyle
:
{
flexWrap
:
'nowrap'
},
colStyle
:
{
marginLeft
:
20
}
},
properties
:
{
PRO_LAYOUT
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-mega-props"
:
{
span
:
5
},
"x-component-props"
:
{
inline
:
true
},
properties
:
{
details
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'竞价单摘要'
}
},
memberName
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'采购会员'
,
}
},
"[startTime,endTime]"
:
{
type
:
'string'
,
"x-component"
:
"dateSelect"
,
"x-component-props"
:
{
placeholder
:
'竞价开始时间'
,
}
},
}
},
sumbit
:
{
"x-component"
:
'Submit'
,
"x-mega-props"
:
{
span
:
1
},
"x-component-props"
:
{
children
:
'查询'
}
}
}
}
}
}
\ No newline at end of file
src/pages/transaction/purchaseAbility/schema/purchaseBid.ts
View file @
57693b79
...
...
@@ -11,7 +11,7 @@ export const PURCHASEBIDORDER_SCHEMA: ISchema = {
type
:
'object'
,
"x-component"
:
'mega-layout'
,
properties
:
{
purchaseInquiry
No
:
{
bidding
No
:
{
type
:
'string'
,
"x-component"
:
"Search"
,
"x-mega-props"
:
{
...
...
@@ -114,7 +114,7 @@ export const PURCHASEBIDREADYADD_SCHEMA: ISchema = {
children
:
"{{controllerBtns}}"
}
},
purchaseInquiry
No
:
{
bidding
No
:
{
type
:
'string'
,
"x-component"
:
"Search"
,
"x-mega-props"
:
{
...
...
@@ -185,7 +185,7 @@ export const PURCHASEBIDOSIGNUP_SCHEMA: ISchema = {
type
:
'object'
,
"x-component"
:
'mega-layout'
,
properties
:
{
purchaseInquiry
No
:
{
bidding
No
:
{
type
:
'string'
,
"x-component"
:
"Search"
,
"x-mega-props"
:
{
...
...
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