Commit a7a359aa authored by XieZhiXiong's avatar XieZhiXiong

feat: 完善查看关联请购单弹窗

parent b6e61238
...@@ -4,7 +4,7 @@ import { OrderDetailContext } from '../../_public/order/context' ...@@ -4,7 +4,7 @@ import { OrderDetailContext } from '../../_public/order/context'
import { EditOutlined } from '@ant-design/icons' import { EditOutlined } from '@ant-design/icons'
import styled from 'styled-components' import styled from 'styled-components'
import MellowCard from '@/components/MellowCard' import MellowCard from '@/components/MellowCard'
import RequisitionModalTable from '../../purchaseOrder/orderCollectSrm/components/requisitionModalTable' import RequisitionModalTable, { RequisitionModalTableRef } from '../../purchaseOrder/orderCollectSrm/components/requisitionModalTable'
import { OrderKindType, OrderModalType } from '@/constants/order' import { OrderKindType, OrderModalType } from '@/constants/order'
import { AddressPop } from '../addressPop' import { AddressPop } from '../addressPop'
import { getIntl } from 'umi' import { getIntl } from 'umi'
...@@ -183,7 +183,7 @@ const EditableCell: React.FC<EditableCellProps> = ({ ...@@ -183,7 +183,7 @@ const EditableCell: React.FC<EditableCellProps> = ({
}; };
const OrderProductTable:React.FC<OrderProductTableProps> = ({editable}) => { const OrderProductTable:React.FC<OrderProductTableProps> = ({editable}) => {
const requisitionRef = useRef<any>({}) // 关联请购单 const requisitionRef = useRef<RequisitionModalTableRef | null>(null) // 关联请购单
const { ctl, data, preview } = useContext(OrderDetailContext) const { ctl, data, preview } = useContext(OrderDetailContext)
const { product = [], orderMode, orderKind } = data || {} const { product = [], orderMode, orderKind } = data || {}
const creditsCommodity = (orderMode === 10 || orderMode === 25) // @todo 积分或渠道积分下单模式 const creditsCommodity = (orderMode === 10 || orderMode === 25) // @todo 积分或渠道积分下单模式
...@@ -436,17 +436,12 @@ const OrderProductTable:React.FC<OrderProductTableProps> = ({editable}) => { ...@@ -436,17 +436,12 @@ const OrderProductTable:React.FC<OrderProductTableProps> = ({editable}) => {
return orderMode === OrderModalType.PURCHASE_REQUISITION_CONTRACT_ORDER && <> return orderMode === OrderModalType.PURCHASE_REQUISITION_CONTRACT_ORDER && <>
<Button <Button
type="link" type="link"
onClick={ () => { onClick={() => requisitionRef.current?.show(record.requisitions || [])}
if (requisitionRef) {
requisitionRef.current.setCurrentMaterial(record)
requisitionRef.current.setVisible(true)
}
} }
> >
{/* 关联请购单 */} {/* 关联请购单 */}
{ intl.formatMessage({ id: 'transaction_components.guanlianqinggoudan' }) } { intl.formatMessage({ id: 'transaction_components.guanlianqinggoudan' }) }
</Button> </Button>
<RequisitionModalTable currentRef={requisitionRef}/> <RequisitionModalTable ref={requisitionRef}/>
</> </>
}, },
width: 152, width: 152,
......
import React, { useEffect, useState } from 'react' import React, { useRef, useImperativeHandle } from 'react'
import { useIntl } from 'umi'
import ModalTable, { ModalTableProps } from '@/components/ModalTable' import ModalTable, { ModalTableProps } from '@/components/ModalTable'
import { useModalTable } from '../../model/useModalTable'
import { ISchemaFormActions, ISchemaFormAsyncActions } from '@formily/antd' import { ISchemaFormActions, ISchemaFormAsyncActions } from '@formily/antd'
import { getContractPurchaseRequisitionPageByProductIds, GetContractPurchaseRequisitionPageByProductIdsRequest } from '@/services/ContractV2Api'
import { requisitionColumns } from '../../constant' import { requisitionColumns } from '../../constant'
import { getOrderBuyerFindRequisition } from '@/services/OrderNewV2Api' import { useModalTable } from '../../model/useModalTable'
import { useIntl } from 'umi'
type RequisitionType = {
/**
* 请购单id
*/
requisitionId: number,
/**
* 下单数量
*/
orderQuantity: number,
}
export interface ContractModalTableProps extends ModalTableProps { export interface RequisitionModalTableProps extends ModalTableProps {
type?: 'radio' | 'checkbox', type?: 'radio' | 'checkbox',
schemaAction?: ISchemaFormActions | ISchemaFormAsyncActions, schemaAction?: ISchemaFormActions | ISchemaFormAsyncActions,
currentRef?: any, currentRef?: any,
confirmModal?() confirmModal?()
} }
export interface RequisitionModalTableRef {
show: (record: RequisitionType[]) => void,
}
// 关联请购单弹窗 // 关联请购单弹窗
const RequisitionModalTable:React.FC<ContractModalTableProps> = (props) => { const RequisitionModalTable: React.ForwardRefRenderFunction<RequisitionModalTableRef, RequisitionModalTableProps> = (props, ref) => {
const { type = 'radio', schemaAction, confirmModal, currentRef, ...restProps } = props const { type = 'radio', schemaAction, confirmModal, currentRef, ...restProps } = props
const { visible, setVisible } = useModalTable({ type }) const { visible, setVisible } = useModalTable({ type })
const intl = useIntl() const intl = useIntl()
const [currentMaterial, setCurrentMaterial] = useState<any>() const requisitions = useRef<RequisitionType[]>([]);
const fetchTableData = async (params) => { const fetchTableData = async (params) => {
if (currentMaterial) { const res = await getContractPurchaseRequisitionPageByProductIds({
if (Array.isArray(currentMaterial.requisitionList)) { prpIdsStr: requisitions.current.map((item) => item.requisitionId).join(','),
// 参数有传列表数据进来,直接赋值给表格 } as GetContractPurchaseRequisitionPageByProductIdsRequest)
return currentMaterial.requisitionList if (res.code === 1000) {
} else { const compountedData = res.data.data.map((item) => {
// 参数没有传列表数据进来,则根据 商品id 请求 关联请购单 const currentEntity = requisitions.current.find((requisition) => requisition.requisitionId === item.prpId) || {}
return (await getOrderBuyerFindRequisition({ return ({
...params, ...item,
productId: currentMaterial.productId, ...currentEntity,
}, { useCache: true, ttl: 10 * 1000 })).data })
})
return {
...res.data,
data: compountedData,
} }
} }
return { data: [], totalCount: 0 }
} }
/** 弹窗内 表格组件 参数 */ /** 弹窗内 表格组件 参数 */
...@@ -42,20 +62,19 @@ const RequisitionModalTable:React.FC<ContractModalTableProps> = (props) => { ...@@ -42,20 +62,19 @@ const RequisitionModalTable:React.FC<ContractModalTableProps> = (props) => {
columns: requisitionColumns, columns: requisitionColumns,
fetchTableData, fetchTableData,
tableProps: { tableProps: {
rowKey: 'requisitionId', rowKey: 'prpId',
scroll: { x: 1200 }, scroll: { x: 1200 },
} }
} }
useEffect(() => { const handleShow = (records: RequisitionType[]) => {
if (currentRef) { requisitions.current = records;
currentRef.current = { setVisible(true);
visible, };
setVisible,
setCurrentMaterial, useImperativeHandle(ref, () => ({
} show: handleShow,
} }))
}, [])
return ( return (
<ModalTable <ModalTable
...@@ -76,6 +95,6 @@ const RequisitionModalTable:React.FC<ContractModalTableProps> = (props) => { ...@@ -76,6 +95,6 @@ const RequisitionModalTable:React.FC<ContractModalTableProps> = (props) => {
) )
} }
RequisitionModalTable.defaultProps = {} const RequisitionModalTableForWard = React.forwardRef<RequisitionModalTableRef, RequisitionModalTableProps>(RequisitionModalTable);
export default RequisitionModalTable export default RequisitionModalTableForWard
...@@ -19,7 +19,7 @@ import { useMaterialTable } from './model/useMaterialTable' ...@@ -19,7 +19,7 @@ import { useMaterialTable } from './model/useMaterialTable'
import { convertOrderMaterialData } from './utils'; import { convertOrderMaterialData } from './utils';
import ContractModalTable from './components/contractModalTable' import ContractModalTable from './components/contractModalTable'
import MaterialModalTable from './components/materialModalTable' import MaterialModalTable from './components/materialModalTable'
import RequisitionModalTable from './components/requisitionModalTable' import RequisitionModalTable, { RequisitionModalTableRef } from './components/requisitionModalTable'
import OrderMaterialsDrawer, { OrderMaterialsConfirmValue, OrderMaterialsDrawerRef } from './components/orderMaterialsDrawer' import OrderMaterialsDrawer, { OrderMaterialsConfirmValue, OrderMaterialsDrawerRef } from './components/orderMaterialsDrawer'
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect' import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'
import { OrderModalType } from '@/constants/order' import { OrderModalType } from '@/constants/order'
...@@ -99,7 +99,6 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => { ...@@ -99,7 +99,6 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
const shopDataRef = useRef<any>({}) const shopDataRef = useRef<any>({})
const intl = useIntl() const intl = useIntl()
const contractOrderRef = useRef<any>({}) // 合同下单选采购合同 const contractOrderRef = useRef<any>({}) // 合同下单选采购合同
const requisitionRef = useRef<any>({}) // 关联请购单
const [formLoading, setFormLoading] = useState(false) const [formLoading, setFormLoading] = useState(false)
const [btnLoading, setBtnLoading] = useState(false) const [btnLoading, setBtnLoading] = useState(false)
const update = useUpdate() const update = useUpdate()
...@@ -115,9 +114,10 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => { ...@@ -115,9 +114,10 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
return resultState return resultState
}) })
const [visibleOrderMaterialsDrawer, setVisibleOrderMaterialsDrawer] = useState(false) const [visibleOrderMaterialsDrawer, setVisibleOrderMaterialsDrawer] = useState(false)
const { formContext } = useFormDetail() const { formContext } = useFormDetail()
const requisitionRef = useRef<RequisitionModalTableRef | null>(null) // 关联请购单
const orderMaterialsDrawerRef = useRef<OrderMaterialsDrawerRef | null>(null) const orderMaterialsDrawerRef = useRef<OrderMaterialsDrawerRef | null>(null)
const handleVisibleOrderMaterialsDrawer = (flag?: boolean) => { const handleVisibleOrderMaterialsDrawer = (flag?: boolean) => {
...@@ -439,7 +439,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => { ...@@ -439,7 +439,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
{/* 选择采购物料 */} {/* 选择采购物料 */}
<MaterialModalTable currentRef={materialRef} schemaAction={addSchemaAction} sectionProps={surplusProps} /> <MaterialModalTable currentRef={materialRef} schemaAction={addSchemaAction} sectionProps={surplusProps} />
{/* 查看关联请购单 */} {/* 查看关联请购单 */}
<RequisitionModalTable currentRef={requisitionRef} schemaAction={addSchemaAction} /> <RequisitionModalTable ref={requisitionRef} schemaAction={addSchemaAction} />
{/* 选择采购物料抽屉 */} {/* 选择采购物料抽屉 */}
<OrderMaterialsDrawer <OrderMaterialsDrawer
......
...@@ -7,6 +7,7 @@ import { useModalTable } from './useModalTable'; ...@@ -7,6 +7,7 @@ import { useModalTable } from './useModalTable';
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus'; import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
import { useIntl } from 'umi'; import { useIntl } from 'umi';
import { OrderModalType } from '@/constants/order'; import { OrderModalType } from '@/constants/order';
import { RequisitionModalTableRef } from '../components/requisitionModalTable';
// 对象按key排序(运用于商城传过来的阶梯价格排序) // 对象按key排序(运用于商城传过来的阶梯价格排序)
export const sortByKey = (params) => { export const sortByKey = (params) => {
...@@ -29,7 +30,7 @@ export const getUnitPriceTotal = (record) => { ...@@ -29,7 +30,7 @@ export const getUnitPriceTotal = (record) => {
export const useMaterialTable = ( export const useMaterialTable = (
ctx: ISchemaFormActions | ISchemaFormAsyncActions, ctx: ISchemaFormActions | ISchemaFormAsyncActions,
orderMode = ctx.getFieldValue('orderMode'), orderMode = ctx.getFieldValue('orderMode'),
requisitionRef?: React.MutableRefObject<any>, requisitionRef?: React.MutableRefObject<RequisitionModalTableRef>,
onClickAdd?: () => void, onClickAdd?: () => void,
onDeleteRecord?: (record: any) => void, onDeleteRecord?: (record: any) => void,
) => { ) => {
...@@ -69,12 +70,7 @@ export const useMaterialTable = ( ...@@ -69,12 +70,7 @@ export const useMaterialTable = (
tempColumn[associatedIndex].render = (text, record) => ( tempColumn[associatedIndex].render = (text, record) => (
<Button <Button
type="link" type="link"
onClick={ () => { onClick={() => requisitionRef.current?.show(record.requisitions || [])}
if (requisitionRef) {
requisitionRef.current.setCurrentMaterial(record)
requisitionRef.current.setVisible(true)
}
} }
> >
关联请购单 关联请购单
</Button> </Button>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment