import React, {useEffect, useMemo, useState} from 'react'; import {Modal, Table, Input, message, Button, Select, Switch} from 'antd'; import Column from 'antd/lib/table/Column'; import { debounce } from 'lodash'; import {getPartTypeApi} from '@/pages/pms/part/Repertory/api'; import useInitail from '@/hooks/useInitail'; import {planPoolTypeData} from '@/pages/pms/entity'; const Search = Input.Search; interface Props { onCancel: () => any, visible: boolean, parts: any[] onOk: (parts: any[]) => any setParams: Function _supplierId: number | undefined } const {Option} = Select; export default function Index({ onCancel, visible, parts = [], onOk, setParams, _supplierId }: Props) { const [selectedParts, setSelectedParts] = useState([]); const [dfParam, setDfParam] = useState({keywords: ''}); const [partList, setPartList] = useState(parts); const [info, setInfo] = useState<{open: boolean, partName: string, poolId?: number}>({open: false, partName: '', poolId: undefined}); const [partArr, setPartArr] = useState([]); const shopNames = useMemo(() => { return Array.from(new Set(parts.map(it => it.shopName || '').filter(it => !!it))); }, [parts]); const storageNames = useMemo(() => { return Array.from(new Set(parts.map(it => it.storageName || '').filter(it => !!it))); }, [parts]); const supplierNames = useMemo(() => { return Array.from(new Set(parts.map(it => it.supplierName || '').filter(it => !!it))); }, [parts]); const { data: partTypeData } = useInitail(getPartTypeApi, [], {}); useEffect(() => { if (!visible) { setSelectedParts([]); setPartArr([]); setPartList(parts); } }, [visible, parts]); function handSave() { if (selectedParts.length == 0) { message.error("请选择配件"); return; } if (partArr.some(it => !!it.supplierId)) { for (const item of partArr) { if (!!item.supplierId && item.supplierId != _supplierId) { setInfo({ open: true, partName: item.partName, poolId: item.poolId }); return; } } } onOk && onOk(selectedParts); onCancel && onCancel(); } const handleChange = debounce((value) => { setDfParam({...dfParam, keywords: value || ''}); }, 500); useEffect(() => { setPartList(parts.filter(it => { return (it.partCode || '').includes(dfParam.keywords) || (it.partName || '').includes(dfParam.keywords) || (it.supplierName || '').includes(dfParam.keywords); }) .filter(it => { return (dfParam.partTypeName && it.partTypeName.includes(dfParam.partTypeName)) || !dfParam.partTypeName; }) .filter(it => { return (dfParam.storageName && it.storageName == dfParam.storageName) || !dfParam.storageName; }) .filter(it => { return (dfParam.shopName && it.shopName == dfParam.shopName) || !dfParam.shopName; }) .filter(it => { return (dfParam.supplierName && it.supplierName == dfParam.supplierName) || !dfParam.supplierName; }) .filter(i => (dfParam.typeName && i.typeName == planPoolTypeData.find(item => item.value == dfParam.typeName)?.label) || !dfParam.typeName)); }, [dfParam]); return ( 取消, ]} >
setParams({isOil: checked}, true)} style={{marginLeft: 10}} />
`${part.poolId}`), onSelect: (row: any, _selected: boolean) => { const index = selectedParts.findIndex(_row => _row.poolId == row.poolId); let newData = [...selectedParts]; if (_selected) { newData.unshift(row); } else if (index > -1) { newData.splice(index, 1); } setPartArr(newData); setSelectedParts([...newData]); }, onSelectAll: (selected, selectedRows, changeRows) => { const changedKeys = changeRows.map(row => `${row.poolId}`); let newData = [...selectedParts]; // 全选 if (selected) { newData = selectedParts.concat(changeRows.filter(row => !selectedParts.some(item => item.poolId == row.poolId)),); } else { newData = selectedParts.filter(row => !changedKeys.includes(`${row.poolId}`)); } setPartArr(newData); setSelectedParts(newData); }, }} rowKey={(record) => `${record.poolId}`} >
{ setPartArr(partArr.filter((i => i.poolId != info.poolId))); setSelectedParts(selectedParts.filter((i => i.poolId != info.poolId))); setInfo({open: false, partName: '', poolId: undefined}); }} onOk={() => { setPartArr(partArr.filter((i => i.poolId != info.poolId))); setInfo({ open: false, partName: '', poolId: undefined }); }} >

【{info.partName}】本次采购供应商和上次采购供应商不一致,是否继续?

); }