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
linweijiong
jinfa-platform
Commits
0cfba7e9
Commit
0cfba7e9
authored
Mar 25, 2021
by
alwayOnlie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
解决冲突
parent
29d1f445
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
2172 additions
and
886 deletions
+2172
-886
contracRoute.ts
config/routes/contracRoute.ts
+23
-5
callForBids.ts
config/routes/procurementRoute/callForBids.ts
+6
-6
index.tsx
src/components/BalancePayModal/index.tsx
+214
-215
index.tsx
src/components/DrawerTable/index.tsx
+10
-10
index.css
src/pages/contract/contractexecution/details/index.css
+159
-0
index.less
src/pages/contract/contractexecution/details/index.less
+1
-0
details.tsx
src/pages/contract/funds/addbill/details.tsx
+0
-0
index.css
src/pages/contract/funds/addbill/index.css
+71
-0
index.less
src/pages/contract/funds/addbill/index.less
+82
-0
index.tsx
src/pages/contract/funds/addbill/index.tsx
+196
-0
details.tsx
src/pages/contract/funds/bill/details.tsx
+94
-20
index.css
src/pages/contract/funds/bill/index.css
+4
-0
index.less
src/pages/contract/funds/bill/index.less
+9
-1
index.ts
src/pages/contract/funds/schema/index.ts
+288
-1
QueryListdetails.tsx
src/pages/contract/manage/QueryList/QueryListdetails.tsx
+0
-0
index.css
src/pages/contract/manage/QueryList/index.css
+5
-2
index.less
src/pages/contract/manage/QueryList/index.less
+12
-1
index.tsx
src/pages/contract/manage/QueryList/index.tsx
+89
-67
addList.tsx
src/pages/contract/manage/add/addList.tsx
+212
-0
contracAdd.tsx
src/pages/contract/manage/add/contracAdd.tsx
+190
-76
index.ts
src/pages/contract/manage/add/schema/index.ts
+0
-0
index.tsx
src/pages/contract/manage/bidding/index.tsx
+53
-86
index.tsx
src/pages/contract/manage/examine/index.tsx
+81
-75
index.tsx
src/pages/contract/manage/levelexamine/index.tsx
+81
-76
index.tsx
src/pages/contract/manage/purchase/index.tsx
+66
-63
index.ts
src/pages/contract/manage/schema/index.ts
+0
-0
index.tsx
src/pages/contract/manage/secondaryexamine/index.tsx
+81
-76
index.tsx
src/pages/contract/manage/signacontract/index.tsx
+133
-97
index.tsx
...tender/addTender/components/relateProductDrawer/index.tsx
+9
-9
api.ts
src/services/api.ts
+2
-0
ytt.config.ts
ytt.config.ts
+1
-0
No files found.
config/routes/contracRoute.ts
View file @
0cfba7e9
...
...
@@ -87,12 +87,17 @@ const contracRoute = {
name
:
'合同查询详情'
,
hideInMenu
:
true
,
component
:
'@/pages/contract/manage/QueryList/QueryListdetails'
,
},
{
path
:
'/memberCenter/contract/manage/add'
,
path
:
'/memberCenter/contract/manage/add
/addList
'
,
name
:
'待新增合同'
,
component
:
'@/pages/contract/manage/add'
,
component
:
'@/pages/contract/manage/add/addList'
,
},
{
path
:
'/memberCenter/contract/manage/add/addList/contracAdd'
,
name
:
'待新增合同详情'
,
hideInMenu
:
true
,
component
:
'@/pages/contract/manage/add/contracAdd'
,
},
// 待提交审核合同
{
...
...
@@ -133,26 +138,39 @@ const contracRoute = {
path
:
'/memberCenter/contract/contractexecution/contractexecutionList/details'
,
name
:
'合同执行详情'
,
hideInMenu
:
true
,
noMargin
:
true
,
component
:
'@/pages/contract/contractexecution/details'
,
},
],
},
/
/ 合同请款
/
* 合同请款 */
{
path
:
'/memberCenter/contract/funds'
,
name
:
'合同请款'
,
routes
:
[
{
path
:
'/memberCenter/contract/funds/bill'
,
name
:
'请款单查询
详情
'
,
name
:
'请款单查询'
,
component
:
'@/pages/contract/funds/bill'
,
},
{
path
:
'/memberCenter/contract/funds/bill/details'
,
name
:
'请款单查询详情'
,
hideInMenu
:
true
,
noMargin
:
true
,
component
:
'@/pages/contract/funds/bill/details'
,
},
{
path
:
'/memberCenter/contract/funds/addbill'
,
name
:
'待新增请款单'
,
component
:
'@/pages/contract/funds/addbill'
,
},
{
path
:
'/memberCenter/contract/funds/addbill/Details'
,
name
:
'待新增请款单'
,
hideInMenu
:
true
,
component
:
'@/pages/contract/funds/addbill/Details'
,
},
],
},
],
...
...
config/routes/procurementRoute/callForBids.ts
View file @
0cfba7e9
...
...
@@ -4,12 +4,12 @@
* @return {type}
*/
export
const
callForBidsRoute
=
[
export
const
callForBidsRoute
=
[
// 招标
{
path
:
'/memberCenter/procurementAbility/callForBids'
,
name
:
'招标'
,
routes
:[
path
:
'/memberCenter/procurementAbility/callForBids'
,
name
:
'招标'
,
routes
:
[
// 招标查询
{
path
:
'/memberCenter/procurementAbility/callForBids/callForBidsSearch'
,
...
...
@@ -212,8 +212,8 @@ export const callForBidsRoute = [
name
:
'评标模板'
,
component
:
'@/pages/procurement/callForBids/remarkBidTemplate'
,
},
// 评标模板-新建
{
// 评标模板-新建
{
path
:
'/memberCenter/procurementAbility/callForBids/remarkBidTemplate/add'
,
name
:
'评标模板'
,
component
:
'@/pages/procurement/callForBids/addRemarkBidTemplate'
,
...
...
src/components/BalancePayModal/index.tsx
View file @
0cfba7e9
This diff is collapsed.
Click to expand it.
src/components/DrawerTable/index.tsx
View file @
0cfba7e9
import
React
,
{
ReactText
,
useRef
,
useEffect
,
useLayoutEffect
}
from
'react'
;
import
{
StandardTable
}
from
'god'
;
import
{
StandardTable
}
from
'god'
;
import
NestTable
from
'@/components/NestTable'
;
import
{
IStandardTableProps
}
from
'god/dist/src/standard-table'
;
import
{
Row
,
Col
,
Drawer
,
Space
,
Button
}
from
'antd'
;
...
...
@@ -31,7 +31,7 @@ export interface DrawerTableProps extends IStandardTableProps<any> {
formilyProps
?:
any
,
}
const
DrawerTable
:
React
.
FC
<
DrawerTableProps
>
=
(
props
)
=>
{
const
DrawerTable
:
React
.
FC
<
DrawerTableProps
>
=
(
props
)
=>
{
const
{
width
=
1000
,
drawerTitle
,
...
...
@@ -47,7 +47,7 @@ const DrawerTable:React.FC<DrawerTableProps> = (props) => {
searchName
,
formilyProps
,
...
resetTable
}
=
props
}
=
props
const
selfRef
=
currentRef
||
useRef
<
any
>
({})
...
...
@@ -84,15 +84,15 @@ const DrawerTable:React.FC<DrawerTableProps> = (props) => {
rowClassName=
{
(
_
,
index
)
=>
(
index
%
2
)
===
0
&&
"tb_bg"
}
{
...
nestTableProps
}
/>
)
:
(
<
StandardTable
currentRef=
{
selfRef
}
formilyProps=
{
formilyProps
}
{
...
resetTable
}
/>
)
:
(
<
StandardTable
currentRef=
{
selfRef
}
formilyProps=
{
formilyProps
}
{
...
resetTable
}
/>
)
}
<
div
style=
{
{
height
:
56
,
width
:
'100%'
}
}
></
div
>
<
div
style=
{
{
height
:
56
,
width
:
'100%'
}
}
></
div
>
<
Row
className=
{
styles
.
footer
}
>
<
Col
span=
{
24
}
>
<
Space
size=
{
[
16
,
0
]
}
>
...
...
src/pages/contract/contractexecution/details/index.css
0 → 100644
View file @
0cfba7e9
.anchorWrap
:global
.ant-anchor
{
display
:
flex
;
}
.anchorWrap
:global
.ant-anchor
.ant-anchor-ink
{
display
:
none
;
}
.anchorWrap
:global
.ant-anchor
.ant-anchor-link
{
padding
:
14px
0
!important
;
margin
:
0
16px
;
}
.anchorWrap
:global
.ant-anchor
.ant-anchor-link
.ant-anchor-link-title
{
font-size
:
14px
;
color
:
#909399
;
}
.anchorWrap
:global
.ant-anchor
.ant-anchor-link-active
{
position
:
relative
;
border-bottom
:
2px
solid
#00B37A
;
box-sizing
:
border-box
;
}
.anchorWrap
:global
.ant-anchor
.ant-anchor-link-active
.ant-anchor-link-title
{
font-weight
:
500
;
color
:
#303133
;
}
.anchorWrap
.titleBox
{
padding
:
8px
16px
;
}
.anchorWrap
.anchorBox
{
display
:
flex
;
padding
:
0
16px
;
}
/** 卡片样式 */
.card
{
margin
:
24px
;
}
.card
:global
.ant-card
{
margin-bottom
:
24px
;
}
.card
:global
.ant-card
.ant-card-head
>
.ant-card-head-wrapper
{
padding
:
12px
0
;
}
.card
:global
.ant-card
.ant-card-extra
{
padding
:
0
0
;
}
.card
:global
.ant-card
.ant-card-extra
.ant-radio-button-wrapper
{
height
:
24px
;
line-height
:
23px
;
}
.card
:global
.ant-card
.ant-card-extra
.ant-radio-button-wrapper
:hover
{
color
:
#606266
;
}
.card
:global
.ant-card
.ant-card-extra
.ant-radio-button-wrapper-checked
:not
(
.ant-radio-button-wrapper-disabled
)
{
color
:
#fff
;
background
:
#6B778C
;
border-color
:
#6B778C
;
}
.card
:global
.god-table-control
{
margin-bottom
:
0
;
}
.card
.list
{
display
:
flex
;
}
.card
.list
h5
{
margin-bottom
:
2em
;
}
.card
.list
.listLable
{
flex
:
0
0
25%
;
color
:
#909399
;
}
.listItem
{
display
:
flex
;
}
.listItem
.label
{
flex
:
0.2
;
padding
:
0
16px
;
background
:
linear-gradient
(
270deg
,
#ffffff
0%
,
#daf2e7
100%
);
}
.listItem
.text
{
padding
:
0px
0px
;
flex
:
1
;
}
.listItem
p
{
margin-bottom
:
0
;
}
.warp
{
display
:
flex
;
width
:
100%
;
}
.warp
.warp_item
{
width
:
20%
;
border
:
1px
solid
#F4F5F7
;
border-radius
:
10px
;
padding
:
16px
;
margin-right
:
10px
;
}
.warp
.warp_item
.title
{
font-size
:
12px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#909399
;
}
.warp
.warp_item
.proportion
{
font-size
:
24px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#303133
;
padding
:
12px
0
;
}
.warp
.warp_item
.Price
{
font-size
:
16px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#303133
;
}
.warp
.warp_item
.warp_List
{
margin-top
:
32px
;
}
.warp
.warp_item
.warp_List
.warp_ListItem
{
display
:
flex
;
margin-bottom
:
16px
;
}
.warp
.warp_item
.warp_List
.warp_ListItem
.label
{
font-size
:
12px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#909399
;
flex
:
0.5
;
}
.warp
.warp_item
.warp_List
.warp_ListItem
.text
{
font-size
:
12px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#303133
;
flex
:
1
;
}
.upload_item
{
margin-bottom
:
16px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
}
.upload_item
.upload_left
{
display
:
flex
;
align-items
:
center
;
color
:
#303133
;
background-color
:
#fafbfc
;
}
.upload_item
.upload_left
:global
.anticon-file-word
{
color
:
#4279df
;
font-size
:
18px
;
margin-right
:
8px
;
}
.upload_item
.upload_right
{
color
:
#00b37a
;
cursor
:
pointer
;
}
.upload_item
.upload_right
:global
.anticon-delete
{
margin-left
:
19px
;
color
:
#c0c4cc
;
}
src/pages/contract/contractexecution/details/index.less
View file @
0cfba7e9
...
...
@@ -23,6 +23,7 @@
}
}
}
}
.titleBox {
padding: 8px 16px;
...
...
src/pages/contract/funds/addbill/details.tsx
0 → 100644
View file @
0cfba7e9
This diff is collapsed.
Click to expand it.
src/pages/contract/funds/addbill/index.css
0 → 100644
View file @
0cfba7e9
.box
{
width
:
100%
;
}
.box
:global
.ant-table-expanded-row-level-1
.ant-table-cell
{
padding
:
0px
!important
;
background-color
:
#ffffff
;
}
.box
:global
.ant-btn-primary
{
background
:
#6B778C
;
}
.box
.listItem
{
display
:
flex
;
}
.box
.listItem
.label
{
flex
:
0.2
;
padding
:
0
16px
;
background
:
linear-gradient
(
270deg
,
#ffffff
0%
,
#daf2e7
100%
);
}
.box
.listItem
.text
{
padding
:
0px
0px
;
flex
:
1
;
}
.box
.listItem
p
{
margin-bottom
:
0
;
}
.flex
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
.flex
span
{
background
:
#e4e6eb
;
padding
:
7px
12px
;
color
:
#c0c4cc
;
}
.upload_item
{
margin-bottom
:
16px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
}
.upload_item
.upload_left
{
display
:
flex
;
align-items
:
center
;
color
:
#303133
;
background-color
:
#fafbfc
;
}
.upload_item
.upload_left
:global
.anticon-file-word
{
color
:
#4279df
;
font-size
:
18px
;
margin-right
:
8px
;
}
.upload_item
.upload_right
{
color
:
#00b37a
;
cursor
:
pointer
;
}
.upload_item
.upload_right
:global
.anticon-delete
{
margin-left
:
19px
;
color
:
#c0c4cc
;
}
.tagAtive
{
padding
:
5px
15px
;
background
:
#6B778C
;
color
:
#fff
;
}
.tag
{
padding
:
5px
15px
;
border-top
:
1px
solid
#E4E6EB
;
border-right
:
1px
solid
#E4E6EB
;
border-bottom
:
1px
solid
#E4E6EB
;
}
src/pages/contract/funds/addbill/index.less
0 → 100644
View file @
0cfba7e9
.box {
width: 100%;
:global {
.ant-table-expanded-row-level-1 .ant-table-cell {
padding: 0px !important;
background-color: #ffffff;
}
.ant-btn-primary{
background: #6B778C;
}
}
.listItem {
display: flex;
.label {
flex: 0.2;
padding: 0 16px;
background: linear-gradient(270deg, #ffffff 0%, #daf2e7 100%);
}
.text {
padding: 0px 0px;
flex: 1;
}
p {
margin-bottom: 0;
}
}
}
.flex {
display: flex;
align-items: center;
justify-content: center;
span {
background: #e4e6eb;
padding: 7px 12px;
color: #c0c4cc;
}
}
.upload_item {
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
.upload_left {
display: flex;
align-items: center;
color: #303133;
background-color: #fafbfc;
:global {
.anticon-file-word {
color: #4279df;
font-size: 18px;
margin-right: 8px;
}
}
}
.upload_right {
color: #00b37a;
cursor: pointer;
:global {
.anticon-delete {
margin-left: 19px;
color: #c0c4cc;
}
}
}
}
.tagAtive{
padding: 5px 15px;
background: #6B778C;
color: #fff;
}
.tag{
padding: 5px 15px;
border-top: 1px solid #E4E6EB;
border-right: 1px solid #E4E6EB;
border-bottom: 1px solid #E4E6EB;
}
src/pages/contract/funds/addbill/index.tsx
0 → 100644
View file @
0cfba7e9
import
React
,
{
useState
,
useRef
,
ReactNode
}
from
'react'
import
{
history
,
Link
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
,
Button
,
Space
}
from
'antd'
;
import
statuStyle
from
'../../common/colorTag'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
StandardTable
}
from
'god'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
PublicApi
}
from
'@/services/api'
const
formActions
=
createFormActions
();
const
Addbilldetails
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'请款单号/摘要'
,
dataIndex
:
'No'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
return
(
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/funds/addbill/Details?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
name
}
</
p
>
</
div
>
);
},
},
{
title
:
'单据时间'
,
dataIndex
:
'time'
,
},
{
title
:
'收款方'
,
dataIndex
:
'NikName'
,
},
{
title
:
'合同编号'
,
dataIndex
:
'PyNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/contract/funds/addbill/details/?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'合同总金额'
,
dataIndex
:
'totalPrice'
,
},
{
title
:
'请款金额'
,
dataIndex
:
'Price'
,
},
{
title
:
'内部状态'
,
dataIndex
:
'description'
,
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
let
component
:
ReactNode
=
null
component
=
(
<>
<
span
style=
{
statuStyle
.
success
}
>
已完成签约
</
span
>
</>
)
return
component
}
}]
// 模拟请求
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
return
new
Promise
((
resolve
,
reject
)
=>
{
let
data
=
{
code
:
1000
,
data
:
[
{
id
:
1
,
No
:
'QPTY12'
,
name
:
'进口头层黄牛皮荔枝纹采购请款'
,
time
:
'2020-10-25 08:49'
,
NikName
:
'广州白马皮具交易中心'
,
PyNo
:
'H-13-00001'
,
totalPrice
:
'¥100,000.00'
,
Price
:
'¥10,000.00'
,
status
:
1
,
type
:
1
,
description
:
'待提交审核'
,
},
{
id
:
2
,
No
:
'QPTY12'
,
name
:
'进口头层黄牛皮荔枝纹采购请款'
,
time
:
'2020-10-25 08:49'
,
NikName
:
'广州白马皮具交易中心'
,
PyNo
:
'H-13-00001'
,
totalPrice
:
'¥100,000.00'
,
Price
:
'¥10,000.00'
,
status
:
1
,
type
:
1
,
description
:
'待提交审核'
,
}
]
}
resolve
(
data
)
})
}
const
handleJumpAdd
=
()
=>
{
};
const
Actions
=
(
<
Space
>
<
Button
type=
"primary"
icon=
{
<
PlusOutlined
/>
}
onClick=
{
handleJumpAdd
}
>
新建
</
Button
>
</
Space
>
);
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
controlRender=
{
<
NiceForm
actions=
{
formActions
}
expressionScope=
{
{
Actions
,
}
}
effects=
{
(
$
,
actions
)
=>
{
}
}
schema=
{
{
type
:
'object'
,
properties
:
{
searchWrap
:
{
type
:
'object'
,
'x-component'
:
'Mega-Layout'
,
'x-component-props'
:
{
grid
:
true
,
},
properties
:
{
actions
:
{
type
:
'object'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{Actions}}'
,
},
},
name
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'合同模板名称'
,
advanced
:
false
,
},
},
},
},
},
}
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
Addbilldetails
src/pages/contract/funds/bill/details.tsx
View file @
0cfba7e9
import
React
,
{
useEffect
,
useState
,
useRef
}
from
'react'
;
import
{
Anchor
,
Radio
,
Steps
,
Row
,
Col
,
Table
}
from
'antd'
;
import
{
Anchor
,
Radio
,
Steps
,
Row
,
Col
,
Input
,
Button
,
Modal
}
from
'antd'
;
import
style
from
'./index.less'
;
import
{
ArrowLeftOutlined
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
...
...
@@ -16,10 +16,11 @@ const { Link } = Anchor;
const
{
Step
}
=
Steps
;
const
activeAnchorClassName
=
'ant-anchor-link-active'
const
{
TextArea
}
=
Input
;
const
BillDetails
=
(
props
:
any
)
=>
{
const
ref
=
useRef
({});
const
[
currLink
,
setCurrLink
]
=
useState
(
activeAnchorClassName
)
const
[
isAllMember
,
setIsAllMember
]
=
useState
(
true
)
const
[
tabPane
]
=
useState
([
{
id
:
'progress'
,
title
:
'流转进度'
},
{
id
:
'process'
,
title
:
'基本流程'
},
...
...
@@ -27,6 +28,7 @@ const BillDetails = (props: any) => {
{
id
:
'record'
,
title
:
'流转记录'
},
])
const
[
targetOffset
,
setTargetOffset
]
=
useState
<
number
|
undefined
>
(
undefined
);
const
[
Visible
,
setIsModalVisible
]
=
useState
<
boolean
>
(
false
)
useEffect
(()
=>
{
setTargetOffset
(
window
.
innerHeight
/
6
);
},
[]);
...
...
@@ -58,9 +60,18 @@ const BillDetails = (props: any) => {
{
label
:
'合同有效期:'
,
extra
:
'2020-08-25 至 2020-10-25'
},
],
}
const
isTitle
=
(
title
,
Price
)
=>
{
return
(
<
div
className=
"a"
>
<
div
>
{
title
}
</
div
>
<
div
>
合计金额:¥
{
Price
}
</
div
>
</
div
>
)
}
/* 请款明细 */
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'
合同编
号/摘要'
,
title
:
'
单据
号/摘要'
,
dataIndex
:
'No'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
...
...
@@ -73,52 +84,98 @@ const BillDetails = (props: any) => {
<
p
>
{
record
.
name
}
</
p
>
</
div
>
},
{
title
:
'
合同生效/失效时间
'
,
title
:
'
单据类型
'
,
dataIndex
:
'number'
,
align
:
'center'
,
},
{
title
:
'
合同乙方
'
,
title
:
'
单据状态
'
,
dataIndex
:
'memberName'
,
align
:
'center'
,
},
{
title
:
'
合同总金额
'
,
title
:
'
单据时间
'
,
dataIndex
:
'time'
,
align
:
'center'
,
defaultSortOrder
:
'descend'
,
sorter
:
(
a
,
b
)
=>
a
.
age
-
b
.
age
,
},
{
title
:
'已执行金额'
,
title
:
isTitle
(
'单据金额'
,
'188999'
)
,
dataIndex
:
'Price'
,
align
:
'center'
,
},
{
title
:
'
已付款
'
,
title
:
'
含税/税率
'
,
dataIndex
:
'Price'
,
align
:
'center'
,
},
{
title
:
'已请款待付款'
,
title
:
isTitle
(
'已付款'
,
'188999'
)
,
dataIndex
:
'Price'
,
align
:
'center'
,
},
{
title
:
'未请款'
,
title
:
isTitle
(
'已请款待付款'
,
'188999'
)
,
dataIndex
:
'Price'
,
align
:
'center'
,
},
{
title
:
'外部状态'
,
dataIndex
:
'
stat
e'
,
title
:
isTitle
(
'请款金额'
,
'18000'
)
,
dataIndex
:
'
Pric
e'
,
align
:
'center'
,
render
:
(
record
)
=>
{
return
(
<
span
style=
{
statuStyle
.
success
}
>
已完成签约
</
span
>
)
}
}]
const
columnsList
:
ColumnType
<
any
>
[]
=
[{
title
:
'序号'
,
dataIndex
:
'No'
,
align
:
'center'
,
},
{
title
:
'操作角色'
,
dataIndex
:
'number'
,
align
:
'center'
,
},
{
title
:
'部门'
,
dataIndex
:
'memberName'
,
align
:
'center'
,
},
{
title
:
'职位'
,
dataIndex
:
'time'
,
align
:
'center'
,
defaultSortOrder
:
'descend'
,
sorter
:
(
a
,
b
)
=>
a
.
age
-
b
.
age
,
},
{
title
:
'状态'
,
dataIndex
:
'Price'
,
align
:
'center'
,
},
{
title
:
'操作'
,
dataIndex
:
'Price'
,
align
:
'center'
,
},
{
title
:
'操作时间'
,
dataIndex
:
'Price'
,
align
:
'center'
,
},
{
title
:
'审核意见'
,
dataIndex
:
'Price'
,
align
:
'center'
,
},
// {
// title: '外部状态',
// dataIndex: 'state',
// align: 'center',
// render: (record) => {
// return (
// <span style={statuStyle.success}>已完成签约</span>
// )
// }
// }
]
// 列表数据
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
...
...
@@ -157,6 +214,10 @@ const BillDetails = (props: any) => {
resolve
(
data
)
})
}
const
handleIsAllMemberChange
=
(
v
:
any
)
=>
{
setIsAllMember
(
v
.
target
.
value
)
}
return
(
<
div
className=
{
style
.
anchorWrap
}
>
<
Anchor
...
...
@@ -198,6 +259,9 @@ const BillDetails = (props: any) => {
</
div
>
</
div
>
<
div
>
<
Button
type=
"primary"
style=
{
{
width
:
80
,
marginRight
:
16
}
}
onClick=
{
()
=>
setIsModalVisible
(
!
Visible
)
}
>
单据作废
</
Button
>
</
div
>
</
Anchor
>
<
div
id=
'content'
className=
{
style
.
card
}
>
{
/* 流转进度 */
}
...
...
@@ -317,7 +381,7 @@ const BillDetails = (props: any) => {
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
columns=
{
columns
List
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
formilyProps=
{
{
...
...
@@ -342,6 +406,16 @@ const BillDetails = (props: any) => {
</
div
>
</
div
>
</
div
>
<
Modal
title=
"单据作废"
visible=
{
Visible
}
onOk=
{
()
=>
setIsModalVisible
(
!
Visible
)
}
onCancel=
{
()
=>
setIsModalVisible
(
!
Visible
)
}
>
<
Radio
.
Group
onChange=
{
handleIsAllMemberChange
}
>
<
Radio
value=
{
true
}
>
作废
</
Radio
>
<
Radio
value=
{
false
}
>
不作废
</
Radio
>
</
Radio
.
Group
>
<
p
style=
{
{
padding
:
10
,
margin
:
0
}
}
>
单据作废原因
<
span
style=
{
{
color
:
'red'
}
}
>
*
</
span
></
p
>
<
TextArea
placeholder=
"在此输入你的原因,最多60个汉字"
maxLength=
{
120
}
/>
</
Modal
>
</
div
>
)
}
...
...
src/pages/contract/funds/bill/index.css
View file @
0cfba7e9
.anchorWrap
:global
.ant-pro-basicLayout-content
{
margin
:
0
!important
;
}
.anchorWrap
:global
.ant-anchor
{
display
:
flex
;
align-items
:
center
;
}
.anchorWrap
:global
.ant-anchor
.ant-anchor-ink
{
display
:
none
;
...
...
src/pages/contract/funds/bill/index.less
View file @
0cfba7e9
.anchorWrap {
:global {
.ant-pro-basicLayout-content{
margin: 0 !important;
}
.ant-anchor {
display: flex;
align-items: center;
.ant-anchor-ink {
display: none;
}
...
...
@@ -32,6 +36,7 @@
padding: 0 16px;
}
}
/** 卡片样式 */
.card {
margin: 24px;
...
...
@@ -165,7 +170,6 @@
.upload_right {
color: #00b37a;
cursor: pointer;
:global {
.anticon-delete {
margin-left: 19px;
...
...
@@ -173,4 +177,8 @@
}
}
}
}
src/pages/contract/funds/schema/index.ts
View file @
0cfba7e9
...
...
@@ -72,7 +72,7 @@ export const tableListSchema: ISchema = {
type
:
'array'
,
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
...
...
@@ -85,3 +85,290 @@ export const tableListSchema: ISchema = {
},
}
}
export
const
addBillSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
/* 定义tab */
REPOSIT_TABS
:
{
type
:
'object'
,
'x-component'
:
'tab'
,
'x-component-props'
:
{
type
:
'card'
,
},
/* tab下面对应的值 */
properties
:
{
'tab-1'
:
{
type
:
'object'
,
'x-component'
:
'tabpane'
,
'x-component-props'
:
{
tab
:
'基本信息'
,
},
properties
:
{
MEGA_LAYOUT1
:
{
type
:
'object'
,
'x-component'
:
'Mega-Layout'
,
'x-component-props'
:
{
labelCol
:
2
,
wrapperCol
:
10
,
labelAlign
:
'left'
,
},
properties
:
{
/* 合同编号 */
number
:
{
type
:
'string'
,
title
:
'合同编号'
,
'x-rules'
:
[
{
required
:
true
,
message
:
'请填写合同编号'
,
},
{
limitByte
:
true
,
// 自定义校验规则
maxByte
:
60
,
},
],
},
abstract
:
{
type
:
'string'
,
title
:
'合同摘要'
,
'x-rules'
:
[
{
required
:
true
,
message
:
'请填写合同摘要'
,
},
{
limitByte
:
true
,
// 自定义校验规则
maxByte
:
60
,
},
],
},
deliveryType
:
{
title
:
'寻源类型'
,
type
:
'string'
,
enum
:
[
{
label
:
'采购询价'
,
value
:
1
},
{
label
:
'招标询价'
,
value
:
2
},
],
'x-component-props'
:
{
placeholder
:
'请选择'
,
style
:
{
width
:
'100%'
,
},
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请选择配送方式'
,
},
],
},
supplierMember
:
{
type
:
'string'
,
title
:
'供应会员'
,
'x-component'
:
'CustomRelevance'
,
'x-component-props'
:
{
title
:
'关联'
,
tip
:
'请选择对应单据'
,
modalProps
:
{
title
:
'选择会员'
,
},
columns
:
supplierColumns
,
fetchTableData
:
getSupplier
,
formilyProps
:
{
ctx
:
{
schema
:
supplierSchema
,
components
:
{
Search
,
Submit
,
},
effects
:
(
$
,
actions
)
=>
{
},
inline
:
false
,
},
},
tableProps
:
{
rowKey
:
'id'
,
lableKey
:
'name'
,
},
},
'x-mega-props'
:
{
wrapperCol
:
10
,
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请选择供应会员'
,
},
],
},
supplierMember1
:
{
type
:
'string'
,
title
:
'授标会员'
,
'x-component'
:
'CustomRelevance'
,
'x-component-props'
:
{
title
:
'关联'
,
tip
:
'请选择对应单据'
,
modalProps
:
{
title
:
'选择会员'
,
},
columns
:
supplierColumns
,
fetchTableData
:
getSupplier
,
formilyProps
:
{
ctx
:
{
schema
:
supplierSchema
,
components
:
{
Search
,
Submit
,
},
effects
:
(
$
,
actions
)
=>
{
},
inline
:
false
,
},
},
tableProps
:
{
rowKey
:
'id'
,
lableKey
:
'name'
,
},
},
'x-mega-props'
:
{
wrapperCol
:
10
,
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请选择供应会员'
,
},
],
},
requestTime
:
{
type
:
'string'
,
'x-component'
:
'daterange'
,
title
:
'合同有效期'
,
required
:
true
,
'x-component-props'
:
{
placeholder
:
[
'选择生效日期'
,
'选择失效日期'
],
disabledDate
:
current
=>
{
return
current
&&
current
<
moment
().
startOf
(
'day'
);
},
style
:
{
width
:
'100%'
},
},
},
outerStatus
:
{
type
:
'string'
,
title
:
'外部状态'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{OuterStatus}}'
,
},
},
innerStatus
:
{
type
:
'string'
,
title
:
'内部状态'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{InnerStatus}}'
,
},
},
},
},
},
},
'tab-2'
:
{
type
:
'object'
,
'x-component'
:
'tabpane'
,
'x-component-props'
:
{
tab
:
'采购物料'
,
},
properties
:
{
MEGA_LAYOUT1
:
{
type
:
'object'
,
'x-component'
:
'Mega-Layout'
,
'x-component-props'
:
{
labelCol
:
2
,
wrapperCol
:
10
,
labelAlign
:
'left'
,
},
properties
:
{
/* 合同编号 */
innerWorkFlow
:
{
type
:
'array:number'
,
'x-mega-props'
:
{
wrapperCol
:
'100%'
,
},
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{List}}'
,
},
},
},
},
},
},
'tab-3'
:
{
type
:
'object'
,
'x-component'
:
'tabpane'
,
'x-component-props'
:
{
tab
:
'付款计划'
,
},
properties
:
{
MEGA_LAYOUT1
:
{
type
:
'object'
,
'x-component'
:
'Mega-Layout'
,
'x-component-props'
:
{
labelCol
:
2
,
wrapperCol
:
10
,
labelAlign
:
'left'
,
},
properties
:
{
/* 合同编号 */
innerWorkFlow
:
{
type
:
'array:number'
,
'x-mega-props'
:
{
wrapperCol
:
'100%'
,
},
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{table}}'
,
},
},
},
},
},
},
'tab-4'
:
{
type
:
'object'
,
'x-component'
:
'tabpane'
,
'x-component-props'
:
{
tab
:
'合同文本'
,
},
properties
:
{
MEGA_LAYOUT1
:
{
type
:
'object'
,
'x-component'
:
'Mega-Layout'
,
'x-component-props'
:
{
labelCol
:
2
,
wrapperCol
:
10
,
labelAlign
:
'left'
,
},
properties
:
{
/* 合同编号 */
innerWorkFlow
:
{
type
:
'array:number'
,
'x-mega-props'
:
{
wrapperCol
:
'100%'
,
},
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{FromDom}}'
,
},
},
},
},
},
},
},
},
},
};
src/pages/contract/manage/QueryList/QueryListdetails.tsx
View file @
0cfba7e9
This diff is collapsed.
Click to expand it.
src/pages/contract/manage/QueryList/index.css
View file @
0cfba7e9
...
...
@@ -58,8 +58,6 @@
}
.card
.list
{
display
:
flex
;
}
.card
.list
h5
{
margin-bottom
:
2em
;
}
.card
.list
.listLable
{
...
...
@@ -72,6 +70,7 @@
.listItem
.label
{
flex
:
0.2
;
padding
:
0
16px
;
color
:
#00b37a
;
background
:
linear-gradient
(
270deg
,
#ffffff
0%
,
#daf2e7
100%
);
}
.listItem
.text
{
...
...
@@ -157,3 +156,7 @@
margin-left
:
19px
;
color
:
#c0c4cc
;
}
.box
:global
.ant-table-expanded-row-level-1
.ant-table-cell
{
padding
:
0px
!important
;
background-color
:
#ffffff
;
}
src/pages/contract/manage/QueryList/index.less
View file @
0cfba7e9
...
...
@@ -65,8 +65,9 @@
}
.list {
display: flex;
margin-bottom: 2em;
h5 {
margin-bottom: 2em;
//
margin-bottom: 2em;
}
.listLable {
flex: 0 0 25%;
...
...
@@ -80,6 +81,7 @@
.label {
flex: 0.2;
padding: 0 16px;
color: #00b37a;
background: linear-gradient(270deg, #ffffff 0%, #daf2e7 100%);
}
.text {
...
...
@@ -174,3 +176,12 @@
}
}
}
.box{
:global {
.ant-table-expanded-row-level-1 .ant-table-cell {
padding: 0px !important;
background-color: #ffffff;
}
}
}
src/pages/contract/manage/QueryList/index.tsx
View file @
0cfba7e9
...
...
@@ -6,76 +6,119 @@ import { ColumnType } from 'antd/lib/table/interface';
import
{
StandardTable
}
from
'god'
;
import
EyePreview
from
'@/components/EyePreview'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
table
ListSchema
}
from
'../schema'
import
{
Query
ListSchema
}
from
'../schema'
import
StatusTag
from
'@/components/StatusTag'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
const
QueryList
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'
需求单
号/摘要'
,
dataIndex
:
'No'
,
title
:
'
合同编
号/摘要'
,
dataIndex
:
'
contract
No'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails
?contractId=${record.id}
`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
name
}
</
p
>
<
p
>
{
record
.
contractAbstract
}
</
p
>
</
div
>
},
{
title
:
'
投标编号
'
,
dataIndex
:
'
number
'
,
title
:
'
合同生效/失效时间
'
,
dataIndex
:
'
startTime
'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'
中标会员
'
,
dataIndex
:
'
member
Name'
,
title
:
'
合同乙方
'
,
dataIndex
:
'
partyB
Name'
,
align
:
'center'
,
},
{
title
:
'
中标通知时间
'
,
dataIndex
:
't
ime
'
,
title
:
'
合同总金额
'
,
dataIndex
:
't
otalAmount
'
,
align
:
'center'
,
render
:
(
text
)
=>
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
},
{
title
:
'
中标金额
'
,
dataIndex
:
'
Price
'
,
title
:
'
对应单据/寻源类型
'
,
dataIndex
:
'
sourceNo
'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
{
let
sourceTypeList
=
[
""
,
"采购询价"
,
"采购招标"
]
return
(
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
sourceTypeList
[
record
.
sourceType
]
}
</
p
>
</
div
>
)
}
},
{
title
:
'外部状态'
,
dataIndex
:
'
s
tatus'
,
dataIndex
:
'
outerS
tatus'
,
align
:
'center'
,
render
:
(
text
)
=>
{
let
title
:
any
=
[
{},
{
name
:
'已完成'
,
type
:
"success"
},
{
name
:
'未完成'
,
type
:
"primary"
},
]
render
:
(
text
,
record
)
=>
{
// let outerStatusList: any = [
// { label: '所有状态', type: 'success' },
// { label: '待提交乙方签订合同', type: 'success' },
// { label: '待乙方签订合同', type: 'success' },
// { label: '乙方不同意签订合同', type: 'success' },
// { label: '待甲方签订合同', type: 'success' },
// { label: '甲方不同意签订合同', type: 'success' },
// { label: '已完成签约', type: 'success' },
// { label: '已作废', type: 'warning' },
// { label: '已作废', type: 'warning' },
// { label: '已作废', type: 'danger' },
// ]
return
(
<
StatusTag
type=
{
title
[
text
].
type
}
title=
{
title
[
text
].
n
ame
}
/>
<
StatusTag
type=
"warning"
title=
{
record
.
outerStatusN
ame
}
/>
)
}
},
{
title
:
'内部状态'
,
dataIndex
:
'in
sides
tatus'
,
dataIndex
:
'in
nerS
tatus'
,
align
:
'center'
,
render
:
(
text
)
=>
{
let
title
:
any
=
[
{},
{
name
:
'已完成'
,
type
:
"success"
},
{
name
:
'未完成'
,
type
:
"primary"
},
]
render
:
(
text
,
record
)
=>
{
// let innerStatusList: any = [
// { label: '所有状态', type: 'danger' },
// { label: '待提交乙方签订合同', type: 'danger' },
// { label: '待乙方签订合同', type: 'danger' },
// { label: '待提交审核合同', type: 'danger' },
// { label: '待审核合同(一级)', type: 'danger' },
// { label: '待审核合同(二级)', type: 'danger' },
// { label: '合同审核不通过(一级)', type: 'danger' },
// { label: '合同审核通过(二级)', type: 'danger' },
// { label: '合同审核不通过(二级)', type: 'danger' },
// { label: '同意签订合同', type: 'danger' },
// { label: '不同意签订合同', type: 'danger' },
// ]
return
(
<
div
>
<
span
style=
{
statuStyle
.
point
}
>
</
span
>
<
span
>
{
title
[
text
].
n
ame
}
</
span
>
<
span
>
{
record
.
innerStatusN
ame
}
</
span
>
</
div
>
)
}
...
...
@@ -83,50 +126,29 @@ const QueryList = () => {
title
:
'操作'
,
dataIndex
:
'state'
,
align
:
'center'
,
render
:
(
record
)
=>
{
console
.
log
(
record
)
render
:
(
text
,
record
)
=>
{
return
(
<
span
style=
{
statuStyle
.
success
}
>
创建采购招标合同
</
span
>
<
div
>
{
record
.
outerStatus
==
6
?
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
}
}
>
合同变更
</
span
>
:
<
span
>
</
span
>
}
<
span
style=
{
{
color
:
'#00B37A'
}
}
>
作废
</
span
>
</
div
>
)
}
}]
// 列表数据
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
return
new
Promise
((
resolve
,
reject
)
=>
{
let
data
=
{
totalCount
:
1
,
data
:
[
{
id
:
'1'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
},
{
id
:
'2'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
}
]
}
resolve
(
data
)
PublicApi
.
getContractManagePageList
({
...
params
,
innerStatus
:
params
.
innerStatus
||
0
,
outerStatus
:
params
.
outerStatus
||
0
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
}).
catch
(
err
=>
{
reject
(
err
)
})
})
}
return
(
...
...
@@ -142,7 +164,7 @@ const QueryList = () => {
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
table
ListSchema
,
schema
:
Query
ListSchema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
...
...
src/pages/contract/manage/add/addList.tsx
0 → 100644
View file @
0cfba7e9
import
React
,
{
useRef
,
useState
}
from
'react'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
,
Button
,
Space
}
from
'antd'
import
{
history
}
from
'umi'
import
statuStyle
from
'../../common/colorTag'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
StandardTable
}
from
'god'
;
import
EyePreview
from
'@/components/EyePreview'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
StatusTag
from
'@/components/StatusTag'
;
import
{
addListSchema
}
from
'../schema'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
import
{
PlusCircleOutlined
}
from
'@ant-design/icons'
const
addList
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
//表头
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'合同编号/摘要'
,
dataIndex
:
'contractNo'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${record.id}`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
contractAbstract
}
</
p
>
</
div
>
},
{
title
:
'合同生效/失效时间'
,
dataIndex
:
'startTime'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'合同乙方'
,
dataIndex
:
'partyBName'
,
align
:
'center'
,
},
{
title
:
'合同总金额'
,
dataIndex
:
'totalAmount'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
render
:
(
text
)
=>
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
},
{
title
:
'对应单据/寻源类型'
,
dataIndex
:
'sourceNo'
,
align
:
'center'
,
filters
:
[
{
text
:
'采购询价'
,
value
:
1
},
{
text
:
'采购招标'
,
value
:
2
},
{
text
:
'采购竞价'
,
value
:
3
},
],
render
:
(
text
,
record
)
=>
{
let
sourceTypeList
=
[
""
,
"采购询价"
,
"采购招标"
]
return
(
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
sourceTypeList
[
record
.
sourceType
]
}
</
p
>
</
div
>
)
}
},
{
title
:
'外部状态'
,
dataIndex
:
'outerStatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
,
record
)
=>
{
return
(
<
StatusTag
type=
"warning"
title=
{
record
.
outerStatusName
}
/>
)
}
},
{
title
:
'内部状态'
,
dataIndex
:
'innerStatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
span
style=
{
statuStyle
.
point
}
>
</
span
>
<
span
>
{
record
.
innerStatusName
}
</
span
>
</
div
>
)
}
},
{
title
:
'操作'
,
dataIndex
:
'state'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
span
style=
{
{
color
:
'#00B37A'
}
}
>
修改
</
span
>
</
div
>
)
}
}]
// 列表数据
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getContractManagePageToBeAdd
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
const
rowSelection
:
any
=
{
selectedRowKeys
:
selectedRowKeys
,
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
setSelectedRowKeys
(
selectedRowKeys
)
setSelectRow
(
selectedRows
)
}
};
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
rowSelection=
{
rowSelection
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
addListSchema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'contractNo'
,
FORM_FILTER_PATH
,
);
},
components
:
{
DateRangePickerUnix
,
Submit
}
},
layouts
:
{
order
:
2
,
span
:
24
}
}
}
formilyChilds=
{
{
children
:
<
Space
>
<
Button
icon=
{
<
PlusCircleOutlined
/>
}
type=
'primary'
onClick=
{
()
=>
history
.
push
(
'/memberCenter/contract/manage/add/addList/contracAdd'
)
}
>
新建
</
Button
>
</
Space
>,
layouts
:
{
span
:
8
}
}
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
addList
src/pages/contract/manage/add/
index
.tsx
→
src/pages/contract/manage/add/
contracAdd
.tsx
View file @
0cfba7e9
import
React
,
{
useState
}
from
'react'
import
{
Button
,
Card
,
message
,
Table
,
Input
,
Select
,
DatePicker
,
Form
,
Checkbox
}
from
'antd'
import
{
ArrayTable
}
from
'@formily/antd-components'
;
import
{
Button
,
Card
,
Tabs
,
Table
,
Input
,
Select
,
DatePicker
,
Form
,
Checkbox
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
NiceForm
from
'@/components/NiceForm'
;
import
StatusTag
from
'@/components/StatusTag'
;
import
styles
from
'./index.less'
import
AddressFormItem
from
'../../components/AddressFormItem'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
{
SaveOutlined
,
PlusOutlined
,
FileWordFilled
FileWordFilled
,
LinkOutlined
}
from
'@ant-design/icons'
import
{
addBillSchema
}
from
'./schema'
;
const
addSchemaAction
=
createFormActions
();
const
{
Option
}
=
Select
;
const
{
TextArea
}
=
Input
const
{
TextArea
,
Search
}
=
Input
const
{
TabPane
}
=
Tabs
;
const
{
RangePicker
}
=
DatePicker
;
const
Add
:
React
.
FC
<
{}
>
=
(
props
)
=>
{
const
[
attrValueForm
]
=
Form
.
useForm
();
const
[
formValue
,
setFormValue
]
=
useState
<
any
>
({})
const
[
checkNick
,
setCheckNick
]
=
useState
(
true
);
// ArrayTable自定义渲染
const
renderListTableRemove
=
(
index
:
number
)
=>
(
<>
<
a
style=
{
{
color
:
'#ff4d4f'
,
}
}
>
删除
</
a
>
</>
);
const
OuterStatus
=
(
<
StatusTag
type=
"primary"
title=
'外部状态'
/>
);
const
InnerStatus
=
(
<
p
>
111111
</
p
>
);
const
columns
:
any
=
[
{
title
:
'物料编号/名称'
,
dataIndex
:
'name'
,
key
:
'name'
,
align
:
'center'
,
},
{
title
:
'规格型号'
,
dataIndex
:
'age'
,
key
:
'age'
,
align
:
'center'
,
},
...
...
@@ -145,7 +122,143 @@ const Add: React.FC<{}> = (props) => {
description
:
'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.'
,
},
];
const
onCheckboxChange
=
(
e
:
{
target
:
{
checked
:
boolean
}
})
=>
{
setCheckNick
(
e
.
target
.
checked
);
};
/**
* 第一个内容
*/
const
Formcontent
=
()
=>
{
return
(
<
div
>
<
Form
.
Item
label=
"合同编号"
labelAlign=
"left"
name=
"contractNo"
labelCol=
{
{
span
:
2
}
}
wrapperCol=
{
{
span
:
8
}
}
rules=
{
[
{
required
:
true
,
message
:
'请输入合同编号'
,
},
]
}
>
<
Input
placeholder=
'请输入合同编号'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"合同摘要"
labelAlign=
"left"
name=
"contractAbstract"
labelCol=
{
{
span
:
2
}
}
wrapperCol=
{
{
span
:
8
}
}
rules=
{
[
{
required
:
true
,
message
:
'请输入合同摘要'
,
},
]
}
>
<
Input
placeholder=
'请输入合同编号'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"寻源类型"
labelAlign=
"left"
name=
"sourceType"
labelCol=
{
{
span
:
2
}
}
wrapperCol=
{
{
span
:
8
}
}
rules=
{
[
{
required
:
true
,
message
:
'请输入合同摘要'
,
},
]
}
>
<
Select
>
<
Option
value=
"是"
key=
'1'
>
采购询价
</
Option
>
<
Option
value=
"否"
key=
'2'
>
采购招标
</
Option
>
<
Option
value=
"否"
key=
'3'
>
采购竞价
</
Option
>
</
Select
>
</
Form
.
Item
>
<
Form
.
Item
name=
"range-picker"
label=
"合同有效期"
labelAlign=
"left"
labelCol=
{
{
span
:
2
}
}
wrapperCol=
{
{
span
:
8
}
}
rules=
{
[{
type
:
'array'
as
const
,
required
:
true
,
message
:
'请选择合同合同有效期'
}]
}
>
<
RangePicker
style=
{
{
width
:
'100%'
}
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"对应单据"
labelAlign=
"left"
labelCol=
{
{
span
:
2
}
}
wrapperCol=
{
{
span
:
8
}
}
>
<
Search
placeholder=
"最长60个字符,30个汉字"
defaultValue=
""
readOnly
enterButton=
{
<
div
onClick=
{
()
=>
onSearch
()
}
><
LinkOutlined
/>
选择
</
div
>
}
onSearch=
{
onSearch
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"授标会员"
labelAlign=
"left"
labelCol=
{
{
span
:
2
}
}
wrapperCol=
{
{
span
:
8
}
}
>
<
Search
placeholder=
"最长60个字符,30个汉字"
defaultValue=
""
readOnly
enterButton=
{
<
div
onClick=
{
()
=>
onSearch
()
}
><
LinkOutlined
/>
选择
</
div
>
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"授标金额"
labelAlign=
"left"
labelCol=
{
{
span
:
2
}
}
wrapperCol=
{
{
span
:
8
}
}
>
<
p
>
¥ 10000
</
p
>
</
Form
.
Item
>
<
Form
.
Item
label=
"外部状态"
labelAlign=
"left"
labelCol=
{
{
span
:
2
}
}
wrapperCol=
{
{
span
:
8
}
}
>
<
p
>
待提交乙方签订合同
</
p
>
</
Form
.
Item
>
<
Form
.
Item
label=
"内部状态"
labelAlign=
"left"
labelCol=
{
{
span
:
2
}
}
wrapperCol=
{
{
span
:
8
}
}
>
<
p
>
待提交乙方签订合同
</
p
>
</
Form
.
Item
>
</
div
>
)
}
/**
* 第二个内容
*/
const
FormList
=
()
=>
(
<
div
className=
{
styles
.
box
}
>
<
div
style=
{
{
paddingTop
:
12
,
paddingBottom
:
12
,
}
}
>
<
Button
block
type=
'dashed'
><
PlusOutlined
/>
选择采购物料
</
Button
>
</
div
>
<
Table
columns=
{
columns
}
expandable=
{
{
expandedRowRender
:
record
=>
listItem
(
record
),
}
}
dataSource=
{
data
}
style=
{
{
width
:
"100%"
}
}
/>
</
div
>
)
/* 下拉的子元素 */
const
listItem
=
(
record
)
=>
(
<
div
className=
{
styles
.
listItem
}
>
...
...
@@ -168,24 +281,6 @@ const Add: React.FC<{}> = (props) => {
)
/* 列表 */
const
List
:
any
=
(
<
div
className=
{
styles
.
box
}
>
<
div
style=
{
{
paddingTop
:
12
,
paddingBottom
:
12
,
}
}
>
<
Button
block
type=
'dashed'
><
PlusOutlined
/>
选择采购物料
</
Button
>
</
div
>
<
Table
columns=
{
columns
}
expandable=
{
{
expandedRowRender
:
record
=>
listItem
(
record
),
}
}
dataSource=
{
data
}
style=
{
{
width
:
"100%"
}
}
/>
</
div
>
)
/* 第三个tab */
const
tabcolumns
:
any
=
[
{
title
:
'付款次数'
,
dataIndex
:
'name'
,
key
:
'name'
,
align
:
'center'
,
},
...
...
@@ -265,7 +360,7 @@ const Add: React.FC<{}> = (props) => {
description
:
'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.'
,
},
];
const
table
:
any
=
(
const
table
=
()
=>
(
<
Table
columns=
{
tabcolumns
}
dataSource=
{
datas
}
...
...
@@ -274,11 +369,8 @@ const Add: React.FC<{}> = (props) => {
}
}
/>
)
const
onCheckboxChange
=
(
e
:
{
target
:
{
checked
:
boolean
}
})
=>
{
setCheckNick
(
e
.
target
.
checked
);
};
/* 第四个tab */
const
FromDom
=
(
const
FromDom
=
(
)
=>
(
<
div
style=
{
{
width
:
'100%'
,
...
...
@@ -310,36 +402,58 @@ const Add: React.FC<{}> = (props) => {
</
div
>
)
/**
* @param name tag标签名
* @param components 显示内容
*/
const
TabList
=
[
{
name
:
'基本信息'
,
components
:
Formcontent
()
},
{
name
:
'采购物料'
,
components
:
FormList
()
},
{
name
:
'付款计划'
,
components
:
table
()
},
{
name
:
'合同文本'
,
components
:
FromDom
()
},
]
/* 显示弹出 */
const
onSearch
=
()
=>
{
// alert(1111111111111)
}
/* 提交*/
const
submit
=
()
=>
{
attrValueForm
.
validateFields
().
then
(
values
=>
{
console
.
log
(
'===================================='
);
console
.
log
(
values
);
console
.
log
(
'===================================='
);
}).
catch
(
error
=>
{
console
.
error
(
error
)
})
}
return
(
<
PageHeaderWrapper
title=
"新建合同"
extra=
{
[
<
Button
key=
"1"
type=
"primary"
icon=
{
<
SaveOutlined
/>
}
>
</
Button
>
<
Button
key=
"1"
type=
"primary"
icon=
{
<
SaveOutlined
/>
}
onClick=
{
()
=>
submit
()
}
>
保存
</
Button
>
]
}
>
<
Card
>
<
NiceForm
previewPlaceholder=
" "
expressionScope=
{
{
OuterStatus
,
InnerStatus
,
List
,
table
,
FromDom
,
renderListTableRemove
,
}
}
components=
{
{
ArrayTable
,
AddressFormItem
,
}
}
effects=
{
(
$
,
actions
)
=>
{
const
{
setFieldState
}
=
actions
;
}
}
<
Tabs
defaultActiveKey=
"0"
type=
"card"
size=
"small"
>
{
TabList
.
map
((
item
,
index
)
=>
(
<
TabPane
tab=
{
item
.
name
}
key=
{
index
}
>
actions=
{
addSchemaAction
}
schema=
{
addBillSchema
}
/>
<
Form
form=
{
attrValueForm
}
name=
"edit_infomation"
layout=
"horizontal"
labelAlign=
"left"
initialValues=
{
formValue
}
colon=
{
false
}
autoComplete=
"off"
>
{
item
.
components
}
</
Form
>
</
TabPane
>
))
}
</
Tabs
>
</
Card
>
</
PageHeaderWrapper
>
)
...
...
src/pages/contract/manage/add/schema/index.ts
deleted
100644 → 0
View file @
29d1f445
This diff is collapsed.
Click to expand it.
src/pages/contract/manage/bidding/index.tsx
View file @
0cfba7e9
import
React
,
{
useRef
}
from
'react'
import
React
,
{
useRef
,
useState
}
from
'react'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
}
from
'antd'
;
import
statuStyle
from
'../../common/colorTag'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
StandardTable
}
from
'god'
;
import
EyePreview
from
'@/components/EyePreview'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
tableListSchema
}
from
'../schema'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
StatusTag
from
'@/components/StatusTag'
;
import
{
BidListSchema
}
from
'../schema'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
const
BiddingList
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'
需求单号/摘要
'
,
dataIndex
:
'
No
'
,
title
:
'
招标编号/项目
'
,
dataIndex
:
'
inviteBidNO
'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
url=
{
`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`
}
//
url={`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`}
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
name
}
</
p
>
<
p
>
{
record
.
inviteBidAbstract
}
</
p
>
</
div
>
},
{
title
:
'投标编号'
,
dataIndex
:
'
number
'
,
dataIndex
:
'
bidNo
'
,
align
:
'center'
,
},
{
},
{
title
:
'中标会员'
,
dataIndex
:
'
memb
erName'
,
dataIndex
:
'
bidWinn
erName'
,
align
:
'center'
,
},
{
title
:
'中标通知时间'
,
dataIndex
:
'
t
ime'
,
dataIndex
:
'
bidWinnerNoticeT
ime'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
bidWinnerNoticeTime
-
b
.
bidWinnerNoticeTime
,
multiple
:
1
,
},
},
{
title
:
'中标金额'
,
dataIndex
:
'
Price
'
,
dataIndex
:
'
bidWinnerAmount
'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
bidWinnerAmount
-
b
.
bidWinnerAmount
,
multiple
:
1
,
},
},
{
title
:
'外部状态'
,
dataIndex
:
'
s
tatus'
,
dataIndex
:
'
outerS
tatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
)
=>
{
let
title
:
any
=
[
{},
{
name
:
'已完成'
,
type
:
"success"
},
{
name
:
'未完成'
,
type
:
"primary"
},
]
return
(
<
StatusTag
type=
{
title
[
text
].
type
}
title=
{
title
[
text
].
name
}
/>
<
StatusTag
type=
"success"
title=
{
text
}
/>
)
}
},
{
title
:
'内部状态'
,
dataIndex
:
'in
sides
tatus'
,
dataIndex
:
'in
nerS
tatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
)
=>
{
let
title
:
any
=
[
{},
{
name
:
'已完成'
,
type
:
"success"
},
{
name
:
'未完成'
,
type
:
"primary"
},
]
return
(
<
div
>
<
span
style=
{
statuStyle
.
point
}
>
</
span
>
<
span
>
{
t
itle
[
text
].
name
}
</
span
>
<
span
>
{
t
ext
}
</
span
>
</
div
>
)
}
...
...
@@ -95,66 +106,21 @@ const BiddingList = () => {
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
return
new
Promise
((
resolve
,
reject
)
=>
{
let
data
=
{
totalCount
:
1
,
data
:
[
{
id
:
'1'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
},
{
id
:
'2'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
},
{
id
:
'1'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
},
{
id
:
'3'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
},
]
}
resolve
(
data
)
PublicApi
.
getContractPurchaseInviteBidPageToBeCreate
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
const
rowSelection
:
any
=
{
selectedRowKeys
:
selectedRowKeys
,
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
setSelectedRowKeys
(
selectedRowKeys
)
setSelectRow
(
selectedRows
)
}
};
return
(
<
PageHeaderWrapper
>
<
Card
>
...
...
@@ -164,16 +130,17 @@ const BiddingList = () => {
}
}
columns=
{
columns
}
currentRef=
{
ref
}
rowSelection=
{
rowSelection
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
table
ListSchema
,
schema
:
Bid
ListSchema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'
orderNo
'
,
'
inviteBidNO
'
,
FORM_FILTER_PATH
,
);
},
...
...
src/pages/contract/manage/examine/index.tsx
View file @
0cfba7e9
...
...
@@ -8,11 +8,12 @@ import { ColumnType } from 'antd/lib/table/interface';
import
{
StandardTable
}
from
'god'
;
import
EyePreview
from
'@/components/EyePreview'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
tableList
Schema
}
from
'../schema'
import
{
examine
Schema
}
from
'../schema'
import
StatusTag
from
'@/components/StatusTag'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
const
Examine
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
...
...
@@ -20,66 +21,105 @@ const Examine = () => {
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'
需求单
号/摘要'
,
dataIndex
:
'No'
,
title
:
'
合同编
号/摘要'
,
dataIndex
:
'
contract
No'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails
?contractId=${record.id}
`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
name
}
</
p
>
<
p
>
{
record
.
contractAbstract
}
</
p
>
</
div
>
},
{
title
:
'
投标编号
'
,
dataIndex
:
'
number
'
,
title
:
'
合同生效/失效时间
'
,
dataIndex
:
'
startTime
'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'
中标会员
'
,
dataIndex
:
'
member
Name'
,
title
:
'
合同乙方
'
,
dataIndex
:
'
partyB
Name'
,
align
:
'center'
,
},
{
title
:
'
中标通知时间
'
,
dataIndex
:
't
ime
'
,
title
:
'
合同总金额
'
,
dataIndex
:
't
otalAmount
'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
render
:
(
text
)
=>
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
},
{
title
:
'
中标金额
'
,
dataIndex
:
'
Price
'
,
title
:
'
对应单据/寻源类型
'
,
dataIndex
:
'
sourceNo
'
,
align
:
'center'
,
filters
:
[
{
text
:
'采购询价'
,
value
:
1
},
{
text
:
'采购招标'
,
value
:
2
},
{
text
:
'采购竞价'
,
value
:
3
},
],
render
:
(
text
,
record
)
=>
{
let
sourceTypeList
=
[
""
,
"采购询价"
,
"采购招标"
]
return
(
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
sourceTypeList
[
record
.
sourceType
]
}
</
p
>
</
div
>
)
}
},
{
title
:
'外部状态'
,
dataIndex
:
'
s
tatus'
,
dataIndex
:
'
outerS
tatus'
,
align
:
'center'
,
render
:
(
text
)
=>
{
let
title
:
any
=
[
{},
{
name
:
'已完成'
,
type
:
"success"
},
{
name
:
'未完成'
,
type
:
"primary"
},
]
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
,
record
)
=>
{
return
(
<
StatusTag
type=
{
title
[
text
].
type
}
title=
{
title
[
text
].
n
ame
}
/>
<
StatusTag
type=
"warning"
title=
{
record
.
outerStatusN
ame
}
/>
)
}
},
{
title
:
'内部状态'
,
dataIndex
:
'in
sides
tatus'
,
dataIndex
:
'in
nerS
tatus'
,
align
:
'center'
,
render
:
(
text
)
=>
{
let
title
:
any
=
[
{
},
{
name
:
'已完成'
,
type
:
"success"
}
,
{
name
:
'未完成'
,
type
:
"primary"
},
]
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
]
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
span
style=
{
statuStyle
.
point
}
>
</
span
>
<
span
>
{
title
[
text
].
n
ame
}
</
span
>
<
span
>
{
record
.
innerStatusN
ame
}
</
span
>
</
div
>
)
}
...
...
@@ -87,59 +127,25 @@ const Examine = () => {
title
:
'操作'
,
dataIndex
:
'state'
,
align
:
'center'
,
render
:
(
record
)
=>
{
console
.
log
(
record
)
render
:
(
text
,
record
)
=>
{
return
(
<
span
style=
{
statuStyle
.
success
}
>
创建采购招标合同
</
span
>
<
div
>
<
span
style=
{
{
color
:
'#00B37A'
}
}
>
提交审核
</
span
>
</
div
>
)
}
}]
const
handleSubmitBatch
=
async
()
=>
{
}
const
controllerBtns
=
(
<
Space
>
<
Button
onClick=
{
handleSubmitBatch
}
>
批量审核通过
</
Button
>
</
Space
>
);
// 列表数据
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
return
new
Promise
((
resolve
,
reject
)
=>
{
let
data
=
{
totalCount
:
1
,
data
:
[
{
id
:
'1'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
},
{
id
:
'2'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
}
]
}
resolve
(
data
)
PublicApi
.
getContractManagePageToBeSubmitExamine
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
...
...
@@ -164,12 +170,12 @@ const Examine = () => {
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
tableList
Schema
,
schema
:
examine
Schema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'
order
No'
,
'
contract
No'
,
FORM_FILTER_PATH
,
);
},
...
...
src/pages/contract/manage/levelexamine/index.tsx
View file @
0cfba7e9
import
React
,
{
useRef
,
useState
}
from
'react'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
,
Space
,
Button
}
from
'antd'
;
...
...
@@ -8,11 +7,12 @@ import { ColumnType } from 'antd/lib/table/interface';
import
{
StandardTable
}
from
'god'
;
import
EyePreview
from
'@/components/EyePreview'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
tableList
Schema
}
from
'../schema'
import
{
examine
Schema
}
from
'../schema'
import
StatusTag
from
'@/components/StatusTag'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
const
Levelexamine
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
...
...
@@ -20,66 +20,105 @@ const Levelexamine = () => {
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'
需求单
号/摘要'
,
dataIndex
:
'No'
,
title
:
'
合同编
号/摘要'
,
dataIndex
:
'
contract
No'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails
?contractId=${record.id}
`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
name
}
</
p
>
<
p
>
{
record
.
contractAbstract
}
</
p
>
</
div
>
},
{
title
:
'
投标编号
'
,
dataIndex
:
'
number
'
,
title
:
'
合同生效/失效时间
'
,
dataIndex
:
'
startTime
'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'
中标会员
'
,
dataIndex
:
'
member
Name'
,
title
:
'
合同乙方
'
,
dataIndex
:
'
partyB
Name'
,
align
:
'center'
,
},
{
title
:
'
中标通知时间
'
,
dataIndex
:
't
ime
'
,
title
:
'
合同总金额
'
,
dataIndex
:
't
otalAmount
'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
render
:
(
text
)
=>
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
},
{
title
:
'
中标金额
'
,
dataIndex
:
'
Price
'
,
title
:
'
对应单据/寻源类型
'
,
dataIndex
:
'
sourceNo
'
,
align
:
'center'
,
filters
:
[
{
text
:
'采购询价'
,
value
:
1
},
{
text
:
'采购招标'
,
value
:
2
},
{
text
:
'采购竞价'
,
value
:
3
},
],
render
:
(
text
,
record
)
=>
{
let
sourceTypeList
=
[
""
,
"采购询价"
,
"采购招标"
]
return
(
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
sourceTypeList
[
record
.
sourceType
]
}
</
p
>
</
div
>
)
}
},
{
title
:
'外部状态'
,
dataIndex
:
'
s
tatus'
,
dataIndex
:
'
outerS
tatus'
,
align
:
'center'
,
render
:
(
text
)
=>
{
let
title
:
any
=
[
{},
{
name
:
'已完成'
,
type
:
"success"
},
{
name
:
'未完成'
,
type
:
"primary"
},
]
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
,
record
)
=>
{
return
(
<
StatusTag
type=
{
title
[
text
].
type
}
title=
{
title
[
text
].
n
ame
}
/>
<
StatusTag
type=
"warning"
title=
{
record
.
outerStatusN
ame
}
/>
)
}
},
{
title
:
'内部状态'
,
dataIndex
:
'in
sides
tatus'
,
dataIndex
:
'in
nerS
tatus'
,
align
:
'center'
,
render
:
(
text
)
=>
{
let
title
:
any
=
[
{
},
{
name
:
'已完成'
,
type
:
"success"
}
,
{
name
:
'未完成'
,
type
:
"primary"
},
]
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
]
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
span
style=
{
statuStyle
.
point
}
>
</
span
>
<
span
>
{
title
[
text
].
n
ame
}
</
span
>
<
span
>
{
record
.
innerStatusN
ame
}
</
span
>
</
div
>
)
}
...
...
@@ -87,59 +126,25 @@ const Levelexamine = () => {
title
:
'操作'
,
dataIndex
:
'state'
,
align
:
'center'
,
render
:
(
record
)
=>
{
console
.
log
(
record
)
render
:
(
text
,
record
)
=>
{
return
(
<
span
style=
{
statuStyle
.
success
}
>
创建采购招标合同
</
span
>
<
div
>
<
span
style=
{
{
color
:
'#00B37A'
}
}
>
提交审核
</
span
>
</
div
>
)
}
}]
const
handleSubmitBatch
=
async
()
=>
{
}
const
controllerBtns
=
(
<
Space
>
<
Button
onClick=
{
handleSubmitBatch
}
>
批量审核通过
</
Button
>
</
Space
>
);
// 列表数据
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
return
new
Promise
((
resolve
,
reject
)
=>
{
let
data
=
{
totalCount
:
1
,
data
:
[
{
id
:
'1'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
},
{
id
:
'2'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
}
]
}
resolve
(
data
)
PublicApi
.
getContractManagePageToBeExamineStepOne
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
...
...
@@ -164,12 +169,12 @@ const Levelexamine = () => {
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
tableList
Schema
,
schema
:
examine
Schema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'
order
No'
,
'
contract
No'
,
FORM_FILTER_PATH
,
);
},
...
...
src/pages/contract/manage/purchase/index.tsx
View file @
0cfba7e9
import
React
,
{
useRef
}
from
'react'
import
React
,
{
useRef
,
useState
}
from
'react'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
}
from
'antd'
;
import
statuStyle
from
'../../common/colorTag'
...
...
@@ -6,76 +6,97 @@ import { ColumnType } from 'antd/lib/table/interface';
import
{
StandardTable
}
from
'god'
;
import
EyePreview
from
'@/components/EyePreview'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
tableListSchema
}
from
'../schema'
import
StatusTag
from
'@/components/StatusTag'
;
import
{
purchaseSchema
}
from
'../schema'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
import
{
history
}
from
'umi'
const
PurchaseList
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'需求单号/摘要'
,
dataIndex
:
'
No
'
,
dataIndex
:
'
demandNO
'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
url=
{
`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`
}
//
url={`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`}
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
name
}
</
p
>
<
p
>
{
record
.
demandAbstract
}
</
p
>
</
div
>
},
{
title
:
'
投标编号
'
,
dataIndex
:
'
number
'
,
title
:
'
需求发布时间
'
,
dataIndex
:
'
demandPublishTime
'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
},
{
title
:
'
中
标会员'
,
dataIndex
:
'
member
Name'
,
title
:
'
授
标会员'
,
dataIndex
:
'
award
Name'
,
align
:
'center'
,
},
{
title
:
'
中标通知
时间'
,
dataIndex
:
'
t
ime'
,
title
:
'
授标
时间'
,
dataIndex
:
'
awardT
ime'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
awardTime
-
b
.
awardTime
,
multiple
:
1
,
},
},
{
title
:
'
中
标金额'
,
dataIndex
:
'
Price
'
,
title
:
'
授
标金额'
,
dataIndex
:
'
awardAmount
'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
awardAmount
-
b
.
awardAmount
,
multiple
:
1
,
},
render
:
(
text
)
=>
{
return
(
<
div
>
¥
{
text
}
</
div
>
)
}
},
{
title
:
'外部状态'
,
dataIndex
:
'
s
tatus'
,
dataIndex
:
'
outerS
tatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
)
=>
{
let
title
:
any
=
[
{},
{
name
:
'已完成'
,
type
:
"success"
},
{
name
:
'未完成'
,
type
:
"primary"
},
]
return
(
<
StatusTag
type=
{
title
[
text
].
type
}
title=
{
title
[
text
].
name
}
/>
<
StatusTag
type=
"success"
title=
{
text
}
/>
)
}
},
{
title
:
'内部状态'
,
dataIndex
:
'in
sides
tatus'
,
dataIndex
:
'in
nerS
tatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
)
=>
{
let
title
:
any
=
[
{},
{
name
:
'已完成'
,
type
:
"success"
},
{
name
:
'未完成'
,
type
:
"primary"
},
]
return
(
<
div
>
<
span
style=
{
statuStyle
.
point
}
>
</
span
>
<
span
>
{
t
itle
[
text
].
name
}
</
span
>
<
span
>
{
t
ext
}
</
span
>
</
div
>
)
}
...
...
@@ -85,49 +106,30 @@ const PurchaseList = () => {
align
:
'center'
,
render
:
(
record
)
=>
{
return
(
<
span
style=
{
statuStyle
.
success
}
>
创建采购招标
合同
</
span
>
<
span
style=
{
{
color
:
'#00B37A'
}
}
onClick=
{
()
=>
history
.
push
(
'/memberCenter/contract/manage/add/addList/contracAdd'
)
}
>
创建采购询价
合同
</
span
>
)
}
}]
const
rowSelection
:
any
=
{
selectedRowKeys
:
selectedRowKeys
,
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
setSelectedRowKeys
(
selectedRowKeys
)
setSelectRow
(
selectedRows
)
}
};
// 列表数据
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
return
new
Promise
((
resolve
,
reject
)
=>
{
let
data
=
{
totalCount
:
1
,
data
:
[
{
id
:
'1'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
},
{
id
:
'2'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
}
]
}
resolve
(
data
)
PublicApi
.
getContractPurchaseInquiryPageToBeCreate
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
return
(
<
PageHeaderWrapper
>
<
Card
>
...
...
@@ -137,16 +139,17 @@ const PurchaseList = () => {
}
}
columns=
{
columns
}
currentRef=
{
ref
}
rowSelection=
{
rowSelection
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
tableList
Schema
,
schema
:
purchase
Schema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'
orderNo
'
,
'
demandNO
'
,
FORM_FILTER_PATH
,
);
},
...
...
src/pages/contract/manage/schema/index.ts
View file @
0cfba7e9
This diff is collapsed.
Click to expand it.
src/pages/contract/manage/secondaryexamine/index.tsx
View file @
0cfba7e9
import
React
,
{
useRef
,
useState
}
from
'react'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
,
Space
,
Button
}
from
'antd'
;
...
...
@@ -8,11 +7,12 @@ import { ColumnType } from 'antd/lib/table/interface';
import
{
StandardTable
}
from
'god'
;
import
EyePreview
from
'@/components/EyePreview'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
tableList
Schema
}
from
'../schema'
import
{
examine
Schema
}
from
'../schema'
import
StatusTag
from
'@/components/StatusTag'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
const
Secondaryexamine
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
...
...
@@ -20,66 +20,105 @@ const Secondaryexamine = () => {
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'
需求单
号/摘要'
,
dataIndex
:
'No'
,
title
:
'
合同编
号/摘要'
,
dataIndex
:
'
contract
No'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails
?contractId=${record.id}
`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
name
}
</
p
>
<
p
>
{
record
.
contractAbstract
}
</
p
>
</
div
>
},
{
title
:
'
投标编号
'
,
dataIndex
:
'
number
'
,
title
:
'
合同生效/失效时间
'
,
dataIndex
:
'
startTime
'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'
中标会员
'
,
dataIndex
:
'
member
Name'
,
title
:
'
合同乙方
'
,
dataIndex
:
'
partyB
Name'
,
align
:
'center'
,
},
{
title
:
'
中标通知时间
'
,
dataIndex
:
't
ime
'
,
title
:
'
合同总金额
'
,
dataIndex
:
't
otalAmount
'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
render
:
(
text
)
=>
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
},
{
title
:
'
中标金额
'
,
dataIndex
:
'
Price
'
,
title
:
'
对应单据/寻源类型
'
,
dataIndex
:
'
sourceNo
'
,
align
:
'center'
,
filters
:
[
{
text
:
'采购询价'
,
value
:
1
},
{
text
:
'采购招标'
,
value
:
2
},
{
text
:
'采购竞价'
,
value
:
3
},
],
render
:
(
text
,
record
)
=>
{
let
sourceTypeList
=
[
""
,
"采购询价"
,
"采购招标"
]
return
(
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
sourceTypeList
[
record
.
sourceType
]
}
</
p
>
</
div
>
)
}
},
{
title
:
'外部状态'
,
dataIndex
:
'
s
tatus'
,
dataIndex
:
'
outerS
tatus'
,
align
:
'center'
,
render
:
(
text
)
=>
{
let
title
:
any
=
[
{},
{
name
:
'已完成'
,
type
:
"success"
},
{
name
:
'未完成'
,
type
:
"primary"
},
]
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
,
record
)
=>
{
return
(
<
StatusTag
type=
{
title
[
text
].
type
}
title=
{
title
[
text
].
n
ame
}
/>
<
StatusTag
type=
"warning"
title=
{
record
.
outerStatusN
ame
}
/>
)
}
},
{
title
:
'内部状态'
,
dataIndex
:
'in
sides
tatus'
,
dataIndex
:
'in
nerS
tatus'
,
align
:
'center'
,
render
:
(
text
)
=>
{
let
title
:
any
=
[
{
},
{
name
:
'已完成'
,
type
:
"success"
}
,
{
name
:
'未完成'
,
type
:
"primary"
},
]
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
]
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
span
style=
{
statuStyle
.
point
}
>
</
span
>
<
span
>
{
title
[
text
].
n
ame
}
</
span
>
<
span
>
{
record
.
innerStatusN
ame
}
</
span
>
</
div
>
)
}
...
...
@@ -87,59 +126,25 @@ const Secondaryexamine = () => {
title
:
'操作'
,
dataIndex
:
'state'
,
align
:
'center'
,
render
:
(
record
)
=>
{
console
.
log
(
record
)
render
:
(
text
,
record
)
=>
{
return
(
<
span
style=
{
statuStyle
.
success
}
>
创建采购招标合同
</
span
>
<
div
>
<
span
style=
{
{
color
:
'#00B37A'
}
}
>
提交审核
</
span
>
</
div
>
)
}
}]
const
handleSubmitBatch
=
async
()
=>
{
}
const
controllerBtns
=
(
<
Space
>
<
Button
onClick=
{
handleSubmitBatch
}
>
批量审核通过
</
Button
>
</
Space
>
);
// 列表数据
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
return
new
Promise
((
resolve
,
reject
)
=>
{
let
data
=
{
totalCount
:
1
,
data
:
[
{
id
:
'1'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
},
{
id
:
'2'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
}
]
}
resolve
(
data
)
PublicApi
.
getContractManagePageToBeExamineStepTwo
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
...
...
@@ -164,12 +169,12 @@ const Secondaryexamine = () => {
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
tableList
Schema
,
schema
:
examine
Schema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'
order
No'
,
'
contract
No'
,
FORM_FILTER_PATH
,
);
},
...
...
src/pages/contract/manage/signacontract/index.tsx
View file @
0cfba7e9
import
React
,
{
useRef
}
from
'react'
import
React
,
{
useRef
,
useState
}
from
'react'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
}
from
'antd'
;
import
{
Card
,
Space
,
Button
}
from
'antd'
;
import
statuStyle
from
'../../common/colorTag'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
StandardTable
}
from
'god'
;
import
EyePreview
from
'@/components/EyePreview'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
tableList
Schema
}
from
'../schema'
import
{
examine
Schema
}
from
'../schema'
import
StatusTag
from
'@/components/StatusTag'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
const
Signacontract
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'
需求单
号/摘要'
,
dataIndex
:
'No'
,
title
:
'
合同编
号/摘要'
,
dataIndex
:
'
contract
No'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
url=
{
`/memberCenter/
payandSettle/capitalAccounts/accountLists/detail?i
d=${record.id}`
}
url=
{
`/memberCenter/
contract/manage/QueryList/QueryListdetails?contractI
d=${record.id}`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
name
}
</
p
>
<
p
>
{
record
.
contractAbstract
}
</
p
>
</
div
>
},
{
title
:
'
投标编号
'
,
dataIndex
:
'
number
'
,
title
:
'
合同生效/失效时间
'
,
dataIndex
:
'
startTime
'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'
中标会员
'
,
dataIndex
:
'
member
Name'
,
title
:
'
合同乙方
'
,
dataIndex
:
'
partyB
Name'
,
align
:
'center'
,
},
{
title
:
'
中标通知时间
'
,
dataIndex
:
't
ime
'
,
title
:
'
合同总金额
'
,
dataIndex
:
't
otalAmount
'
,
align
:
'center'
,
defaultSortOrder
:
'descend'
,
sorter
:
(
a
,
b
)
=>
a
.
age
-
b
.
age
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
},
render
:
(
text
)
=>
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
},
{
title
:
'
中标金额
'
,
dataIndex
:
'
Price
'
,
title
:
'
对应单据/寻源类型
'
,
dataIndex
:
'
sourceNo
'
,
align
:
'center'
,
filters
:
[
{
text
:
'采购询价'
,
value
:
1
},
{
text
:
'采购招标'
,
value
:
2
},
{
text
:
'采购竞价'
,
value
:
3
},
],
render
:
(
text
,
record
)
=>
{
let
sourceTypeList
=
[
""
,
"采购询价"
,
"采购招标"
]
return
(
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
sourceTypeList
[
record
.
sourceType
]
}
</
p
>
</
div
>
)
}
},
{
title
:
'外部状态'
,
dataIndex
:
'
s
tatus'
,
dataIndex
:
'
outerS
tatus'
,
align
:
'center'
,
render
:
(
text
)
=>
{
let
title
:
any
=
[
{},
{
name
:
'已完成'
,
type
:
"success"
},
{
name
:
'未完成'
,
type
:
"primary"
},
]
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
,
record
)
=>
{
return
(
<
StatusTag
type=
{
title
[
text
].
type
}
title=
{
title
[
text
].
n
ame
}
/>
<
StatusTag
type=
"warning"
title=
{
record
.
outerStatusN
ame
}
/>
)
}
},
{
title
:
'内部状态'
,
dataIndex
:
'in
sides
tatus'
,
dataIndex
:
'in
nerS
tatus'
,
align
:
'center'
,
render
:
(
text
)
=>
{
let
title
:
any
=
[
{
},
{
name
:
'已完成'
,
type
:
"success"
}
,
{
name
:
'未完成'
,
type
:
"primary"
},
]
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
]
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
span
style=
{
statuStyle
.
point
}
>
</
span
>
<
span
>
{
title
[
text
].
n
ame
}
</
span
>
<
span
>
{
record
.
innerStatusN
ame
}
</
span
>
</
div
>
)
}
...
...
@@ -87,82 +126,79 @@ const Signacontract = () => {
title
:
'操作'
,
dataIndex
:
'state'
,
align
:
'center'
,
render
:
(
record
)
=>
{
render
:
(
text
,
record
)
=>
{
return
(
<
span
style=
{
statuStyle
.
success
}
>
创建采购招标合同
</
span
>
<
div
>
<
span
style=
{
{
color
:
'#00B37A'
}
}
>
提交审核
</
span
>
</
div
>
)
}
}]
// 列表数据
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
return
new
Promise
((
resolve
,
reject
)
=>
{
let
data
=
{
totalCount
:
1
,
data
:
[
{
id
:
'1'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
},
{
id
:
'2'
,
No
:
'ZPTY12'
,
name
:
'进口头层黄牛皮荔枝纹'
,
number
:
'ZPTY12'
,
memberName
:
'温州龙昌手袋有限公司'
,
time
:
'2020-12-25 09:00'
,
Price
:
'¥50,000.00'
,
status
:
1
,
insidestatus
:
1
,
addText
:
'创建采购招标合同'
,
state
:
''
,
}
]
}
resolve
(
data
)
PublicApi
.
getContractManagePageToBeSign
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
const
rowSelection
:
any
=
{
selectedRowKeys
:
selectedRowKeys
,
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
setSelectedRowKeys
(
selectedRowKeys
)
setSelectRow
(
selectedRows
)
}
};
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
tableListSchema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'orderNo'
,
FORM_FILTER_PATH
,
);
},
components
:
{
DateRangePickerUnix
,
Submit
}
<
Card
>
<
StandardTable
fetchTableData=
{
params
=>
fetchData
(
params
)
}
rowSelection=
{
rowSelection
}
columns=
{
columns
}
currentRef=
{
ref
}
formilyLayouts=
{
{
justify
:
'space-between'
}
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
examineSchema
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'contractNo'
,
FORM_FILTER_PATH
,
);
},
components
:
{
DateRangePickerUnix
,
Submit
}
}
}
/>
</
Card
>
</
PageHeaderWrapper
>
},
layouts
:
{
order
:
2
,
span
:
24
}
}
}
formilyChilds=
{
{
children
:
<
Space
>
<
Button
>
批量提交审核
</
Button
>
</
Space
>,
layouts
:
{
span
:
8
}
}
}
/>
</
Card
>
)
}
...
...
src/pages/procurement/tender/addTender/components/relateProductDrawer/index.tsx
View file @
0cfba7e9
...
...
@@ -24,7 +24,7 @@ export interface RelateProductDrawerProps {
const
formActions
=
createFormActions
();
export
const
RelevanceTenderProduct
:
React
.
FC
<
RelateProductDrawerProps
>
=
({
export
const
RelevanceTenderProduct
:
React
.
FC
<
RelateProductDrawerProps
>
=
({
type
=
'checkbox'
,
title
,
schemaAction
,
...
...
@@ -34,7 +34,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
...
restProps
})
=>
{
const
{
visible
,
setVisible
}
=
useModalTable
({
type
,
customKey
:
'id'
})
const
{
visible
,
setVisible
}
=
useModalTable
({
type
,
customKey
:
'id'
})
const
[
childVisible
,
setChildVisible
]
=
useState
<
boolean
>
(
false
)
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 子级抽屉选择的行数据
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
...
...
@@ -49,7 +49,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
},
[])
// 注册virtual组件 一般用于布局
registerVirtualBox
(
"CustomLayout"
,
({
props
,
schema
})
=>
{
registerVirtualBox
(
"CustomLayout"
,
({
props
,
schema
})
=>
{
const
{
showStar
=
false
,
...
...
@@ -60,7 +60,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
return
(
<
div
style=
{
{
border
:
"1px solid #DAF2E7"
,
marginBottom
:
16
}
}
>
<
p
style=
{
{
paddingLeft
:
8
,
fontSize
:
12
,
backgroundColor
:
headerBackgroundColor
,
color
:
headerColor
}
}
>
{
props
[
'title'
]
}
<
span
style=
{
{
color
:
'red'
}
}
>
{
showStar
?
'*'
:
null
}
</
span
></
p
>
<
p
style=
{
{
paddingLeft
:
8
,
fontSize
:
12
,
backgroundColor
:
headerBackgroundColor
,
color
:
headerColor
}
}
>
{
props
[
'title'
]
}
<
span
style=
{
{
color
:
'red'
}
}
>
{
showStar
?
'*'
:
null
}
</
span
></
p
>
<
div
className=
{
style
[
'card-list'
]
}
>
{
whetherSelect
?
...
...
@@ -82,7 +82,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
</
Row
>
</
Col
>
</
Row
>
}
}
</
div
>
</
div
>
);
...
...
@@ -130,7 +130,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
// setVisible(false)
formActions
.
validate
().
then
((
res
)
=>
{
console
.
log
(
res
)
if
(
res
[
'errors'
][
'length'
]
===
0
)
{
if
(
res
[
'errors'
][
'length'
]
===
0
)
{
formActions
.
submit
(
v
=>
console
.
log
(
v
))
}
})
...
...
@@ -141,7 +141,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
textAlign
:
'right'
,
}
}
>
<
Button
onClick=
{
()
=>
setVisible
(
false
)
}
style=
{
{
marginRight
:
8
}
}
>
<
Button
onClick=
{
()
=>
setVisible
(
false
)
}
style=
{
{
marginRight
:
8
}
}
>
取消
</
Button
>
<
Button
onClick=
{
confirmSubmit
}
type=
"primary"
>
...
...
@@ -180,7 +180,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
dataIdList=
{
dataIdList
}
footer=
{
footer
}
onClose=
{
()
=>
setVisible
(
false
)
}
isForm
=
{
true
}
isForm
=
{
true
}
actions=
{
formActions
}
// effects={($, ctx) => {
// $('onFormMount').subscribe(() => {
...
...
@@ -201,7 +201,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
{
ctx
:
{
schema
:
productSearch
,
components
:
{
ModalSearch
:
Search
,
Submit
}
,
components
:
{
ModalSearch
:
Search
,
Submit
},
effects
:
(
$
,
actions
)
=>
{
actions
.
reset
()
useStateFilterSearchLinkageEffect
(
...
...
src/services/api.ts
View file @
0cfba7e9
...
...
@@ -12,6 +12,7 @@ import * as AfterService from './AfterServiceApi'
import
*
as
EnhanceApi
from
'./EnhanceApi'
;
import
*
as
ReportApi
from
'./ReportApi'
;
import
*
as
PurchaseApi
from
'./PurchaseApi'
;
import
*
as
ContractApi
from
'./ContractApi'
;
/**
* 可在这里写入自定义的接口
...
...
@@ -36,4 +37,5 @@ export const PublicApi = {
...
EnhanceApi
,
...
ReportApi
,
...
PurchaseApi
,
...
ContractApi
}
ytt.config.ts
View file @
0cfba7e9
...
...
@@ -13,6 +13,7 @@ const tokenList = [
{
name
:
'Enhance'
,
token
:
'594a7e7ff17f6f40fb9fb726c1da9a3f282a926a8d386eb6cbfd668a3f75f251'
,
categoryIds
:
[
0
],
},
// 加工服务
{
name
:
'Report'
,
token
:
'69ee5a79363c763ded1a2eb42952a5181ffcdfc5ffb93b6e1e22ac92a25b38bf'
,
categoryIds
:
[
0
],
},
// 报表服务
{
name
:
'Purchase'
,
token
:
'425043481f605f76064951c72d26c412e5ba1baf2d70158300f560ef58358f41'
,
categoryIds
:
[
0
],
},
// 采购服务
{
name
:
'Contract'
,
token
:
'b376fc4757c974c0d0c635881b732d97062e3ad41d6f00a003d1e249c91789cf'
,
categoryIds
:
[
0
],
}
// 合同能力
// { name: 'Purchase', token: 'a09e2b66e00079df9881fc660eb17db0265e33362c13f03f2003ba81d26f49d8', categoryIds: [0], }, // 采购服务
]
...
...
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