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
b4c3d4b2
Commit
b4c3d4b2
authored
May 21, 2021
by
卢均锐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 采购竞价&在线竞价 整理代码 价格增加格式化
parent
7ba97f17
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
139 additions
and
73 deletions
+139
-73
purchaseBid.ts
config/routes/procurementRoute/purchaseBid.ts
+11
-11
index.tsx
...y/components/detail/components/bidDetailBtnItem/index.tsx
+7
-7
index.tsx
.../components/detail/components/bidProgressDrawer/index.tsx
+5
-2
index.less
.../detail/components/lowestQuotationRecordLayout/index.less
+30
-13
index.tsx
...s/detail/components/lowestQuotationRecordLayout/index.tsx
+25
-4
index.tsx
...onents/detail/components/quotationDetailsDrawer/index.tsx
+3
-2
index.tsx
.../components/detail/components/tableCommonLayout/index.tsx
+5
-2
index.tsx
...seAbility/components/detail/components/trendTag/index.tsx
+11
-6
index.tsx
...es/transaction/purchaseAbility/onlineBid/detail/index.tsx
+5
-4
index.tsx
...rchaseAbility/onlineBid/readyBid/detail/history/index.tsx
+5
-2
index.tsx
...ction/purchaseAbility/onlineBid/readyBid/detail/index.tsx
+8
-7
index.less
...urchaseAbility/onlineBid/readyBid/detail/offer/index.less
+1
-0
index.tsx
...purchaseAbility/onlineBid/readyBid/detail/offer/index.tsx
+3
-2
index.tsx
...ty/purchaseBid/components/confirmBidResultModal/index.tsx
+4
-1
index.tsx
.../transaction/purchaseAbility/purchaseBid/detail/index.tsx
+4
-3
index.tsx
...purchaseBid/readyBid/management/components/rank/index.tsx
+2
-1
index.tsx
...chaseBid/readyBid/management/components/rankRow/index.tsx
+2
-1
index.tsx
...agement/components/statusBox/detailBottomDrawer/index.tsx
+4
-2
index.tsx
...aseBid/readyBid/management/components/statusBox/index.tsx
+4
-3
No files found.
config/routes/procurementRoute/purchaseBid.ts
View file @
b4c3d4b2
...
...
@@ -20,7 +20,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/search/detail'
,
name
:
'采购竞价单详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
@@ -48,7 +48,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/readyAdd/detail'
,
name
:
'待新增采购竞价单详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
@@ -62,7 +62,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/readyExamineOne/detail'
,
name
:
'待审核采购竞价单(一级)详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
@@ -76,7 +76,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/readyExamineTwo/detail'
,
name
:
'待审核采购竞价单(二级)详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
@@ -90,7 +90,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/readySubmit/detail'
,
name
:
'待提交采购竞价单详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
@@ -104,7 +104,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/readyExamineSignUp/detail'
,
name
:
'待审核竞价报名详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
@@ -126,7 +126,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/readyBid/detail'
,
name
:
'待竞价详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
@@ -140,7 +140,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/readySubmitExamineResult/detail'
,
name
:
'待提交审核竞价结果详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
@@ -154,7 +154,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/readyExamineResultOne/detail'
,
name
:
'待审核竞价结果(一级)详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
@@ -168,7 +168,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/readyExamineResultTwo/detail'
,
name
:
'待审核竞价结果(二级)详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
@@ -182,7 +182,7 @@ export const purchaseBidRoute = [
{
path
:
'/memberCenter/procurementAbility/purchaseBid/readyConfirm/detail'
,
name
:
'待审核竞价结果详情'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/
search/
detail'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
...
...
src/pages/transaction/purchaseAbility/components/detail/components/bidDetailBtnItem/index.tsx
View file @
b4c3d4b2
import
React
,
{
useContext
,
useEffect
,
useState
}
from
'react'
;
import
{
Row
,
Col
,
Table
,
Button
}
from
'antd'
;
import
{
CaretDownOutlined
}
from
'@ant-design/icons'
import
React
from
'react'
;
import
{
Row
,
Col
,
Button
}
from
'antd'
;
import
{
formatTimeString
}
from
'@/utils'
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
TrendTag
from
'../trendTag'
;
import
styles
from
'./index.less'
;
...
...
@@ -26,7 +26,7 @@ const BtnItem: React.FC<BtnItemProps> = (props: any) => {
第
{
detail
?.
peportPriceSum
}
次
</
div
>
<
div
className=
{
styles
.
btnItemPrice
}
>
<
div
>
¥
{
detail
?.
sumPice
}
¥
{
priceFormat
(
detail
?.
sumPice
)
}
<
span
>
(含税)
</
span
>
</
div
>
{
formatTimeString
(
detail
?.
peportTime
,
'HH:mm:ss'
)
}
...
...
@@ -38,11 +38,11 @@ const BtnItem: React.FC<BtnItemProps> = (props: any) => {
<
div
className=
{
styles
.
btnItem2
}
style=
{
{
borderColor
:
active
?
'#00B37A'
:
'#F4F5F7'
}
}
>
<
div
className=
{
styles
.
info
}
>
{
detail
?.
isOpenRanking
?
`第 ${detail?.ranking} 名`
:
'不公开'
}
<
span
>
当前最低价:
{
detail
?.
isOpenPurchase
?
`¥${
detail?.minPrice
}`
:
'不公开'
}
</
span
>
<
span
>
当前最低价:
{
detail
?.
isOpenPurchase
?
`¥${
priceFormat(detail?.minPrice)
}`
:
'不公开'
}
</
span
>
</
div
>
<
div
className=
{
styles
.
box
}
>
<
div
className=
{
styles
.
price
}
>
<
div
>
¥
{
detail
?.
sumPice
}
<
span
>
(含税)
</
span
></
div
>
<
div
>
¥
{
priceFormat
(
detail
?.
sumPice
)
}
<
span
>
(含税)
</
span
></
div
>
第
{
detail
?.
peportPriceSum
}
次
</
div
>
<
div
className=
{
styles
.
time
}
>
...
...
@@ -57,7 +57,7 @@ const BtnItem: React.FC<BtnItemProps> = (props: any) => {
<
div
className=
{
styles
.
btnItem3
}
style=
{
{
borderColor
:
active
?
'#00B37A'
:
'#F4F5F7'
}
}
>
<
div
className=
{
styles
.
title
}
>
<
div
>
¥
{
detail
?.
sumPice
}
¥
{
priceFormat
(
detail
?.
sumPice
)
}
<
span
>
(含税)
</
span
>
</
div
>
第
{
detail
?.
peportPriceSum
}
次
...
...
src/pages/transaction/purchaseAbility/components/detail/components/bidProgressDrawer/index.tsx
View file @
b4c3d4b2
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
Row
,
Col
,
Space
,
Button
,
Typography
,
Table
,
Drawer
}
from
'antd'
;
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
BtnItem
from
'../bidDetailBtnItem'
;
interface
BidProgressDrawerProps
{
...
...
@@ -75,12 +78,12 @@ const BidProgressDrawer: React.FC<BidProgressDrawerProps> = (props: any) => {
title
:
'单价(含税)'
,
key
:
'unitPrice'
,
dataIndex
:
'unitPrice'
,
render
:
(
text
:
any
,
record
:
any
)
=>
`¥
${
text
}
`
,
render
:
(
text
:
any
,
record
:
any
)
=>
`¥
${
priceFormat
(
text
)
}
`
,
},
{
title
:
'金额(含税)'
,
key
:
'price'
,
dataIndex
:
'price'
,
render
:
(
text
:
any
,
record
:
any
)
=>
`¥
${
text
}
`
,
render
:
(
text
:
any
,
record
:
any
)
=>
`¥
${
priceFormat
(
text
)
}
`
,
}];
const
chooseItem
=
(
item
:
any
,
index
:
number
)
=>
{
...
...
src/pages/transaction/purchaseAbility/components/detail/components/lowestQuotationRecordLayout/index.less
View file @
b4c3d4b2
.baseItem{
display: flex;
font-size: 12px;
margin-bottom: 16px;
.label{
width: 104px;
color: #909399;
margin: 0;
.baseItem {
display: flex;
font-size: 12px;
margin-bottom: 16px;
.label {
width: 104px;
color: #909399;
margin: 0;
}
.content {
flex: 1;
margin: 0;
img {
width: 24px;
}
.content{
flex: 1;
margin: 0;
.badge {
width: 24px;
height: 24px;
background: #EBECF0;
border-radius: 12px;
text-align: center;
line-height: 24px;
color: #909399;
font-size: 12px;
display: inline-block;
}
}
\ No newline at end of file
}
}
src/pages/transaction/purchaseAbility/components/detail/components/lowestQuotationRecordLayout/index.tsx
View file @
b4c3d4b2
import
React
,
{
useRef
}
from
'react'
;
import
{
Typography
,
Space
}
from
'antd'
;
import
{
StandardTable
}
from
'god'
;
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
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
Card
from
'../../../card'
;
import
selfStyles
from
'./index.less'
;
const
{
Text
}
=
Typography
;
...
...
@@ -64,12 +71,12 @@ const LowestQuotationRecord: React.FC<TableCommonLayoutProps> = (props: any) =>
{
title
:
'单价(含税)'
,
dataIndex
:
'unitPrice'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
text
}
</
Text
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
priceFormat
(
text
)
}
</
Text
>
},
{
title
:
'金额(含税)'
,
dataIndex
:
'price'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
text
}
</
Text
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
priceFormat
(
text
)
}
</
Text
>
},
];
...
...
@@ -81,6 +88,20 @@ const LowestQuotationRecord: React.FC<TableCommonLayoutProps> = (props: any) =>
})
}
const
_returnBadge
=
(
number
)
=>
{
const
_number
=
Number
(
number
??
0
);
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=
{
selfStyles
.
badge
}
>
{
_number
}
</
div
>
}
}
return
(
<
Card
id=
{
layoutId
}
...
...
@@ -89,11 +110,11 @@ const LowestQuotationRecord: React.FC<TableCommonLayoutProps> = (props: any) =>
>
<
div
className=
{
selfStyles
.
baseItem
}
>
<
h5
className=
{
selfStyles
.
label
}
>
竞价排名:
</
h5
>
<
h5
className=
{
selfStyles
.
content
}
></
h5
>
<
h5
className=
{
selfStyles
.
content
}
>
{
_returnBadge
(
effect
?.
ranking
)
}
</
h5
>
</
div
>
<
div
className=
{
selfStyles
.
baseItem
}
>
<
h5
className=
{
selfStyles
.
label
}
>
报价总额(含税):
</
h5
>
<
h5
className=
{
selfStyles
.
content
}
>
{
effect
.
sumAwardPrice
}
</
h5
>
<
h5
className=
{
selfStyles
.
content
}
>
{
effect
?.
reportPrice
?
priceFormat
(
effect
?.
reportPrice
)
:
'-'
}
</
h5
>
</
div
>
<
StandardTable
currentRef=
{
currentRef
}
...
...
src/pages/transaction/purchaseAbility/components/detail/components/quotationDetailsDrawer/index.tsx
View file @
b4c3d4b2
...
...
@@ -4,6 +4,7 @@ import { ColumnType } from 'antd/lib/table/interface';
import
{
createFormActions
,
FormEffectHooks
}
from
'@formily/antd'
;
import
{
Space
,
Button
,
Typography
,
Drawer
}
from
'antd'
;
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
...
...
@@ -75,12 +76,12 @@ const QuotationDetailsDrawer = (props: any) => {
title
:
'单价(含税)'
,
key
:
'unitPrice'
,
dataIndex
:
'unitPrice'
,
render
:
(
text
:
any
,
record
:
any
)
=>
`¥
${
text
}
`
,
render
:
(
text
:
any
,
record
:
any
)
=>
`¥
${
priceFormat
(
text
)
}
`
,
},
{
title
:
'金额(含税)'
,
key
:
'price'
,
dataIndex
:
'price'
,
render
:
(
text
:
any
,
record
:
any
)
=>
`¥
${
text
}
`
,
render
:
(
text
:
any
,
record
:
any
)
=>
`¥
${
priceFormat
(
text
)
}
`
,
}];
/** 列表数据 */
...
...
src/pages/transaction/purchaseAbility/components/detail/components/tableCommonLayout/index.tsx
View file @
b4c3d4b2
import
React
,
{
useRef
}
from
'react'
;
import
{
StandardTable
}
from
'god'
;
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
Card
from
'../../../card'
;
import
{
Space
,
Typography
}
from
'antd'
;
const
{
Text
}
=
Typography
;
...
...
@@ -74,13 +77,13 @@ const TableCommonLayout: React.FC<TableCommonLayoutProps> = (props: any) => {
title
:
'单价(含税)'
,
key
:
'unitPrice'
,
dataIndex
:
'unitPrice'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
text
}
</
Text
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
priceFormat
(
text
)
}
</
Text
>
},
{
title
:
'金额(含税)'
,
key
:
'price'
,
dataIndex
:
'price'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
text
}
</
Text
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
¥
{
priceFormat
(
text
)
}
</
Text
>
},
];
...
...
src/pages/transaction/purchaseAbility/components/detail/components/trendTag/index.tsx
View file @
b4c3d4b2
...
...
@@ -9,12 +9,16 @@ interface TrendTagProps {
const
TrendTag
:
React
.
FC
<
TrendTagProps
>
=
(
props
:
any
)
=>
{
const
{
ratio
}
=
props
;
return
(
<
div
className=
{
styles
.
trendTag
}
>
<
CaretDownOutlined
style=
{
{
color
:
'#E63F3B'
,
fontSize
:
'10px'
,
marginRight
:
'2px'
}
}
/>
{
ratio
}
%
</
div
>
)
if
(
ratio
<
0
){
return
(
<
div
className=
{
styles
.
trendTag
}
>
<
CaretDownOutlined
style=
{
{
color
:
'#E63F3B'
,
fontSize
:
'10px'
,
marginRight
:
'2px'
}
}
/>
{
Math
.
abs
(
ratio
)
}
%
</
div
>
)
}
else
{
return
null
}
}
export
default
TrendTag
\ No newline at end of file
src/pages/transaction/purchaseAbility/onlineBid/detail/index.tsx
View file @
b4c3d4b2
...
...
@@ -4,6 +4,7 @@ import { history } from 'umi';
import
{
PublicApi
}
from
'@/services/api'
;
import
{
formatTimeString
}
from
'@/utils'
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
{
Context
}
from
'../../components/detail/components/context'
;
import
PeripheralLayout
from
'../../components/detail'
;
...
...
@@ -116,7 +117,7 @@ const SearchDetail = () => {
setResultEffect
([
{
col
:
[
{
label
:
'中标金额(含税)'
,
extra
:
data
.
sumAwardPrice
,
type
:
'text'
},
{
label
:
'中标金额(含税)'
,
extra
:
priceFormat
(
data
?.
sumAwardPrice
)
,
type
:
'text'
},
{
label
:
'中标理由'
,
extra
:
'价格最低'
,
type
:
'text'
},
]
},
...
...
@@ -133,13 +134,13 @@ const SearchDetail = () => {
{
col
:
[
{
label
:
'竞价时间'
,
extra
:
`
${
formatTimeString
(
data
.
biddingStartTime
)}
至
${
formatTimeString
(
data
.
biddingEndTime
)}
`
,
type
:
'text'
},
{
label
:
'起拍价'
,
extra
:
data
.
startingPrice
?
`¥
${
data
.
startingPrice
}
`
:
'-'
,
type
:
'text'
,
tips
:
'初始起拍价,首次报价要低于或等于起拍价'
},
{
label
:
'目标价'
,
extra
:
data
.
targetPrice
?
`¥
${
data
.
targetPrice
}
`
:
'-'
,
type
:
'text'
,
tips
:
'期望成交价格'
},
{
label
:
'起拍价'
,
extra
:
data
.
startingPrice
?
`¥
${
priceFormat
(
data
.
startingPrice
)
}
`
:
'-'
,
type
:
'text'
,
tips
:
'初始起拍价,首次报价要低于或等于起拍价'
},
{
label
:
'目标价'
,
extra
:
data
.
targetPrice
?
`¥
${
priceFormat
(
data
.
targetPrice
)
}
`
:
'-'
,
type
:
'text'
,
tips
:
'期望成交价格'
},
]
},
{
col
:
[
{
label
:
'最小价差'
,
extra
:
data
.
minPrice
?
`¥
${
data
.
minPrice
}
`
:
'-'
,
type
:
'text'
,
tips
:
'每次报价降价幅度须大于或等于最小价差'
},
{
label
:
'最小价差'
,
extra
:
data
.
minPrice
?
`¥
${
priceFormat
(
data
.
minPrice
)
}
`
:
'-'
,
type
:
'text'
,
tips
:
'每次报价降价幅度须大于或等于最小价差'
},
{
label
:
'允许报价次数'
,
extra
:
data
.
allowPurchaseCount
,
type
:
'text'
,
tips
:
'允许每个供应商最多可以报价的次数'
},
]
},
...
...
src/pages/transaction/purchaseAbility/onlineBid/readyBid/detail/history/index.tsx
View file @
b4c3d4b2
...
...
@@ -4,6 +4,9 @@ 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
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
TrendTag
from
'../../../../components/detail/components/trendTag'
;
import
styles
from
'./index.less'
;
...
...
@@ -44,9 +47,9 @@ const HistoryItem: React.FC<HistoryItemProps> = (props: any) => {
{
detail
?.
offerRatio
?
<
TrendTag
ratio=
{
detail
?.
offerRatio
}
/>
:
''
}
</
div
>
<
p
>
本次报价金额
</
p
>
<
p
className=
{
styles
.
currentPrice
}
><
span
>
¥
</
span
>
{
detail
?.
offerPrice
||
'-'
}
</
p
>
<
p
className=
{
styles
.
currentPrice
}
><
span
>
¥
</
span
>
{
detail
?.
offerPrice
?
priceFormat
(
detail
?.
offerPrice
)
:
'-'
}
</
p
>
<
div
className=
{
styles
.
row
}
>
<
div
className=
{
styles
.
col
}
style=
{
{
borderRight
:
'1px solid #EBECF0'
}
}
>
当前最低价:
<
span
>
{
detail
?.
minLowPrice
?
?
'-'
}
</
span
></
div
>
<
div
className=
{
styles
.
col
}
style=
{
{
borderRight
:
'1px solid #EBECF0'
}
}
>
当前最低价:
<
span
>
{
detail
?.
minLowPrice
?
priceFormat
(
detail
?.
minLowPrice
)
:
'-'
}
</
span
></
div
>
<
div
className=
{
styles
.
col
}
>
报价次数:
<
span
>
{
detail
?.
offerCount
?
detail
?.
offerCount
:
'-'
}
</
span
></
div
>
</
div
>
</
div
>
...
...
src/pages/transaction/purchaseAbility/onlineBid/readyBid/detail/index.tsx
View file @
b4c3d4b2
...
...
@@ -47,15 +47,16 @@ const Detail = () => {
let
_list
=
[];
let
_offerList
=
[];
let
_minList
=
[];
data
?.
offerLogs
.
forEach
((
item
)
=>
{
_offerList
.
push
({
type
:
'offer'
,
time
:
formatTimeString
(
item
.
offerTime
,
'HH:mm:ss'
),
value
:
item
.
offerPrice
});
let
_offerLogs
=
data
?.
offerLogs
?
[...
data
.
offerLogs
].
reverse
()
:
[];
_offerLogs
.
forEach
((
item
)
=>
{
_offerList
.
push
({
type
:
'offer'
,
time
:
formatTimeString
(
item
.
offerTime
,
'HH:mm:ss'
),
value
:
item
.
offerPrice
});
})
_list
.
push
({
title
:
'报价金额'
,
type
:
'offer'
,
list
:
_offerList
});
if
(
data
.
isOpenPurchase
)
{
data
?.
offerLogs
.
forEach
((
item
)
=>
{
_minList
.
push
({
type
:
'min'
,
time
:
formatTimeString
(
item
.
offerTime
,
'HH:mm:ss'
),
value
:
item
.
minPrice
});
_list
.
push
({
title
:
'报价金额'
,
type
:
'offer'
,
list
:
_offerList
});
if
(
data
.
isOpenPurchase
)
{
_
offerLogs
.
forEach
((
item
)
=>
{
_minList
.
push
({
type
:
'min'
,
time
:
formatTimeString
(
item
.
offerTime
,
'HH:mm:ss'
),
value
:
item
.
minPrice
});
})
_list
.
push
({
title
:
'最低价'
,
type
:
'min'
,
list
:
_minList
});
_list
.
push
({
title
:
'最低价'
,
type
:
'min'
,
list
:
_minList
});
}
setChartsList
(
_list
)
})
...
...
src/pages/transaction/purchaseAbility/onlineBid/readyBid/detail/offer/index.less
View file @
b4c3d4b2
...
...
@@ -23,6 +23,7 @@
span{
font-size: 14px;
color: #303133;
margin-right: 4px;
}
}
.rowTime{
...
...
src/pages/transaction/purchaseAbility/onlineBid/readyBid/detail/offer/index.tsx
View file @
b4c3d4b2
import
React
from
'react'
;
import
{
formatTimeString
}
from
'@/utils'
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
TrendTag
from
'../../../../components/detail/components/trendTag'
;
...
...
@@ -20,8 +21,8 @@ const OfferItem: React.FC<OfferItemProps> = (props: any) => {
<
div
className=
{
styles
.
right
}
>
<
div
className=
{
styles
.
row
}
>
<
div
className=
{
styles
.
rowPrice
}
>
<
span
>
¥
{
detail
.
offerPrice
}
</
span
>
当前最低价:
{
detail
.
isOpenPurchase
?
`¥${
detail.minPrice
}`
:
'不公开'
}
<
span
>
¥
{
priceFormat
(
detail
.
offerPrice
)
}
</
span
>
当前最低价:
{
detail
.
isOpenPurchase
?
`¥${
priceFormat(detail.minPrice)
}`
:
'不公开'
}
</
div
>
第
{
detail
.
offerCount
}
次
</
div
>
...
...
src/pages/transaction/purchaseAbility/purchaseBid/components/confirmBidResultModal/index.tsx
View file @
b4c3d4b2
...
...
@@ -4,6 +4,9 @@ const { TabPane } = Tabs;
const
{
TextArea
}
=
Input
;
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
styles
from
'./index.less'
;
interface
ConfirmBidResultModalProps
{
...
...
@@ -55,7 +58,7 @@ const ConfirmBidResultModal: React.FC<ConfirmBidResultModalProps> = (props: any)
const
_returnDefaultAwardResults
=
useMemo
(()
=>
{
return
record
?
`
${
record
?.
purchaseMamberName
??
record
?.
createMemberName
}
《
$
{
record
.
details
}
》竞价工作已经结束,中标人已经确定。现将中标结果公布如下:
中标供应商:
$
{
record
.
mamberName
||
record
.
memberName
}
(中标总金额(含税):
$
{
record
.
sumAwardPrice
}
)。
中标供应商:
$
{
record
.
mamberName
||
record
.
memberName
}
(中标总金额(含税):
$
{
priceFormat
(
record
.
sumAwardPrice
)
}
)。
中标理由:价格最低
` : '';
}, [record])
...
...
src/pages/transaction/purchaseAbility/purchaseBid/
search/detail
.tsx
→
src/pages/transaction/purchaseAbility/purchaseBid/
detail/index
.tsx
View file @
b4c3d4b2
...
...
@@ -6,6 +6,7 @@ import { CheckCircleOutlined } from '@ant-design/icons';
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GlobalConfig
}
from
'@/global/config'
import
{
formatTimeString
}
from
'@/utils'
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
{
Context
}
from
'../../components/detail/components/context'
;
import
PeripheralLayout
from
'../../components/detail'
;
...
...
@@ -158,13 +159,13 @@ const SearchDetail = () => {
{
col
:
[
{
label
:
'竞价时间'
,
extra
:
`
${
formatTimeString
(
data
.
biddingStartTime
)}
至
${
formatTimeString
(
data
.
biddingEndTime
)}
`
,
type
:
'text'
},
{
label
:
'起拍价'
,
extra
:
data
.
startingPrice
?
`¥
${
data
.
startingPrice
}
`
:
''
,
type
:
'text'
,
tips
:
'初始起拍价,首次报价要低于或等于起拍价'
},
{
label
:
'目标价'
,
extra
:
data
.
targetPrice
?
`¥
${
data
.
targetPrice
}
`
:
''
,
type
:
'text'
,
tips
:
'期望成交价格'
},
{
label
:
'起拍价'
,
extra
:
data
.
startingPrice
?
`¥
${
priceFormat
(
data
.
startingPrice
)
}
`
:
''
,
type
:
'text'
,
tips
:
'初始起拍价,首次报价要低于或等于起拍价'
},
{
label
:
'目标价'
,
extra
:
data
.
targetPrice
?
`¥
${
priceFormat
(
data
.
targetPrice
)
}
`
:
''
,
type
:
'text'
,
tips
:
'期望成交价格'
},
]
},
{
col
:
[
{
label
:
'最小价差'
,
extra
:
data
.
minPrice
?
`¥
${
data
.
minPrice
}
`
:
''
,
type
:
'text'
,
tips
:
'每次报价降价幅度须大于或等于最小价差'
},
{
label
:
'最小价差'
,
extra
:
data
.
minPrice
?
`¥
${
priceFormat
(
data
.
minPrice
)
}
`
:
''
,
type
:
'text'
,
tips
:
'每次报价降价幅度须大于或等于最小价差'
},
{
label
:
'允许报价次数'
,
extra
:
data
.
allowPurchaseCount
,
type
:
'text'
,
tips
:
'允许每个供应商最多可以报价的次数'
},
]
},
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyBid/management/components/rank/index.tsx
View file @
b4c3d4b2
...
...
@@ -4,6 +4,7 @@ import { 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
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
TriangleTag
from
'../triangleTag'
;
import
RankRow
from
'../rankRow'
;
...
...
@@ -38,7 +39,7 @@ const RankItem: React.FC<RankItemProps> = (props: any) => {
{
dynamic
?.
memberName
}
</
h4
>
<
div
className=
{
styles
.
rankHeaderBoxInfo
}
>
<
div
className=
{
styles
.
rankHeaderBoxInfoChild
}
>
当前最低价:
<
span
>
{
dynamic
?.
minPrice
?
`¥ ${
dynamic?.minPrice
}`
:
'-'
}
</
span
></
div
>
<
div
className=
{
styles
.
rankHeaderBoxInfoChild
}
>
当前最低价:
<
span
>
{
dynamic
?.
minPrice
?
`¥ ${
priceFormat(dynamic?.minPrice)
}`
:
'-'
}
</
span
></
div
>
<
div
className=
{
styles
.
rankHeaderBoxInfoChild
}
>
报价次数:
<
span
>
{
dynamic
?.
count
??
'-'
}
</
span
></
div
>
</
div
>
</
div
>
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyBid/management/components/rankRow/index.tsx
View file @
b4c3d4b2
...
...
@@ -3,6 +3,7 @@ import React, { useEffect, useState } from 'react';
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
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
IMBtn
from
'../../../../../components/detail/components/iMBtn'
;
...
...
@@ -45,7 +46,7 @@ const RankRow: React.FC<RankRowProps> = (props: any) => {
{
detail
.
ranking
===
1
&&
<
TriangleTag
text=
'最低价'
wrapStyle=
{
{
backgroundColor
:
'#EA8000'
,
marginLeft
:
'8px'
}
}
bgcolor=
'#EA8000'
direction=
'left'
/>
}
</
div
>
<
div
className=
{
styles
.
rankRowLeftBottom
}
>
¥
{
detail
.
sumPrice
}
¥
{
priceFormat
(
detail
.
sumPrice
)
}
<
div
className=
{
styles
.
rankRowLeftBottomTag
}
>
第
{
detail
.
count
}
次
</
div
>
</
div
>
</
div
>
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyBid/management/components/statusBox/detailBottomDrawer/index.tsx
View file @
b4c3d4b2
...
...
@@ -3,10 +3,12 @@ import { history } from 'umi';
import
{
Row
,
Col
,
Input
,
Drawer
,
Table
,
Space
,
Typography
,
message
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
BtnItem
from
'../../../../../../components/detail/components/bidDetailBtnItem'
;
import
styles
from
'./index.less'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
{
Text
}
=
Typography
;
...
...
@@ -66,7 +68,7 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => {
{
title
:
'金额(含税)'
,
dataIndex
:
'price'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
{
text
&&
`¥${
text
}`
}
</
Text
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Text
type=
'secondary'
>
{
text
&&
`¥${
priceFormat(text)
}`
}
</
Text
>
},
]
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyBid/management/components/statusBox/index.tsx
View file @
b4c3d4b2
...
...
@@ -2,6 +2,7 @@ import React, { useState } from 'react';
import
{
Button
,
Divider
,
message
}
from
'antd'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
useCountDown
from
'@/hooks/useCountDown'
;
import
DetailBottomDrawer
from
'./detailBottomDrawer'
...
...
@@ -57,9 +58,9 @@ const StatuBox: React.FC<StatuBoxProps> = (props: any) => {
<
Divider
dashed
style=
{
{
color
:
'#EBECF0'
,
margin
:
'6px 0'
}
}
/>
<
h4
>
竞价规则
</
h4
>
<
div
className=
{
styles
.
statusBoxText
}
><
div
>
报价规则:
</
div
>
项目总价(含税)
</
div
>
<
div
className=
{
styles
.
statusBoxText
}
><
div
>
起拍价:
</
div
>
{
detail
.
isStartingPrice
?
`¥ ${
detail?.startingPrice
}`
:
'无'
}
</
div
>
{
!
hasBidBtn
&&
<
div
className=
{
styles
.
statusBoxText
}
><
div
>
目标价:
</
div
>
{
detail
.
isTargetPrice
?
`¥ ${
detail?.targetPrice
}`
:
'无'
}
</
div
>
}
<
div
className=
{
styles
.
statusBoxText
}
><
div
>
最小价差:
</
div
>
{
detail
.
isMinPrice
?
`¥ ${
detail?.minPrice
}`
:
'无'
}
</
div
>
<
div
className=
{
styles
.
statusBoxText
}
><
div
>
起拍价:
</
div
>
{
detail
.
isStartingPrice
?
`¥ ${
priceFormat(detail?.startingPrice)
}`
:
'无'
}
</
div
>
{
!
hasBidBtn
&&
<
div
className=
{
styles
.
statusBoxText
}
><
div
>
目标价:
</
div
>
{
detail
.
isTargetPrice
?
`¥ ${
priceFormat(detail?.targetPrice)
}`
:
'无'
}
</
div
>
}
<
div
className=
{
styles
.
statusBoxText
}
><
div
>
最小价差:
</
div
>
{
detail
.
isMinPrice
?
`¥ ${
priceFormat(detail?.minPrice)
}`
:
'无'
}
</
div
>
<
div
className=
{
styles
.
statusBoxText
}
><
div
>
允许报价次数:
</
div
>
{
detail
?.
allowPurchaseCount
}
次
</
div
>
<
div
className=
{
styles
.
statusBoxText
}
><
div
>
报价排名:
</
div
>
{
hasBidBtn
?
(
detail
.
isOpenPurchase
?
'按项目总价排名'
:
'无'
):
'按项目总价排名'
}
</
div
>
{
hasBidBtn
?
(
...
...
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