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
66c3f0db
Commit
66c3f0db
authored
Nov 04, 2021
by
前端-钟卫鹏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 对接待新增请购单下单/新增请购单下单,formSchema添加内置Form表单字段校验错误数收集
parent
075d24d0
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
311 additions
and
283 deletions
+311
-283
index.ts
src/components/ModalTable/schema/index.ts
+2
-2
order.ts
src/constants/order.ts
+15
-0
useFormDetail.tsx
src/formSchema/effects/useFormDetail.tsx
+5
-2
index.ts
...ction/purchaseOrder/orderCollectRequisition/apis/index.ts
+3
-3
index.tsx
...ollectRequisition/components/contractModalTable/index.tsx
+24
-37
index.tsx
...ollectRequisition/components/materialModalTable/index.tsx
+39
-64
index.tsx
...CollectRequisition/components/materialTableCell/index.tsx
+5
-1
index.tsx
...rderCollectRequisition/components/selectAddress/index.tsx
+20
-10
index.less
...erCollectRequisition/components/theInvoiceList/index.less
+15
-3
index.tsx
...derCollectRequisition/components/theInvoiceList/index.tsx
+17
-10
index.tsx
.../purchaseOrder/orderCollectRequisition/constant/index.tsx
+3
-6
index.tsx
...ansaction/purchaseOrder/orderCollectRequisition/index.tsx
+37
-20
useDetailOrder.tsx
...aseOrder/orderCollectRequisition/model/useDetailOrder.tsx
+0
-62
useMaterialTable.tsx
...eOrder/orderCollectRequisition/model/useMaterialTable.tsx
+12
-11
index.ts
...ion/purchaseOrder/orderCollectRequisition/schema/index.ts
+97
-20
useMaterialTable.tsx
.../purchaseOrder/orderCollectSrm/model/useMaterialTable.tsx
+7
-6
index.tsx
...nsaction/purchaseOrder/readyAddRequisitionOrder/index.tsx
+1
-3
index.ts
...on/purchaseOrder/readyAddRequisitionOrder/schema/index.ts
+0
-21
index.tsx
...ncreaseRequisition/components/materialTableCell/index.tsx
+6
-1
index.tsx
...saction/purchaseRequisition/increaseRequisition/index.tsx
+3
-1
No files found.
src/components/ModalTable/schema/index.ts
View file @
66c3f0db
...
...
@@ -236,7 +236,7 @@ export const addOrderModalSchema: ISchema = {
export
const
addContractOrderModalSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
code
:
{
productNo
:
{
type
:
'string'
,
'x-component'
:
'ModalSearch'
,
'x-component-props'
:
{
...
...
@@ -265,7 +265,7 @@ export const addOrderModalSchema: ISchema = {
placeholder
:
'物料名称'
,
},
},
type
:
{
spec
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'规格型号'
,
...
...
src/constants/order.ts
View file @
66c3f0db
...
...
@@ -54,6 +54,10 @@ export const ORDER_TYPE_BIDDING_CONTRACT = 10;
* 采购招标合同
*/
export
const
ORDER_TYPE_TENDER_CONTRACT
=
11
;
/**
* 请购单下单
*/
export
const
ORDER_TYPE_REQUISITION
=
12
;
...
...
@@ -103,6 +107,10 @@ export const ORDER_TYPE_TENDER_CONTRACT = 11;
* 采购招标合同
*/
export
const
ORDER_TYPE2_TENDER_CONTRACT
=
11
;
/**
* 请购单下单
*/
export
const
ORDER_TYPE2_REQUISITION
=
12
;
export
const
ORDER_TYPE2
=
{
[
ORDER_TYPE2_INQUIRY
]:
'询价采购'
,
...
...
@@ -116,6 +124,7 @@ export const ORDER_TYPE_TENDER_CONTRACT = 11;
[
ORDER_TYPE2_ENQUIRY_CONTRACT
]:
'采购询价合同'
,
[
ORDER_TYPE2_BIDDING_CONTRACT
]:
'采购竞价合同'
,
[
ORDER_TYPE2_TENDER_CONTRACT
]:
'采购招标合同'
,
[
ORDER_TYPE2_REQUISITION
]:
'请购单采购'
,
};
...
...
@@ -143,6 +152,7 @@ export const ORDER_TYPE = ['',
'采购询价合同'
,
'采购招标合同'
,
'采购竞价合同'
,
'请购单采购'
,
]
// 下单模式 *NEW
...
...
@@ -181,6 +191,11 @@ export enum OrderModalType {
* 采购招标合同下单
*/
PURCHASE_TENDER_CONTRACT_ORDER
=
14
,
/**
* 请购单采购下单
*/
PURCHASE_REQUISITION_ORDER
=
15
,
}
// 订单种类 *NEW @可能还需要补充 现货采购 渠道直采 渠道现货
...
...
src/formSchema/effects/useFormDetail.tsx
View file @
66c3f0db
...
...
@@ -12,13 +12,14 @@ export const useFormDetail = () => {
const
[
formData
,
setFormData
]
=
useState
<
any
>
(
null
)
// 完成度
const
[
formProcess
,
setFormProcess
]
=
useState
<
string
|
number
>
()
// 总交互字段数
const
[
amount
,
setAomunt
]
=
useState
<
number
>
(
0
)
// 输入数
const
[
inputAmount
,
setInputAomunt
]
=
useState
<
number
>
(
0
)
// 有效统计字段
const
effectFields
=
[]
// 用于收集 schema表单内置组件Form表单的校验error
const
[
innerFormErrors
,
setInnerFormErrors
]
=
useState
<
number
>
(
0
)
useEffect
(()
=>
{
if
(
amount
>
0
)
{
...
...
@@ -66,9 +67,11 @@ export const useFormDetail = () => {
const
formContext
=
{
data
:
formData
,
formProcess
,
innerFormErrors
,
ctl
:
{
setFormData
,
setFormProcess
setFormProcess
,
setInnerFormErrors
},
useAttachmentChangeForContext
,
}
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/apis/index.ts
View file @
66c3f0db
...
...
@@ -35,9 +35,9 @@ export const fetchOrderApi = {
return
data
},
/**
合同下单 获取合同采购
物料 */
async
get
Contract
PurchaseMaterielList
(
params
)
{
const
{
data
}
=
await
PublicApi
.
get
ContractManagePagePurchaseMaterielList
(
params
)
/**
请购单下单 获取请购单
物料 */
async
get
Requisition
PurchaseMaterielList
(
params
)
{
const
{
data
}
=
await
PublicApi
.
get
PurchaseRequisitionPurchaseOrderMaterialPage
(
params
)
return
data
},
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/components/contractModalTable/index.tsx
View file @
66c3f0db
...
...
@@ -5,6 +5,7 @@ import { useModalTable } from '../../model/useModalTable'
import
{
ISchemaFormActions
,
ISchemaFormAsyncActions
}
from
'@formily/antd'
import
{
requisitionColumns
}
from
'../../constant'
import
{
PublicApi
}
from
'@/services/api'
import
moment
from
'moment'
export
interface
RequisitionModalTableProps
extends
ModalTableProps
{
type
?:
'radio'
|
'checkbox'
,
...
...
@@ -44,46 +45,32 @@ const RequisitionModalTable:React.FC<RequisitionModalTableProps> = (props) => {
schemaAction
.
setFieldValue
(
'products'
,
[])
schemaAction
.
setFieldValue
(
'requisitionNo'
,
item
.
requisitionNo
)
schemaAction
.
setFieldValue
(
'requisitionId'
,
item
.
id
)
// const { data } = await fetchOrderApi.getContractPurchaseMaterielList({
// contractId: item?.id || item?.contractId,
// current: 1,
// pageSize: 999,
// })
// if(!data) { return false; }
schemaAction
.
setFieldValue
(
'digest'
,
item
.
digest
)
schemaAction
.
setFieldValue
(
'deliverDate'
,
moment
(
item
.
deliverTime
).
format
(
'YYYY-MM-DD HH:mm'
))
// // 字段转换
// let newData = data.map((v: any) => {
// let temp: any = {};
// temp.id = v.id;
// temp.code = v.materielNo;
// temp.name = v.materielName;
// temp.type = v.type;
// temp.category = v.category;
// temp.brand = v.brand;
// temp.unit = v.unit;
// temp.relevanceProductId = v.associatedDataId;
// temp.relevanceProductName = v.associatedGoods;
// temp.relevanceProductType = v.associatedType;
// temp.relevanceProductCategory = v.associatedCategory;
// temp.relevanceProductBrand = v.associatedBrand;
// temp.price = v.price;
// temp.stock = v.supplierInventory;
// temp.tax = v.isHasTax;
// temp.taxRate = v.taxRate;
// // @ 配送方式 默认物流
// temp.logistics = 1
const
{
data
}
=
await
fetchOrderApi
.
getRequisitionPurchaseMaterielList
({
requisitionId
:
item
.
id
,
current
:
1
,
pageSize
:
999
,
})
if
(
!
data
)
{
return
false
;
}
// // 会员信息冗余
// temp.memberId = item.partyBMemberId
// temp.memberRoleId = item.partyBRoleId
// return temp
// })
// 字段转换
let
newData
=
data
.
map
((
v
:
any
)
=>
({
...
v
,
tax
:
true
,
// @ 配送方式 默认物流
logistics
:
1
,
// 会员信息冗余
memberName
:
item
.
vendorMemberName
,
memberId
:
item
.
vendorMemberId
,
memberRoleId
:
item
.
vendorRoleId
,
}))
// schemaAction.setFieldValue('products', data)
schemaAction
.
setFieldValue
(
'vendorMemberName'
,
item
.
partyBName
)
schemaAction
.
setFieldValue
(
'vendorMemberId'
,
item
.
partyBMemberId
)
schemaAction
.
setFieldValue
(
'vendorRoleId'
,
item
.
partyBRoleId
)
schemaAction
.
setFieldValue
(
'digest'
,
item
.
digest
)
schemaAction
.
setFieldValue
(
'products'
,
newData
)
schemaAction
.
setFieldValue
(
'vendorMemberName'
,
item
.
vendorMemberName
)
schemaAction
.
setFieldValue
(
'vendorMemberId'
,
item
.
vendorMemberId
)
schemaAction
.
setFieldValue
(
'vendorRoleId'
,
item
.
vendorRoleId
)
}
confirmModal
&&
confirmModal
()
setVisible
(
false
)
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/components/materialModalTable/index.tsx
View file @
66c3f0db
...
...
@@ -19,27 +19,27 @@ export interface MaterialModalTableProps extends ModalTableProps {
export
const
materialColumns
:
any
[]
=
[
{
title
:
'ID'
,
dataIndex
:
'
i
d'
,
dataIndex
:
'
productI
d'
,
align
:
'center'
,
key
:
'
i
d'
,
key
:
'
productI
d'
,
},
{
title
:
'物料编号'
,
dataIndex
:
'
materiel
No'
,
dataIndex
:
'
product
No'
,
align
:
'center'
,
key
:
'
materiel
No'
,
key
:
'
product
No'
,
},
{
title
:
'
规格型号
'
,
dataIndex
:
'
typ
e'
,
title
:
'
物料名称
'
,
dataIndex
:
'
nam
e'
,
align
:
'center'
,
key
:
'
typ
e'
,
key
:
'
nam
e'
,
},
{
title
:
'
物料名称
'
,
dataIndex
:
'
materielName
'
,
title
:
'
规格型号
'
,
dataIndex
:
'
spec
'
,
align
:
'center'
,
key
:
'
materielName
'
,
key
:
'
spec
'
,
},
{
title
:
'品类'
,
...
...
@@ -60,17 +60,17 @@ export const materialColumns: any[] = [
key
:
'unit'
},
{
title
:
'
合同剩余
'
,
dataIndex
:
'
contractFreeCount
'
,
title
:
'
数量
'
,
dataIndex
:
'
quantity
'
,
align
:
'center'
,
key
:
'
contractFreeCount
'
key
:
'
quantity
'
},
//
{
// title: '供方库存
',
// dataIndex: 'supplierInventory
',
//
align: 'center',
// key: 'supplierInventory
'
// },
{
title
:
'可用数量
'
,
dataIndex
:
'quantifiable
'
,
align
:
'center'
,
key
:
'quantifiable
'
}
]
const
MaterialModalTable
:
React
.
FC
<
MaterialModalTableProps
>
=
(
props
)
=>
{
...
...
@@ -90,31 +90,22 @@ const MaterialModalTable:React.FC<MaterialModalTableProps> = (props) => {
const
addMaterialProcessField
=
(
value
,
origin
)
=>
{
let
tempOriginData
=
[...
origin
]
if
(
Array
.
isArray
(
value
))
{
let
processData
=
value
.
map
(
v
=>
{
let
temp
:
any
=
{};
temp
.
id
=
v
.
id
;
temp
.
code
=
v
.
materielNo
;
temp
.
name
=
v
.
materielName
;
temp
.
type
=
v
.
type
;
temp
.
category
=
v
.
category
;
temp
.
brand
=
v
.
brand
;
temp
.
unit
=
v
.
unit
;
temp
.
relevanceProductId
=
v
.
associatedDataId
;
temp
.
relevanceProductName
=
v
.
associatedGoods
;
temp
.
relevanceProductType
=
v
.
associatedType
;
temp
.
relevanceProductCategory
=
v
.
associatedCategory
;
temp
.
relevanceProductBrand
=
v
.
associatedBrand
;
temp
.
price
=
v
.
price
;
temp
.
stock
=
v
.
supplierInventory
;
temp
.
tax
=
v
.
isHasTax
;
temp
.
taxRate
=
v
.
taxRate
;
const
vendorMemberName
=
schemaAction
.
getFieldValue
(
'vendorMemberName'
)
const
vendorMemberId
=
schemaAction
.
getFieldValue
(
'vendorMemberId'
)
const
vendorRoleId
=
schemaAction
.
getFieldValue
(
'vendorRoleId'
)
let
processData
=
value
.
map
(
v
=>
({
...
v
,
tax
:
true
,
// @ 配送方式 默认物流
temp
.
logistics
=
1
return
temp
})
let
originIds
=
tempOriginData
.
map
(
item
=>
item
.
id
)
logistics
:
1
,
// 冗余会员信息
vendorMemberName
,
vendorMemberId
,
vendorRoleId
,
}))
let
originIds
=
tempOriginData
.
map
(
item
=>
item
.
productId
)
processData
.
map
(
item
=>
{
if
(
!
originIds
.
includes
(
item
.
i
d
))
{
if
(
!
originIds
.
includes
(
item
.
productI
d
))
{
tempOriginData
.
push
(
item
)
}
})
...
...
@@ -123,35 +114,19 @@ const MaterialModalTable:React.FC<MaterialModalTableProps> = (props) => {
}
const
handleConfirm
=
async
()
=>
{
// 判断所选择的商品是否属于同一个工作流
console
.
log
(
rowSelectionCtl
,
'rowSelectionCtl'
)
// @ts-ignore
// const res = await PublicApi.postOrderIsWorkFlow({
// memberId: schemaAction.getFieldValue('vendorMemberId'),
// memberRoleId: schemaAction.getFieldValue('vendorRoleId'),
// productIds: rowSelectionCtl.selectRow.map(item => item.associatedDataId),
// orderMode: schemaAction.getFieldValue('orderMode')
// }, { ctlType: 'none' })
// if (res.code === 1000) {
const
productData
=
schemaAction
.
getFieldValue
(
'products'
)
schemaAction
.
setFieldValue
(
'products'
,
addMaterialProcessField
(
rowSelectionCtl
.
selectRow
,
productData
))
confirmModal
&&
confirmModal
()
setVisible
(
false
)
// }
// else {
// message.error(res.message)
// }
}
const
fetchMaterialList
=
(
values
)
=>
{
const
contract
=
schemaAction
.
getFieldValue
(
'contract'
)
const
contractId
=
contract
[
'id'
]
||
contract
[
'contractId'
]
const
requisitionId
=
schemaAction
.
getFieldValue
(
'requisitionId'
)
const
params
=
{
...
values
,
contract
Id
,
requisition
Id
,
}
return
fetchOrderApi
.
get
Contract
PurchaseMaterielList
(
params
)
return
fetchOrderApi
.
get
Requisition
PurchaseMaterielList
(
params
)
}
...
...
@@ -168,11 +143,11 @@ const MaterialModalTable:React.FC<MaterialModalTableProps> = (props) => {
resetModal=
{
{
destroyOnClose
:
true
}
}
modalType=
'none'
tableProps=
{
{
rowKey
:
'
i
d'
,
rowKey
:
'
productI
d'
,
onRow
:
(
record
)
=>
({
onClick
:
()
=>
{
rowSelectionCtl
.
appendSelectRow
(
record
);
rowSelectionCtl
.
appendSelectRowKeys
(
record
.
i
d
);
rowSelectionCtl
.
appendSelectRowKeys
(
record
.
productI
d
);
},
})
}
}
...
...
@@ -184,7 +159,7 @@ const MaterialModalTable:React.FC<MaterialModalTableProps> = (props) => {
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'
code
'
,
'
productNo
'
,
FORM_FILTER_PATH
,
);
}
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/components/materialTableCell/index.tsx
View file @
66c3f0db
...
...
@@ -2,6 +2,7 @@ import React, { useState, useRef, useContext } from 'react'
import
{
Form
,
Input
,
Select
,
Popover
,
Row
}
from
'antd'
;
import
{
EnvironmentOutlined
}
from
'@ant-design/icons'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
FormDetailContext
}
from
'@/formSchema/context'
;
export
interface
MaterialTableCellProps
{
title
:
React
.
ReactNode
;
...
...
@@ -47,6 +48,7 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
})
=>
{
const
formItemRef
=
useRef
<
any
>
();
const
{
form
}
=
useContext
(
EditableContext
);
const
{
formContext
}
=
useContext
(
FormDetailContext
);
// 是否显示地址
const
[
showAddress
,
setShowAddress
]
=
useState
<
boolean
>
(
false
)
...
...
@@ -62,12 +64,14 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
setReceiveInfo
(()
=>
deliveryAddress
[
0
])
}
const
save
=
async
e
=>
{
const
save
=
async
()
=>
{
try
{
const
values
=
await
form
.
validateFields
();
values
.
purchaseCount
=
Number
(
values
.
quantity
)
||
0
handleSave
({
...
record
,
...
values
});
formContext
.
ctl
.
setInnerFormErrors
(
0
)
}
catch
(
errInfo
)
{
formContext
.
ctl
.
setInnerFormErrors
(
errInfo
.
errorFields
.
length
)
console
.
log
(
'Save failed:'
,
errInfo
);
}
};
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/components/selectAddress/index.tsx
View file @
66c3f0db
...
...
@@ -8,14 +8,15 @@ import AddressModal from '../addressModal'
import
{
fetchOrderApi
}
from
'../../apis'
import
{
PublicApi
}
from
'@/services/api'
const
SelectStyles
=
styled
((
props
)
=>
<
div
className=
'select-list'
{
...
props
}
></
div
>)
`
const
SelectStyles
=
styled
((
props
)
=>
<
div
className=
'select-list'
style=
{
{
display
:
'flex'
}
}
{
...
props
}
></
div
>)
`
.select_style_border {
border: 1px solid #EEF0F3;
margin-top: 20px;
//
margin-top: 20px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 14px;
flex: 1;
cursor: pointer;
line-height: 28px;
position:relative;
...
...
@@ -118,11 +119,11 @@ const SelectAddress = (props: ISchemaFieldComponentProps) => {
}
return
(
<
div
style=
{
{
width
:
'100%'
}
}
>
{
editable
&&
<
Button
block
onClick=
{
handleAdd
}
icon=
{
<
PlusOutlined
/>
}
>
新建地址
</
Button
>
}
<
SelectStyles
>
<
div
style=
{
{
width
:
'100%'
}
}
>
{
/* {editable && <Button block onClick={handleAdd} icon={<PlusOutlined />}>新建地址</Button>} */
}
<
SelectStyles
>
<
Row
gutter=
{
[
16
,
16
]
}
style=
{
{
width
:
'100%'
}
}
>
{
showDataSource
.
map
(
v
=>
<
div
key=
{
v
.
id
}
onClick=
{
()
=>
handleCheck
(
v
)
}
className=
{
cx
(
'select_style_border'
,
checkedId
===
v
.
id
?
'active'
:
''
)
}
>
showDataSource
.
map
(
v
=>
<
Col
span=
{
12
}
><
div
key=
{
v
.
id
}
onClick=
{
()
=>
handleCheck
(
v
)
}
className=
{
cx
(
'select_style_border'
,
checkedId
===
v
.
id
?
'active'
:
''
)
}
>
<
div
>
<
Row
style=
{
{
color
:
'#303133'
}
}
>
<
Col
>
{
v
.
receiverName
}
</
Col
>
...
...
@@ -142,11 +143,20 @@ const SelectAddress = (props: ISchemaFieldComponentProps) => {
<
EyeOutlined
onClick=
{
(
e
)
=>
handleEdit
(
v
,
e
,
'preview'
)
}
/>
}
</
Space
>
</
div
>)
}
</
SelectStyles
>
</
div
></
Col
>)
}
{
editable
&&
<
Col
span=
{
12
}
>
<
div
className=
'select_style_border'
style=
{
{
width
:
'100%'
,
height
:
'100%'
,
borderStyle
:
"dashed"
}
}
onClick=
{
handleAdd
}
>
<
p
style=
{
{
width
:
'100%'
,
textAlign
:
'center'
}
}
><
PlusOutlined
/>
新增地址
</
p
>
</
div
>
</
Col
>
}
</
Row
></
SelectStyles
>
{
transformData
.
length
>
3
&&
<
div
onClick=
{
toogleMore
}
style=
{
{
textAlign
:
'center'
,
cursor
:
'pointer'
}
}
>
<
div
onClick=
{
toogleMore
}
style=
{
{
textAlign
:
'center'
,
cursor
:
'pointer'
,
color
:
'#00b37a'
}
}
>
显示更多
{
showMore
?
<
CaretDownOutlined
/>
:
<
CaretUpOutlined
/>
}
</
div
>
}
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/components/theInvoiceList/index.less
View file @
66c3f0db
...
...
@@ -13,9 +13,9 @@
.invoice_list {
position: relative;
display: flex;
//
display: flex;
margin: 0 -10px;
flex-wrap: wrap;
//
flex-wrap: wrap;
.invoice_list_item {
display: flex;
...
...
@@ -70,6 +70,18 @@
}
}
.select_style_border {
border: 1px solid #EEF0F3;
// display: flex;
// align-items: center;
// justify-content: space-between;
// padding: 8px 14px;
// flex: 1;
// cursor: pointer;
// line-height: 28px;
// position:relative;
}
:global {
span.ant-radio+* {
display: block;
...
...
@@ -82,7 +94,7 @@
align-items: center;
height: 72px;
background-color: #FAFAFA;
margin: 10px;
//
margin: 10px;
padding-left: 16px;
}
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/components/theInvoiceList/index.tsx
View file @
66c3f0db
import
React
,
{
useState
,
useRef
}
from
'react'
import
{
ISchemaFieldComponentProps
,
useFieldState
}
from
'@formily/antd'
import
{
Button
,
Radio
}
from
'antd'
import
{
Button
,
Col
,
Radio
,
Row
}
from
'antd'
import
{
PlusOutlined
,
CaretUpOutlined
,
CaretDownOutlined
}
from
'@ant-design/icons'
import
cx
from
'classnames'
import
{
fetchOrderApi
}
from
'../../apis'
...
...
@@ -24,9 +24,6 @@ const TheInvoiceList = (props: ISchemaFieldComponentProps) => {
const
{
pageStatus
,
id
}
=
usePageStatus
()
// const [useValue, setUseValue] = useState(() => typeof value === 'object' ? value : dataSource.find(v => v.id === value))
// let useValue = typeof value === 'object' ? value : dataSource.find(v => v.id === value)
if
(
pageStatus
===
PageStatus
.
ADD
)
{
if
(
typeof
value
===
'object'
)
{
...
...
@@ -155,11 +152,12 @@ const TheInvoiceList = (props: ISchemaFieldComponentProps) => {
return
(
<
div
style=
{
{
width
:
'100%'
}
}
className=
{
styles
.
invoice
}
>
{
editable
&&
<
Button
block
onClick=
{
handleAdd
}
icon=
{
<
PlusOutlined
/>
}
>
新增发票
</
Button
>
}
{
/* { editable && <Button block onClick={handleAdd} icon={<PlusOutlined/>}>新增发票</Button> } */
}
<
Radio
.
Group
className=
{
styles
.
raido_group
}
value=
{
useValue
}
onChange=
{
e
=>
handleCheck
(
e
)
}
>
<
div
className=
{
styles
.
invoice_list
}
>
<
Row
gutter=
{
[
16
,
16
]
}
>
{
showDataSource
.
map
((
item
,
index
)
=>
(
showDataSource
.
map
((
item
,
index
)
=>
(
<
Col
span=
{
12
}
>
<
Radio
className=
{
styles
.
list_radio
}
value=
{
item
}
key=
{
`address_list_radio_${item?.id}`
}
>
<
div
className=
{
styles
.
invoice_list_item
}
key=
{
`invoice_list_item_${index}`
}
>
<
div
className=
{
styles
.
invoice_list_item_content
}
>
...
...
@@ -188,13 +186,22 @@ const TheInvoiceList = (props: ISchemaFieldComponentProps) => {
}
</
div
>
</
Radio
>
))
}
</
Col
>))
}
{
editable
&&
<
Col
span=
{
12
}
>
<
div
className=
{
styles
.
select_style_border
}
style=
{
{
width
:
'100%'
,
height
:
'100%'
,
borderStyle
:
"dashed"
}
}
onClick=
{
handleAdd
}
>
<
p
style=
{
{
width
:
'100%'
,
textAlign
:
'center'
,
fontSize
:
12
,
marginTop
:
14
}
}
><
PlusOutlined
/>
新增发票
</
p
>
</
div
>
</
Col
>
}
</
Row
>
</
div
>
</
Radio
.
Group
>
{
transformData
.
length
>
3
&&
<
div
onClick=
{
toogleMore
}
style=
{
{
textAlign
:
'center'
,
cursor
:
'pointer'
}
}
>
<
div
onClick=
{
toogleMore
}
style=
{
{
textAlign
:
'center'
,
cursor
:
'pointer'
,
color
:
'#00b37a'
}
}
>
显示更多
{
showMore
?
<
CaretDownOutlined
/>
:
<
CaretUpOutlined
/>
}
</
div
>
}
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/constant/index.tsx
View file @
66c3f0db
...
...
@@ -22,7 +22,7 @@ export const PriceComp = (props) => {
</
div
>
}
/** 修改
合同
下单 初始值转换 */
/** 修改
请购单
下单 初始值转换 */
export
const
procurmentRenderInit
=
(
initValue
:
any
)
=>
{
return
{
...
...
@@ -41,9 +41,8 @@ export const procurmentRenderInit = (initValue: any) => {
digest
:
initValue
.
digest
,
deliverDate
:
initValue
.
consignee
.
deliverDate
,
theInvoiceId
:
initValue
.
invoice
?.
invoiceId
||
null
,
hasContract
:
initValue
.
hasContract
,
requisitionNo
:
initValue
.
contract
.
requisitionNo
,
contract
:
{...
initValue
.
contract
},
requisitionNo
:
initValue
.
requisitionNo
,
requisitionId
:
initValue
.
requisitionId
,
}
}
...
...
@@ -55,8 +54,6 @@ export const procurementRenderField = (data) => {
...
item
,
logistics
:
item
.
deliverType
,
id
:
item
.
productId
,
code
:
item
.
productNo
,
type
:
item
.
spec
,
// 冗余memberId memberRoleId查询自提地址使用
memberId
:
data
.
vendorMemberId
,
memberRoleId
:
data
.
vendorRoleId
,
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/index.tsx
View file @
66c3f0db
...
...
@@ -29,6 +29,7 @@ import { FormDetailContext } from '@/formSchema/context'
import
FormDetailWrapper
from
'@/components/FormDetailWrapper'
import
{
useFormDetail
}
from
'@/formSchema/effects/useFormDetail'
import
{
filterProductDataById
}
from
'../orderCollect/components/productModalTable'
import
moment
from
'moment'
export
interface
AddRequisitionOrderProps
{
}
...
...
@@ -140,18 +141,23 @@ const AddRequisitionOrder:React.FC<AddRequisitionOrderProps> = (props) => {
}
=
requisitionData
addSchemaAction
.
setFieldValue
(
'requisitionId'
,
requisitionId
)
addSchemaAction
.
setFieldValue
(
'requisitionNo'
,
requisitionNo
)
addSchemaAction
.
setFieldValue
(
'deliverDate'
,
deliverTime
)
addSchemaAction
.
setFieldValue
(
'deliverDate'
,
moment
(
deliverTime
).
format
(
'YYYY-MM-DD HH:mm'
)
)
addSchemaAction
.
setFieldValue
(
'digest'
,
digest
)
addSchemaAction
.
setFieldValue
(
'vendorMemberName'
,
vendorMemberName
)
addSchemaAction
.
setFieldValue
(
'vendorMemberId'
,
vendorMemberId
)
addSchemaAction
.
setFieldValue
(
'vendorRoleId'
,
vendorRoleId
)
let
newData
=
product
.
products
.
map
((
v
:
any
)
=>
{
// 默认含税
v
.
tax
=
true
// @ 配送方式 默认物流
v
.
logistics
=
1
// 冗余供应会员 用于查询自提地址
v
.
memberId
=
vendorMemberId
v
.
memberName
=
vendorMemberName
v
.
memberRoleId
=
vendorRoleId
return
v
})
addSchemaAction
.
setFieldValue
(
'products'
,
product
.
products
)
addSchemaAction
.
setFieldValue
(
'products'
,
newData
)
}
}
...
...
@@ -161,9 +167,17 @@ const AddRequisitionOrder:React.FC<AddRequisitionOrderProps> = (props) => {
// 新增订单/编辑订单
const
params
=
{
...
value
}
console
.
log
(
value
)
// 校验采购数量
if
(
formContext
.
innerFormErrors
)
{
throw
new
Error
(
'请完善订单物料数据'
)
}
// 校验采购数量 单价和税率
const
judgementByPrice
=
[]
const
judgementByCount
=
params
.
products
?.
length
&&
params
.
products
.
map
(
item
=>
{
if
(
item
.
price
)
{
judgementByPrice
.
push
(
true
)
}
else
{
judgementByPrice
.
push
(
false
)
}
if
(
item
.
quantity
){
return
true
}
else
{
...
...
@@ -173,14 +187,16 @@ const AddRequisitionOrder:React.FC<AddRequisitionOrderProps> = (props) => {
if
(
!
judgementByCount
||
judgementByCount
.
includes
(
false
)){
throw
new
Error
(
'请填写商品采购数量'
)
}
if
(
judgementByPrice
.
includes
(
false
)){
throw
new
Error
(
'请填写商品单价'
)
}
// 使用发票即校验发票id
if
(
params
.
hasInvoice
&&
!
params
.
theInvoiceId
)
{
throw
new
Error
(
'请新增或选择需要使用的发票'
)
}
setBtnLoading
(
true
)
/** 字段转换 */
// 合同下单 取供应商默认的发货地址
// 请购单下单 取供应商默认的发货地址
const
{
data
:
deliveryAddress
}
=
await
PublicApi
.
getLogisticsSelectListMemberShipperAddress
({
memberId
:
params
.
vendorMemberId
,
roleId
:
params
.
vendorRoleId
...
...
@@ -244,18 +260,18 @@ const AddRequisitionOrder:React.FC<AddRequisitionOrderProps> = (props) => {
const
_params
=
procurementProcessField
(
params
)
console
.
log
(
_params
)
//
if(id) {
// fnResult = await PublicApi.postOrderBuyerCreateSrmUpdate
({..._params, orderId: id})
//
} else {
// fnResult = await PublicApi.postOrderBuyerCreateSrm
(_params)
//
}
//
if (fnResult.code === 1000) {
//
setTimeout(() => {
// history.push("/memberCenter/tranactionAbility/purchaseOrder/readyAddSrm
Order")
//
}, 1000)
//
} else {
if
(
id
)
{
fnResult
=
await
PublicApi
.
postOrderBuyerUpdateRequisition
({...
_params
,
orderId
:
id
})
}
else
{
fnResult
=
await
PublicApi
.
postOrderBuyerCreateRequisition
(
_params
)
}
if
(
fnResult
.
code
===
1000
)
{
setTimeout
(()
=>
{
history
.
push
(
"/memberCenter/tranactionAbility/purchaseOrder/readyAddRequisition
Order"
)
},
1000
)
}
else
{
setBtnLoading
(
false
)
//
}
}
}
catch
(
error
)
{
setBtnLoading
(
false
)
error
?.
message
&&
message
.
error
(
error
.
message
)
...
...
@@ -300,12 +316,12 @@ const AddRequisitionOrder:React.FC<AddRequisitionOrderProps> = (props) => {
<ReadyAddOrderDetailContext.Provider value={providerValue}>
<Card className={styles.orderCollectCard} style={{marginTop: 24}}> */
}
<
FormDetailContext
.
Provider
value=
{
providerValue
}
>
<
FormDetailContext
.
Provider
value=
{
providerValue
}
>
<
FormDetailHeader
title=
{
id
?
"编辑"
:
"新增"
}
schema=
{
initFormSchema
}
extraRight=
{
[
<
Button
key=
"1"
onClick=
{
()
=>
addSchemaAction
.
submit
()
}
loading=
{
form
Loading
}
type=
"primary"
icon=
{
<
SaveOutlined
/>
}
>
<
Button
key=
"1"
onClick=
{
()
=>
addSchemaAction
.
submit
()
}
loading=
{
btn
Loading
}
type=
"primary"
icon=
{
<
SaveOutlined
/>
}
>
保存
</
Button
>,
]
}
...
...
@@ -351,6 +367,7 @@ const AddRequisitionOrder:React.FC<AddRequisitionOrderProps> = (props) => {
// 商品信息的改动 驱动支付信息变化
useProductTableChangeForPay
(
ctx
,
update
)
// 注入表单完成进度
formContext
.
useAttachmentChangeForContext
(
ctx
)
}
}
...
...
@@ -369,7 +386,7 @@ const AddRequisitionOrder:React.FC<AddRequisitionOrderProps> = (props) => {
{
/* </Card> */
}
</
FormDetailWrapper
>
</
FormDetailContext
.
Provider
>
</
FormDetailContext
.
Provider
>
{
/* 选择供应会员 */
}
<
MemberModalTable
currentRef=
{
memberRef
}
productRef=
{
materialRef
}
schemaAction=
{
addSchemaAction
}
/>
{
/* 选择请购单 */
}
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/model/useDetailOrder.tsx
deleted
100644 → 0
View file @
075d24d0
import
React
,
{
useState
,
useEffect
}
from
'react'
import
{
OrderModalType
}
from
'@/constants/order'
import
{
PublicApi
}
from
'@/services/api'
import
{
useLocation
,
history
}
from
'umi'
import
{
ISchemaFormActions
}
from
'@formily/antd'
interface
DetailOrderLocationState
{
// 进货单商品列表
productList
?:
any
[],
// 下单模式
modelType
?:
OrderModalType
}
interface
DetailOptionsProps
{
addSchemaAction
:
ISchemaFormActions
}
export
const
useDetailOrder
=
(
options
:
DetailOptionsProps
)
=>
{
const
{
addSchemaAction
}
=
options
const
locationState
=
useLocation
<
DetailOrderLocationState
>
().
state
||
{}
const
{
productList
}
=
locationState
const
{
modelType
}
=
history
.
location
.
query
// 是否显示选择商品按钮
const
[
showProBtn
,
setShowProBtn
]
=
useState
(
false
)
// 是否显示供应会员字段
const
[
showMemberType
,
setShowMemberType
]
=
useState
(
false
)
const
[
visibleMember
,
setVisibleMember
]
=
useState
(
false
)
// 商品列表, 如果路由state中 带有productList, 说明是进货单下单, 需要回显进货单商品数据
const
[
proList
,
setProList
]
=
useState
<
any
[]
>
(()
=>
productList
||
[])
// 回显数据写在这
useEffect
(()
=>
{
// 页面中有传入下单模式, 需要手动回显数据
if
(
modelType
)
{
addSchemaAction
.
setFieldValue
(
'orderMode'
,
parseInt
(
modelType
))
}
// 在有传入商品列表时 需手动回显
if
(
proList
.
length
>
0
)
{
addSchemaAction
.
setFieldValue
(
'orderProductRequests'
,
proList
)
addSchemaAction
.
setFieldValue
(
'orderThe'
,
proList
[
0
].
name
)
}
},
[
modelType
,
productList
])
// 唤起新增订单
const
fetchAddOrder
=
async
(
params
)
=>
{
await
PublicApi
.
postOrderProcurementOrderAdd
(
params
)
}
return
{
showProBtn
,
setShowProBtn
,
showMemberType
,
setShowMemberType
,
fetchAddOrder
,
proList
,
modelType
,
visibleMember
,
setVisibleMember
}
}
src/pages/transaction/purchaseOrder/orderCollectRequisition/model/useMaterialTable.tsx
View file @
66c3f0db
...
...
@@ -26,17 +26,17 @@ export const getUnitPriceTotal = (record) => {
*/
export
const
useMaterialTable
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
)
=>
{
const
materialRef
=
useRef
<
any
>
({})
const
{
visible
,
setVisible
,
rowSelection
,
rowSelectionCtl
}
=
useModalTable
({
type
:
'checkbox'
})
const
{
visible
,
setVisible
,
rowSelection
,
rowSelectionCtl
}
=
useModalTable
({
type
:
'checkbox'
,
customKey
:
'productId'
})
const
handleDelete
=
(
record
)
=>
{
const
newData
=
[...
ctx
.
getFieldValue
(
'products'
)]
// 删除formvalue
const
colIndex
=
newData
.
findIndex
(
v
=>
v
.
id
===
record
.
i
d
)
const
colIndex
=
newData
.
findIndex
(
v
=>
v
.
productId
===
record
.
productI
d
)
newData
.
splice
(
colIndex
,
1
)
// 删除选中的项
rowSelectionCtl
.
setSelectRow
(
newData
)
rowSelectionCtl
.
setSelectedRowKeys
(
newData
.
map
(
v
=>
v
.
i
d
))
rowSelectionCtl
.
setSelectedRowKeys
(
newData
.
map
(
v
=>
v
.
productI
d
))
ctx
.
setFieldValue
(
'products'
,
newData
)
}
...
...
@@ -44,26 +44,27 @@ export const useMaterialTable = (ctx: ISchemaFormActions | ISchemaFormAsyncActio
const
[
materialColumns
,
setMaterialColumns
]
=
useState
(()
=>
{
const
{
pageStatus
}
=
usePageStatus
()
const
tempColumn
=
[...
materialInfoColumns
]
if
(
pageStatus
===
PageStatus
.
ADD
)
{
// 渲染操作
materialInfoColumns
[
materialInfoColumns
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleDelete
(
record
)
}
>
删除
</
Button
>
// 渲染单价
materialInfoColumns
[
7
].
render
=
(
t
,
r
)
=>
<
span
style=
{
{
color
:
'red'
}
}
>
¥
{
Number
(
r
.
price
).
toFixed
(
2
)
}
</
span
>
tempColumn
[
tempColumn
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleDelete
(
record
)
}
>
删除
</
Button
>
//
//
渲染单价
// tempColumn
[7].render = (t, r) => <span style={{color: 'red'}}>¥ {Number(r.price).toFixed(2)}</span>
}
else
{
// 渲染单价
materialInfoColumns
[
7
].
render
=
(
t
,
r
)
=>
<
span
style=
{
{
color
:
'red'
}
}
>
¥
{
Number
(
r
.
price
).
toFixed
(
2
)
}
</
span
>
// tempColumn
[7].render = (t, r) => <span style={{color: 'red'}}>¥ {Number(r.price).toFixed(2)}</span>
materialInfoColumns
.
pop
()
tempColumn
.
pop
()
}
return
materialInfoColumns
return
tempColumn
})
const
handleShowMaterial
=
()
=>
{
const
supplyMembersId
=
ctx
.
getFieldValue
(
'vendorMemberId'
)
const
products
=
ctx
.
getFieldValue
(
'products'
)
if
(
supplyMembersId
)
{
materialRef
.
current
.
setVisible
(
true
)
materialRef
.
current
.
rowSelectionCtl
.
setSelectedRowKeys
(()
=>
products
.
map
(
item
=>
item
.
i
d
))
materialRef
.
current
.
rowSelectionCtl
.
setSelectedRowKeys
(()
=>
products
.
map
(
item
=>
item
.
productI
d
))
}
else
{
message
.
error
(
'请先选择采购询价合同'
)
}
...
...
@@ -80,7 +81,7 @@ export const useMaterialTable = (ctx: ISchemaFormActions | ISchemaFormAsyncActio
const
handleSave
=
row
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
newData
=
[...
ctx
.
getFieldValue
(
'products'
)];
const
index
=
newData
.
findIndex
(
item
=>
row
.
id
===
item
.
i
d
);
const
index
=
newData
.
findIndex
(
item
=>
row
.
productId
===
item
.
productI
d
);
const
item
=
newData
[
index
];
// 算单行价格
row
[
'amount'
]
=
getUnitPriceTotal
(
row
)
...
...
src/pages/transaction/purchaseOrder/orderCollectRequisition/schema/index.ts
View file @
66c3f0db
...
...
@@ -341,10 +341,10 @@ const basicInfo: ISchema = {
required
:
true
,
enum
:
[{
label
:
'请购单下单'
,
value
:
1
0
,
value
:
1
5
,
}],
title
:
'下单模式'
,
default
:
1
0
,
default
:
1
5
,
"x-component-props"
:
{
disabled
:
true
,
}
...
...
@@ -366,6 +366,7 @@ const basicInfo: ISchema = {
requisitionNo
:
{
type
:
'string'
,
title
:
'对应请购单'
,
required
:
true
,
"x-component-props"
:
{
disabled
:
true
,
addonAfter
:
"{{orderRequisition}}"
...
...
@@ -450,7 +451,7 @@ export const orderMaterial: ISchema = {
"x-component"
:
'MultTable'
,
required
:
true
,
"x-component-props"
:
{
rowKey
:
'
material
Id'
,
rowKey
:
'
product
Id'
,
columns
:
"{{materialColumns}}"
,
components
:
"{{materialComponents}}"
,
prefix
:
"{{materialAddButton}}"
,
...
...
@@ -505,6 +506,14 @@ const submitInfo: ISchema = {
},
}
},
FLEX_LAYOUT_RIGHT
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-component-props"
:
{
labelCol
:
2
,
wrapperCol
:
22
,
},
properties
:
{
deliveryAddresId
:
{
type
:
'string'
,
"x-component"
:
'SelectAddress'
,
...
...
@@ -526,31 +535,33 @@ const submitInfo: ISchema = {
title
:
'送货地址'
}
}
},
}
}
}
}
//
其他
信息
const
orther
Info
:
ISchema
=
{
//
发票
信息
const
invoice
Info
:
ISchema
=
{
"x-index"
:
4
,
type
:
'object'
,
"x-component"
:
'MellowCard'
,
"x-component-props"
:
{
title
:
'
其他
信息'
,
id
:
'
other
Info'
title
:
'
发票
信息'
,
id
:
'
invoice
Info'
},
properties
:
{
NO_SUBMIT_LAYOUT_ORTHER
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-component-props"
:
{
labelCol
:
4
,
wrapperCol
:
18
,
labelCol
:
2
,
wrapperCol
:
9
,
labelAlign
:
"left"
,
grid
:
true
,
full
:
true
,
autoRow
:
true
,
columns
:
2
,
columns
:
1
,
},
properties
:
{
hasInvoice
:
{
...
...
@@ -572,11 +583,84 @@ const ortherInfo: ISchema = {
}
]
},
FLEX_LAYOUT_RIGHT
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-component-props"
:
{
labelCol
:
2
,
wrapperCol
:
22
,
},
properties
:
{
theInvoiceId
:
{
type
:
'number'
,
title
:
' '
,
"x-component"
:
"theInvoiceList"
,
"x-component-props"
:
{
times
:
0
,
}
},
}
},
}
}
}
}
// 其他信息
const
ortherInfo
:
ISchema
=
{
"x-index"
:
5
,
type
:
'object'
,
"x-component"
:
'MellowCard'
,
"x-component-props"
:
{
title
:
'其他信息'
,
id
:
'otherInfo'
},
properties
:
{
NO_SUBMIT_LAYOUT_ORTHER
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-component-props"
:
{
labelCol
:
4
,
wrapperCol
:
18
,
labelAlign
:
"left"
,
grid
:
true
,
full
:
true
,
autoRow
:
true
,
columns
:
2
,
},
properties
:
{
// hasInvoice: {
// type: 'boolean',
// "x-component": 'CheckboxSingle',
// "x-component-props": {
// children: '需要发票',
// style: {
// marginTop: 4,
// }
// },
// title: '发票',
// default: false,
// "x-linkages": [
// {
// type: 'value:visible',
// target: 'theInvoiceId',
// condition: "{{$value}}"
// }
// ]
// },
// theInvoiceId: {
// type: 'number',
// title: ' ',
// "x-component": "theInvoiceList",
// "x-component-props": {
// times: 0,
// }
// },
pack
:
{
type
:
'string'
,
"x-component"
:
'textarea'
,
"x-component-props"
:
{
rows
:
4
rows
:
1
},
title
:
'包装要求'
,
"x-rules"
:
[
...
...
@@ -586,19 +670,11 @@ const ortherInfo: ISchema = {
}
]
},
theInvoiceId
:
{
type
:
'number'
,
title
:
' '
,
"x-component"
:
"theInvoiceList"
,
"x-component-props"
:
{
times
:
0
,
}
},
remark
:
{
type
:
'string'
,
"x-component"
:
'textarea'
,
"x-component-props"
:
{
rows
:
4
rows
:
1
},
title
:
'其他要求'
,
"x-rules"
:
[
...
...
@@ -620,6 +696,7 @@ export const orderAddSchema: ISchema = {
basicInfo
,
submitInfo
,
orderMaterial
,
invoiceInfo
,
ortherInfo
,
}
}
src/pages/transaction/purchaseOrder/orderCollectSrm/model/useMaterialTable.tsx
View file @
66c3f0db
...
...
@@ -48,20 +48,21 @@ export const useMaterialTable = (ctx: ISchemaFormActions | ISchemaFormAsyncActio
const
[
materialColumns
,
setMaterialColumns
]
=
useState
(()
=>
{
const
{
pageStatus
}
=
usePageStatus
()
const
tempColumn
=
[...
materialInfoColumns
]
if
(
pageStatus
===
PageStatus
.
ADD
)
{
// 渲染操作
materialInfoColumns
[
materialInfoColumns
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleDelete
(
record
)
}
>
删除
</
Button
>
tempColumn
[
tempColumn
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleDelete
(
record
)
}
>
删除
</
Button
>
// 渲染单价
materialInfoColumns
[
7
].
render
=
(
t
,
r
)
=>
<
span
style=
{
{
color
:
'red'
}
}
>
¥
{
Number
(
r
.
price
).
toFixed
(
2
)
}
</
span
>
tempColumn
[
7
].
render
=
(
t
,
r
)
=>
<
span
style=
{
{
color
:
'red'
}
}
>
¥
{
Number
(
r
.
price
).
toFixed
(
2
)
}
</
span
>
}
else
{
// 渲染单价
materialInfoColumns
[
7
].
render
=
(
t
,
r
)
=>
<
span
style=
{
{
color
:
'red'
}
}
>
¥
{
Number
(
r
.
price
).
toFixed
(
2
)
}
</
span
>
tempColumn
[
7
].
render
=
(
t
,
r
)
=>
<
span
style=
{
{
color
:
'red'
}
}
>
¥
{
Number
(
r
.
price
).
toFixed
(
2
)
}
</
span
>
//
materialInfoColumns[materialInfoColumns
.length - 1].render = (t, r) => null
materialInfoColumns
.
pop
()
//
tempColumn[tempColumn
.length - 1].render = (t, r) => null
tempColumn
.
pop
()
}
return
materialInfoColumns
return
tempColumn
})
const
handleShowMaterial
=
()
=>
{
const
supplyMembersId
=
ctx
.
getFieldValue
(
'vendorMemberId'
)
...
...
src/pages/transaction/purchaseOrder/readyAddRequisitionOrder/index.tsx
View file @
66c3f0db
...
...
@@ -12,7 +12,6 @@ import { FORM_FILTER_PATH } from '@/formSchema/const'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
{
useSelfTable
}
from
'./model/useReadyAddOrder'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
'../index.less'
/**
...
...
@@ -22,7 +21,7 @@ import '../index.less'
export
interface
ReadyAddRequisitionOrderProps
{}
const
fetchTableData
=
async
(
params
)
=>
{
const
{
data
}
=
await
PublicApi
.
getOrderBuyerCreate
Srm
Page
(
params
)
const
{
data
}
=
await
PublicApi
.
getOrderBuyerCreate
Requisition
Page
(
params
)
return
data
}
...
...
@@ -91,7 +90,6 @@ const ReadyAddRequisitionOrder:React.FC<ReadyAddRequisitionOrderProps> = () => {
);
},
components
:
{
DateRangePickerUnix
,
Submit
}
},
...
...
src/pages/transaction/purchaseOrder/readyAddRequisitionOrder/schema/index.ts
View file @
66c3f0db
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
getPurchaseOrderReadyAddPageSelectOption
}
from
'@/pages/transaction/effect'
;
import
{
ORDER_TYPE_INQUIRYT_PURCHASE
}
from
'@/constants/order'
;
export
const
tableListSchema
:
any
=
()
=>
{
const
res
=
getPurchaseOrderReadyAddPageSelectOption
()
if
(
res
)
{
const
{
orderTypes
:
OrderType
,
}
=
res
return
{
type
:
'object'
,
properties
:
{
...
...
@@ -44,19 +35,8 @@ export const tableListSchema: any = () => {
placeholder
:
'请输入供应会员名称'
}
},
"orderType"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
},
enum
:
OrderType
.
filter
(
item
=>
item
.
id
!==
ORDER_TYPE_INQUIRYT_PURCHASE
).
map
(
item
=>
({
label
:
item
[
'text'
],
value
:
item
[
'id'
],
}))
},
"[startDate,endDate]"
:
{
type
:
'daterange'
,
// "x-component": 'DateRangePickerUnix',
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
...
...
@@ -71,5 +51,4 @@ export const tableListSchema: any = () => {
},
}
}
}
}
src/pages/transaction/purchaseRequisition/increaseRequisition/components/materialTableCell/index.tsx
View file @
66c3f0db
...
...
@@ -2,6 +2,8 @@ import React, { useState, useRef, useContext } from 'react'
import
{
Form
,
Input
,
Select
,
Popover
,
Row
}
from
'antd'
;
import
{
EnvironmentOutlined
}
from
'@ant-design/icons'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
useFormDetail
}
from
'@/formSchema/effects/useFormDetail'
;
import
{
FormDetailContext
}
from
'@/formSchema/context'
;
export
interface
MaterialTableCellProps
{
title
:
React
.
ReactNode
;
...
...
@@ -47,6 +49,7 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
})
=>
{
const
formItemRef
=
useRef
<
any
>
();
const
{
form
}
=
useContext
(
EditableContext
);
const
{
formContext
}
=
useContext
(
FormDetailContext
);
// 是否显示地址
const
[
showAddress
,
setShowAddress
]
=
useState
<
boolean
>
(
false
)
...
...
@@ -62,11 +65,13 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
setReceiveInfo
(()
=>
deliveryAddress
[
0
])
}
const
save
=
async
e
=>
{
const
save
=
async
()
=>
{
try
{
const
values
=
await
form
.
validateFields
();
handleSave
({
...
record
,
...
values
});
formContext
.
ctl
.
setInnerFormErrors
(
0
)
}
catch
(
errInfo
)
{
formContext
.
ctl
.
setInnerFormErrors
(
errInfo
.
errorFields
.
length
)
console
.
log
(
'Save failed:'
,
errInfo
);
}
};
...
...
src/pages/transaction/purchaseRequisition/increaseRequisition/index.tsx
View file @
66c3f0db
...
...
@@ -91,7 +91,9 @@ const IncreaseRequisition:React.FC<{}> = () => {
// 新增订单/编辑订单
const
params
=
{
...
value
}
console
.
log
(
value
)
if
(
formContext
.
innerFormErrors
)
{
throw
new
Error
(
'请完善订单物料数据'
)
}
// 校验采购数量
const
judgementByCount
=
params
.
products
?.
length
&&
params
.
products
.
map
(
item
=>
{
if
(
item
.
quantity
){
...
...
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