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
ed048324
Commit
ed048324
authored
Jun 15, 2021
by
XieZhiXiong
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
4347c92a
dec0c946
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
2138 additions
and
63 deletions
+2138
-63
confirmOffer.ts
config/routes/dealAbilityRoute/confirmOffer.ts
+112
-0
inquiryOffer.ts
config/routes/dealAbilityRoute/inquiryOffer.ts
+132
-0
index.tsx
...ges/transaction/dealAbility/confirmOffer/detail/index.tsx
+271
-0
index.tsx
...ransaction/dealAbility/confirmOffer/offerSearch/index.tsx
+2
-2
index.tsx
...es/transaction/dealAbility/confirmOffer/preview/index.tsx
+213
-0
index.tsx
...on/dealAbility/confirmOffer/waitAuditInquiryOne/index.tsx
+3
-3
index.tsx
...on/dealAbility/confirmOffer/waitAuditInquiryTwo/index.tsx
+3
-3
index.tsx
...n/dealAbility/confirmOffer/waitSubmitAuditOffer/index.tsx
+8
-11
index.tsx
...action/dealAbility/confirmOffer/waitSubmitOffer/index.tsx
+7
-11
index.tsx
...ges/transaction/dealAbility/inquiryOffer/detail/index.tsx
+265
-0
index.tsx
...nsaction/dealAbility/inquiryOffer/inquirySearch/index.tsx
+4
-4
index.tsx
...ransaction/dealAbility/inquiryOffer/offerSearch/index.tsx
+2
-2
index.tsx
...es/transaction/dealAbility/inquiryOffer/preview/index.tsx
+213
-0
add.tsx
...transaction/dealAbility/inquiryOffer/waitAddOffer/add.tsx
+13
-0
addForm.tsx
...saction/dealAbility/inquiryOffer/waitAddOffer/addForm.tsx
+170
-0
attached.tsx
...Ability/inquiryOffer/waitAddOffer/components/attached.tsx
+95
-0
basicInfo.tsx
...bility/inquiryOffer/waitAddOffer/components/basicInfo.tsx
+183
-0
enquiryGoods.tsx
...ity/inquiryOffer/waitAddOffer/components/enquiryGoods.tsx
+108
-0
flowRecord.tsx
...ility/inquiryOffer/waitAddOffer/components/flowRecord.tsx
+95
-0
index.less
...alAbility/inquiryOffer/waitAddOffer/components/index.less
+74
-0
tradingConditions.tsx
...nquiryOffer/waitAddOffer/components/tradingConditions.tsx
+106
-0
edit.tsx
...ransaction/dealAbility/inquiryOffer/waitAddOffer/edit.tsx
+14
-0
index.tsx
...ansaction/dealAbility/inquiryOffer/waitAddOffer/index.tsx
+4
-4
quote.tsx
...ansaction/dealAbility/inquiryOffer/waitAddOffer/quote.tsx
+14
-0
index.tsx
...tion/dealAbility/inquiryOffer/waitAuditOfferOne/index.tsx
+3
-3
index.tsx
...tion/dealAbility/inquiryOffer/waitAuditOfferTwo/index.tsx
+3
-3
index.tsx
...action/dealAbility/inquiryOffer/waitSubmitOffer/index.tsx
+2
-2
index.tsx
...s/transaction/dealAbility/productInquiry/detail/index.tsx
+4
-4
addForm.tsx
...ion/dealAbility/productInquiry/waitAddInquiry/addForm.tsx
+2
-2
index.tsx
...ction/dealAbility/productInquiry/waitAddInquiry/index.tsx
+7
-7
index.tsx
...saction/purchaseAbility/purchasDoor/purchasInfo/index.tsx
+5
-1
index.tsx
...transaction/purchaseAbility/purchasePlan/detail/index.tsx
+1
-1
No files found.
config/routes/dealAbilityRoute/confirmOffer.ts
View file @
ed048324
...
...
@@ -17,29 +17,141 @@ export default [
component
:
'@/pages/transaction/dealAbility/confirmOffer/offerSearch'
,
},
{
/** 报价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/offerSearch/offer/preview'
,
name
:
'报价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/offerSearch/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待提交审核报价单 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitSubmitAuditOffer'
,
name
:
'待提交审核报价单'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/waitSubmitAuditOffer'
,
},
{
/** 待提交审核报价单 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitSubmitAuditOffer/offer/preview'
,
name
:
'待提交审核报价单详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待提交审核报价单 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitSubmitAuditOffer/offer/detail'
,
name
:
'待提交审核报价单详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitSubmitAuditOffer/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待审核询价单(一级) */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitAuditInquiryOne'
,
name
:
'待审核询价单(一级)'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/waitAuditInquiryOne'
,
},
{
/** 待审核询价单(一级) 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitAuditInquiryOne/offer/preview'
,
name
:
'待审核询价单(一级)详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待审核询价单(一级) 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitAuditInquiryOne/offer/detail'
,
name
:
'待审核询价单(一级)详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitAuditInquiryOne/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待审核询价单(二级) */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitAuditInquiryTwo'
,
name
:
'待审核询价单(二级)'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/waitAuditInquiryTwo'
,
},
{
/** 待审核询价单(二级) 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitAuditInquiryTwo/offer/preview'
,
name
:
'待审核询价单(二级)详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待审核询价单(二级) 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitAuditInquiryTwo/offer/detail'
,
name
:
'待审核询价单(二级)详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitAuditInquiryTwo/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待提交报价单 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitSubmitOffer'
,
name
:
'待提交报价单'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/waitSubmitOffer'
,
},
{
/** 待提交报价单 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitSubmitOffer/offer/preview'
,
name
:
'待提交报价单详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待提交报价单 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitSubmitOffer/offer/detail'
,
name
:
'待提交报价单详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/confirmOffer/waitSubmitOffer/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/confirmOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
]
}
]
config/routes/dealAbilityRoute/inquiryOffer.ts
View file @
ed048324
...
...
@@ -16,35 +16,167 @@ export default [
component
:
'@/pages/transaction/dealAbility/inquiryOffer/inquirySearch'
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/inquirySearch/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 报价单查询 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/offerSearch'
,
name
:
'报价单查询'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/offerSearch'
,
},
{
/** 报价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/offerSearch/offer/preview'
,
name
:
'报价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 报价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/offerSearch/offer/detail'
,
name
:
'报价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/offerSearch/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待新增报价单 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAddOffer'
,
name
:
'待新增报价单'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/waitAddOffer'
,
},
{
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAddOffer/offer'
,
name
:
'quote'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/quote'
},
// 新建报价单
{
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAddOffer/add'
,
name
:
'add'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/add'
},
// 新建报价单编辑
{
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAddOffer/edit'
,
name
:
'edit'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/edit'
},
{
/** 待新增报价单 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAddOffer/offer/preview'
,
name
:
'待新增报价单详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAddOffer/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待审核报价单(一级) */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAuditOfferOne'
,
name
:
'待审核报价单(一级)'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/waitAuditOfferOne'
,
},
{
/** 待新增报价单 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAuditOfferOne/offer/preview'
,
name
:
'审核报价单(一级)详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待新增报价单 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAuditOfferOne/offer/detail'
,
name
:
'审核报价单(一级)详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAuditOfferOne/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待审核报价单(二级) */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAuditOfferTwo'
,
name
:
'待审核报价单(二级)'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/waitAuditOfferTwo'
,
},
{
/** 待审核报价单(二级) 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAuditOfferTwo/offer/preview'
,
name
:
'待审核报价单(二级)详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待审核报价单(二级) 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAuditOfferTwo/offer/detail'
,
name
:
'待审核报价单(二级)详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitAuditOfferTwo/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 待提交报价单 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitSubmitOffer'
,
name
:
'待提交报价单'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/waitSubmitOffer'
,
},
{
/** 待提交报价单 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitSubmitOffer/offer/preview'
,
name
:
'待提交报价单详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
{
/** 询价单查询 查看详情 */
path
:
'/memberCenter/tranactionAbility/inquiryOffer/waitSubmitOffer/inquiry/preview'
,
name
:
'询价单查询详情'
,
component
:
'@/pages/transaction/dealAbility/inquiryOffer/preview'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
]
}
]
src/pages/transaction/dealAbility/confirmOffer/detail/index.tsx
0 → 100644
View file @
ed048324
import
React
,
{
Fragment
,
useEffect
,
useState
}
from
'react'
;
import
{
Button
,
Tag
,
Badge
,
Typography
,
Space
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
PeripheralLayout
from
'@/pages/transaction/components/detailLayout'
;
import
{
Context
}
from
'@/pages/transaction/components/detailLayout/components/context'
;
import
moment
from
'moment'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
CheckCircleOutlined
,
LinkOutlined
}
from
'@ant-design/icons'
;
import
{
EXTERNALSTATE_COLOR
,
INTERNALSTATE_COLOR
}
from
'@/pages/transaction/components/stateColor'
;
import
ProgressLayout
from
'@/pages/transaction/components/detailLayout/components/progressLayout'
;
import
BasicLayout
from
'@/pages/transaction/components/detailLayout/components/basicLayout'
;
import
ListLayout
from
'@/pages/transaction/components/detailLayout/components/listLayout'
;
import
GeneralLayout
from
'@/pages/transaction/components/detailLayout/components/GeneralLayout'
;
import
RecordLyout
from
'@/pages/transaction/components/detailLayout/components/RecordLyout'
;
import
ModalOperate
from
'@/pages/transaction/components/modalOperate'
;
const
TABLINK
=
[
{
id
:
'progressLayout'
,
title
:
'流转进度'
},
{
id
:
'basicLayout'
,
title
:
'基本信息'
},
{
id
:
'inquiryProductLayout'
,
title
:
'商品询价'
},
{
id
:
'otherLayout'
,
title
:
'其他说明'
},
{
id
:
'fileLayout'
,
title
:
'附件'
},
{
id
:
'recordLyout'
,
title
:
'流转记录'
},
]
const
ConfirmOfferDetail
=
()
=>
{
const
format
=
(
text
,
fmt
?:
string
)
=>
{
return
<>
{
moment
(
text
).
format
(
fmt
||
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
const
{
query
:
{
id
,
},
pathname
,
}
=
history
.
location
;
const
[
path
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
]);
const
[
pathPci
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
3
]);
const
[
dataSource
,
setDataSource
]
=
useState
<
any
>
({});
const
[
basicEffect
,
setBasicEffect
]
=
useState
<
any
>
([]);
const
[
otherEffect
,
setOtherEffect
]
=
useState
<
any
>
([]);
const
[
fileEffect
,
setFileEffect
]
=
useState
<
any
>
([]);
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
);
const
handleBasicEffect
=
(
data
:
any
)
=>
{
setBasicEffect
([
{
col
:
[
{
label
:
'报价单号'
,
extra
:
data
.
quotationNo
},
{
label
:
'报价摘要'
,
extra
:
data
.
details
},
{
label
:
'外部状态'
,
extra
:
<
Tag
color=
{
EXTERNALSTATE_COLOR
[
data
.
externalState
]
||
'default'
}
>
{
data
.
externalStateName
}
</
Tag
>
},
{
label
:
'内部状态'
,
extra
:
<
Badge
status=
{
INTERNALSTATE_COLOR
[
data
.
interiorState
]
||
'default'
}
text=
{
data
.
interiorStateName
}
/>
},
]
},
{
col
:
[
{
label
:
'对应询价单号'
,
extra
:
data
.
inquiryListNo
},
{
label
:
'询价会员'
,
extra
:
data
.
memberName
},
{
label
:
'报价截止时间'
,
extra
:
format
(
data
.
quotationAsTime
)
},
]
},
{
col
:
[
{
label
:
'单据时间'
,
extra
:
format
(
data
.
voucherTime
)
},
]
},
])
}
const
handleOtherEffect
=
(
data
:
any
)
=>
{
setOtherEffect
([
{
col
:
[
{
label
:
'最小起订'
,
extra
:
data
.
minimumOrder
},
{
label
:
'交付说明'
,
extra
:
data
.
deliveryInstructions
},
{
label
:
'付款说明'
,
extra
:
data
.
paymentType
},
]
},
{
col
:
[
{
label
:
'税费说明'
,
extra
:
data
.
taxes
},
{
label
:
'物流说明'
,
extra
:
data
.
logistics
},
{
label
:
'包装说明'
,
extra
:
data
.
packRequire
},
]
},
{
col
:
[
{
label
:
'其他说明'
,
extra
:
data
.
otherRequire
},
]
},
])
}
const
handleFileEffect
=
(
data
:
any
)
=>
{
setFileEffect
([
{
col
:
[
{
label
:
'附件'
,
extra
:
<>
{
data
.
enclosureUrls
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
Typography
.
Link
style=
{
{
display
:
'block'
,
paddingBottom
:
'8px'
}
}
key=
{
`link_${index + 1}`
}
href=
{
`/api/contract/contractTemplate/downloadContract?contractName=${item.name}&contractUrl=${item.url}`
}
target=
"_blank"
>
<
LinkOutlined
/>
{
item
.
name
}
</
Typography
.
Link
>
))
}
</>
},
]
}
])
}
const
fetchDataSource
=
async
()
=>
{
await
PublicApi
.
getTransactionNotarizeEnquiryProductQuotationDetails
({
id
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
history
.
goBack
();
return
;
}
const
{
data
}
=
res
;
data
.
externalLogStates
=
data
.
externalQuotationStateResponses
?
[...
data
.
externalQuotationStateResponses
]
:
null
;
data
.
interiorLogStates
=
data
.
interiorQuotationStateResponses
?
[...
data
.
interiorQuotationStateResponses
]
:
null
;
data
.
externalLogs
=
data
.
externalRequisitionFormResponses
?
[...
data
.
externalRequisitionFormResponses
]
:
null
;
data
.
interiorLogs
=
data
.
interiorQuotationLogResponses
?
[...
data
.
interiorQuotationLogResponses
]
:
null
;
setDataSource
(
data
);
handleBasicEffect
(
data
);
handleOtherEffect
(
data
);
handleFileEffect
(
data
);
})
}
useEffect
(()
=>
{
fetchDataSource
();
},
[])
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'商品ID/名称'
,
key
:
'productId'
,
dataIndex
:
'productId'
,
render
:
(
productId
,
data
)
=>
(
<
Space
direction=
'vertical'
>
<
Typography
.
Link
target=
"_blank"
href=
{
`/shop/commodity/detail?id=${productId}&type=2&shopId=${btoa(JSON.stringify({ roleId: data.memberRoleId, memberId: data.memberId }))}`
}
>
{
productId
}
</
Typography
.
Link
>
<
Typography
.
Text
>
{
data
.
productName
}
</
Typography
.
Text
>
</
Space
>
)
},
{
title
:
'品类'
,
key
:
'category'
,
dataIndex
:
'category'
,
},
{
title
:
'品牌'
,
key
:
'brand'
,
dataIndex
:
'brand'
,
},
{
title
:
'采购数量/单位'
,
key
:
'purchaseCount'
,
dataIndex
:
'purchaseCount'
,
render
:
(
purchaseCount
,
data
)
=>
(
<
Space
direction=
'vertical'
>
<
Typography
.
Text
>
{
purchaseCount
}
</
Typography
.
Text
>
<
Typography
.
Text
>
{
data
.
unit
}
</
Typography
.
Text
>
</
Space
>
)
},
{
title
:
'含税/税率'
,
key
:
'purchaseCount'
,
dataIndex
:
'purchaseCount'
,
},
{
title
:
'报价单价'
,
key
:
'price'
,
dataIndex
:
'price'
,
render
:
price
=>
<>
{
price
?
`¥${price.toFixed(2)}`
:
'¥0.00'
}
</>
},
{
title
:
'金额'
,
key
:
'money'
,
dataIndex
:
'money'
,
render
:
money
=>
<>
{
money
?
`¥${money.toFixed(2)}`
:
'¥0.00'
}
</>
},
]
const
fetchLink
=
()
=>
{
let
fetchSoure
:
any
=
null
;
switch
(
pathPci
)
{
case
'waitSubmitAuditOffer'
:
fetchSoure
=
PublicApi
.
postTransactionNotarizeEnquiryQuotedPriceSubmit
break
;
case
'waitAuditInquiryOne'
:
fetchSoure
=
PublicApi
.
postTransactionNotarizeEnquiryQuotedPriceAudit
break
;
case
'waitAuditInquiryTwo'
:
fetchSoure
=
PublicApi
.
postTransactionNotarizeEnquiryQuotedPriceAuditTwo
break
;
case
'waitSubmitOffer'
:
fetchSoure
=
PublicApi
.
postTransactionNotarizeEnquiryQuotedPriceAffirm
break
;
}
return
fetchSoure
}
return
(
<
Context
.
Provider
value=
{
dataSource
}
>
<
PeripheralLayout
no=
{
dataSource
.
quotationNo
}
detail=
{
dataSource
.
details
}
tabLink=
{
TABLINK
}
effect=
{
<>
{
path
===
'detail'
&&
(
<
Button
onClick=
{
()
=>
setVisible
(
true
)
}
type=
'primary'
>
<
CheckCircleOutlined
/>
单据审核
</
Button
>
)
}
</>
}
components=
{
<
Fragment
>
<
ProgressLayout
/>
<
BasicLayout
effect=
{
basicEffect
}
/>
<
ListLayout
id=
{
id
}
anchor=
"inquiryProductLayout"
title=
"询价商品"
columns=
{
columns
}
fetch=
{
PublicApi
.
getTransactionInquiryDetails
}
/>
<
GeneralLayout
anchor=
"otherLayout"
title=
"其他说明"
effect=
{
otherEffect
}
/>
<
GeneralLayout
anchor=
"fileLayout"
title=
"附件"
effect=
{
fileEffect
}
/>
<
RecordLyout
/>
</
Fragment
>
}
/>
<
ModalOperate
id=
{
id
}
title=
"单据审核"
modalType=
"audit"
visible=
{
visible
}
fetch=
{
fetchLink
()
}
onCancel=
{
()
=>
setVisible
(
false
)
}
onOk=
{
()
=>
history
.
goBack
()
}
/>
</
Context
.
Provider
>
)
}
export
default
ConfirmOfferDetail
;
src/pages/transaction/dealAbility/confirmOffer/offerSearch/index.tsx
View file @
ed048324
...
...
@@ -23,14 +23,14 @@ const OfferSearch = () => {
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/confirm
InquiryQuote/quoteOrder/quote
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/confirm
Offer/offerSearch/offer
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单号'
,
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/confirm
InquiryQuote/quoteOrder/rfq
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/confirm
Offer/offerSearch/inquiry
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'报价单摘要'
,
...
...
src/pages/transaction/dealAbility/confirmOffer/preview/index.tsx
0 → 100644
View file @
ed048324
import
React
,
{
Fragment
,
useEffect
,
useState
}
from
'react'
;
import
{
Button
,
Tag
,
Badge
,
Typography
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
PeripheralLayout
from
'@/pages/transaction/components/detailLayout'
;
import
{
Context
}
from
'@/pages/transaction/components/detailLayout/components/context'
;
import
moment
from
'moment'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
CheckCircleOutlined
,
LinkOutlined
}
from
'@ant-design/icons'
;
import
{
EXTERNALSTATE_COLOR
,
INTERNALSTATE_COLOR
}
from
'@/pages/transaction/components/stateColor'
;
import
ProgressLayout
from
'@/pages/transaction/components/detailLayout/components/progressLayout'
;
import
BasicLayout
from
'@/pages/transaction/components/detailLayout/components/basicLayout'
;
import
ListLayout
from
'@/pages/transaction/components/detailLayout/components/listLayout'
;
import
GeneralLayout
from
'@/pages/transaction/components/detailLayout/components/GeneralLayout'
;
import
RecordLyout
from
'@/pages/transaction/components/detailLayout/components/RecordLyout'
;
import
EyePreview
from
'@/components/EyePreview'
;
const
TABLINK
=
[
{
id
:
'progressLayout'
,
title
:
'流转进度'
},
{
id
:
'basicLayout'
,
title
:
'基本信息'
},
{
id
:
'inquiryProductLayout'
,
title
:
'询价商品'
},
{
id
:
'conditionLayout'
,
title
:
'交易条件'
},
{
id
:
'fileLayout'
,
title
:
'附件'
},
{
id
:
'recordLyout'
,
title
:
'流转记录'
},
]
const
ConfirmOfferPreview
=
()
=>
{
const
format
=
(
text
,
fmt
?:
string
)
=>
{
return
<>
{
moment
(
text
).
format
(
fmt
||
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
const
{
query
:
{
id
,
},
pathname
,
}
=
history
.
location
;
const
[
path
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
]);
const
[
dataSource
,
setDataSource
]
=
useState
<
any
>
({});
const
[
basicEffect
,
setBasicEffect
]
=
useState
<
any
>
([]);
const
[
conditionEffect
,
setConditionEffect
]
=
useState
<
any
>
([]);
const
[
fileEffect
,
setFileEffect
]
=
useState
<
any
>
([]);
const
handleBasicEffect
=
(
data
:
any
)
=>
{
setBasicEffect
([
{
col
:
[
{
label
:
'询价单号'
,
extra
:
data
.
inquiryListNo
},
{
label
:
'询价摘要'
,
extra
:
data
.
details
},
]
},
{
col
:
[
{
label
:
'外部状态'
,
extra
:
<
Tag
color=
{
EXTERNALSTATE_COLOR
[
data
.
externalState
]
||
'default'
}
>
{
data
.
externalStateName
}
</
Tag
>
},
{
label
:
'内部状态'
,
extra
:
<
Badge
status=
{
INTERNALSTATE_COLOR
[
data
.
interiorState
]
||
'default'
}
text=
{
data
.
interiorStateName
}
/>
},
]
},
{
col
:
[
{
label
:
'询价会员'
,
extra
:
data
.
inquiryListMemberName
},
{
label
:
'单据时间'
,
extra
:
format
(
data
.
voucherTime
)
},
]
},
])
}
const
handleConditionEffect
=
(
data
:
any
)
=>
{
setConditionEffect
([
{
col
:
[
{
label
:
'交付日期'
,
extra
:
format
(
data
.
deliveryTime
)
},
{
label
:
'交付地址'
,
extra
:
data
.
fullAddress
},
{
label
:
'报价截止时间'
,
extra
:
format
(
data
.
quotationAsTime
)
},
]
},
{
col
:
[
{
label
:
'报价要求'
,
extra
:
data
.
offer
},
{
label
:
'付款方式'
,
extra
:
data
.
paymentType
},
{
label
:
'税费要求'
,
extra
:
data
.
taxes
},
]
},
{
col
:
[
{
label
:
'物流要求'
,
extra
:
data
.
logistics
},
{
label
:
'包装要求'
,
extra
:
data
.
packRequire
},
{
label
:
'其他要求'
,
extra
:
data
.
otherRequire
},
]
},
])
}
const
handleFileEffect
=
(
data
:
any
)
=>
{
setFileEffect
([
{
col
:
[
{
label
:
'附件'
,
extra
:
<>
{
data
.
enclosureUrls
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
Typography
.
Link
style=
{
{
display
:
'block'
,
paddingBottom
:
'8px'
}
}
key=
{
`link_${index + 1}`
}
href=
{
`/api/contract/contractTemplate/downloadContract?contractName=${item.name}&contractUrl=${item.url}`
}
target=
"_blank"
>
<
LinkOutlined
/>
{
item
.
name
}
</
Typography
.
Link
>
))
}
</>
},
]
}
])
}
const
fetchDataSource
=
async
()
=>
{
await
PublicApi
.
getTransactionNotarizeEnquiryQuotedPriceDetails
({
id
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
history
.
goBack
();
return
;
}
const
{
data
}
=
res
;
data
.
externalLogStates
=
[...
data
.
externalInquiryListStateResponses
];
data
.
interiorLogStates
=
[...
data
.
interiorRequisitionFormStateResponses
];
data
.
externalLogs
=
[...
data
.
externalInquiryListLogResponses
];
data
.
interiorLogs
=
[...
data
.
interiorInquiryListLogResponses
];
setDataSource
(
data
);
handleBasicEffect
(
data
);
handleConditionEffect
(
data
);
handleFileEffect
(
data
);
})
}
useEffect
(()
=>
{
fetchDataSource
();
},
[])
const
handleJump
=
(
data
:
any
)
=>
{
window
.
open
(
`/shop/commodity/detail?id=
${
data
.
productId
}
&type=2&shopId=
${
btoa
(
JSON
.
stringify
({
roleId
:
data
.
memberRoleId
,
memberId
:
data
.
memberId
}))}
`
)
}
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'ID'
,
key
:
'id'
,
dataIndex
:
'id'
,
},
{
title
:
'商品名称'
,
key
:
'productName'
,
dataIndex
:
'productName'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
type=
'button'
handleClick=
{
()
=>
handleJump
(
record
)
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'品类'
,
key
:
'category'
,
dataIndex
:
'category'
,
},
{
title
:
'品牌'
,
key
:
'brand'
,
dataIndex
:
'brand'
,
},
{
title
:
'单位'
,
key
:
'unit'
,
dataIndex
:
'unit'
,
},
{
title
:
'采购数量'
,
key
:
'purchaseCount'
,
dataIndex
:
'purchaseCount'
,
},
]
return
(
<
Context
.
Provider
value=
{
dataSource
}
>
<
PeripheralLayout
no=
{
dataSource
.
inquiryListNo
}
detail=
{
dataSource
.
details
}
tabLink=
{
TABLINK
}
components=
{
<
Fragment
>
<
ProgressLayout
/>
<
BasicLayout
effect=
{
basicEffect
}
/>
<
ListLayout
id=
{
id
}
anchor=
"inquiryProductLayout"
title=
"询价商品"
columns=
{
columns
}
fetch=
{
PublicApi
.
getTransactionEnquiryProductList
}
/>
<
GeneralLayout
anchor=
"conditionLayout"
title=
"交易条件"
effect=
{
conditionEffect
}
/>
<
GeneralLayout
anchor=
"fileLayout"
title=
"附件"
effect=
{
fileEffect
}
/>
<
RecordLyout
/>
</
Fragment
>
}
/>
</
Context
.
Provider
>
)
}
export
default
ConfirmOfferPreview
;
src/pages/transaction/dealAbility/confirmOffer/waitAuditInquiryOne/index.tsx
View file @
ed048324
...
...
@@ -30,14 +30,14 @@ const WaitAuditInquiryOne = () => {
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/confirm
InquiryQuote/pendingReviewOne/quote
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/confirm
Offer/waitAuditInquiryOne/offer
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单号'
,
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/confirm
InquiryQuote/pendingReviewOne/rfq
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/confirm
Offer/waitAuditInquiryOne/inquiry
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'报价单摘要'
,
...
...
@@ -78,7 +78,7 @@ const WaitAuditInquiryOne = () => {
key
:
'options'
,
dataIndex
:
'options'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
'link'
>
审核
</
Button
>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/confirmOffer/waitAuditInquiryOne/offer/detail?id=${record.id}`
)
}
>
审核
</
Button
>
}
]
...
...
src/pages/transaction/dealAbility/confirmOffer/waitAuditInquiryTwo/index.tsx
View file @
ed048324
...
...
@@ -30,13 +30,13 @@ const WaitAuditInquiryOne = () => {
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/confirm
InquiryQuote/pendingSubmit/quote
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/confirm
Offer/waitAuditInquiryTwo/offer
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单号'
,
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/confirm
InquiryQuote/pendingSubmit/rfq
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/confirm
Offer/waitAuditInquiryTwo/inquiry
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'报价单摘要'
,
...
...
@@ -77,7 +77,7 @@ const WaitAuditInquiryOne = () => {
key
:
'options'
,
dataIndex
:
'options'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
'link'
>
审核
</
Button
>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/confirmOffer/waitAuditInquiryTwo/offer/detail?id=${record.id}`
)
}
>
审核
</
Button
>
}
]
...
...
src/pages/transaction/dealAbility/confirmOffer/waitSubmitAuditOffer/index.tsx
View file @
ed048324
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
Table
from
'@/pages/transaction/components/TableLayout'
;
import
{
history
}
from
'umi'
;
import
{
Tag
,
Badge
,
Button
,
Row
,
Col
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
...
...
@@ -18,13 +19,9 @@ const WaitSubmitAuditOffer = () => {
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
/** 批量审核 */
const
fetchSubmitBatch
=
async
(
id
?:
number
)
=>
{
let
res
=
null
;
if
(
id
)
{
res
=
await
PublicApi
.
postTransactionNotarizeEnquiryQuotedPriceSubmit
({
id
:
Number
(
id
)
})
}
else
{
res
=
await
PublicApi
.
postTransactionNotarizeEnquiryQuotedPriceSubmitAll
({
ids
:
rowkeys
});
}
const
fetchSubmitBatch
=
async
()
=>
{
const
res
=
await
PublicApi
.
postTransactionNotarizeEnquiryQuotedPriceSubmitAll
({
ids
:
rowkeys
});
if
(
res
.
code
===
1000
)
{
reload
.
current
.
reload
();
setRowKeys
([])
...
...
@@ -37,14 +34,14 @@ const WaitSubmitAuditOffer = () => {
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/confirm
InquiryQuote/pendingSubmitReview/quote
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/confirm
Offer/waitSubmitAuditOffer/offer
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单号'
,
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/confirm
InquiryQuote/pendingSubmitReview/rfq
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/confirm
Offer/waitSubmitAuditOffer/inquiry
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'报价单摘要'
,
...
...
@@ -84,7 +81,7 @@ const WaitSubmitAuditOffer = () => {
title
:
'操作'
,
key
:
'options'
,
dataIndex
:
'options'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
提交审核
</
Button
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/confirmOffer/waitSubmitAuditOffer/offer/detail?id=${record.id}`
)
}
>
提交审核
</
Button
>
}
];
...
...
@@ -105,7 +102,7 @@ const WaitSubmitAuditOffer = () => {
<
Col
span=
{
6
}
>
<
Button
disabled=
{
rowkeys
.
length
===
0
}
onClick=
{
()
=>
fetchSubmitBatch
()
}
onClick=
{
fetchSubmitBatch
}
>
批量提交审核
</
Button
>
...
...
src/pages/transaction/dealAbility/confirmOffer/waitSubmitOffer/index.tsx
View file @
ed048324
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
Table
from
'@/pages/transaction/components/TableLayout'
;
import
{
Tag
,
Badge
,
Button
,
Row
,
Col
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
...
...
@@ -18,13 +19,8 @@ const WaitSubmitOffer = () => {
const
[
rowkeys
,
setRowKeys
]
=
useState
<
Array
<
number
>>
([]);
/** 批量审核 */
const
fetchSubmitBatch
=
async
(
id
?:
number
)
=>
{
let
res
=
null
;
if
(
id
)
{
res
=
await
PublicApi
.
postTransactionNotarizeEnquiryQuotedPriceSubmit
({
id
:
Number
(
id
)
})
}
else
{
res
=
await
PublicApi
.
postTransactionNotarizeEnquiryQuotedPriceSubmitAll
({
ids
:
rowkeys
});
}
const
fetchSubmitBatch
=
async
()
=>
{
const
res
=
await
PublicApi
.
postTransactionNotarizeEnquiryQuotedPriceAffirmAll
({
ids
:
rowkeys
});
if
(
res
.
code
===
1000
)
{
reload
.
current
.
reload
();
setRowKeys
([])
...
...
@@ -37,14 +33,14 @@ const WaitSubmitOffer = () => {
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/confirm
InquiryQuote/pendingSubmit/quote
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/confirm
Offer/waitSubmitOffer/offer
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单号'
,
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/confirm
InquiryQuote/pendingSubmit/rfq
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/confirm
Offer/waitSubmitOffer/inquiry
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'报价单摘要'
,
...
...
@@ -84,7 +80,7 @@ const WaitSubmitOffer = () => {
title
:
'操作'
,
key
:
'options'
,
dataIndex
:
'options'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
提交报价单
</
Button
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/confirmOffer/waitSubmitOffer/offer/detail?id=${record.id}`
)
}
>
提交报价单
</
Button
>
}
]
...
...
@@ -93,7 +89,7 @@ const WaitSubmitOffer = () => {
schema=
{
WAITSUBMITOFFERSCHEMA
}
columns=
{
columns
}
effects=
"quotationNo"
fetch=
{
PublicApi
.
getTransactionNotarizeEnquiryQuotedPriceList
}
fetch=
{
PublicApi
.
getTransactionNotarizeEnquiryQuotedPrice
Affirm
List
}
reload=
{
reload
}
selectedRow
fetchRowkeys=
{
(
e
)
=>
setRowKeys
(
e
)
}
...
...
src/pages/transaction/dealAbility/inquiryOffer/detail/index.tsx
0 → 100644
View file @
ed048324
import
React
,
{
Fragment
,
useEffect
,
useState
}
from
'react'
;
import
{
Button
,
Tag
,
Badge
,
Typography
,
Space
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
PeripheralLayout
from
'@/pages/transaction/components/detailLayout'
;
import
{
Context
}
from
'@/pages/transaction/components/detailLayout/components/context'
;
import
moment
from
'moment'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
CheckCircleOutlined
,
LinkOutlined
}
from
'@ant-design/icons'
;
import
{
EXTERNALSTATE_COLOR
,
INTERNALSTATE_COLOR
}
from
'@/pages/transaction/components/stateColor'
;
import
ProgressLayout
from
'@/pages/transaction/components/detailLayout/components/progressLayout'
;
import
BasicLayout
from
'@/pages/transaction/components/detailLayout/components/basicLayout'
;
import
ListLayout
from
'@/pages/transaction/components/detailLayout/components/listLayout'
;
import
GeneralLayout
from
'@/pages/transaction/components/detailLayout/components/GeneralLayout'
;
import
RecordLyout
from
'@/pages/transaction/components/detailLayout/components/RecordLyout'
;
import
ModalOperate
from
'@/pages/transaction/components/modalOperate'
;
const
TABLINK
=
[
{
id
:
'progressLayout'
,
title
:
'流转进度'
},
{
id
:
'basicLayout'
,
title
:
'基本信息'
},
{
id
:
'inquiryProductLayout'
,
title
:
'商品询价'
},
{
id
:
'otherLayout'
,
title
:
'其他说明'
},
{
id
:
'fileLayout'
,
title
:
'附件'
},
{
id
:
'recordLyout'
,
title
:
'流转记录'
},
]
const
InquiryOfferDetail
=
()
=>
{
const
format
=
(
text
,
fmt
?:
string
)
=>
{
return
<>
{
moment
(
text
).
format
(
fmt
||
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
const
{
query
:
{
id
,
},
pathname
,
}
=
history
.
location
;
const
[
path
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
]);
const
[
pathPci
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
3
]);
const
[
dataSource
,
setDataSource
]
=
useState
<
any
>
({});
const
[
basicEffect
,
setBasicEffect
]
=
useState
<
any
>
([]);
const
[
otherEffect
,
setOtherEffect
]
=
useState
<
any
>
([]);
const
[
fileEffect
,
setFileEffect
]
=
useState
<
any
>
([]);
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
);
const
handleBasicEffect
=
(
data
:
any
)
=>
{
setBasicEffect
([
{
col
:
[
{
label
:
'报价单号'
,
extra
:
data
.
quotationNo
},
{
label
:
'报价摘要'
,
extra
:
data
.
details
},
{
label
:
'外部状态'
,
extra
:
<
Tag
color=
{
EXTERNALSTATE_COLOR
[
data
.
externalState
]
||
'default'
}
>
{
data
.
externalStateName
}
</
Tag
>
},
{
label
:
'内部状态'
,
extra
:
<
Badge
status=
{
INTERNALSTATE_COLOR
[
data
.
interiorState
]
||
'default'
}
text=
{
data
.
interiorStateName
}
/>
},
]
},
{
col
:
[
{
label
:
'对应询价单号'
,
extra
:
data
.
inquiryListNo
},
{
label
:
'询价会员'
,
extra
:
data
.
memberName
},
{
label
:
'报价截止时间'
,
extra
:
format
(
data
.
quotationAsTime
)
},
]
},
{
col
:
[
{
label
:
'单据时间'
,
extra
:
format
(
data
.
voucherTime
)
},
]
},
])
}
const
handleOtherEffect
=
(
data
:
any
)
=>
{
setOtherEffect
([
{
col
:
[
{
label
:
'最小起订'
,
extra
:
data
.
minimumOrder
},
{
label
:
'交付说明'
,
extra
:
data
.
deliveryInstructions
},
{
label
:
'付款说明'
,
extra
:
data
.
paymentType
},
]
},
{
col
:
[
{
label
:
'税费说明'
,
extra
:
data
.
taxes
},
{
label
:
'物流说明'
,
extra
:
data
.
logistics
},
{
label
:
'包装说明'
,
extra
:
data
.
packRequire
},
]
},
{
col
:
[
{
label
:
'其他说明'
,
extra
:
data
.
otherRequire
},
]
},
])
}
const
handleFileEffect
=
(
data
:
any
)
=>
{
setFileEffect
([
{
col
:
[
{
label
:
'附件'
,
extra
:
<>
{
data
.
enclosureUrls
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
Typography
.
Link
style=
{
{
display
:
'block'
,
paddingBottom
:
'8px'
}
}
key=
{
`link_${index + 1}`
}
href=
{
`/api/contract/contractTemplate/downloadContract?contractName=${item.name}&contractUrl=${item.url}`
}
target=
"_blank"
>
<
LinkOutlined
/>
{
item
.
name
}
</
Typography
.
Link
>
))
}
</>
},
]
}
])
}
const
fetchDataSource
=
async
()
=>
{
await
PublicApi
.
getTransactionProductQuotationDetails
({
id
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
history
.
goBack
();
return
;
}
const
{
data
}
=
res
;
data
.
externalLogStates
=
data
.
externalQuotationStateResponses
?
[...
data
.
externalQuotationStateResponses
]
:
null
;
data
.
interiorLogStates
=
data
.
interiorQuotationStateResponses
?
[...
data
.
interiorQuotationStateResponses
]
:
null
;
data
.
externalLogs
=
data
.
externalRequisitionFormResponses
?
[...
data
.
externalRequisitionFormResponses
]
:
null
;
data
.
interiorLogs
=
data
.
interiorQuotationLogResponses
?
[...
data
.
interiorQuotationLogResponses
]
:
null
;
setDataSource
(
data
);
handleBasicEffect
(
data
);
handleOtherEffect
(
data
);
handleFileEffect
(
data
);
})
}
useEffect
(()
=>
{
fetchDataSource
();
},
[])
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'商品ID/名称'
,
key
:
'productId'
,
dataIndex
:
'productId'
,
render
:
(
productId
,
data
)
=>
(
<
Space
direction=
'vertical'
>
<
Typography
.
Link
target=
"_blank"
href=
{
`/shop/commodity/detail?id=${productId}&type=2&shopId=${btoa(JSON.stringify({ roleId: data.memberRoleId, memberId: data.memberId }))}`
}
>
{
productId
}
</
Typography
.
Link
>
<
Typography
.
Text
>
{
data
.
productName
}
</
Typography
.
Text
>
</
Space
>
)
},
{
title
:
'品类'
,
key
:
'category'
,
dataIndex
:
'category'
,
},
{
title
:
'品牌'
,
key
:
'brand'
,
dataIndex
:
'brand'
,
},
{
title
:
'采购数量/单位'
,
key
:
'purchaseCount'
,
dataIndex
:
'purchaseCount'
,
render
:
(
purchaseCount
,
data
)
=>
(
<
Space
direction=
'vertical'
>
<
Typography
.
Text
>
{
purchaseCount
}
</
Typography
.
Text
>
<
Typography
.
Text
>
{
data
.
unit
}
</
Typography
.
Text
>
</
Space
>
)
},
{
title
:
'含税/税率'
,
key
:
'purchaseCount'
,
dataIndex
:
'purchaseCount'
,
},
{
title
:
'报价单价'
,
key
:
'price'
,
dataIndex
:
'price'
,
render
:
price
=>
<>
{
price
?
`¥${price.toFixed(2)}`
:
'¥0.00'
}
</>
},
{
title
:
'金额'
,
key
:
'money'
,
dataIndex
:
'money'
,
render
:
money
=>
<>
{
money
?
`¥${money.toFixed(2)}`
:
'¥0.00'
}
</>
},
]
const
fetchLink
=
()
=>
{
let
fetchSoure
:
any
=
null
;
switch
(
pathPci
)
{
case
'waitAuditOfferOne'
:
fetchSoure
=
PublicApi
.
postTransactionProductQuotationtAuditSubmit
break
;
case
'waitAuditOfferTwo'
:
fetchSoure
=
PublicApi
.
postTransactionProductQuotationtAuditSubmitTwo
break
;
}
return
fetchSoure
}
return
(
<
Context
.
Provider
value=
{
dataSource
}
>
<
PeripheralLayout
no=
{
dataSource
.
quotationNo
}
detail=
{
dataSource
.
details
}
tabLink=
{
TABLINK
}
effect=
{
<>
{
path
===
'detail'
&&
(
<
Button
onClick=
{
()
=>
setVisible
(
true
)
}
type=
'primary'
>
<
CheckCircleOutlined
/>
单据审核
</
Button
>
)
}
</>
}
components=
{
<
Fragment
>
<
ProgressLayout
/>
<
BasicLayout
effect=
{
basicEffect
}
/>
<
ListLayout
id=
{
id
}
anchor=
"inquiryProductLayout"
title=
"询价商品"
columns=
{
columns
}
fetch=
{
PublicApi
.
getTransactionInquiryDetails
}
/>
<
GeneralLayout
anchor=
"otherLayout"
title=
"其他说明"
effect=
{
otherEffect
}
/>
<
GeneralLayout
anchor=
"fileLayout"
title=
"附件"
effect=
{
fileEffect
}
/>
<
RecordLyout
/>
</
Fragment
>
}
/>
<
ModalOperate
id=
{
id
}
title=
"单据审核"
modalType=
"audit"
visible=
{
visible
}
fetch=
{
fetchLink
()
}
onCancel=
{
()
=>
setVisible
(
false
)
}
onOk=
{
()
=>
history
.
goBack
()
}
/>
</
Context
.
Provider
>
)
}
export
default
InquiryOfferDetail
;
src/pages/transaction/dealAbility/inquiryOffer/inquirySearch/index.tsx
View file @
ed048324
...
...
@@ -23,7 +23,7 @@ const InquirySearch = () => {
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/enquiryOrder/rfq
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/inquirySearch/inquiry
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单摘要'
,
...
...
@@ -31,9 +31,9 @@ const InquirySearch = () => {
dataIndex
:
'details'
,
},
{
title
:
'
被
询价会员'
,
key
:
'
m
emberName'
,
dataIndex
:
'
m
emberName'
,
title
:
'询价会员'
,
key
:
'
inquiryListM
emberName'
,
dataIndex
:
'
inquiryListM
emberName'
,
},
{
title
:
'交付日期'
,
...
...
src/pages/transaction/dealAbility/inquiryOffer/offerSearch/index.tsx
View file @
ed048324
...
...
@@ -23,14 +23,14 @@ const OfferSearch = () => {
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/quoteOrder/quote
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/offerSearch/offer
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单号'
,
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/quoteOrder/rfq
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/offerSearch/inquiry
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'报价单摘要'
,
...
...
src/pages/transaction/dealAbility/inquiryOffer/preview/index.tsx
0 → 100644
View file @
ed048324
import
React
,
{
Fragment
,
useEffect
,
useState
}
from
'react'
;
import
{
Button
,
Tag
,
Badge
,
Typography
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
PeripheralLayout
from
'@/pages/transaction/components/detailLayout'
;
import
{
Context
}
from
'@/pages/transaction/components/detailLayout/components/context'
;
import
moment
from
'moment'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
CheckCircleOutlined
,
LinkOutlined
}
from
'@ant-design/icons'
;
import
{
EXTERNALSTATE_COLOR
,
INTERNALSTATE_COLOR
}
from
'@/pages/transaction/components/stateColor'
;
import
ProgressLayout
from
'@/pages/transaction/components/detailLayout/components/progressLayout'
;
import
BasicLayout
from
'@/pages/transaction/components/detailLayout/components/basicLayout'
;
import
ListLayout
from
'@/pages/transaction/components/detailLayout/components/listLayout'
;
import
GeneralLayout
from
'@/pages/transaction/components/detailLayout/components/GeneralLayout'
;
import
RecordLyout
from
'@/pages/transaction/components/detailLayout/components/RecordLyout'
;
import
EyePreview
from
'@/components/EyePreview'
;
const
TABLINK
=
[
{
id
:
'progressLayout'
,
title
:
'流转进度'
},
{
id
:
'basicLayout'
,
title
:
'基本信息'
},
{
id
:
'inquiryProductLayout'
,
title
:
'询价商品'
},
{
id
:
'conditionLayout'
,
title
:
'交易条件'
},
{
id
:
'fileLayout'
,
title
:
'附件'
},
{
id
:
'recordLyout'
,
title
:
'流转记录'
},
]
const
InquiryOfferPreview
=
()
=>
{
const
format
=
(
text
,
fmt
?:
string
)
=>
{
return
<>
{
moment
(
text
).
format
(
fmt
||
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
const
{
query
:
{
id
,
},
pathname
,
}
=
history
.
location
;
const
[
path
]
=
useState
(
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
]);
const
[
dataSource
,
setDataSource
]
=
useState
<
any
>
({});
const
[
basicEffect
,
setBasicEffect
]
=
useState
<
any
>
([]);
const
[
conditionEffect
,
setConditionEffect
]
=
useState
<
any
>
([]);
const
[
fileEffect
,
setFileEffect
]
=
useState
<
any
>
([]);
const
handleBasicEffect
=
(
data
:
any
)
=>
{
setBasicEffect
([
{
col
:
[
{
label
:
'询价单号'
,
extra
:
data
.
inquiryListNo
},
{
label
:
'询价摘要'
,
extra
:
data
.
details
},
]
},
{
col
:
[
{
label
:
'外部状态'
,
extra
:
<
Tag
color=
{
EXTERNALSTATE_COLOR
[
data
.
externalState
]
||
'default'
}
>
{
data
.
externalStateName
}
</
Tag
>
},
{
label
:
'内部状态'
,
extra
:
<
Badge
status=
{
INTERNALSTATE_COLOR
[
data
.
interiorState
]
||
'default'
}
text=
{
data
.
interiorStateName
}
/>
},
]
},
{
col
:
[
{
label
:
'询价会员'
,
extra
:
data
.
inquiryListMemberName
},
{
label
:
'单据时间'
,
extra
:
format
(
data
.
voucherTime
)
},
]
},
])
}
const
handleConditionEffect
=
(
data
:
any
)
=>
{
setConditionEffect
([
{
col
:
[
{
label
:
'交付日期'
,
extra
:
format
(
data
.
deliveryTime
)
},
{
label
:
'交付地址'
,
extra
:
data
.
fullAddress
},
{
label
:
'报价截止时间'
,
extra
:
format
(
data
.
quotationAsTime
)
},
]
},
{
col
:
[
{
label
:
'报价要求'
,
extra
:
data
.
offer
},
{
label
:
'付款方式'
,
extra
:
data
.
paymentType
},
{
label
:
'税费要求'
,
extra
:
data
.
taxes
},
]
},
{
col
:
[
{
label
:
'物流要求'
,
extra
:
data
.
logistics
},
{
label
:
'包装要求'
,
extra
:
data
.
packRequire
},
{
label
:
'其他要求'
,
extra
:
data
.
otherRequire
},
]
},
])
}
const
handleFileEffect
=
(
data
:
any
)
=>
{
setFileEffect
([
{
col
:
[
{
label
:
'附件'
,
extra
:
<>
{
data
.
enclosureUrls
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
Typography
.
Link
style=
{
{
display
:
'block'
,
paddingBottom
:
'8px'
}
}
key=
{
`link_${index + 1}`
}
href=
{
`/api/contract/contractTemplate/downloadContract?contractName=${item.name}&contractUrl=${item.url}`
}
target=
"_blank"
>
<
LinkOutlined
/>
{
item
.
name
}
</
Typography
.
Link
>
))
}
</>
},
]
}
])
}
const
fetchDataSource
=
async
()
=>
{
await
PublicApi
.
getTransactionProductInquiryDetails
({
id
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
history
.
goBack
();
return
;
}
const
{
data
}
=
res
;
data
.
externalLogStates
=
[...
data
.
externalInquiryListStateResponses
];
data
.
interiorLogStates
=
[...
data
.
interiorRequisitionFormStateResponses
];
data
.
externalLogs
=
[...
data
.
externalInquiryListLogResponses
];
data
.
interiorLogs
=
[...
data
.
interiorInquiryListLogResponses
];
setDataSource
(
data
);
handleBasicEffect
(
data
);
handleConditionEffect
(
data
);
handleFileEffect
(
data
);
})
}
useEffect
(()
=>
{
fetchDataSource
();
},
[])
const
handleJump
=
(
data
:
any
)
=>
{
window
.
open
(
`/shop/commodity/detail?id=
${
data
.
productId
}
&type=2&shopId=
${
btoa
(
JSON
.
stringify
({
roleId
:
data
.
memberRoleId
,
memberId
:
data
.
memberId
}))}
`
)
}
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'ID'
,
key
:
'id'
,
dataIndex
:
'id'
,
},
{
title
:
'商品名称'
,
key
:
'productName'
,
dataIndex
:
'productName'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
type=
'button'
handleClick=
{
()
=>
handleJump
(
record
)
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'品类'
,
key
:
'category'
,
dataIndex
:
'category'
,
},
{
title
:
'品牌'
,
key
:
'brand'
,
dataIndex
:
'brand'
,
},
{
title
:
'单位'
,
key
:
'unit'
,
dataIndex
:
'unit'
,
},
{
title
:
'采购数量'
,
key
:
'purchaseCount'
,
dataIndex
:
'purchaseCount'
,
},
]
return
(
<
Context
.
Provider
value=
{
dataSource
}
>
<
PeripheralLayout
no=
{
dataSource
.
inquiryListNo
}
detail=
{
dataSource
.
details
}
tabLink=
{
TABLINK
}
components=
{
<
Fragment
>
<
ProgressLayout
/>
<
BasicLayout
effect=
{
basicEffect
}
/>
<
ListLayout
id=
{
id
}
anchor=
"inquiryProductLayout"
title=
"询价商品"
columns=
{
columns
}
fetch=
{
PublicApi
.
getTransactionEnquiryProductList
}
/>
<
GeneralLayout
anchor=
"conditionLayout"
title=
"交易条件"
effect=
{
conditionEffect
}
/>
<
GeneralLayout
anchor=
"fileLayout"
title=
"附件"
effect=
{
fileEffect
}
/>
<
RecordLyout
/>
</
Fragment
>
}
/>
</
Context
.
Provider
>
)
}
export
default
InquiryOfferPreview
;
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/add.tsx
0 → 100644
View file @
ed048324
import
React
from
'react'
;
import
AddQuoteForm
from
'./addForm'
;
import
{
history
}
from
'umi'
;
const
AddQuote
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
id
}
=
history
.
location
.
query
;
return
(
<
AddQuoteForm
type=
{
1
}
/>
)
}
export
default
AddQuote
;
\ No newline at end of file
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/addForm.tsx
0 → 100644
View file @
ed048324
import
React
,
{
useState
,
useRef
,
useEffect
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
Button
,
Card
,
Tabs
,
message
}
from
'antd'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
ReutrnEle
from
'@/components/ReturnEle'
;
import
BasicInfo
from
'./components/basicInfo'
;
// 基本信息
import
EnquiryGoods
from
'./components/enquiryGoods'
;
// 询价商品
import
TradingConditions
from
'./components/tradingConditions'
;
// 交易条件
import
Attached
from
'./components/attached'
;
// 附件
import
FlowRecord
from
'./components/flowRecord'
;
// 流转记录
import
{
PublicApi
}
from
'@/services/api'
const
{
TabPane
}
=
Tabs
;
export
interface
parmas
{
id
?:
any
,
type
?:
any
}
const
AddQuotes
:
React
.
FC
<
parmas
>
=
(
props
)
=>
{
const
{
id
,
type
}
=
props
;
const
[
count
,
setCount
]
=
useState
<
string
>
(
'1'
)
const
[
inquiryNo
,
setInquiryLNo
]
=
useState
<
any
>
({});
//存放用户信息
const
[
goodsList
,
setgoodsList
]
=
useState
([]);
//存放商品
const
[
enclosureUrls
,
setenclosureUrls
]
=
useState
<
any
>
([]);
const
basicInfoRef
=
useRef
<
any
>
({});
const
tradingConditionsRef
=
useRef
<
any
>
({});
const
[
editData
,
setEditData
]
=
useState
<
any
>
({});
const
[
loading
,
setloading
]
=
useState
<
boolean
>
(
false
);
const
{
pathname
}
=
history
.
location
;
const
pathType
=
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
];
useEffect
(()
=>
{
if
(
id
&&
type
===
2
)
{
PublicApi
.
getTransactionProductQuotationDetails
({
id
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setEditData
(
res
.
data
);
setInquiryLNo
({
orderNo
:
res
.
data
.
inquiryListNo
,
orderId
:
res
.
data
.
inquiryListId
})
setenclosureUrls
(
res
.
data
.
enclosureUrls
)
}
})
}
else
if
(
id
&&
type
===
3
)
{
// 报价
PublicApi
.
getTransactionProductInquiryDetails
({
id
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setEditData
(
res
.
data
);
setInquiryLNo
({
orderNo
:
res
.
data
.
inquiryListNo
,
orderId
:
res
.
data
.
id
})
setenclosureUrls
(
res
.
data
.
enclosureUrls
)
}
})
}
},
[])
/************* 页面的一些操作start *************/
const
onSumbit
=
async
(
params
:
any
)
=>
{
setloading
(
true
);
const
basicInfo
=
await
basicInfoRef
.
current
.
validateFields
();
const
tradingConditions
=
await
tradingConditionsRef
.
current
.
validateFields
();
const
basicInfoData
=
basicInfo
.
data
;
const
tradingConditionsData
=
tradingConditions
.
data
;
if
(
basicInfo
.
state
&&
tradingConditions
.
state
)
{
const
parmas
=
{
inquiryListProductRequests
:
goodsList
,
// 商品列表 ,InquiryListProductRequest
...
basicInfoData
,
...
tradingConditionsData
,
enclosureUrls
,
inquiryListNo
:
inquiryNo
.
orderNo
,
inquiryListId
:
inquiryNo
.
orderId
}
if
(
id
&&
type
===
2
)
{
parmas
.
id
=
editData
.
id
;
await
PublicApi
.
postTransactionProductQuotationUpdate
(
parmas
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
history
.
goBack
();
}
else
{
setloading
(
false
);
}
})
}
else
{
await
PublicApi
.
postTransactionProductQuotationAdd
(
parmas
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
history
.
goBack
();
}
else
{
setloading
(
false
);
}
})
}
}
else
{
message
.
error
(
'有必填字段没选择,请检查!'
);
setloading
(
false
);
}
}
// 获取到会员信息
const
getMemberList
=
(
list
:
any
)
=>
{
PublicApi
.
getTransactionProductInquiryDetails
({
id
:
list
.
orderId
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
res
.
data
.
inquiryListProductRequests
.
forEach
((
item
:
any
)
=>
{
item
.
money
=
item
.
purchaseCount
*
item
.
price
})
setEditData
(
res
.
data
)
setenclosureUrls
(
res
.
data
.
enclosureUrls
)
}
})
setInquiryLNo
(
list
);
}
// 获取添加的商品列表
const
getGoodsList
=
(
list
:
any
)
=>
{
setgoodsList
(
list
)
}
/************* 页面的一些操作end *************/
const
handleClick
=
(
key
:
string
)
=>
{
if
(
key
===
'3'
)
{
setCount
(
key
)
}
}
// 附件回调
const
handleGetEnclosureUrls
=
(
data
:
any
)
=>
{
setenclosureUrls
(
data
)
}
return
(
<
PageHeaderWrapper
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReutrnEle
description=
"返回"
/>
}
extra=
{
<
Button
type=
"primary"
onClick=
{
onSumbit
}
loading=
{
loading
}
>
保存
</
Button
>
}
>
<
Card
>
<
Tabs
onTabClick=
{
handleClick
}
type=
"card"
>
<
TabPane
tab=
"基本信息"
key=
"1"
forceRender
>
<
BasicInfo
currentRef=
{
basicInfoRef
}
getMemberList=
{
getMemberList
}
editData=
{
editData
}
type=
{
type
}
/>
</
TabPane
>
<
TabPane
tab=
"商品报价"
key=
"2"
forceRender
>
<
EnquiryGoods
inquiryNo=
{
inquiryNo
}
getGoodsList=
{
getGoodsList
}
editData=
{
editData
}
type=
{
type
}
/>
</
TabPane
>
<
TabPane
tab=
"其他说明"
key=
"3"
forceRender
>
<
TradingConditions
currentRef=
{
tradingConditionsRef
}
editData=
{
pathType
!==
'quote'
?
editData
:
{}
}
/>
</
TabPane
>
<
TabPane
tab=
"附件"
key=
"4"
forceRender
>
<
Attached
editData=
{
pathType
!==
'quote'
?
editData
:
{}
}
handleGetEnclosureUrls=
{
handleGetEnclosureUrls
}
/>
</
TabPane
>
<
TabPane
tab=
"流转记录"
key=
"5"
forceRender
>
<
FlowRecord
editData=
{
editData
}
/>
</
TabPane
>
</
Tabs
>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
AddQuotes
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/components/attached.tsx
0 → 100644
View file @
ed048324
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Form
,
Button
,
Upload
,
message
}
from
'antd'
;
import
{
UPLOAD_TYPE
}
from
'@/constants'
import
{
UploadFile
,
UploadChangeParam
}
from
'antd/lib/upload/interface'
;
import
styles
from
'./index.less'
;
import
{
UploadOutlined
,
DeleteOutlined
,
LinkOutlined
}
from
'@ant-design/icons'
;
const
layout
:
any
=
{
colon
:
false
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
wrapperCol
:
{
span
:
9
},
labelAlign
:
"left"
};
export
interface
parmas
{
handleGetEnclosureUrls
?:
Function
,
editData
?:
any
}
const
Attached
:
React
.
FC
<
parmas
>
=
(
props
)
=>
{
const
{
handleGetEnclosureUrls
,
editData
}
=
props
;
const
[
files
,
setFiles
]
=
useState
<
Array
<
any
>>
([]);
const
[
loading
,
setloading
]
=
useState
(
false
);
/**判断文件类型和大小 */
const
beforeDocUpload
=
(
file
:
UploadFile
)
=>
{
const
isLt20M
=
file
.
size
/
1024
/
1024
<
20
;
if
(
!
isLt20M
)
{
message
.
error
(
'上传文件大小不超过 20M!'
);
}
return
isLt20M
;
}
// 上传回调
const
handleChange
=
({
file
})
=>
{
const
arr
:
any
=
files
;
setloading
(
true
);
if
(
file
.
response
)
{
if
(
file
.
response
.
code
===
1000
)
{
arr
.
push
({
name
:
file
.
name
,
url
:
file
.
response
.
data
})
setloading
(
false
);
}
}
setFiles
([...
arr
])
handleGetEnclosureUrls
(
arr
);
}
// 删除附件
const
removeFiles
=
(
index
:
any
)
=>
{
const
arr
=
[...
files
];
arr
.
splice
(
index
,
1
);
setFiles
(
arr
);
handleGetEnclosureUrls
(
arr
);
}
useEffect
(()
=>
{
if
(
Object
.
keys
(
editData
).
length
>
0
)
{
setFiles
(
editData
.
enclosureUrls
)
}
},
[
editData
])
return
(
<
Form
{
...
layout
}
className=
{
styles
.
revise_style
}
>
<
Form
.
Item
label=
'附件'
name=
'upload'
>
<
div
className=
{
styles
.
upload_data
}
>
{
(
files
&&
files
.
length
>
0
)
&&
files
.
map
((
v
,
index
)
=>
(
<
div
key=
{
index
}
className=
{
styles
.
upload_item
}
>
<
div
className=
{
styles
.
upload_left
}
>
<
LinkOutlined
/>
<
span
>
{
v
.
name
}
</
span
>
</
div
>
<
div
className=
{
styles
.
upload_right
}
onClick=
{
()
=>
removeFiles
(
index
)
}
>
<
DeleteOutlined
/>
</
div
>
</
div
>
))
}
</
div
>
<
Upload
action=
"/api/file/file/upload"
data=
{
{
fileType
:
UPLOAD_TYPE
}
}
showUploadList=
{
false
}
accept=
'.doc,.docx,.pdf,.ppt,.pptx,.xls,.xlsx'
beforeUpload=
{
beforeDocUpload
}
onChange=
{
handleChange
}
>
<
Button
loading=
{
loading
}
icon=
{
<
UploadOutlined
/>
}
>
上传文件
</
Button
>
<
div
style=
{
{
marginTop
:
'8px'
}
}
>
一次上传一个文件,每个附件大小不能超过 20M
</
div
>
</
Upload
>
</
Form
.
Item
>
</
Form
>
)
}
export
default
Attached
;
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/components/basicInfo.tsx
0 → 100644
View file @
ed048324
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Form
,
Input
,
Button
,
Tag
,
Badge
}
from
'antd'
;
import
styles
from
'./index.less'
;
import
{
LinkOutlined
}
from
'@ant-design/icons'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
import
ModalTable
from
'@/components/ModalTable'
import
{
PublicApi
}
from
'@/services/api'
import
moment
from
'moment'
;
import
{
EXTERNALSTATE_COLOR
,
INTERNALSTATE_COLOR
}
from
'@/pages/transaction/components/stateColor'
;
const
layout
:
any
=
{
colon
:
false
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
wrapperCol
:
{
span
:
9
},
labelAlign
:
"left"
};
const
{
Search
}
=
Input
;
interface
queryProps
{
currentRef
?:
any
,
getMemberList
?:
Function
,
editData
:
any
,
type
:
number
,
}
const
BasicInfo
:
React
.
FC
<
queryProps
>
=
(
props
)
=>
{
const
[
basicform
]
=
Form
.
useForm
();
const
{
getMemberList
,
currentRef
,
editData
,
type
}
=
props
;
// 会员添加弹窗控制
const
[
visibleChannelMember
,
setVisibleChannelMember
]
=
useState
(
false
);
const
[
inquiryNo
,
setinquiryNo
]
=
useState
<
any
>
({});
const
[
inquiryRowSelection
,
inquiryRowCtl
]
=
useRowSelectionTable
({
customKey
:
'orderId'
,
type
:
'radio'
});
const
handleOkAddMember
=
()
=>
{
if
(
inquiryRowCtl
.
selectRow
.
length
>
0
)
{
setVisibleChannelMember
(
false
)
setinquiryNo
(
inquiryRowCtl
.
selectRow
[
0
]);
getMemberList
(
inquiryRowCtl
.
selectRow
[
0
]);
// 回传给父级
}
}
const
handleCancelAddMember
=
()
=>
{
setVisibleChannelMember
(
false
)
}
const
columnsSetMember
:
any
[]
=
[
{
title
:
'询价单号'
,
dataIndex
:
'orderNo'
,
key
:
'orderNo'
,
},
{
title
:
'询价单摘要'
,
dataIndex
:
'details'
,
key
:
'details'
,
},
{
title
:
'询价会员'
,
dataIndex
:
'memberName'
,
key
:
'memberName'
,
},
{
title
:
'单据时间'
,
dataIndex
:
'documentTime'
,
key
:
'documentTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
}
]
// 模拟数据
const
fetchMemberList
=
async
(
params
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getTransactionCorrespondingInquiryNumber
({
...
params
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
});
}
// 选择会员弹框结束
useEffect
(()
=>
{
if
(
Object
.
keys
(
inquiryNo
).
length
>
0
)
{
basicform
.
setFieldsValue
({
'inquiryListNo'
:
inquiryNo
.
orderNo
})
}
},
[
inquiryNo
])
/************* 页面的一些操作start *************/
// 拿到表单数据
const
hadnleValidateFields
=
()
=>
{
return
new
Promise
((
resolve
)
=>
{
basicform
.
validateFields
().
then
(
values
=>
{
resolve
({
state
:
true
,
data
:
{
details
:
values
.
details
,
inquiryListNo
:
values
.
inquiryListNo
,
}
})
}).
catch
(
errorInfo
=>
{
console
.
log
(
errorInfo
)
})
})
}
useEffect
(()
=>
{
if
(
currentRef
)
{
const
userAction
=
{
validateFields
:
()
=>
hadnleValidateFields
()
}
if
(
currentRef
&&
typeof
currentRef
===
'function'
)
{
currentRef
(
userAction
);
}
if
(
currentRef
&&
typeof
currentRef
!==
'function'
)
{
currentRef
.
current
=
userAction
;
}
}
},
[])
useEffect
(()
=>
{
if
(
Object
.
keys
(
editData
).
length
>
0
)
{
basicform
.
setFieldsValue
({
details
:
editData
.
details
})
setinquiryNo
({
orderId
:
editData
.
id
,
orderNo
:
editData
.
inquiryListNo
});
}
},
[
editData
])
const
format
=
(
text
,
fmt
?:
string
)
=>
{
return
<>
{
moment
(
text
).
format
(
fmt
||
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
/************* 页面的一些操作end *************/
return
(
<>
<
Form
{
...
layout
}
form=
{
basicform
}
className=
{
styles
.
revise_style
}
>
<
Form
.
Item
label=
'报价单摘要'
name=
'details'
rules=
{
[{
required
:
true
,
message
:
'请输入询价单摘要'
}]
}
>
<
Input
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'对应询价单号'
name=
'inquiryListNo'
rules=
{
[{
required
:
true
,
message
:
'请选择被询价会员'
}]
}
>
<
Search
disabled=
{
type
===
3
}
value=
{
Object
.
keys
(
inquiryNo
).
length
>
0
?
inquiryNo
.
orderNo
:
undefined
}
readOnly
enterButton=
{
<><
LinkOutlined
/>
选择
</>
}
onSearch=
{
()
=>
setVisibleChannelMember
(
true
)
}
/>
{
Object
.
keys
(
inquiryNo
).
length
>
0
&&
<
Button
type=
'link'
onClick=
{
()
=>
window
.
open
(
`/memberCenter/tranactionAbility/inquiryQuote/enquiryOrder/rfq/preview?id=${inquiryNo.orderId}`
)
}
>
查看询价单详情
</
Button
>
}
</
Form
.
Item
>
<
Form
.
Item
label=
'报价单号'
name=
'quotationNo'
>
<
span
>
{
Object
.
keys
(
editData
).
length
>
0
?
editData
.
quotationNo
:
'-'
}
</
span
>
</
Form
.
Item
>
<
Form
.
Item
label=
'询价会员'
name=
'inquiryListMemberName'
>
<
span
>
{
Object
.
keys
(
editData
).
length
>
0
?
(
editData
.
inquiryListMemberName
||
editData
.
memberName
)
:
'-'
}
</
span
>
</
Form
.
Item
>
<
Form
.
Item
label=
'报价截止时间'
name=
'quotationAsTime'
>
<
span
>
{
Object
.
keys
(
editData
).
length
>
0
?
format
(
editData
.
quotationAsTime
)
:
'-'
}
</
span
>
</
Form
.
Item
>
<
Form
.
Item
label=
'单据时间'
name=
'voucherTime'
>
<
span
>
{
Object
.
keys
(
editData
).
length
>
0
?
format
(
editData
.
deliveryTime
)
:
'-'
}
</
span
>
</
Form
.
Item
>
<
Form
.
Item
label=
'外部状态'
name=
'external'
>
<
span
>
{
(
Object
.
keys
(
editData
).
length
>
0
&&
editData
.
externalState
)
?
<
Tag
color=
{
EXTERNALSTATE_COLOR
[
editData
.
externalState
]
}
>
{
editData
.
externalStateName
}
</
Tag
>
:
'-'
}
</
span
>
</
Form
.
Item
>
<
Form
.
Item
label=
'内部状态'
name=
'internal'
>
<
span
>
{
(
Object
.
keys
(
editData
).
length
>
0
&&
editData
.
interiorState
)
?
<
Badge
status=
{
INTERNALSTATE_COLOR
[
editData
.
interiorState
]
}
text=
{
editData
.
interiorStateName
}
/>
:
'-'
}
</
span
>
</
Form
.
Item
>
</
Form
>
{
/* 选择会员弹框 */
}
<
ModalTable
modalTitle=
'选择询价单'
confirm=
{
handleOkAddMember
}
cancel=
{
handleCancelAddMember
}
visible=
{
visibleChannelMember
}
resetModal=
{
{
destroyOnClose
:
true
,
forceRender
:
true
}
}
columns=
{
columnsSetMember
}
rowSelection=
{
inquiryRowSelection
}
fetchTableData=
{
params
=>
fetchMemberList
(
params
)
}
modalType=
'selectRfqOrder'
searchName=
'orderNo'
forceRender=
{
true
}
tableProps=
{
{
rowKey
:
'orderId'
,
}
}
/>
</>
)
}
export
default
BasicInfo
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/components/enquiryGoods.tsx
0 → 100644
View file @
ed048324
import
React
,
{
useState
,
useEffect
,
ReactNode
}
from
'react'
;
import
styles
from
'./index.less'
;
import
{
Input
,
Table
,
Form
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
PublicApi
}
from
'@/services/api'
;
interface
queryProps
{
inquiryNo
?:
any
,
getGoodsList
:
Function
,
editData
:
any
,
type
?:
any
}
const
EnquiryGoods
:
React
.
FC
<
queryProps
>
=
(
props
)
=>
{
const
{
inquiryNo
,
getGoodsList
,
editData
,
type
}
=
props
// 会员添加弹窗控制
const
[
goodsList
,
setgoodsList
]
=
useState
([]);
// 计算金额
const
countMoney
=
(
num
:
any
,
money
:
any
)
=>
{
let
price
:
ReactNode
=
null
;
price
=
(
Number
(
money
)
*
1
)
/
Number
(
num
);
return
Number
(
price
).
toFixed
(
2
);
}
/**输入框输入 */
const
inputOnchange
=
(
id
,
e
)
=>
{
const
{
value
}
=
e
.
target
goodsList
.
forEach
(
v
=>
{
if
(
v
.
productId
===
id
)
{
v
.
money
=
value
v
.
price
=
countMoney
(
v
.
purchaseCount
,
value
);
}
})
getGoodsList
([...
goodsList
])
// 返回给父级
setgoodsList
([...
goodsList
])
}
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'商品ID'
,
dataIndex
:
'productId'
,
},
{
title
:
'商品名称'
,
dataIndex
:
'productName'
,
},
{
title
:
'品类'
,
dataIndex
:
'category'
,
},
{
title
:
'品牌'
,
dataIndex
:
'brand'
,
},
{
title
:
'单位'
,
dataIndex
:
'unit'
,
},
{
title
:
'采购数量'
,
dataIndex
:
'purchaseCount'
,
},
{
title
:
'报价单价'
,
dataIndex
:
'price'
,
},
{
title
:
'金额'
,
dataIndex
:
'money'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Form
.
Item
name=
{
record
.
productId
}
noStyle
initialValue=
{
record
.
money
}
>
<
Input
addonBefore=
"¥"
onBlur=
{
(
e
)
=>
inputOnchange
(
record
.
productId
,
e
)
}
type=
'number'
maxLength=
{
25
}
/>
</
Form
.
Item
>
)
}]
useEffect
(()
=>
{
if
(
Object
.
keys
(
inquiryNo
).
length
>
0
&&
inquiryNo
.
orderId
)
{
console
.
log
(
inquiryNo
)
PublicApi
.
getTransactionProductInquiryDetails
({
id
:
inquiryNo
.
orderId
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
data
=
res
.
data
.
inquiryListProductRequests
;
data
.
forEach
((
item
:
any
)
=>
{
item
.
money
=
item
.
purchaseCount
*
item
.
price
})
getGoodsList
(
data
)
setgoodsList
(
data
)
}
})
}
},
[
inquiryNo
])
// 编辑时回显的数据
useEffect
(()
=>
{
if
(
Object
.
keys
(
editData
).
length
>
0
)
{
setgoodsList
(
editData
.
inquiryListProductRequests
);
}
},
[])
return
(
<
div
className=
{
styles
.
revise_style
}
>
<
Form
>
<
Table
rowKey=
{
'productId'
}
style=
{
{
marginTop
:
'16px'
}
}
columns=
{
columns
}
dataSource=
{
goodsList
}
pagination=
{
false
}
/>
</
Form
>
</
div
>
)
}
export
default
EnquiryGoods
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/components/flowRecord.tsx
0 → 100644
View file @
ed048324
import
React
,
{
useState
}
from
'react'
;
import
styles
from
'./index.less'
;
import
{
Radio
,
Tag
}
from
'antd'
;
import
PolymericTable
from
'@/components/PolymericTable'
;
import
{
EditableColumns
}
from
'@/components/PolymericTable/interface'
;
import
moment
from
'moment'
;
import
{
EXTERNALSTATE_COLOR
,
INTERNALSTATE_COLOR
}
from
'@/pages/transaction/components/stateColor'
;
export
interface
parmas
{
editData
?:
any
}
const
FlowRecord
:
React
.
FC
<
parmas
>
=
(
props
)
=>
{
const
{
editData
}
=
props
;
const
[
radio
,
setRadio
]
=
useState
<
string
>
(
'outer'
);
//切换单据
const
format
=
(
text
,
fmt
?:
string
)
=>
{
return
<>
{
moment
(
text
).
format
(
fmt
||
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
const
outerColumns
:
EditableColumns
[]
=
[{
title
:
'序号'
,
dataIndex
:
'id'
,
},
{
title
:
'操作角色'
,
dataIndex
:
'roleName'
,
},
{
title
:
'状态'
,
dataIndex
:
'state'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
EXTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
stateName
}
</
Tag
>
},
{
title
:
'操作'
,
dataIndex
:
'operation'
,
},
{
title
:
'操作时间'
,
dataIndex
:
'operationTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'审核意见'
,
dataIndex
:
'auditOpinion'
,
}]
const
insideColumns
:
EditableColumns
[]
=
[{
title
:
'序号'
,
dataIndex
:
'id'
,
},
{
title
:
'操作人'
,
dataIndex
:
'roleName'
,
},
{
title
:
'部门'
,
dataIndex
:
'department'
,
},
{
title
:
'职位'
,
dataIndex
:
'position'
,
},
{
title
:
'状态'
,
dataIndex
:
'state'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Tag
color=
{
INTERNALSTATE_COLOR
[
text
]
}
>
{
record
.
stateName
}
</
Tag
>
},
{
title
:
'操作'
,
dataIndex
:
'operation'
,
},
{
title
:
'操作时间'
,
dataIndex
:
'operationTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'审核意见'
,
dataIndex
:
'auditOpinion'
,
}]
const
onChange
=
(
e
:
any
)
=>
{
setRadio
(
e
.
target
.
value
)
}
return
(
<
div
className=
{
styles
.
revise_style
}
>
<
Radio
.
Group
defaultValue=
"outer"
buttonStyle=
"solid"
onChange=
{
onChange
}
>
<
Radio
.
Button
value=
"outer"
>
外部单据
</
Radio
.
Button
>
<
Radio
.
Button
value=
"inside"
>
内部单据
</
Radio
.
Button
>
</
Radio
.
Group
>
{
radio
===
'outer'
?
<
PolymericTable
dataSource=
{
editData
.
externalRequisitionFormResponses
}
columns=
{
outerColumns
}
loading=
{
false
}
pagination=
{
null
}
/>
:
<
PolymericTable
dataSource=
{
editData
.
interiorQuotationLogResponses
}
columns=
{
insideColumns
}
loading=
{
false
}
pagination=
{
null
}
/>
}
</
div
>
)
}
export
default
FlowRecord
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/components/index.less
0 → 100644
View file @
ed048324
.revise_style {
:global {
.ant-form-item-label {
width: 174px;
label {
color:#6B778C
}
}
.ant-form-item-control {
width: 500px;
.ant-form-item-control-input-content {
position: relative;
.ant-btn-link {
position: absolute;
right: -120px;
}
.ant-picker {
width: 100%;
}
}
.ant-input-group-addon {
.ant-input-search-button {
background-color: #6B778C;
border-color: #6B778C;
}
}
}
.ant-radio-group-solid {
.ant-radio-button-wrapper-checked {
background: #6B778C;
border-color: #6B778C;
&:hover {
background: #6B778C;
border-color: #6B778C;
}
}
}
}
.upload_item {
padding: 5px 8px;
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
background-color: #FAFBFC;
.upload_left {
display: flex;
align-items: center;
color: #303133;
:global {
.anticon-file-word {
color: #4279df;
font-size: 20px;
margin-right: 8px;
}
}
}
.upload_right {
color: #00B37A;
cursor: pointer;
:global {
.anticon-delete {
margin-left: 19px;
color: #C0C4CC;
}
}
}
}
}
\ No newline at end of file
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/components/tradingConditions.tsx
0 → 100644
View file @
ed048324
import
React
,
{
useEffect
}
from
'react'
;
import
styles
from
'./index.less'
;
import
{
Form
,
Input
,
Row
,
Col
,
InputNumber
}
from
'antd'
;
interface
queryProps
{
currentRef
?:
any
,
editData
:
any
}
const
layout
:
any
=
{
colon
:
false
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
wrapperCol
:
{
span
:
24
},
labelAlign
:
"left"
};
const
TradingConditions
:
React
.
FC
<
queryProps
>
=
(
props
)
=>
{
const
{
currentRef
,
editData
}
=
props
;
const
[
TradingConditionsForm
]
=
Form
.
useForm
();
const
hadnleValidateFields
=
()
=>
{
return
new
Promise
((
resolve
)
=>
{
TradingConditionsForm
.
validateFields
().
then
(
values
=>
{
resolve
({
state
:
true
,
data
:
{
minimumOrder
:
values
.
minimumOrder
,
deliveryInstructions
:
values
.
deliveryInstructions
,
paymentType
:
values
.
paymentType
,
taxes
:
values
.
taxes
,
logistics
:
values
.
logistics
,
packRequire
:
values
.
logistics
,
otherRequire
:
values
.
logistics
,
}
})
}).
catch
(
errorInfo
=>
{
console
.
log
(
errorInfo
)
})
})
}
useEffect
(()
=>
{
if
(
currentRef
)
{
const
userAction
=
{
validateFields
:
()
=>
hadnleValidateFields
()
}
if
(
currentRef
&&
typeof
currentRef
===
'function'
)
{
currentRef
(
userAction
);
}
if
(
currentRef
&&
typeof
currentRef
!==
'function'
)
{
currentRef
.
current
=
userAction
;
}
}
},
[])
useEffect
(()
=>
{
// 编辑时回显的数据
if
(
Object
.
keys
(
editData
).
length
>
0
)
{
console
.
log
(
editData
,
10086
)
TradingConditionsForm
.
setFieldsValue
({
paymentType
:
editData
.
paymentType
,
taxes
:
editData
.
taxes
,
logistics
:
editData
.
logistics
,
packRequire
:
editData
.
packRequire
,
otherRequire
:
editData
.
otherRequire
,
deliveryInstructions
:
editData
.
deliveryInstructions
,
minimumOrder
:
editData
.
minimumOrder
})
}
},
[
editData
])
return
(
<
Form
{
...
layout
}
form=
{
TradingConditionsForm
}
className=
{
styles
.
revise_style
}
>
<
Row
gutter=
{
70
}
>
<
Col
span=
{
12
}
>
<
Form
.
Item
label=
'最小起订'
name=
'minimumOrder'
rules=
{
[{
required
:
true
,
message
:
'请输入最小起订'
}]
}
>
<
InputNumber
min=
{
1
}
placeholder=
'请输入数量'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'交付说明'
name=
'deliveryInstructions'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'付款说明'
name=
'paymentType'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'税费说明'
name=
'taxes'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'物流说明'
name=
'logistics'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'包装说明'
name=
'packRequire'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
</
Col
>
<
Col
span=
{
12
}
>
<
Form
.
Item
label=
'其他说明'
name=
'otherRequire'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
</
Col
>
</
Row
>
</
Form
>
)
}
export
default
TradingConditions
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/edit.tsx
0 → 100644
View file @
ed048324
import
React
from
'react'
;
import
AddQuoteForm
from
'./addForm'
;
import
{
history
}
from
'umi'
;
const
EditQuote
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
id
}
=
history
.
location
.
query
;
return
(
<
AddQuoteForm
id=
{
id
}
type=
{
2
}
/>
)
}
export
default
EditQuote
;
\ No newline at end of file
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/index.tsx
View file @
ed048324
...
...
@@ -55,14 +55,14 @@ const WaitAddOffer = () => {
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/addInquiryOrder/quote
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/waitAddOffer/offer
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单号'
,
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/addInquiryOrder/rfq
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/waitAddOffer/inquiry
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'报价单摘要'
,
...
...
@@ -109,7 +109,7 @@ const WaitAddOffer = () => {
return
(
<>
{
(
record
.
interiorState
!==
5
&&
record
.
interiorState
!==
6
)
&&
<
Button
type=
'link'
onClick=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
提交审核
</
Button
>
}
<
Button
type=
"link"
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/inquiry
Quote/addInquiryOrd
er/edit?id=${record.id}`
)
}
>
修改
</
Button
>
<
Button
type=
"link"
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/inquiry
Offer/waitAddOff
er/edit?id=${record.id}`
)
}
>
修改
</
Button
>
{
(
record
.
interiorState
!==
5
&&
record
.
interiorState
!==
6
)
&&
<
Popconfirm
destroyTooltipOnHide
...
...
@@ -146,7 +146,7 @@ const WaitAddOffer = () => {
<
Button
type=
"primary"
icon=
{
<
PlusOutlined
/>
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/inquiry
Quote/addInquiryOrd
er/add`
)
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/inquiry
Offer/waitAddOff
er/add`
)
}
>
新建
</
Button
>
...
...
src/pages/transaction/dealAbility/inquiryOffer/waitAddOffer/quote.tsx
0 → 100644
View file @
ed048324
import
React
from
'react'
;
import
AddQuoteForm
from
'./addForm'
;
import
{
history
}
from
'umi'
;
const
Quote
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
id
}
=
history
.
location
.
query
;
return
(
<
AddQuoteForm
id=
{
id
}
type=
{
3
}
/>
)
}
export
default
Quote
;
\ No newline at end of file
src/pages/transaction/dealAbility/inquiryOffer/waitAuditOfferOne/index.tsx
View file @
ed048324
...
...
@@ -29,14 +29,14 @@ const WaitAuditOfferOne = () => {
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/pendingReviewOne/quote
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/waitAuditOfferOne/offer
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单号'
,
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/pendingReviewOne/rfq
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/waitAuditOfferOne/inquiry
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'报价单摘要'
,
...
...
@@ -76,7 +76,7 @@ const WaitAuditOfferOne = () => {
title
:
'操作'
,
key
:
'options'
,
dataIndex
:
'options'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
'link'
disabled=
{
record
.
interiorState
===
1
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/inquiry
Quote/pendingReviewTwo/quote/detail?id=${record.id}&page_type=2
`
)
}
>
审核
</
Button
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
'link'
disabled=
{
record
.
interiorState
===
1
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/inquiry
Offer/waitAuditOfferOne/offer/detail?id=${record.id}
`
)
}
>
审核
</
Button
>
},
]
return
(
...
...
src/pages/transaction/dealAbility/inquiryOffer/waitAuditOfferTwo/index.tsx
View file @
ed048324
...
...
@@ -29,14 +29,14 @@ const WaitAuditOfferTwo = () => {
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/pendingReviewTwo/quote
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/waitAuditOfferTwo/offer
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单号'
,
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/pendingReviewTwo/rfq
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/waitAuditOfferTwo/inquiry
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'报价单摘要'
,
...
...
@@ -76,7 +76,7 @@ const WaitAuditOfferTwo = () => {
title
:
'操作'
,
key
:
'options'
,
dataIndex
:
'options'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
'link'
disabled=
{
record
.
interiorState
===
1
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/inquiry
Quote/pendingReviewTwo/quote/detail?id=${record.id}&page_type=3
`
)
}
>
审核
</
Button
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
'link'
disabled=
{
record
.
interiorState
===
1
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/inquiry
Offer/waitAuditOfferTwo/offer/detail?id=${record.id}
`
)
}
>
审核
</
Button
>
},
]
return
(
...
...
src/pages/transaction/dealAbility/inquiryOffer/waitSubmitOffer/index.tsx
View file @
ed048324
...
...
@@ -33,14 +33,14 @@ const WaitSubmitOffer = () => {
key
:
'quotationNo'
,
dataIndex
:
'quotationNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/pendingSubmit/quote
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/waitSubmitOffer/offer
/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'询价单号'
,
key
:
'inquiryListNo'
,
dataIndex
:
'inquiryListNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/inquiry
Quote/pendingSubmit/rfq
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
url=
{
`/memberCenter/tranactionAbility/inquiry
Offer/waitSubmitOffer/inquiry
/preview?id=${record.inquiryListId}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'报价单摘要'
,
...
...
src/pages/transaction/dealAbility/productInquiry/detail/index.tsx
View file @
ed048324
...
...
@@ -123,10 +123,10 @@ const ProductInquiryDetail = () => {
return
;
}
const
{
data
}
=
res
;
data
.
externalLogStates
=
[...
data
.
externalInquiryListStateResponses
]
;
data
.
interiorLogStates
=
[...
data
.
interiorRequisitionFormStateResponses
]
;
data
.
externalLogs
=
[...
data
.
externalInquiryListLogResponses
]
;
data
.
interiorLogs
=
[...
data
.
interiorInquiryListLogResponses
]
;
data
.
externalLogStates
=
data
.
externalInquiryListStateResponses
?
[...
data
.
externalInquiryListStateResponses
]
:
null
;
data
.
interiorLogStates
=
data
.
interiorRequisitionFormStateResponses
?
[...
data
.
interiorRequisitionFormStateResponses
]
:
null
;
data
.
externalLogs
=
data
.
externalInquiryListLogResponses
?
[...
data
.
externalInquiryListLogResponses
]
:
null
;
data
.
interiorLogs
=
data
.
interiorInquiryListLogResponses
?
[...
data
.
interiorInquiryListLogResponses
]
:
null
;
setDataSource
(
data
);
handleBasicEffect
(
data
);
handleConditionEffect
(
data
);
...
...
src/pages/transaction/dealAbility/productInquiry/waitAddInquiry/addForm.tsx
View file @
ed048324
...
...
@@ -130,7 +130,7 @@ const AddQuotes: React.FC<parmas> = (props) => {
}
else
{
await
PublicApi
.
postTransactionInquiryListAdd
(
parmas
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
history
.
push
(
'/memberCenter/tranactionAbility/
goodsOffer/addEnquiryOrder
'
);
history
.
push
(
'/memberCenter/tranactionAbility/
productInquiry/waitAddInquiry
'
);
}
else
{
setloading
(
false
);
}
})
}
...
...
@@ -173,7 +173,7 @@ const AddQuotes: React.FC<parmas> = (props) => {
}
>
<
Card
>
<
Tabs
onTabClick=
{
handleClick
}
>
<
Tabs
onTabClick=
{
handleClick
}
type=
"card"
>
<
TabPane
tab=
"基本信息"
key=
"1"
forceRender
>
<
BasicInfo
currentRef=
{
basicInfoRef
}
...
...
src/pages/transaction/dealAbility/productInquiry/waitAddInquiry/index.tsx
View file @
ed048324
...
...
@@ -109,13 +109,13 @@ const WaitAddInquiry = () => {
render
:
(
text
:
any
,
record
:
any
)
=>
{
return
(
<>
<
Button
type=
'link'
disabled=
{
record
.
interiorState
!==
1
}
onClick=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
提交审核
</
Button
>
<
Popconfirm
title=
"确定要提交吗?"
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
fetchSubmitBatch
(
record
.
id
)
}
>
<
Button
type=
'link'
>
提交审核
</
Button
>
</
Popconfirm
>
<
Button
type=
"link"
disabled=
{
record
.
interiorState
!==
1
&&
record
.
interiorState
!==
6
}
...
...
src/pages/transaction/purchaseAbility/purchasDoor/purchasInfo/index.tsx
View file @
ed048324
...
...
@@ -101,6 +101,8 @@ const PurchasInfo: React.FC<PurchasInfoPropsType> = (props) => {
const
data
:
any
=
res
.
data
if
(
res
.
code
===
1000
)
{
if
(
data
)
{
console
.
log
(
res
.
data
)
setShopInfo
(
res
.
data
)
setSelectCityData
(
initMemberShopArea
(
data
.
areaBOList
))
setLogo
(
data
.
logo
)
setCompanyPics
(
data
.
companyPics
||
[])
...
...
@@ -321,11 +323,13 @@ const PurchasInfo: React.FC<PurchasInfoPropsType> = (props) => {
const
handleMallSelectChange
=
(
mallId
:
number
)
=>
{
setShopId
(
mallId
)
console
.
log
(
mallId
,
shopInfo
)
if
(
!
shopInfo
)
{
return
null
}
if
(
shopInfo
.
shopId
&&
shopInfo
.
memberId
)
{
const
resUrl
=
getMallItemAndSetUrl
(
mallId
)
getMallItemAndSetUrl
(
mallId
)
}
}
...
...
src/pages/transaction/purchaseAbility/purchasePlan/detail/index.tsx
View file @
ed048324
...
...
@@ -143,7 +143,7 @@ const PurchasePlanDetailed = () => {
position
:
''
,
purchaseInquiryId
:
null
,
roleName
:
item
.
operator
,
state
:
item
.
st
ep
+
1
,
state
:
item
.
st
atus
,
step
:
item
.
step
,
})
})
...
...
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