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
0fb1da29
Commit
0fb1da29
authored
Nov 19, 2022
by
wzy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 结算-编辑单价
parent
e9046217
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
131 additions
and
23 deletions
+131
-23
index.tsx
...ance/businessReconciliation/readyReconciliation/index.tsx
+131
-23
No files found.
src/pages/balance/businessReconciliation/readyReconciliation/index.tsx
View file @
0fb1da29
import
React
,
{
useRef
,
useState
,
useCallback
}
from
'react'
import
{
Card
,
Typography
,
Space
,
Button
,
Table
,
message
}
from
'antd'
import
{
CaretRightOutlined
,
CaretDownOutlined
}
from
'@ant-design/icons'
import
{
Card
,
Typography
,
Space
,
Button
,
Table
,
message
,
Form
,
InputNumber
,
FormInstance
}
from
'antd'
import
{
CaretRightOutlined
,
CaretDownOutlined
,
EditOutlined
}
from
'@ant-design/icons'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
StandardTable
from
'@/components/StandardTable'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
...
...
@@ -13,13 +13,12 @@ import AuthButton from '@/components/AuthButton';
import
{
formatTimeString
}
from
'@/utils'
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
{
priceFormat
}
from
'@/utils/numberFomat'
import
{
getSettleAccountsBusinessReconciliationToReconciliationList
,
getSettleAccountsBusinessReconciliationItemPayType
}
from
'@/services/SettleV2Api'
import
{
getSettleAccountsBusinessReconciliationToReconciliationList
,
getSettleAccountsBusinessReconciliationItemPayType
,
postSettleAccountsBusinessReconciliationUpdatePrice
}
from
'@/services/SettleV2Api'
import
{
createFormActions
}
from
'@formily/antd'
import
{
getIntl
,
history
}
from
'umi'
;
import
{
fetchOptions
}
from
'../../common'
;
const
intl
=
getIntl
();
const
{
Link
,
Text
}
=
Typography
;
...
...
@@ -27,8 +26,69 @@ const { Link, Text } = Typography;
const
formActions
=
createFormActions
();
interface
EditableCellProps
extends
React
.
HTMLAttributes
<
HTMLElement
>
{
form
:
FormInstance
editing
:
boolean
dataIndex
:
string
title
:
any
record
:
any
index
:
number
children
:
React
.
ReactNode
handleSave
:
<
T
>
(arg: T) =
>
void
}
const EditableCell: React.FC
<
EditableCellProps
>
= (
{
editing
,
form
,
dataIndex
,
title
,
record
,
index
,
children
,
handleSave
,
...
restProps
}
) =
>
{
const
save
=
async
()
=>
{
try
{
const
values
=
await
form
.
validateFields
()
handleSave
({
...
record
,
...
values
})
}
catch
(
errInfo
)
{
console
.
log
(
'Save failed:'
,
errInfo
)
}
}
return
(
<
td
{
...
restProps
}
>
{
editing
?
(
<
Form
.
Item
name=
{
dataIndex
}
style=
{
{
margin
:
0
}
}
rules=
{
[
{
validator
:
async
(
_
,
value
)
=>
{
const
_pattern
=
/^
(([
1-9
][
0-9
]
*
)
|
(([
0
]\.\d
{1,2}|
[
1-9
][
0-9
]
*
\.\d
{1,2}
)))
$/
if
(
!
value
)
{
return
Promise
.
reject
(
new
Error
(
`${title}不为空或大于0`
))
}
if
(
!
_pattern
.
test
(
value
))
{
return
Promise
.
reject
(
new
Error
(
'最多保留2位小数'
))
}
return
Promise
.
resolve
()
},
},
]
}
>
<
InputNumber
onPressEnter=
{
save
}
onBlur=
{
save
}
/>
</
Form
.
Item
>
)
:
(
children
)
}
</
td
>
)
}
const ReadyReconciliation: React.FC = () =
>
{
const
ref
=
useRef
<
any
>
({})
const
[
form
]
=
Form
.
useForm
()
const
[
childSelectedRowKeys
,
setChildSelectedRowKeys
]
=
useState
<
any
>
([])
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
any
>
([])
const
[
childSelectedRows
,
setChildSelectedRows
]
=
useState
<
any
>
([])
...
...
@@ -40,6 +100,13 @@ const ReadyReconciliation: React.FC = () => {
return
data
}
const
[
editingKey
,
setEditingKey
]
=
useState
(
''
)
const
isEditing
=
(
record
)
=>
`${record?.parentId}_${record?.productId}`
===
editingKey
const
handleEdit
=
(
record
)
=>
{
form
.
setFieldsValue
({
...
record
})
setEditingKey
(
`${record?.parentId}_${record?.productId}`
)
}
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
intl
.
formatMessage
({
id
:
'balance.dingdanhao'
}),
key
:
'billNo'
,
...
...
@@ -98,8 +165,8 @@ const ReadyReconciliation: React.FC = () => {
dataIndex
:
'billTypeName'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
StatusTag
type=
'primary'
title=
{
text
}
/>
}];
const
childColumns
:
ColumnType
<
any
>
[]
=
[{
const
childColumns
:
(
ColumnType
<
any
>
&
{
editable
?:
boolean
})
[]
=
[{
title
:
intl
.
formatMessage
({
id
:
'balance.jiesuanfangshi'
}),
key
:
'payWayName'
,
dataIndex
:
'payWayName'
,
...
...
@@ -147,7 +214,13 @@ const ReadyReconciliation: React.FC = () => {
title
:
`${intl.formatMessage({ id: 'balance.danjia' })}(${intl.formatMessage({ id: 'balance.hanshui' })})`
,
key
:
'price'
,
dataIndex
:
'price'
,
render
:
(
text
:
any
)
=>
priceFormat
(
text
,
5
)
editable
:
true
,
render
:
(
text
:
any
,
record
)
=>
(
<
Space
>
<
Typography
.
Text
>
{
priceFormat
(
text
)
}
</
Typography
.
Text
>
<
EditOutlined
onClick=
{
()
=>
handleEdit
(
record
)
}
/>
</
Space
>
),
},
{
title
:
intl
.
formatMessage
({
id
:
'balance.shouhuoshuliang'
}),
key
:
'receiveQuantity'
,
...
...
@@ -275,6 +348,38 @@ const ReadyReconciliation: React.FC = () => {
setChildSelectedRowKeys
(
childArr
);
}
const
handleSave
=
(
record
)
=>
{
const
param
=
{
billNo
:
record
?.
billNo
,
receiveNo
:
record
?.
receiveNo
,
productNo
:
record
?.
productNo
,
price
:
record
?.
price
,
}
postSettleAccountsBusinessReconciliationUpdatePrice
(
param
).
then
((
res
)
=>
{
if
(
res
.
code
!==
1000
)
{
return
}
setEditingKey
(
''
)
ref
.
current
.
reloadCurrent
()
})
}
const
childEditColumns
=
childColumns
.
map
((
col
)
=>
{
if
(
!
col
.
editable
)
{
return
col
}
return
{
...
col
,
onCell
:
(
record
)
=>
({
record
,
form
,
editing
:
isEditing
(
record
),
dataIndex
:
col
.
dataIndex
,
title
:
col
.
title
,
handleSave
,
}),
}
})
const
handleParentSelectChange
=
(
record
,
selected
,
selectedRow
,
nativeEvent
)
=>
{
let
patentArr
=
[...
selectedRowKeys
];
let
patentRowArr
=
[...
selectedRows
];
...
...
@@ -347,18 +452,25 @@ const ReadyReconciliation: React.FC = () => {
const
childRenderTable
=
(
record
)
=>
{
return
(
<
Table
columns=
{
childColumns
}
size=
"middle"
dataSource=
{
record
[
'products'
]
||
[]
}
rowKey=
'productId'
rowSelection=
{
{
selectedRowKeys
:
childSelectedRowKeys
,
onSelect
:
handleChildSelectChange
,
onSelectAll
:
handleChildSelectAll
,
}
}
pagination=
{
false
}
/>
<
Form
form=
{
form
}
component=
{
false
}
>
<
Table
components=
{
{
body
:
{
cell
:
EditableCell
,
},
}
}
columns=
{
childEditColumns
as
(
ColumnType
<
any
>
&
{
editable
?:
boolean
})[]
}
size=
"middle"
dataSource=
{
record
[
'products'
]
||
[]
}
rowKey=
'productId'
rowSelection=
{
{
selectedRowKeys
:
childSelectedRowKeys
,
onSelect
:
handleChildSelectChange
,
onSelectAll
:
handleChildSelectAll
,
}
}
pagination=
{
false
}
/>
</
Form
>
)
}
...
...
@@ -396,10 +508,7 @@ const ReadyReconciliation: React.FC = () => {
orderNo
:
selectedRows
[
key
].
billNo
,
};
const
_products
=
[];
console
.
log
(
_item
.
products
,
'_item.products'
)
console
.
log
(
selectedRows
,
'childKey1'
)
for
(
let
childKey
in
_item
.
products
)
{
console
.
log
(
selectedRows
,
'childKey2'
)
if
(
childSelectedRowKeys
.
includes
(
_item
.
products
[
childKey
].
productId
))
{
_products
.
push
({
...
_item
.
products
[
childKey
],
expectPayTime
:
formatTimeString
(
_item
.
products
[
childKey
]?.
expectPayTime
,
'YYYY-MM-DD'
)
});
}
...
...
@@ -409,7 +518,6 @@ const ReadyReconciliation: React.FC = () => {
_rows
.
push
(
_item
);
}
}
console
.
log
(
_rows
)
history
.
push
(
'/memberCenter/balance/businessReconciliation/readyAdd/add'
,
{
rows
:
_rows
})
}
...
...
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