Merge branch 'front' into devlop
| | |
| | | } from "react-admin"; |
| | | import polyglotI18nProvider from "ra-i18n-polyglot"; |
| | | import englishMessages from "./i18n/en"; |
| | | import zhMessages from "./i18n/zh"; |
| | | import { Layout } from "./layout"; |
| | | import AuthProvider from "./config/authProvider"; |
| | | import DataProvider from "./config/dataProvider"; |
| | |
| | | |
| | | const i18nProvider = polyglotI18nProvider( |
| | | (locale) => { |
| | | if (locale === "zh") { |
| | | return import("./i18n/zh").then((messages) => messages.default); |
| | | if (locale === "en") { |
| | | return import("./i18n/en").then((messages) => messages.default); |
| | | } |
| | | // fallback |
| | | return englishMessages; |
| | | return zhMessages; |
| | | }, |
| | | // default |
| | | // 'en', |
| | | resolveBrowserLocale("en", { fullLocale: true }), |
| | | resolveBrowserLocale("zh", { fullLocale: true }), |
| | | [ |
| | | { locale: "en", name: "English" }, |
| | | { locale: "zh", name: "简体中文" }, |
| | |
| | | |
| | | const LocCreate = (props) => { |
| | | const { open, setOpen } = props; |
| | | const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_loc_type')) || []; |
| | | |
| | | const translate = useTranslate(); |
| | | const notify = useNotify(); |
| | |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <ReferenceInput |
| | | {/* <ReferenceInput |
| | | source="type" |
| | | reference="dictData" |
| | | filter={{ dictTypeCode: 'sys_loc_type' }} |
| | |
| | | parse={v => v} |
| | | validate={[required()]} |
| | | /> |
| | | </ReferenceInput> |
| | | </ReferenceInput> */} |
| | | <AutocompleteInput |
| | | choices={dicts} |
| | | source="type" |
| | | optionText="label" |
| | | label="table.field.loc.type" |
| | | optionValue="value" |
| | | parse={v => v} |
| | | validate={[required()]} |
| | | /> |
| | | </Grid> |
| | | {/* <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | |
| | | |
| | | const LocEdit = () => { |
| | | const translate = useTranslate(); |
| | | const dicts = JSON.parse(localStorage.getItem('sys_dicts')).filter(dict => { return (dict.dictTypeCode == 'sys_loc_type') }); |
| | | const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_loc_type')) || []; |
| | | return ( |
| | | <Edit |
| | | redirect="list" |
| | |
| | | <NumberField source="areaId$" label="table.field.loc.areaId" /> |
| | | <TextField source="code" label="table.field.loc.code" /> |
| | | <TextField source="type$" label="table.field.loc.type" /> |
| | | <TextField source="name" label="table.field.loc.name" /> |
| | | {/* <TextField source="name" label="table.field.loc.name" /> */} |
| | | <NumberField source="flagLogic" label="table.field.loc.flagLogic" /> |
| | | <TextField source="fucAtrrs" label="table.field.loc.fucAtrrs" /> |
| | | <TextField source="barcode" label="table.field.loc.barcode" /> |
| | |
| | | /> |
| | | |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | {/* <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.warehouse.code" |
| | | source="code" |
| | | validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | </Grid> */} |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.warehouse.name" |
| | |
| | | autoFocus |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | {/* <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouse.code" |
| | | source="code" |
| | | validate={[required()]} |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | |
| | | </Stack> */} |
| | | |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouse.address" |
| | |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | |
| | | |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | |
| | | |
| | | const filters = [ |
| | | <SearchInput source="condition" alwaysOn />, |
| | | <DateInput label='common.time.after' source="timeStart" alwaysOn />, |
| | | <DateInput label='common.time.before' source="timeEnd" alwaysOn />, |
| | | |
| | | <TextInput source="name" label="table.field.warehouse.name" />, |
| | | <TextInput source="code" label="table.field.warehouse.code" />, |
| | |
| | | theme.transitions.create(['all'], { |
| | | duration: theme.transitions.duration.enteringScreen, |
| | | }), |
| | | marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | }} |
| | | title={"menu.warehouse"} |
| | | empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} |
| | |
| | | <NumberField source="id" /> |
| | | <TextField source="factory" label="table.field.warehouse.factory" /> |
| | | <TextField source="name" label="table.field.warehouse.name" /> |
| | | <TextField source="code" label="table.field.warehouse.code" /> |
| | | {/* <TextField source="code" label="table.field.warehouse.code" /> */} |
| | | <TextField source="address" label="table.field.warehouse.address" /> |
| | | <TextField source="longitude" label="table.field.warehouse.longitude" /> |
| | | <TextField source="latgitude" label="table.field.warehouse.latgitude" /> |
| | |
| | | |
| | | const translate = useTranslate(); |
| | | const notify = useNotify(); |
| | | |
| | | const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_ware_areas_type')) || []; |
| | | const handleClose = (event, reason) => { |
| | | if (reason !== "backdropClick") { |
| | | setOpen(false); |
| | |
| | | </DialogTitle> |
| | | <DialogContent sx={{ mt: 2 }}> |
| | | <Grid container rowSpacing={2} columnSpacing={2}> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | {/* <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.container.code" |
| | | source="code" |
| | |
| | | autoFocus |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | </Grid> */} |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.container.name" |
| | |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | <AutocompleteInput |
| | | choices={dicts} |
| | | optionText="label" |
| | | label="table.field.container.typeId" |
| | | source="typeId" |
| | | /> |
| | | source="type" |
| | | optionValue="value" |
| | | parse={v => v} |
| | | validate={[required()]} /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.container.lenght" |
| | | source="lenght" |
| | | source="length" |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.container.panrentId" |
| | | <ReferenceInput |
| | | source="panrentId" |
| | | /> |
| | | reference="container" |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.container.panrentId" |
| | | optionText="name" |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <DateInput |
| | |
| | | source="flagRycle" |
| | | choices={[ |
| | | { id: 1, name: '是' }, |
| | | { id: 0, name: '否' }, |
| | | { id: 0, name: '否' }, |
| | | ]} |
| | | /> |
| | | </Grid> |
| | |
| | | source="flagLogic" |
| | | choices={[ |
| | | { id: 1, name: '是' }, |
| | | { id: 0, name: '否' }, |
| | | { id: 0, name: '否' }, |
| | | ]} |
| | | /> |
| | | </Grid> |
| | |
| | | |
| | | const ContainerEdit = () => { |
| | | const translate = useTranslate(); |
| | | const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_ware_areas_type')) || []; |
| | | |
| | | return ( |
| | | <Edit |
| | |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.main')} |
| | | </Typography> |
| | | <Stack direction='row' gap={2}> |
| | | {/* <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.container.code" |
| | | source="code" |
| | |
| | | autoFocus |
| | | validate={required()} |
| | | /> |
| | | </Stack> |
| | | </Stack> */} |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.container.name" |
| | |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | <AutocompleteInput |
| | | choices={dicts} |
| | | optionText="label" |
| | | label="table.field.container.typeId" |
| | | source="typeId" |
| | | /> |
| | | source="type" |
| | | optionValue="value" |
| | | parse={v => v} |
| | | validate={[required()]} /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.container.lenght" |
| | | source="lenght" |
| | | source="length" |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.container.panrentId" |
| | | <ReferenceInput |
| | | source="panrentId" |
| | | /> |
| | | reference="container" |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.container.panrentId" |
| | | optionText="name" |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | |
| | | </Stack> |
| | | |
| | | <Stack direction='row' gap={2}> |
| | | <DateInput |
| | | label="table.field.container.vaildTime" |
| | |
| | | source="flagRycle" |
| | | choices={[ |
| | | { id: 1, name: '是' }, |
| | | { id: 0, name: '否' }, |
| | | { id: 0, name: '否' }, |
| | | ]} |
| | | validate={required()} |
| | | /> |
| | |
| | | source="flagLogic" |
| | | choices={[ |
| | | { id: 1, name: '是' }, |
| | | { id: 0, name: '否' }, |
| | | { id: 0, name: '否' }, |
| | | ]} |
| | | validate={required()} |
| | | /> |
| | |
| | | <SelectInput source="flagRycle" label="table.field.container.flagRycle" |
| | | choices={[ |
| | | { id: 1, name: '是' }, |
| | | { id: 0, name: '否' }, |
| | | { id: 0, name: '否' }, |
| | | ]} |
| | | />, |
| | | <SelectInput source="flagLogic" label="table.field.container.flagLogic" |
| | | choices={[ |
| | | { id: 1, name: '是' }, |
| | | { id: 0, name: '否' }, |
| | | { id: 0, name: '否' }, |
| | | ]} |
| | | />, |
| | | |
| | |
| | | theme.transitions.create(['all'], { |
| | | duration: theme.transitions.duration.enteringScreen, |
| | | }), |
| | | marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | }} |
| | | title={"menu.container"} |
| | | empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} |
| | |
| | | <NumberField source="id" /> |
| | | <TextField source="code" label="table.field.container.code" /> |
| | | <TextField source="name" label="table.field.container.name" /> |
| | | <NumberField source="typeId" label="table.field.container.typeId" /> |
| | | <NumberField source="type" label="table.field.container.typeId" /> |
| | | <NumberField source="used" label="table.field.container.used" /> |
| | | <NumberField source="lenght" label="table.field.container.lenght" /> |
| | | <NumberField source="length" label="table.field.container.lenght" /> |
| | | <NumberField source="width" label="table.field.container.width" /> |
| | | <NumberField source="height" label="table.field.container.height" /> |
| | | <NumberField source="rstLen" label="table.field.container.rstLen" /> |
| | |
| | | </DialogTitle> |
| | | <DialogContent sx={{ mt: 2 }}> |
| | | <Grid container rowSpacing={2} columnSpacing={2}> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | {/* <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.uuid" |
| | | source="uuid" |
| | |
| | | validate={[required()]} |
| | | autoFocus |
| | | /> |
| | | </Grid> |
| | | </Grid> */} |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.name" |
| | |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <ReferenceInput source="shipperId" reference="shipper"> |
| | | <ReferenceInput source="shipperId" reference="companys"> |
| | | <AutocompleteInput |
| | | label="table.field.warehouseAreas.shipperId" |
| | | optionText="name" |
| | | validate={[required()]} |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.warehouseAreas.supplierId" |
| | | source="supplierId" |
| | | /> |
| | | <ReferenceInput source="supplierId" reference="companys"> |
| | | <AutocompleteInput |
| | | label="table.field.warehouseAreas.supplierId" |
| | | optionText="name" |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <SelectInput |
| | |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.main')} |
| | | </Typography> |
| | | <Stack direction='row' gap={2}> |
| | | {/* <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.uuid" |
| | | source="uuid" |
| | |
| | | validate={[required()]} |
| | | autoFocus |
| | | /> |
| | | </Stack> |
| | | </Stack> */} |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.warehouseAreas.name" |
| | |
| | | <Stack direction='row' gap={2}> |
| | | <ReferenceInput |
| | | source="shipperId" |
| | | reference="shipper" |
| | | reference="companys" |
| | | perPage={REFERENCE_INPUT_PAGESIZE} |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.warehouseAreas.shipperId" |
| | | optionText="name" |
| | | validate={[required()]} |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.warehouseAreas.supplierId" |
| | | <ReferenceInput |
| | | source="supplierId" |
| | | /> |
| | | reference="companys" |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.warehouseAreas.supplierId" |
| | | optionText="name" |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <SelectInput |
| | |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: '否' }, |
| | | { id: 1, name: '是' }, |
| | | { id: 1, name: '是' }, |
| | | ]} |
| | | /> |
| | | </Stack> |
| | |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: ' 否' }, |
| | | { id: 1, name: ' 是' }, |
| | | { id: 1, name: ' 是' }, |
| | | ]} |
| | | /> |
| | | </Stack> |
| | |
| | | validate={[required()]} |
| | | choices={[ |
| | | { id: 0, name: '否' }, |
| | | { id: 1, name: '是' }, |
| | | { id: 1, name: '是' }, |
| | | ]} |
| | | /> |
| | | </Stack> |
| | |
| | | omit={['id', 'createTime', 'createBy', 'memo']} |
| | | > |
| | | <NumberField source="id" /> |
| | | <TextField source="uuid" label="table.field.warehouseAreas.uuid" /> |
| | | {/* <TextField source="uuid" label="table.field.warehouseAreas.uuid" /> */} |
| | | <TextField source="name" label="table.field.warehouseAreas.name" /> |
| | | <TextField source="code" label="table.field.warehouseAreas.code" /> |
| | | <ReferenceField source="shipperId" label="table.field.warehouseAreas.shipperId" reference="shipper" link={false} sortable={false}> |
| | | {/* <ReferenceField source="shipperId" label="table.field.warehouseAreas.shipperId" reference="shipper" link={false} sortable={false}> |
| | | <TextField source="name" /> |
| | | </ReferenceField> |
| | | </ReferenceField> */} |
| | | <TextField source="shipperId$" label="table.field.warehouseAreas.shipperId" /> |
| | | <NumberField source="supplierId" label="table.field.warehouseAreas.supplierId" /> |
| | | <TextField source="flagMinus$" label="table.field.warehouseAreas.flagMinus" sortable={false} /> |
| | | <TextField source="flagLabelMange$" label="table.field.warehouseAreas.flagLabelMange" sortable={false} /> |