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
27c5c89c
Commit
27c5c89c
authored
Mar 05, 2021
by
前端-黄佳鑫
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev-srm' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into dev-srm
parents
0d93f62c
d0e64241
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
2232 additions
and
60 deletions
+2232
-60
callForBids.ts
config/routes/procurementRoute/callForBids.ts
+70
-0
index.less
...nt/callForBids/readyCheckedConfirmFirst/detail/index.less
+0
-0
index.tsx
...ent/callForBids/readyCheckedConfirmFirst/detail/index.tsx
+66
-0
index.tsx
...rocurement/callForBids/readyCheckedConfirmFirst/index.tsx
+104
-0
useSelfTable.tsx
...llForBids/readyCheckedConfirmFirst/model/useSelfTable.tsx
+47
-0
index.ts
...ment/callForBids/readyCheckedConfirmFirst/schema/index.ts
+67
-0
index.less
...t/callForBids/readyCheckedConfirmSecond/detail/index.less
+0
-0
index.tsx
...nt/callForBids/readyCheckedConfirmSecond/detail/index.tsx
+66
-0
index.tsx
...ocurement/callForBids/readyCheckedConfirmSecond/index.tsx
+104
-0
useSelfTable.tsx
...lForBids/readyCheckedConfirmSecond/model/useSelfTable.tsx
+47
-0
index.ts
...ent/callForBids/readyCheckedConfirmSecond/schema/index.ts
+67
-0
index.less
...procurement/callForBids/readyConfirmBid/detail/index.less
+0
-0
index.tsx
.../procurement/callForBids/readyConfirmBid/detail/index.tsx
+66
-0
index.tsx
src/pages/procurement/callForBids/readyConfirmBid/index.tsx
+104
-0
useSelfTable.tsx
...rement/callForBids/readyConfirmBid/model/useSelfTable.tsx
+47
-0
index.ts
...s/procurement/callForBids/readyConfirmBid/schema/index.ts
+67
-0
index.less
...es/procurement/callForBids/readyPassBid/detail/index.less
+0
-0
index.tsx
...ges/procurement/callForBids/readyPassBid/detail/index.tsx
+66
-0
index.tsx
src/pages/procurement/callForBids/readyPassBid/index.tsx
+104
-0
useSelfTable.tsx
...ocurement/callForBids/readyPassBid/model/useSelfTable.tsx
+47
-0
index.ts
...ages/procurement/callForBids/readyPassBid/schema/index.ts
+67
-0
index.less
...curement/callForBids/readySendBidNotice/detail/index.less
+0
-0
index.tsx
...ocurement/callForBids/readySendBidNotice/detail/index.tsx
+56
-0
index.tsx
...ages/procurement/callForBids/readySendBidNotice/index.tsx
+104
-0
useSelfTable.tsx
...ent/callForBids/readySendBidNotice/model/useSelfTable.tsx
+97
-0
index.ts
...rocurement/callForBids/readySendBidNotice/schema/index.ts
+67
-0
index.less
.../components/bidConfirm/components/givenBidItem/index.less
+0
-0
index.tsx
...t/components/bidConfirm/components/givenBidItem/index.tsx
+78
-0
index.less
...t/components/bidConfirm/components/totalAmount/index.less
+0
-0
index.tsx
...nt/components/bidConfirm/components/totalAmount/index.tsx
+166
-0
index.less
src/pages/procurement/components/bidConfirm/index.less
+77
-0
index.tsx
src/pages/procurement/components/bidConfirm/index.tsx
+167
-0
index.less
src/pages/procurement/components/bidDetailHeader/index.less
+20
-0
index.tsx
src/pages/procurement/components/bidDetailHeader/index.tsx
+2
-2
index.tsx
src/pages/procurement/components/bidDetailSection/index.tsx
+13
-52
index.less
src/pages/procurement/components/participateInfo/index.less
+27
-0
index.tsx
src/pages/procurement/components/participateInfo/index.tsx
+124
-0
index.less
src/pages/procurement/components/remarkBidReport/index.less
+3
-0
index.tsx
src/pages/procurement/components/remarkBidReport/index.tsx
+14
-6
index.tsx
src/pages/procurement/constants/index.tsx
+11
-0
No files found.
config/routes/procurementRoute/callForBids.ts
View file @
27c5c89c
...
...
@@ -136,6 +136,76 @@ export const callForBidsRoute = [
hideInMenu
:
true
,
noMargin
:
true
,
},
// 待定标
{
path
:
'/memberCenter/procurementAbility/callForBids/readyConfirmBid'
,
name
:
'待定标'
,
component
:
'@/pages/procurement/callForBids/readyConfirmBid'
,
},
// 待定标-详情
{
path
:
'/memberCenter/procurementAbility/callForBids/readyConfirmBid/detail'
,
name
:
'待定标详情'
,
component
:
'@/pages/procurement/callForBids/readyConfirmBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
// 待审核定标(一级)
{
path
:
'/memberCenter/procurementAbility/callForBids/readyCheckedConfirmFirst'
,
name
:
'待审核定标(一级)'
,
component
:
'@/pages/procurement/callForBids/readyCheckedConfirmFirst'
,
},
// 待审核定标(一级)-详情
{
path
:
'/memberCenter/procurementAbility/callForBids/readyCheckedConfirmFirst/detail'
,
name
:
'待审核定标(一级)'
,
component
:
'@/pages/procurement/callForBids/readyCheckedConfirmFirst/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
// 待审核定标(二级)
{
path
:
'/memberCenter/procurementAbility/callForBids/readyCheckedConfirmSecond'
,
name
:
'待审核定标(二级)'
,
component
:
'@/pages/procurement/callForBids/readyCheckedConfirmSecond'
,
},
// 待审核定标(二级)-详情
{
path
:
'/memberCenter/procurementAbility/callForBids/readyCheckedConfirmSecond/detail'
,
name
:
'待审核定标(二级)'
,
component
:
'@/pages/procurement/callForBids/readyCheckedConfirmSecond/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
// 待确认定标
{
path
:
'/memberCenter/procurementAbility/callForBids/readyPassBid'
,
name
:
'待确认定标'
,
component
:
'@/pages/procurement/callForBids/readyPassBid'
,
},
// 待确认定标-详情
{
path
:
'/memberCenter/procurementAbility/callForBids/readyPassBid/detail'
,
name
:
'待确认定标详情'
,
component
:
'@/pages/procurement/callForBids/readyPassBid/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
// 待发中标公示
{
path
:
'/memberCenter/procurementAbility/callForBids/readySendBidNotice'
,
name
:
'待发中标公示'
,
component
:
'@/pages/procurement/callForBids/readySendBidNotice'
,
},
// 待发中标公示-详情
{
path
:
'/memberCenter/procurementAbility/callForBids/readySendBidNotice/detail'
,
name
:
'待发中标公示'
,
component
:
'@/pages/procurement/callForBids/readySendBidNotice/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
]
},
]
src/pages/procurement/callForBids/readyCheckedConfirmFirst/detail/index.less
0 → 100644
View file @
27c5c89c
src/pages/procurement/callForBids/readyCheckedConfirmFirst/detail/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useState
,
useCallback
,
useRef
,
useContext
,
useEffect
,
createRef
}
from
'react'
;
import
{
history
}
from
'umi'
import
{
Button
}
from
'antd'
;
import
style
from
'./index.less'
import
OrderDetailWrapper
from
'@/pages/transaction/components/OrderDetailWrapper'
;
import
PreLoading
from
'@/components/PreLoading'
;
import
OrderPayModal
from
'@/pages/transaction/components/orderPayModal'
;
import
{
BidDetailContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
{
useBidDetail
}
from
'@/pages/procurement/_public/bid/effects/useBidDetail'
;
import
BidDetailHeader
from
'@/pages/procurement/components/bidDetailHeader'
;
import
BidDetailSection
from
'@/pages/procurement/components/bidDetailSection'
;
const
ReadyCheckedConfirmFirstDetail
:
React
.
FC
=
()
=>
{
const
{
formContext
,
id
,
detailList
}
=
useBidDetail
({
type
:
'purchaseOrder'
})
const
{
data
,
currentPayInfoId
}
=
formContext
const
payRef
=
useRef
<
any
>
({})
/** 约定好 对应的锚点title和元素id映射 */
// type? 用于区分DescriptionsInfo组件的内容
// componentName? 用于区分不同组件的渲染
const
anchorTitleList
=
[
{
title
:
'流转进度'
,
id
:
'transferProcess'
,
componentName
:
'TransferProcess'
},
{
title
:
'基本信息'
,
id
:
'baseicInfo'
,
type
:
'basicInfo'
},
{
title
:
'评标报告'
,
id
:
'remarkBidReport'
,
componentName
:
'RemarkBidReport'
},
{
title
:
'会员参标信息'
,
id
:
'participateInfo'
,
componentName
:
'ParticipateInfo'
},
{
title
:
'招标定标'
,
id
:
'bidConfirm'
,
componentName
:
'BidConfirm'
},
// { title: '招标物料', id: 'bidMaterial', componentName: "BidMaterial" },
// { title: '招标要求', id: 'bidNeed', type: "bidNeed" },
// { title: '报名要求', id: 'registerNeed', type: "registerNeed" },
// { title: '资格预审要求', id: 'checkNeed', type: "checkNeed" },
// { title: '评标要求', id: 'remarkNeed', type: "remarkNeed" },
// { title: '其他要求', id: 'otherNeed', type: "otherNeed" },
// { title: '招标方式', id: 'bidWay', componentName: "BidMethod" },
{
title
:
'流转记录'
,
id
:
'transferRecord'
,
componentName
:
"BidTransformRecord"
},
]
return
(
<
div
>
<
BidDetailContext
.
Provider
value=
{
formContext
}
>
<
BidDetailHeader
detailList=
{
detailList
}
formContext=
{
formContext
}
anchorList=
{
anchorTitleList
}
backLink=
"/memberCenter/procurementAbility/callForBids/callForBidsSearch"
extraRight=
{
<
Button
type=
'primary'
>
单据审核
</
Button
>
}
/>
<
OrderDetailWrapper
>
<
PreLoading
loading=
{
!
formContext
.
data
}
active
paragraph=
{
{
rows
:
6
}
}
>
<
BidDetailSection
formContext=
{
formContext
}
anchorList=
{
anchorTitleList
}
type=
"callForBid"
/>
</
PreLoading
>
</
OrderDetailWrapper
>
<
OrderPayModal
currentRef=
{
payRef
}
/>
</
BidDetailContext
.
Provider
>
</
div
>
);
};
export
default
ReadyCheckedConfirmFirstDetail
;
src/pages/procurement/callForBids/readyCheckedConfirmFirst/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useRef
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Button
,
Space
,
Dropdown
,
Menu
,
message
}
from
'antd'
import
{
StandardTable
}
from
'god'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
PublicApi
}
from
'@/services/api'
import
{
useSelfTable
}
from
'./model/useSelfTable'
import
{
PlusCircleOutlined
,
DownOutlined
,
DeleteOutlined
}
from
'@ant-design/icons'
import
DropDeleteDown
from
'@/components/DropDeleteDown'
import
{
tableListSchema
}
from
'./schema'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PurchaseOrderInsideWorkState
}
from
'@/constants'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
// 待审核定标(一级) 招标
export
interface
ReadyCheckedConfirmFirstProps
{}
const
fetchTableData
=
async
(
params
)
=>
{
const
{
data
}
=
await
PublicApi
.
getOrderProcurementReviewedListOne
(
params
)
return
data
}
// TODO
const
ReadyCheckedConfirmFirst
:
React
.
FC
<
ReadyCheckedConfirmFirstProps
>
=
(
props
)
=>
{
const
{
columns
,
ref
,
rowSelection
,
rowSelectionCtl
}
=
useSelfTable
()
const
{
run
,
loading
}
=
useHttpRequest
(
PublicApi
.
postOrderProcurementOrderReviewedAll
)
const
handleSubmitBatch
=
async
()
=>
{
if
(
rowSelectionCtl
.
selectRow
.
length
===
0
)
{
message
.
error
(
'请先勾选订单'
)
return
;
}
const
canBitch
=
!
rowSelectionCtl
.
selectRow
.
some
(
v
=>
v
.
interiorState
!==
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
)
if
(
canBitch
)
{
const
{
code
}
=
await
run
({
ids
:
rowSelectionCtl
.
selectedRowKeys
})
if
(
code
===
1000
)
{
ref
.
current
.
reload
()
rowSelectionCtl
.
setSelectRow
([])
rowSelectionCtl
.
setSelectedRowKeys
([])
}
}
else
{
message
.
error
(
'只能批量提交内部状态为审核中的订单'
)
}
}
return
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
fetchTableData=
{
params
=>
fetchTableData
(
params
)
}
// rowSelection={rowSelection}
columns=
{
columns
}
currentRef=
{
ref
}
rowKey=
{
'id'
}
formilyLayouts=
{
{
justify
:
'space-between'
}
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
tableListSchema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'orderNo'
,
FORM_FILTER_PATH
,
);
},
components
:
{
DateRangePickerUnix
,
Submit
}
},
layouts
:
{
order
:
2
,
span
:
24
}
}
}
formilyChilds=
{
{
children
:
<
Space
>
<
Button
onClick=
{
handleSubmitBatch
}
loading=
{
loading
}
>
批量审核通过
</
Button
>
</
Space
>,
layouts
:
{
span
:
8
}
}
}
/>
</
Card
>
</
PageHeaderWrapper
>
}
ReadyCheckedConfirmFirst
.
defaultProps
=
{}
export
default
ReadyCheckedConfirmFirst
src/pages/procurement/callForBids/readyCheckedConfirmFirst/model/useSelfTable.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useRef
}
from
'react'
import
{
Button
}
from
'antd'
import
{
history
}
from
'umi'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PurchaseOrderInsideWorkState
}
from
'@/constants'
import
{
baseBidListColumns
}
from
'@/pages/procurement/constants'
// 待审核定标(一级) 招标
export
const
useSelfTable
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
[
rowSelection
,
rowSelectionCtl
]
=
useRowSelectionTable
({
customKey
:
'id'
,
extendsSelection
:
{
getCheckboxProps
:
record
=>
({
// 不等于可提交审核的 都无法通过批量提交
disabled
:
record
.
interiorState
!==
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
,
interiorState
:
record
.
interiorState
,
})
}})
const
handleSubmit
=
async
(
record
)
=>
{
if
(
record
.
interiorState
===
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
)
{
history
.
push
(
`/memberCenter/tranactionAbility/purchaseOrder/firstApprovedOrder/detail?id=
${
record
.
id
}
`
)
}
// await PublicApi.postOrderQuotationBeReviewed({id})
// ref.current.reload()
}
const
secondColumns
:
any
[]
=
baseBidListColumns
.
concat
([
{
title
:
'操作'
,
align
:
'center'
,
dataIndex
:
'ctl'
,
key
:
'ctl'
,
render
:
(
text
,
record
)
=>
<>
{
record
.
interiorState
===
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
&&
<
Button
type=
'link'
onClick=
{
()
=>
handleSubmit
(
record
)
}
>
审核
</
Button
>
}
</>
}
])
return
{
columns
:
secondColumns
,
ref
,
rowSelection
,
rowSelectionCtl
}
}
src/pages/procurement/callForBids/readyCheckedConfirmFirst/schema/index.ts
0 → 100644
View file @
27c5c89c
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
OrderTypeMap
,
PurchaseOrderInsideWorkStateTexts
,
PurchaseOrderOutWorkStateTexts
}
from
'@/constants'
;
/**
* 除了订单必填字段, 默认
*/
export
const
tableListSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
orderNo
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入订单编号'
,
align
:
'flex-end'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
inline
:
true
,
colStyle
:
{
marginLeft
:
20
}
},
properties
:
{
orderThe
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入订单摘要'
,
}
},
"supplyMembersName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入供应会员名称'
}
},
"type"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
},
enum
:
Object
.
keys
(
OrderTypeMap
).
map
(
item
=>
({
label
:
OrderTypeMap
[
item
],
value
:
item
,
}))
},
"[startCreateTime,endCreateTime]"
:
{
type
:
'array'
,
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
}
}
src/pages/procurement/callForBids/readyCheckedConfirmSecond/detail/index.less
0 → 100644
View file @
27c5c89c
src/pages/procurement/callForBids/readyCheckedConfirmSecond/detail/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useState
,
useCallback
,
useRef
,
useContext
,
useEffect
,
createRef
}
from
'react'
;
import
{
history
}
from
'umi'
import
{
Button
}
from
'antd'
;
import
style
from
'./index.less'
import
OrderDetailWrapper
from
'@/pages/transaction/components/OrderDetailWrapper'
;
import
PreLoading
from
'@/components/PreLoading'
;
import
OrderPayModal
from
'@/pages/transaction/components/orderPayModal'
;
import
{
BidDetailContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
{
useBidDetail
}
from
'@/pages/procurement/_public/bid/effects/useBidDetail'
;
import
BidDetailHeader
from
'@/pages/procurement/components/bidDetailHeader'
;
import
BidDetailSection
from
'@/pages/procurement/components/bidDetailSection'
;
const
ReadyCheckedConfirmSecondDetail
:
React
.
FC
=
()
=>
{
const
{
formContext
,
id
,
detailList
}
=
useBidDetail
({
type
:
'purchaseOrder'
})
const
{
data
,
currentPayInfoId
}
=
formContext
const
payRef
=
useRef
<
any
>
({})
/** 约定好 对应的锚点title和元素id映射 */
// type? 用于区分DescriptionsInfo组件的内容
// componentName? 用于区分不同组件的渲染
const
anchorTitleList
=
[
{
title
:
'流转进度'
,
id
:
'transferProcess'
,
componentName
:
'TransferProcess'
},
{
title
:
'基本信息'
,
id
:
'baseicInfo'
,
type
:
'basicInfo'
},
{
title
:
'评标报告'
,
id
:
'remarkBidReport'
,
componentName
:
'RemarkBidReport'
},
{
title
:
'会员参标信息'
,
id
:
'participateInfo'
,
componentName
:
'ParticipateInfo'
},
{
title
:
'招标定标'
,
id
:
'bidConfirm'
,
componentName
:
'BidConfirm'
},
// { title: '招标物料', id: 'bidMaterial', componentName: "BidMaterial" },
// { title: '招标要求', id: 'bidNeed', type: "bidNeed" },
// { title: '报名要求', id: 'registerNeed', type: "registerNeed" },
// { title: '资格预审要求', id: 'checkNeed', type: "checkNeed" },
// { title: '评标要求', id: 'remarkNeed', type: "remarkNeed" },
// { title: '其他要求', id: 'otherNeed', type: "otherNeed" },
// { title: '招标方式', id: 'bidWay', componentName: "BidMethod" },
{
title
:
'流转记录'
,
id
:
'transferRecord'
,
componentName
:
"BidTransformRecord"
},
]
return
(
<
div
>
<
BidDetailContext
.
Provider
value=
{
formContext
}
>
<
BidDetailHeader
detailList=
{
detailList
}
formContext=
{
formContext
}
anchorList=
{
anchorTitleList
}
backLink=
"/memberCenter/procurementAbility/callForBids/callForBidsSearch"
extraRight=
{
<
Button
type=
'primary'
>
单据审核
</
Button
>
}
/>
<
OrderDetailWrapper
>
<
PreLoading
loading=
{
!
formContext
.
data
}
active
paragraph=
{
{
rows
:
6
}
}
>
<
BidDetailSection
formContext=
{
formContext
}
anchorList=
{
anchorTitleList
}
type=
"callForBid"
/>
</
PreLoading
>
</
OrderDetailWrapper
>
<
OrderPayModal
currentRef=
{
payRef
}
/>
</
BidDetailContext
.
Provider
>
</
div
>
);
};
export
default
ReadyCheckedConfirmSecondDetail
;
src/pages/procurement/callForBids/readyCheckedConfirmSecond/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useRef
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Button
,
Space
,
Dropdown
,
Menu
,
message
}
from
'antd'
import
{
StandardTable
}
from
'god'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
PublicApi
}
from
'@/services/api'
import
{
useSelfTable
}
from
'./model/useSelfTable'
import
{
PlusCircleOutlined
,
DownOutlined
,
DeleteOutlined
}
from
'@ant-design/icons'
import
DropDeleteDown
from
'@/components/DropDeleteDown'
import
{
tableListSchema
}
from
'./schema'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PurchaseOrderInsideWorkState
}
from
'@/constants'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
// 待审核定标(二级) 招标
export
interface
ReadyCheckedConfirmSecondProps
{}
const
fetchTableData
=
async
(
params
)
=>
{
const
{
data
}
=
await
PublicApi
.
getOrderProcurementReviewedListOne
(
params
)
return
data
}
// TODO
const
ReadyCheckedConfirmSecond
:
React
.
FC
<
ReadyCheckedConfirmSecondProps
>
=
(
props
)
=>
{
const
{
columns
,
ref
,
rowSelection
,
rowSelectionCtl
}
=
useSelfTable
()
const
{
run
,
loading
}
=
useHttpRequest
(
PublicApi
.
postOrderProcurementOrderReviewedAll
)
const
handleSubmitBatch
=
async
()
=>
{
if
(
rowSelectionCtl
.
selectRow
.
length
===
0
)
{
message
.
error
(
'请先勾选订单'
)
return
;
}
const
canBitch
=
!
rowSelectionCtl
.
selectRow
.
some
(
v
=>
v
.
interiorState
!==
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
)
if
(
canBitch
)
{
const
{
code
}
=
await
run
({
ids
:
rowSelectionCtl
.
selectedRowKeys
})
if
(
code
===
1000
)
{
ref
.
current
.
reload
()
rowSelectionCtl
.
setSelectRow
([])
rowSelectionCtl
.
setSelectedRowKeys
([])
}
}
else
{
message
.
error
(
'只能批量提交内部状态为审核中的订单'
)
}
}
return
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
fetchTableData=
{
params
=>
fetchTableData
(
params
)
}
// rowSelection={rowSelection}
columns=
{
columns
}
currentRef=
{
ref
}
rowKey=
{
'id'
}
formilyLayouts=
{
{
justify
:
'space-between'
}
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
tableListSchema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'orderNo'
,
FORM_FILTER_PATH
,
);
},
components
:
{
DateRangePickerUnix
,
Submit
}
},
layouts
:
{
order
:
2
,
span
:
24
}
}
}
formilyChilds=
{
{
children
:
<
Space
>
<
Button
onClick=
{
handleSubmitBatch
}
loading=
{
loading
}
>
批量审核通过
</
Button
>
</
Space
>,
layouts
:
{
span
:
8
}
}
}
/>
</
Card
>
</
PageHeaderWrapper
>
}
ReadyCheckedConfirmSecond
.
defaultProps
=
{}
export
default
ReadyCheckedConfirmSecond
src/pages/procurement/callForBids/readyCheckedConfirmSecond/model/useSelfTable.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useRef
}
from
'react'
import
{
Button
}
from
'antd'
import
{
history
}
from
'umi'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PurchaseOrderInsideWorkState
}
from
'@/constants'
import
{
baseBidListColumns
}
from
'@/pages/procurement/constants'
// 待审核定标(二级) 招标
export
const
useSelfTable
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
[
rowSelection
,
rowSelectionCtl
]
=
useRowSelectionTable
({
customKey
:
'id'
,
extendsSelection
:
{
getCheckboxProps
:
record
=>
({
// 不等于可提交审核的 都无法通过批量提交
disabled
:
record
.
interiorState
!==
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
,
interiorState
:
record
.
interiorState
,
})
}})
const
handleSubmit
=
async
(
record
)
=>
{
if
(
record
.
interiorState
===
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
)
{
history
.
push
(
`/memberCenter/tranactionAbility/purchaseOrder/firstApprovedOrder/detail?id=
${
record
.
id
}
`
)
}
// await PublicApi.postOrderQuotationBeReviewed({id})
// ref.current.reload()
}
const
secondColumns
:
any
[]
=
baseBidListColumns
.
concat
([
{
title
:
'操作'
,
align
:
'center'
,
dataIndex
:
'ctl'
,
key
:
'ctl'
,
render
:
(
text
,
record
)
=>
<>
{
record
.
interiorState
===
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
&&
<
Button
type=
'link'
onClick=
{
()
=>
handleSubmit
(
record
)
}
>
审核
</
Button
>
}
</>
}
])
return
{
columns
:
secondColumns
,
ref
,
rowSelection
,
rowSelectionCtl
}
}
src/pages/procurement/callForBids/readyCheckedConfirmSecond/schema/index.ts
0 → 100644
View file @
27c5c89c
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
OrderTypeMap
,
PurchaseOrderInsideWorkStateTexts
,
PurchaseOrderOutWorkStateTexts
}
from
'@/constants'
;
/**
* 除了订单必填字段, 默认
*/
export
const
tableListSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
orderNo
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入订单编号'
,
align
:
'flex-end'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
inline
:
true
,
colStyle
:
{
marginLeft
:
20
}
},
properties
:
{
orderThe
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入订单摘要'
,
}
},
"supplyMembersName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入供应会员名称'
}
},
"type"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
},
enum
:
Object
.
keys
(
OrderTypeMap
).
map
(
item
=>
({
label
:
OrderTypeMap
[
item
],
value
:
item
,
}))
},
"[startCreateTime,endCreateTime]"
:
{
type
:
'array'
,
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
}
}
src/pages/procurement/callForBids/readyConfirmBid/detail/index.less
0 → 100644
View file @
27c5c89c
src/pages/procurement/callForBids/readyConfirmBid/detail/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useState
,
useCallback
,
useRef
,
useContext
,
useEffect
,
createRef
}
from
'react'
;
import
{
history
}
from
'umi'
import
{
Button
}
from
'antd'
;
import
style
from
'./index.less'
import
OrderDetailWrapper
from
'@/pages/transaction/components/OrderDetailWrapper'
;
import
PreLoading
from
'@/components/PreLoading'
;
import
OrderPayModal
from
'@/pages/transaction/components/orderPayModal'
;
import
{
BidDetailContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
{
useBidDetail
}
from
'@/pages/procurement/_public/bid/effects/useBidDetail'
;
import
BidDetailHeader
from
'@/pages/procurement/components/bidDetailHeader'
;
import
BidDetailSection
from
'@/pages/procurement/components/bidDetailSection'
;
const
ReadyQualifityCheckedDetail
:
React
.
FC
=
()
=>
{
const
{
formContext
,
id
,
detailList
}
=
useBidDetail
({
type
:
'purchaseOrder'
})
const
{
data
,
currentPayInfoId
}
=
formContext
const
payRef
=
useRef
<
any
>
({})
/** 约定好 对应的锚点title和元素id映射 */
// type? 用于区分DescriptionsInfo组件的内容
// componentName? 用于区分不同组件的渲染
const
anchorTitleList
=
[
{
title
:
'流转进度'
,
id
:
'transferProcess'
,
componentName
:
'TransferProcess'
},
{
title
:
'基本信息'
,
id
:
'baseicInfo'
,
type
:
'basicInfo'
},
{
title
:
'评标报告'
,
id
:
'remarkBidReport'
,
componentName
:
'RemarkBidReport'
},
{
title
:
'会员参标信息'
,
id
:
'participateInfo'
,
componentName
:
'ParticipateInfo'
},
{
title
:
'招标定标'
,
id
:
'bidConfirm'
,
componentName
:
'BidConfirm'
},
// { title: '招标物料', id: 'bidMaterial', componentName: "BidMaterial" },
// { title: '招标要求', id: 'bidNeed', type: "bidNeed" },
// { title: '报名要求', id: 'registerNeed', type: "registerNeed" },
// { title: '资格预审要求', id: 'checkNeed', type: "checkNeed" },
// { title: '评标要求', id: 'remarkNeed', type: "remarkNeed" },
// { title: '其他要求', id: 'otherNeed', type: "otherNeed" },
// { title: '招标方式', id: 'bidWay', componentName: "BidMethod" },
{
title
:
'流转记录'
,
id
:
'transferRecord'
,
componentName
:
"BidTransformRecord"
},
]
return
(
<
div
>
<
BidDetailContext
.
Provider
value=
{
formContext
}
>
<
BidDetailHeader
detailList=
{
detailList
}
formContext=
{
formContext
}
anchorList=
{
anchorTitleList
}
backLink=
"/memberCenter/procurementAbility/callForBids/callForBidsSearch"
extraRight=
{
<
Button
type=
'primary'
>
单据审核
</
Button
>
}
/>
<
OrderDetailWrapper
>
<
PreLoading
loading=
{
!
formContext
.
data
}
active
paragraph=
{
{
rows
:
6
}
}
>
<
BidDetailSection
formContext=
{
formContext
}
anchorList=
{
anchorTitleList
}
type=
"callForBid"
/>
</
PreLoading
>
</
OrderDetailWrapper
>
<
OrderPayModal
currentRef=
{
payRef
}
/>
</
BidDetailContext
.
Provider
>
</
div
>
);
};
export
default
ReadyQualifityCheckedDetail
;
src/pages/procurement/callForBids/readyConfirmBid/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useRef
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Button
,
Space
,
Dropdown
,
Menu
,
message
}
from
'antd'
import
{
StandardTable
}
from
'god'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
PublicApi
}
from
'@/services/api'
import
{
useSelfTable
}
from
'./model/useSelfTable'
import
{
PlusCircleOutlined
,
DownOutlined
,
DeleteOutlined
}
from
'@ant-design/icons'
import
DropDeleteDown
from
'@/components/DropDeleteDown'
import
{
tableListSchema
}
from
'./schema'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PurchaseOrderInsideWorkState
}
from
'@/constants'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
// 待定标 招标
export
interface
ReadyConfirmBidProps
{}
const
fetchTableData
=
async
(
params
)
=>
{
const
{
data
}
=
await
PublicApi
.
getOrderProcurementReviewedListOne
(
params
)
return
data
}
// TODO
const
ReadyConfirmBid
:
React
.
FC
<
ReadyConfirmBidProps
>
=
(
props
)
=>
{
const
{
columns
,
ref
,
rowSelection
,
rowSelectionCtl
}
=
useSelfTable
()
const
{
run
,
loading
}
=
useHttpRequest
(
PublicApi
.
postOrderProcurementOrderReviewedAll
)
const
handleSubmitBatch
=
async
()
=>
{
if
(
rowSelectionCtl
.
selectRow
.
length
===
0
)
{
message
.
error
(
'请先勾选订单'
)
return
;
}
const
canBitch
=
!
rowSelectionCtl
.
selectRow
.
some
(
v
=>
v
.
interiorState
!==
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
)
if
(
canBitch
)
{
const
{
code
}
=
await
run
({
ids
:
rowSelectionCtl
.
selectedRowKeys
})
if
(
code
===
1000
)
{
ref
.
current
.
reload
()
rowSelectionCtl
.
setSelectRow
([])
rowSelectionCtl
.
setSelectedRowKeys
([])
}
}
else
{
message
.
error
(
'只能批量提交内部状态为审核中的订单'
)
}
}
return
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
fetchTableData=
{
params
=>
fetchTableData
(
params
)
}
// rowSelection={rowSelection}
columns=
{
columns
}
currentRef=
{
ref
}
rowKey=
{
'id'
}
formilyLayouts=
{
{
justify
:
'space-between'
}
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
tableListSchema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'orderNo'
,
FORM_FILTER_PATH
,
);
},
components
:
{
DateRangePickerUnix
,
Submit
}
},
layouts
:
{
order
:
2
,
span
:
24
}
}
}
// formilyChilds={{
// children: <Space>
// <Button onClick={handleSubmitBatch} loading={loading}>批量审核通过</Button>
// </Space>,
// layouts: {
// span: 8
// }
// }}
/>
</
Card
>
</
PageHeaderWrapper
>
}
ReadyConfirmBid
.
defaultProps
=
{}
export
default
ReadyConfirmBid
src/pages/procurement/callForBids/readyConfirmBid/model/useSelfTable.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useRef
}
from
'react'
import
{
Button
}
from
'antd'
import
{
history
}
from
'umi'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PurchaseOrderInsideWorkState
}
from
'@/constants'
import
{
baseBidListColumns
}
from
'@/pages/procurement/constants'
// 待审核报名 招标
export
const
useSelfTable
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
[
rowSelection
,
rowSelectionCtl
]
=
useRowSelectionTable
({
customKey
:
'id'
,
extendsSelection
:
{
getCheckboxProps
:
record
=>
({
// 不等于可提交审核的 都无法通过批量提交
disabled
:
record
.
interiorState
!==
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
,
interiorState
:
record
.
interiorState
,
})
}})
const
handleSubmit
=
async
(
record
)
=>
{
if
(
record
.
interiorState
===
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
)
{
history
.
push
(
`/memberCenter/tranactionAbility/purchaseOrder/firstApprovedOrder/detail?id=
${
record
.
id
}
`
)
}
// await PublicApi.postOrderQuotationBeReviewed({id})
// ref.current.reload()
}
const
secondColumns
:
any
[]
=
baseBidListColumns
.
concat
([
{
title
:
'操作'
,
align
:
'center'
,
dataIndex
:
'ctl'
,
key
:
'ctl'
,
render
:
(
text
,
record
)
=>
<>
{
record
.
interiorState
===
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
&&
<
Button
type=
'link'
onClick=
{
()
=>
handleSubmit
(
record
)
}
>
审核
</
Button
>
}
</>
}
])
return
{
columns
:
secondColumns
,
ref
,
rowSelection
,
rowSelectionCtl
}
}
src/pages/procurement/callForBids/readyConfirmBid/schema/index.ts
0 → 100644
View file @
27c5c89c
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
OrderTypeMap
,
PurchaseOrderInsideWorkStateTexts
,
PurchaseOrderOutWorkStateTexts
}
from
'@/constants'
;
/**
* 除了订单必填字段, 默认
*/
export
const
tableListSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
orderNo
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入订单编号'
,
align
:
'flex-end'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
inline
:
true
,
colStyle
:
{
marginLeft
:
20
}
},
properties
:
{
orderThe
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入订单摘要'
,
}
},
"supplyMembersName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入供应会员名称'
}
},
"type"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
},
enum
:
Object
.
keys
(
OrderTypeMap
).
map
(
item
=>
({
label
:
OrderTypeMap
[
item
],
value
:
item
,
}))
},
"[startCreateTime,endCreateTime]"
:
{
type
:
'array'
,
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
}
}
src/pages/procurement/callForBids/readyPassBid/detail/index.less
0 → 100644
View file @
27c5c89c
src/pages/procurement/callForBids/readyPassBid/detail/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useState
,
useCallback
,
useRef
,
useContext
,
useEffect
,
createRef
}
from
'react'
;
import
{
history
}
from
'umi'
import
{
Button
}
from
'antd'
;
import
style
from
'./index.less'
import
OrderDetailWrapper
from
'@/pages/transaction/components/OrderDetailWrapper'
;
import
PreLoading
from
'@/components/PreLoading'
;
import
OrderPayModal
from
'@/pages/transaction/components/orderPayModal'
;
import
{
BidDetailContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
{
useBidDetail
}
from
'@/pages/procurement/_public/bid/effects/useBidDetail'
;
import
BidDetailHeader
from
'@/pages/procurement/components/bidDetailHeader'
;
import
BidDetailSection
from
'@/pages/procurement/components/bidDetailSection'
;
const
ReadyPassBidDetail
:
React
.
FC
=
()
=>
{
const
{
formContext
,
id
,
detailList
}
=
useBidDetail
({
type
:
'purchaseOrder'
})
const
{
data
,
currentPayInfoId
}
=
formContext
const
payRef
=
useRef
<
any
>
({})
/** 约定好 对应的锚点title和元素id映射 */
// type? 用于区分DescriptionsInfo组件的内容
// componentName? 用于区分不同组件的渲染
const
anchorTitleList
=
[
{
title
:
'流转进度'
,
id
:
'transferProcess'
,
componentName
:
'TransferProcess'
},
{
title
:
'基本信息'
,
id
:
'baseicInfo'
,
type
:
'basicInfo'
},
{
title
:
'评标报告'
,
id
:
'remarkBidReport'
,
componentName
:
'RemarkBidReport'
},
{
title
:
'会员参标信息'
,
id
:
'participateInfo'
,
componentName
:
'ParticipateInfo'
},
{
title
:
'招标定标'
,
id
:
'bidConfirm'
,
componentName
:
'BidConfirm'
},
// { title: '招标物料', id: 'bidMaterial', componentName: "BidMaterial" },
// { title: '招标要求', id: 'bidNeed', type: "bidNeed" },
// { title: '报名要求', id: 'registerNeed', type: "registerNeed" },
// { title: '资格预审要求', id: 'checkNeed', type: "checkNeed" },
// { title: '评标要求', id: 'remarkNeed', type: "remarkNeed" },
// { title: '其他要求', id: 'otherNeed', type: "otherNeed" },
// { title: '招标方式', id: 'bidWay', componentName: "BidMethod" },
{
title
:
'流转记录'
,
id
:
'transferRecord'
,
componentName
:
"BidTransformRecord"
},
]
return
(
<
div
>
<
BidDetailContext
.
Provider
value=
{
formContext
}
>
<
BidDetailHeader
detailList=
{
detailList
}
formContext=
{
formContext
}
anchorList=
{
anchorTitleList
}
backLink=
"/memberCenter/procurementAbility/callForBids/callForBidsSearch"
extraRight=
{
<
Button
type=
'primary'
>
单据审核
</
Button
>
}
/>
<
OrderDetailWrapper
>
<
PreLoading
loading=
{
!
formContext
.
data
}
active
paragraph=
{
{
rows
:
6
}
}
>
<
BidDetailSection
formContext=
{
formContext
}
anchorList=
{
anchorTitleList
}
type=
"callForBid"
/>
</
PreLoading
>
</
OrderDetailWrapper
>
<
OrderPayModal
currentRef=
{
payRef
}
/>
</
BidDetailContext
.
Provider
>
</
div
>
);
};
export
default
ReadyPassBidDetail
;
src/pages/procurement/callForBids/readyPassBid/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useRef
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Button
,
Space
,
Dropdown
,
Menu
,
message
}
from
'antd'
import
{
StandardTable
}
from
'god'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
PublicApi
}
from
'@/services/api'
import
{
useSelfTable
}
from
'./model/useSelfTable'
import
{
PlusCircleOutlined
,
DownOutlined
,
DeleteOutlined
}
from
'@ant-design/icons'
import
DropDeleteDown
from
'@/components/DropDeleteDown'
import
{
tableListSchema
}
from
'./schema'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PurchaseOrderInsideWorkState
}
from
'@/constants'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
// 待确认定标 招标
export
interface
ReadyPassBidProps
{}
const
fetchTableData
=
async
(
params
)
=>
{
const
{
data
}
=
await
PublicApi
.
getOrderProcurementReviewedListOne
(
params
)
return
data
}
// TODO
const
ReadyPassBid
:
React
.
FC
<
ReadyPassBidProps
>
=
(
props
)
=>
{
const
{
columns
,
ref
,
rowSelection
,
rowSelectionCtl
}
=
useSelfTable
()
const
{
run
,
loading
}
=
useHttpRequest
(
PublicApi
.
postOrderProcurementOrderReviewedAll
)
const
handleSubmitBatch
=
async
()
=>
{
if
(
rowSelectionCtl
.
selectRow
.
length
===
0
)
{
message
.
error
(
'请先勾选订单'
)
return
;
}
const
canBitch
=
!
rowSelectionCtl
.
selectRow
.
some
(
v
=>
v
.
interiorState
!==
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
)
if
(
canBitch
)
{
const
{
code
}
=
await
run
({
ids
:
rowSelectionCtl
.
selectedRowKeys
})
if
(
code
===
1000
)
{
ref
.
current
.
reload
()
rowSelectionCtl
.
setSelectRow
([])
rowSelectionCtl
.
setSelectedRowKeys
([])
}
}
else
{
message
.
error
(
'只能批量提交内部状态为审核中的订单'
)
}
}
return
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
fetchTableData=
{
params
=>
fetchTableData
(
params
)
}
// rowSelection={rowSelection}
columns=
{
columns
}
currentRef=
{
ref
}
rowKey=
{
'id'
}
formilyLayouts=
{
{
justify
:
'space-between'
}
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
tableListSchema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'orderNo'
,
FORM_FILTER_PATH
,
);
},
components
:
{
DateRangePickerUnix
,
Submit
}
},
layouts
:
{
order
:
2
,
span
:
24
}
}
}
formilyChilds=
{
{
children
:
<
Space
>
<
Button
onClick=
{
handleSubmitBatch
}
loading=
{
loading
}
>
批量审核通过
</
Button
>
</
Space
>,
layouts
:
{
span
:
8
}
}
}
/>
</
Card
>
</
PageHeaderWrapper
>
}
ReadyPassBid
.
defaultProps
=
{}
export
default
ReadyPassBid
src/pages/procurement/callForBids/readyPassBid/model/useSelfTable.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useRef
}
from
'react'
import
{
Button
}
from
'antd'
import
{
history
}
from
'umi'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PurchaseOrderInsideWorkState
}
from
'@/constants'
import
{
baseBidListColumns
}
from
'@/pages/procurement/constants'
// 待确认定标 招标
export
const
useSelfTable
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
[
rowSelection
,
rowSelectionCtl
]
=
useRowSelectionTable
({
customKey
:
'id'
,
extendsSelection
:
{
getCheckboxProps
:
record
=>
({
// 不等于可提交审核的 都无法通过批量提交
disabled
:
record
.
interiorState
!==
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
,
interiorState
:
record
.
interiorState
,
})
}})
const
handleSubmit
=
async
(
record
)
=>
{
if
(
record
.
interiorState
===
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
)
{
history
.
push
(
`/memberCenter/tranactionAbility/purchaseOrder/firstApprovedOrder/detail?id=
${
record
.
id
}
`
)
}
// await PublicApi.postOrderQuotationBeReviewed({id})
// ref.current.reload()
}
const
secondColumns
:
any
[]
=
baseBidListColumns
.
concat
([
{
title
:
'操作'
,
align
:
'center'
,
dataIndex
:
'ctl'
,
key
:
'ctl'
,
render
:
(
text
,
record
)
=>
<>
{
record
.
interiorState
===
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
&&
<
Button
type=
'link'
onClick=
{
()
=>
handleSubmit
(
record
)
}
>
审核
</
Button
>
}
</>
}
])
return
{
columns
:
secondColumns
,
ref
,
rowSelection
,
rowSelectionCtl
}
}
src/pages/procurement/callForBids/readyPassBid/schema/index.ts
0 → 100644
View file @
27c5c89c
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
OrderTypeMap
,
PurchaseOrderInsideWorkStateTexts
,
PurchaseOrderOutWorkStateTexts
}
from
'@/constants'
;
/**
* 除了订单必填字段, 默认
*/
export
const
tableListSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
orderNo
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入订单编号'
,
align
:
'flex-end'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
inline
:
true
,
colStyle
:
{
marginLeft
:
20
}
},
properties
:
{
orderThe
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入订单摘要'
,
}
},
"supplyMembersName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入供应会员名称'
}
},
"type"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
},
enum
:
Object
.
keys
(
OrderTypeMap
).
map
(
item
=>
({
label
:
OrderTypeMap
[
item
],
value
:
item
,
}))
},
"[startCreateTime,endCreateTime]"
:
{
type
:
'array'
,
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
}
}
src/pages/procurement/callForBids/readySendBidNotice/detail/index.less
0 → 100644
View file @
27c5c89c
src/pages/procurement/callForBids/readySendBidNotice/detail/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useState
,
useCallback
,
useRef
,
useContext
,
useEffect
,
createRef
}
from
'react'
;
import
{
history
}
from
'umi'
import
{
Button
}
from
'antd'
;
import
style
from
'./index.less'
import
OrderDetailWrapper
from
'@/pages/transaction/components/OrderDetailWrapper'
;
import
PreLoading
from
'@/components/PreLoading'
;
import
OrderPayModal
from
'@/pages/transaction/components/orderPayModal'
;
import
{
BidDetailContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
{
useBidDetail
}
from
'@/pages/procurement/_public/bid/effects/useBidDetail'
;
import
BidDetailHeader
from
'@/pages/procurement/components/bidDetailHeader'
;
import
BidDetailSection
from
'@/pages/procurement/components/bidDetailSection'
;
const
ReadySendBidNoticeDetail
:
React
.
FC
=
()
=>
{
const
{
formContext
,
id
,
detailList
}
=
useBidDetail
({
type
:
'purchaseOrder'
})
const
{
data
,
currentPayInfoId
}
=
formContext
const
payRef
=
useRef
<
any
>
({})
/** 约定好 对应的锚点title和元素id映射 */
// type? 用于区分DescriptionsInfo组件的内容
// componentName? 用于区分不同组件的渲染
const
anchorTitleList
=
[
{
title
:
'流转进度'
,
id
:
'transferProcess'
,
componentName
:
'TransferProcess'
},
{
title
:
'基本信息'
,
id
:
'baseicInfo'
,
type
:
'basicInfo'
},
{
title
:
'流转记录'
,
id
:
'transferRecord'
,
componentName
:
"BidTransformRecord"
},
]
return
(
<
div
>
<
BidDetailContext
.
Provider
value=
{
formContext
}
>
<
BidDetailHeader
detailList=
{
detailList
}
formContext=
{
formContext
}
anchorList=
{
anchorTitleList
}
backLink=
"/memberCenter/procurementAbility/callForBids/callForBidsSearch"
extraRight=
{
<
Button
type=
'primary'
>
发送中标公示
</
Button
>
}
/>
<
OrderDetailWrapper
>
<
PreLoading
loading=
{
!
formContext
.
data
}
active
paragraph=
{
{
rows
:
6
}
}
>
<
BidDetailSection
formContext=
{
formContext
}
anchorList=
{
anchorTitleList
}
type=
"callForBid"
/>
</
PreLoading
>
</
OrderDetailWrapper
>
<
OrderPayModal
currentRef=
{
payRef
}
/>
</
BidDetailContext
.
Provider
>
</
div
>
);
};
export
default
ReadySendBidNoticeDetail
;
src/pages/procurement/callForBids/readySendBidNotice/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useRef
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Button
,
Space
,
Dropdown
,
Menu
,
message
}
from
'antd'
import
{
StandardTable
}
from
'god'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
PublicApi
}
from
'@/services/api'
import
{
useSelfTable
}
from
'./model/useSelfTable'
import
{
PlusCircleOutlined
,
DownOutlined
,
DeleteOutlined
}
from
'@ant-design/icons'
import
DropDeleteDown
from
'@/components/DropDeleteDown'
import
{
tableListSchema
}
from
'./schema'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PurchaseOrderInsideWorkState
}
from
'@/constants'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
// 待发中标公示 招标
export
interface
ReadySendBidNoticeProps
{}
const
fetchTableData
=
async
(
params
)
=>
{
const
{
data
}
=
await
PublicApi
.
getOrderProcurementReviewedListOne
(
params
)
return
data
}
// TODO
const
ReadySendBidNotice
:
React
.
FC
<
ReadySendBidNoticeProps
>
=
(
props
)
=>
{
const
{
columns
,
ref
,
rowSelection
,
rowSelectionCtl
}
=
useSelfTable
()
const
{
run
,
loading
}
=
useHttpRequest
(
PublicApi
.
postOrderProcurementOrderReviewedAll
)
const
handleSubmitBatch
=
async
()
=>
{
if
(
rowSelectionCtl
.
selectRow
.
length
===
0
)
{
message
.
error
(
'请先勾选订单'
)
return
;
}
const
canBitch
=
!
rowSelectionCtl
.
selectRow
.
some
(
v
=>
v
.
interiorState
!==
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
)
if
(
canBitch
)
{
const
{
code
}
=
await
run
({
ids
:
rowSelectionCtl
.
selectedRowKeys
})
if
(
code
===
1000
)
{
ref
.
current
.
reload
()
rowSelectionCtl
.
setSelectRow
([])
rowSelectionCtl
.
setSelectedRowKeys
([])
}
}
else
{
message
.
error
(
'只能批量提交内部状态为审核中的订单'
)
}
}
return
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
fetchTableData=
{
params
=>
fetchTableData
(
params
)
}
// rowSelection={rowSelection}
columns=
{
columns
}
currentRef=
{
ref
}
rowKey=
{
'id'
}
formilyLayouts=
{
{
justify
:
'space-between'
}
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
tableListSchema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'orderNo'
,
FORM_FILTER_PATH
,
);
},
components
:
{
DateRangePickerUnix
,
Submit
}
},
layouts
:
{
order
:
2
,
span
:
24
}
}
}
formilyChilds=
{
{
children
:
<
Space
>
<
Button
onClick=
{
handleSubmitBatch
}
loading=
{
loading
}
>
批量审核通过
</
Button
>
</
Space
>,
layouts
:
{
span
:
8
}
}
}
/>
</
Card
>
</
PageHeaderWrapper
>
}
ReadySendBidNotice
.
defaultProps
=
{}
export
default
ReadySendBidNotice
src/pages/procurement/callForBids/readySendBidNotice/model/useSelfTable.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useRef
}
from
'react'
import
{
Button
}
from
'antd'
import
{
history
}
from
'umi'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PurchaseOrderInsideWorkState
}
from
'@/constants'
import
CustomTag
from
'@/pages/procurement/components/CustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
import
EyePreview
from
'@/components/EyePreview'
const
baseBidListColumns
=
[
{
title
:
'序号'
,
align
:
'center'
,
dataIndex
:
'id'
,
key
:
'id'
,
render
:
(
t
,
r
,
i
)
=>
++
i
},
{
title
:
'招标编号/项目'
,
align
:
'center'
,
dataIndex
:
'orderNo'
,
key
:
'orderNo'
,
render
:
(
text
,
record
)
=>
<>
<
EyePreview
url=
{
`${history.location.pathname}/detail?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
<
div
>
{
text
}
</
div
>
</>
},
{
title
:
'采购类型'
,
align
:
'center'
,
dataIndex
:
'type'
,
key
:
'type'
,
},
{
title
:
'招标方式'
,
align
:
'center'
,
dataIndex
:
'supplyMembersName'
,
key
:
'supplyMembersName'
,
},
{
title
:
'外部状态'
,
align
:
'center'
,
dataIndex
:
'externalState'
,
key
:
'externalState'
,
render
:
text
=>
<
CustomTag
status=
{
text
}
type=
'out'
/>
},
{
title
:
'内部状态'
,
align
:
'center'
,
dataIndex
:
'interiorState'
,
key
:
'interiorState'
,
render
:
(
text
)
=>
<
CustomBadge
status=
{
text
}
type=
'inside'
/>
},
]
// 待发中标公示 招标
export
const
useSelfTable
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
[
rowSelection
,
rowSelectionCtl
]
=
useRowSelectionTable
({
customKey
:
'id'
,
extendsSelection
:
{
getCheckboxProps
:
record
=>
({
// 不等于可提交审核的 都无法通过批量提交
disabled
:
record
.
interiorState
!==
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
,
interiorState
:
record
.
interiorState
,
})
}})
const
handleSubmit
=
async
(
record
)
=>
{
if
(
record
.
interiorState
===
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
)
{
history
.
push
(
`/memberCenter/tranactionAbility/purchaseOrder/firstApprovedOrder/detail?id=
${
record
.
id
}
`
)
}
// await PublicApi.postOrderQuotationBeReviewed({id})
// ref.current.reload()
}
const
secondColumns
:
any
[]
=
baseBidListColumns
.
concat
([
{
title
:
'操作'
,
align
:
'center'
,
dataIndex
:
'ctl'
,
key
:
'ctl'
,
render
:
(
text
,
record
)
=>
<>
{
record
.
interiorState
===
PurchaseOrderInsideWorkState
.
ONE_LEVEL_AUDIT_ORDER
&&
<
Button
type=
'link'
onClick=
{
()
=>
handleSubmit
(
record
)
}
>
审核
</
Button
>
}
</>
}
])
return
{
columns
:
secondColumns
,
ref
,
rowSelection
,
rowSelectionCtl
}
}
src/pages/procurement/callForBids/readySendBidNotice/schema/index.ts
0 → 100644
View file @
27c5c89c
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
OrderTypeMap
,
PurchaseOrderInsideWorkStateTexts
,
PurchaseOrderOutWorkStateTexts
}
from
'@/constants'
;
/**
* 除了订单必填字段, 默认
*/
export
const
tableListSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
orderNo
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入订单编号'
,
align
:
'flex-end'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
inline
:
true
,
colStyle
:
{
marginLeft
:
20
}
},
properties
:
{
orderThe
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入订单摘要'
,
}
},
"supplyMembersName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入供应会员名称'
}
},
"type"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
},
enum
:
Object
.
keys
(
OrderTypeMap
).
map
(
item
=>
({
label
:
OrderTypeMap
[
item
],
value
:
item
,
}))
},
"[startCreateTime,endCreateTime]"
:
{
type
:
'array'
,
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
}
}
src/pages/procurement/components/bidConfirm/components/givenBidItem/index.less
0 → 100644
View file @
27c5c89c
src/pages/procurement/components/bidConfirm/components/givenBidItem/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useState
,
useRef
,
useContext
,
useEffect
}
from
'react'
import
{
Form
,
Input
,
Checkbox
,
Row
,
Col
,
InputNumber
}
from
'antd'
;
import
style
from
'../../index.less'
/**
* 招标定标表格中 授标的每一项
*/
export
interface
GivenBidItemProps
{
}
export
const
GivenBidItem
:
React
.
FC
<
GivenBidItemProps
>
=
({})
=>
{
const
onChangeInput
=
(
v
)
=>
{
console
.
log
(
v
,
'改变'
)
}
const
chanegChecked
=
(
e
)
=>
{
if
(
e
.
target
.
checked
)
{
e
.
nativeEvent
.
target
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
style
.
border
=
'1px solid #00B37A'
e
.
nativeEvent
.
target
.
parentElement
.
parentElement
.
nextSibling
.
style
.
display
=
'inline-block'
}
else
{
e
.
nativeEvent
.
target
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
style
.
border
=
'none'
e
.
nativeEvent
.
target
.
parentElement
.
parentElement
.
nextSibling
.
style
.
display
=
'none'
}
}
return
<
div
className=
{
style
.
throwBidInfo
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
含税单价:
</
p
></
Col
>
<
Col
><
p
>
¥19.00
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
含税金额:
</
p
></
Col
>
<
Col
><
p
>
¥30000
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
是否含税:
</
p
></
Col
>
<
Col
><
p
>
是
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
税率:
</
p
></
Col
>
<
Col
><
p
>
7%
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标:
</
p
></
Col
>
<
Col
>
<
p
>
<
Checkbox
defaultChecked=
{
false
}
style=
{
{
marginRight
:
16
}
}
onChange=
{
chanegChecked
}
/>
<
InputNumber
defaultValue=
{
100
}
min=
{
0
}
max=
{
100
}
formatter=
{
value
=>
`${value}%`
}
parser=
{
value
=>
value
.
replace
(
'%'
,
''
)
}
onChange=
{
onChangeInput
}
style=
{
{
display
:
'none'
}
}
/>
</
p
>
</
Col
>
</
Row
>
</
div
>
</
div
>
}
GivenBidItem
.
defaultProps
=
{}
export
default
GivenBidItem
src/pages/procurement/components/bidConfirm/components/totalAmount/index.less
0 → 100644
View file @
27c5c89c
src/pages/procurement/components/bidConfirm/components/totalAmount/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useState
,
useRef
,
useContext
,
useEffect
}
from
'react'
import
{
Form
,
Input
,
Divider
,
Row
,
Col
}
from
'antd'
;
import
style
from
'../../index.less'
/**
* 招标定标表格底部的 合计模块
*/
export
interface
TotalAmountProps
{
}
export
const
TotalAmount
:
React
.
FC
<
TotalAmountProps
>
=
({})
=>
{
return
<
div
className=
{
style
.
totalWrapper
}
>
<
Row
>
<
Col
span=
{
4
}
></
Col
>
<
Col
span=
{
4
}
></
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价小计:
</
p
></
Col
>
<
Col
><
p
>
¥156,000.00(含税)
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价排名:
</
p
></
Col
>
<
Col
><
p
>
1
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
最低标价:
</
p
></
Col
>
<
Col
><
p
>
3
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价小计:
</
p
></
Col
>
<
Col
><
p
>
¥158,000.00(含税)
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价排名:
</
p
></
Col
>
<
Col
><
p
>
2
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
最低标价:
</
p
></
Col
>
<
Col
><
p
>
2
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价小计:
</
p
></
Col
>
<
Col
><
p
>
¥168,000.00(含税)
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价排名:
</
p
></
Col
>
<
Col
><
p
>
3
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
最低标价:
</
p
></
Col
>
<
Col
><
p
>
0
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价小计:
</
p
></
Col
>
<
Col
><
p
>
¥176,000.00(含税)
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价排名:
</
p
></
Col
>
<
Col
><
p
>
4
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
最低标价:
</
p
></
Col
>
<
Col
><
p
>
3
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
</
Row
>
<
Divider
dashed=
{
true
}
style=
{
{
margin
:
0
,
marginBottom
:
8
}
}
/>
<
Row
>
<
Col
span=
{
4
}
></
Col
>
<
Col
span=
{
4
}
></
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标数量:
</
p
></
Col
>
<
Col
><
p
>
3
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标总额:
</
p
></
Col
>
<
Col
><
p
>
¥100,000.00(含税)
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标数量:
</
p
></
Col
>
<
Col
><
p
>
1
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标总额:
</
p
></
Col
>
<
Col
><
p
>
¥54,000.00(含税)
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标数量:
</
p
></
Col
>
<
Col
><
p
>
0
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标总额:
</
p
></
Col
>
<
Col
><
p
>
0
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标数量:
</
p
></
Col
>
<
Col
><
p
>
3
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标总额:
</
p
></
Col
>
<
Col
><
p
>
0
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
</
Row
>
</
div
>
}
TotalAmount
.
defaultProps
=
{}
export
default
TotalAmount
src/pages/procurement/components/bidConfirm/index.less
0 → 100644
View file @
27c5c89c
.card-list {
font-size: 12px;
// line-height: 20px;
// margin-top: 24px;
// border: 1px solid #F4F5F7;
// padding: 12px;
p {
margin-bottom: 8px;
}
}
.card-list_title {
font-size: 12px;
color: #909399;
}
.bidConfirmWrapper {
:global {
.ant-row {
.ant-col {
.ant-row {
.ant-col-4 {
padding-top: 0;
padding-bottom: 0;
margin-bottom: 2px;
margin-top: 2px;
}
}
}
}
}
background: #F4F5F7;
.bidTableHead {
height: 32px;
line-height: 32px;
background: #F4F5F7;
border: 4px solid #F4F5F7;
color: #303133;
padding-left: 16px;
img {
width: 24px;
height: 24px;
}
.levelCircle {
display: inline-block;
width: 20px;
height: 20px;
line-height: 20px;
background: #EBECF0;
border-radius: 50%;
color: #909399;
margin-right: 8px;
text-align: center;
}
}
.materialInfo, .amountInfo, .throwBidInfo, .totalWrapper {
height: 162px;
background-color: #fff;
padding: 16px;
position: relative;
overflow: hidden;
}
.rankNumber {
width: 32px;
height: 32px;
font-size: 12px;
font-weight: 500;
color: #606266;
line-height: 44px;
border-radius: 50%;
background-color: #F4F5F7;
position: absolute;
top: -16px;
left: -16px;
text-align: right;
padding-right: 6px;
}
}
src/pages/procurement/components/bidConfirm/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useContext
,
useState
}
from
'react'
import
{
Row
,
Col
}
from
'antd'
import
MellowCard
from
'@/components/MellowCard'
import
{
BidDetailContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
style
from
'./index.less'
import
level1
from
'@/assets/imgs/rank1.png'
import
level2
from
'@/assets/imgs/rank2.png'
import
level3
from
'@/assets/imgs/rank3.png'
import
TotalAmount
from
'./components/totalAmount'
;
import
GivenBidItem
from
'./components/givenBidItem'
;
/**
* 招标定标
*/
export
interface
BidConfirmProps
{
cardTitle
?:
string
;
}
const
BidConfirm
:
React
.
FC
<
BidConfirmProps
>
=
({
cardTitle
})
=>
{
const
bidDetailContext
=
useContext
(
BidDetailContext
)
const
{
data
,
ctl
}
=
bidDetailContext
return
(
<
MellowCard
title=
{
cardTitle
}
style=
{
{
marginTop
:
24
}
}
bordered=
{
false
}
fullHeight
>
<
div
className=
{
style
.
bidConfirmWrapper
}
>
<
Row
gutter=
{
[
0
,
4
]
}
>
<
Col
span=
{
24
}
>
<
Row
>
<
Col
span=
{
4
}
><
p
className=
{
style
.
bidTableHead
}
>
采购物料
</
p
></
Col
>
<
Col
span=
{
4
}
><
p
className=
{
style
.
bidTableHead
}
>
采购数量
</
p
></
Col
>
<
Col
span=
{
4
}
><
p
className=
{
style
.
bidTableHead
}
><
img
src=
{
level1
}
alt=
"排名一"
/>
广州白马皮具交易中心
</
p
></
Col
>
<
Col
span=
{
4
}
><
p
className=
{
style
.
bidTableHead
}
><
img
src=
{
level2
}
alt=
"排名二"
/>
东莞绿洲皮具有限公司
</
p
></
Col
>
<
Col
span=
{
4
}
><
p
className=
{
style
.
bidTableHead
}
><
img
src=
{
level3
}
alt=
"排名三"
/>
江门华飞皮具有限公司
</
p
></
Col
>
<
Col
span=
{
4
}
><
p
className=
{
style
.
bidTableHead
}
><
span
className=
{
style
.
levelCircle
}
>
4
</
span
>
广州万福皮具有限公司
</
p
></
Col
>
</
Row
>
<
Row
gutter=
{
[
0
,
4
]
}
style=
{
{
margin
:
'0 4px'
}
}
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
.
materialInfo
}
>
<
span
className=
{
style
.
rankNumber
}
>
1
</
span
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
物料编号:
</
p
></
Col
>
<
Col
><
p
>
Q89YTE1
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
物料名称:
</
p
></
Col
>
<
Col
><
p
>
进口头层牛皮荔枝纹
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
规格型号:
</
p
></
Col
>
<
Col
><
p
>
红色/XL/厚1.5mm
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
品类:
</
p
></
Col
>
<
Col
><
p
>
牛皮
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
品牌:
</
p
></
Col
>
<
Col
><
p
>
PELLE
</
p
></
Col
>
</
Row
>
</
div
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
.
amountInfo
}
>
<
span
>
3000
</
span
>
<
br
/>
<
span
style=
{
{
color
:
"#909399"
}
}
>
(次)
</
span
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
GivenBidItem
/>
</
Col
>
<
Col
span=
{
4
}
>
<
GivenBidItem
/>
</
Col
>
<
Col
span=
{
4
}
>
<
GivenBidItem
/>
</
Col
>
<
Col
span=
{
4
}
>
<
GivenBidItem
/>
</
Col
>
</
Row
>
<
Row
gutter=
{
[
0
,
4
]
}
style=
{
{
margin
:
'0 4px'
}
}
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
.
materialInfo
}
>
<
span
className=
{
style
.
rankNumber
}
>
2
</
span
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
物料编号:
</
p
></
Col
>
<
Col
><
p
>
Q89YTE1
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
物料名称:
</
p
></
Col
>
<
Col
><
p
>
进口头层牛皮荔枝纹
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
规格型号:
</
p
></
Col
>
<
Col
><
p
>
红色/XL/厚1.5mm
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
品类:
</
p
></
Col
>
<
Col
><
p
>
牛皮
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
品牌:
</
p
></
Col
>
<
Col
><
p
>
PELLE
</
p
></
Col
>
</
Row
>
</
div
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
.
amountInfo
}
>
<
span
>
3000
</
span
>
<
br
/>
<
span
style=
{
{
color
:
"#909399"
}
}
>
(次)
</
span
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
GivenBidItem
/>
</
Col
>
<
Col
span=
{
4
}
>
<
GivenBidItem
/>
</
Col
>
<
Col
span=
{
4
}
>
<
GivenBidItem
/>
</
Col
>
<
Col
span=
{
4
}
>
<
GivenBidItem
/>
</
Col
>
</
Row
>
<
Row
gutter=
{
[
0
,
4
]
}
style=
{
{
margin
:
'0 4px'
}
}
>
<
Col
span=
{
24
}
>
<
TotalAmount
/>
</
Col
>
</
Row
>
</
Col
>
</
Row
>
</
div
>
</
MellowCard
>)
}
BidConfirm
.
defaultProps
=
{}
export
default
BidConfirm
src/pages/procurement/components/bidDetailHeader/index.less
View file @
27c5c89c
...
...
@@ -21,6 +21,15 @@
background: #fff;
padding: 24px 24px 0;
:global {
.ant-row {
.ant-col-2 {
.ant-btn {
position: absolute;
top: 0;
right: 0;
}
}
}
.ant-anchor-wrapper {
min-height: auto;
}
...
...
@@ -97,4 +106,15 @@
top: 0;
width: 100%;
z-index: 10;
:global {
.ant-row {
.ant-col-2 {
.ant-btn {
position: fixed;
top: 16px;
right: 16px;
}
}
}
}
}
src/pages/procurement/components/bidDetailHeader/index.tsx
View file @
27c5c89c
...
...
@@ -87,7 +87,7 @@ const BidDetailHeader:React.FC<BidDetailHeaderProps> = ({
<
Row
>
{
<>
<
Col
span=
{
2
3
}
>
<
Col
span=
{
2
2
}
>
<
Row
align=
'middle'
>
<
Col
>
<
ArrowLeftOutlined
onClick=
{
()
=>
backLink
?
history
.
push
(
backLink
)
:
history
.
goBack
()
}
/>
...
...
@@ -120,7 +120,7 @@ const BidDetailHeader:React.FC<BidDetailHeaderProps> = ({
</
Col
>
</
Row
>
</
Col
>
<
Col
span=
{
1
}
>
{
extraRight
}
</
Col
>
<
Col
span=
{
2
}
>
{
extraRight
}
</
Col
>
</>
}
</
Row
>
...
...
src/pages/procurement/components/bidDetailSection/index.tsx
View file @
27c5c89c
...
...
@@ -8,6 +8,8 @@ import BidMethod from '../bidMethod'
import
BidTransformRecord
from
'../transferRecord'
import
BidParticulars
from
'../bidParticulars'
import
RemarkBidReport
from
'../remarkBidReport'
import
ParticipateInfo
from
'../participateInfo'
import
BidConfirm
from
'../bidConfirm'
export
interface
BidDetailSectionProps
{
formContext
:
any
,
...
...
@@ -47,7 +49,12 @@ const BidDetailSection:React.FC<BidDetailSectionProps> = ({
"BidTransformRecord"
:
BidTransformRecord
,
// 中标结果详情组件
"BidParticulars"
:
BidParticulars
,
// 评标报告
"RemarkBidReport"
:
RemarkBidReport
,
// 会员参标信息
"ParticipateInfo"
:
ParticipateInfo
,
// 招标定标
"BidConfirm"
:
BidConfirm
,
}
const
RenderDetailSection
=
({
componentList
})
=>
{
...
...
@@ -103,6 +110,12 @@ const BidDetailSection:React.FC<BidDetailSectionProps> = ({
case
"RemarkBidReport"
:
RcDom
=
(<
RemarkBidReport
cardTitle=
{
title
}
/>)
break
;
case
"ParticipateInfo"
:
RcDom
=
(<
ParticipateInfo
cardTitle=
{
title
}
/>)
break
;
case
"BidConfirm"
:
RcDom
=
(<
BidConfirm
cardTitle=
{
title
}
/>)
break
;
default
:
RcDom
=
(<
DescriptionsInfo
cardTitle=
{
title
}
type=
{
type
}
/>)
}
...
...
@@ -113,58 +126,6 @@ const BidDetailSection:React.FC<BidDetailSectionProps> = ({
formContext
.
data
&&
<
div
className=
{
[
style
.
anchorContentWrap
,
"anchorContent"
].
join
(
' '
)
}
>
<
RenderDetailSection
componentList=
{
anchorList
}
/>
{
/* <div id={anchorList[0]['id']}>
<TransferProcess
cardTitle={anchorList[0]['title']}
customTitleKey='operationalProcess'
customKey='state'
outerVerifyCurrent={findLastIndexFlowState(formContext.data.externalWorkflowFlowRecordLogResponses)}
innerVerifyCurrent={findLastIndexFlowState(formContext.data.interiorWorkflowFlowRecordLogResponses)}
outerVerifySteps={
formContext.data.externalWorkflowFlowRecordLogResponses ?
formContext.data.externalWorkflowFlowRecordLogResponses.map(item => ({
...item,
status: item.isExecute ? 'finish' : 'wait',
})) :
[]
}
innerVerifySteps={
formContext.data.interiorWorkflowFlowRecordLogResponses ?
formContext.data.interiorWorkflowFlowRecordLogResponses.map(item => ({
...item,
status: item.isExecute ? 'finish' : 'wait',
})) :
[]
}
></TransferProcess>
</div>
<div id={anchorList[1]['id']}>
<DescriptionsInfo cardTitle={anchorList[1]['title']} type="basicInfo" />
</div>
<div id={anchorList[2]['id']}>
<BidMaterial cardTitle={anchorList[2]['title']} />
</div>
<div id={anchorList[3]['id']}>
<DescriptionsInfo cardTitle={anchorList[3]['title']} type="bidNeed" />
</div>
<div id={anchorList[4]['id']}>
<DescriptionsInfo cardTitle={anchorList[4]['title']} type="registerNeed" />
</div>
<div id={anchorList[5]['id']}>
<DescriptionsInfo cardTitle={anchorList[5]['title']} type="checkNeed" />
</div>
<div id={anchorList[6]['id']}>
<DescriptionsInfo cardTitle={anchorList[6]['title']} type="remarkNeed" />
</div>
<div id={anchorList[7]['id']}>
<DescriptionsInfo cardTitle={anchorList[7]['title']} type="otherNeed" />
</div>
<div id={anchorList[8]['id']}>
<BidMethod cardTitle={anchorList[8]['title']} />
</div>
<div id={anchorList[9]['id']}>
<BidTransformRecord cardTitle={anchorList[9]['title']} />
</div> */
}
</
div
>
)
...
...
src/pages/procurement/components/participateInfo/index.less
0 → 100644
View file @
27c5c89c
.card-list {
font-size: 12px;
line-height: 20px;
margin-top: 24px;
// border: 1px solid #F4F5F7;
// padding: 12px;
}
.card-list_title {
font-size: 12px;
color: #909399;
}
.participateContent {
border: 1px solid #F4F5F7;
padding: 12px;
margin-bottom: 16px;
border-top: 1px solid #00B37A;
}
.amount {
font-weight: bold;
border-bottom: 1px dashed #EBECF0;
margin-bottom: 0;
padding-bottom: 12px;
span {
color: #909399
}
}
src/pages/procurement/components/participateInfo/index.tsx
0 → 100644
View file @
27c5c89c
import
React
,
{
useContext
,
useState
}
from
'react'
import
{
Table
,
Button
,
Radio
,
Tooltip
,
Row
,
Col
}
from
'antd'
import
MellowCard
from
'@/components/MellowCard'
import
{
BidDetailContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
{
QuestionCircleOutlined
,
UserOutlined
}
from
'@ant-design/icons'
;
import
style
from
'./index.less'
import
CustomTag
from
'../CustomTag'
;
/**
* 会员参标信息
*/
export
interface
ParticipateInfoProps
{
cardTitle
?:
string
;
}
const
ParticipateInfo
:
React
.
FC
<
ParticipateInfoProps
>
=
({
cardTitle
})
=>
{
const
bidDetailContext
=
useContext
(
BidDetailContext
)
const
{
data
,
ctl
}
=
bidDetailContext
const
mockData
=
[
{
company
:
'广州第三个官方工地公司'
,
amount
:
13516
,
isTax
:
true
,
status
:
1
,
createTime
:
'2012-12-14 23:35:43'
,
no
:
'HEGF05495'
,
},
{
company
:
'广州第三个官方工地公司'
,
amount
:
13516
,
isTax
:
false
,
status
:
1
,
createTime
:
'2012-12-14 23:35:43'
,
no
:
'HEGF05495'
,
},
{
company
:
'广州第三个官方工地公司'
,
amount
:
13516
,
isTax
:
false
,
status
:
2
,
createTime
:
'2012-12-14 23:35:43'
,
no
:
'HEGF05495'
,
},
{
company
:
'广州第三个官方工地公司'
,
amount
:
13516
,
isTax
:
true
,
status
:
1
,
createTime
:
'2012-12-14 23:35:43'
,
no
:
'HEGF05495'
,
},
{
company
:
'广州第三个官方工地公司'
,
amount
:
13516
,
isTax
:
true
,
status
:
0
,
createTime
:
'2012-12-14 23:35:43'
,
no
:
'HEGF05495'
,
},
{
company
:
'广州第三个官方工地公司'
,
amount
:
13516
,
isTax
:
true
,
status
:
1
,
createTime
:
'2012-12-14 23:35:43'
,
no
:
'HEGF05495'
,
},
{
company
:
'广州第三个官方工地公司'
,
amount
:
13516
,
isTax
:
true
,
status
:
2
,
createTime
:
'2012-12-14 23:35:43'
,
no
:
'HEGF05495'
,
},
]
return
(
<
MellowCard
title=
{
cardTitle
}
style=
{
{
marginTop
:
24
}
}
bordered=
{
false
}
fullHeight
>
<
div
className=
{
style
.
participateWrapper
}
>
<
Row
gutter=
{
[
16
,
0
]
}
>
{
mockData
.
map
((
item
,
index
)
=>
(<
Col
span=
{
4
}
key=
{
index
}
>
<
div
className=
{
style
.
participateContent
}
>
<
div
className=
{
style
.
topWrapper
}
>
<
h3
>
{
item
.
company
}
</
h3
>
<
p
className=
{
style
.
amount
}
>
¥
{
item
.
amount
}
<
span
>
{
item
.
isTax
?
' (含税)'
:
' (不含税)'
}
</
span
></
p
>
</
div
>
<
div
className=
{
style
.
contentWrapper
}
>
<
Row
className=
{
style
[
'card-list'
]
}
>
<
Col
span=
{
8
}
className=
{
style
[
'card-list_title'
]
}
>
环节状态:
</
Col
>
<
Col
>
<
CustomTag
type=
"out"
status=
{
item
.
status
}
/>
</
Col
>
</
Row
>
<
Row
className=
{
style
[
'card-list'
]
}
>
<
Col
span=
{
8
}
className=
{
style
[
'card-list_title'
]
}
>
投标时间:
</
Col
>
<
Col
>
{
item
.
createTime
}
</
Col
>
</
Row
>
<
Row
className=
{
style
[
'card-list'
]
}
>
<
Col
span=
{
8
}
className=
{
style
[
'card-list_title'
]
}
>
投标单号:
</
Col
>
<
Col
>
{
item
.
no
}
</
Col
>
</
Row
>
</
div
>
</
div
>
</
Col
>
))
}
</
Row
>
</
div
>
</
MellowCard
>)
}
ParticipateInfo
.
defaultProps
=
{}
export
default
ParticipateInfo
src/pages/procurement/components/remarkBidReport/index.less
View file @
27c5c89c
...
...
@@ -97,6 +97,9 @@
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: #6B778C;
}
.ant-table-thead > tr > th {
color: #909399;
}
}
}
}
src/pages/procurement/components/remarkBidReport/index.tsx
View file @
27c5c89c
...
...
@@ -240,24 +240,32 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({cardTitle}) => {
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
招标方式:
</
p
></
Col
>
<
Col
><
p
>
{
callForWay
===
1
?
'系统匹配'
:
'公开招标'
}
</
p
></
Col
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
会员:
</
p
></
Col
>
<
Col
><
p
>
广州室间隔度过后工地
</
p
></
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
推荐人:
</
p
></
Col
>
<
Col
><
p
>
佳士得拍卖行
</
p
></
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
理由:
</
p
></
Col
>
<
Col
><
p
>
无条件中标
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
招标方式
:
</
p
></
Col
>
<
Col
><
p
>
{
callForWay
===
1
?
'系统匹配'
:
'公开招标'
}
</
p
></
Col
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
会员
:
</
p
></
Col
>
<
Col
><
p
>
广州室间隔度过后工地
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
招标方式
:
</
p
></
Col
>
<
Col
><
p
>
{
callForWay
===
1
?
'系统匹配'
:
'公开招标'
}
</
p
></
Col
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
会员
:
</
p
></
Col
>
<
Col
><
p
>
广州室间隔度过后工地
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>
...
...
src/pages/procurement/constants/index.tsx
View file @
27c5c89c
...
...
@@ -34,6 +34,17 @@ export const outStatusText = [
"已废标"
,
]
// 评标中的环节状态
export
const
remarkProcessStatus
=
[
"未报名"
,
"已评标"
,
"未评标"
,
"未报名"
,
"未报价"
,
"报名审核未通过"
,
"资格审核未通过"
,
]
// 招标表格基本列
export
const
baseBidListColumns
:
any
[]
=
[
{
...
...
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