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
8f0cfb93
Commit
8f0cfb93
authored
Sep 25, 2020
by
GuanHua
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into dev
parents
1209661b
532a1e41
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
255 additions
and
39 deletions
+255
-39
CustomRelevance.tsx
src/components/NiceForm/components/CustomRelevance.tsx
+2
-2
useBusinessEffects.ts
...kSellStorage/bills/addBills/effects/useBusinessEffects.ts
+30
-13
index.tsx
...ges/transaction/stockSellStorage/bills/addBills/index.tsx
+182
-14
index.ts
...ansaction/stockSellStorage/bills/addBills/schema/index.ts
+40
-10
index.tsx
src/pages/transaction/stockSellStorage/bills/index.tsx
+1
-0
No files found.
src/components/NiceForm/components/CustomRelevance.tsx
View file @
8f0cfb93
...
...
@@ -9,10 +9,9 @@ const RowStyleLayout = styled(props => <div {...props} />)`
width: 100%;
.relevance {
height: 100%;
background: #6b778c;
border: none;
border-radius: 0;
height: 100%;
&[disabled] {
background: #f5f5f5;
...
...
@@ -21,6 +20,7 @@ const RowStyleLayout = styled(props => <div {...props} />)`
.ant-input-group-addon {
padding: 0;
border: none;
}
`
;
...
...
src/pages/transaction/stockSellStorage/bills/addBills/effects/useBusinessEffects.ts
View file @
8f0cfb93
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-16 15:16:47
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-25 1
1:31:15
* @LastEditTime: 2020-09-25 1
6:37:38
* @Description: 联动逻辑相关
*/
import
{
FormEffectHooks
,
FormPath
}
from
'@formily/antd'
;
...
...
@@ -303,6 +303,7 @@ export const useBusinessEffects = (context, actions) => {
linkage
.
componentProps
(
'orderNo'
,
params
);
});
// 对应仓库改变
onFieldInputChange$
(
'inventoryId'
).
subscribe
(
fieldState
=>
{
const
current
=
fieldState
.
originAsyncData
.
find
(
item
=>
item
.
id
===
fieldState
.
value
);
if
(
current
)
{
...
...
@@ -315,14 +316,19 @@ export const useBusinessEffects = (context, actions) => {
const
relevanceInvoicesVal
=
getFieldValue
(
'relevanceInvoices'
);
const
first
=
fieldState
.
value
&&
fieldState
.
value
[
0
];
console
.
log
(
'first'
,
first
)
setFieldValue
(
'memberName'
,
first
?
first
.
supplyMembersName
:
''
);
setFieldValue
(
'supplyMembersName'
,
first
?
first
.
supplyMembersName
:
''
);
setFieldValue
(
'relevanceInvoicesId'
,
first
?
first
.
id
:
null
);
setFieldValue
(
'deliveryAddresId'
,
first
?
first
.
deliveryAddresId
:
null
);
setFieldValue
(
'address'
,
first
?
`
${
first
.
fullAddress
}
${
first
.
receiverName
}
/
${
first
.
phone
}
`
:
''
);
setFieldValue
(
'transport'
,
first
&&
first
.
deliveryType
?
DELIVERY_TYPE
[
first
.
deliveryType
]
:
''
);
// 以下数据只用于收集,不用于展示
setFieldValue
(
'deliveryAddresId'
,
first
?
first
.
deliveryAddresId
:
null
);
setFieldValue
(
'receiverName'
,
first
?
first
.
receiverName
:
''
);
setFieldValue
(
'fullAddress'
,
first
?
first
.
fullAddress
:
''
);
setFieldValue
(
'phone'
,
first
?
first
.
phone
:
''
);
setFieldValue
(
'deliveryType'
,
first
?
first
.
deliveryType
:
null
);
setFieldValue
(
'isDefault'
,
first
?
first
.
isDefault
:
false
);
if
(
!
first
)
{
return
;
}
...
...
@@ -335,10 +341,10 @@ export const useBusinessEffects = (context, actions) => {
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
goodOptions
=
res
.
data
.
map
(
item
=>
({
label
:
`
${
item
.
productId
}
/
${
item
.
productName
}
/¥
${
item
.
price
}
`
,
value
:
item
.
i
d
,
label
:
item
.
productName
,
value
:
item
.
productI
d
,
}));
setFieldState
(
'invoicesDetailsRequests.*.product
Name
'
,
state
=>
{
setFieldState
(
'invoicesDetailsRequests.*.product'
,
state
=>
{
FormPath
.
setIn
(
state
,
'originAsyncData'
,
res
.
data
);
FormPath
.
setIn
(
state
,
'props.enum'
,
goodOptions
);
});
...
...
@@ -374,14 +380,17 @@ export const useBusinessEffects = (context, actions) => {
default
:
break
;
}
});
// 关联单据改变
onFieldInputChange$
(
'orderNo'
).
subscribe
(
fieldState
=>
{
setFieldValue
(
'invoicesDetailsRequests'
,
[]);
});
// 关联明细 商品下拉框 联动商品ID、单价
onFieldInputChange$
(
'invoicesDetailsRequests.*.product
Name
'
).
subscribe
(
fieldState
=>
{
onFieldInputChange$
(
'invoicesDetailsRequests.*.product'
).
subscribe
(
fieldState
=>
{
const
{
name
,
originAsyncData
,
value
}
=
fieldState
;
const
current
=
originAsyncData
.
find
(
item
=>
item
.
i
d
===
value
);
const
current
=
originAsyncData
.
find
(
item
=>
item
.
productI
d
===
value
);
if
(
!
current
)
{
return
;
...
...
@@ -397,6 +406,14 @@ export const useBusinessEffects = (context, actions) => {
);
setFieldState
(
FormPath
.
transform
(
name
,
/
\d
/
,
$1
=>
{
return
`invoicesDetailsRequests.
${
$1
}
.productName`
}),
state
=>
{
state
.
value
=
current
.
productName
;
}
);
setFieldState
(
FormPath
.
transform
(
name
,
/
\d
/
,
$1
=>
{
return
`invoicesDetailsRequests.
${
$1
}
.price`
}),
state
=>
{
...
...
@@ -426,17 +443,17 @@ export const useBusinessEffects = (context, actions) => {
const
{
name
,
value
}
=
fieldState
;
const
originAsyncData
=
getFieldState
(
FormPath
.
transform
(
name
,
/
\d
/
,
$1
=>
{
return
`invoicesDetailsRequests.
${
$1
}
.product
Name
`
return
`invoicesDetailsRequests.
${
$1
}
.product`
}),
state
=>
state
.
originAsyncData
,
);
const
goodId
=
getFieldState
(
FormPath
.
transform
(
name
,
/
\d
/
,
$1
=>
{
return
`invoicesDetailsRequests.
${
$1
}
.product
Name
`
return
`invoicesDetailsRequests.
${
$1
}
.product`
}),
state
=>
state
.
value
,
);;
const
current
=
originAsyncData
.
find
(
item
=>
item
.
i
d
===
goodId
);
const
current
=
originAsyncData
.
find
(
item
=>
item
.
productI
d
===
goodId
);
if
(
!
current
||
isNaN
(
+
value
))
{
return
;
...
...
src/pages/transaction/stockSellStorage/bills/addBills/index.tsx
View file @
8f0cfb93
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
Button
,
Card
,
Spin
,
message
}
from
'antd'
;
import
{
DeleteOutlined
}
from
'@ant-design/icons'
;
import
{
Radio
,
ArrayTable
}
from
'@formily/antd-components'
;
import
{
history
,
Prompt
}
from
'umi'
;
import
moment
from
'moment'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
usePageStatus
,
PageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
SaveOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
createFormActions
,
FormEffectHooks
}
from
'@formily/antd'
;
...
...
@@ -123,14 +124,57 @@ const AddBills: React.FC<{}> = (props: any) => {
const
{
transactionTime
,
orderNo
,
relevanceInvoicesId
,
deliveryAddresId
,
supplyMembersName
,
fullAddress
,
receiverName
,
phone
,
deliveryType
,
isDefault
,
invoicesDetailsList
,
...
rest
}
=
res
.
data
;
const
details
=
invoicesDetailsList
?
invoicesDetailsList
.
map
(
item
=>
({
...
item
,
product
:
item
.
productId
,
amount
:
`¥
${(
+
item
.
productCount
*
item
.
price
).
toFixed
(
2
)}
`
,
}))
:
[];
addSchemaAction
.
setFieldState
(
'*(invoicesTypeId,orderNo)'
,
state
=>
{
state
.
props
[
'x-component-props'
].
disabled
=
true
;
}
);
setBillInfo
({
transactionTime
:
transactionTime
?
moment
(
transactionTime
)
:
moment
(),
orderNo
:
orderNo
?
[{
orderNo
}]
:
[],
transactionTime
:
transactionTime
?
moment
(
transactionTime
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
:
moment
().
format
(
'YYYY-MM-DD HH:mm:ss'
),
orderNo
:
orderNo
?
[
{
orderNo
,
id
:
+
relevanceInvoicesId
,
deliveryAddresId
:
+
deliveryAddresId
,
supplyMembersName
,
fullAddress
,
receiverName
,
phone
,
deliveryType
,
isDefault
,
}
]
:
[]
,
invoicesDetailsRequests
:
details
,
...
rest
,
invoicesTypeId
:
'S00
1
'
,
invoicesTypeId
:
'S00
2
'
,
});
productRowCtl
.
setSelectRow
(
details
);
productRowCtl
.
setSelectedRowKeys
(
details
.
map
(
item
=>
item
.
id
));
}).
finally
(()
=>
{
setInfoLoading
(
false
);
});
...
...
@@ -146,7 +190,56 @@ const AddBills: React.FC<{}> = (props: any) => {
switch
(
invoicesTypeId
)
{
// 采购入库单
case
DOC_TYPE_PURCHASE_RECEIPT
:
{
setInfoLoading
(
true
);
PublicApi
.
getOrderProcurementOrderDetails
({
id
:
relevanceInvoicesId
,
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
;
}
const
{
supplyMembersName
,
deliveryType
,
deliveryAddresId
,
orderNo
,
province
,
city
,
area
,
addres
,
addresName
,
tel
,
isDefault
,
}
=
res
.
data
;
addSchemaAction
.
setFieldState
(
'*(invoicesTypeId,orderNo)'
,
state
=>
{
state
.
props
[
'x-component-props'
].
disabled
=
true
;
}
);
setBillInfo
({
invoicesTypeId
,
relevanceInvoices
:
+
relevanceInvoices
,
orderNo
:
orderNo
?
[
{
orderNo
,
id
:
+
relevanceInvoicesId
,
deliveryAddresId
:
+
deliveryAddresId
,
supplyMembersName
,
fullAddress
:
`
${
province
||
''
}${
city
||
''
}${
area
||
''
}${
addres
||
''
}
`
,
receiverName
:
addresName
||
''
,
phone
:
tel
||
''
,
deliveryType
,
isDefault
,
}
]
:
[]
,
});
}).
finally
(()
=>
{
setInfoLoading
(
false
);
});
break
;
}
...
...
@@ -170,6 +263,7 @@ const AddBills: React.FC<{}> = (props: any) => {
addres
,
addresName
,
tel
,
isDefault
,
}
=
res
.
data
;
addSchemaAction
.
setFieldState
(
'*(invoicesTypeId,orderNo)'
,
...
...
@@ -192,6 +286,7 @@ const AddBills: React.FC<{}> = (props: any) => {
receiverName
:
addresName
||
''
,
phone
:
tel
||
''
,
deliveryType
,
isDefault
,
}
]
:
[]
...
...
@@ -261,7 +356,7 @@ const AddBills: React.FC<{}> = (props: any) => {
setVisible
(
true
);
};
const
tableAddButton
=
(
const
TableAddButton
=
pageStatus
!==
PageStatus
.
PREVIEW
?
(
<
Button
style=
{
{
marginBottom
:
16
}
}
block
...
...
@@ -271,7 +366,7 @@ const AddBills: React.FC<{}> = (props: any) => {
>
添加单据明细
</
Button
>
);
)
:
null
;
const
handleSubmit
=
value
=>
{
const
{
...
...
@@ -284,14 +379,20 @@ const AddBills: React.FC<{}> = (props: any) => {
invoicesDetailsRequests
=
[],
...
rest
}
=
value
;
const
newInvoicesDetailsRequests
=
invoicesDetailsRequests
.
map
(
item
=>
({
...
item
,
productCount
:
+
item
.
productCount
,
const
newInvoicesDetailsRequests
=
invoicesDetailsRequests
.
map
(({
product
,
productCount
,
...
rest
})
=>
({
productCount
:
+
productCount
,
...
rest
,
}));
const
newTransactionTime
=
transactionTime
?
moment
(
transactionTime
).
valueOf
()
:
null
;
const
payload
=
{
orderNo
:
orderNo
[
0
].
orderNo
,
relevanceInvoicesId
:
orderNo
[
0
].
id
,
transactionTime
:
transactionTime
?
transactionTime
.
valueOf
()
:
null
,
transactionTime
:
newTransactionTime
,
invoicesDetailsRequests
:
newInvoicesDetailsRequests
,
...
rest
,
};
...
...
@@ -315,6 +416,25 @@ const AddBills: React.FC<{}> = (props: any) => {
});
}
else
{
// update action
PublicApi
.
postWarehouseInvoicesUpdata
({
id
:
+
id
,
invoicesAbstract
:
payload
.
invoicesAbstract
,
inventoryId
:
payload
.
inventoryId
,
inventoryRole
:
payload
.
inventoryRole
,
transactionTime
:
payload
.
transactionTime
,
invoicesDetailsRequests
:
payload
.
invoicesDetailsRequests
,
})
.
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
;
}
setUnsaved
(
false
);
setTimeout
(()
=>
{
history
.
goBack
();
},
800
);
}).
finally
(()
=>
{
setSubmitLoading
(
false
);
});
}
break
;
}
...
...
@@ -336,6 +456,25 @@ const AddBills: React.FC<{}> = (props: any) => {
});
}
else
{
// update action
PublicApi
.
postWarehouseInvoicesUpdata
({
id
:
+
id
,
invoicesAbstract
:
payload
.
invoicesAbstract
,
inventoryId
:
payload
.
inventoryId
,
inventoryRole
:
payload
.
inventoryRole
,
transactionTime
:
payload
.
transactionTime
,
invoicesDetailsRequests
:
payload
.
invoicesDetailsRequests
,
})
.
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
;
}
setUnsaved
(
false
);
setTimeout
(()
=>
{
history
.
goBack
();
},
800
);
}).
finally
(()
=>
{
setSubmitLoading
(
false
);
});
}
break
;
}
...
...
@@ -394,7 +533,8 @@ const AddBills: React.FC<{}> = (props: any) => {
brand
:
item
.
brand
.
name
,
unit
:
item
.
unitName
,
costPrice
:
item
.
costPrice
,
productName
:
undefined
,
product
:
undefined
,
productName
:
item
.
productName
,
productId
:
''
,
price
:
0
,
productCount
:
0
,
...
...
@@ -415,6 +555,29 @@ const AddBills: React.FC<{}> = (props: any) => {
return
[];
}
const
handleRemoveItem
=
(
index
:
number
)
=>
{
const
newSelectRow
=
[...
productRowCtl
.
selectRow
];
const
newSelectedRowKeys
=
[...
productRowCtl
.
selectedRowKeys
];
const
newValue
=
[...
addSchemaAction
.
getFieldValue
(
'invoicesDetailsRequests'
)];
newSelectRow
.
splice
(
index
,
1
);
newSelectedRowKeys
.
splice
(
index
,
1
);
productRowCtl
.
setSelectRow
(
newSelectRow
);
productRowCtl
.
setSelectedRowKeys
(
newSelectedRowKeys
);
newValue
.
splice
(
index
,
1
);
addSchemaAction
.
setFieldValue
(
'invoicesDetailsRequests'
,
newValue
);
};
// ArrayTable自定义渲染
const
renderListTableRemove
=
(
index
:
number
)
=>
(
<
Button
shape=
"circle"
icon=
{
<
DeleteOutlined
/>
}
onClick=
{
()
=>
handleRemoveItem
(
index
)
}
/>
);
return
(
<
Spin
spinning=
{
infoLoading
}
>
<
PageHeaderWrapper
...
...
@@ -444,15 +607,20 @@ const AddBills: React.FC<{}> = (props: any) => {
}
>
<
Card
>
<
NiceForm
<
NiceForm
defaultValue=
{
{
transactionTime
:
moment
().
format
(
'YYYY-MM-DD HH:mm:ss'
),
}
}
initialValues=
{
billInfo
}
expressionScope=
{
{
tableAddButton
,
TableAddButton
,
renderListTableRemove
,
}
}
components=
{
{
RadioGroup
:
Radio
.
Group
,
ArrayTable
,
}
}
editable=
{
pageStatus
!==
PageStatus
.
PREVIEW
}
effects=
{
(
$
,
actions
)
=>
{
createEffects
(
$
,
actions
)
onFormInputChange$
().
subscribe
(()
=>
{
...
...
src/pages/transaction/stockSellStorage/bills/addBills/schema/index.ts
View file @
8f0cfb93
...
...
@@ -253,7 +253,6 @@ export const addBillSchema: ISchema = {
transactionTime
:
{
type
:
'date'
,
title
:
'单据时间'
,
default
:
moment
(),
'x-component-props'
:
{
format
:
'YYYY-MM-DD HH:mm:ss'
,
showTime
:
true
,
...
...
@@ -325,17 +324,12 @@ export const addBillSchema: ISchema = {
},
},
},
member
Name
:
{
supplyMembers
Name
:
{
type
:
'string'
,
'x-component'
:
'Text'
,
title
:
'会员名称'
,
default
:
''
,
},
// 不用于展示,只用于收集值
deliveryAddresId
:
{
type
:
'string'
,
display
:
false
,
},
address
:
{
type
:
'string'
,
'x-component'
:
'Text'
,
...
...
@@ -347,6 +341,36 @@ export const addBillSchema: ISchema = {
'x-component'
:
'Text'
,
title
:
'物流方式'
,
default
:
''
,
},
// 不用于展示,只用于收集值
deliveryAddresId
:
{
type
:
'string'
,
display
:
false
,
},
// 不用于展示,只用于收集值
receiverName
:
{
type
:
'string'
,
display
:
false
,
},
// 不用于展示,只用于收集值
fullAddress
:
{
type
:
'string'
,
display
:
false
,
},
// 不用于展示,只用于收集值
phone
:
{
type
:
'string'
,
display
:
false
,
},
// 不用于展示,只用于收集值
deliveryType
:
{
type
:
'number'
,
display
:
false
,
},
// 不用于展示,只用于收集值
isDefault
:
{
type
:
'boolean'
,
display
:
false
,
},
},
},
...
...
@@ -371,14 +395,15 @@ export const addBillSchema: ISchema = {
type
:
'object'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{
t
ableAddButton}}'
children
:
'{{
T
ableAddButton}}'
},
},
invoicesDetailsRequests
:
{
type
:
'array'
,
'x-component'
:
'ArrayTable'
,
'x-component-props'
:
{
renderAddition
:
()
=>
null
,
renderAddition
:
()
=>
null
,
renderRemove
:
'{{renderListTableRemove}}'
,
},
items
:
{
type
:
'object'
,
...
...
@@ -418,7 +443,7 @@ export const addBillSchema: ISchema = {
title
:
'成本价'
,
'x-component'
:
'Text'
,
},
product
Name
:
{
product
:
{
type
:
'string'
,
title
:
'商品名称'
,
enum
:
[],
...
...
@@ -432,6 +457,11 @@ export const addBillSchema: ISchema = {
},
],
},
// 不用于展示,只收集值
productName
:
{
type
:
'string'
,
display
:
false
,
},
productId
:
{
type
:
'string'
,
title
:
'商品ID'
,
...
...
src/pages/transaction/stockSellStorage/bills/index.tsx
View file @
8f0cfb93
...
...
@@ -242,6 +242,7 @@ const Bills: React.FC<{}> = () => {
render
:
(
_
,
record
:
any
)
=>
{
return
(
<>
<
Button
type=
"link"
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/stockSellStorage/addBills?id=${record.id}`
)
}
>
修改
</
Button
>
{
record
.
state
===
DOC_STATUS_UNREVIEWED
&&
(
<>
<
Button
type=
"link"
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/stockSellStorage/addBills?id=${record.id}`
)
}
>
修改
</
Button
>
...
...
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