Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈智峰
jinfa-platform
Commits
f54f30b2
Commit
f54f30b2
authored
May 19, 2021
by
卢均锐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 采购竞价&在线竞价 对接接口,修改字段 ,业务逻辑 ,增加组件
parent
010e89ab
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
445 additions
and
225 deletions
+445
-225
index.tsx
...nts/detail/components/bidCommonLayout/filesItem/index.tsx
+8
-3
index.less
...y/components/detail/components/bidCommonLayout/index.less
+1
-0
index.tsx
...ty/components/detail/components/bidCommonLayout/index.tsx
+2
-2
index.tsx
...ty/components/detail/components/bidDetailLayout/index.tsx
+7
-4
index.tsx
...s/detail/components/lowestQuotationRecordLayout/index.tsx
+7
-6
index.tsx
...components/detail/components/recordComontLayout/index.tsx
+2
-2
index.tsx
.../components/detail/components/tableCommonLayout/index.tsx
+33
-6
onlineBid.ts
src/pages/transaction/purchaseAbility/constants/onlineBid.ts
+0
-0
purchaseBid.ts
...ages/transaction/purchaseAbility/constants/purchaseBid.ts
+68
-28
index.less
...chaseAbility/onlineBid/detail/components/thank/index.less
+67
-0
index.tsx
...rchaseAbility/onlineBid/detail/components/thank/index.tsx
+40
-0
index.tsx
...es/transaction/purchaseAbility/onlineBid/detail/index.tsx
+30
-37
index.less
...chaseAbility/onlineBid/readyBid/detail/history/index.less
+85
-61
index.tsx
...rchaseAbility/onlineBid/readyBid/detail/history/index.tsx
+20
-8
index.tsx
.../transaction/purchaseAbility/onlineBid/readyBid/index.tsx
+2
-2
index.tsx
...ansaction/purchaseAbility/onlineBid/readySignUp/index.tsx
+3
-3
index.tsx
...es/transaction/purchaseAbility/onlineBid/search/index.tsx
+3
-3
index.tsx
...ty/purchaseBid/components/confirmBidResultModal/index.tsx
+2
-2
add.tsx
.../transaction/purchaseAbility/purchaseBid/readyAdd/add.tsx
+3
-2
index.tsx
...ransaction/purchaseAbility/purchaseBid/readyAdd/index.tsx
+15
-19
index.tsx
...ransaction/purchaseAbility/purchaseBid/readyBid/index.tsx
+2
-2
index.tsx
...agement/components/statusBox/detailBottomDrawer/index.tsx
+8
-4
index.tsx
...action/purchaseAbility/purchaseBid/readyConfirm/index.tsx
+3
-3
index.tsx
...ion/purchaseAbility/purchaseBid/readyExamineOne/index.tsx
+2
-2
index.tsx
...rchaseAbility/purchaseBid/readyExamineResultOne/index.tsx
+2
-2
index.tsx
...rchaseAbility/purchaseBid/readyExamineResultTwo/index.tsx
+2
-2
index.tsx
.../purchaseAbility/purchaseBid/readyExamineSignUp/index.tsx
+2
-2
index.tsx
...ion/purchaseAbility/purchaseBid/readyExamineTwo/index.tsx
+2
-2
index.tsx
...saction/purchaseAbility/purchaseBid/readySubmit/index.tsx
+2
-2
index.tsx
...aseAbility/purchaseBid/readySubmitExamineResult/index.tsx
+9
-6
detail.tsx
...transaction/purchaseAbility/purchaseBid/search/detail.tsx
+11
-8
index.tsx
.../transaction/purchaseAbility/purchaseBid/search/index.tsx
+2
-2
No files found.
src/pages/transaction/purchaseAbility/components/detail/components/bidCommonLayout/filesItem/index.tsx
View file @
f54f30b2
...
...
@@ -2,7 +2,11 @@ import React from 'react';
import
{
Typography
}
from
'antd'
;
import
{
LinkOutlined
}
from
'@ant-design/icons'
;
const
FilesItem
=
(
props
:
any
)
=>
{
interface
FilesItemProps
{
files
?:
any
}
const
FilesItem
:
React
.
FC
<
FilesItemProps
>
=
(
props
:
any
)
=>
{
const
{
files
}
=
props
;
if
(
files
&&
files
.
length
>
0
)
{
return
(
...
...
@@ -17,10 +21,10 @@ const FilesItem = (props: any) => {
)
})
)
}
else
{
}
else
{
return
'-'
}
}
export
default
FilesItem
\ No newline at end of file
src/pages/transaction/purchaseAbility/components/detail/components/bidCommonLayout/index.less
View file @
f54f30b2
...
...
@@ -2,6 +2,7 @@
background-color: #FAFBFC;
padding: 6px;
display: flex;
margin-bottom: 16px;
.box{
flex: 1;
display: flex;
...
...
src/pages/transaction/purchaseAbility/components/detail/components/bidCommonLayout/index.tsx
View file @
f54f30b2
...
...
@@ -60,7 +60,7 @@ const BidCommonLayout: React.FC<BidCommonLayoutProps> = (props: any) => {
<
div
className=
{
selfStyles
.
pieItem
}
key=
{
key
}
>
<
PieItem
/>
<
div
className=
{
selfStyles
.
box
}
>
<
div
className=
{
selfStyles
.
title
}
>
中标金额(含税)
:
</
div
>
<
div
className=
{
selfStyles
.
title
}
>
{
child
.
label
}
:
</
div
>
<
div
className=
{
selfStyles
.
price
}
>
¥114,000.00
</
div
>
</
div
>
</
div
>
...
...
@@ -100,7 +100,7 @@ const BidCommonLayout: React.FC<BidCommonLayoutProps> = (props: any) => {
</
div
>
<
div
className=
{
selfStyles
.
baseItem
}
>
<
h5
className=
{
selfStyles
.
label
}
>
附件:
</
h5
>
<
h5
className=
{
selfStyles
.
content
}
><
FilesItem
/></
h5
>
<
h5
className=
{
selfStyles
.
content
}
><
FilesItem
files=
{
effect
.
returnUrls
}
/></
h5
>
</
div
>
</
Col
>
</
Row
>
...
...
src/pages/transaction/purchaseAbility/components/detail/components/bidDetailLayout/index.tsx
View file @
f54f30b2
...
...
@@ -24,10 +24,12 @@ const BidDetailLayout: React.FC<BidDetailLayoutProps> = (props: any) => {
const
{
awardProcess
=
[],
materiels
=
[],
isOpenPurchase
,
isOpenRanking
}
=
detail
;
const
[
showMore
,
setShowMore
]
=
useState
<
boolean
>
(
false
);
const
[
activeItem
,
setActiveItem
]
=
useState
<
any
>
(
awardProcess
?.[
0
]
||
{
detailss
:
[]
});
const
[
activeIndex
,
setActiveIndex
]
=
useState
<
any
>
(
awardProcess
?.[
0
]
||
{
detailss
:
[]
});
const
dataSource
=
showMore
?
[...
activeItem
.
detailss
].
splice
(
0
,
4
)
:
activeItem
.
detailss
;
useEffect
(()
=>
{
awardProcess
&&
setActiveItem
(
awardProcess
?.[
0
]
||
{
detailss
:
[]
})
awardProcess
&&
setActiveIndex
(
awardProcess
?.[
0
]
?
0
:
''
)
},
[
detail
])
const
columns
:
ColumnType
<
any
>
[]
=
[
...
...
@@ -76,10 +78,11 @@ const BidDetailLayout: React.FC<BidDetailLayoutProps> = (props: any) => {
},
]
const
chooseItem
=
(
item
:
any
)
=>
{
if
(
i
tem
.
id
!==
activeItem
.
id
)
{
const
chooseItem
=
(
item
:
any
,
index
:
number
)
=>
{
if
(
i
ndex
!==
activeIndex
)
{
setShowMore
(
false
);
setActiveItem
(
item
);
setActiveIndex
(
index
)
}
}
...
...
@@ -93,8 +96,8 @@ const BidDetailLayout: React.FC<BidDetailLayoutProps> = (props: any) => {
<
Row
gutter=
{
[
8
,
8
]
}
style=
{
{
marginBottom
:
'10px'
}
}
>
{
awardProcess
?.
map
((
item
,
index
)
=>
{
return
(
<
Col
span=
{
7
}
key=
{
item
.
id
}
onClick=
{
()
=>
{
chooseItem
(
item
)
}
}
>
<
BtnItem
btnType=
{
btnType
}
detail=
{
{
...
item
,
isOpenPurchase
,
isOpenRanking
}
}
active=
{
i
tem
.
id
===
activeItem
.
id
}
/>
<
Col
span=
{
7
}
key=
{
item
.
id
}
onClick=
{
()
=>
{
chooseItem
(
item
,
index
)
}
}
>
<
BtnItem
btnType=
{
btnType
}
detail=
{
{
...
item
,
isOpenPurchase
,
isOpenRanking
}
}
active=
{
i
ndex
===
activeIndex
}
/>
</
Col
>
)
})
}
...
...
src/pages/transaction/purchaseAbility/components/detail/components/lowestQuotationRecordLayout/index.tsx
View file @
f54f30b2
...
...
@@ -20,11 +20,12 @@ export interface TableCommonLayoutProps {
id
?:
number
,
number
?:
number
,
fetch
?:
()
=>
Promise
<
unknown
>
,
extra
?:
React
.
ReactNode
extra
?:
React
.
ReactNode
,
effect
?:
any
}
const
LowestQuotationRecord
:
React
.
FC
<
TableCommonLayoutProps
>
=
(
props
:
any
)
=>
{
const
{
layoutId
,
layoutTitle
,
id
,
number
,
fetch
,
extra
}
=
props
;
const
{
layoutId
,
layoutTitle
,
id
,
number
,
fetch
,
extra
,
effect
}
=
props
;
const
currentRef
=
useRef
({});
const
columns
=
[
...
...
@@ -53,7 +54,7 @@ const LowestQuotationRecord: React.FC<TableCommonLayoutProps> = (props: any) =>
},
{
title
:
'含税/税率'
,
dataIndex
:
'
purchaseCount
'
,
dataIndex
:
'
isTax
'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
Text
type=
'secondary'
>
{
transforType
[
text
]
}
</
Text
>
...
...
@@ -63,12 +64,12 @@ const LowestQuotationRecord: React.FC<TableCommonLayoutProps> = (props: any) =>
},
{
title
:
'单价(含税)'
,
dataIndex
:
'
purchaseCount
'
,
dataIndex
:
'
unitPrice
'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
text
}
</
Text
>
},
{
title
:
'金额(含税)'
,
dataIndex
:
'p
urchaseCount
'
,
dataIndex
:
'p
rice
'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
text
}
</
Text
>
},
];
...
...
@@ -93,7 +94,7 @@ const LowestQuotationRecord: React.FC<TableCommonLayoutProps> = (props: any) =>
</
div
>
<
div
className=
{
selfStyles
.
baseItem
}
>
<
h5
className=
{
selfStyles
.
label
}
>
报价总额(含税):
</
h5
>
<
h5
className=
{
selfStyles
.
content
}
></
h5
>
<
h5
className=
{
selfStyles
.
content
}
>
{
effect
.
sumAwardPrice
}
</
h5
>
</
div
>
<
StandardTable
currentRef=
{
currentRef
}
...
...
src/pages/transaction/purchaseAbility/components/detail/components/recordComontLayout/index.tsx
View file @
f54f30b2
...
...
@@ -44,7 +44,7 @@ const RecordLayout: React.FC<ProgressProps> = (props: any) => {
title
:
'状态'
,
key
:
'state'
,
dataIndex
:
'state'
,
render
:
(
_text
:
any
,
_record
:
any
)
=>
<
Tag
color=
{
externalColors
[
_text
]
}
>
{
_record
.
stateName
}
</
Tag
>
render
:
(
_text
:
any
,
_record
:
any
)
=>
<
Tag
color=
{
externalColors
(
_text
)
}
>
{
_record
.
stateName
}
</
Tag
>
},
{
title
:
'操作'
,
...
...
@@ -93,7 +93,7 @@ const RecordLayout: React.FC<ProgressProps> = (props: any) => {
title
:
'状态'
,
key
:
'state'
,
dataIndex
:
'state'
,
render
:
(
_text
:
any
,
_record
:
any
)
=>
<
Tag
color=
{
internalColors
[
_text
]
}
>
{
_record
.
stateName
}
</
Tag
>
render
:
(
_text
:
any
,
_record
:
any
)
=>
<
Tag
color=
{
internalColors
(
_text
)
}
>
{
_record
.
stateName
}
</
Tag
>
},
{
title
:
'操作'
,
...
...
src/pages/transaction/purchaseAbility/components/detail/components/tableCommonLayout/index.tsx
View file @
f54f30b2
...
...
@@ -2,6 +2,8 @@ import React, { useRef, useState } from 'react';
import
{
StandardTable
}
from
'god'
;
import
Card
from
'../../../card'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Badge
,
Tag
}
from
'antd'
;
const
{
Text
}
=
Typography
;
export
interface
TableCommonLayoutProps
{
layoutId
?:
string
,
...
...
@@ -11,6 +13,11 @@ export interface TableCommonLayoutProps {
fetch
?:
()
=>
Promise
<
unknown
>
,
}
const
transforType
=
{
1
:
'是'
,
0
:
'否'
}
const
TableCommonLayout
:
React
.
FC
<
TableCommonLayoutProps
>
=
(
props
:
any
)
=>
{
const
{
layoutId
,
layoutTitle
,
id
,
number
,
fetch
}
=
props
;
const
currentRef
=
useRef
({});
...
...
@@ -20,6 +27,12 @@ const TableCommonLayout: React.FC<TableCommonLayoutProps> = (props: any) => {
title
:
'物料编号/名称'
,
key
:
'number'
,
dataIndex
:
'number'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
Text
type=
'secondary'
>
{
text
}
</
Text
>
<
Text
type=
'secondary'
>
{
record
.
name
}
</
Text
>
</
Space
>
)
},
{
title
:
'规格型号'
,
...
...
@@ -40,21 +53,35 @@ const TableCommonLayout: React.FC<TableCommonLayoutProps> = (props: any) => {
title
:
'采购数量/单位'
,
key
:
'unit'
,
dataIndex
:
'unit'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
Text
type=
'secondary'
>
{
record
.
purchaseCount
}
</
Text
>
<
Text
type=
'secondary'
>
{
text
}
</
Text
>
</
Space
>
)
},
{
title
:
'含税/税率'
,
key
:
'purchaseCount'
,
dataIndex
:
'purchaseCount'
,
key
:
'isTax'
,
dataIndex
:
'isTax'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
Text
type=
'secondary'
>
{
transforType
[
text
]
}
</
Text
>
<
Text
type=
'secondary'
>
{
`${record.taxRate ? `
$
{
record
.
taxRate
}
%
` : ''}`
}
</
Text
>
</
Space
>
)
},
{
title
:
'单价(含税)'
,
key
:
'purchaseCount'
,
dataIndex
:
'purchaseCount'
,
key
:
'unitPrice'
,
dataIndex
:
'unitPrice'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
text
}
</
Text
>
},
{
title
:
'金额(含税)'
,
key
:
'purchaseCount'
,
dataIndex
:
'purchaseCount'
,
key
:
'price'
,
dataIndex
:
'price'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
text
}
</
Text
>
},
];
...
...
src/pages/transaction/purchaseAbility/constants/onlineBid.ts
deleted
100644 → 0
View file @
010e89ab
src/pages/transaction/purchaseAbility/constants/purchaseBid.ts
View file @
f54f30b2
/** 价单外部状态颜色 */
export
const
BID_EXTERNALSTATE_COLOR
=
{
'-1'
:
'error'
,
99
:
'success'
,
1
:
'default'
,
2
:
'warning'
,
3
:
'warning'
,
4
:
'warning'
,
5
:
'default'
,
6
:
'processing'
,
7
:
'error'
,
8
:
'error'
,
export
const
BID_EXTERNALSTATE_COLOR
=
(
text
)
=>
{
switch
(
Number
(
text
))
{
case
-
1
:
case
7
:
case
8
:
return
'error'
;
case
2
:
case
3
:
case
4
:
return
'warning'
;
case
6
:
return
'processing'
;
case
99
:
return
'success'
;
default
:
return
'default'
}
}
// export const BID_EXTERNALSTATE_COLOR = {
// '-1': 'error',
// 99: 'success',
// 1: 'default',
// 2: 'warning',
// 3: 'warning',
// 4: 'warning',
// 5: 'default',
// 6: 'processing',
// 7: 'error',
// 8: 'error',
// }
/** 报价内部状态颜色 */
export
const
BID_INTERNALSTATE_COLOR
=
{
'-1'
:
'error'
,
99
:
'success'
,
1
:
'default'
,
2
:
'warning'
,
3
:
'warning'
,
4
:
'processing'
,
8
:
'error'
,
9
:
'error'
,
10
:
'default'
,
11
:
'error'
,
12
:
'processing'
,
13
:
'warning'
,
14
:
'warning'
,
15
:
'warning'
,
}
\ No newline at end of file
export
const
BID_INTERNALSTATE_COLOR
=
(
text
)
=>
{
switch
(
Number
(
text
))
{
case
-
1
:
case
8
:
case
9
:
case
11
:
return
'error'
;
case
2
:
case
3
:
case
13
:
case
14
:
case
15
:
return
'warning'
;
case
4
:
case
12
:
return
'processing'
;
case
99
:
return
'success'
;
default
:
return
'default'
;
}
}
// export const BID_INTERNALSTATE_COLOR = {
// '-1': 'error',
// 99: 'success',
// 1: 'default',
// 2: 'warning',
// 3: 'warning',
// 4: 'processing',
// 8: 'error',
// 9: 'error',
// 10: 'default',
// 11: 'error',
// 12: 'processing',
// 13: 'warning',
// 14: 'warning',
// 15: 'warning',
// }
\ No newline at end of file
src/pages/transaction/purchaseAbility/onlineBid/detail/components/thank/index.less
0 → 100644
View file @
f54f30b2
.thankModal {
:global {
.ant-modal-header {
display: none;
}
.ant-modal-content {
height: 440px;
background: url("../../../../../../../assets/imgs/thankLetterBg.png") center center no-repeat;
// background: url('../../../../assets/imgs/thankLetterBg.png') center center no-repeat;
}
.ant-modal-footer {
display: none;
}
}
.thankLetter {
// width: 660px;
// height: 440px;
h2 {
text-align: center;
font-size: 24px;
font-weight: 500;
color: #303133;
// height: 36px;
// line-height: 36px;
padding-top: 20px;
}
h4 {
text-align: center;
font-size: 16px;
font-weight: 500;
color: #C0C4CC;
line-height: 16px;
padding: 0 24px;
}
p {
font-size: 14px;
font-weight: 400;
color: #303133;
line-height: 24px;
padding: 0 24px;
}
.name {
font-weight: 500;
text-align: left;
padding: 0 24px;
}
.company {
text-align: right;
padding: 0 24px;
margin-top: 100px;
}
.time {
text-align: right;
padding: 0 24px;
}
}
}
src/pages/transaction/purchaseAbility/onlineBid/detail/components/thank/index.tsx
0 → 100644
View file @
f54f30b2
import
React
,
{
useMemo
}
from
'react'
import
{
Row
,
Col
,
Tag
,
Modal
}
from
'antd'
import
moment
from
'moment'
;
import
{
getAuth
}
from
'@/utils/auth'
;
import
style
from
'./index.less'
interface
ThankItemProps
{
visible
:
boolean
,
detail
?:
any
,
onOk
?:
Function
}
const
ThankItem
:
React
.
FC
<
ThankItemProps
>
=
(
props
:
any
)
=>
{
const
{
visible
,
detail
,
onOk
}
=
props
;
const
userInfo
=
useMemo
(()
=>
getAuth
(),
[
detail
]);
return
(
<
Modal
title=
"感谢函"
visible=
{
visible
}
onOk=
{
onOk
}
onCancel=
{
onOk
}
width=
{
660
}
className=
{
style
.
thankModal
}
>
<
div
className=
{
style
.
thankLetter
}
>
<
h2
>
感谢函
</
h2
>
<
h4
>
THANKS LETTER
</
h4
>
<
p
className=
{
style
.
name
}
>
尊敬的
{
userInfo
.
name
}
</
p
>
<
p
>
{
detail
.
content
}
</
p
>
<
p
className=
{
style
.
company
}
>
{
detail
.
createMemberName
}
</
p
>
<
p
className=
{
style
.
time
}
>
{
moment
().
format
(
'YYYY-MM-DD'
)
}
</
p
>
</
div
>
</
Modal
>
)
}
export
default
ThankItem
;
\ No newline at end of file
src/pages/transaction/purchaseAbility/onlineBid/detail/index.tsx
View file @
f54f30b2
...
...
@@ -18,6 +18,8 @@ import LowestQuotationRecordLayout from '../../components/detail/components/lowe
import
BidProgressDrawer
from
'../../components/detail/components/bidProgressDrawer'
;
import
QuotationDetailsDrawer
from
'../../components/detail/components/quotationDetailsDrawer'
;
import
ThankModal
from
'./components/thank'
;
import
{
BID_EXTERNALSTATE_COLOR
,
...
...
@@ -31,8 +33,8 @@ const transforType = {
const
TABLINK
=
[
{
id
:
'progressLayout'
,
title
:
'流转进度'
},
//
{ id: 'winBidMsgLayout', title: '中标通知' },
//
{ id: 'winBidResultLayout', title: '中标结果' },
{
id
:
'winBidMsgLayout'
,
title
:
'中标通知'
},
{
id
:
'winBidResultLayout'
,
title
:
'中标结果'
},
{
id
:
'basicLayout'
,
title
:
'基本信息'
},
{
id
:
'materialLayout'
,
title
:
'采购物料'
},
{
id
:
'bidRulesLayout'
,
title
:
'竞价规则'
},
...
...
@@ -40,7 +42,6 @@ const TABLINK = [
{
id
:
'conditionLayout'
,
title
:
'交易条件'
},
{
id
:
'fileLayout'
,
title
:
'附件'
},
{
id
:
'quotationRecordLayout'
,
title
:
'最低报价记录'
},
{
id
:
'resultLayout'
,
title
:
'授标结果'
},
{
id
:
'recordLayout'
,
title
:
'流转记录'
},
]
...
...
@@ -48,7 +49,8 @@ const SearchDetail = () => {
const
{
query
:
{
id
,
number
number
,
isPrize
},
pathname
,
}
=
history
.
location
;
...
...
@@ -75,6 +77,8 @@ const SearchDetail = () => {
const
[
conditionEffect
,
setConditionEffect
]
=
useState
<
any
>
([]);
// 授标结果
const
[
awardResult
,
setAwardResult
]
=
useState
<
any
>
({});
const
[
thankVisAble
,
seTthankVisAble
]
=
useState
<
boolean
>
(
false
);
const
handleProgressEffect
=
(
data
:
any
)
=>
{
let
_list
=
[
...
...
@@ -90,8 +94,8 @@ const SearchDetail = () => {
col
:
[
{
label
:
'竞价编号'
,
extra
:
data
.
biddingNo
,
type
:
'text'
},
{
label
:
'竞价摘要'
,
extra
:
data
.
details
,
type
:
'text'
},
{
label
:
'外部状态'
,
extra
:
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
data
.
externalState
]
}
>
{
data
.
externalStateName
}
</
Tag
>,
type
:
'text'
},
{
label
:
'内部状态'
,
extra
:
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
data
.
interiorState
]
}
text=
{
data
.
interiorStateName
}
/>,
type
:
'text'
},
{
label
:
'外部状态'
,
extra
:
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
(
data
.
externalState
)
}
>
{
data
.
externalStateName
}
</
Tag
>,
type
:
'text'
},
{
label
:
'内部状态'
,
extra
:
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
data
.
interiorState
)
}
text=
{
data
.
interiorStateName
}
/>,
type
:
'text'
},
]
},
{
...
...
@@ -114,12 +118,13 @@ const SearchDetail = () => {
setResultEffect
([
{
col
:
[
{
label
:
'中标公示'
,
extra
:
''
,
type
:
'text'
}
{
label
:
'中标金额(含税)'
,
extra
:
data
.
sumAwardPrice
,
type
:
'text'
},
{
label
:
'中标理由'
,
extra
:
'价格最低'
,
type
:
'text'
},
]
},
{
col
:
[
{
label
:
'中标
通知'
,
extra
:
''
,
type
:
'text'
}
{
label
:
'中标
公示'
,
extra
:
data
.
awardResults
,
type
:
'text'
},
]
}
])
...
...
@@ -218,7 +223,11 @@ const SearchDetail = () => {
handleRulesEffect
(
data
);
handleSignUpEffect
(
data
);
handleConditionEffect
(
data
);
handleAwardResult
(
data
)
// handleAwardResult(data)
handleResultEffect
(
data
);
if
(
data
.
externalState
===
999
&&
isPrize
!==
0
&&
isPrize
)
{
seTthankVisAble
(
true
)
}
})
PublicApi
.
getPurchaseOnlineBiddingProcess
({
...
params
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
...
...
@@ -235,20 +244,7 @@ const SearchDetail = () => {
const
_returnWinBidMsgLayout
=
()
=>
{
return
(
<
BidCommonLayout
layoutId=
"winBidMsgLayout"
title=
"中标通知"
effect=
{
[
{
col
:
[
{
label
:
'中标公示'
,
extra
:
'温州龙昌手袋有限公司《进口头层黄牛皮荔枝纹采购》评标工作已经结束,中标人已经确定。现将中标结果公布如下:中标供应商:广州万富皮具有限中心(中标含税总金额¥114000.00),江门华飞皮具有限公司(中标含税总金额:¥38000.00)。中标理由:综合评分。'
,
type
:
'text'
},
]
},
{
col
:
[
{
label
:
'中标公示'
,
extra
:
'温州龙昌手袋有限公司《进口头层黄牛皮荔枝纹采购》评标工作已经结束,中标人已经确定。现将中标结果公布如下:中标供应商:广州万富皮具有限中心(中标含税总金额¥114000.00),江门华飞皮具有限公司(中标含税总金额:¥38000.00)。中标理由:综合评分。'
,
type
:
'text'
},
]
}
]
}
/>
<
BidCommonLayout
layoutId=
"winBidMsgLayout"
title=
"中标通知"
effect=
{
resultEffect
}
/>
)
}
...
...
@@ -257,6 +253,9 @@ const SearchDetail = () => {
<
TableCommonLayout
layoutId=
'winBidResultLayout'
layoutTitle=
'中标结果'
id=
{
id
}
number=
{
number
}
fetch=
{
PublicApi
.
getPurchaseOnlineBiddingAwardResultsBidding
}
/>
)
}
...
...
@@ -306,6 +305,7 @@ const SearchDetail = () => {
layoutId=
'quotationRecordLayout'
layoutTitle=
'最低报价记录'
fetch=
{
PublicApi
.
getPurchaseOnlineBiddingMinimumBidding
}
effect=
{
dataSource
}
extra=
{
<
Button
type=
'link'
onClick=
{
()
=>
{
setProgressVisible
(
true
)
}
}
>
查看竞价过程
</
Button
>
}
/>
)
...
...
@@ -316,17 +316,6 @@ const SearchDetail = () => {
setQuotationDetailsVisible
(
true
);
}
const
_returnResultLayout
=
()
=>
{
return
(
<
BidCommonLayout
layoutId=
"resultLayout"
title=
"授标结果"
layoutType=
'result'
checkDetailFunc=
{
_openQuotationDetailsDrawer
}
effect=
{
awardResult
}
/>
)
}
return
(
...
...
@@ -337,8 +326,8 @@ const SearchDetail = () => {
components=
{
<
Fragment
>
<
ProgressLayout
effect=
{
progressEffect
}
/>
{
/* {_returnWinBidMsgLayout()} */
}
{
/* {_returnWinBidResultLayout()} */
}
{
_returnWinBidMsgLayout
()
}
{
_returnWinBidResultLayout
()
}
<
BidCommonLayout
layoutId=
"basicLayout"
title=
"基本信息"
effect=
{
basicEffect
}
/>
{
_returnMaterialLayout
()
}
{
_returnBidRulesLayout
()
}
...
...
@@ -346,7 +335,6 @@ const SearchDetail = () => {
{
_returnConditionLayout
()
}
{
_returnFileLayout
()
}
{
_returnLowestQuotationRecordLayout
()
}
{
_returnResultLayout
()
}
<
RecordComontLayout
externalColors=
{
BID_EXTERNALSTATE_COLOR
}
internalColors=
{
BID_INTERNALSTATE_COLOR
}
/>
</
Fragment
>
}
...
...
@@ -365,6 +353,11 @@ const SearchDetail = () => {
visible=
{
quotationDetailsVisible
}
onClose=
{
()
=>
setQuotationDetailsVisible
(
false
)
}
/>
<
ThankModal
visible=
{
thankVisAble
}
detail=
{
dataSource
}
onOk=
{
()
=>
{
seTthankVisAble
(
false
)
}
}
/>
</
Context
.
Provider
>
)
}
...
...
src/pages/transaction/purchaseAbility/onlineBid/readyBid/detail/history/index.less
View file @
f54f30b2
.history {
border-radius: 8px;
overflow: hidden;
.historyHeader {
height: 209px;
background: -webkit-linear-gradient(top, rgba(91, 143, 249, 1), #FFFFFF);
padding: 16px;
h5 {
font-size: 14px;
color: #FFFFFF;
margin-bottom: 24px;
}
}
.box {
color: #909399;
font-size: 12px;
text-align: center;
position: relative;
background-color: #fff;
border-radius: 8px;
overflow: hidden;
.historyHeader {
height: 209px;
background: -webkit-linear-gradient(top, rgba(91,143,249, 1), #FFFFFF);
padding: 16px;
padding: 16px 0;
h5 {
font-size: 14px;
color: #FFFFFF;
margin-bottom: 24px;
}
.icon {
width: 24px;
position: absolute;
left: 16px;
top: 16px;
}
.badge {
width: 16px;
height: 16px;
background: #EBECF0;
border-radius: 12px;
text-align: center;
line-height: 16px;
color: #909399;
font-size: 12px;
display: inline-block;
position: absolute;
left: 16px;
top: 16px;
}
.box{
color: #909399;
.rightPosition {
position: absolute;
right: 16px;
top: 20px;
}
p {
margin: 0;
}
.currentPrice {
color: #303133;
font-size: 24px;
margin: 6px 0 12px 0;
span {
font-size: 12px;
text-align: center;
position: relative;
background-color: #fff;
border-radius: 8px;
padding: 16px 0;
.icon{
width: 24px;
position: absolute;
left: 16px;
top: 16px;
}
.rightPosition{
position: absolute;
right: 16px;
top: 20px;
}
p{
margin: 0;
}
.currentPrice{
color: #303133;
font-size: 24px;
margin: 6px 0 12px 0;
span{
font-size: 12px;
margin-right: 8px;
}
}
.row{
display: flex;
flex-direction: row;
justify-content: center;
.col{
flex: 1;
span{
color: #303133;
}
}
}
margin-right: 8px;
}
}
.historyFootter{
background-color: #FFFFFF;
padding: 16px;
h5{
font-size: 14px;
color: #303133;
margin-bottom: 16px;
.row {
display: flex;
flex-direction: row;
justify-content: center;
.col {
flex: 1;
span {
color: #303133;
}
}
}
}
.historyFootter {
background-color: #FFFFFF;
padding: 16px;
h5 {
font-size: 14px;
color: #303133;
margin-bottom: 16px;
}
}
\ No newline at end of file
}
}
src/pages/transaction/purchaseAbility/onlineBid/readyBid/detail/history/index.tsx
View file @
f54f30b2
...
...
@@ -2,6 +2,8 @@ import React, { useMemo, useState } from 'react';
import
{
Row
,
Col
,
Tabs
,
Button
}
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
TrendTag
from
'../../../../components/detail/components/trendTag'
;
...
...
@@ -15,27 +17,37 @@ interface HistoryItemProps {
const
HistoryItem
:
React
.
FC
<
HistoryItemProps
>
=
(
props
:
any
)
=>
{
const
{
detail
}
=
props
;
const
mapData
=
detail
.
offerLogs
?
[...
detail
.
offerLogs
].
splice
(
0
,
3
)
:
[];
const
currentMinPrice
=
useMemo
(()
=>
{
if
(
!
detail
.
isOpenPurchase
)
{
return
'不公开'
const
_returnBadge
=
()
=>
{
if
(
detail
.
isOpenRanking
)
{
return
null
;
}
else
{
return
detail
?.
offerLogs
!=
null
?
(
detail
?.
offerLogs
[
0
]?.
minPrice
?
`
${
detail
?.
offerLogs
[
0
]?.
minPrice
}
` : '-') : '-'
const
_number
=
Number
(
detail
?.
ranking
);
switch
(
_number
)
{
case
1
:
return
<
img
src=
{
level1
}
alt=
"第一名"
className=
{
styles
.
icon
}
/>;
case
2
:
return
<
img
src=
{
level1
}
alt=
"第二名"
className=
{
styles
.
icon
}
/>;
case
3
:
return
<
img
src=
{
level1
}
alt=
"第三名"
className=
{
styles
.
icon
}
/>;
default
:
return
<
div
className=
{
styles
.
badge
}
>
{
_number
}
</
div
>
}
}
}, [detail])
}
return
(
<
div
className=
{
styles
.
history
}
>
<
div
className=
{
styles
.
historyHeader
}
>
<
h5
>
报价历史
</
h5
>
<
div
className=
{
styles
.
box
}
>
<img src={level1} alt="第一名" className={styles.icon} />
{
_returnBadge
()
}
<
div
className=
{
styles
.
rightPosition
}
>
{
detail
?.
offerRatio
?
<
TrendTag
ratio=
{
detail
?.
offerRatio
}
/>
:
''
}
</
div
>
<
p
>
本次报价金额
</
p
>
<
p
className=
{
styles
.
currentPrice
}
><
span
>
¥
</
span
>
{
detail
?.
offerPrice
||
'-'
}
</
p
>
<
div
className=
{
styles
.
row
}
>
<div className={styles.col} style={{ borderRight: '1px solid #EBECF0' }}>当前最低价:<span>{
currentMinPrice
}</span></div>
<
div
className=
{
styles
.
col
}
style=
{
{
borderRight
:
'1px solid #EBECF0'
}
}
>
当前最低价:
<
span
>
{
detail
?.
minLowPrice
??
'-'
}
</
span
></
div
>
<
div
className=
{
styles
.
col
}
>
报价次数:
<
span
>
{
detail
?.
offerCount
?
detail
?.
offerCount
:
'-'
}
</
span
></
div
>
</
div
>
</
div
>
...
...
src/pages/transaction/purchaseAbility/onlineBid/readyBid/index.tsx
View file @
f54f30b2
...
...
@@ -68,12 +68,12 @@ const ReadyBid = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
src/pages/transaction/purchaseAbility/onlineBid/readySignUp/index.tsx
View file @
f54f30b2
...
...
@@ -67,12 +67,12 @@ const ReadySignUp = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
@@ -82,7 +82,7 @@ const ReadySignUp = () => {
onClick=
{
()
=>
{
history
.
push
(
`/memberCenter/procurementAbility/onlineBid/readySignUp/signUp?id=${record.id}&number=${record.biddingNo}`
)}
}
type=
'link'
>
报名
{
record
.
button
===
3
?
'报名'
:
'重新报名'
}
</
Button
>
}];
...
...
src/pages/transaction/purchaseAbility/onlineBid/search/index.tsx
View file @
f54f30b2
...
...
@@ -32,7 +32,7 @@ const Search = () => {
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/onlineBid/search/detail?id=${record.id}&number=${record.biddingNo}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/procurementAbility/onlineBid/search/detail?id=${record.id}&number=${record.biddingNo}
&isPrize=${record.isPrize}
`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
"secondary"
>
{
record
.
details
}
</
Text
>
</
Space
>
)
...
...
@@ -71,12 +71,12 @@ const Search = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
}];
return
(
...
...
src/pages/transaction/purchaseAbility/purchaseBid/components/confirmBidResultModal/index.tsx
View file @
f54f30b2
...
...
@@ -54,8 +54,8 @@ const ConfirmBidResultModal: React.FC<ConfirmBidResultModalProps> = (props: any)
}
const
_returnDefaultAwardResults
=
useMemo
(()
=>
{
return
record
?
`
${
record
.
MemberName
}
《
${
record
.
details
}
》竞价工作已经结束,中标人已经确定。现将中标结果公布如下:
中标供应商:
${
record
.
M
emberName
}
(中标总金额(含税):
${
record
.
sumAwardPrice
}
)。
return
record
?
`
${
record
?.
purchaseMemberName
??
record
?.
create
MemberName
}
《
$
{
record
.
details
}
》竞价工作已经结束,中标人已经确定。现将中标结果公布如下:
中标供应商:
$
{
record
.
m
emberName
}
(中标总金额(含税):
$
{
record
.
sumAwardPrice
}
)。
中标理由:价格最低
` : '';
}, [record])
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyAdd/add.tsx
View file @
f54f30b2
import
React
,
{
useState
,
useRef
,
useEffect
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
SaveOutlined
}
from
'@ant-design/icons'
;
import
{
Tabs
,
Card
,
Button
,
Badge
}
from
'antd'
;
import
ReutrnEle
from
'@/components/ReturnEle'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
Material
from
'../../purchaseInquiry/addInquiry/components/material'
;
import
Demand
from
'../../purchaseInquiry/addInquiry/components/demand'
;
...
...
@@ -14,7 +16,6 @@ import BidRequirement from './components/bidRequirement';
import
Condition
from
'./components/condition'
;
import
File
from
'./components/file'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
{
TabPane
}
=
Tabs
;
...
...
@@ -198,7 +199,7 @@ const AddForm = () => {
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReutrnEle
description=
"返回"
/>
}
extra=
{
<
Button
loading=
{
loading
}
type=
"primary"
onClick=
{
handleSubmit
}
>
保存
</
Button
>
<
Button
loading=
{
loading
}
type=
"primary"
onClick=
{
handleSubmit
}
>
<
SaveOutlined
/>
保存
</
Button
>
}
>
<
Card
>
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyAdd/index.tsx
View file @
f54f30b2
...
...
@@ -51,34 +51,30 @@ const ReadyAdd = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
{
<>
<
Popconfirm
title=
"确定要提交审核吗?"
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
<
Button
type=
'link'
>
提交
</
Button
>
</
Popconfirm
>
<
Dropdown
overlay=
{
()
=>
(
<
Menu
onClick=
{
(
e
)
=>
handleMenuClick
(
e
,
record
)
}
>
<
Menu
.
Item
key=
"1"
>
编辑
</
Menu
.
Item
>
<
Menu
.
Item
key=
"2"
>
删除
</
Menu
.
Item
>
</
Menu
>
)
}
>
<
Button
type=
'link'
>
更多
<
CaretDownOutlined
/></
Button
>
</
Dropdown
>
</>
}
{
record
.
button
===
1
&&
<
Popconfirm
title=
"确定要提交审核吗?"
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
<
Button
type=
'link'
>
提交
</
Button
>
</
Popconfirm
>
}
<
Dropdown
overlay=
{
()
=>
(
<
Menu
onClick=
{
(
e
)
=>
handleMenuClick
(
e
,
record
)
}
>
<
Menu
.
Item
key=
"1"
>
编辑
</
Menu
.
Item
>
<
Menu
.
Item
key=
"2"
disabled=
{
!
(
record
.
button
===
1
)
}
>
删除
</
Menu
.
Item
>
</
Menu
>
)
}
>
<
Button
type=
'link'
>
更多
<
CaretDownOutlined
/></
Button
>
</
Dropdown
>
</>
}];
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyBid/index.tsx
View file @
f54f30b2
...
...
@@ -55,12 +55,12 @@ const ReadyBid = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyBid/management/components/statusBox/detailBottomDrawer/index.tsx
View file @
f54f30b2
...
...
@@ -20,6 +20,7 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => {
const
{
visible
,
onClose
,
detail
}
=
props
;
const
{
awardProcess
=
[],
materiels
=
[],
offerCount
,
isOpenPurchase
,
isOpenRanking
}
=
detail
;
const
[
activeItem
,
setActiveItem
]
=
useState
<
any
>
(
''
);
const
[
activeIndex
,
setActiveIndex
]
=
useState
<
any
>
(
''
);
const
[
dataSource
,
setDataSource
]
=
useState
<
any
>
(
materiels
);
const
[
dataSource2
,
setDataSource2
]
=
useState
<
any
>
(
materiels
);
useEffect
(()
=>
{
...
...
@@ -54,7 +55,7 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => {
},
{
title
:
'含税/税率'
,
dataIndex
:
'is
HasTaxName
'
,
dataIndex
:
'is
Tax
'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Input
value=
{
record
.
taxRate
}
onChange=
{
(
e
)
=>
{
_changeTax
(
record
,
e
.
target
.
value
)
}
}
addonAfter=
"%"
/>
},
{
...
...
@@ -74,6 +75,7 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => {
const
_i
=
_dataSource
.
findIndex
((
item
)
=>
item
.
id
===
record
.
id
);
let
_item
=
{
...
_dataSource
[
_i
]
};
_item
.
taxRate
=
value
;
_item
.
isTax
=
value
!=
0
?
1
:
0
;
_dataSource
[
_i
]
=
_item
;
setDataSource
(
_dataSource
);
setDataSource2
(
_dataSource
)
...
...
@@ -98,12 +100,14 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => {
return
dataSource2
?.
reduce
((
total
,
cur
)
=>
total
+
(
cur
.
price
||
0
),
0
)
||
0
;
},
[
dataSource2
])
const
chooseItem
=
(
item
?:
any
)
=>
{
const
chooseItem
=
(
item
?:
any
,
index
?:
number
)
=>
{
if
(
item
)
{
setActiveItem
(
item
);
setActiveIndex
(
index
);
setDataSource
(
item
.
detailss
);
}
else
{
setActiveItem
(
''
);
setActiveIndex
(
''
)
setDataSource
(
dataSource2
);
}
}
...
...
@@ -141,8 +145,8 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => {
</
Col
>
{
awardProcess
?.
map
((
item
,
index
)
=>
{
return
(
<
Col
span=
{
7
}
key=
{
`BtnItem_${item.id}`
}
onClick=
{
()
=>
{
chooseItem
(
item
)
}
}
>
<
BtnItem
btnType=
{
2
}
detail=
{
{
...
item
,
isOpenPurchase
,
isOpenRanking
}
}
active=
{
i
tem
.
id
===
activeItem
.
id
}
/>
<
Col
span=
{
7
}
key=
{
`BtnItem_${item.id}`
}
onClick=
{
()
=>
{
chooseItem
(
item
,
index
)
}
}
>
<
BtnItem
btnType=
{
2
}
detail=
{
{
...
item
,
isOpenPurchase
,
isOpenRanking
}
}
active=
{
i
ndex
===
activeIndex
}
/>
</
Col
>
)
})
}
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyConfirm/index.tsx
View file @
f54f30b2
...
...
@@ -36,7 +36,7 @@ const ReadyConfirm = () => {
dataIndex
:
'biddingNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/purchaseBid/readyConfirm/detail?id=${record.id}&number=${text}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/purchaseBid/readyConfirm/detail?id=${record.id}&number=${text}
&memberName=${record.memberName}
`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
...
...
@@ -66,12 +66,12 @@ const ReadyConfirm = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyExamineOne/index.tsx
View file @
f54f30b2
...
...
@@ -55,12 +55,12 @@ const ReadyExamineOne = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyExamineResultOne/index.tsx
View file @
f54f30b2
...
...
@@ -60,12 +60,12 @@ const ReadyExamineResultOne = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyExamineResultTwo/index.tsx
View file @
f54f30b2
...
...
@@ -61,12 +61,12 @@ const ReadyExamineResultTwo = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyExamineSignUp/index.tsx
View file @
f54f30b2
...
...
@@ -68,12 +68,12 @@ const ReadyExamineSignUp = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyExamineTwo/index.tsx
View file @
f54f30b2
...
...
@@ -54,12 +54,12 @@ const ReadyExamineTwo = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readySubmit/index.tsx
View file @
f54f30b2
...
...
@@ -54,12 +54,12 @@ const ReadySubmit = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readySubmitExamineResult/index.tsx
View file @
f54f30b2
...
...
@@ -24,6 +24,7 @@ const ReadySubmitExamineResult = () => {
const
ref
=
useRef
<
any
>
({});
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
const
[
id
,
setId
]
=
useState
<
number
>
();
const
[
buttonType
,
setButtonType
]
=
useState
<
number
>
();
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'竞价单号/摘要'
,
...
...
@@ -31,7 +32,7 @@ const ReadySubmitExamineResult = () => {
dataIndex
:
'biddingNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Space
direction=
'vertical'
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/purchaseBid/readySubmitExamineResult/detail?id=${record.id}&number=${text}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/purchaseBid/readySubmitExamineResult/detail?id=${record.id}&number=${text}
&button=${record.button}
`
}
>
{
text
}
</
EyePreview
>
<
Text
type=
'secondary'
>
{
record
.
details
}
</
Text
>
</
Space
>
)
...
...
@@ -61,22 +62,23 @@ const ReadySubmitExamineResult = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
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=
{
()
=>
handleSubmit
(
record
.
id
)
}
type=
'link'
>
提交审核
</
Button
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
disabled=
{
!
(
record
.
button
===
1
||
record
.
button
===
2
)
}
onClick=
{
()
=>
handleSubmit
(
record
.
id
,
record
.
button
)
}
type=
'link'
>
{
record
.
button
===
1
?
'修改'
:
'提交审核'
}
</
Button
>
}];
const
handleSubmit
=
(
id
:
number
)
=>
{
const
handleSubmit
=
(
id
:
number
,
type
:
number
)
=>
{
setId
(
id
);
setButtonType
(
type
);
setVisible
(
true
);
}
...
...
@@ -86,7 +88,8 @@ const ReadySubmitExamineResult = () => {
signUpIdea
,
urls
}
PublicApi
.
postPurchaseBiddingSubmitExamineBiddingReturn
(
_params
).
then
(
res
=>
{
const
_fetch
=
buttonType
===
1
?
PublicApi
.
postPurchaseBiddingUpdateBiddingReturn
:
PublicApi
.
postPurchaseBiddingSubmitExamineBiddingReturn
;
_fetch
(
_params
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setVisible
(
false
);
ref
.
current
.
reload
();
...
...
src/pages/transaction/purchaseAbility/purchaseBid/search/detail.tsx
View file @
f54f30b2
...
...
@@ -53,7 +53,9 @@ const SearchDetail = () => {
query
:
{
id
,
number
,
signUpId
//报名ID
signUpId
,
//报名ID
button
,
//按钮类型
memberName
//中标供应商
},
pathname
,
}
=
history
.
location
;
...
...
@@ -116,8 +118,8 @@ const SearchDetail = () => {
col
:
[
{
label
:
'竞价编号'
,
extra
:
data
.
biddingNo
,
type
:
'text'
},
{
label
:
'竞价摘要'
,
extra
:
data
.
details
,
type
:
'text'
},
{
label
:
'外部状态'
,
extra
:
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
[
data
.
externalState
]
}
>
{
data
.
externalStateName
}
</
Tag
>,
type
:
'text'
},
{
label
:
'内部状态'
,
extra
:
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
[
data
.
interiorState
]
}
text=
{
data
.
interiorStateName
}
/>,
type
:
'text'
},
{
label
:
'外部状态'
,
extra
:
<
Tag
color=
{
BID_EXTERNALSTATE_COLOR
(
data
.
externalState
)
}
>
{
data
.
externalStateName
}
</
Tag
>,
type
:
'text'
},
{
label
:
'内部状态'
,
extra
:
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
data
.
interiorState
)
}
text=
{
data
.
interiorStateName
}
/>,
type
:
'text'
},
]
},
{
...
...
@@ -220,7 +222,8 @@ const SearchDetail = () => {
setAwardResult
(
{
list
:
data
.
awardsFruits
||
[],
signUpIdea
:
data
.
signUpIdea
signUpIdea
:
data
.
signUpIdea
,
returnUrls
:
data
.
returnUrls
}
)
}
...
...
@@ -297,7 +300,7 @@ const SearchDetail = () => {
case
'readySubmitExamineResult'
:
return
(
<
Button
onClick=
{
()
=>
setUploadBidResultVisible
(
true
)
}
type=
'primary'
>
<
CheckCircleOutlined
/>
提交
竞价结果
<
CheckCircleOutlined
/>
{
button
===
1
?
'修改'
:
'提交'
}
竞价结果
</
Button
>
)
case
'readyConfirm'
:
...
...
@@ -561,8 +564,8 @@ const SearchDetail = () => {
signUpIdea
,
urls
}
cons
ole
.
log
(
_params
)
PublicApi
.
postPurchaseBiddingSubmitExamineBiddingReturn
(
_params
).
then
(
res
=>
{
cons
t
_fetch
=
button
===
1
?
PublicApi
.
postPurchaseBiddingUpdateBiddingReturn
:
PublicApi
.
postPurchaseBiddingSubmitExamineBiddingReturn
;
_fetch
(
_params
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
history
.
goBack
()
}
...
...
@@ -603,7 +606,7 @@ const SearchDetail = () => {
/>
<
ConfirmBidResultModal
title=
"确认竞价结果"
record=
{
dataSource
}
record=
{
{
...
dataSource
,
memberName
:
memberName
}
}
visible=
{
confirmBidResultVisible
}
onCancel=
{
()
=>
setConfirmBidResultVisible
(
false
)
}
fetch=
{
PublicApi
.
postPurchaseBiddingStayConfirmBidding
}
...
...
src/pages/transaction/purchaseAbility/purchaseBid/search/index.tsx
View file @
f54f30b2
...
...
@@ -58,12 +58,12 @@ const Search = () => {
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
BID_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=
{
BID_INTERNALSTATE_COLOR
[
text
]
}
text=
{
record
.
interiorStateName
}
/>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Badge
status=
{
BID_INTERNALSTATE_COLOR
(
text
)
}
text=
{
record
.
interiorStateName
}
/>
},
{
title
:
'操作'
,
key
:
'operate'
,
...
...
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