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
85869e8e
Commit
85869e8e
authored
Dec 17, 2020
by
Bill
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into test
parents
b0c877be
49848366
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
355 additions
and
202 deletions
+355
-202
info.tsx
src/pages/balance/settleRules/memberSettle/info.tsx
+14
-9
index.tsx
src/pages/balance/settleRules/memberSettle/schema/index.tsx
+1
-1
columns.tsx
src/pages/handling/assign/add/columns.tsx
+28
-0
formEffects.tsx
src/pages/handling/assign/add/formEffects.tsx
+48
-0
index.tsx
src/pages/handling/assign/add/index.tsx
+116
-132
schema.tsx
src/pages/handling/assign/add/schema.tsx
+117
-33
useRowSelection.tsx
src/pages/handling/common/useRowSelection.tsx
+2
-2
index.tsx
src/pages/handling/components/EnterPrise/index.tsx
+13
-5
schema.tsx
src/pages/handling/components/EnterPrise/schema.tsx
+1
-1
content.tsx
src/pages/handling/components/ProcessDetail/content.tsx
+6
-6
index.tsx
src/pages/handling/components/ProcessDetail/index.tsx
+6
-2
UploadFile.tsx
src/pages/handling/components/UploadFile/UploadFile.tsx
+2
-5
index.tsx
src/utils/index.tsx
+1
-6
No files found.
src/pages/balance/settleRules/memberSettle/info.tsx
View file @
85869e8e
...
...
@@ -49,7 +49,7 @@ const common_columns: any = [
]
const
MemberSettleAdd
:
React
.
FC
=
()
=>
{
const
[
visible
,
setVisible
]
=
useState
(
false
)
const
[
memberRowSelection
,
memberRowCtl
]
=
useRowSelectionTable
({
customKey
:
'
i
d'
});
const
[
memberRowSelection
,
memberRowCtl
]
=
useRowSelectionTable
({
customKey
:
'
uniqueI
d'
});
const
[
initialValue
,
setInitialValue
]
=
useState
({});
const
{
id
,
preview
}
=
usePageStatus
();
const
[
submitLoading
,
setSubmitLoading
]
=
useState
(
false
);
...
...
@@ -77,7 +77,7 @@ const MemberSettleAdd: React.FC = () => {
title
:
'操作'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
onClick=
{
()
=>
handleRemove
(
record
.
member
Id
)
}
>
删除
</
div
>
<
div
onClick=
{
()
=>
handleRemove
(
record
.
unique
Id
)
}
>
删除
</
div
>
)
}
}
...
...
@@ -102,7 +102,11 @@ const MemberSettleAdd: React.FC = () => {
const
fetchMemberData
=
async
(
params
:
any
)
=>
{
//member/manage/lower/page/bynamerole
const
{
data
}
=
await
PublicApi
.
getMemberManageLowerPageBynamerole
(
params
);
return
data
return
{
...
data
,
data
:
data
.
data
.
map
((
v
)
=>
({...
v
,
uniqueId
:
v
.
memberId
+
"_"
+
v
.
roleId
})),
totalCount
:
data
.
totalCount
}
}
// 获取适用会员下拉搜索框
...
...
@@ -155,11 +159,11 @@ const MemberSettleAdd: React.FC = () => {
const
handleRemove
=
(
id
:
number
)
=>
{
const
string
=
'Tabs.memberTab.someLists'
;
const
chooseList
=
formActions
.
getFieldValue
(
string
);
const
res
=
chooseList
.
filter
((
item
)
=>
item
.
member
Id
!==
id
);
const
res
=
chooseList
.
filter
((
item
)
=>
item
.
unique
Id
!==
id
);
formActions
.
setFieldValue
(
string
,
res
);
// 必须设置key
memberRowCtl
.
setSelectRow
(
res
);
memberRowCtl
.
setSelectedRowKeys
(
res
.
map
((
item
)
=>
item
.
member
Id
))
memberRowCtl
.
setSelectedRowKeys
(
res
.
map
((
item
)
=>
item
.
unique
Id
))
}
// 从PAAS平台--规则配置--平台规则配置取已勾选的结算方式决定是否显示结算方式
...
...
@@ -188,10 +192,11 @@ const MemberSettleAdd: React.FC = () => {
otherValues
:
[
res
.
data
.
settlementDays
,
res
.
data
.
settlementDate
],
}
})
formActions
.
setFieldValue
(
'Tabs.memberTab.someLists'
,
res
.
data
.
memberList
);
const
list
=
res
.
data
.
memberList
.
map
((
item
)
=>
({...
item
,
uniqueId
:
item
.
memberId
+
"_"
+
item
.
roleId
}))
formActions
.
setFieldValue
(
'Tabs.memberTab.someLists'
,
list
);
// 必须设置key
memberRowCtl
.
setSelectRow
(
res
.
data
.
memberL
ist
);
memberRowCtl
.
setSelectedRowKeys
(
res
.
data
.
memberList
.
map
((
item
)
=>
item
.
memberId
))
memberRowCtl
.
setSelectRow
(
l
ist
);
memberRowCtl
.
setSelectedRowKeys
(
res
.
data
.
memberList
.
map
((
item
)
=>
item
.
memberId
+
"_"
+
item
.
roleId
))
}
else
{
message
.
error
({
content
:
res
.
message
})
}
...
...
@@ -238,7 +243,7 @@ const MemberSettleAdd: React.FC = () => {
rowSelection=
{
memberRowSelection
}
fetchTableData=
{
params
=>
fetchMemberData
(
params
)
}
tableProps=
{
{
rowKey
:
'
i
d'
,
rowKey
:
'
uniqueI
d'
,
}
}
formilyProps=
{
{
...
...
src/pages/balance/settleRules/memberSettle/schema/index.tsx
View file @
85869e8e
...
...
@@ -129,7 +129,7 @@ export const addSchema = {
},
'x-component'
:
'MultTable'
,
'x-component-props'
:
{
rowKey
:
'
member
Id'
,
rowKey
:
'
unique
Id'
,
prefix
:
"{{tableAddButton}}"
,
columns
:
"{{tableColumns}}"
// columns: "{{tableColumns}}",
...
...
src/pages/handling/assign/add/columns.tsx
0 → 100644
View file @
85869e8e
import
React
from
'react'
;
export
const
productColumns
=
[
// { title: '订单号', dataIndex: 'orderNo' },
{
title
:
'商品ID'
,
dataIndex
:
'commodityId'
},
{
title
:
'商品名称'
,
dataIndex
:
'name'
},
{
title
:
'品类'
,
dataIndex
:
'customerCategoryName'
},
{
title
:
'品牌'
,
dataIndex
:
'brandName'
},
{
title
:
'单位'
,
dataIndex
:
'unitName'
},
// { title: '订单数量', dataIndex: 'orderTotal' },
// { title: '剩余加工数量', dataIndex: 'restTotal' },
{
title
:
'加工数量'
,
dataIndex
:
'processNum'
},
{
title
:
'加工单价'
,
dataIndex
:
'processUnitPrice'
},
{
title
:
'加工费'
,
dataIndex
:
'processTotalPrice'
},
]
export
const
orderColumns
=
[
{
title
:
'订单号'
,
dataIndex
:
'orderNo'
},
{
title
:
'商品ID'
,
dataIndex
:
'commodityId'
},
{
title
:
'商品名称'
,
dataIndex
:
'name'
},
{
title
:
'品类'
,
dataIndex
:
'customerCategoryName'
},
{
title
:
'品牌'
,
dataIndex
:
'brandName'
},
{
title
:
'单位'
,
dataIndex
:
'unitName'
},
{
title
:
'订单数量'
,
dataIndex
:
'orderTotal'
},
{
title
:
'剩余加工数量'
,
dataIndex
:
'restTotal'
},
{
title
:
'加工数量'
,
dataIndex
:
'processNum'
},
{
title
:
'加工单价'
,
dataIndex
:
'processUnitPrice'
},
{
title
:
'加工费'
,
dataIndex
:
'processTotalPrice'
},
]
src/pages/handling/assign/add/formEffects.tsx
View file @
85869e8e
import
{
createFormActions
,
FormEffectHooks
}
from
'@formily/antd'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
{
onFieldValueChange$
,
onFieldMount$
}
=
FormEffectHooks
/**
* formEffect, 表单联动操作放这里操作,包括表单的生命周期等操作
*/
export
const
formEffects
=
()
=>
{
const
formActions
=
createFormActions
()
// 当物流为 物流时,那么填充
onFieldMount$
(
'receivefullAddress'
).
subscribe
((
state
)
=>
{
PublicApi
.
getLogisticsReceiverAddressPage
({
current
:
'1'
,
pageSize
:
'99'
})
.
then
((
res
)
=>
{
let
options
=
[];
if
(
res
.
code
===
1000
)
{
options
=
res
.
data
.
data
.
map
((
item
)
=>
{
return
{
label
:
`
${
item
.
fullAddress
}
/
${
item
.
receiverName
}
/
${
item
.
phone
}
`
,
value
:
item
.
id
}}
)
}
formActions
.
setFieldState
(
"receivefullAddress"
,
(
state
)
=>
{
state
.
props
[
"x-component-props"
][
"options"
]
=
options
;
})
})
})
/**
* 当改变物流地址的时候,那么修改隐藏的3个字段,
* 1. receiveAddress 详细的物流地址
* 2. receiveUserName 收货人
* 3. receiveUserTel 收货人电话
*/
onFieldValueChange$
(
'receivefullAddress'
).
subscribe
((
state
)
=>
{
if
(
state
.
visible
)
{
const
options
=
state
.
props
[
"x-component-props"
][
"options"
];
const
target
=
options
.
filter
((
item
)
=>
item
.
value
==
state
.
value
)[
0
];
if
(
target
)
{
const
[
receiveAddress
,
receiveUserName
,
receiveUserTel
]
=
target
.
label
.
split
(
"/"
);
formActions
.
setFieldValue
(
"receiveAddress"
,
receiveAddress
.
trim
());
formActions
.
setFieldValue
(
"receiveUserName"
,
receiveUserName
.
trim
());
formActions
.
setFieldValue
(
"receiveUserTel"
,
receiveUserTel
.
trim
());
formActions
.
setFieldValue
(
"receiverAddressId"
,
state
.
value
)
}
}
})
}
src/pages/handling/assign/add/index.tsx
View file @
85869e8e
...
...
@@ -19,16 +19,16 @@ import { getAuth } from '@/utils/auth';
import
{
ENTERPRISE_MALL
}
from
'../../common'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
moment
from
'moment'
;
import
{
productColumns
,
orderColumns
}
from
'./columns'
;
import
{
formEffects
}
from
'./formEffects'
;
const
formActions
=
createFormActions
();
const
{
onFieldValueChange$
,
onFieldMount$
}
=
FormEffectHooks
const
Add
:
React
.
FC
<
{}
>
=
()
=>
{
const
authInfo
=
getAuth
();
const
pathname
=
history
.
location
.
pathname
;
const
{
id
}
=
usePageStatus
();
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
const
[
activeSource
,
setActiveSource
]
=
useState
(
'加工订单'
)
// 加工企业 modal 框
const
[
modalEnterPriseVisible
,
setEnterPriseModalVisible
]
=
useState
<
boolean
>
(
false
);
// 加工商品 modal 框
...
...
@@ -41,8 +41,8 @@ const Add: React.FC<{}> = () => {
const
postData
=
list
.
map
((
item
)
=>
{
return
{
productId
:
"fullId"
in
item
?
item
.
commodityId
:
item
.
id
,
memberId
:
item
.
memberId
,
memberRoleId
:
item
.
memberRoleId
,
memberId
:
item
.
memberId
||
authInfo
.
memberId
,
memberRoleId
:
item
.
memberRoleId
||
authInfo
.
memberRoleId
,
shopId
:
ENTERPRISE_MALL
[
authInfo
.
memberType
],
type
:
5
,
}
...
...
@@ -72,6 +72,7 @@ const Add: React.FC<{}> = () => {
disabled
:
record
.
purchaseCount
-
(
record
.
processNum
||
0
)
<=
0
,
}),
});
const
enterpriseTableRowSelection
=
useRowSelection
({
primaryKey
:
'uniqueId'
,
type
:
'radio'
});
// 选择加工企业 modal 层
const
connectProduct
=
(
...
...
@@ -98,9 +99,9 @@ const Add: React.FC<{}> = () => {
explain
.
forEach
((
item
,
index
)
=>
{
descValue
[
descArr
[
index
]]
=
item
.
value
})
setActiveSource
(
data
.
source
===
1
?
"加工订单"
:
"加工商品"
)
;
const
isOrderProcess
=
data
.
source
===
1
;
const
someLists
=
details
.
map
((
item
)
=>
{
const
orderData
=
data
.
source
===
1
const
orderData
=
isOrderProcess
?
{
id
:
item
.
productId
,
// 当前id是错误的
fullId
:
item
.
orderDetailId
,
...
...
@@ -123,39 +124,61 @@ const Add: React.FC<{}> = () => {
processTotalPrice
:
item
.
processTotalPrice
,
restTotal
:
item
.
surplusProcessNum
,
files
:
item
.
property
.
annex
,
productProps
:
item
.
property
.
specs
,
...
orderData
}
})
if
(
isOrderProcess
)
{
const
orderDetailkeys
=
someLists
.
map
((
item
)
=>
item
.
fullId
);
orderTableRowSelection
.
setSelectedKeys
(
orderDetailkeys
);
orderTableRowSelection
.
setSelectedRows
(
someLists
);
}
else
{
const
keys
=
someLists
.
map
((
item
)
=>
item
.
id
);
productTableRowSelection
.
setSelectedKeys
(
keys
);
productTableRowSelection
.
setSelectedRows
(
someLists
);
}
enterpriseTableRowSelection
.
setSelectedKeys
([
data
.
processMemberId
+
"_"
+
data
.
processRoleId
]);
enterpriseTableRowSelection
.
setSelectedRows
([{
memberId
:
data
.
processMemberId
,
name
:
data
.
processName
,
roleId
:
data
.
processRoleId
,
uniqueId
:
data
.
processMemberId
+
"_"
+
data
.
processRoleId
}])
setEditInfo
({
...
descValue
,
...
rest
,
createTime
:
moment
(
data
.
createTime
).
format
(
'YYYY-MM-DD'
),
receivefullAddress
:
data
.
receiverAddressId
,
deliveryDate
:
moment
(
deliveryDate
),
enclosure
:
annex
,
someLists
:
someLists
,
...
descValue
,
...
rest
orderList
:
isOrderProcess
?
someLists
:
[],
productList
:
!
isOrderProcess
?
someLists
:
[],
outerWorkFlow
:
data
.
outerWorkflowRecordsList
,
innerWorkFlow
:
data
.
innerWorkflowRecordsList
,
controller
:
1
,
})
}
})
}
},
[
id
])
const
noticesDetailColumn
=
()
=>
{
const
blackList
=
[
"orderNo"
,
"orderTotal"
,
"restTotal"
];
const
tempColumns
=
[
{
title
:
'订单号'
,
dataIndex
:
'orderNo'
},
{
title
:
'商品ID'
,
dataIndex
:
'commodityId'
},
{
title
:
'商品名称'
,
dataIndex
:
'name'
},
{
title
:
'品类'
,
dataIndex
:
'customerCategoryName'
},
{
title
:
'品牌'
,
dataIndex
:
'brandName'
},
{
title
:
'单位'
,
dataIndex
:
'unitName'
},
{
title
:
'订单数量'
,
dataIndex
:
'orderTotal'
},
{
title
:
'剩余加工数量'
,
dataIndex
:
'restTotal'
},
{
title
:
'加工数量'
,
dataIndex
:
'processNum'
},
{
title
:
'加工单价'
,
dataIndex
:
'processUnitPrice'
},
{
title
:
'加工费'
,
dataIndex
:
'processTotalPrice'
},
{
useEffect
(()
=>
{
if
(
pathname
.
includes
(
"add"
))
{
setEditInfo
({
source
:
1
,
createTime
:
" "
,
noticeNo
:
" "
,
controller
:
1
})
}
},
[])
const
actionColumns
=
[{
title
:
'操作'
,
render
:
(
text
,
record
)
=>
{
const
uniqueID
=
activeSource
==
'加工订单'
?
record
.
fullId
:
record
.
id
// 只有加工订单才有fullId
const
uniqueID
=
"fullId"
in
record
?
record
.
fullId
:
record
.
id
;
const
files
=
record
.
files
||
[];
return
(
<
Space
>
<
ProcessDetail
...
...
@@ -169,6 +192,7 @@ const Add: React.FC<{}> = () => {
category=
{
record
.
customerCategoryName
}
productName=
{
record
.
name
}
unitName=
{
record
.
unitName
}
files=
{
files
}
>
<
a
>
查看
</
a
>
</
ProcessDetail
>
...
...
@@ -184,6 +208,8 @@ const Add: React.FC<{}> = () => {
category=
{
record
.
customerCategoryName
}
productName=
{
record
.
name
}
unitName=
{
record
.
unitName
}
files=
{
files
}
>
<
a
>
编辑
</
a
>
</
ProcessDetail
>
...
...
@@ -191,115 +217,58 @@ const Add: React.FC<{}> = () => {
</
Space
>
)
}
},
]
return
activeSource
!==
'加工订单'
?
tempColumns
.
filter
((
item
)
=>
!
blackList
.
includes
(
item
.
dataIndex
))
:
tempColumns
;
}];
const
renderProductColumn
=
()
=>
{
const
newColumn
=
[...
productColumns
,
...
actionColumns
];
return
newColumn
}
const
renderOrderColumn
=
()
=>
{
const
newColumn
=
[...
orderColumns
,
...
actionColumns
];
return
newColumn
}
// 选择弹框 element
const
tableAddButton
=
()
=>
{
// 选择弹框 element 订单
const
tableProductAddButton
=
()
=>
{
return
(
<
div
>
<
Button
onClick=
{
handleShowProcessModal
}
onClick=
{
()
=>
setModalProductVisible
(
true
)
}
style=
{
{
marginBottom
:
16
}
}
block
icon=
{
<
PlusOutlined
/>
}
type=
'dashed'
>
选择
{
activeSource
}
选择
加工商品
</
Button
>
</
div
>
)
}
// 通知单明细 -> 通知单来源
const
source
=
()
=>
{
return
(
<
Radio
checked=
{
true
}
>
{
activeSource
}
</
Radio
>
)
}
// 流转记录
const
RadioBtnGroup
=
()
=>
{
return
(
<
Radio
.
Group
options=
{
[
{
label
:
'外部流转(0)'
,
value
:
1
},
{
label
:
'内部流转(0)'
,
value
:
2
}
]
}
optionType=
"button"
/>
)
}
/**
* formEffect, 表单联动操作放这里操作,包括表单的生命周期等操作
*/
const
formEffects
=
()
=>
()
=>
{
onFieldValueChange$
(
'source'
).
subscribe
((
state
)
=>
{
if
(
state
.
mounted
)
{
const
value
=
state
.
value
==
1
?
'加工订单'
:
'加工商品'
;
setActiveSource
(
value
);
formActions
.
setFieldValue
(
"Tabs.tab-2.layout.someLists"
,
[]);
}
})
// 当物流为 物流时,那么填充
onFieldMount$
(
'receivefullAddress'
).
subscribe
((
state
)
=>
{
PublicApi
.
getLogisticsReceiverAddressPage
({
current
:
'1'
,
pageSize
:
'99'
})
.
then
((
res
)
=>
{
let
options
=
[];
if
(
res
.
code
===
1000
)
{
options
=
res
.
data
.
data
.
map
((
item
)
=>
{
return
{
label
:
`
${
item
.
fullAddress
}
/
${
item
.
receiverName
}
/
${
item
.
phone
}
`
,
value
:
item
.
id
}}
const
tableOrderAddButton
=
()
=>
{
return
(
<
div
>
<
Button
onClick=
{
()
=>
setModalOrderVisible
(
true
)
}
style=
{
{
marginBottom
:
16
}
}
block
icon=
{
<
PlusOutlined
/>
}
type=
'dashed'
>
选择加工订单
</
Button
>
</
div
>
)
}
formActions
.
setFieldState
(
"receivefullAddress"
,
(
state
)
=>
{
state
.
props
[
"x-component-props"
][
"options"
]
=
options
;
})
})
})
/**
* 当改变物流地址的时候,那么修改隐藏的3个字段,
* 1. receiveAddress 详细的物流地址
* 2. receiveUserName 收货人
* 3. receiveUserTel 收货人电话
*/
onFieldValueChange$
(
'receivefullAddress'
).
subscribe
((
state
)
=>
{
if
(
state
.
visible
)
{
const
options
=
state
.
props
[
"x-component-props"
][
"options"
];
const
target
=
options
.
filter
((
item
)
=>
item
.
value
==
state
.
value
)[
0
];
if
(
target
)
{
const
[
receiveAddress
,
receiveUserName
,
receiveUserTel
]
=
target
.
label
.
split
(
"/"
);
formActions
.
setFieldValue
(
"receiveAddress"
,
receiveAddress
.
trim
());
formActions
.
setFieldValue
(
"receiveUserName"
,
receiveUserName
.
trim
());
formActions
.
setFieldValue
(
"receiveUserTel"
,
receiveUserTel
.
trim
());
formActions
.
setFieldValue
(
"receiverAddressId"
,
state
.
value
)
}
}
})
}
// 选择加工商品弹框控制
const
handleShowProcessModal
=
()
=>
{
const
source
=
formActions
.
getFieldValue
(
'source'
);
if
(
source
==
1
)
{
setModalOrderVisible
(
true
);
}
else
{
setModalProductVisible
(
true
)
}
}
/**
* 加工企业modal框 行勾选
* @param rows
*/
const
enterPriseOnOk
=
(
rows
)
=>
{
const
{
memberId
,
name
,
roleId
}
=
rows
.
selectRow
[
0
];
const
enterPriseOnOk
=
()
=>
{
const
row
=
enterpriseTableRowSelection
.
hasSelectedRows
;
const
{
memberId
,
name
,
roleId
}
=
row
[
0
];
formActions
.
setFieldValue
(
'Tabs.tab-1.layout.processName'
,
name
);
formActions
.
setFieldValue
(
'Tabs.tab-1.layout.processMemberId'
,
memberId
);
formActions
.
setFieldValue
(
'Tabs.tab-1.layout.processRoleId'
,
roleId
);
...
...
@@ -310,7 +279,7 @@ const Add: React.FC<{}> = () => {
* @param rows
*/
const
processProductSelected
=
()
=>
{
formActions
.
setFieldValue
(
'Tabs.tab-2.layout.
someLists
'
,
productTableRowSelection
.
hasSelectedRows
)
formActions
.
setFieldValue
(
'Tabs.tab-2.layout.
productList
'
,
productTableRowSelection
.
hasSelectedRows
)
}
/**
...
...
@@ -318,7 +287,7 @@ const Add: React.FC<{}> = () => {
* @param row
*/
const
processOrderOnok
=
()
=>
{
formActions
.
setFieldValue
(
'Tabs.tab-2.layout.
someLists
'
,
orderTableRowSelection
.
hasSelectedRows
)
formActions
.
setFieldValue
(
'Tabs.tab-2.layout.
orderList
'
,
orderTableRowSelection
.
hasSelectedRows
)
}
/**
...
...
@@ -329,6 +298,9 @@ const Add: React.FC<{}> = () => {
const
{
deliveryDate
,
receivefullAddress
,
controller
,
outerStatus
,
innerStatus
,
// receiveAddressID,
enclosure
=
[],
deliveryDesc
=
''
,
...
...
@@ -337,10 +309,14 @@ const Add: React.FC<{}> = () => {
materialDesc
=
''
,
packingDesc
=
''
,
otherDesc
=
''
,
someLists
,
// someLists,
productList
,
orderList
,
...
rest
}
=
values
;
const
deliveryDateFormat
=
deliveryDate
.
unix
()
*
1000
;
const
isProcessProduct
=
values
.
source
===
2
;
const
someLists
=
isProcessProduct
?
productList
:
orderList
;
const
isSomeFieldNotFill
=
someLists
.
some
((
item
)
=>
{
return
typeof
item
.
processNum
===
'undefined'
||
typeof
item
.
processUnitPrice
===
'undefined'
})
...
...
@@ -349,9 +325,8 @@ const Add: React.FC<{}> = () => {
message
.
error
(
"通知单明细中有加工商品的加工数量或加工单价未填写"
);
return
}
console
.
log
(
someLists
);
const
{
isSuccess
,
data
}
=
await
judgeSameWorkFlow
(
someLists
);
console
.
log
(
data
);
if
(
!
isSuccess
)
{
message
.
error
(
"您所选择的商品的工作流不一致,请删除不一致的工作流商品"
);
return
...
...
@@ -414,7 +389,9 @@ const Add: React.FC<{}> = () => {
delete
postData
.
receiverAddressId
}
console
.
log
(
postData
);
PublicApi
.
postEnhanceSupplierToBeAddAdd
(
postData
)
const
service
=
pathname
.
includes
(
"edit"
)
?
PublicApi
.
postEnhanceSupplierToBeAddUpdate
:
PublicApi
.
postEnhanceSupplierToBeAddAdd
const
withId
=
pathname
.
includes
(
"edit"
)
?
{
id
:
editInfo
.
id
,
...
postData
}:
postData
;
service
(
withId
)
.
then
(
data
=>
{
setSubmitLoading
(
false
);
if
(
data
.
code
===
1000
)
{
...
...
@@ -426,8 +403,10 @@ const Add: React.FC<{}> = () => {
}
const
handleChangeSomeList
=
(
values
:
any
)
=>
{
let
someList
=
formActions
.
getFieldValue
(
'Tabs.tab-2.layout.someLists'
);
const
primaryKey
=
activeSource
===
'加工订单'
?
'fullId'
:
'id'
const
isProcessProduct
=
formActions
.
getFieldValue
(
'source'
)
===
2
;
const
keyName
=
isProcessProduct
?
'Tabs.tab-2.layout.productList'
:
'Tabs.tab-2.layout.orderList'
let
someList
=
formActions
.
getFieldValue
(
keyName
);
const
primaryKey
=
!
isProcessProduct
?
'fullId'
:
'id'
const
index
=
someList
.
findIndex
((
item
)
=>
item
[
primaryKey
]
==
values
.
uniqueID
);
if
(
index
>
-
1
)
{
someList
[
index
]
=
{
...
...
@@ -439,7 +418,7 @@ const Add: React.FC<{}> = () => {
files
:
values
.
files
}
console
.
log
(
someList
)
formActions
.
setFieldValue
(
'Tabs.tab-2.layout.someLists'
,
[...
someList
])
formActions
.
setFieldValue
(
keyName
,
[...
someList
])
}
}
...
...
@@ -449,13 +428,15 @@ const Add: React.FC<{}> = () => {
* @param id
*/
const
handleRemoveRow
=
(
id
:
number
)
=>
{
const
currentList
=
formActions
.
getFieldValue
(
'Tabs.tab-2.layout.someLists'
);
const
primaryKey
=
activeSource
===
'加工订单'
?
'fullId'
:
'id'
const
isProcessProduct
=
formActions
.
getFieldValue
(
'source'
)
===
2
;
const
keyName
=
isProcessProduct
?
'Tabs.tab-2.layout.productList'
:
'Tabs.tab-2.layout.orderList'
const
currentList
=
formActions
.
getFieldValue
(
keyName
);
const
primaryKey
=
!
isProcessProduct
?
'fullId'
:
'id'
const
newList
=
currentList
.
filter
((
item
)
=>
item
[
primaryKey
]
!==
id
);
formActions
.
setFieldValue
(
'Tabs.tab-2.layout.someLists'
,
newList
)
formActions
.
setFieldValue
(
keyName
,
newList
)
const
newSelectedKeys
=
newList
.
map
((
item
)
=>
item
[
primaryKey
]);
const
newSelectedRows
=
newList
;
if
(
activeSource
===
'加工订单'
)
{
if
(
!
isProcessProduct
)
{
orderTableRowSelection
.
setSelectedRows
(
newSelectedRows
);
orderTableRowSelection
.
setSelectedKeys
(
newSelectedKeys
);
}
else
{
...
...
@@ -486,19 +467,22 @@ const Add: React.FC<{}> = () => {
initialValues=
{
editInfo
}
schema=
{
schema
}
actions=
{
formActions
}
components=
{
{
WrapUploadFile
,
DatePicker
,
Select
,
Table
}
}
components=
{
{
WrapUploadFile
,
DatePicker
,
Select
,
Table
,
aaa
:
Radio
.
Group
}
}
expressionScope=
{
{
connectProduct
,
table
AddButton
:
table
AddButton
(),
source
:
source
(),
RadioBtnGroup
:
RadioBtnGroup
(),
noticesDetailColumn
:
noticesDetailColumn
()
table
OrderAddButton
:
tableOrder
AddButton
(),
tableProductAddButton
:
tableProductAddButton
(),
renderProductColumn
:
renderProductColumn
(),
renderOrderColumn
:
renderOrderColumn
(),
}
}
onSubmit=
{
handleSubmit
}
effects=
{
formEffects
()
}
effects=
{
()
=>
{
formEffects
()
}
}
/>
{
/* 加工企业 Modal 框 */
}
<
EnterPrise
rowSelection=
{
enterpriseTableRowSelection
.
rowSelection
}
visible=
{
modalEnterPriseVisible
}
cancel=
{
()
=>
setEnterPriseModalVisible
(
false
)
}
onOk=
{
enterPriseOnOk
}
...
...
src/pages/handling/assign/add/schema.tsx
View file @
85869e8e
/*
* @Author: your name
* @Date: 2020-10-12 13:37:06
* @LastEditTime: 2020-10-16 16:55:22
* @Description: 新建生产通知单 schema
*/
import
React
from
'react'
;
import
{
Space
,
Menu
,
Dropdown
}
from
'antd'
;
import
{
DownOutlined
}
from
'@ant-design/icons'
;
import
ProcessDetail
from
'../../components/ProcessDetail'
import
{
innerWorkFlowRecordColumn
,
outerWorkflowRecordsColumn
}
from
'../detail/columns'
;
// 流转记录
export
const
historyColumn
=
[
...
...
@@ -90,7 +80,30 @@ const basicTab = {
value
:
2
}
],
default
:
1
"x-linkages"
:
[
{
"type"
:
"value:state"
,
"target"
:
"*(productList, productSource)"
,
"condition"
:
"{{ $self.value === 1 }}"
,
state
:
{
display
:
false
,
},
otherwise
:{
//条件不满足时控制bbb字段的编辑状态
display
:
true
}
},
{
"type"
:
"value:state"
,
"target"
:
"*(orderList, orderSource)"
,
"condition"
:
"{{ $self.value === 2 }}"
,
state
:
{
display
:
false
,
},
otherwise
:{
//条件不满足时控制bbb字段的编辑状态
display
:
true
}
},
]
},
deliveryDate
:
{
...
...
@@ -157,17 +170,19 @@ const basicTab = {
type
:
'string'
,
display
:
false
},
doc
No
:
{
notice
No
:
{
type
:
'string'
,
title
:
'通知单号'
,
'x-component'
:
'Text'
editable
:
false
,
// 'x-component': 'Text'
},
doc
Time
:
{
create
Time
:
{
type
:
'string'
,
title
:
'单据时间'
,
'x-component'
:
'Text'
editable
:
false
// 'x-component': 'I'
},
s
tatus
:
{
outerS
tatus
:
{
type
:
'string'
,
title
:
'外部状态'
,
'x-component'
:
'Children'
,
...
...
@@ -175,7 +190,7 @@ const basicTab = {
children
:
'待提交通知单'
}
},
status2
:
{
innerStatus
:
{
type
:
'string'
,
title
:
'内部状态'
,
'x-component'
:
'Children'
,
...
...
@@ -209,14 +224,32 @@ const detailTab = {
labelAlign
:
'left'
},
properties
:
{
selectedSource
:
{
orderSource
:
{
type
:
'string'
,
title
:
'通知单来源'
,
'x-component'
:
'
Children
'
,
'x-component'
:
'
Radio
'
,
'x-component-props'
:
{
children
:
'{{source}}'
,
options
:
[{
label
:
'加工订单'
,
value
:
1
,
}],
defaultValue
:
1
,
},
},
someLists
:
{
productSource
:
{
type
:
'string'
,
title
:
'通知单来源'
,
'x-component'
:
'Radio'
,
'x-component-props'
:
{
options
:
[{
label
:
'加工商品'
,
value
:
2
,
}],
defaultValue
:
2
,
},
},
// 加工商品
productList
:
{
type
:
'array:number'
,
'x-mega-props'
:
{
wrapperCol
:
24
,
...
...
@@ -224,8 +257,8 @@ const detailTab = {
'x-component'
:
'MultTable'
,
'x-component-props'
:
{
rowKey
:
(
record
)
=>
record
.
id
+
"_"
+
record
.
fullId
,
prefix
:
"{{tableAddButton}}"
,
columns
:
"{{
noticesDetail
Column}}"
prefix
:
"{{table
Product
AddButton}}"
,
columns
:
"{{
renderProduct
Column}}"
// columns: "{{tableColumns}}",
},
'x-rules'
:
[
...
...
@@ -233,8 +266,29 @@ const detailTab = {
required
:
true
,
message
:
'请选择要加工的商品'
}
]
],
},
// 订单
orderList
:
{
type
:
'array:number'
,
'x-mega-props'
:
{
wrapperCol
:
24
,
},
'x-component'
:
'MultTable'
,
'x-component-props'
:
{
rowKey
:
(
record
)
=>
record
.
id
+
"_"
+
record
.
fullId
,
prefix
:
"{{tableOrderAddButton}}"
,
columns
:
"{{renderOrderColumn}}"
// columns: "{{tableColumns}}",
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请选择要加工的商品'
}
]
},
}
}
}
...
...
@@ -380,19 +434,49 @@ const historyRecord = {
properties
:
{
controller
:
{
type
:
'object'
,
'x-component'
:
'Children'
,
"x-component"
:
'aaa'
,
"x-component-props"
:
{
options
:
[
{
label
:
'外部流转'
,
value
:
1
},
{
label
:
'内部流转'
,
value
:
2
}
],
optionType
:
'button'
,
},
'x-linkages'
:
[
{
type
:
'value:visible'
,
target
:
'outerWorkFlow'
,
condition
:
'{{$value === 1}}'
},
{
type
:
'value:visible'
,
target
:
'innerWorkFlow'
,
condition
:
'{{$value === 2}}'
},
],
},
outerWorkFlow
:
{
type
:
'array:number'
,
'x-mega-props'
:
{
wrapperCol
:
24
,
},
'x-component'
:
'MultTable'
,
'x-component-props'
:
{
c
hildren
:
'{{RadioBtnGroup}}'
c
olumns
:
outerWorkflowRecordsColumn
}
},
historyTable
:
{
type
:
'object'
,
'x-component'
:
'Table'
,
innerWorkFlow
:
{
type
:
'array:number'
,
'x-mega-props'
:
{
wrapperCol
:
24
,
},
'x-component'
:
'MultTable'
,
'x-component-props'
:
{
columns
:
historyColumn
}
rowKey
:
(
record
)
=>
record
.
id
,
columns
:
innerWorkFlowRecordColumn
// columns: "{{tableColumns}}",
},
}
}
}
...
...
src/pages/handling/common/useRowSelection.tsx
View file @
85869e8e
...
...
@@ -11,9 +11,9 @@ export const useRowSelection = (options) => {
type
:
type
,
selectedRowKeys
:
selectedKeys
,
onSelect
:
async
(
record
:
any
,
selected
:
boolean
,
selectedRows
:
any
[],
nativeEvent
)
=>
{
const
tempKey
=
record
[
primaryKey
];
//
const tempKey = record[primaryKey];
if
(
type
===
'radio'
)
{
setSelectedKeys
(
record
[
tempKey
]);
setSelectedKeys
(
[
record
[
primaryKey
]
]);
setSelectedRows
(
selectedRows
);
return
;
}
...
...
src/pages/handling/components/EnterPrise/index.tsx
View file @
85869e8e
...
...
@@ -9,15 +9,23 @@ import { schema } from './schema';
const
actions
=
createAsyncFormActions
();
const
{
onFieldInit$
,
onFieldMount$
}
=
FormEffectHooks
const
EnterPrise
=
({
visible
,
cancel
,
...
restProps
})
=>
{
const
[
selectRow
,
memberRowCtl
]
=
useRowSelectionTable
({
customKey
:
'id'
,
type
:
'radio'
});
const
EnterPrise
=
({
visible
,
cancel
,
rowSelection
,
...
restProps
})
=>
{
//
const [selectRow, memberRowCtl] = useRowSelectionTable({ customKey: 'id', type: 'radio'});
const
fetchData
=
useCallback
(
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberManageLowerPageBynamerole
(
params
);
return
res
;
console
.
log
(
res
);
return
{
...
res
,
code
:
res
.
code
,
data
:
{
data
:
res
.
data
.
data
.
map
((
v
)
=>
({...
v
,
uniqueId
:
v
.
memberId
+
"_"
+
v
.
roleId
})),
total
:
res
.
data
.
code
}
};
},
[]);
const
onOk
=
()
=>
{
restProps
.
onOk
(
memberRowCtl
)
restProps
.
onOk
()
cancel
();
}
...
...
@@ -51,7 +59,7 @@ const EnterPrise = ({visible, cancel, ...restProps}) => {
schema=
{
schema
}
actions=
{
actions
}
effects=
{
effects
}
expressionScope=
{
{
rowSelection
:
selectRow
}
}
expressionScope=
{
{
rowSelection
:
rowSelection
}
}
></
SearchForm
>
:
null
}
...
...
src/pages/handling/components/EnterPrise/schema.tsx
View file @
85869e8e
...
...
@@ -132,7 +132,7 @@ export const schema = {
"x-component"
:
"Table"
,
"x-component-props"
:
{
"columns"
:
columns
,
"rowKey"
:
"
i
d"
,
"rowKey"
:
"
uniqueI
d"
,
"pagination"
:
false
,
"rowSelection"
:
"{{rowSelection}}"
}
...
...
src/pages/handling/components/ProcessDetail/content.tsx
View file @
85869e8e
...
...
@@ -110,6 +110,7 @@ const Content: React.FC<Iprops> = React.forwardRef((props, conftentRef) => {
const
handleFormSubmit
=
(
value
)
=>
{
props
.
formSubmit
(
value
);
}
return
(
<
div
className=
{
styles
.
container
}
>
<
div
className=
{
styles
.
menu
}
>
...
...
@@ -165,20 +166,19 @@ const Content: React.FC<Iprops> = React.forwardRef((props, conftentRef) => {
<
div
className=
{
styles
.
header
}
>
{
"附件"
}
</
div
>
<
div
className=
{
styles
.
info
}
>
{
files
.
length
===
0
&&
props
.
type
!=
'edit'
files
.
length
===
0
?
<
p
>
无
</
p
>
:
null
}
{
files
.
map
((
item
,
key
)
=>
{
:
props
.
type
!=
'edit'
?
files
.
map
((
item
,
key
)
=>
{
return
(
<
FileList
name=
{
item
.
name
}
url=
{
item
.
url
}
key=
{
key
}
/>
)
})
:
null
}
{
props
.
type
==
'edit'
?
<
UploadFile
onChange=
{
props
.
fileOnChange
}
fileMaxSize=
{
20
*
1024
}
/>
?
<
UploadFile
fileList=
{
files
}
onChange=
{
props
.
fileOnChange
}
fileMaxSize=
{
20
*
1024
}
/>
:
null
}
</
div
>
...
...
src/pages/handling/components/ProcessDetail/index.tsx
View file @
85869e8e
...
...
@@ -17,6 +17,7 @@ interface Iprops {
productName
:
string
,
unitName
:
string
,
uniqueID
:
string
,
files
:
any
[],
}
interface
IfileProps
{
...
...
@@ -28,7 +29,7 @@ const ProcessDetail: React.FC<Iprops> = (props) => {
const
{
skuId
,
type
,
productName
,
...
rest
}
=
props
;
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
);
const
[
info
,
setInfo
]
=
useState
<
any
>
({})
const
[
files
,
setFiles
]
=
useState
<
IfileProps
[]
>
(
[]
)
const
[
files
,
setFiles
]
=
useState
<
IfileProps
[]
>
(
()
=>
props
.
files
)
const
contentRef
=
useRef
(
null
)
const
onClose
=
()
=>
{
...
...
@@ -68,8 +69,11 @@ const ProcessDetail: React.FC<Iprops> = (props) => {
}
}
useEffect
(()
=>
{
setFiles
(
props
.
files
);
},
[
props
.
files
])
const
formSubmit
=
(
values
)
=>
{
console
.
log
(
values
);
!!
props
.
submit
&&
props
.
submit
({
files
:
files
,
uniqueID
:
props
.
uniqueID
,
...
...
src/pages/handling/components/UploadFile/UploadFile.tsx
View file @
85869e8e
...
...
@@ -4,7 +4,6 @@ import { Upload, Button, message } from 'antd';
import
{
UploadOutlined
}
from
'@ant-design/icons'
import
{
UPLOAD_TYPE
}
from
'@/constants'
import
FileListItem
from
'./FileList'
;
import
url
from
'*.svg'
;
const
UploadFile
=
(
props
)
=>
{
const
{
fileList
=
[],
onChange
,
fileMaxSize
=
20
}
=
props
...
...
@@ -51,8 +50,7 @@ const UploadFile = (props) => {
};
const
removeFile
=
(
key
)
=>
{
const
res
=
fileList
.
filter
((
item
)
=>
item
!=
key
);
console
.
log
(
res
);
const
res
=
fileList
.
filter
((
item
)
=>
item
.
name
!=
key
);
onChange
(
res
);
}
...
...
@@ -63,7 +61,7 @@ const UploadFile = (props) => {
fileList
.
map
((
item
,
key
)
=>
{
return
(
<
FileListItem
key=
{
item
}
key=
{
key
}
name=
{
item
.
name
}
url=
{
item
.
url
}
removeFile=
{
removeFile
}
...
...
@@ -77,7 +75,6 @@ const UploadFile = (props) => {
</
Upload
>
<
div
className=
{
styles
.
tips
}
>
一次上传一个文件,每个附件大小不能超过
{
fileMaxSize
/
1024
}
M
</
div
>
</
div
>
)
}
...
...
src/utils/index.tsx
View file @
85869e8e
...
...
@@ -520,13 +520,8 @@ export const findLastIndexFlowState = (data: any[], customKey = 'isExecute'): nu
}
// 循环数据,找到状态值,一直覆盖
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
if
(
!
data
[
i
][
customKey
])
{
if
(
data
[
i
][
customKey
])
{
index
=
i
;
break
;
}
// 循环到最后如果 index 还是为 0 的话,说明工作流全部跑完了,此时 index 为 data.length - 1
if
(
i
===
data
.
length
-
1
&&
index
===
0
)
{
index
=
data
.
length
-
1
;
}
}
return
index
;
...
...
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