| | |
| | | Box, |
| | | Button, |
| | | Paper, |
| | | styled |
| | | styled, |
| | | Select, |
| | | MenuItem, |
| | | FormControl, |
| | | InputLabel |
| | | } from '@mui/material'; |
| | | import DialogCloseButton from "../../components/DialogCloseButton"; |
| | | import { EDIT_MODE, DEFAULT_START_PAGE, DEFAULT_PAGE_SIZE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; |
| | |
| | | } |
| | | }; |
| | | |
| | | const [formData, setFormData] = useState({}); |
| | | const [formData, setFormData] = useState({ locUseStatus: 'F' }); |
| | | const [tableData, setTableData] = useState([]); |
| | | const [dyFields, setDyFields] = useState([]); |
| | | const [selectedRows, setSelectedRows] = useState([]); |
| | |
| | | const [isLoading, setIsLoading] = useState(false); |
| | | const handleChange = (e) => { |
| | | const { name, value } = e.target; |
| | | setFormData(() => ({ |
| | | setFormData((prev) => ({ |
| | | ...prev, |
| | | [name]: value |
| | | })); |
| | | }; |
| | |
| | | setFormData({ |
| | | name: null, |
| | | code: null, |
| | | groupId: null |
| | | groupId: null, |
| | | locUseStatus: 'F' |
| | | }) |
| | | } |
| | | |
| | | const handleSubmit = () => { |
| | | const hasarr = data.map(el => +el.matnrId) |
| | | const selectedData = selectedRows.filter(item => !hasarr.includes(item)).map(id => (tableData.find(row => row.id === id))); |
| | | const value = selectedData.map((el => { |
| | | const hasarr = data.map(el => +el.matnrId); |
| | | const selectedData = selectedRows |
| | | .filter((item) => !hasarr.includes(item)) |
| | | .map((id) => tableData.find((row) => row.id === id)) |
| | | .filter(Boolean); |
| | | const deduped = [...new Map(selectedData.map((s) => [s.id, s])).values()]; |
| | | const value = deduped.map((el, i) => { |
| | | const dynamicFields = dyFields.reduce((acc, item) => { |
| | | acc[item.fields] = el['extendFields']?.[item.fields] || ''; |
| | | return acc; |
| | | }, {}); |
| | | return { |
| | | _rowKey: `new_${Date.now()}_${i}`, |
| | | matnrId: el.id, |
| | | maktx: el.name, |
| | | matnrCode: el.code, |
| | | stockUnit: el.stockUnit || '', |
| | | purUnit: el.purchaseUnit || '', |
| | | ...dynamicFields |
| | | } |
| | | })) |
| | | }; |
| | | }); |
| | | setData([...data, ...value]); |
| | | setOpen(false); |
| | | reset(); |
| | | }; |
| | | |
| | | const getData = async () => { |
| | | setIsLoading(true) |
| | | console.log(page); |
| | | const res = await request.post(`/matnr/page`, { |
| | | setIsLoading(true); |
| | | const res = await request.post(`/outStock/matnr/page`, { |
| | | ...formData, |
| | | current: page?.page, |
| | | pageSize: page?.pageSize, |
| | | orderBy: "create_time desc" |
| | | }); |
| | | if (res?.data?.code === 200) { |
| | | setTableData(res.data.data.records); |
| | | setRowCount(res.data?.data?.total); |
| | | |
| | | setTableData(res.data.data.records || []); |
| | | setRowCount(res.data?.data?.total ?? 0); |
| | | } else { |
| | | notify(res.data.msg); |
| | | notify(res.data?.msg || '查询失败'); |
| | | } |
| | | setIsLoading(false) |
| | | |
| | | setIsLoading(false); |
| | | }; |
| | | |
| | | useEffect(() => { |
| | |
| | | size="small" |
| | | /> |
| | | </Grid> |
| | | <Grid item md={4}> |
| | | <Grid item md={3}> |
| | | <TreeSelectInput |
| | | label="table.field.matnr.groupId" |
| | | value={formData.groupId} |
| | |
| | | name="groupId" |
| | | onChange={handleChange} |
| | | /> |
| | | </Grid> |
| | | <Grid item md={3}> |
| | | <FormControl size="small" fullWidth variant="filled"> |
| | | <InputLabel>{translate('table.field.loc.useStatus')}</InputLabel> |
| | | <Select |
| | | name="locUseStatus" |
| | | value={formData.locUseStatus ?? ''} |
| | | onChange={handleChange} |
| | | label={translate('table.field.loc.useStatus')} |
| | | > |
| | | <MenuItem value="">全部</MenuItem> |
| | | {(JSON.parse(localStorage.getItem('sys_dicts')) || []) |
| | | .filter((d) => d.dictTypeCode === 'sys_loc_use_stas') |
| | | .map((d) => ( |
| | | <MenuItem key={d.value} value={d.value}>{d.label}</MenuItem> |
| | | ))} |
| | | </Select> |
| | | </FormControl> |
| | | </Grid> |
| | | </Grid> |
| | | </Box> |
| | |
| | | const notify = useNotify(); |
| | | |
| | | const [columns, setColumns] = useState([ |
| | | // { field: 'id', headerName: 'ID', width: 100 }, |
| | | { field: 'name', headerName: translate('table.field.matnr.name'), width: 300 }, |
| | | { field: 'code', headerName: translate('table.field.matnr.code'), width: 200 }, |
| | | { field: 'groupId$', headerName: translate('table.field.matnr.groupId'), width: 100 }, |
| | |
| | | { field: 'unit', headerName: translate('table.field.matnr.unit'), width: 100 }, |
| | | { field: 'purchaseUnit', headerName: translate('table.field.matnr.purUnit'), width: 100 }, |
| | | { field: 'stockUnit', headerName: translate('table.field.matnr.stockUnit'), width: 100 }, |
| | | { field: 'stockQty', headerName: translate('table.field.matnr.stockQty') || '库存数量', width: 110, type: 'number', valueFormatter: (v) => (v != null ? Number(v) : 0) }, |
| | | { field: 'locUseStatus$', headerName: translate('table.field.loc.useStatus'), width: 120 }, |
| | | { field: 'locCodes$', headerName: translate('table.field.loc.locCode'), width: 180, flex: 1 }, |
| | | { field: 'stockLeval$', headerName: translate('table.field.matnr.stockLevel'), width: 100, sortable: false }, |
| | | ]) |
| | | |