| | |
| | | import WarehouseAreasItemCreate from "./WarehouseAreasItemCreate"; |
| | | import request from '@/utils/request'; |
| | | import MyExportButton from '../components/MyExportButton'; |
| | | import { DEFAULT_PAGE_SIZE } from '@/config/setting'; |
| | | import { DEFAULT_PAGE_SIZE, PAGE_DRAWER_WIDTH } from '@/config/setting'; |
| | | import StickyDataTable from "../components/StickyDataTable"; |
| | | import WarehouseIsptResult from "./WarehouseIsptResult"; |
| | | import useTableLayout from '@/utils/useTableLayout'; |
| | | |
| | | const filters = [ |
| | | <SearchInput source="condition" alwaysOn />, |
| | | <NumberInput source="areaId" label="table.field.warehouseAreasItem.areaId" />, |
| | | <TextInput source="asnCode" label="table.field.warehouseAreasItem.asnCode" />, |
| | | <TextInput source="areaName" label="table.field.warehouseAreasItem.areaName" />, |
| | | <NumberInput source="matnrId" label="table.field.warehouseAreasItem.matnrId" />, |
| | | <TextInput source="matnrName" label="table.field.warehouseAreasItem.matnrName" />, |
| | | <TextInput source="matnrCode" label="table.field.warehouseAreasItem.matnrCode" />, |
| | | <TextInput source="barcode" label="table.field.warehouseAreasItem.barcode" />, |
| | | <NumberInput source="anfme" label="table.field.warehouseAreasItem.anfme" />, |
| | | <TextInput source="batch" label="table.field.warehouseAreasItem.batch" />, |
| | | <TextInput source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextInput source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextInput source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextInput source="unit" label="table.field.warehouseAreasItem.unit" />, |
| | | <TextInput source="stockUnit" label="table.field.warehouseAreasItem.stockUnit" />, |
| | | <TextInput source="brand" label="table.field.warehouseAreasItem.brand" />, |
| | | <ReferenceInput source="shipperId" label="table.field.warehouseAreasItem.shipperId" reference="companys"> |
| | | const baseFilters = [ |
| | | <SearchInput key="condition" source="condition" alwaysOn />, |
| | | <NumberInput key="areaId" source="areaId" label="table.field.warehouseAreasItem.areaId" />, |
| | | <TextInput key="asnCode" source="asnCode" label="table.field.warehouseAreasItem.asnCode" />, |
| | | <TextInput key="areaName" source="areaName" label="table.field.warehouseAreasItem.areaName" />, |
| | | <NumberInput key="matnrId" source="matnrId" label="table.field.warehouseAreasItem.matnrId" />, |
| | | <TextInput key="matnrName" source="matnrName" label="table.field.warehouseAreasItem.matnrName" />, |
| | | <TextInput key="matnrCode" source="matnrCode" label="table.field.warehouseAreasItem.matnrCode" />, |
| | | <TextInput key="barcode" source="barcode" label="table.field.warehouseAreasItem.barcode" />, |
| | | <NumberInput key="anfme" source="anfme" label="table.field.warehouseAreasItem.anfme" />, |
| | | <TextInput key="batch" source="batch" label="table.field.warehouseAreasItem.batch" />, |
| | | <TextInput key="platOrderCode" source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextInput key="platWorkCode" source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextInput key="projectCode" source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextInput key="unit" source="unit" label="table.field.warehouseAreasItem.unit" />, |
| | | <TextInput key="stockUnit" source="stockUnit" label="table.field.warehouseAreasItem.stockUnit" />, |
| | | <TextInput key="brand" source="brand" label="table.field.warehouseAreasItem.brand" />, |
| | | <ReferenceInput key="shipperId" source="shipperId" label="table.field.warehouseAreasItem.shipperId" reference="companys"> |
| | | <AutocompleteInput label="table.field.warehouseAreasItem.shipperId" optionText="name" filterToQuery={(val) => ({ name: val })} /> |
| | | </ReferenceInput>, |
| | | <TextInput source="splrId" label="table.field.warehouseAreasItem.splrId" />, |
| | | <NumberInput source="weight" label="table.field.warehouseAreasItem.weight" />, |
| | | <TextInput source="prodTime" label="table.field.warehouseAreasItem.prodTime" />, |
| | | <TextInput source="splrBtch" label="table.field.warehouseAreasItem.splrBtch" />, |
| | | <TextInput key="splrId" source="splrId" label="table.field.warehouseAreasItem.splrId" />, |
| | | <NumberInput key="weight" source="weight" label="table.field.warehouseAreasItem.weight" />, |
| | | <TextInput key="prodTime" source="prodTime" label="table.field.warehouseAreasItem.prodTime" />, |
| | | <TextInput key="splrBtch" source="splrBtch" label="table.field.warehouseAreasItem.splrBtch" />, |
| | | |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | <TextInput key="memo" label="common.field.memo" source="memo" />, |
| | | <SelectInput |
| | | key="status" |
| | | label="common.field.status" |
| | | source="status" |
| | | choices={[ |
| | |
| | | ]} |
| | | resettable |
| | | />, |
| | | ] |
| | | ]; |
| | | |
| | | const baseFilterSources = new Set(baseFilters.map((item) => item.props.source).filter(Boolean)); |
| | | |
| | | const hiddenColumns = [ |
| | | 'prodTime', 'platOrderCode', 'id', 'createTime', 'memo', 'areaId', 'brand', |
| | | 'weight', 'splrId', 'projectCode', 'statusBool', 'extendFields.[priceUnitId]', 'isptResult$', |
| | | 'extendFields.[inStockType]', 'matnrId', 'trackCode', 'workQty', 'batch', 'shipperId', |
| | | 'isptResult', 'createBy$', 'extendFields.[baseUnitId]' |
| | | ]; |
| | | |
| | | const baseColumns = [ |
| | | <NumberField key="id" source="id" />, |
| | | <TextField key="areaName" source="areaName" label="收货区名称" />, |
| | | <TextField key="asnCode" source="asnCode" label="table.field.warehouseAreasItem.asnCode" />, |
| | | <TextField key="platWorkCode" source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField key="platItemId" source="platItemId" label="table.field.deliveryItem.platItemId" />, |
| | | <NumberField key="matnrId" source="matnrId" label="table.field.warehouseAreasItem.matnrId" />, |
| | | <TextField key="matnrCode" source="matnrCode" label="table.field.warehouseAreasItem.matnrCode" />, |
| | | <TextField key="maktx" source="maktx" label="table.field.warehouseAreasItem.matnrName" />, |
| | | <TextField key="splrBatch" source="splrBatch" label="table.field.warehouseAreasItem.splrBtch" />, |
| | | <TextField key="batch" source="batch" label="table.field.warehouseAreasItem.batch" />, |
| | | <TextField key="trackCode" source="trackCode" label="table.field.warehouseAreasItem.barcode" />, |
| | | <TextField key="unit" source="unit" label="table.field.warehouseAreasItem.unit" />, |
| | | <NumberField key="anfme" source="anfme" label="table.field.warehouseAreasItem.anfme" />, |
| | | <NumberField key="workQty" source="workQty" label="table.field.warehouseAreasItem.workQty" />, |
| | | <NumberField key="ableQty" source="ableQty" label="table.field.warehouseAreasItem.qty" />, |
| | | <TextField key="platOrderCode" source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField key="projectCode" source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextField key="brand" source="brand" label="table.field.warehouseAreasItem.brand" />, |
| | | <TextField key="shipperId" source="shipperId" label="table.field.warehouseAreasItem.shipperId" />, |
| | | <TextField key="splrId" source="splrId" label="table.field.warehouseAreasItem.splrId" />, |
| | | <TextField key="isptResult" source="isptResult$" label="table.field.warehouseAreasItem.isptResult" sortable={false} />, |
| | | <NumberField key="weight" source="weight" label="table.field.warehouseAreasItem.weight" />, |
| | | <TextField key="prodTime" source="prodTime" label="table.field.warehouseAreasItem.prodTime" />, |
| | | ]; |
| | | |
| | | const trailingColumns = [ |
| | | <TextField key="updateBy" source="updateBy$" label="common.field.updateBy" />, |
| | | <DateField key="updateTime" source="updateTime" label="common.field.updateTime" showTime />, |
| | | <TextField key="createBy" source="createBy$" label="common.field.createBy" />, |
| | | <DateField key="createTime" source="createTime" label="common.field.createTime" showTime />, |
| | | <BooleanField key="statusBool" source="statusBool" label="common.field.status" sortable={false} />, |
| | | <TextField key="memo" source="memo" label="common.field.memo" sortable={false} />, |
| | | ]; |
| | | |
| | | const buildDynamicFilter = (field) => ( |
| | | <TextInput key={field.fields} source={field.fields} label={field.fieldsAlise} /> |
| | | ); |
| | | |
| | | const buildDynamicColumn = (field) => ( |
| | | <TextField key={field.fields} source={`extendFields.[${field.fields}]`} label={field.fieldsAlise} /> |
| | | ); |
| | | |
| | | const WarehouseAreasItemList = () => { |
| | | const [itemInfo, setItemInfo] = useState({}) |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | const [dynamicFilters, setDynamicFilters] = useState([]); |
| | | |
| | | return ( |
| | | <Box display="flex"> |
| | | <List |
| | | title={"menu.warehouseAreasItem"} |
| | | empty={false} |
| | | filters={filters} |
| | | sort={{ field: "create_time", order: "desc" }} |
| | | sx={{ |
| | | flexGrow: 1, |
| | |
| | | theme.transitions.create(['all'], { |
| | | duration: theme.transitions.duration.enteringScreen, |
| | | }), |
| | | marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | }} |
| | | actions={( |
| | | <TopToolbar> |
| | |
| | | <MyExportButton /> |
| | | </TopToolbar> |
| | | )} |
| | | filters={[...baseFilters, ...dynamicFilters]} |
| | | perPage={DEFAULT_PAGE_SIZE} |
| | | > |
| | | <DynamicFields /> |
| | | <DynamicFields |
| | | drawerOpen={!!drawerVal} |
| | | onDynamicFiltersChange={setDynamicFilters} |
| | | /> |
| | | </List> |
| | | <WarehouseAreasItemCreate |
| | | open={createDialog} |
| | |
| | | export default WarehouseAreasItemList; |
| | | |
| | | |
| | | const DynamicFields = () => { |
| | | const DynamicFields = ({ drawerOpen, onDynamicFiltersChange }) => { |
| | | const notify = useNotify(); |
| | | const [columns, setColumns] = useState([]); |
| | | const { isLoading } = useListContext(); |
| | | const { boxMaxWidth, boxMaxHeight } = useTableLayout(); |
| | | |
| | | const hiddenColumns = [ |
| | | 'prodTime', 'platOrderCode', 'id', 'createTime', 'memo', 'areaId', 'brand', |
| | | 'weight', 'splrId', 'projectCode', 'statusBool', 'extendFields.[priceUnitId]', 'isptResult$', |
| | | 'extendFields.[inStockType]', 'matnrId', 'trackCode', 'workQty', 'batch', 'shipperId', |
| | | 'isptResult', 'createBy$', 'extendFields.[baseUnitId]' |
| | | ]; |
| | | const { boxMaxWidth, boxMaxHeight } = useTableLayout(drawerOpen); |
| | | |
| | | useEffect(() => { |
| | | getDynamicFields(); |
| | | }, []); |
| | | let active = true; |
| | | |
| | | const getDynamicFields = async () => { |
| | | const { data: { code, data, msg }, } = await request.get("/fields/enable/list"); |
| | | if (code === 200) { |
| | | const arr = [ |
| | | <NumberField key="id" source="id" />, |
| | | // <NumberField key="areaId" source="areaId" label="table.field.warehouseAreasItem.areaId" />, |
| | | <TextField key="areaName" source="areaName" label="收货区名称" />, //table.field.warehouseAreasItem.areaName |
| | | <TextField key="asnCode" source="asnCode" label="table.field.warehouseAreasItem.asnCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="platItemId" label="table.field.deliveryItem.platItemId" />, |
| | | <NumberField key="matnrId" source="matnrId" label="table.field.warehouseAreasItem.matnrId" />, |
| | | <TextField key="matnrCode" source="matnrCode" label="table.field.warehouseAreasItem.matnrCode" />, |
| | | <TextField key="maktx" source="maktx" label="table.field.warehouseAreasItem.matnrName" />, |
| | | <TextField key="splrBatch" source="splrBatch" label="table.field.warehouseAreasItem.splrBtch" />, |
| | | <TextField key="batch" source="batch" label="table.field.warehouseAreasItem.batch" />, |
| | | <TextField key="trackCode" source="trackCode" label="table.field.warehouseAreasItem.barcode" />, |
| | | <TextField key="unit" source="unit" label="table.field.warehouseAreasItem.unit" />, |
| | | <NumberField key="anfme" source="anfme" label="table.field.warehouseAreasItem.anfme" />, |
| | | <NumberField key="workQty" source="workQty" label="table.field.warehouseAreasItem.workQty" />, |
| | | <NumberField key="ableQty" source="ableQty" label="table.field.warehouseAreasItem.qty" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | // <MyField source="isptQty" label="table.field.qlyIsptItem.anfme" |
| | | // onClick={(event, record, val) => { |
| | | // event.stopPropagation(); |
| | | // setItemInfo(record) |
| | | // setDrawerVal(!!drawerVal && drawerVal === val ? null : val); |
| | | // }} |
| | | // />, |
| | | |
| | | |
| | | // <TextField key="stockUnit" source="stockUnit" label="table.field.warehouseAreasItem.stockUnit" />, |
| | | <TextField key="brand" source="brand" label="table.field.warehouseAreasItem.brand" />, |
| | | <TextField key="shipperId" source="shipperId" label="table.field.warehouseAreasItem.shipperId" />, |
| | | <TextField key="splrId" source="splrId" label="table.field.warehouseAreasItem.splrId" />, |
| | | <TextField key="isptResult" source="isptResult$" label="table.field.warehouseAreasItem.isptResult" sortable={false} />, |
| | | <NumberField key="weight" source="weight" label="table.field.warehouseAreasItem.weight" />, |
| | | <TextField key="prodTime" source="prodTime" label="table.field.warehouseAreasItem.prodTime" />, |
| | | ] |
| | | const fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />) |
| | | const lastArr = [ |
| | | <TextField key="updateBy" source="updateBy$" label="common.field.updateBy" />, |
| | | <DateField key="updateTime" source="updateTime" label="common.field.updateTime" showTime />, |
| | | <TextField key="createBy" source="createBy$" label="common.field.createBy" />, |
| | | <DateField key="createTime" source="createTime" label="common.field.createTime" showTime />, |
| | | <BooleanField key="statusBool" source="statusBool" label="common.field.status" sortable={false} />, |
| | | <TextField key="memo" source="memo" label="common.field.memo" sortable={false} />, |
| | | ] |
| | | setColumns([...arr, ...fields, ...lastArr]); |
| | | //filters添加过滤字段 |
| | | data.forEach(el => { |
| | | var i = 0; |
| | | filters.forEach((item) => { |
| | | if (item.key === el.fields) { |
| | | i = 1; |
| | | } |
| | | }); |
| | | if (i === 0) { |
| | | filters.push(<TextInput key={el.fields} source={el.fields} label={el.fieldsAlise} />); |
| | | const getDynamicFields = async () => { |
| | | try { |
| | | const { data: { code, data, msg }, } = await request.get("/fields/enable/list"); |
| | | if (!active) { |
| | | return; |
| | | } |
| | | }); |
| | | } else { |
| | | notify(msg); |
| | | } |
| | | } |
| | | if (code === 200) { |
| | | const dynamicColumns = data.map(buildDynamicColumn); |
| | | const nextDynamicFilters = data |
| | | .filter((field) => !baseFilterSources.has(field.fields)) |
| | | .map(buildDynamicFilter); |
| | | |
| | | setColumns([...baseColumns, ...dynamicColumns, ...trailingColumns]); |
| | | onDynamicFiltersChange(nextDynamicFilters); |
| | | } else { |
| | | notify(msg); |
| | | } |
| | | } catch (error) { |
| | | if (active) { |
| | | notify('请求出错'); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | getDynamicFields(); |
| | | |
| | | return () => { |
| | | active = false; |
| | | onDynamicFiltersChange([]); |
| | | }; |
| | | }, [notify, onDynamicFiltersChange]); |
| | | |
| | | return ( |
| | | <Box sx={{ |