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
c871a82e
Commit
c871a82e
authored
May 20, 2021
by
前端-钟卫鹏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:
parent
ab92be49
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
430 additions
and
276 deletions
+430
-276
index.ts
src/constants/index.ts
+1
-1
index.tsx
src/pages/procurement/callForBids/addNewBid/index.tsx
+8
-9
index.tsx
...s/procurement/callForBids/addRemarkBidCommittee/index.tsx
+15
-5
index.tsx
...rocurement/callForBids/callForBidsSearch/detail/index.tsx
+5
-0
index.tsx
src/pages/procurement/callForBids/readyAddBid/index.tsx
+34
-19
index.tsx
.../procurement/callForBids/readyConfirmBid/detail/index.tsx
+2
-0
index.tsx
...rBids/readyExpertRemark/components/onlineRemark/index.tsx
+11
-1
index.tsx
...urement/callForBids/readySendBidNotice/constant/index.tsx
+2
-2
index.tsx
...ocurement/callForBids/readySendBidNotice/detail/index.tsx
+11
-9
useSelfTable.tsx
...ent/callForBids/readySendBidNotice/model/useSelfTable.tsx
+50
-1
index.ts
...rocurement/callForBids/readySendBidNotice/schema/index.ts
+1
-1
index.tsx
src/pages/procurement/callForBids/tenderSearch/index.tsx
+1
-1
index.ts
...ages/procurement/callForBids/tenderSearch/schema/index.ts
+1
-1
index.tsx
...t/components/bidConfirm/components/givenBidItem/index.tsx
+62
-26
index.tsx
...nt/components/bidConfirm/components/totalAmount/index.tsx
+44
-141
index.tsx
src/pages/procurement/components/bidConfirm/index.tsx
+0
-0
index.tsx
src/pages/procurement/components/descriptionsInfo/index.tsx
+67
-12
index.less
src/pages/procurement/components/remarkBidReport/index.less
+67
-13
index.tsx
src/pages/procurement/components/remarkBidReport/index.tsx
+0
-0
index.tsx
...ges/procurement/tender/callForBidsSearch/detail/index.tsx
+3
-1
useSelfTable.tsx
...ocurement/tender/callForBidsSearch/model/useSelfTable.tsx
+32
-19
useSelfTable.tsx
...es/procurement/tender/tenderSearch/model/useSelfTable.tsx
+12
-12
index.tsx
...Order/orderCollect/components/materialTableCell/index.tsx
+0
-1
index.tsx
src/pages/transaction/purchaseOrder/orderCollect/index.tsx
+1
-1
No files found.
src/constants/index.ts
View file @
c871a82e
...
...
@@ -404,8 +404,8 @@ export const ORDER_TYPE = ['',
'积分兑换'
,
'渠道积分兑换'
,
'采购询价合同'
,
'采购招标合同'
,
'采购竞价合同'
,
'采购招标合同'
]
// 提货方式
...
...
src/pages/procurement/callForBids/addNewBid/index.tsx
View file @
c871a82e
...
...
@@ -54,7 +54,7 @@ const AddNewBid:React.FC<AddNewBidProps> = (props) => {
// 会员列
const
[
memberColumn
,
setMemberColumn
]
=
useState
<
any
>
(()
=>
{
inviteMemberColumns
[
inviteMemberColumns
.
length
-
2
].
render
=
(
text
,
record
)
=>
<
Switch
checked=
{
text
}
onChange=
{
(
v
)
=>
onChangeState
(
v
,
record
)
}
/>
inviteMemberColumns
[
inviteMemberColumns
.
length
-
2
].
render
=
(
text
,
record
,
index
)
=>
<
Switch
checked=
{
text
}
onChange=
{
(
v
)
=>
onChangeState
(
v
,
record
,
index
)
}
/>
inviteMemberColumns
[
inviteMemberColumns
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
"link"
target=
"blank"
href=
{
`/shop?shopId=${btoa(JSON.stringify({ roleId: record.roleId, memberId: record.memberId }))}`
}
>
进入店铺
</
Button
>
return
[...
inviteMemberColumns
]
})
...
...
@@ -82,10 +82,10 @@ const AddNewBid:React.FC<AddNewBidProps> = (props) => {
const
{
materialAddButton
,
materialColumns
,
materialComponents
,
...
sectionProps
}
=
useMaterialTable
(
addSchemaAction
,
goodRef
,
drawerSchemaAction
)
const
onChangeState
=
(
v
,
r
)
=>
{
const
onChangeState
=
(
v
,
r
,
i
)
=>
{
let
originData
=
addSchemaAction
.
getFieldValue
(
'memberList'
)
addSchemaAction
.
setFieldValue
(
'memberList'
,
originData
.
map
(
item
=>
{
if
(
i
tem
.
id
===
r
.
id
)
{
addSchemaAction
.
setFieldValue
(
'memberList'
,
originData
.
map
(
(
item
,
indx
)
=>
{
if
(
i
ndx
===
i
)
{
return
{...
item
,
isSend
:
v
}
}
else
{
return
item
...
...
@@ -211,6 +211,10 @@ const AddNewBid:React.FC<AddNewBidProps> = (props) => {
ctx
.
setFieldValue
(
'isOnlineEvaluation'
,
true
)
}
if
(
pageStatus
===
PageStatus
.
EDIT
)
{
ctx
.
setFieldState
(
'*(memberName, inviteTenderInStatus, tenderOutStatus, createTime)'
,
state
=>
state
.
visible
=
true
)
}
$
(
'onFieldValueChange'
,
'inviteTenderType'
).
subscribe
(
state
=>
{
if
(
state
.
value
===
PUBLIC_BID
)
{
if
(
pageStatus
===
PageStatus
.
EDIT
&&
!
publicFlag
.
current
)
{
...
...
@@ -227,11 +231,6 @@ const AddNewBid:React.FC<AddNewBidProps> = (props) => {
}
else
if
(
state
.
value
===
INVITE_BID
)
{
}
if
(
pageStatus
===
PageStatus
.
ADD
)
{
ctx
.
setFieldState
(
'*(memberName, inviteTenderInStatus, tenderOutStatus, createTime)'
,
state
=>
state
.
props
.
visible
=
true
)
}
})
$
(
'onFieldValueChange'
,
'isQualificationCheck'
).
subscribe
(
state
=>
{
...
...
src/pages/procurement/callForBids/addRemarkBidCommittee/index.tsx
View file @
c871a82e
...
...
@@ -19,7 +19,7 @@ import { buildColumns, expertColumns, initConditionData, selectExpertColumns, se
import
{
selectBidSchema
}
from
'./schema/modal'
import
{
formatTimeString
}
from
'@/utils'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
BidOuterWorkState
}
from
'@/constants'
import
{
Bid
InsideWorkState
,
Bid
OuterWorkState
}
from
'@/constants'
export
interface
AddRemarkBidCommitteeProps
{}
...
...
@@ -95,17 +95,23 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
dataIndex
:
'ctl'
,
title
:
'操作'
,
align
:
'center'
,
render
:
(
r
,
t
)
=>
pageStatus
!==
PageStatus
.
PREVIEW
&&
<>
render
:
(
t
,
r
)
=>
pageStatus
!==
PageStatus
.
PREVIEW
&&
<>
<
Button
type=
"link"
>
查看
</
Button
>
<
Button
type=
"link"
>
<
Button
type=
"link"
onClick=
{
()
=>
removeExpert
(
r
)
}
>
删除
</
Button
>
</>
}
])
const
removeExpert
=
(
record
)
=>
{
const
hasExpertList
=
addSchemaAction
.
getFieldValue
(
'expertExtractRecordList'
)
const
temp
=
hasExpertList
.
filter
(
item
=>
item
.
expert
.
id
!==
record
.
expert
.
id
)
addSchemaAction
.
setFieldValue
(
'expertExtractRecordList'
,
[...
temp
])
}
const
handleSubmit
=
async
(
value
)
=>
{
console
.
log
(
value
)
setBtnLoading
(
true
)
...
...
@@ -162,7 +168,11 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
const
fetchData
=
(
params
:
any
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
postPurchaseInviteTenderGetInviteTenderList
({
...
params
,
tenderOutStatusList
:
[
BidOuterWorkState
.
Not_Selection_Tender
]
},
{
ctlType
:
"none"
}).
then
(
res
=>
{
PublicApi
.
postPurchaseInviteTenderGetInviteTenderList
({
...
params
,
inviteTenderInStatusList
:
[
BidInsideWorkState
.
Not_Selection_Tender
],
tenderOutStatusList
:
[
BidOuterWorkState
.
Not_Selection_Tender
]
},
{
ctlType
:
"none"
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
...
...
@@ -170,7 +180,7 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
const
fetchExpertData
=
(
params
:
any
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getPurchaseExpertGetExpertList
({
...
params
},
{
ctlType
:
"none"
}).
then
(
res
=>
{
PublicApi
.
getPurchaseExpertGetExpertList
({
...
params
,
status
:
true
},
{
ctlType
:
"none"
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
...
...
src/pages/procurement/callForBids/callForBidsSearch/detail/index.tsx
View file @
c871a82e
...
...
@@ -18,10 +18,15 @@ const CallForBidsSearchDetail: React.FC = () => {
{
title
:
'招标物料'
,
id
:
'bidMaterial'
,
componentName
:
"BidMaterial"
},
{
title
:
'招标要求'
,
id
:
'bidNeed'
,
type
:
"bidNeed"
},
{
title
:
'报名要求'
,
id
:
'registerNeed'
,
type
:
"registerNeed"
},
// // 多条 @需后台返回对应字段才可显示确实模块信息
// { title: '报名信息', id: 'registerInfo', type: "registerInfo" },
{
title
:
'资格预审要求'
,
id
:
'checkNeed'
,
type
:
"checkNeed"
},
// { title: '资格预审信息', id: 'registerInfo', type: "registerInfo" },
{
title
:
'评标要求'
,
id
:
'remarkNeed'
,
type
:
"remarkNeed"
},
{
title
:
'评标报告'
,
id
:
'remarkBidReport'
,
componentName
:
"RemarkBidReport"
},
{
title
:
'其他要求'
,
id
:
'otherNeed'
,
type
:
"otherNeed"
},
{
title
:
'招标方式'
,
id
:
'bidWay'
,
componentName
:
"BidMethod"
},
// { title: '招标结果', id: 'bidConfirm', componentName: "BidConfirm" },
{
title
:
'流转记录'
,
id
:
'transferRecord'
,
componentName
:
"BidTransformRecord"
},
]
...
...
src/pages/procurement/callForBids/readyAddBid/index.tsx
View file @
c871a82e
...
...
@@ -36,24 +36,38 @@ const ReadyAddBid:React.FC<ReadyAddBidProps> = (props) => {
const
{
loading
:
submitLoading
,
run
:
submitRun
}
=
useHttpRequest
(
PublicApi
.
postPurchaseInviteTenderApplyCheckInviteTender
)
const
{
columns
,
ref
,
rowSelection
,
rowSelectionCtl
}
=
useSelfTable
()
// 批量删除
const
handleMenuClick
=
async
(
e
)
=>
{
switch
(
e
.
key
)
{
case
'1'
:
{
// 批量删除
const
canDelete
=
!
rowSelectionCtl
.
selectRow
.
some
(
v
=>
v
.
inviteTenderInStatus
!==
BidInsideWorkState
.
Not_Submitted_Check_Invite_Tender
)
if
(
canDelete
)
{
const
{
code
}
=
await
deleteRun
({
idList
:
rowSelectionCtl
.
selectedRowKeys
})
if
(
code
===
1000
)
{
ref
.
current
.
reload
()
rowSelectionCtl
.
setSelectRow
([])
rowSelectionCtl
.
setSelectedRowKeys
([])
}
}
else
{
message
.
error
(
'只能删除内部状态为待提交审核且从未提交过审核的招标'
)
}
break
;
// // 批量删除
// const handleMenuClick = async (e) => {
// switch(e.key) {
// case '1': {
// // 批量删除
// const canDelete = !rowSelectionCtl.selectRow.some(v => v.inviteTenderInStatus !== BidInsideWorkState.Not_Submitted_Check_Invite_Tender)
// if (canDelete) {
// const { code } = await deleteRun({idList: rowSelectionCtl.selectedRowKeys})
// if (code === 1000) {
// ref.current.reload()
// rowSelectionCtl.setSelectRow([])
// rowSelectionCtl.setSelectedRowKeys([])
// }
// } else {
// message.error('只能删除内部状态为待提交审核且从未提交过审核的招标')
// }
// break;
// }
// }
// }
const
handleBitchRemove
=
async
()
=>
{
if
(
!
rowSelectionCtl
.
selectRow
.
length
)
return
message
.
error
(
'请选择招标'
)
const
canDelete
=
!
rowSelectionCtl
.
selectRow
.
some
(
v
=>
v
.
inviteTenderInStatus
!==
BidInsideWorkState
.
Not_Submitted_Check_Invite_Tender
)
if
(
canDelete
)
{
const
{
code
}
=
await
deleteRun
({
idList
:
rowSelectionCtl
.
selectedRowKeys
})
if
(
code
===
1000
)
{
ref
.
current
.
reload
()
rowSelectionCtl
.
setSelectRow
([])
rowSelectionCtl
.
setSelectedRowKeys
([])
}
}
else
{
message
.
error
(
'只能删除内部状态为待提交审核且从未提交过审核的招标'
)
}
}
// 批量审核
...
...
@@ -114,13 +128,14 @@ const ReadyAddBid:React.FC<ReadyAddBidProps> = (props) => {
新建
</
Button
>
<
Button
onClick=
{
handleBitchPush
}
loading=
{
submitLoading
}
>
批量提交审核
</
Button
>
<
DropDeleteDown
>
<
Button
onClick=
{
handleBitchRemove
}
loading=
{
submitLoading
}
>
批量删除
</
Button
>
{
/* <DropDeleteDown>
<Menu onClick={(e) => handleMenuClick(e)}>
<Menu.Item key="1" icon={<DeleteOutlined />}>
批量删除
</Menu.Item>
</Menu>
</
DropDeleteDown
>
</DropDeleteDown>
*/
}
</
Space
>,
layouts
:
{
span
:
8
...
...
src/pages/procurement/callForBids/readyConfirmBid/detail/index.tsx
View file @
c871a82e
...
...
@@ -91,6 +91,8 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
history
.
goBack
()
}
setLoading
(
false
)
}).
catch
(()
=>
{
setLoading
(
false
)
})
}
...
...
src/pages/procurement/callForBids/readyExpertRemark/components/onlineRemark/index.tsx
View file @
c871a82e
...
...
@@ -35,7 +35,17 @@ const OnlineRemark: React.FC<RemarkBidReportProps> = ({cardTitle, addSchemaActio
const
onBlurInput
=
(
v
,
index
)
=>
{
const
hasValues
=
addSchemaAction
.
getFieldValue
(
'evaluationTenderList'
)
if
(
hasValues
.
length
)
{
addSchemaAction
.
setFieldValue
(
'evaluationTenderList'
,
hasValues
.
map
(
item
=>
({...
item
,
isRecommend
:
true
,
reason
:
v
.
target
.
value
})))
addSchemaAction
.
setFieldValue
(
'evaluationTenderList'
,
hasValues
.
map
((
item
,
_i
)
=>
{
if
(
index
===
_i
)
{
return
{
...
item
,
isRecommend
:
true
,
reason
:
v
.
target
.
value
}
}
else
{
return
{...
item
}
}
}))
}
}
...
...
src/pages/procurement/callForBids/readySendBidNotice/constant/index.tsx
View file @
c871a82e
...
...
@@ -234,7 +234,7 @@ export const noticeSchema: ISchema = {
children
:
"发送中标通知"
},
"x-component"
:
"checkboxsingle"
,
default
:
fals
e
,
default
:
tru
e
,
},
winTenderNoticeContent
:
{
type
:
'textarea'
,
...
...
@@ -279,7 +279,7 @@ export const noticeSchema: ISchema = {
children
:
"发送感谢信"
},
"x-component"
:
"checkboxsingle"
,
default
:
fals
e
,
default
:
tru
e
,
},
winTenderThanksContent
:
{
type
:
'textarea'
,
...
...
src/pages/procurement/callForBids/readySendBidNotice/detail/index.tsx
View file @
c871a82e
...
...
@@ -231,24 +231,26 @@ const ReadySendBidNoticeDetail: React.FC = () => {
beforeUpload
}
}
effects=
{
(
$
,
ctx
)
=>
{
const
applyBuines
=
data
.
memberList
.
map
(
item
=>
`${item.memberName}(中标总金额¥${item.amount})`
)
const
text
=
`${data.memberName}《${data.projectName}》评标工作已经结束,中标人已经确定。现将中标结果公布如下:
const
applyBuines
=
data
.
memberList
.
map
(
item
=>
`${item.memberName}(中标总金额¥${item.amount})`
)
const
text
=
`${data.memberName}《${data.projectName}》评标工作已经结束,中标人已经确定。现将中标结果公布如下:
中标供应商:${applyBuines.toString()}。
中标理由:${data.winTenderReason}。`
$
(
'onFieldInit'
,
'winTenderAnnounceContent'
).
subscribe
(()
=>
{
$
(
'onFieldInit'
,
'winTenderAnnounceContent'
).
subscribe
(()
=>
{
ctx
.
setFieldValue
(
'winTenderAnnounceContent'
,
text
)
})
ctx
.
setFieldValue
(
'winTenderAnnounceContent'
,
text
)
})
$
(
'onFieldInit'
,
'winTenderNoticeContent'
).
subscribe
(()
=>
{
$
(
'onFieldInit'
,
'winTenderNoticeContent'
).
subscribe
(()
=>
{
ctx
.
setFieldValue
(
'winTenderNoticeContent'
,
text
)
})
ctx
.
setFieldValue
(
'winTenderNoticeContent'
,
text
)
})
$
(
'onFieldInit'
,
'winTenderThanksContent'
).
subscribe
(()
=>
{
const
thinkText
=
`贵公司参与了我公司《${data.projectName}》竞标。在我公司综合各投标单位的基本情况,并进行充分技术交流后,经评标委员会综合评定,贵公司未能中标。我公司对贵公司的积极参与和支持深表感谢!希望下次合作成功。`
$
(
'onFieldInit'
,
'winTenderThanksContent'
).
subscribe
(()
=>
{
ctx
.
setFieldValue
(
'winTenderThanksContent'
,
thinkText
)
})
ctx
.
setFieldValue
(
'winTenderThanksContent'
,
thinkText
)
})
}
}
/>
</
ReadySendBidNoticeContext
.
Provider
>
...
...
src/pages/procurement/callForBids/readySendBidNotice/model/useSelfTable.tsx
View file @
c871a82e
import
React
,
{
useRef
}
from
'react'
import
{
Button
}
from
'antd'
import
{
history
}
from
'umi'
import
{
baseBidListColumns
}
from
'@/pages/procurement/constants'
import
EyePreview
from
'@/components/EyePreview'
import
{
CALLFORBID_TYPE
,
PURCHASE_TYPE
}
from
'@/constants'
import
{
formatTimeString
}
from
'@/utils'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
CustomTag
from
'@/pages/procurement/components/CustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
// 待发送中标公示 招标
export
const
useSelfTable
=
()
=>
{
...
...
@@ -10,6 +15,50 @@ export const useSelfTable = () => {
const
handleSubmit
=
async
(
record
)
=>
{
history
.
push
(
`/memberCenter/procurementAbility/callForBids/readySendBidNotice/detail?id=
${
record
.
id
}
`
)
}
const
baseBidListColumns
:
any
[]
=
[
{
title
:
'招标编号/项目'
,
align
:
'left'
,
dataIndex
:
'code'
,
key
:
'code'
,
render
:
(
text
,
record
)
=>
<>
<
EyePreview
url=
{
`${history.location.pathname}/detail?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
<
div
>
{
record
[
'projectName'
]
}
</
div
>
</>
},
{
title
:
'采购类型'
,
align
:
'left'
,
dataIndex
:
'purchaseType'
,
key
:
'purchaseType'
,
render
:
(
t
)
=>
PURCHASE_TYPE
[
t
]
},
{
title
:
'招标方式'
,
align
:
'left'
,
dataIndex
:
'inviteTenderType'
,
key
:
'inviteTenderType'
,
render
:
(
t
)
=>
CALLFORBID_TYPE
[
t
]
},
{
title
:
'外部状态'
,
align
:
'left'
,
dataIndex
:
'tenderOutStatus'
,
key
:
'tenderOutStatus'
,
render
:
text
=>
<
CustomTag
status=
{
text
}
type=
'out'
/>
},
{
title
:
'内部状态'
,
align
:
'left'
,
dataIndex
:
'inviteTenderInStatus'
,
key
:
'inviteTenderInStatus'
,
render
:
(
text
)
=>
<
CustomBadge
status=
{
text
}
type=
'inside'
/>
},
]
const
secondColumns
:
any
[]
=
baseBidListColumns
.
concat
([
{
title
:
'操作'
,
...
...
src/pages/procurement/callForBids/readySendBidNotice/schema/index.ts
View file @
c871a82e
...
...
@@ -25,7 +25,7 @@ export const tableListSchema: ISchema = {
}
},
properties
:
{
inviteTenderP
rojectName
:
{
p
rojectName
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入招标项目'
,
...
...
src/pages/procurement/callForBids/tenderSearch/index.tsx
View file @
c871a82e
...
...
@@ -58,7 +58,7 @@ const TenderSearch: React.FC<{}> = () => {
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'
c
ode'
,
'
inviteTenderC
ode'
,
FORM_FILTER_PATH
,
);
},
...
...
src/pages/procurement/callForBids/tenderSearch/schema/index.ts
View file @
c871a82e
...
...
@@ -8,7 +8,7 @@ import { BidOutStateTexts } from '@/constants';
export
const
tableListSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
c
ode
:
{
inviteTenderC
ode
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
...
...
src/pages/procurement/components/bidConfirm/components/givenBidItem/index.tsx
View file @
c871a82e
import
React
,
{
useState
,
useRef
,
useContext
,
useEffect
}
from
'react'
import
{
Form
,
Input
,
Checkbox
,
Row
,
Col
,
InputNumber
}
from
'antd'
;
import
style
from
'../../index.less'
import
{
ReadyConfirmBidContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
checkmark
from
'@/assets/imgs/checkmark_circle.png'
/**
* 招标定标表格中 授标的每一项
* 招标定标表格中 授标的每一项
待审核专用
*/
export
interface
GivenBidItemProps
{
/** 当前行数据 */
currentData
:
any
;
/** 所有数据 */
datas
:
any
;
/** 当前渲染的列索引等 */
currentColumn
:
any
;
/** 所有的列索引 */
columns
:
any
;
/** 当前列索引 */
currentIndex
:
any
;
}
export
const
GivenBidItem
:
React
.
FC
<
GivenBidItemProps
>
=
({})
=>
{
export
const
GivenBidItem
:
React
.
FC
<
GivenBidItemProps
>
=
({
currentData
,
datas
,
currentColumn
,
columns
,
currentIndex
})
=>
{
const
{
submitData
,
submitCtl
}
=
useContext
(
ReadyConfirmBidContext
)
// const { paramsTableData: tableDataSource, simulateColumn: tableColumns } = submitData
const
{
setParamsTableData
:
setTableDataSource
,
setSimulateColumn
:
setTableColumns
}
=
submitCtl
const
onChangeInput
=
(
v
)
=>
{
console
.
log
(
v
,
'改变'
)
setTableDataSource
(()
=>
{
const
newData
=
[...
datas
]
const
currentRow
=
newData
[
currentIndex
]
currentRow
[
currentColumn
.
dataIndex
][
'awardRate'
]
=
v
newData
.
splice
(
currentIndex
,
1
,
currentRow
)
return
newData
})
}
console
.
log
(
currentData
,
'current'
)
const
chanegChecked
=
(
e
)
=>
{
const
ev
:
any
=
window
.
event
||
e
;
const
path
=
ev
.
path
||
(
ev
.
composedPath
&&
ev
.
composedPath
());
setTableDataSource
(()
=>
{
const
newData
=
[...
datas
]
const
currentRow
=
newData
[
currentIndex
]
currentRow
[
currentColumn
.
dataIndex
][
'isAwardTender'
]
=
e
.
target
.
checked
// 默认100
currentRow
[
currentColumn
.
dataIndex
][
'awardRate'
]
=
100
newData
.
splice
(
currentIndex
,
1
,
currentRow
)
return
newData
})
if
(
e
.
target
.
checked
)
{
path
[
6
]
.
style
.
border
=
'1px solid #00B37A'
path
[
6
]
.
nextSibling
.
style
.
display
=
'inline-block'
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
{
path
[
6
].
style
.
border
=
'1px solid #F4F5F7
'
path
[
6
]
.
nextSibling
.
style
.
display
=
'none'
e
.
nativeEvent
.
target
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
parentElement
.
style
.
border
=
'none
'
e
.
nativeEvent
.
target
.
parentElement
.
parentElement
.
nextSibling
.
style
.
display
=
'none'
}
}
// 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 = '1px solid #F4F5F7'
// 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
>
<
Col
><
p
>
¥
{
currentData
[
currentColumn
.
dataIndex
][
'price'
]
}
</
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
>
<
Col
><
p
>
¥
{
(
currentData
[
currentColumn
.
dataIndex
][
'price'
]
*
currentData
[
'count'
]).
toFixed
(
2
)
}
</
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
>
<
Col
><
p
>
{
currentData
[
currentColumn
.
dataIndex
][
'isTax'
]
?
'是'
:
'否'
}
</
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
>
<
Col
><
p
>
{
currentData
[
currentColumn
.
dataIndex
][
'taxRate'
]
}
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
...
...
@@ -67,16 +95,24 @@ export const GivenBidItem:React.FC<GivenBidItemProps> = ({}) => {
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标:
</
p
></
Col
>
<
Col
>
<
p
>
<
Checkbox
defaultChecked=
{
false
}
style=
{
{
marginRight
:
16
}
}
onChange=
{
chanegChecked
}
/>
{
currentData
[
currentColumn
.
dataIndex
][
'isAwardTender'
]
?
<
span
>
{
currentData
[
currentColumn
.
dataIndex
][
'awardRate'
]
}
%
<
img
src=
{
checkmark
}
alt=
"已授标"
style=
{
{
width
:
12
,
height
:
12
}
}
/></
span
>
:
<
span
>
—
</
span
>
}
{
/* <Checkbox defaultChecked={currentData[currentColumn.dataIndex]['isAwardTender']} style={{marginRight: 16}} onChange={chanegChecked} />
<InputNumber
defaultValue=
{
100
}
defaultValue={
currentData[currentColumn.dataIndex]['awardRate']
}
min={0}
max={100}
formatter={value => `${value}%`}
parser={value => value.replace('%', '')}
onChange={onChangeInput}
style={{display: 'none'}}
/>
/>
*/
}
</
p
>
</
Col
>
</
Row
>
...
...
src/pages/procurement/components/bidConfirm/components/totalAmount/index.tsx
View file @
c871a82e
import
React
,
{
useState
,
useRef
,
useContext
,
useEffect
}
from
'react'
import
{
Form
,
Input
,
Divider
,
Row
,
Col
}
from
'antd'
;
import
React
from
'react'
import
{
Divider
,
Row
,
Col
}
from
'antd'
;
import
style
from
'../../index.less'
/**
* 招标定标表格底部的 合计模块
* 招标定标表格底部的 合计模块
待审核专用
*/
export
interface
TotalAmountProps
{
/** 所有需要的数据 */
datas
:
any
;
columns
:
any
;
}
export
const
TotalAmount
:
React
.
FC
<
TotalAmountProps
>
=
({})
=>
{
export
const
TotalAmount
:
React
.
FC
<
TotalAmountProps
>
=
({
datas
,
columns
,
})
=>
{
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
>
{
columns
.
map
((
item
,
index
)
=>
index
>
1
?
(<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价小计:
</
p
></
Col
>
<
Col
>
<
p
>
¥
{
(
datas
.
reduce
((
a
,
b
)
=>
a
+
b
[
item
.
dataIndex
][
'price'
]
*
b
.
count
,
0
)).
toFixed
(
2
)
}
(含税)
</
p
>
</
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价排名:
</
p
></
Col
>
<
Col
><
p
>
{
index
-
1
}
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>)
:
null
)
}
</
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
>
{
columns
.
map
((
item
,
index
)
=>
index
>
1
?
(<
Col
span=
{
4
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标数量:
</
p
></
Col
>
<
Col
><
p
>
{
datas
.
reduce
((
a
,
b
)
=>
a
+
b
[
item
.
dataIndex
][
'isAwardTender'
]
?
1
:
0
,
0
)
}
</
p
></
Col
>
</
Row
>
</
div
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标总额:
</
p
></
Col
>
<
Col
><
p
>
¥
{
datas
.
reduce
((
a
,
b
)
=>
a
+
b
[
item
.
dataIndex
][
'isAwardTender'
]
?
(
b
[
item
.
dataIndex
][
'price'
]
*
b
.
count
*
b
[
item
.
dataIndex
][
'awardRate'
]
/
100
).
toFixed
(
2
)
:
0
,
0
)
}
(含税)
</
p
></
Col
>
</
Row
>
</
div
>
</
Col
>)
:
null
)
}
</
Row
>
</
div
>
}
...
...
src/pages/procurement/components/bidConfirm/index.tsx
View file @
c871a82e
This diff is collapsed.
Click to expand it.
src/pages/procurement/components/descriptionsInfo/index.tsx
View file @
c871a82e
...
...
@@ -13,7 +13,7 @@ import {
}
from
'bizcharts'
;
import
Interval
from
'bizcharts/lib/geometry/Interval'
import
DataSet
from
"@antv/data-set"
;
import
{
BidInStateTexts
,
BidOutStateTexts
,
PURCHASE_TYPE
}
from
'@/constants'
;
import
{
BidInStateTexts
,
BidOut
erWorkState
,
BidOut
StateTexts
,
PURCHASE_TYPE
}
from
'@/constants'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
moment
from
'moment'
;
...
...
@@ -39,12 +39,12 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
// 处理和投标有关的数据格式
const
data
=
apiType
===
'callForBid'
?
_data
:
_data
.
inviteTender
console
.
log
(
data
,
_data
)
const
toogleMore
=
()
=>
{
setShowMore
(
!
showMore
)
}
// 基本信息
// 基本信息
——招标
const
basicColumnList
=
[
{
span
:
8
,
...
...
@@ -91,6 +91,60 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
]
}
]
// 基本信息——投标
const
basicTenderColumnList
=
[
{
span
:
8
,
fieldList
:
[
{
title
:
'投标编号:'
,
name
:
'code'
,
render
:
()
=>
_data
[
'code'
]
},
{
title
:
'外部状态:'
,
name
:
'tenderOutStatus'
,
render
:
(
text
)
=>
BidOutStateTexts
[
text
]},
{
title
:
'内部状态:'
,
name
:
'inviteTenderInStatus'
,
render
:
(
text
)
=>
BidInStateTexts
[
text
]
},
{
title
:
'投标项目:'
,
name
:
'projectName'
},
]
},
// {
// span: 8,
// fieldList: [
// { title: '投标摘要:', name: 'remark', render: () => _data['submitTender']['remark'] },
// {
// title: '投标文件:',
// name: 'inviteTenderFile',
// render: (t, r) => (<div>
// {
// _data['submitTender']['file'].map((_item, _i) => <p><a key={`submitTenderFile${_i}`} target="_blank" href={_item.url}><FileFilled /> {_item.name}</a></p>)
// }
// </div>)
// },
// ]
// },
{
span
:
8
,
fieldList
:
[
{
title
:
'招标编号:'
,
name
:
'code'
},
{
title
:
'招标会员:'
,
name
:
'memberName'
},
{
title
:
'适用地址:'
,
name
:
'inviteTenderAreaList'
,
render
:
(
t
,
r
)
=>
{
const
showDataSource
=
showMore
?
data
[
'inviteTenderAreaList'
]
:
[...
data
[
'inviteTenderAreaList'
]].
splice
(
0
,
3
)
return
<>
<
p
>
{
showDataSource
.
map
((
_item
,
_i
)
=>
<
p
key=
{
`address${_i}`
}
>
{
_item
.
provinceName
+
'/'
+
(
_item
.
cityName
||
''
)
}
</
p
>)
}
</
p
>
{
data
.
length
>
3
&&
<
p
onClick=
{
toogleMore
}
style=
{
{
cursor
:
'pointer'
}
}
className=
"commonPickColor"
>
展开
{
showMore
?
<
CaretDownOutlined
/>
:
<
CaretUpOutlined
/>
}
</
p
>
}
</>
}
},
]
}
]
// 招标要求
const
callForNeedList
=
[
...
...
@@ -291,7 +345,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
/** 投标区块 **/
// @todo 中标结果 根据后端数据控制
const
result
=
data
.
isWin
const
result
=
_
data
.
isWin
const
bidResultList
=
[
{
span
:
8
,
...
...
@@ -310,19 +364,19 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
</
Col
>
</
Row
>,
},
{
title
:
'中标理由:'
,
name
:
'
createMemberName
'
},
{
title
:
'中标理由:'
,
name
:
'
reason
'
},
]
},
{
span
:
8
,
fieldList
:
[
{
title
:
'中标公示:'
,
name
:
'
createMemberName
'
},
{
title
:
'中标公示:'
,
name
:
'
winTenderAnnounceContent
'
},
{
title
:
'中标公示附件:'
,
name
:
'
paymentInformationResponses
'
,
name
:
'
winTenderAnnounceFile
'
,
render
:
(
t
,
r
)
=>
(<
div
>
{
data
[
'
paymentInformationResponses
'
].
map
((
_item
,
_i
)
=>
<
p
><
a
key=
{
`announce${_i}`
}
target=
"_blank"
href=
{
_item
.
url
}
><
FileFilled
/>
{
_item
.
payNode
}
</
a
></
p
>)
data
[
'
winTenderAnnounceFile
'
].
map
((
_item
,
_i
)
=>
<
p
><
a
key=
{
`announce${_i}`
}
target=
"_blank"
href=
{
_item
.
url
}
><
FileFilled
/>
{
_item
.
payNode
}
</
a
></
p
>)
}
</
div
>)
},
...
...
@@ -331,13 +385,13 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
{
span
:
8
,
fieldList
:
[
{
title
:
'中标通知:'
,
name
:
'
createMemberName
'
},
{
title
:
'中标通知:'
,
name
:
'
winTenderNoticeContent
'
},
{
title
:
'中标通知附件:'
,
name
:
'
paymentInformationResponses
'
,
name
:
'
winTenderNoticeFile
'
,
render
:
(
t
,
r
)
=>
(<
div
>
{
data
[
'
paymentInformationResponses
'
].
map
((
_item
,
_i
)
=>
<
p
><
a
key=
{
`notice${_i}`
}
target=
"_blank"
href=
{
_item
.
url
}
><
FileFilled
/>
{
_item
.
payNode
}
</
a
></
p
>)
data
[
'
winTenderNoticeFile
'
].
map
((
_item
,
_i
)
=>
<
p
><
a
key=
{
`notice${_i}`
}
target=
"_blank"
href=
{
_item
.
url
}
><
FileFilled
/>
{
_item
.
payNode
}
</
a
></
p
>)
}
</
div
>)
},
...
...
@@ -385,7 +439,8 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
/** 类型数据映射 */
const
Type_Data_Map
=
{
'basicInfo'
:
basicColumnList
,
// 当详情模式为投标详情并且投标外部状态投完标才有对应的投标基本信息显示
'basicInfo'
:
apiType
[
apiType
.
length
-
1
]
===
'r'
&&
_data
[
'tenderOutStatus'
]
>=
BidOuterWorkState
.
Not_Invite_Tender
?
basicTenderColumnList
:
basicColumnList
,
'bidNeed'
:
callForNeedList
,
'registerNeed'
:
registerNeedList
,
'checkNeed'
:
checkNeedList
,
...
...
src/pages/procurement/components/remarkBidReport/index.less
View file @
c871a82e
.card-list {
font-size: 12px;
line-height: 20px;
margin-top:
12px; // 24
margin-top:
24px;
border: 1px solid #F4F5F7;
padding: 12px;
&:hover {
.deleteMember {
display: block;
}
}
}
.card-list-dash {
font-size: 12px;
line-height: 20px;
margin-top: 24px;
border: 1px dashed #D8DDE6;
padding: 12px;
cursor: pointer;
position: relative;
}
.deleteMember {
display: none;
width: 24px;
height: 24px;
text-align: center;
position: absolute;
right: 12px;
top: 24px;
border: none;
color: #fff;
background-color: rgba(0,0,0,0.4);
}
.card-list_title {
font-size: 12px;
...
...
@@ -35,10 +61,10 @@
}
}
.remarkBidReportWrapper {
// 评标委员会
.remarkCommitteeContainer {
margin-bottom: 24px;
//
.remarkBidReportWrapper {
//
//
评标委员会
//
.remarkCommitteeContainer {
//
margin-bottom: 24px;
.committeeItem {
position: relative;
display: flex;
...
...
@@ -77,13 +103,41 @@
padding: 2px 4px;
background-color: #E4F7EF;
}
.statusInfo {
color: #5243AA;
background-color: #6554C0;
}
.statusReceive {
color: #2266EE;
background-color: #F0F7FF;
}
.statusReject {
color: #D32F2F;
background-color: #FFF2F0;
}
}
}
//
}
// 评标记录
.remarkRecordContainer {
.rankContent {
display: flex;
p {
img {
display: inline-block;
width: 24px;
height: 24px;
}
span {
&:first-child {
margin-right: 14px;
}
}
}
}
.remarkRecordHead {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
}
:global {
.ant-radio-button-wrapper:hover {
...
...
@@ -101,12 +155,12 @@
color: #909399;
}
}
}
// 评标附件
.remarkFileContainer
{
margin-top: 20
px;
.card-list {
border: none;
.remarkFile {
margin-top: 20px;
.card-list
{
margin-top: 12
px;
border: none;
}
}
}
}
//
}
src/pages/procurement/components/remarkBidReport/index.tsx
View file @
c871a82e
This diff is collapsed.
Click to expand it.
src/pages/procurement/tender/callForBidsSearch/detail/index.tsx
View file @
c871a82e
...
...
@@ -21,9 +21,11 @@ const CallForBidsSearchDetailInTender: React.FC = () => {
{
title
:
'招标物料'
,
id
:
'bidMaterial'
,
componentName
:
"BidMaterial"
},
{
title
:
'招标要求'
,
id
:
'bidNeed'
,
type
:
"bidNeed"
},
{
title
:
'报名要求'
,
id
:
'registerNeed'
,
type
:
"registerNeed"
},
{
title
:
'报名信息'
,
id
:
'registerInfo'
,
type
:
"registerInfo"
},
{
title
:
'报名文件'
,
id
:
'registerFile'
,
type
:
"registerFile"
},
{
title
:
'资格预审要求'
,
id
:
'checkNeed'
,
type
:
"checkNeed"
},
{
title
:
'资格证明文件'
,
id
:
'checkQualifyFile'
,
type
:
"checkQualifyFile"
},
{
title
:
'其他要求'
,
id
:
'otherNeed'
,
type
:
"otherNeed"
},
// { title: '确认定标', id: 'bidConfirm', componentName: "BidConfirm" },
{
title
:
'流转记录'
,
id
:
'transferRecord'
,
componentName
:
"BidTransformRecord"
},
]
...
...
src/pages/procurement/tender/callForBidsSearch/model/useSelfTable.tsx
View file @
c871a82e
...
...
@@ -30,19 +30,32 @@ export const useSelfTable = () => {
<
div
>
{
record
[
'projectName'
]
}
</
div
>
</>
},
// {
// title: '采购类型',
// align: 'left',
// dataIndex: 'purchaseType',
// key: 'purchaseType',
// render: (t) => PURCHASE_TYPE[t]
// },
// {
// title: '招标方式',
// align: 'left',
// dataIndex: 'inviteTenderType',
// key: 'inviteTenderType',
// render: (t) => CALLFORBID_TYPE[t]
// },
{
title
:
'
采购类型
'
,
title
:
'
招标会员
'
,
align
:
'left'
,
dataIndex
:
'purchaseType'
,
key
:
'purchaseType'
,
render
:
(
t
)
=>
PURCHASE_TYPE
[
t
]
dataIndex
:
'memberName'
,
key
:
'memberName'
,
},
{
title
:
'
招标方式
'
,
title
:
'
开标时间
'
,
align
:
'left'
,
dataIndex
:
'
inviteTenderTyp
e'
,
key
:
'
inviteTenderTyp
e'
,
render
:
(
t
)
=>
CALLFORBID_TYPE
[
t
]
dataIndex
:
'
openTenderTim
e'
,
key
:
'
openTenderTim
e'
,
render
:
(
t
ext
,
record
)
=>
formatTimeString
(
record
.
createTime
),
},
{
title
:
'发布时间'
,
...
...
@@ -63,17 +76,17 @@ export const useSelfTable = () => {
</>,
width
:
180
},
{
title
:
'资格预审开始/截止时间'
,
align
:
'left'
,
dataIndex
:
'checkStartTime'
,
key
:
'checkStartTime'
,
render
:
(
text
,
record
)
=>
<>
{
record
.
preCheckStartTime
?
<
div
><
PlayCircleOutlined
/>
{
formatTimeString
(
record
.
preCheckStartTime
)
}
</
div
>
:
null
}
{
record
.
preCheckEndTime
?
<
div
><
PoweroffOutlined
/>
{
formatTimeString
(
record
.
preCheckEndTime
)
}
</
div
>
:
null
}
</>,
width
:
180
},
//
{
//
title: '资格预审开始/截止时间',
//
align: 'left',
//
dataIndex: 'checkStartTime',
//
key: 'checkStartTime',
//
render: (text, record) => <>
//
{record.preCheckStartTime ? <div><PlayCircleOutlined /> {formatTimeString(record.preCheckStartTime)}</div> : null}
//
{record.preCheckEndTime ? <div><PoweroffOutlined /> {formatTimeString(record.preCheckEndTime)}</div> : null}
//
</>,
//
width: 180
//
},
{
title
:
'投标开始/截止时间'
,
align
:
'left'
,
...
...
src/pages/procurement/tender/tenderSearch/model/useSelfTable.tsx
View file @
c871a82e
...
...
@@ -25,18 +25,6 @@ export const useSelfTable = () => {
render
:
(
text
,
record
,
index
)
=>
index
+
1
},
{
title
:
'招标编号/项目'
,
align
:
'left'
,
dataIndex
:
'inviteTender'
,
key
:
'inviteTender'
,
render
:
(
text
,
record
)
=>
<>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/tender/callForBidsSearch/detail?id=${record.inviteTender.id}`
}
>
{
record
.
inviteTender
.
code
}
</
EyePreview
>
<
div
>
{
record
.
inviteTender
.
projectName
}
</
div
>
</>
},
{
title
:
'投标编号/会员'
,
align
:
'left'
,
dataIndex
:
'code'
,
...
...
@@ -49,6 +37,18 @@ export const useSelfTable = () => {
</>
},
{
title
:
'招标编号/项目'
,
align
:
'left'
,
dataIndex
:
'inviteTender'
,
key
:
'inviteTender'
,
render
:
(
text
,
record
)
=>
<>
<
EyePreview
url=
{
`/memberCenter/procurementAbility/tender/callForBidsSearch/detail?id=${record.inviteTender.id}`
}
>
{
record
.
inviteTender
.
code
}
</
EyePreview
>
<
div
>
{
record
.
inviteTender
.
projectName
}
</
div
>
</>
},
{
title
:
'投标时间'
,
align
:
'left'
,
dataIndex
:
'memberId'
,
...
...
src/pages/transaction/purchaseOrder/orderCollect/components/materialTableCell/index.tsx
View file @
c871a82e
...
...
@@ -135,7 +135,6 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
callback
(
err
)
}
}
console
.
log
(
record
,
'cell rrr'
)
let
childNode
=
children
;
if
(
editable
)
{
childNode
=
...
...
src/pages/transaction/purchaseOrder/orderCollect/index.tsx
View file @
c871a82e
...
...
@@ -280,7 +280,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
v
.
channelProductId
=
v
?.
channelProductId
||
v
?.
commodityUnitPriceAndPicId
return
v
}),
needTheInvoice
:
Number
(
value
.
needTheInvoice
)
,
needTheInvoice
:
value
.
needTheInvoice
?
1
:
0
,
// 冗余交付信息
deliveryAddresId
:
value
.
deliveryAddresId
.
id
||
value
.
deliveryAddresId
,
...
omit
(
value
.
deliveryAddresId
,
[
'id'
]),
...
...
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