- 新增 PurchaseOrderFormItem、PurchaseOrderModal 等采购单表单项组件 - 在 OrderCostList 和 OrderSupplierList 中集成采购单选择功能 - 新增 OrderRebateList 返利列表组件 - 实现采购单数据的展示与选择逻辑 - 添加采购单相关的搜索和筛选字段 - 支持采购单详情查看及关联数据显示 - 优化订单成本列表的创建表单结构 - 增加表格行选择和批量操作功能 - 完善采购单状态标签显示及样式处理
63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
import PurchaseOrderModal from '@/components/Order/PurchaseOrderModal';
|
|
import { ProFormSelect } from '@ant-design/pro-components';
|
|
import { ProFieldFCRenderProps } from '@ant-design/pro-provider';
|
|
import { useState } from 'react';
|
|
|
|
export interface IPurchaseOrderFormItemProps
|
|
extends Omit<ProFieldFCRenderProps, 'value' | 'onChange'> {
|
|
value?: BusinessAPI.PurchaseOrderVO['orderId'];
|
|
onChange?: (value?: BusinessAPI.PurchaseOrderVO['orderId']) => void;
|
|
}
|
|
|
|
export default function PurchaseOrderFormItem(
|
|
props: IPurchaseOrderFormItemProps,
|
|
) {
|
|
const { value, onChange } = props;
|
|
|
|
const [showPurchaseOrderModal, setShowPurchaseOrderModal] =
|
|
useState<boolean>(false);
|
|
const [purchaseOrderList, setPurchaseOrderList] =
|
|
useState<(BusinessAPI.PurchaseOrderVO | undefined)[]>();
|
|
|
|
return (
|
|
<>
|
|
<ProFormSelect
|
|
fieldProps={{
|
|
open: false,
|
|
onClear: () => {
|
|
onChange?.(undefined);
|
|
},
|
|
onClick: () => {
|
|
setShowPurchaseOrderModal(true);
|
|
},
|
|
value: value,
|
|
placeholder: '请选择采购单',
|
|
options: purchaseOrderList?.map(
|
|
(dealerVO?: BusinessAPI.PurchaseOrderVO) => {
|
|
return {
|
|
value: dealerVO?.orderId,
|
|
label: `${dealerVO?.orderSn}`,
|
|
};
|
|
},
|
|
),
|
|
}}
|
|
/>
|
|
<PurchaseOrderModal
|
|
title={'选择采购单'}
|
|
open={showPurchaseOrderModal}
|
|
onOk={() => setShowPurchaseOrderModal(false)}
|
|
onCancel={() => setShowPurchaseOrderModal(false)}
|
|
onFinish={async (purchaseOrderVOList) => {
|
|
if (purchaseOrderVOList.length > 0) {
|
|
const purchaseOrderVO = purchaseOrderVOList[0];
|
|
onChange?.(purchaseOrderVO?.orderId);
|
|
setPurchaseOrderList(purchaseOrderVOList);
|
|
setShowPurchaseOrderModal(false);
|
|
}
|
|
}}
|
|
type={'radio'}
|
|
/>
|
|
</>
|
|
);
|
|
}
|