ERPTurbo_Admin/packages/app-operation/src/components/Reconciliation/ReconciliationSearch.tsx
shenyifei 8b79f1bda7 refactor(payment): 重构支付相关组件和类型定义
- 更新公司支付账户模态框中的账户列表过滤逻辑
- 修改经销商支付账户列表中账户ID参数为可选类型
- 优化经销商搜索组件的状态管理和副作用处理
- 在支付记录列表中使用账户类别映射替代硬编码值枚举
- 为支付任务支付组件添加支付时间日期选择器
- 扩展对账单相关组件导出并新增发票选择功能
- 更新对账单发票列表的数据结构和初始化逻辑
- 在对账单列表中调整完成状态检查和发票上传按钮显示条件
- 重构对账单支付列表的列配置和表单字段定义
- 更新对账单搜索组件的状态管理逻辑
- 本地化文件中更新对账单相关字段标签和占位符文本
- 服务类型定义中更新账户类别和类型的枚举值
- 添加类型修复脚本用于处理数字数组类型转换问题
- 新增对账单发票表单项和模态框组件实现
2026-01-13 16:02:37 +08:00

77 lines
2.2 KiB
TypeScript

import { IReconciliationModalProps, ReconciliationModal } from '@/components';
import {
FormInstance,
ProFormSelect,
ProFormSelectProps,
} from '@ant-design/pro-components';
import { useEffect, useState } from 'react';
export interface IReconciliationSearchProps extends ProFormSelectProps {
form: FormInstance;
selectedList?: IReconciliationModalProps['selectedList'];
onFinish?: (reconciliationVOList: BusinessAPI.ReconciliationVO[]) => void;
params: BusinessAPI.ReconciliationPageQry;
}
export default function ReconciliationSearch(
props: IReconciliationSearchProps,
) {
const { form, selectedList, onFinish, params, ...rest } = props;
const [showReconciliationModal, setShowReconciliationModal] =
useState<boolean>(false);
const [reconciliationList, setReconciliationList] =
useState<BusinessAPI.ReconciliationVO[]>();
useEffect(() => {
setReconciliationList(selectedList);
}, [selectedList]);
return (
<>
<ProFormSelect
{...rest}
fieldProps={{
open: false,
onClick: () => {
setShowReconciliationModal(true);
},
placeholder: '请选择对账记录',
options: reconciliationList?.map(
(reconciliationVO?: BusinessAPI.ReconciliationVO) => {
return {
value: reconciliationVO?.reconciliationId,
label:
reconciliationVO?.reconciliationSn ||
reconciliationVO?.reconciliationId,
};
},
),
}}
/>
<ReconciliationModal
title={'选择对账记录'}
open={showReconciliationModal}
onOk={() => setShowReconciliationModal(false)}
onCancel={() => setShowReconciliationModal(false)}
selectedList={selectedList}
onFinish={async (reconciliationVOList) => {
if (reconciliationVOList.length > 0) {
const reconciliationVO = reconciliationVOList[0];
form.setFieldsValue({
reconciliationId: reconciliationVO?.reconciliationId,
reconciliationVO: reconciliationVO,
});
form.validateFields(['reconciliationId', 'reconciliationVO']);
setReconciliationList(reconciliationVOList);
setShowReconciliationModal(false);
onFinish?.(reconciliationVOList);
}
}}
type={'radio'}
params={params}
/>
</>
);
}