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
fbd5e49e
Commit
fbd5e49e
authored
Apr 22, 2021
by
alwayOnlie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
合同bug
parent
8ab10058
Show whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
1178 additions
and
345 deletions
+1178
-345
contracRoute.ts
config/routes/contracRoute.ts
+16
-0
index.tsx
...ontract/contractexecution/contractexecutionList/index.tsx
+83
-48
index.tsx
src/pages/contract/contractexecution/details/index.tsx
+161
-129
index.ts
src/pages/contract/contractexecution/schema/index.ts
+15
-43
index.tsx
src/pages/contract/coordination/implement/index.tsx
+3
-6
index.ts
src/pages/contract/coordination/schema/index.ts
+4
-22
add.tsx
src/pages/contract/funds/addbill/add.tsx
+7
-4
info.tsx
src/pages/contract/funds/addbill/components/info.tsx
+6
-1
table.tsx
src/pages/contract/funds/addbill/components/table.tsx
+3
-3
index.tsx
src/pages/contract/funds/addbill/index.tsx
+1
-1
index.tsx
src/pages/contract/funds/levelpayment/index.tsx
+232
-0
index.tsx
src/pages/contract/funds/secondpayment/index.tsx
+232
-0
index.tsx
src/pages/contract/funds/submitpayment/index.tsx
+232
-0
index.tsx
src/pages/contract/manage/QueryList/index.tsx
+41
-9
addList.tsx
src/pages/contract/manage/add/addList.tsx
+19
-19
FormList.tsx
src/pages/contract/manage/add/components/FormList.tsx
+11
-4
information.tsx
src/pages/contract/manage/add/components/information.tsx
+1
-1
index.css
src/pages/contract/manage/details/index.css
+1
-0
index.less
src/pages/contract/manage/details/index.less
+1
-0
index.tsx
src/pages/contract/manage/details/index.tsx
+77
-5
index.tsx
src/pages/contract/manage/examine/index.tsx
+12
-23
index.tsx
src/pages/contract/manage/levelexamine/index.tsx
+11
-22
index.tsx
src/pages/contract/manage/purchase/index.tsx
+5
-2
index.ts
src/pages/contract/manage/schema/index.ts
+1
-1
index.tsx
src/pages/contract/manage/signacontract/index.tsx
+1
-1
index.tsx
src/pages/contract/template/addContract/index.tsx
+2
-1
No files found.
config/routes/contracRoute.ts
View file @
fbd5e49e
...
...
@@ -200,6 +200,22 @@ const contracRoute = {
hideInMenu
:
true
,
component
:
'@/pages/contract/funds/details'
,
},
{
path
:
'/memberCenter/contract/funds/levelpayment'
,
name
:
'待审核合同(一级)'
,
component
:
'@/pages/contract/funds/levelpayment'
,
},
{
path
:
'/memberCenter/contract/funds/secondpayment'
,
name
:
'待审核合同(二级)'
,
component
:
'@/pages/contract/funds/secondpayment'
,
},
{
path
:
'/memberCenter/contract/funds/submitpayment'
,
name
:
'待提交请款单'
,
component
:
'@/pages/contract/funds/submitpayment'
,
},
],
},
/* 合同协同 */
...
...
src/pages/contract/contractexecution/contractexecutionList/index.tsx
View file @
fbd5e49e
...
...
@@ -12,107 +12,138 @@ 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
moment
from
'moment'
;
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
{
PublicApi
}
from
'@/services/api'
const
contractexecutionList
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'合同编号/摘要'
,
dataIndex
:
'No'
,
dataIndex
:
'
contract
No'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/contractexecution/contractexecutionList/details?
i
d=${record.id}`
}
url=
{
`/memberCenter/contract/contractexecution/contractexecutionList/details?
contractI
d=${record.id}`
}
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
name
}
</
p
>
<
p
>
{
record
.
contractAbstract
}
</
p
>
</
div
>
},
{
title
:
'合同生效/失效时间'
,
dataIndex
:
'
number
'
,
dataIndex
:
'
startTime
'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'合同乙方'
,
dataIndex
:
'
member
Name'
,
dataIndex
:
'
partyB
Name'
,
align
:
'center'
,
},
{
title
:
'合同总金额'
,
dataIndex
:
't
ime
'
,
dataIndex
:
't
otalAmount
'
,
align
:
'center'
,
defaultSortOrder
:
'descend'
,
sorter
:
(
a
,
b
)
=>
a
.
age
-
b
.
age
,
sorter
:
(
a
,
b
)
=>
a
.
totalAmount
-
b
.
totalAmount
,
render
:
(
text
)
=>
{
return
(
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
)
}
},
{
title
:
'已执行金额'
,
dataIndex
:
'
Price
'
,
dataIndex
:
'
executeAmount
'
,
align
:
'center'
,
render
:
(
text
)
=>
{
return
(
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
)
}
},
{
title
:
'已付款'
,
dataIndex
:
'
Price
'
,
dataIndex
:
'
payAmount
'
,
align
:
'center'
,
render
:
(
text
)
=>
{
return
(
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
)
}
},
{
title
:
'已请款待付款'
,
dataIndex
:
'
Price
'
,
dataIndex
:
'
unPayApplyAmount
'
,
align
:
'center'
,
render
:
(
text
)
=>
{
return
(
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
)
}
},
{
title
:
'未请款'
,
dataIndex
:
'
Price
'
,
dataIndex
:
'
unApplyAmount
'
,
align
:
'center'
,
render
:
(
text
)
=>
{
return
(
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
)
}
},
{
title
:
'外部状态'
,
dataIndex
:
'
stat
e'
,
dataIndex
:
'
outerStatusNam
e'
,
align
:
'center'
,
render
:
(
record
)
=>
{
render
:
(
text
)
=>
{
return
(
<
span
style=
{
statuStyle
.
success
}
>
已完成签约
</
span
>
<
span
style=
{
statuStyle
.
success
}
>
{
text
}
</
span
>
)
}
}]
const
fetchOptions
=
(
service
)
=>
{
return
async
function
()
{
const
res
=
await
service
();
if
(
res
.
code
===
1000
)
{
return
res
.
data
.
map
((
item
)
=>
{
return
{
label
:
item
.
name
,
value
:
item
.
status
}
})
}
return
[];
}
}
// 列表数据
const
fetchData
=
(
params
?:
any
)
=>
{
params
.
status
=
params
.
status
?
params
.
status
:
0
;
params
.
startTime
=
params
.
startTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
params
.
endTime
=
params
.
endTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
params
.
outerStatus
=
params
.
outerStatus
?
params
.
outerStatus
:
0
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
.
getContractExecutePageListByPartyA
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
return
(
...
...
@@ -133,9 +164,13 @@ const contractexecutionList = () => {
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'
order
No'
,
'
contract
No'
,
FORM_FILTER_PATH
,
);
useAsyncSelect
(
"outerStatus"
,
fetchOptions
(
PublicApi
.
getContractExecuteGetOuterStatusList
)
)
},
components
:
{
DateRangePickerUnix
,
...
...
src/pages/contract/contractexecution/details/index.tsx
View file @
fbd5e49e
import
React
,
{
useEffect
,
useState
,
useRef
}
from
'react'
;
import
{
Anchor
,
Row
,
Col
,
Table
,
Input
,
Button
,
Modal
,
Select
}
from
'antd'
;
import
{
Anchor
,
Row
,
Col
,
Table
,
Input
,
Space
,
Typography
,
Button
,
Modal
,
Select
}
from
'antd'
;
import
style
from
'./index.less'
;
import
{
ArrowLeftOutlined
}
from
'@ant-design/icons'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
StandardTable
}
from
'god'
;
import
DrawerTable
from
'@/components/DrawerTable'
import
Search
from
'@/components/NiceForm/components/Search'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
{
PublicApi
}
from
'@/services/api'
;
const
Option
=
Select
.
Option
;
const
{
Link
}
=
Anchor
;
const
{
Text
}
=
Typography
;
const
activeAnchorClassName
=
'ant-anchor-link-active'
const
Details
=
(
props
:
any
)
=>
{
const
ref
=
useRef
({});
const
[
currLink
,
setCurrLink
]
=
useState
(
activeAnchorClassName
)
const
[
isModalVisible
,
setIsModalVisible
]
=
useState
(
false
);
const
{
location
:
{
query
:
{
contractId
}
}
}
=
props
;
const
[
visible
,
setVisible
]
=
useState
(
false
)
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 抽屉选择的行数据
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
/**
* 渲染信息
* @param basics 基础信息
* @param payPlanList 付款计划
*
*/
/** 基本信息 */
const
[
basicInfo
,
setbasicInfo
]
=
useState
<
any
>
({
col1
:
[],
col2
:
[],
col3
:
[]
})
const
[
payPlanList
,
setpayPlanList
]
=
useState
<
any
>
([])
const
[
data
,
setdata
]
=
useState
<
any
>
([])
const
[
tabPane
]
=
useState
([
{
id
:
'process'
,
title
:
'基本流程'
},
{
id
:
'conditions'
,
title
:
'付款计划'
},
...
...
@@ -27,7 +42,62 @@ const Details = (props: any) => {
{
id
:
'record'
,
title
:
'请款统计'
},
])
const
[
targetOffset
,
setTargetOffset
]
=
useState
<
number
|
undefined
>
(
undefined
);
/* 执行情况分页 */
const
getContracInfoList
=
(
data
)
=>
{
PublicApi
.
getContractExecutePageExecuteInfoList
(
data
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
console
.
log
(
res
.
data
)
// setdata(res.data)
}
else
{
}
})
}
/* 获取详情的数据 */
const
getDetail
=
()
=>
{
// /contract/execute / getDetail
console
.
log
(
contractId
)
PublicApi
.
getContractExecuteGetDetail
({
contractId
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
let
{
basics
,
payPlanList
}
=
res
.
data
const
basicInfo
=
{
col1
:
[
{
label
:
'合同编号:'
,
extra
:
basics
.
contractNo
?
basics
.
contractNo
:
''
},
{
label
:
'合同摘要:'
,
extra
:
basics
.
contractAbstract
?
basics
.
contractAbstract
:
''
},
{
label
:
'外部状态:'
,
extra
:
basics
.
outerStatusName
?
basics
.
outerStatusName
:
''
},
],
col2
:
[
{
label
:
'寻源类型:'
,
extra
:
basics
.
sourceTypeName
?
basics
.
sourceTypeName
:
''
},
{
label
:
'对应单据:'
,
extra
:
basics
.
sourceNo
?
basics
.
sourceNo
:
''
},
{
label
:
'合同乙方:'
,
extra
:
basics
.
partyAName
?
basics
.
partyAName
:
''
},
],
col3
:
[
{
label
:
'合同金额:'
,
extra
:
basics
.
totalAmount
?
`¥
${
basics
.
totalAmount
}
`
:
''
},
{
label
:
'合同有效期:'
,
extra
:
`
${
basics
.
startTime
}
至
${
basics
.
endTime
}
`
},
],
}
const
data
=
{
contractId
,
orderNo
:
basics
.
sourceNo
?
basics
.
sourceNo
:
''
,
orderAbstract
:
basics
.
contractAbstract
,
startTime
:
basics
.
startTime
,
endTime
:
basics
.
endTime
,
current
:
1
,
pageSize
:
5
,
}
console
.
log
(
data
)
getContracInfoList
(
data
)
setpayPlanList
(
payPlanList
)
setbasicInfo
(
basicInfo
)
}
})
}
useEffect
(()
=>
{
getDetail
()
setTargetOffset
(
window
.
innerHeight
/
4
);
},
[]);
const
handleAnchorClick
=
(
e
)
=>
{
...
...
@@ -40,36 +110,49 @@ const Details = (props: any) => {
setCurrLink
(
activeAnchorClassName
)
}
};
/** 基本信息 */
const
basicInfo
=
{
col1
:
[
{
label
:
'合同编号:'
,
extra
:
'SPTY12'
},
{
label
:
'合同摘要:'
,
extra
:
'待提交采购需求单'
},
{
label
:
'外部状态:'
,
extra
:
'待审核采购需求单(一级)'
},
{
label
:
'内部状态:'
,
extra
:
'2020-12-25 09:00'
},
],
col2
:
[
{
label
:
'寻源类型:'
,
extra
:
'进口头层黄牛皮荔枝纹'
},
{
label
:
'对应单据:'
,
extra
:
'协议采购'
},
{
label
:
'授标会员:'
,
extra
:
'非密封补价'
},
{
label
:
'授标金额'
,
extra
:
'温州龙昌手袋有限公司'
},
],
col3
:
[
{
label
:
'合同有效期:'
,
extra
:
'2020-08-25 至 2020-10-25'
},
],
}
const
columns
:
any
=
[
{
title
:
'物料编号/名称'
,
dataIndex
:
'name'
,
key
:
'name'
,
align
:
'center'
,
},
{
title
:
'规格型号'
,
dataIndex
:
'age'
,
key
:
'age'
,
align
:
'center'
,
},
{
title
:
'品类'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'品牌'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'单位'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'采购数量'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'含税'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'税率'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'单价(含税)'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'授标数量'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'金额(不含税)'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'单据号/摘要'
,
dataIndex
:
'name'
,
key
:
'name'
,
align
:
'center'
,
},
{
title
:
'单据类型'
,
dataIndex
:
'age'
,
key
:
'age'
,
align
:
'center'
,
},
{
title
:
'单据状态'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'单据时间'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
title
:
(
<
Space
direction=
'vertical'
>
<
Text
>
单据金额
</
Text
>
<
Text
>
合计: ¥156.000.00
</
Text
>
</
Space
>
),
},
{
title
:
'含税/税率'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
title
:
(
<
Space
direction=
'vertical'
>
<
Text
>
已付款
</
Text
>
<
Text
>
合计: ¥156.000.00
</
Text
>
</
Space
>
),
},
{
title
:
(
<
Space
direction=
'vertical'
>
<
Text
>
已请款待付款
</
Text
>
<
Text
>
合计: ¥156.000.00
</
Text
>
</
Space
>
),
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
(
<
Space
direction=
'vertical'
>
<
Text
>
待请款
</
Text
>
<
Text
>
合计: ¥156.000.00
</
Text
>
</
Space
>
),
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'操作'
,
dataIndex
:
'type'
,
align
:
'center'
,
key
:
'x'
,
render
:
(
text
)
=>
{
...
...
@@ -85,57 +168,17 @@ const Details = (props: any) => {
];
/* 明细 */
const
columnsList
:
any
=
[
{
title
:
'请款
单号/摘要
'
,
dataIndex
:
'name'
,
key
:
'name'
,
align
:
'center'
,
},
{
title
:
'
状态
'
,
dataIndex
:
'age'
,
key
:
'age'
,
align
:
'center'
,
},
{
title
:
'请款
次数
'
,
dataIndex
:
'name'
,
key
:
'name'
,
align
:
'center'
,
},
{
title
:
'
请款单号/摘要
'
,
dataIndex
:
'age'
,
key
:
'age'
,
align
:
'center'
,
},
{
title
:
'请款时间'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'请款金额'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'付款时间'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'付款金额'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
{
title
:
'付款方式'
,
dataIndex
:
'address'
,
key
:
'address'
,
align
:
'center'
,
},
];
const
data
=
[
{
key
:
1
,
name
:
'John Brown'
,
age
:
32
,
address
:
'New York No. 1 Lake Park'
,
description
:
'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.'
,
type
:
1
,
},
{
key
:
2
,
name
:
'Jim Green'
,
age
:
42
,
type
:
0
,
address
:
'London No. 1 Lake Park'
,
description
:
'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.'
,
},
{
type
:
1
,
key
:
3
,
name
:
'Not Expandable'
,
age
:
29
,
address
:
'Jiangsu No. 1 Lake Park'
,
description
:
'This not expandable'
,
},
{
type
:
1
,
key
:
4
,
name
:
'Joe Black'
,
age
:
32
,
address
:
'Sidney No. 1 Lake Park'
,
description
:
'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.'
,
},
];
const
list
=
[
{
proportion
:
'30%'
,
label
:
'付款比例'
,
Price
:
'¥48,000.00'
,
items
:
[{
label
:
'付款阶段:'
,
text
:
'合同预付款'
},
{
label
:
'预计付款时间::'
,
text
:
'2020-08-25'
},
{
label
:
'付款方式:'
,
text
:
'现结'
}]
},
{
proportion
:
'30%'
,
label
:
'付款比例'
,
Price
:
'¥48,000.00'
,
items
:
[{
label
:
'付款阶段:'
,
text
:
'合同预付款'
},
{
label
:
'预计付款时间::'
,
text
:
'2020-08-25'
},
{
label
:
'付款方式:'
,
text
:
'现结'
}]
},
{
proportion
:
'30%'
,
label
:
'付款比例'
,
Price
:
'¥48,000.00'
,
items
:
[{
label
:
'付款阶段:'
,
text
:
'合同预付款'
},
{
label
:
'预计付款时间::'
,
text
:
'2020-08-25'
},
{
label
:
'付款方式:'
,
text
:
'现结'
}]
},
{
proportion
:
'30%'
,
label
:
'付款比例'
,
Price
:
'¥48,000.00'
,
items
:
[{
label
:
'付款阶段:'
,
text
:
'合同预付款'
},
{
label
:
'预计付款时间::'
,
text
:
'2020-08-25'
},
{
label
:
'付款方式:'
,
text
:
'现结'
}]
},
{
proportion
:
'30%'
,
label
:
'付款比例'
,
Price
:
'¥48,000.00'
,
items
:
[{
label
:
'付款阶段:'
,
text
:
'合同预付款'
},
{
label
:
'预计付款时间::'
,
text
:
'2020-08-25'
},
{
label
:
'付款方式:'
,
text
:
'现结'
}]
}
]
const
handleCancel
=
(
text
)
=>
{
const
handleCancel
=
(
text
)
=>
{
setIsModalVisible
(
!
isModalVisible
);
}
...
...
@@ -151,11 +194,17 @@ const Details = (props: any) => {
const
fetchData
=
(
params
:
any
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
let
list
=
{
code
:
1000
,
data
:
data
,
PublicApi
.
getContractExecutePageListForSummaryByPartyA
({
...
params
,
contractId
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
console
.
log
(
res
.
data
)
// setdata(res.data)
}
else
{
}
resolve
(
list
)
}
)
})
}
const
onConfirm
=
()
=>
{
...
...
@@ -219,7 +268,7 @@ const Details = (props: any) => {
<
Col
span=
{
8
}
>
{
basicInfo
.
col1
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
div
className=
{
style
.
list
}
key=
{
`col1_${index + 1}`
}
>
<
h5
className=
{
style
.
listLable
}
>
{
item
.
label
}
:
</
h5
>
<
h5
className=
{
style
.
listLable
}
>
{
item
.
label
}
</
h5
>
<
h5
className=
{
style
.
listContent
}
>
{
item
.
extra
}
</
h5
>
</
div
>
))
}
...
...
@@ -227,7 +276,7 @@ const Details = (props: any) => {
<
Col
span=
{
8
}
>
{
basicInfo
.
col2
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
div
className=
{
style
.
list
}
key=
{
`col2_${index + 1}`
}
>
<
h5
className=
{
style
.
listLable
}
>
{
item
.
label
}
:
</
h5
>
<
h5
className=
{
style
.
listLable
}
>
{
item
.
label
}
</
h5
>
<
h5
className=
{
style
.
listContent
}
>
{
item
.
extra
}
</
h5
>
</
div
>
))
}
...
...
@@ -235,7 +284,7 @@ const Details = (props: any) => {
<
Col
span=
{
8
}
>
{
basicInfo
.
col3
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
div
className=
{
style
.
list
}
key=
{
`col3_${index + 1}`
}
>
<
h5
className=
{
style
.
listLable
}
>
{
item
.
label
}
:
</
h5
>
<
h5
className=
{
style
.
listLable
}
>
{
item
.
label
}
</
h5
>
<
h5
className=
{
style
.
listContent
}
>
{
item
.
extra
}
</
h5
>
</
div
>
))
}
...
...
@@ -256,22 +305,28 @@ const Details = (props: any) => {
<
Row
gutter=
{
[
8
,
8
]
}
>
<
div
className=
{
style
.
warp
}
>
{
list
.
map
((
item
:
any
)
=>
{
const
itemsList
=
item
.
items
;
payPlanList
.
map
((
item
:
any
,
index
:
number
)
=>
{
return
(
<
div
className=
{
style
.
warp_item
}
>
<
div
className=
{
style
.
title
}
>
{
item
.
label
}
</
div
>
<
div
className=
{
style
.
proportion
}
>
{
item
.
proportion
}
</
div
>
<
div
className=
{
style
.
Price
}
>
{
item
.
Price
}
</
div
>
<
div
className=
{
style
.
warp_item
}
key=
{
index
}
>
<
div
className=
{
style
.
title
}
>
付款比例
</
div
>
<
div
className=
{
style
.
proportion
}
>
{
item
.
payRatio
}
%
</
div
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'space-between'
,
alignItems
:
'center'
}
}
>
<
div
className=
{
style
.
Price
}
>
¥
{
item
.
payAmount
}
</
div
>
<
div
style=
{
{
cursor
:
'pointer'
,
fontSize
:
12
,
backgroundColor
:
'#00B37A'
,
color
:
'#fff'
,
padding
:
'4px 8px'
}
}
>
请款
</
div
>
</
div
>
<
div
className=
{
style
.
warp_List
}
>
{
itemsList
.
map
((
items
:
any
)
=>
(
<
div
className=
{
style
.
warp_ListItem
}
>
<
div
className=
{
style
.
label
}
>
{
items
.
label
}
</
div
>
<
div
className=
{
style
.
text
}
>
{
items
.
text
}
</
div
>
<
div
className=
{
style
.
label
}
>
付款阶段
</
div
>
<
div
className=
{
style
.
text
}
>
{
item
.
payStage
}
</
div
>
</
div
>
<
div
className=
{
style
.
warp_ListItem
}
>
<
div
className=
{
style
.
label
}
>
预计付款时间:
</
div
>
<
div
className=
{
style
.
text
}
>
{
item
.
expectPayTime
}
</
div
>
</
div
>
<
div
className=
{
style
.
warp_ListItem
}
>
<
div
className=
{
style
.
label
}
>
付款方式:
</
div
>
<
div
className=
{
style
.
text
}
>
{
item
.
payWayName
}
</
div
>
</
div
>
))
}
</
div
>
</
div
>
)
...
...
@@ -286,7 +341,7 @@ const Details = (props: any) => {
<
div
className=
'ant-card-head'
>
<
div
className=
'ant-card-head-wrapper'
style=
{
{
display
:
'flex'
,
justifyContent
:
'space-between'
}
}
>
<
div
className=
'ant-card-head-wrapper'
>
采购材料
执行情况
</
div
>
<
div
>
<
Input
.
Search
...
...
@@ -319,42 +374,19 @@ const Details = (props: any) => {
</
div
>
</
div
>
<
div
className=
'ant-card-body'
>
<
Table
columns=
{
columns
}
dataSource=
{
data
}
style=
{
{
width
:
"100%"
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
currentRef=
{
ref
}
columns=
{
columnsList
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
/>
</
div
>
</
div
>
</
div
>
{
/* 模态框 */
}
<
Modal
title=
'选择付款阶段'
visible=
{
isModalVisible
}
onOk=
{
handleCancel
}
onCancel=
{
handleCancel
}
>
<
div
style=
{
{
width
:
'100%'
}
}
>
<
p
style=
{
{
color
:
'#909399'
}
}
>
选择付款阶段
<
span
style=
{
{
color
:
'red'
}
}
>
*
</
span
></
p
>
<
Select
placeholder=
"请选择"
style=
{
{
width
:
470
}
}
>
<
Option
key=
"1"
value=
"哈哈"
>
哈哈
</
Option
>
<
Option
key=
"1"
value=
"哈哈"
>
哈哈
</
Option
>
</
Select
>
</
div
>
</
Modal
>
{
/* 查看明细 */
}
<
DrawerTable
drawerTitle=
'付款明细'
confirm=
{
onConfirm
}
cancel=
{
()
=>
setVisible
(
false
)
}
visible=
{
visible
}
columns=
{
columnsList
}
rowSelection=
{
rowSelection
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
tableProps=
{
{
rowKey
:
'id'
,
}
}
/>
</
div
>
)
}
...
...
src/pages/contract/contractexecution/schema/index.ts
View file @
fbd5e49e
...
...
@@ -8,12 +8,12 @@ import { OrderTypeMap, PurchaseOrderInsideWorkStateTexts, PurchaseOrderOutWorkSt
export
const
tableListSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
order
No
:
{
contract
No
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入
订单
编号'
,
align
:
'
flex-end
'
,
placeholder
:
'请输入
合同
编号'
,
align
:
'
start
'
,
},
},
[
FORM_FILTER_PATH
]:
{
...
...
@@ -26,54 +26,26 @@ export const tableListSchema: ISchema = {
}
},
properties
:
{
orderThe
:
{
contractAbstract
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入
订单
摘要'
,
placeholder
:
'请输入
合同
摘要'
,
}
},
"memberName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入采购会员名称'
}
},
"type"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
},
enum
:
Object
.
keys
(
OrderTypeMap
).
map
(
item
=>
({
label
:
OrderTypeMap
[
item
],
value
:
item
,
}))
},
// "externalState": {
// type: 'string',
// "x-component-props": {
// placeholder: '请选择外部状态'
// },
// enum: Object.keys(PurchaseOrderOutWorkStateTexts).map(item => ({
// label: PurchaseOrderOutWorkStateTexts[item],
// value: item,
// }))
// },
// "interiorState": {
// type: 'string',
// "x-component-props": {
// placeholder: '请选择内部状态'
// },
// enum: Object.keys(PurchaseOrderInsideWorkStateTexts).map(item => ({
// label: PurchaseOrderInsideWorkStateTexts[item],
// value: item,
// }))
// },
"[startCreateTime,endCreateTime]"
:
{
"[startTime,endTime]"
:
{
type
:
'array'
,
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
outerStatus
:
{
type
:
'string'
,
enum
:
[],
"x-component-props"
:
{
placeholder
:
'请选择外部状态'
},
title
:
'请选择外部状态'
,
},
submit
:
{
'x-component'
:
'Submit'
,
...
...
src/pages/contract/coordination/implement/index.tsx
View file @
fbd5e49e
...
...
@@ -99,7 +99,7 @@ const Sign = () => {
</
div
>
},
{
title
:
'外部状态'
,
title
:
'外部状态
1
'
,
dataIndex
:
'outerStatusName'
,
align
:
'center'
,
render
:
(
text
)
=>
{
...
...
@@ -171,12 +171,9 @@ const Sign = () => {
);
useAsyncSelect
(
"outerStatus"
,
fetchOptions
(
PublicApi
.
getContractCoordinationGetOuterStatusList
)
)
useAsyncSelect
(
"innerStatus"
,
fetchOptions
(
PublicApi
.
getContractCoordinationGetInnerStatusList
)
fetchOptions
(
PublicApi
.
getContractExecuteGetOuterStatusList
)
)
},
components
:
{
DateRangePickerUnix
,
...
...
src/pages/contract/coordination/schema/index.ts
View file @
fbd5e49e
...
...
@@ -6,7 +6,7 @@ import { OrderTypeMap, PurchaseOrderInsideWorkStateTexts, PurchaseOrderOutWorkSt
* 请款
*/
export
const
CoordinationSchema
:
any
=
{
export
const
CoordinationSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
contractNo
:
{
...
...
@@ -27,16 +27,10 @@ export const CoordinationSchema: any = {
}
},
properties
:
{
"contractAbstract"
:
{
contractAbstract
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入合同摘要'
}
},
"partyAName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入合同甲方'
'x-component-props'
:
{
placeholder
:
'请输入合同摘要'
,
}
},
"[startTime,endTime]"
:
{
...
...
@@ -44,12 +38,8 @@ export const CoordinationSchema: any = {
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
disabledDate
:
current
=>
{
// return current && current < moment().startOf('day')
}
},
},
outerStatus
:
{
type
:
'string'
,
enum
:
[],
...
...
@@ -58,14 +48,6 @@ export const CoordinationSchema: any = {
},
title
:
'请选择外部状态'
,
},
innerStatus
:
{
type
:
'string'
,
enum
:
[],
"x-component-props"
:
{
placeholder
:
'请选择内部状态'
},
title
:
'请选择外部状态'
,
},
submit
:
{
'x-component'
:
'Submit'
,
'x-component-props'
:
{
...
...
src/pages/contract/funds/addbill/add.tsx
View file @
fbd5e49e
...
...
@@ -17,11 +17,14 @@ const { TabPane } = Tabs;
const
Add
:
React
.
FC
<
{}
>
=
()
=>
{
const
currentBasic
=
useRef
<
any
>
({});
const
[
basic
,
setbasic
]
=
useState
<
any
>
({});
const
[
flag
,
setflag
]
=
useState
<
any
>
(
false
)
const
[
flag
,
setflag
]
=
useState
<
any
>
(
false
);
const
[
id
,
setid
]
=
useState
(
''
);
/* 判断是不是手工单 */
const
getflag
=
(
flag
)
=>
{
setflag
(
flag
)
const
getflag
=
(
data
)
=>
{
setflag
(
data
.
flag
)
setid
(
data
.
selectRow
.
id
)
console
.
log
(
data
)
}
const
TabList
=
[
{
...
...
@@ -31,7 +34,7 @@ const Add: React.FC<{}> = () => {
getcontractId=
{
getflag
}
/>
},
{
name
:
'
采购物料'
,
components
:
<
InfoTable
flag=
{
flag
}
/>
},
{
name
:
'
请款明细'
,
components
:
<
InfoTable
flag=
{
flag
}
id=
{
id
}
/>
},
]
const
submit
=
async
()
=>
{
const
basicsVO
=
await
currentBasic
.
current
.
get
();
...
...
src/pages/contract/funds/addbill/components/info.tsx
View file @
fbd5e49e
...
...
@@ -92,6 +92,10 @@ const AddInfo = (props: any) => {
title
:
'合同剩余金额'
,
dataIndex
:
'totalAmount'
,
align
:
'center'
,
render
:
(
text
)
=>
<
div
>
<
p
>
¥
{
text
}
</
p
>
</
div
>
},
{
title
:
'对应单据/寻源类型'
,
...
...
@@ -136,7 +140,7 @@ const AddInfo = (props: any) => {
// basicsData.applyAmount = res.data.payPlanList[0].applyAmount;
setpayPlanList
(
res
.
data
.
payPlanList
)
setInfo
(
info
)
getcontractId
(
true
)
getcontractId
(
{
flag
:
true
,
selectRow
}
)
const
auth
=
JSON
.
parse
(
localStorage
.
getItem
(
'auth'
));
setaccount
(
auth
.
account
);
setBasics
(
basicsData
)
...
...
@@ -388,6 +392,7 @@ const AddInfo = (props: any) => {
tableProps=
{
{
rowKey
:
'id'
,
}
}
rowKey=
"id"
columns=
{
columnsList
}
currentRef=
{
refs
}
rowSelection=
{
rowSelection
}
...
...
src/pages/contract/funds/addbill/components/table.tsx
View file @
fbd5e49e
...
...
@@ -18,7 +18,7 @@ import { PublicApi } from '@/services/api';
const
{
Text
}
=
Typography
;
const
table
=
(
props
:
any
)
=>
{
const
{
flag
}
=
props
;
const
{
flag
,
id
}
=
props
;
const
refs
=
useRef
({});
const
[
visible
,
setvisible
]
=
useState
<
boolean
>
(
false
);
const
[
rowSelection
,
RowCtl
]
=
useRowSelectionTable
({
customKey
:
'id'
,
type
:
'radio'
});
...
...
@@ -105,9 +105,9 @@ const table = (props: any) => {
* @function fetchData 请求表格数据
**/
const
fetchData
=
(
params
:
any
)
=>
{
params
.
applyId
=
0
;
params
.
contractId
=
id
;
return
new
Promise
(
resolve
=>
{
PublicApi
.
getContractApplyAmount
PageDetail
List
({
...
params
}).
then
(
res
=>
{
PublicApi
.
getContractApplyAmount
ContractOrderPage
List
({
...
params
}).
then
(
res
=>
{
console
.
log
(
res
)
// resolve(res.data)
})
...
...
src/pages/contract/funds/addbill/index.tsx
View file @
fbd5e49e
...
...
@@ -12,7 +12,7 @@ import { PlusOutlined } from '@ant-design/icons';
import
{
PublicApi
}
from
'@/services/api'
const
formActions
=
createFormActions
();
import
moment
from
'moment'
;
;
const
Addbilldetails
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
...
...
src/pages/contract/funds/levelpayment/index.tsx
0 → 100644
View file @
fbd5e49e
import
React
,
{
useState
,
useRef
,
ReactNode
}
from
'react'
import
{
history
,
Link
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Anchor
,
Radio
,
Steps
,
Row
,
Col
,
Input
,
message
,
Modal
,
Card
}
from
'antd'
;
import
statuStyle
from
'../../common/colorTag'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
StandardTable
}
from
'god'
;
import
{
SchemaBli
}
from
'../schema'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
SearchSelect
from
'@/components/NiceForm/components/SearchSelect'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
moment
from
'moment'
;
const
{
TextArea
}
=
Input
;
const
Levelpayment
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
const
[
id
,
setId
]
=
useState
(
''
);
const
[
isModalVisible
,
setIsModalVisible
]
=
useState
(
false
);
const
today
=
moment
();
// 当天日期
const
[
isAllMember
,
setIsAllMember
]
=
useState
(
true
)
const
[
reason
,
setDatareason
]
=
useState
(
''
)
;
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'请款单号/摘要'
,
dataIndex
:
'applyNo'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
return
(
<
div
>
<
EyePreview
type=
"button"
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
applyAbstract
}
</
p
>
</
div
>
);
},
},
{
title
:
'单据时间'
,
align
:
'center'
,
dataIndex
:
'orderTime'
,
},
{
title
:
'收款方'
,
align
:
'center'
,
dataIndex
:
'payeeMemberName'
,
},
{
title
:
'合同编号'
,
align
:
'center'
,
dataIndex
:
'contractNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
type=
"button"
>
{
text
}
</
EyePreview
>
},
{
title
:
'合同总金额'
,
align
:
'center'
,
dataIndex
:
'contractAmount'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
¥
{
text
}
</
span
>
},
{
title
:
'请款金额'
,
dataIndex
:
'applyAmount'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
¥
{
text
}
</
span
>
},
{
title
:
'内部状态'
,
dataIndex
:
'statusName'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
let
component
:
ReactNode
=
null
component
=
(
<>
<
span
style=
{
statuStyle
.
success
}
>
已完成签约
</
span
>
</>
)
return
component
}
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
// 作废:待付款、已付款、待提交审核状态的不能作废
return
(
<>
{
record
.
status
!=
9
||
record
.
status
!=
7
||
record
.
status
!=
8
||
record
.
status
!=
1
&&
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
,
cursor
:
'pointer'
,
}
}
onClick=
{
()
=>
invalid
(
record
.
id
)
}
>
作废
</
span
>
}
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
,
cursor
:
'pointer'
,
}
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/contract/funds/bill/details?applyId=${record.id}&type=1`
)
}
>
查看
</
span
>
</>
)
}
}]
const
handleIsAllMemberChange
=
(
v
:
any
)
=>
{
setIsAllMember
(
v
.
target
.
value
)
}
const
invalid
=
(
id
)
=>
{
setId
(
id
)
setIsModalVisible
(
!
isModalVisible
)
}
// 模拟请求
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
params
.
status
=
params
.
status
?
params
.
status
:
0
;
params
.
startTime
=
params
.
startTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
params
.
endTime
=
params
.
endTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getContractApplyAmountPageList
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
const
fetchOptions
=
(
service
)
=>
{
return
async
function
()
{
const
res
=
await
service
();
if
(
res
.
code
===
1000
)
{
return
res
.
data
.
map
((
item
)
=>
{
return
{
label
:
item
.
name
,
value
:
item
.
status
}
})
}
return
[];
}
}
const
rowSelection
:
any
=
{
selectedRowKeys
:
selectedRowKeys
,
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
setSelectedRowKeys
(
selectedRowKeys
)
setSelectRow
(
selectedRows
)
}
};
/* 作废 */
const
oninvalid
=
()
=>
{
let
res_data
:
any
=
{
applyId
:
id
,
reason
,
}
if
(
isAllMember
)
{
const
msg
=
message
.
loading
({
content
:
'正在操作'
,
duration
:
0
,
});
PublicApi
.
postContractApplyAmountInvalid
(
res_data
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
handleCancel
()
ref
.
current
.
reload
();
}
}).
finally
(()
=>
{
msg
();
})
}
else
{
handleCancel
()
}
}
const
setreason
=
(
e
)
=>
{
setDatareason
(
e
.
target
.
value
);
}
const
handleCancel
=
()
=>
{
setIsModalVisible
(
!
isModalVisible
);
};
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
rowSelection=
{
rowSelection
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
SchemaBli
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'applyNo'
,
FORM_FILTER_PATH
,
);
useAsyncSelect
(
"status"
,
fetchOptions
(
PublicApi
.
getContractApplyAmountGetStatusList
)
)
},
components
:
{
DateRangePickerUnix
,
Submit
,
SearchSelect
}
}
}
}
/>
</
Card
>
<
Modal
title=
"单据作废"
visible=
{
isModalVisible
}
onCancel=
{
handleCancel
}
onOk=
{
oninvalid
}
>
<
Radio
.
Group
onChange=
{
handleIsAllMemberChange
}
defaultValue=
{
isAllMember
}
value=
{
isAllMember
}
>
<
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
}
onChange=
{
(
e
)
=>
setreason
(
e
)
}
/>
</
Modal
>
</
PageHeaderWrapper
>
)
}
export
default
Levelpayment
src/pages/contract/funds/secondpayment/index.tsx
0 → 100644
View file @
fbd5e49e
import
React
,
{
useState
,
useRef
,
ReactNode
}
from
'react'
import
{
history
,
Link
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Anchor
,
Radio
,
Steps
,
Row
,
Col
,
Input
,
message
,
Modal
,
Card
}
from
'antd'
;
import
statuStyle
from
'../../common/colorTag'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
StandardTable
}
from
'god'
;
import
{
SchemaBli
}
from
'../schema'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
SearchSelect
from
'@/components/NiceForm/components/SearchSelect'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
moment
from
'moment'
;
const
{
TextArea
}
=
Input
;
const
Secondpayment
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
const
[
id
,
setId
]
=
useState
(
''
);
const
[
isModalVisible
,
setIsModalVisible
]
=
useState
(
false
);
const
today
=
moment
();
// 当天日期
const
[
isAllMember
,
setIsAllMember
]
=
useState
(
true
)
const
[
reason
,
setDatareason
]
=
useState
(
''
)
;
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'请款单号/摘要'
,
dataIndex
:
'applyNo'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
return
(
<
div
>
<
EyePreview
type=
"button"
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
applyAbstract
}
</
p
>
</
div
>
);
},
},
{
title
:
'单据时间'
,
align
:
'center'
,
dataIndex
:
'orderTime'
,
},
{
title
:
'收款方'
,
align
:
'center'
,
dataIndex
:
'payeeMemberName'
,
},
{
title
:
'合同编号'
,
align
:
'center'
,
dataIndex
:
'contractNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
type=
"button"
>
{
text
}
</
EyePreview
>
},
{
title
:
'合同总金额'
,
align
:
'center'
,
dataIndex
:
'contractAmount'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
¥
{
text
}
</
span
>
},
{
title
:
'请款金额'
,
dataIndex
:
'applyAmount'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
¥
{
text
}
</
span
>
},
{
title
:
'内部状态'
,
dataIndex
:
'statusName'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
let
component
:
ReactNode
=
null
component
=
(
<>
<
span
style=
{
statuStyle
.
success
}
>
已完成签约
</
span
>
</>
)
return
component
}
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
// 作废:待付款、已付款、待提交审核状态的不能作废
return
(
<>
{
record
.
status
!=
9
||
record
.
status
!=
7
||
record
.
status
!=
8
||
record
.
status
!=
1
&&
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
,
cursor
:
'pointer'
,
}
}
onClick=
{
()
=>
invalid
(
record
.
id
)
}
>
作废
</
span
>
}
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
,
cursor
:
'pointer'
,
}
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/contract/funds/bill/details?applyId=${record.id}&type=1`
)
}
>
查看
</
span
>
</>
)
}
}]
const
handleIsAllMemberChange
=
(
v
:
any
)
=>
{
setIsAllMember
(
v
.
target
.
value
)
}
const
invalid
=
(
id
)
=>
{
setId
(
id
)
setIsModalVisible
(
!
isModalVisible
)
}
// 模拟请求
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
params
.
status
=
params
.
status
?
params
.
status
:
0
;
params
.
startTime
=
params
.
startTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
params
.
endTime
=
params
.
endTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getContractApplyAmountPageList
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
const
fetchOptions
=
(
service
)
=>
{
return
async
function
()
{
const
res
=
await
service
();
if
(
res
.
code
===
1000
)
{
return
res
.
data
.
map
((
item
)
=>
{
return
{
label
:
item
.
name
,
value
:
item
.
status
}
})
}
return
[];
}
}
const
rowSelection
:
any
=
{
selectedRowKeys
:
selectedRowKeys
,
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
setSelectedRowKeys
(
selectedRowKeys
)
setSelectRow
(
selectedRows
)
}
};
/* 作废 */
const
oninvalid
=
()
=>
{
let
res_data
:
any
=
{
applyId
:
id
,
reason
,
}
if
(
isAllMember
)
{
const
msg
=
message
.
loading
({
content
:
'正在操作'
,
duration
:
0
,
});
PublicApi
.
postContractApplyAmountInvalid
(
res_data
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
handleCancel
()
ref
.
current
.
reload
();
}
}).
finally
(()
=>
{
msg
();
})
}
else
{
handleCancel
()
}
}
const
setreason
=
(
e
)
=>
{
setDatareason
(
e
.
target
.
value
);
}
const
handleCancel
=
()
=>
{
setIsModalVisible
(
!
isModalVisible
);
};
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
rowSelection=
{
rowSelection
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
SchemaBli
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'applyNo'
,
FORM_FILTER_PATH
,
);
useAsyncSelect
(
"status"
,
fetchOptions
(
PublicApi
.
getContractApplyAmountGetStatusList
)
)
},
components
:
{
DateRangePickerUnix
,
Submit
,
SearchSelect
}
}
}
}
/>
</
Card
>
<
Modal
title=
"单据作废"
visible=
{
isModalVisible
}
onCancel=
{
handleCancel
}
onOk=
{
oninvalid
}
>
<
Radio
.
Group
onChange=
{
handleIsAllMemberChange
}
defaultValue=
{
isAllMember
}
value=
{
isAllMember
}
>
<
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
}
onChange=
{
(
e
)
=>
setreason
(
e
)
}
/>
</
Modal
>
</
PageHeaderWrapper
>
)
}
export
default
Secondpayment
src/pages/contract/funds/submitpayment/index.tsx
0 → 100644
View file @
fbd5e49e
import
React
,
{
useState
,
useRef
,
ReactNode
}
from
'react'
import
{
history
,
Link
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Anchor
,
Radio
,
Steps
,
Row
,
Col
,
Input
,
message
,
Modal
,
Card
}
from
'antd'
;
import
statuStyle
from
'../../common/colorTag'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
StandardTable
}
from
'god'
;
import
{
SchemaBli
}
from
'../schema'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PublicApi
}
from
'@/services/api'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
SearchSelect
from
'@/components/NiceForm/components/SearchSelect'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
moment
from
'moment'
;
const
{
TextArea
}
=
Input
;
const
Submitpayment
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
const
[
id
,
setId
]
=
useState
(
''
);
const
[
isModalVisible
,
setIsModalVisible
]
=
useState
(
false
);
const
today
=
moment
();
// 当天日期
const
[
isAllMember
,
setIsAllMember
]
=
useState
(
true
)
const
[
reason
,
setDatareason
]
=
useState
(
''
)
;
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'请款单号/摘要'
,
dataIndex
:
'applyNo'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
return
(
<
div
>
<
EyePreview
type=
"button"
>
{
text
}
</
EyePreview
>
<
p
>
{
record
.
applyAbstract
}
</
p
>
</
div
>
);
},
},
{
title
:
'单据时间'
,
align
:
'center'
,
dataIndex
:
'orderTime'
,
},
{
title
:
'收款方'
,
align
:
'center'
,
dataIndex
:
'payeeMemberName'
,
},
{
title
:
'合同编号'
,
align
:
'center'
,
dataIndex
:
'contractNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
type=
"button"
>
{
text
}
</
EyePreview
>
},
{
title
:
'合同总金额'
,
align
:
'center'
,
dataIndex
:
'contractAmount'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
¥
{
text
}
</
span
>
},
{
title
:
'请款金额'
,
dataIndex
:
'applyAmount'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
¥
{
text
}
</
span
>
},
{
title
:
'内部状态'
,
dataIndex
:
'statusName'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
let
component
:
ReactNode
=
null
component
=
(
<>
<
span
style=
{
statuStyle
.
success
}
>
已完成签约
</
span
>
</>
)
return
component
}
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
// 作废:待付款、已付款、待提交审核状态的不能作废
return
(
<>
{
record
.
status
!=
9
||
record
.
status
!=
7
||
record
.
status
!=
8
||
record
.
status
!=
1
&&
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
,
cursor
:
'pointer'
,
}
}
onClick=
{
()
=>
invalid
(
record
.
id
)
}
>
作废
</
span
>
}
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
,
cursor
:
'pointer'
,
}
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/contract/funds/bill/details?applyId=${record.id}&type=1`
)
}
>
查看
</
span
>
</>
)
}
}]
const
handleIsAllMemberChange
=
(
v
:
any
)
=>
{
setIsAllMember
(
v
.
target
.
value
)
}
const
invalid
=
(
id
)
=>
{
setId
(
id
)
setIsModalVisible
(
!
isModalVisible
)
}
// 模拟请求
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
params
.
status
=
params
.
status
?
params
.
status
:
0
;
params
.
startTime
=
params
.
startTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
params
.
endTime
=
params
.
endTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getContractApplyAmountPageList
({
...
params
,
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
const
fetchOptions
=
(
service
)
=>
{
return
async
function
()
{
const
res
=
await
service
();
if
(
res
.
code
===
1000
)
{
return
res
.
data
.
map
((
item
)
=>
{
return
{
label
:
item
.
name
,
value
:
item
.
status
}
})
}
return
[];
}
}
const
rowSelection
:
any
=
{
selectedRowKeys
:
selectedRowKeys
,
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
setSelectedRowKeys
(
selectedRowKeys
)
setSelectRow
(
selectedRows
)
}
};
/* 作废 */
const
oninvalid
=
()
=>
{
let
res_data
:
any
=
{
applyId
:
id
,
reason
,
}
if
(
isAllMember
)
{
const
msg
=
message
.
loading
({
content
:
'正在操作'
,
duration
:
0
,
});
PublicApi
.
postContractApplyAmountInvalid
(
res_data
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
handleCancel
()
ref
.
current
.
reload
();
}
}).
finally
(()
=>
{
msg
();
})
}
else
{
handleCancel
()
}
}
const
setreason
=
(
e
)
=>
{
setDatareason
(
e
.
target
.
value
);
}
const
handleCancel
=
()
=>
{
setIsModalVisible
(
!
isModalVisible
);
};
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
rowSelection=
{
rowSelection
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
formilyProps=
{
{
ctx
:
{
inline
:
false
,
schema
:
SchemaBli
,
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'applyNo'
,
FORM_FILTER_PATH
,
);
useAsyncSelect
(
"status"
,
fetchOptions
(
PublicApi
.
getContractApplyAmountGetStatusList
)
)
},
components
:
{
DateRangePickerUnix
,
Submit
,
SearchSelect
}
}
}
}
/>
</
Card
>
<
Modal
title=
"单据作废"
visible=
{
isModalVisible
}
onCancel=
{
handleCancel
}
onOk=
{
oninvalid
}
>
<
Radio
.
Group
onChange=
{
handleIsAllMemberChange
}
defaultValue=
{
isAllMember
}
value=
{
isAllMember
}
>
<
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
}
onChange=
{
(
e
)
=>
setreason
(
e
)
}
/>
</
Modal
>
</
PageHeaderWrapper
>
)
}
export
default
Submitpayment
src/pages/contract/manage/QueryList/index.tsx
View file @
fbd5e49e
...
...
@@ -12,11 +12,18 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
{
history
}
from
'umi'
;
import
moment
from
'moment'
;
const
QueryList
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
const
getdate
=
(
time
)
=>
{
return
new
Date
(
Date
.
parse
(
time
.
replace
(
/-/g
,
"/"
))).
getTime
()
/
1000
;
}
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'合同编号/摘要'
,
...
...
@@ -25,7 +32,7 @@ const QueryList = () => {
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
type=
"button"
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${record.id}`
}
>
{
text
}
</
EyePreview
>
...
...
@@ -35,20 +42,29 @@ const QueryList = () => {
title
:
'合同生效/失效时间'
,
dataIndex
:
'startTime'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
getdate
(
a
.
startTime
)
-
getdate
(
b
.
startTime
),
multiple
:
1
,
},
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
<
p
>
<
PlayCircleOutlined
/>
{
text
}
</
p
>
<
p
>
<
PoweroffOutlined
/>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'合同乙方'
,
dataIndex
:
'partyBName'
,
align
:
'center'
,
},
{
title
:
'合同总金额'
,
dataIndex
:
'totalAmount'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
totalAmount
-
b
.
totalAmount
,
multiple
:
1
,
},
render
:
(
text
)
=>
<
div
>
<
p
>
¥
{
text
}
</
p
>
...
...
@@ -67,7 +83,8 @@ const QueryList = () => {
return
(
<
div
>
<
EyePreview
url=
{
`/memberCenter/contract/manage/QueryList/QueryListdetails`
}
type=
{
record
.
sourceId
?
'link'
:
'button'
}
url=
{
`/memberCenter/procurementAbility/offter/view?id${record.sourceId}&number${record.sourceNo}`
}
>
{
text
}
</
EyePreview
>
...
...
@@ -102,7 +119,7 @@ const QueryList = () => {
},
{
title
:
'操作'
,
dataIndex
:
'state'
,
align
:
'
center
'
,
align
:
'
left
'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
...
...
@@ -110,15 +127,29 @@ const QueryList = () => {
record
.
outerStatus
!=
7
?
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
,
cursor
:
'pointer'
,
}
}
onClick=
{
()
=>
invalid
(
record
.
id
)
}
>
作废
</
span
>
:
<
span
>
</
span
>
}
{
record
.
outerStatus
==
6
?
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
,
cursor
:
'pointer'
,
}
}
>
合同变更
</
span
>
:
<
span
>
</
span
>
record
.
outerStatus
==
6
?
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
,
cursor
:
'pointer'
,
}
}
onClick=
{
()
=>
like
(
record
)
}
>
合同变更
</
span
>
:
<
span
>
</
span
>
}
{
/* 已完成签约 */
}
{
/* url={} */
}
<
span
style=
{
{
color
:
'#00B37A'
,
cursor
:
'pointer'
,
}
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${record.id}`
)
}
>
查看
</
span
>
</
div
>
)
}
}]
const
rowSelection
:
any
=
{
selectedRowKeys
:
selectedRowKeys
,
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
setSelectedRowKeys
(
selectedRowKeys
)
setSelectRow
(
selectedRows
)
}
};
const
like
=
(
record
)
=>
{
record
.
sourceId
=
record
.
demandId
;
record
.
sourceNo
=
record
.
sourceNo
;
record
.
totalAmount
=
record
.
totalAmount
;
record
.
partyBMemberId
=
record
.
awardMemberId
;
record
.
partyBRoleId
=
record
.
awardRoleId
;
record
.
partyBName
=
record
.
awardName
;
sessionStorage
.
setItem
(
'record'
,
JSON
.
stringify
(
record
));
history
.
push
(
`/memberCenter/contract/manage/add/addList/contracAdd?contractId=
${
record
.
id
}
&sourceType=1`
)
};
const
[
form
]
=
Form
.
useForm
();
const
[
id
,
setId
]
=
useState
(
''
);
const
[
isModalVisible
,
setIsModalVisible
]
=
useState
(
false
);
...
...
@@ -174,6 +205,7 @@ const QueryList = () => {
rowKey
:
'id'
,
}
}
columns=
{
columns
}
rowSelection=
{
rowSelection
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
formilyProps=
{
{
...
...
src/pages/contract/manage/add/addList.tsx
View file @
fbd5e49e
...
...
@@ -15,10 +15,14 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
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'
import
{
PlusCircleOutlined
,
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
moment
from
'moment'
;
const
addList
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
getdate
=
(
time
)
=>
{
return
new
Date
(
Date
.
parse
(
time
.
replace
(
/-/g
,
"/"
))).
getTime
()
/
1000
;
}
//表头
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 模态框选择的行数据
...
...
@@ -40,13 +44,13 @@ const addList = () => {
dataIndex
:
'startTime'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
compare
:
(
a
,
b
)
=>
getdate
(
a
.
startTime
)
-
getdate
(
b
.
startTime
)
,
multiple
:
1
,
},
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
<
p
>
<
PlayCircleOutlined
/>
{
text
}
</
p
>
<
p
>
<
PoweroffOutlined
/>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'合同乙方'
,
...
...
@@ -58,7 +62,7 @@ const addList = () => {
dataIndex
:
'totalAmount'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
compare
:
(
a
,
b
)
=>
a
.
totalAmount
-
b
.
totalAmount
,
multiple
:
1
,
},
render
:
(
text
)
=>
...
...
@@ -70,11 +74,6 @@ const addList = () => {
title
:
'对应单据/寻源类型'
,
dataIndex
:
'sourceNo'
,
align
:
'center'
,
filters
:
[
{
text
:
'采购询价'
,
value
:
1
},
{
text
:
'采购招标'
,
value
:
2
},
{
text
:
'采购竞价'
,
value
:
3
},
],
render
:
(
text
,
record
)
=>
{
let
sourceTypeList
=
[
""
,
...
...
@@ -98,10 +97,10 @@ const addList = () => {
title
:
'外部状态'
,
dataIndex
:
'outerStatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
//
filters: [
//
{ text: 'Joe', value: 'Joe' },
//
{ text: 'Jim', value: 'Jim' },
//
],
render
:
(
text
,
record
)
=>
{
return
(
<
StatusTag
type=
"warning"
title=
{
record
.
outerStatusName
}
/>
...
...
@@ -112,10 +111,10 @@ const addList = () => {
title
:
'内部状态'
,
dataIndex
:
'innerStatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
//
filters: [
//
{ text: 'Joe', value: 'Joe' },
//
{ text: 'Jim', value: 'Jim' },
//
],
render
:
(
text
,
record
)
=>
{
return
(
...
...
@@ -144,7 +143,6 @@ const addList = () => {
record
.
innerStatus
==
'1'
?
<
span
style=
{
{
color
:
'#00B37A'
,
cursor
:
'pointer'
,
marginRight
:
10
}
}
>
删除
</
span
>
:
''
}
<
span
style=
{
{
color
:
'#00B37A'
,
cursor
:
'pointer'
,
marginRight
:
10
}
}
onClick=
{
()
=>
submit
(
record
.
id
)
}
>
提交
</
span
>
<
span
style=
{
{
color
:
'#00B37A'
,
cursor
:
'pointer'
}
}
>
修改
</
span
>
</
div
>
)
}
...
...
@@ -166,6 +164,8 @@ const addList = () => {
// 列表数据
const
fetchData
=
(
params
?:
any
)
=>
{
console
.
log
(
params
)
//可以直接打印参数
params
.
startTime
=
params
.
startTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
params
.
endTime
=
params
.
endTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getContractManagePageToBeAdd
({
...
params
,
...
...
src/pages/contract/manage/add/components/FormList.tsx
View file @
fbd5e49e
...
...
@@ -232,6 +232,11 @@ const FormList = (props: any) => {
price
:
item
.
taxUnitPrice
,
bidCount
:
item
.
awardCount
,
bidAmount
:
item
.
awardPrice
,
associatedDataId
:
item
.
productId
,
associatedMaterielNo
:
item
.
number
,
associatedMaterielName
:
item
.
name
,
associatedGoods
:
item
.
productName
}
})
setData
(
data
)
...
...
@@ -265,8 +270,10 @@ const FormList = (props: any) => {
price
:
Number
(
item
.
price
),
bidCount
:
item
.
bidCount
,
bidAmount
:
item
.
bidCount
&&
item
.
price
?
Number
(
item
.
bidCount
)
*
Number
(
item
.
price
)
:
''
,
associatedMaterielNo
:
item
.
id
?
item
.
id
:
''
,
associatedMaterielName
:
item
.
name
?
item
.
name
:
''
,
associatedMaterielName
:
item
.
associatedMaterielName
?
item
.
associatedMaterielName
:
''
,
associatedGoods
:
item
.
associatedGoods
?
item
.
associatedGoods
:
''
,
associatedDataId
:
item
.
associatedDataId
?
item
.
associatedDataId
:
''
,
associatedMaterielNo
:
item
.
associatedMaterielNo
?
item
.
associatedMaterielNo
:
''
,
associatedType
:
item
.
type
?
item
.
type
:
''
,
associatedCategory
:
item
.
customerCategory
!=
null
?
item
.
customerCategory
.
name
:
''
,
associatedBrand
:
item
.
brand
!=
null
?
item
.
brand
.
name
:
''
,
...
...
@@ -292,8 +299,8 @@ const FormList = (props: any) => {
<
p
>
报价商品
</
p
>
</
div
>
<
div
className=
{
styles
.
text
}
>
<
p
>
商品ID:
{
record
.
customerCategory
.
i
d
}
</
p
>
<
p
>
商品名称:
{
record
.
n
ame
}
</
p
>
<
p
>
商品ID:
{
record
.
associatedDataI
d
}
</
p
>
<
p
>
商品名称:
{
record
.
associatedMaterielN
ame
}
</
p
>
</
div
>
<
div
className=
{
styles
.
text
}
>
<
p
>
规格:
{
record
.
type
}
</
p
>
...
...
src/pages/contract/manage/add/components/information.tsx
View file @
fbd5e49e
...
...
@@ -92,7 +92,7 @@ const Information = (props: any) => {
/* 获取传入组建的值 */
useEffect
(()
=>
{
basicsVO
.
contractNo
=
basicsVO
.
contractNo
?
basicsVO
.
contractNo
:
''
;
basicsVO
.
sourceType
=
Row
.
sourceType
?
Row
.
sourceType
:
'1'
;
basicsVO
.
sourceType
=
Row
.
sourceType
?
Row
.
sourceType
+
''
:
'1'
;
basicsVO
.
contractId
=
Row
.
contractId
?
Row
.
contractId
:
0
;
basicsVO
.
partyBName
=
Row
.
partyBName
?
Row
.
partyBName
:
''
;
basicsVO
.
sourceNo
=
Row
.
sourceNo
?
Row
.
sourceNo
:
''
;
...
...
src/pages/contract/manage/details/index.css
View file @
fbd5e49e
.anchorWrap
:global
.ant-anchor
{
display
:
flex
;
align-items
:
center
;
}
.anchorWrap
:global
.ant-anchor
.ant-anchor-ink
{
display
:
none
;
...
...
src/pages/contract/manage/details/index.less
View file @
fbd5e49e
...
...
@@ -2,6 +2,7 @@
:global {
.ant-anchor {
display: flex;
align-items: center;
.ant-anchor-ink {
display: none;
}
...
...
src/pages/contract/manage/details/index.tsx
View file @
fbd5e49e
import
React
,
{
useEffect
,
useState
,
useRef
}
from
'react'
;
import
{
Anchor
,
Radio
,
Steps
,
Row
,
Col
,
Table
,
Space
,
Typography
}
from
'antd'
;
import
{
Anchor
,
Radio
,
Steps
,
Row
,
Col
,
Form
,
Input
,
Table
,
message
,
Space
,
Typography
,
Button
,
Modal
}
from
'antd'
;
import
style
from
'./index.less'
;
import
{
ArrowLeftOutlined
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
...
...
@@ -12,6 +12,7 @@ import {
FileWordFilled
}
from
'@ant-design/icons'
const
{
TextArea
}
=
Input
;
const
{
Link
}
=
Anchor
;
const
{
Step
}
=
Steps
;
...
...
@@ -20,9 +21,11 @@ const activeAnchorClassName = 'ant-anchor-link-active'
const
Details
=
(
props
:
any
)
=>
{
/* 合同id */
const
{
location
:
{
query
:
{
contractId
}
}
}
=
props
;
const
{
location
:
{
query
:
{
contractId
,
type
}
}
}
=
props
;
const
ref
=
useRef
({});
const
[
currLink
,
setCurrLink
]
=
useState
(
activeAnchorClassName
)
const
[
form
]
=
Form
.
useForm
();
const
[
isPass
,
setIsAllMember
]
=
useState
()
/**
* 渲染信息
* @param basics 基础信息
...
...
@@ -47,7 +50,8 @@ const Details = (props: any) => {
const
[
outerTaskStepList
,
setouterTaskStepList
]
=
useState
<
any
>
([])
const
[
innerTaskStepList
,
setinnerTaskStepList
]
=
useState
<
any
>
([]);
const
[
currentBatch
,
setCurrentBatch
]
=
useState
(
'1'
);
const
[
listIndex
,
setlistIndex
]
=
useState
(
'1'
);;
const
[
listIndex
,
setlistIndex
]
=
useState
(
'1'
);
const
[
Visible
,
setIsModalVisible
]
=
useState
<
boolean
>
(
false
)
const
[
ListData
,
setListData
]
=
useState
<
any
>
([])
const
[
payPlanList
,
setpayPlanList
]
=
useState
<
any
>
([])
const
[
contractText
,
setcontractText
]
=
useState
<
any
>
([])
...
...
@@ -99,6 +103,9 @@ const Details = (props: any) => {
}
})
}
const
onDownload
=
(
file
:
any
)
=>
{
window
.
location
.
href
=
`/api/contract/contractTemplate/downloadContract?contractName=
${
file
.
contractName
}
&contractUrl=
${
file
.
contractUrl
}
`
}
/**
* 流转进度点击
*/
...
...
@@ -244,7 +251,37 @@ const Details = (props: any) => {
{
title
:
'操作时间'
,
dataIndex
:
'operateTime'
,
align
:
'center'
,
},
{
title
:
'审核意见'
,
dataIndex
:
'opinion'
,
align
:
'center'
,
},
]
/* 提交 */
const
onFinish
=
(
values
:
any
)
=>
{
let
fn
;
switch
(
type
)
{
case
'examine'
:
fn
=
PublicApi
.
postContractManageSubmitExamine
break
;
}
values
.
contractId
=
contractId
;
const
msg
=
message
.
loading
({
content
:
'正在操作'
,
duration
:
0
,
});
console
.
log
(
'Success:'
,
values
);
fn
(
values
).
then
(
res
=>
{
console
.
log
(
res
);
if
(
res
.
code
===
1000
)
{
history
.
goBack
()
setIsModalVisible
(
!
Visible
)
}
}).
finally
(()
=>
{
msg
();
});
};
/* 选中的值 */
const
handleIsAllMemberChange
=
(
v
:
any
)
=>
{
setIsAllMember
(
v
.
target
.
value
)
}
const
onFinishFailed
=
(
errorInfo
:
any
)
=>
{
console
.
log
(
'Failed:'
,
errorInfo
);
};
return
(
<
div
className=
{
style
.
anchorWrap
}
>
<
Anchor
...
...
@@ -261,8 +298,10 @@ const Details = (props: any) => {
}
}
>
<
ArrowLeftOutlined
onClick=
{
()
=>
history
.
goBack
()
}
style=
{
{
fontSize
:
'14px'
,
cursor
:
'pointer'
,
color
:
'#909399'
,
}
}
/>
...
...
@@ -272,6 +311,7 @@ const Details = (props: any) => {
color
:
'#303133'
,
fontWeight
:
500
,
marginLeft
:
'8px'
,
}
}
>
{
contractAbstract
}
...
...
@@ -286,6 +326,12 @@ const Details = (props: any) => {
</
div
>
</
div
>
<
div
>
{
type
&&
<
Button
type=
"primary"
style=
{
{
width
:
80
,
marginRight
:
16
}
}
onClick=
{
()
=>
setIsModalVisible
(
!
Visible
)
}
>
审核
</
Button
>
}
</
div
>
</
Anchor
>
<
div
id=
'content'
className=
{
style
.
card
}
>
{
/* 流转进度 */
}
...
...
@@ -447,7 +493,7 @@ const Details = (props: any) => {
<
div
className=
'ant-card-head-wrapper'
>
电子合同
</
div
>
<
div
className=
{
style
.
upload_left
}
style=
{
{
width
:
600
}
}
>
<
div
className=
{
style
.
upload_left
}
onClick=
{
()
=>
onDownload
(
contractText
)
}
style=
{
{
width
:
600
,
cursor
:
'pointer'
}
}
>
<
FileWordFilled
/>
<
span
>
{
contractText
.
contractName
}
.pdf
</
span
>
</
div
>
...
...
@@ -481,6 +527,32 @@ const Details = (props: any) => {
</
div
>
</
div
>
</
div
>
<
Modal
footer=
{
null
}
title=
"提交审核"
visible=
{
Visible
}
onOk=
{
()
=>
setIsModalVisible
(
!
Visible
)
}
onCancel=
{
()
=>
setIsModalVisible
(
!
Visible
)
}
>
<
Form
name=
"basic"
form=
{
form
}
initialValues=
{
{
remember
:
true
}
}
onFinish=
{
onFinish
}
onFinishFailed=
{
onFinishFailed
}
>
<
Form
.
Item
name=
"isPass"
label=
""
rules=
{
[{
required
:
true
,
message
:
'请选择作废日期'
}]
}
initialValue=
{
isPass
}
>
<
Radio
.
Group
onChange=
{
handleIsAllMemberChange
}
>
<
Radio
value=
{
1
}
>
通过
</
Radio
>
<
Radio
value=
{
0
}
>
不通过
</
Radio
>
</
Radio
.
Group
>
</
Form
.
Item
>
<
Form
.
Item
label=
{
isPass
?
'审核通过原因'
:
'审不核通过原因'
}
rules=
{
[{
required
:
true
,
message
:
'请选择作废日期'
}]
}
>
</
Form
.
Item
>
<
Form
.
Item
label=
''
name=
"opinion"
rules=
{
[{
required
:
true
,
message
:
'审核通过意见'
}]
}
>
<
TextArea
placeholder=
"在此输入你的原因,最多60个汉字"
maxLength=
{
120
}
/>
</
Form
.
Item
>
<
div
style=
{
{
display
:
'flex'
,
justifyContent
:
'flex-end'
}
}
>
<
Button
onClick=
{
()
=>
setIsModalVisible
(
!
Visible
)
}
style=
{
{
marginRight
:
10
}
}
>
取消
</
Button
>
<
Button
type=
"primary"
htmlType=
"submit"
>
保存
</
Button
>
</
div
>
</
Form
>
</
Modal
>
</
div
>
)
}
...
...
src/pages/contract/manage/examine/index.tsx
View file @
fbd5e49e
...
...
@@ -14,6 +14,7 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
const
{
TextArea
}
=
Input
;
const
Examine
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
...
...
@@ -23,6 +24,9 @@ const Examine = () => {
const
[
isPass
,
setIsAllMember
]
=
useState
()
const
[
form
]
=
Form
.
useForm
();
const
[
id
,
setid
]
=
useState
(
""
)
const
getdate
=
(
time
)
=>
{
return
new
Date
(
Date
.
parse
(
time
.
replace
(
/-/g
,
"/"
))).
getTime
()
/
1000
;
}
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'合同编号/摘要'
,
...
...
@@ -31,7 +35,7 @@ const Examine = () => {
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
type=
"button"
url=
{
`/memberCenter/contract/manage/examine/details?contractId=${record.id}&type=examine`
}
>
{
text
}
</
EyePreview
>
...
...
@@ -42,13 +46,13 @@ const Examine = () => {
dataIndex
:
'startTime'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
compare
:
(
a
,
b
)
=>
getdate
(
a
.
startTime
)
-
getdate
(
b
.
startTime
)
,
multiple
:
1
,
},
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
<
p
>
<
PlayCircleOutlined
/>
{
text
}
</
p
>
<
p
>
<
PoweroffOutlined
/>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'合同乙方'
,
...
...
@@ -60,7 +64,7 @@ const Examine = () => {
dataIndex
:
'totalAmount'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
compare
:
(
a
,
b
)
=>
a
.
totalAmount
-
b
.
totalAmount
,
multiple
:
1
,
},
render
:
(
text
)
=>
...
...
@@ -72,11 +76,6 @@ const Examine = () => {
title
:
'对应单据/寻源类型'
,
dataIndex
:
'sourceNo'
,
align
:
'center'
,
filters
:
[
{
text
:
'采购询价'
,
value
:
1
},
{
text
:
'采购招标'
,
value
:
2
},
{
text
:
'采购竞价'
,
value
:
3
},
],
render
:
(
text
,
record
)
=>
{
let
sourceTypeList
=
[
""
,
...
...
@@ -86,7 +85,8 @@ const Examine = () => {
return
(
<
div
>
<
EyePreview
type=
"button"
type=
{
record
.
sourceId
?
'link'
:
'button'
}
url=
{
`/memberCenter/procurementAbility/offter/view?id${record.sourceId}&number${record.sourceNo}`
}
>
{
text
}
</
EyePreview
>
...
...
@@ -100,10 +100,6 @@ const Examine = () => {
title
:
'外部状态'
,
dataIndex
:
'outerStatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
,
record
)
=>
{
return
(
<
StatusTag
type=
"warning"
title=
{
record
.
outerStatusName
}
/>
...
...
@@ -114,12 +110,7 @@ const Examine = () => {
title
:
'内部状态'
,
dataIndex
:
'innerStatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
span
style=
{
statuStyle
.
point
}
>
</
span
>
...
...
@@ -134,10 +125,8 @@ const Examine = () => {
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
{
/* /memberCenter/contract/manage/examine/details */
}
<
span
style=
{
{
color
:
'#00B37A'
,
cursor
:
'pointer'
,
marginRight
:
10
}
}
onClick=
{
()
=>
submitExamine
(
record
.
id
)
}
>
提交审核
</
span
>
<
span
style=
{
{
color
:
'#00B37A'
,
cursor
:
'pointer'
}
}
>
查看
</
span
>
</
div
>
</
div
>
)
}
}]
...
...
src/pages/contract/manage/levelexamine/index.tsx
View file @
fbd5e49e
...
...
@@ -13,12 +13,15 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
import
Submit
from
'@/components/NiceForm/components/Submit'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
PublicApi
}
from
'@/services/api'
;
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
const
{
TextArea
}
=
Input
;
const
Levelexamine
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
getdate
=
(
time
)
=>
{
return
new
Date
(
Date
.
parse
(
time
.
replace
(
/-/g
,
"/"
))).
getTime
()
/
1000
;
}
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
Visible
,
setIsModalVisible
]
=
useState
<
boolean
>
(
false
)
const
[
id
,
setid
]
=
useState
(
""
)
...
...
@@ -33,7 +36,7 @@ const Levelexamine = () => {
render
:
(
text
,
record
)
=>
<
div
>
<
EyePreview
type=
"button"
url=
{
`/memberCenter/contract/manage/levelexamine/details?contractId=${record.id}&type=levelexamine`
}
>
{
text
}
</
EyePreview
>
...
...
@@ -44,13 +47,13 @@ const Levelexamine = () => {
dataIndex
:
'startTime'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
multiple
:
1
,
compare
:
(
a
,
b
)
=>
getdate
(
a
.
startTime
)
-
getdate
(
b
.
startTime
)
,
multiple
:
2
,
},
render
:
(
text
,
record
)
=>
<
div
>
<
p
>
{
text
}
</
p
>
<
p
>
{
record
.
endTime
}
</
p
>
<
p
>
<
PlayCircleOutlined
/>
{
text
}
</
p
>
<
p
>
<
PoweroffOutlined
/>
{
record
.
endTime
}
</
p
>
</
div
>
},
{
title
:
'合同乙方'
,
...
...
@@ -62,7 +65,7 @@ const Levelexamine = () => {
dataIndex
:
'totalAmount'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
compare
:
(
a
,
b
)
=>
a
.
totalAmount
-
b
.
totalAmount
,
multiple
:
1
,
},
render
:
(
text
)
=>
...
...
@@ -74,11 +77,6 @@ const Levelexamine = () => {
title
:
'对应单据/寻源类型'
,
dataIndex
:
'sourceNo'
,
align
:
'center'
,
filters
:
[
{
text
:
'采购询价'
,
value
:
1
},
{
text
:
'采购招标'
,
value
:
2
},
{
text
:
'采购竞价'
,
value
:
3
},
],
render
:
(
text
,
record
)
=>
{
let
sourceTypeList
=
[
""
,
...
...
@@ -102,10 +100,6 @@ const Levelexamine = () => {
title
:
'外部状态'
,
dataIndex
:
'outerStatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
,
record
)
=>
{
return
(
<
StatusTag
type=
"warning"
title=
{
record
.
outerStatusName
}
/>
...
...
@@ -116,10 +110,6 @@ const Levelexamine = () => {
title
:
'内部状态'
,
dataIndex
:
'innerStatus'
,
align
:
'center'
,
filters
:
[
{
text
:
'Joe'
,
value
:
'Joe'
},
{
text
:
'Jim'
,
value
:
'Jim'
},
],
render
:
(
text
,
record
)
=>
{
return
(
...
...
@@ -136,8 +126,7 @@ const Levelexamine = () => {
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
span
style=
{
{
color
:
'#00B37A'
,
cursor
:
'pointer'
,
marginRight
:
10
}
}
onClick=
{
()
=>
submitExamine
(
record
.
id
)
}
>
提交审核
</
span
>
<
span
style=
{
{
color
:
'#00B37A'
,
cursor
:
'pointer'
,
}
}
>
查看
</
span
>
<
span
style=
{
{
color
:
'#00B37A'
,
cursor
:
'pointer'
,
marginRight
:
10
}
}
onClick=
{
()
=>
submitExamine
(
record
.
id
)
}
>
审核
</
span
>
</
div
>
)
}
...
...
src/pages/contract/manage/purchase/index.tsx
View file @
fbd5e49e
...
...
@@ -37,7 +37,7 @@ const PurchaseList = () => {
dataIndex
:
'demandPublishTime'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
demandPublishTime
-
b
.
demandPublishTime
,
compare
:
(
a
,
b
)
=>
getdate
(
a
.
demandPublishTime
)
-
getdate
(
b
.
demandPublishTime
)
,
multiple
:
1
,
},
},
{
...
...
@@ -50,7 +50,7 @@ const PurchaseList = () => {
dataIndex
:
'awardTime'
,
align
:
'center'
,
sorter
:
{
compare
:
(
a
,
b
)
=>
a
.
awardTime
-
b
.
awardTime
,
compare
:
(
a
,
b
)
=>
getdate
(
a
.
awardTime
)
-
getdate
(
b
.
awardTime
)
,
multiple
:
1
,
},
},
...
...
@@ -114,6 +114,9 @@ const PurchaseList = () => {
setSelectRow
(
selectedRows
)
}
};
const
getdate
=
(
time
)
=>
{
return
new
Date
(
Date
.
parse
(
time
.
replace
(
/-/g
,
"/"
))).
getTime
()
/
1000
;
}
const
like
=
(
record
)
=>
{
record
.
sourceId
=
record
.
demandId
;
...
...
src/pages/contract/manage/schema/index.ts
View file @
fbd5e49e
...
...
@@ -385,7 +385,7 @@ export const addListSchema: ISchema = {
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入
订单
编号'
,
placeholder
:
'请输入
合同
编号'
,
align
:
'flex-end'
,
},
},
...
...
src/pages/contract/manage/signacontract/index.tsx
View file @
fbd5e49e
...
...
@@ -250,7 +250,7 @@ const Signacontract = () => {
<
Radio
value=
{
0
}
>
不同意签订
</
Radio
>
</
Radio
.
Group
>
</
Form
.
Item
>
<
Form
.
Item
label=
{
isPass
?
'
不同意签订原因'
:
'
同意签订原因'
}
rules=
{
[{
required
:
true
,
message
:
'请选择作废日期'
}]
}
>
<
Form
.
Item
label=
{
isPass
?
'
同意签订原因'
:
'不
同意签订原因'
}
rules=
{
[{
required
:
true
,
message
:
'请选择作废日期'
}]
}
>
</
Form
.
Item
>
<
Form
.
Item
label=
''
name=
"opinion"
rules=
{
[{
required
:
true
,
message
:
'审核通过意见'
}]
}
>
...
...
src/pages/contract/template/addContract/index.tsx
View file @
fbd5e49e
...
...
@@ -126,7 +126,8 @@ const AddContract: React.FC<parmas> = (props) => {
/**下载 */
const
onDownload
=
(
file
:
any
)
=>
{
window
.
location
.
href
=
`/api/order/contractTemplate/downloadContract?contractName=
${
file
.
contractName
}
&contractUrl=
${
file
.
contractUrl
}
`
// contract/contractTemplate/downloadContract
window
.
location
.
href
=
`/api/contract/contractTemplate/downloadContract?contractName=
${
file
.
contractName
}
&contractUrl=
${
file
.
contractUrl
}
`
}
/**预览 */
const
onView
=
async
(
file
:
any
)
=>
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment