#新增
1. 综合订单界面优化
2. 添加库位详细界面
8个文件已修改
1个文件已添加
3 文件已复制
13 文件已重命名
| | |
| | | taskLog: 'TaskLog', |
| | | orderItem: 'OrderItem', |
| | | order: 'Order', |
| | | |
| | | locItem: 'LocItem', |
| | | }, |
| | | table: { |
| | | field: { |
| | |
| | | prodTime: "prodTime", |
| | | packName: "packName", |
| | | }, |
| | | locItem: { |
| | | locId: "locId", |
| | | orderId: "orderId", |
| | | type: "type", |
| | | orderItemId: "orderItemId", |
| | | wkType: "wkType", |
| | | matnrId: "matnrId", |
| | | maktx: "maktx", |
| | | matnrCode: "matnrCode", |
| | | trackCode: "trackCode", |
| | | unit: "unit", |
| | | anfme: "anfme", |
| | | batch: "batch", |
| | | splrBatch: "splrBatch", |
| | | spec: "spec", |
| | | model: "model", |
| | | fieldsIndex: "fieldsIndex", |
| | | }, |
| | | } |
| | | }, |
| | | page: { |
| | |
| | | taskItem: '任务档明细', |
| | | taskLog: '任务历史档', |
| | | taskItemLog: '任务明细历史档', |
| | | order: '综合单据管理', |
| | | stock: '综合单据管理', |
| | | stockItem: '单据明细', |
| | | locItem: 'LocItem', |
| | | |
| | | }, |
| | | table: { |
| | |
| | | spec: "规格", |
| | | model: "型号", |
| | | }, |
| | | order: { |
| | | stock: { |
| | | code: "编码", |
| | | sourceCode: "源单据", |
| | | sourceId: "源单据ID", |
| | |
| | | wkType: "业务类型", |
| | | anfme: "数量", |
| | | }, |
| | | orderItem: { |
| | | stockItem: { |
| | | orderId: "主单ID", |
| | | orderCode: "单据编码", |
| | | sourceItemId: "源明细ID", |
| | |
| | | prodTime: "生产日期", |
| | | packName: "包装名称", |
| | | }, |
| | | locItem: { |
| | | locId: "库位ID", |
| | | orderId: "订单ID", |
| | | type: "单据类型", |
| | | orderItemId: "单据明细ID", |
| | | wkType: "业务类型", |
| | | matnrId: "物料ID", |
| | | maktx: "物料名称", |
| | | matnrCode: "物料编码", |
| | | trackCode: "跟踪码", |
| | | unit: "单位", |
| | | anfme: "数量", |
| | | batch: "批次", |
| | | splrBatch: "供应商批次", |
| | | spec: "规格", |
| | | model: "型号", |
| | | fieldsIndex: "动态索引", |
| | | }, |
| | | } |
| | | }, |
| | | page: { |
| | |
| | | import asnOrderLog from './histories/asnOrderLog'; |
| | | import task from './task'; |
| | | import taskLog from './histories/taskLog'; |
| | | import order from './orders/order'; |
| | | import stock from './orders/stock'; |
| | | |
| | | const ResourceContent = (node) => { |
| | | switch (node.component) { |
| | |
| | | return task; |
| | | case 'taskLog': |
| | | return taskLog; |
| | | case 'order': |
| | | return order; |
| | | case 'stock': |
| | | return stock; |
| | | default: |
| | | return { |
| | | list: ListGuesser, |
| | |
| | | import StatusSelectInput from "../../components/StatusSelectInput"; |
| | | import request from '@/utils/request'; |
| | | import DictionarySelect from "../../components/DictionarySelect"; |
| | | import LocItemList from "./LocItemList"; |
| | | |
| | | const FormToolbar = () => { |
| | | const { getValues } = useFormContext(); |
| | |
| | | } |
| | | |
| | | return ( |
| | | <Edit |
| | | redirect="list" |
| | | mutationMode={EDIT_MODE} |
| | | actions={<CustomerTopToolBar />} |
| | | aside={<EditBaseAside />} |
| | | title={"menu.loc"} |
| | | > |
| | | <SimpleForm |
| | | shouldUnregister |
| | | warnWhenUnsavedChanges |
| | | toolbar={<FormToolbar />} |
| | | mode="onTouched" |
| | | defaultValues={{}} |
| | | // validate={(values) => { }} |
| | | <> |
| | | <Edit |
| | | redirect="list" |
| | | mutationMode={EDIT_MODE} |
| | | actions={<CustomerTopToolBar />} |
| | | aside={<EditBaseAside />} |
| | | title={"menu.loc"} |
| | | > |
| | | <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> |
| | | <Grid item xs={12} md={10}> |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.main')} |
| | | </Typography> |
| | | <Grid container rowSpacing={2} columnSpacing={2}> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <ReferenceInput |
| | | source="warehouseId" |
| | | reference="warehouse" |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.loc.warehouseId" |
| | | optionText="name" |
| | | validate={[required()]} |
| | | onChange={warehouseChange} |
| | | filterToQuery={(val) => ({ name: val })} |
| | | <SimpleForm |
| | | shouldUnregister |
| | | warnWhenUnsavedChanges |
| | | toolbar={<FormToolbar />} |
| | | mode="onTouched" |
| | | defaultValues={{}} |
| | | // validate={(values) => { }} |
| | | > |
| | | <Grid container width={{ xs: '100%', xl: '90%' }} rowSpacing={3} columnSpacing={3}> |
| | | <Grid item xs={12} md={10}> |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.main')} |
| | | </Typography> |
| | | <Grid container rowSpacing={2} columnSpacing={2}> |
| | | <Grid item display="flex" gap={2}> |
| | | <ReferenceInput |
| | | source="warehouseId" |
| | | reference="warehouse" |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.loc.warehouseId" |
| | | optionText="name" |
| | | validate={[required()]} |
| | | onChange={warehouseChange} |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | <ReferenceInput |
| | | source="areaId" |
| | | reference="warehouseAreas" |
| | | filter={{ warehouseId }} |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.loc.areaId" |
| | | optionText="name" |
| | | validate={[required()]} |
| | | filterToQuery={(val) => ({ name: val })} |
| | | /> |
| | | </ReferenceInput> |
| | | <TextInput |
| | | label="table.field.loc.code" |
| | | source="code" |
| | | parse={v => v} |
| | | validate={required()} |
| | | /> |
| | | </ReferenceInput> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <ReferenceInput |
| | | source="areaId" |
| | | reference="warehouseAreas" |
| | | filter={{ warehouseId }} |
| | | > |
| | | <AutocompleteInput |
| | | label="table.field.loc.areaId" |
| | | optionText="name" |
| | | validate={[required()]} |
| | | filterToQuery={(val) => ({ name: val })} |
| | | <NumberInput |
| | | label="table.field.loc.length" |
| | | source="length" |
| | | validate={required()} |
| | | /> |
| | | </ReferenceInput> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.loc.code" |
| | | source="code" |
| | | parse={v => v} |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | {/* <AutocompleteInput |
| | | choices={dicts} |
| | | source="type" |
| | | optionText="label" |
| | | label="table.field.loc.type" |
| | | optionValue="value" |
| | | parse={v => v} |
| | | validate={[required()]} |
| | | /> */} |
| | | <ReferenceArrayInput source="typeIds" reference="locType" > |
| | | <SelectArrayInput label="table.field.loc.type" validate={[required()]} /> |
| | | </ReferenceArrayInput> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.loc.unit" |
| | | source="unit" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.loc.length" |
| | | source="length" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.loc.width" |
| | | source="width" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.loc.height" |
| | | source="height" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.loc.row" |
| | | source="row" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.loc.col" |
| | | source="col" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.loc.lev" |
| | | source="lev" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <DictionarySelect |
| | | label={translate("table.field.loc.useStatus")} |
| | | name="useStatus" |
| | | validate={[required()]} |
| | | size="small" |
| | | dictTypeCode="sys_loc_use_stas" |
| | | /> |
| | | </Grid> |
| | | |
| | | <NumberInput |
| | | label="table.field.loc.width" |
| | | source="width" |
| | | validate={required()} |
| | | /> |
| | | |
| | | <NumberInput |
| | | label="table.field.loc.height" |
| | | source="height" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item display="flex" gap={1}> |
| | | <ReferenceArrayInput source="typeIds" reference="locType" > |
| | | <SelectArrayInput label="table.field.loc.type" validate={[required()]} /> |
| | | </ReferenceArrayInput> |
| | | <TextInput |
| | | label="table.field.loc.unit" |
| | | source="unit" |
| | | parse={v => v} |
| | | /> |
| | | <DictionarySelect |
| | | label={translate("table.field.loc.useStatus")} |
| | | name="useStatus" |
| | | validate={[required()]} |
| | | size="small" |
| | | dictTypeCode="sys_loc_use_stas" |
| | | /> |
| | | <NumberInput |
| | | label="table.field.loc.row" |
| | | source="row" |
| | | validate={required()} |
| | | /> |
| | | |
| | | <NumberInput |
| | | label="table.field.loc.col" |
| | | source="col" |
| | | validate={required()} |
| | | /> |
| | | |
| | | <NumberInput |
| | | label="table.field.loc.lev" |
| | | source="lev" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | </Grid> |
| | | </Grid> |
| | | <Grid item xs={12} md={2}> |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.common')} |
| | | </Typography> |
| | | <StatusSelectInput /> |
| | | <Box mt="2em" /> |
| | | <MemoInput /> |
| | | </Grid> |
| | | </Grid> |
| | | <Grid item xs={12} md={2}> |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.common')} |
| | | </Typography> |
| | | <StatusSelectInput /> |
| | | <Box mt="2em" /> |
| | | <MemoInput /> |
| | | </Grid> |
| | | </Grid> |
| | | </SimpleForm> |
| | | </Edit > |
| | | </SimpleForm> |
| | | </Edit > |
| | | <LocItemList /> |
| | | </> |
| | | ) |
| | | } |
| | | |
File was renamed from rsf-admin/src/page/locItem/LocItemCreate.jsx |
| | |
| | | Grid, |
| | | Box, |
| | | } from '@mui/material'; |
| | | import DialogCloseButton from "../components/DialogCloseButton"; |
| | | import StatusSelectInput from "../components/StatusSelectInput"; |
| | | import MemoInput from "../components/MemoInput"; |
| | | import DialogCloseButton from "../../components/DialogCloseButton"; |
| | | import StatusSelectInput from "../../components/StatusSelectInput"; |
| | | import MemoInput from "../../components/MemoInput"; |
| | | |
| | | const LocItemCreate = (props) => { |
| | | const { open, setOpen } = props; |
File was renamed from rsf-admin/src/page/locItem/LocItemList.jsx |
| | |
| | | ReferenceArrayInput, |
| | | AutocompleteInput, |
| | | DeleteButton, |
| | | useGetRecordId, |
| | | } from 'react-admin'; |
| | | import { Box, Typography, Card, Stack } from '@mui/material'; |
| | | import { styled } from '@mui/material/styles'; |
| | | import LocItemCreate from "./LocItemCreate"; |
| | | import LocItemPanel from "./LocItemPanel"; |
| | | import EmptyData from "../components/EmptyData"; |
| | | import MyCreateButton from "../components/MyCreateButton"; |
| | | import MyExportButton from '../components/MyExportButton'; |
| | | import PageDrawer from "../components/PageDrawer"; |
| | | import MyField from "../components/MyField"; |
| | | import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; |
| | | import * as Common from '@/utils/common'; |
| | | import EmptyData from "../../components/EmptyData"; |
| | | import MyCreateButton from "../../components/MyCreateButton"; |
| | | import MyExportButton from '../../components/MyExportButton'; |
| | | import PageDrawer from "../../components/PageDrawer"; |
| | | import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting'; |
| | | |
| | | const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ |
| | | '& .css-1vooibu-MuiSvgIcon-root': { |
| | |
| | | |
| | | const filters = [ |
| | | <SearchInput source="condition" alwaysOn />, |
| | | <DateInput label='common.time.after' source="timeStart" alwaysOn />, |
| | | <DateInput label='common.time.before' source="timeEnd" alwaysOn />, |
| | | |
| | | <DateInput label='common.time.after' source="timeStart" />, |
| | | <DateInput label='common.time.before' source="timeEnd" />, |
| | | <NumberInput source="locId" label="table.field.locItem.locId" />, |
| | | <NumberInput source="orderId" label="table.field.locItem.orderId" />, |
| | | <TextInput source="type" label="table.field.locItem.type" />, |
| | | <TextInput source="type$" label="table.field.locItem.type" />, |
| | | <NumberInput source="orderItemId" label="table.field.locItem.orderItemId" />, |
| | | <NumberInput source="wkType" label="table.field.locItem.wkType" />, |
| | | <NumberInput source="wkType$" label="table.field.locItem.wkType" />, |
| | | <NumberInput source="matnrId" label="table.field.locItem.matnrId" />, |
| | | <TextInput source="maktx" label="table.field.locItem.maktx" />, |
| | | <TextInput source="matnrCode" label="table.field.locItem.matnrCode" />, |
| | |
| | | <TextInput source="spec" label="table.field.locItem.spec" />, |
| | | <TextInput source="model" label="table.field.locItem.model" />, |
| | | <TextInput source="fieldsIndex" label="table.field.locItem.fieldsIndex" />, |
| | | |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | <SelectInput |
| | | label="common.field.status" |
| | |
| | | |
| | | const LocItemList = () => { |
| | | const translate = useTranslate(); |
| | | |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | const locId = useGetRecordId(); |
| | | |
| | | return ( |
| | | <Box display="flex"> |
| | | <List |
| | | resource="locItem" |
| | | filter={{locId: locId}} |
| | | sx={{ |
| | | flexGrow: 1, |
| | | transition: (theme) => |
| | |
| | | marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | }} |
| | | title={"menu.locItem"} |
| | | empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} |
| | | empty={false} |
| | | filters={filters} |
| | | sort={{ field: "create_time", order: "desc" }} |
| | | actions={( |
| | | <TopToolbar> |
| | | <FilterButton /> |
| | | <MyCreateButton onClick={() => { setCreateDialog(true) }} /> |
| | | {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */} |
| | | <SelectColumnsButton preferenceKey='locItem' /> |
| | | <MyExportButton /> |
| | | </TopToolbar> |
| | | )} |
| | | perPage={DEFAULT_PAGE_SIZE} |
| | | perPage={DEFAULT_ITEM_PAGE_SIZE} |
| | | > |
| | | <StyledDatagrid |
| | | preferenceKey='locItem' |
| | | bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} |
| | | rowClick={(id, resource, record) => false} |
| | | expand={() => <LocItemPanel />} |
| | | expand={false} |
| | | expandSingle={true} |
| | | omit={['id', 'createTime', 'createBy', 'memo']} |
| | | omit={['id', 'locId', 'orderId', 'orderItemId', 'matnrId', 'createTime', 'createBy', 'memo']} |
| | | > |
| | | <NumberField source="id" /> |
| | | <NumberField source="locId" label="table.field.locItem.locId" /> |
| | |
| | | <TextField source="spec" label="table.field.locItem.spec" /> |
| | | <TextField source="model" label="table.field.locItem.model" /> |
| | | <TextField source="fieldsIndex" label="table.field.locItem.fieldsIndex" /> |
| | | |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField> |
| | | <TextField source="updateBy$" label="common.field.updateBy" /> |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime /> |
| | | <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField> |
| | | <TextField source="createBy$" label="common.field.createBy" /> |
| | | <DateField source="createTime" label="common.field.createTime" showTime /> |
| | | <BooleanField source="statusBool" label="common.field.status" sortable={false} /> |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> |
| | |
| | | <NumberField source="flagLabelMange" label="table.field.loc.flagLabelMange" /> |
| | | <TextField source="locAttrs" label="table.field.loc.locAttrs" /> */} |
| | | <TextField source="useStatus$" label="table.field.loc.useStatus" /> |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField> |
| | | <TextField source="updateBy$" label="common.field.updateBy" /> |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime align="left" /> |
| | | <ReferenceField source="createBy" label="common.field.createBy" align="left" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField> |
| | | <TextField source="createBy$" label="common.field.createBy" /> |
| | | <DateField source="createTime" label="common.field.createTime" showTime align="left" /> |
| | | <BooleanField source="statusBool" label="common.field.status" sortable={false} align="left" /> |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> |
| | | |
| | | <WrapperField cellClassName="opt" label="common.field.opt"> |
| | | <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> |
| | | {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */} |
| | |
| | | sx={{ width: '100%' }} |
| | | preferenceKey='asnOrder' |
| | | bulkActionButtons={<> <InspectionsButton /><BulkDeleteButton mutationMode={OPERATE_MODE} /></>} |
| | | rowClick='toggleSelection' |
| | | onToggleItem={(id, resource, record)=>{ |
| | | redirect(location.pathname + '/' + id) |
| | | }} |
| | | rowClick='edit' |
| | | expandSingle={true} |
| | | omit={['id', 'createTime', 'createBy', 'memo', 'poId', 'rleStatus$']} |
| | | > |
File was renamed from rsf-admin/src/page/orders/order/OrderCreate.jsx |
| | |
| | | <Grid container rowSpacing={2} columnSpacing={2}> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.order.code" |
| | | label="table.field.stock.code" |
| | | source="code" |
| | | parse={v => v} |
| | | autoFocus |
| | |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.order.sourceCode" |
| | | label="table.field.stock.sourceCode" |
| | | source="sourceCode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.order.sourceId" |
| | | label="table.field.stock.sourceId" |
| | | source="sourceId" |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.order.type" |
| | | label="table.field.stock.type" |
| | | source="type" |
| | | parse={v => v} |
| | | validate={required()} |
| | |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.order.wkType" |
| | | label="table.field.stock.wkType" |
| | | source="wkType" |
| | | parse={v => v} |
| | | validate={required()} |
| | |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.order.anfme" |
| | | label="table.field.stock.anfme" |
| | | source="anfme" |
| | | validate={required()} |
| | | /> |
File was renamed from rsf-admin/src/page/orders/order/OrderEdit.jsx |
| | |
| | | mode="onTouched" |
| | | defaultValues={{}} |
| | | > |
| | | <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> |
| | | <Grid item xs={12} md={8}> |
| | | <Grid container width={{ xs: '100%', xl: '90%' }} rowSpacing={3} columnSpacing={3}> |
| | | <Grid item xs={16} md={10}> |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.main')} |
| | | </Typography> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.order.code" |
| | | label="table.field.stock.code" |
| | | source="code" |
| | | parse={v => v} |
| | | autoFocus |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | |
| | | <TextInput |
| | | label="table.field.order.sourceCode" |
| | | label="table.field.stock.sourceCode" |
| | | source="sourceCode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.order.sourceId" |
| | | label="table.field.stock.sourceId" |
| | | source="sourceId" |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.order.type" |
| | | label="table.field.stock.type" |
| | | source="type" |
| | | parse={v => v} |
| | | validate={required()} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.order.wkType" |
| | | label="table.field.stock.wkType" |
| | | source="wkType" |
| | | parse={v => v} |
| | | validate={required()} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.order.anfme" |
| | | label="table.field.stock.anfme" |
| | | source="anfme" |
| | | validate={required()} |
| | | /> |
| | | </Stack> |
| | | </Grid> |
| | | <Grid item xs={12} md={4}> |
| | | <Grid item xs={8} md={2}> |
| | | <Typography variant="h6" gutterBottom> |
| | | {translate('common.edit.title.common')} |
| | | </Typography> |
File was renamed from rsf-admin/src/page/orders/order/OrderItemCreate.jsx |
| | |
| | | <Grid container rowSpacing={2} columnSpacing={2}> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.orderItem.orderId" |
| | | label="table.field.stockItem.orderId" |
| | | source="orderId" |
| | | autoFocus |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.orderCode" |
| | | label="table.field.stockItem.orderCode" |
| | | source="orderCode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.sourceItemId" |
| | | label="table.field.stockItem.sourceItemId" |
| | | source="sourceItemId" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.matnrId" |
| | | label="table.field.stockItem.matnrId" |
| | | source="matnrId" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.matnrCode" |
| | | label="table.field.stockItem.matnrCode" |
| | | source="matnrCode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.maktx" |
| | | label="table.field.stockItem.maktx" |
| | | source="maktx" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.orderItem.anfme" |
| | | label="table.field.stockItem.anfme" |
| | | source="anfme" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.stockUnit" |
| | | label="table.field.stockItem.stockUnit" |
| | | source="stockUnit" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.orderItem.workQty" |
| | | label="table.field.stockItem.workQty" |
| | | source="workQty" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.orderItem.purQty" |
| | | label="table.field.stockItem.purQty" |
| | | source="purQty" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.purUnit" |
| | | label="table.field.stockItem.purUnit" |
| | | source="purUnit" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.orderItem.qty" |
| | | label="table.field.stockItem.qty" |
| | | source="qty" |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrCode" |
| | | label="table.field.stockItem.splrCode" |
| | | source="splrCode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.batch" |
| | | label="table.field.stockItem.batch" |
| | | source="batch" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrBatch" |
| | | label="table.field.stockItem.splrBatch" |
| | | source="splrBatch" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrName" |
| | | label="table.field.stockItem.splrName" |
| | | source="splrName" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.trackCode" |
| | | label="table.field.stockItem.trackCode" |
| | | source="trackCode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.barcode" |
| | | label="table.field.stockItem.barcode" |
| | | source="barcode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.prodTime" |
| | | label="table.field.stockItem.prodTime" |
| | | source="prodTime" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.packName" |
| | | label="table.field.stockItem.packName" |
| | | source="packName" |
| | | parse={v => v} |
| | | /> |
File was renamed from rsf-admin/src/page/orders/order/OrderItemEdit.jsx |
| | |
| | | </Typography> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.orderItem.orderId" |
| | | label="table.field.stockItem.orderId" |
| | | source="orderId" |
| | | autoFocus |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.orderCode" |
| | | label="table.field.stockItem.orderCode" |
| | | source="orderCode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.sourceItemId" |
| | | label="table.field.stockItem.sourceItemId" |
| | | source="sourceItemId" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.matnrId" |
| | | label="table.field.stockItem.matnrId" |
| | | source="matnrId" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.matnrCode" |
| | | label="table.field.stockItem.matnrCode" |
| | | source="matnrCode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.maktx" |
| | | label="table.field.stockItem.maktx" |
| | | source="maktx" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.orderItem.anfme" |
| | | label="table.field.stockItem.anfme" |
| | | source="anfme" |
| | | validate={required()} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.stockUnit" |
| | | label="table.field.stockItem.stockUnit" |
| | | source="stockUnit" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.orderItem.workQty" |
| | | label="table.field.stockItem.workQty" |
| | | source="workQty" |
| | | validate={required()} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.orderItem.purQty" |
| | | label="table.field.stockItem.purQty" |
| | | source="purQty" |
| | | validate={required()} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.purUnit" |
| | | label="table.field.stockItem.purUnit" |
| | | source="purUnit" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.orderItem.qty" |
| | | label="table.field.stockItem.qty" |
| | | source="qty" |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrCode" |
| | | label="table.field.stockItem.splrCode" |
| | | source="splrCode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.batch" |
| | | label="table.field.stockItem.batch" |
| | | source="batch" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrBatch" |
| | | label="table.field.stockItem.splrBatch" |
| | | source="splrBatch" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrName" |
| | | label="table.field.stockItem.splrName" |
| | | source="splrName" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.trackCode" |
| | | label="table.field.stockItem.trackCode" |
| | | source="trackCode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.barcode" |
| | | label="table.field.stockItem.barcode" |
| | | source="barcode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.prodTime" |
| | | label="table.field.stockItem.prodTime" |
| | | source="prodTime" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.packName" |
| | | label="table.field.stockItem.packName" |
| | | source="packName" |
| | | parse={v => v} |
| | | /> |
File was renamed from rsf-admin/src/page/orders/order/OrderItemList.jsx |
| | |
| | | ReferenceArrayInput, |
| | | AutocompleteInput, |
| | | DeleteButton, |
| | | useGetRecordId, |
| | | } from 'react-admin'; |
| | | import { Box, Typography, Card, Stack } from '@mui/material'; |
| | | import { styled } from '@mui/material/styles'; |
| | |
| | | |
| | | const filters = [ |
| | | <SearchInput source="condition" alwaysOn />, |
| | | <DateInput label='common.time.after' source="timeStart" alwaysOn />, |
| | | <DateInput label='common.time.before' source="timeEnd" alwaysOn />, |
| | | <NumberInput source="orderId" label="table.field.orderItem.orderId" />, |
| | | <TextInput source="orderCode" label="table.field.orderItem.orderCode" />, |
| | | <TextInput source="sourceItemId" label="table.field.orderItem.sourceItemId" />, |
| | | <TextInput source="matnrId" label="table.field.orderItem.matnrId" />, |
| | | <TextInput source="matnrCode" label="table.field.orderItem.matnrCode" />, |
| | | <TextInput source="maktx" label="table.field.orderItem.maktx" />, |
| | | <NumberInput source="anfme" label="table.field.orderItem.anfme" />, |
| | | <TextInput source="stockUnit" label="table.field.orderItem.stockUnit" />, |
| | | <NumberInput source="workQty" label="table.field.orderItem.workQty" />, |
| | | <NumberInput source="purQty" label="table.field.orderItem.purQty" />, |
| | | <TextInput source="purUnit" label="table.field.orderItem.purUnit" />, |
| | | <NumberInput source="qty" label="table.field.orderItem.qty" />, |
| | | <TextInput source="splrCode" label="table.field.orderItem.splrCode" />, |
| | | <TextInput source="batch" label="table.field.orderItem.batch" />, |
| | | <TextInput source="splrBatch" label="table.field.orderItem.splrBatch" />, |
| | | <TextInput source="splrName" label="table.field.orderItem.splrName" />, |
| | | <TextInput source="trackCode" label="table.field.orderItem.trackCode" />, |
| | | <TextInput source="barcode" label="table.field.orderItem.barcode" />, |
| | | <TextInput source="prodTime" label="table.field.orderItem.prodTime" />, |
| | | <TextInput source="packName" label="table.field.orderItem.packName" />, |
| | | <DateInput label='common.time.after' source="timeStart" />, |
| | | <DateInput label='common.time.before' source="timeEnd" />, |
| | | <NumberInput source="orderId" label="table.field.stockItem.orderId" />, |
| | | <TextInput source="orderCode" label="table.field.stockItem.orderCode" />, |
| | | <TextInput source="sourceItemId" label="table.field.stockItem.sourceItemId" />, |
| | | <TextInput source="matnrId" label="table.field.stockItem.matnrId" />, |
| | | <TextInput source="matnrCode" label="table.field.stockItem.matnrCode" />, |
| | | <TextInput source="maktx" label="table.field.stockItem.maktx" />, |
| | | <NumberInput source="anfme" label="table.field.stockItem.anfme" />, |
| | | <TextInput source="stockUnit" label="table.field.stockItem.stockUnit" />, |
| | | <NumberInput source="workQty" label="table.field.stockItem.workQty" />, |
| | | <NumberInput source="purQty" label="table.field.stockItem.purQty" />, |
| | | <TextInput source="purUnit" label="table.field.stockItem.purUnit" />, |
| | | <NumberInput source="qty" label="table.field.stockItem.qty" />, |
| | | <TextInput source="splrCode" label="table.field.stockItem.splrCode" />, |
| | | <TextInput source="batch" label="table.field.stockItem.batch" />, |
| | | <TextInput source="splrBatch" label="table.field.stockItem.splrBatch" />, |
| | | <TextInput source="splrName" label="table.field.stockItem.splrName" />, |
| | | <TextInput source="trackCode" label="table.field.stockItem.trackCode" />, |
| | | <TextInput source="barcode" label="table.field.stockItem.barcode" />, |
| | | <TextInput source="prodTime" label="table.field.stockItem.prodTime" />, |
| | | <TextInput source="packName" label="table.field.stockItem.packName" />, |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | <SelectInput |
| | | label="common.field.status" |
| | |
| | | |
| | | const OrderItemList = () => { |
| | | const translate = useTranslate(); |
| | | |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | const stockId = useGetRecordId(); |
| | | |
| | | return ( |
| | | <Box display="flex"> |
| | | <List |
| | | resource="stockItem" |
| | | sx={{ |
| | | flexGrow: 1, |
| | | transition: (theme) => |
| | |
| | | }), |
| | | marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | }} |
| | | title={"menu.orderItem"} |
| | | empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} |
| | | title={"menu.stockItem"} |
| | | empty={false} |
| | | filters={filters} |
| | | filter={{ stockId: stockId }} |
| | | sort={{ field: "create_time", order: "desc" }} |
| | | actions={( |
| | | <TopToolbar> |
| | | <FilterButton /> |
| | | <MyCreateButton onClick={() => { setCreateDialog(true) }} /> |
| | | <SelectColumnsButton preferenceKey='orderItem' /> |
| | | <SelectColumnsButton preferenceKey='stockItem' /> |
| | | <MyExportButton /> |
| | | </TopToolbar> |
| | | )} |
| | | perPage={DEFAULT_PAGE_SIZE} |
| | | > |
| | | <StyledDatagrid |
| | | preferenceKey='orderItem' |
| | | preferenceKey='stockItem' |
| | | bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} |
| | | rowClick={(id, resource, record) => false} |
| | | expand={false} |
| | |
| | | omit={['id', 'createTime', 'createBy', 'memo']} |
| | | > |
| | | <NumberField source="id" /> |
| | | <NumberField source="orderId" label="table.field.orderItem.orderId" /> |
| | | <TextField source="orderCode" label="table.field.orderItem.orderCode" /> |
| | | <TextField source="sourceItemId" label="table.field.orderItem.sourceItemId" /> |
| | | <TextField source="matnrId" label="table.field.orderItem.matnrId" /> |
| | | <TextField source="matnrCode" label="table.field.orderItem.matnrCode" /> |
| | | <TextField source="maktx" label="table.field.orderItem.maktx" /> |
| | | <NumberField source="anfme" label="table.field.orderItem.anfme" /> |
| | | <TextField source="stockUnit" label="table.field.orderItem.stockUnit" /> |
| | | <NumberField source="workQty" label="table.field.orderItem.workQty" /> |
| | | <NumberField source="purQty" label="table.field.orderItem.purQty" /> |
| | | <TextField source="purUnit" label="table.field.orderItem.purUnit" /> |
| | | <NumberField source="qty" label="table.field.orderItem.qty" /> |
| | | <TextField source="splrCode" label="table.field.orderItem.splrCode" /> |
| | | <TextField source="batch" label="table.field.orderItem.batch" /> |
| | | <TextField source="splrBatch" label="table.field.orderItem.splrBatch" /> |
| | | <TextField source="splrName" label="table.field.orderItem.splrName" /> |
| | | <TextField source="trackCode" label="table.field.orderItem.trackCode" /> |
| | | <TextField source="barcode" label="table.field.orderItem.barcode" /> |
| | | <TextField source="prodTime" label="table.field.orderItem.prodTime" /> |
| | | <TextField source="packName" label="table.field.orderItem.packName" /> |
| | | <NumberField source="orderId" label="table.field.stockItem.orderId" /> |
| | | <TextField source="orderCode" label="table.field.stockItem.orderCode" /> |
| | | <TextField source="sourceItemId" label="table.field.stockItem.sourceItemId" /> |
| | | <TextField source="matnrId" label="table.field.stockItem.matnrId" /> |
| | | <TextField source="matnrCode" label="table.field.stockItem.matnrCode" /> |
| | | <TextField source="maktx" label="table.field.stockItem.maktx" /> |
| | | <NumberField source="anfme" label="table.field.stockItem.anfme" /> |
| | | <TextField source="stockUnit" label="table.field.stockItem.stockUnit" /> |
| | | <NumberField source="workQty" label="table.field.stockItem.workQty" /> |
| | | <NumberField source="purQty" label="table.field.stockItem.purQty" /> |
| | | <TextField source="purUnit" label="table.field.stockItem.purUnit" /> |
| | | <NumberField source="qty" label="table.field.stockItem.qty" /> |
| | | <TextField source="splrCode" label="table.field.stockItem.splrCode" /> |
| | | <TextField source="batch" label="table.field.stockItem.batch" /> |
| | | <TextField source="splrBatch" label="table.field.stockItem.splrBatch" /> |
| | | <TextField source="splrName" label="table.field.stockItem.splrName" /> |
| | | <TextField source="trackCode" label="table.field.stockItem.trackCode" /> |
| | | <TextField source="barcode" label="table.field.stockItem.barcode" /> |
| | | <TextField source="prodTime" label="table.field.stockItem.prodTime" /> |
| | | <TextField source="packName" label="table.field.stockItem.packName" /> |
| | | <TextField source="updateBy$" label="common.field.updateBy" /> |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime /> |
| | | <TextField source="createBy$" label="common.field.createBy" /> |
| | | <TextField source="createBy$" label="common.field.createBy" /> |
| | | <DateField source="createTime" label="common.field.createTime" showTime /> |
| | | <BooleanField source="statusBool" label="common.field.status" sortable={false} /> |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> |
| | |
| | | </WrapperField> |
| | | </StyledDatagrid> |
| | | </List> |
| | | <OrderItemCreate |
| | | open={createDialog} |
| | | setOpen={setCreateDialog} |
| | | /> |
| | | <PageDrawer |
| | | title='OrderItem Detail' |
| | | title='stockItem Detail' |
| | | drawerVal={drawerVal} |
| | | setDrawerVal={setDrawerVal} |
| | | > |
File was renamed from rsf-admin/src/page/orders/order/OrderList.jsx |
| | |
| | | <DateInput label='common.time.after' source="timeStart" alwaysOn />, |
| | | <DateInput label='common.time.before' source="timeEnd" alwaysOn />, |
| | | |
| | | <TextInput source="code" label="table.field.order.code" />, |
| | | <TextInput source="sourceCode" label="table.field.order.sourceCode" />, |
| | | <NumberInput source="sourceId" label="table.field.order.sourceId" />, |
| | | <TextInput source="type" label="table.field.order.type" />, |
| | | <TextInput source="wkType" label="table.field.order.wkType" />, |
| | | <NumberInput source="anfme" label="table.field.order.anfme" />, |
| | | <TextInput source="code" label="table.field.stock.code" />, |
| | | <TextInput source="sourceCode" label="table.field.stock.sourceCode" />, |
| | | <NumberInput source="sourceId" label="table.field.stock.sourceId" />, |
| | | <TextInput source="type" label="table.field.stock.type" />, |
| | | <TextInput source="wkType" label="table.field.stock.wkType" />, |
| | | <NumberInput source="anfme" label="table.field.stock.anfme" />, |
| | | |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | <SelectInput |
| | |
| | | |
| | | const OrderList = () => { |
| | | const translate = useTranslate(); |
| | | |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | |
| | |
| | | }), |
| | | marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | }} |
| | | title={"menu.order"} |
| | | title={"menu.stock"} |
| | | empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} |
| | | filters={filters} |
| | | sort={{ field: "create_time", order: "desc" }} |
| | | actions={( |
| | | <TopToolbar> |
| | | <FilterButton /> |
| | | <MyCreateButton onClick={() => { setCreateDialog(true) }} /> |
| | | <SelectColumnsButton preferenceKey='order' /> |
| | | <SelectColumnsButton preferenceKey='stock' /> |
| | | <MyExportButton /> |
| | | </TopToolbar> |
| | | )} |
| | | perPage={DEFAULT_PAGE_SIZE} |
| | | > |
| | | <StyledDatagrid |
| | | preferenceKey='order' |
| | | preferenceKey='stock' |
| | | bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} |
| | | rowClick={(id, resource, record) => false} |
| | | expand={() => <OrderPanel />} |
| | | expandSingle={true} |
| | | omit={['id', 'createTime', 'createBy', 'memo']} |
| | | > |
| | | <NumberField source="id" /> |
| | | <TextField source="code" label="table.field.order.code" /> |
| | | <TextField source="sourceCode" label="table.field.order.sourceCode" /> |
| | | <NumberField source="sourceId" label="table.field.order.sourceId" /> |
| | | <TextField source="type" label="table.field.order.type" /> |
| | | <TextField source="wkType" label="table.field.order.wkType" /> |
| | | <NumberField source="anfme" label="table.field.order.anfme" /> |
| | | <TextField source="code" label="table.field.stock.code" /> |
| | | <TextField source="sourceCode" label="table.field.stock.sourceCode" /> |
| | | <NumberField source="sourceId" label="table.field.stock.sourceId" /> |
| | | <TextField source="type" label="table.field.stock.type" /> |
| | | <TextField source="wkType" label="table.field.stock.wkType" /> |
| | | <NumberField source="anfme" label="table.field.stock.anfme" /> |
| | | |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
File was renamed from rsf-admin/src/page/orders/order/OrderPanel.jsx |
| | |
| | | overflow: 'hidden', |
| | | textOverflow: 'ellipsis', |
| | | }}> |
| | | {Common.camelToPascalWithSpaces(translate('table.field.order.id'))}: {record.id} |
| | | {Common.camelToPascalWithSpaces(translate('table.field.stock.id'))}: {record.id} |
| | | </Typography> |
| | | {/* inherit, primary, secondary, textPrimary, textSecondary, error */} |
| | | <Typography variant="h6" gutterBottom align="right" > |
| | |
| | | <Grid container spacing={2}> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.order.code" |
| | | title="table.field.stock.code" |
| | | property={record.code} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.order.sourceCode" |
| | | title="table.field.stock.sourceCode" |
| | | property={record.sourceCode} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.order.sourceId" |
| | | title="table.field.stock.sourceId" |
| | | property={record.sourceId} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.order.type" |
| | | title="table.field.stock.type" |
| | | property={record.type} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.order.wkType" |
| | | title="table.field.stock.wkType" |
| | | property={record.wkType} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.order.anfme" |
| | | title="table.field.stock.anfme" |
| | | property={record.anfme} |
| | | /> |
| | | </Grid> |
copy from rsf-admin/src/page/orders/order/OrderItemCreate.jsx
copy to rsf-admin/src/page/stockItem/StockItemCreate.jsx
File was copied from rsf-admin/src/page/orders/order/OrderItemCreate.jsx |
| | |
| | | Grid, |
| | | Box, |
| | | } from '@mui/material'; |
| | | import DialogCloseButton from "../../components/DialogCloseButton"; |
| | | import StatusSelectInput from "../../components/StatusSelectInput"; |
| | | import MemoInput from "../../components/MemoInput"; |
| | | import DialogCloseButton from "../components/DialogCloseButton"; |
| | | import StatusSelectInput from "../components/StatusSelectInput"; |
| | | import MemoInput from "../components/MemoInput"; |
| | | |
| | | const OrderItemCreate = (props) => { |
| | | const StockItemCreate = (props) => { |
| | | const { open, setOpen } = props; |
| | | |
| | | const translate = useTranslate(); |
| | |
| | | <Grid container rowSpacing={2} columnSpacing={2}> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.orderItem.orderId" |
| | | source="orderId" |
| | | label="table.field.stockItem.stockId" |
| | | source="stockId" |
| | | autoFocus |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.orderCode" |
| | | source="orderCode" |
| | | label="table.field.stockItem.stockCode" |
| | | source="stockCode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.sourceItemId" |
| | | <NumberInput |
| | | label="table.field.stockItem.sourceItemId" |
| | | source="sourceItemId" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.matnrId" |
| | | <NumberInput |
| | | label="table.field.stockItem.matnrId" |
| | | source="matnrId" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.matnrCode" |
| | | label="table.field.stockItem.matnrCode" |
| | | source="matnrCode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.maktx" |
| | | label="table.field.stockItem.maktx" |
| | | source="maktx" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.orderItem.anfme" |
| | | label="table.field.stockItem.anfme" |
| | | source="anfme" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.stockUnit" |
| | | label="table.field.stockItem.stockUnit" |
| | | source="stockUnit" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.orderItem.workQty" |
| | | label="table.field.stockItem.workQty" |
| | | source="workQty" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.orderItem.purQty" |
| | | label="table.field.stockItem.purQty" |
| | | source="purQty" |
| | | validate={required()} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.purUnit" |
| | | label="table.field.stockItem.purUnit" |
| | | source="purUnit" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <NumberInput |
| | | label="table.field.orderItem.qty" |
| | | label="table.field.stockItem.qty" |
| | | source="qty" |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrCode" |
| | | label="table.field.stockItem.splrCode" |
| | | source="splrCode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.batch" |
| | | label="table.field.stockItem.batch" |
| | | source="batch" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrBatch" |
| | | label="table.field.stockItem.splrBatch" |
| | | source="splrBatch" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrName" |
| | | label="table.field.stockItem.splrName" |
| | | source="splrName" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.trackCode" |
| | | label="table.field.stockItem.trackCode" |
| | | source="trackCode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.barcode" |
| | | label="table.field.stockItem.barcode" |
| | | source="barcode" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.prodTime" |
| | | label="table.field.stockItem.prodTime" |
| | | source="prodTime" |
| | | parse={v => v} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6} display="flex" gap={1}> |
| | | <TextInput |
| | | label="table.field.orderItem.packName" |
| | | label="table.field.stockItem.packName" |
| | | source="packName" |
| | | parse={v => v} |
| | | /> |
| | |
| | | ) |
| | | } |
| | | |
| | | export default OrderItemCreate; |
| | | export default StockItemCreate; |
copy from rsf-admin/src/page/orders/order/OrderItemEdit.jsx
copy to rsf-admin/src/page/stockItem/StockItemEdit.jsx
File was copied from rsf-admin/src/page/orders/order/OrderItemEdit.jsx |
| | |
| | | import { Stack, Grid, Box, Typography } from '@mui/material'; |
| | | import * as Common from '@/utils/common'; |
| | | import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; |
| | | import EditBaseAside from "../../components/EditBaseAside"; |
| | | import CustomerTopToolBar from "../../components/EditTopToolBar"; |
| | | import MemoInput from "../../components/MemoInput"; |
| | | import StatusSelectInput from "../../components/StatusSelectInput"; |
| | | import EditBaseAside from "../components/EditBaseAside"; |
| | | import CustomerTopToolBar from "../components/EditTopToolBar"; |
| | | import MemoInput from "../components/MemoInput"; |
| | | import StatusSelectInput from "../components/StatusSelectInput"; |
| | | |
| | | const FormToolbar = () => { |
| | | const { getValues } = useFormContext(); |
| | |
| | | ) |
| | | } |
| | | |
| | | const OrderItemEdit = () => { |
| | | const StockItemEdit = () => { |
| | | const translate = useTranslate(); |
| | | |
| | | return ( |
| | |
| | | </Typography> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.orderItem.orderId" |
| | | source="orderId" |
| | | label="table.field.stockItem.stockId" |
| | | source="stockId" |
| | | autoFocus |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.orderCode" |
| | | source="orderCode" |
| | | label="table.field.stockItem.stockCode" |
| | | source="stockCode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.sourceItemId" |
| | | <NumberInput |
| | | label="table.field.stockItem.sourceItemId" |
| | | source="sourceItemId" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.matnrId" |
| | | <NumberInput |
| | | label="table.field.stockItem.matnrId" |
| | | source="matnrId" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.matnrCode" |
| | | label="table.field.stockItem.matnrCode" |
| | | source="matnrCode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.maktx" |
| | | label="table.field.stockItem.maktx" |
| | | source="maktx" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.orderItem.anfme" |
| | | label="table.field.stockItem.anfme" |
| | | source="anfme" |
| | | validate={required()} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.stockUnit" |
| | | label="table.field.stockItem.stockUnit" |
| | | source="stockUnit" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.orderItem.workQty" |
| | | label="table.field.stockItem.workQty" |
| | | source="workQty" |
| | | validate={required()} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.orderItem.purQty" |
| | | label="table.field.stockItem.purQty" |
| | | source="purQty" |
| | | validate={required()} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.purUnit" |
| | | label="table.field.stockItem.purUnit" |
| | | source="purUnit" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <NumberInput |
| | | label="table.field.orderItem.qty" |
| | | label="table.field.stockItem.qty" |
| | | source="qty" |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrCode" |
| | | label="table.field.stockItem.splrCode" |
| | | source="splrCode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.batch" |
| | | label="table.field.stockItem.batch" |
| | | source="batch" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrBatch" |
| | | label="table.field.stockItem.splrBatch" |
| | | source="splrBatch" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.splrName" |
| | | label="table.field.stockItem.splrName" |
| | | source="splrName" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.trackCode" |
| | | label="table.field.stockItem.trackCode" |
| | | source="trackCode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.barcode" |
| | | label="table.field.stockItem.barcode" |
| | | source="barcode" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.prodTime" |
| | | label="table.field.stockItem.prodTime" |
| | | source="prodTime" |
| | | parse={v => v} |
| | | /> |
| | | </Stack> |
| | | <Stack direction='row' gap={2}> |
| | | <TextInput |
| | | label="table.field.orderItem.packName" |
| | | label="table.field.stockItem.packName" |
| | | source="packName" |
| | | parse={v => v} |
| | | /> |
| | |
| | | ) |
| | | } |
| | | |
| | | export default OrderItemEdit; |
| | | export default StockItemEdit; |
copy from rsf-admin/src/page/orders/order/OrderItemList.jsx
copy to rsf-admin/src/page/stockItem/StockItemList.jsx
File was copied from rsf-admin/src/page/orders/order/OrderItemList.jsx |
| | |
| | | } from 'react-admin'; |
| | | import { Box, Typography, Card, Stack } from '@mui/material'; |
| | | import { styled } from '@mui/material/styles'; |
| | | import OrderItemCreate from "./OrderItemCreate"; |
| | | import EmptyData from "../../components/EmptyData"; |
| | | import MyCreateButton from "../../components/MyCreateButton"; |
| | | import MyExportButton from '../../components/MyExportButton'; |
| | | import PageDrawer from "../../components/PageDrawer"; |
| | | import MyField from "../../components/MyField"; |
| | | import StockItemCreate from "./StockItemCreate"; |
| | | import StockItemPanel from "./StockItemPanel"; |
| | | import EmptyData from "../components/EmptyData"; |
| | | import MyCreateButton from "../components/MyCreateButton"; |
| | | import MyExportButton from '../components/MyExportButton'; |
| | | import PageDrawer from "../components/PageDrawer"; |
| | | import MyField from "../components/MyField"; |
| | | import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; |
| | | import * as Common from '@/utils/common'; |
| | | |
| | |
| | | <SearchInput source="condition" alwaysOn />, |
| | | <DateInput label='common.time.after' source="timeStart" alwaysOn />, |
| | | <DateInput label='common.time.before' source="timeEnd" alwaysOn />, |
| | | <NumberInput source="orderId" label="table.field.orderItem.orderId" />, |
| | | <TextInput source="orderCode" label="table.field.orderItem.orderCode" />, |
| | | <TextInput source="sourceItemId" label="table.field.orderItem.sourceItemId" />, |
| | | <TextInput source="matnrId" label="table.field.orderItem.matnrId" />, |
| | | <TextInput source="matnrCode" label="table.field.orderItem.matnrCode" />, |
| | | <TextInput source="maktx" label="table.field.orderItem.maktx" />, |
| | | <NumberInput source="anfme" label="table.field.orderItem.anfme" />, |
| | | <TextInput source="stockUnit" label="table.field.orderItem.stockUnit" />, |
| | | <NumberInput source="workQty" label="table.field.orderItem.workQty" />, |
| | | <NumberInput source="purQty" label="table.field.orderItem.purQty" />, |
| | | <TextInput source="purUnit" label="table.field.orderItem.purUnit" />, |
| | | <NumberInput source="qty" label="table.field.orderItem.qty" />, |
| | | <TextInput source="splrCode" label="table.field.orderItem.splrCode" />, |
| | | <TextInput source="batch" label="table.field.orderItem.batch" />, |
| | | <TextInput source="splrBatch" label="table.field.orderItem.splrBatch" />, |
| | | <TextInput source="splrName" label="table.field.orderItem.splrName" />, |
| | | <TextInput source="trackCode" label="table.field.orderItem.trackCode" />, |
| | | <TextInput source="barcode" label="table.field.orderItem.barcode" />, |
| | | <TextInput source="prodTime" label="table.field.orderItem.prodTime" />, |
| | | <TextInput source="packName" label="table.field.orderItem.packName" />, |
| | | |
| | | <NumberInput source="stockId" label="table.field.stockItem.stockId" />, |
| | | <TextInput source="stockCode" label="table.field.stockItem.stockCode" />, |
| | | <NumberInput source="sourceItemId" label="table.field.stockItem.sourceItemId" />, |
| | | <NumberInput source="matnrId" label="table.field.stockItem.matnrId" />, |
| | | <TextInput source="matnrCode" label="table.field.stockItem.matnrCode" />, |
| | | <TextInput source="maktx" label="table.field.stockItem.maktx" />, |
| | | <NumberInput source="anfme" label="table.field.stockItem.anfme" />, |
| | | <TextInput source="stockUnit" label="table.field.stockItem.stockUnit" />, |
| | | <NumberInput source="workQty" label="table.field.stockItem.workQty" />, |
| | | <NumberInput source="purQty" label="table.field.stockItem.purQty" />, |
| | | <TextInput source="purUnit" label="table.field.stockItem.purUnit" />, |
| | | <NumberInput source="qty" label="table.field.stockItem.qty" />, |
| | | <TextInput source="splrCode" label="table.field.stockItem.splrCode" />, |
| | | <TextInput source="batch" label="table.field.stockItem.batch" />, |
| | | <TextInput source="splrBatch" label="table.field.stockItem.splrBatch" />, |
| | | <TextInput source="splrName" label="table.field.stockItem.splrName" />, |
| | | <TextInput source="trackCode" label="table.field.stockItem.trackCode" />, |
| | | <TextInput source="barcode" label="table.field.stockItem.barcode" />, |
| | | <TextInput source="prodTime" label="table.field.stockItem.prodTime" />, |
| | | <TextInput source="packName" label="table.field.stockItem.packName" />, |
| | | |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | <SelectInput |
| | | label="common.field.status" |
| | |
| | | />, |
| | | ] |
| | | |
| | | const OrderItemList = () => { |
| | | const StockItemList = () => { |
| | | const translate = useTranslate(); |
| | | |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | |
| | | }), |
| | | marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | }} |
| | | title={"menu.orderItem"} |
| | | title={"menu.stockItem"} |
| | | empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} |
| | | filters={filters} |
| | | sort={{ field: "create_time", order: "desc" }} |
| | |
| | | <TopToolbar> |
| | | <FilterButton /> |
| | | <MyCreateButton onClick={() => { setCreateDialog(true) }} /> |
| | | <SelectColumnsButton preferenceKey='orderItem' /> |
| | | <SelectColumnsButton preferenceKey='stockItem' /> |
| | | <MyExportButton /> |
| | | </TopToolbar> |
| | | )} |
| | | perPage={DEFAULT_PAGE_SIZE} |
| | | > |
| | | <StyledDatagrid |
| | | preferenceKey='orderItem' |
| | | preferenceKey='stockItem' |
| | | bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} |
| | | rowClick={(id, resource, record) => false} |
| | | expand={false} |
| | | expand={() => <StockItemPanel />} |
| | | expandSingle={true} |
| | | omit={['id', 'createTime', 'createBy', 'memo']} |
| | | > |
| | | <NumberField source="id" /> |
| | | <NumberField source="orderId" label="table.field.orderItem.orderId" /> |
| | | <TextField source="orderCode" label="table.field.orderItem.orderCode" /> |
| | | <TextField source="sourceItemId" label="table.field.orderItem.sourceItemId" /> |
| | | <TextField source="matnrId" label="table.field.orderItem.matnrId" /> |
| | | <TextField source="matnrCode" label="table.field.orderItem.matnrCode" /> |
| | | <TextField source="maktx" label="table.field.orderItem.maktx" /> |
| | | <NumberField source="anfme" label="table.field.orderItem.anfme" /> |
| | | <TextField source="stockUnit" label="table.field.orderItem.stockUnit" /> |
| | | <NumberField source="workQty" label="table.field.orderItem.workQty" /> |
| | | <NumberField source="purQty" label="table.field.orderItem.purQty" /> |
| | | <TextField source="purUnit" label="table.field.orderItem.purUnit" /> |
| | | <NumberField source="qty" label="table.field.orderItem.qty" /> |
| | | <TextField source="splrCode" label="table.field.orderItem.splrCode" /> |
| | | <TextField source="batch" label="table.field.orderItem.batch" /> |
| | | <TextField source="splrBatch" label="table.field.orderItem.splrBatch" /> |
| | | <TextField source="splrName" label="table.field.orderItem.splrName" /> |
| | | <TextField source="trackCode" label="table.field.orderItem.trackCode" /> |
| | | <TextField source="barcode" label="table.field.orderItem.barcode" /> |
| | | <TextField source="prodTime" label="table.field.orderItem.prodTime" /> |
| | | <TextField source="packName" label="table.field.orderItem.packName" /> |
| | | <TextField source="updateBy$" label="common.field.updateBy" /> |
| | | <NumberField source="stockId" label="table.field.stockItem.stockId" /> |
| | | <TextField source="stockCode" label="table.field.stockItem.stockCode" /> |
| | | <NumberField source="sourceItemId" label="table.field.stockItem.sourceItemId" /> |
| | | <NumberField source="matnrId" label="table.field.stockItem.matnrId" /> |
| | | <TextField source="matnrCode" label="table.field.stockItem.matnrCode" /> |
| | | <TextField source="maktx" label="table.field.stockItem.maktx" /> |
| | | <NumberField source="anfme" label="table.field.stockItem.anfme" /> |
| | | <TextField source="stockUnit" label="table.field.stockItem.stockUnit" /> |
| | | <NumberField source="workQty" label="table.field.stockItem.workQty" /> |
| | | <NumberField source="purQty" label="table.field.stockItem.purQty" /> |
| | | <TextField source="purUnit" label="table.field.stockItem.purUnit" /> |
| | | <NumberField source="qty" label="table.field.stockItem.qty" /> |
| | | <TextField source="splrCode" label="table.field.stockItem.splrCode" /> |
| | | <TextField source="batch" label="table.field.stockItem.batch" /> |
| | | <TextField source="splrBatch" label="table.field.stockItem.splrBatch" /> |
| | | <TextField source="splrName" label="table.field.stockItem.splrName" /> |
| | | <TextField source="trackCode" label="table.field.stockItem.trackCode" /> |
| | | <TextField source="barcode" label="table.field.stockItem.barcode" /> |
| | | <TextField source="prodTime" label="table.field.stockItem.prodTime" /> |
| | | <TextField source="packName" label="table.field.stockItem.packName" /> |
| | | |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField> |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime /> |
| | | <TextField source="createBy$" label="common.field.createBy" /> |
| | | <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField> |
| | | <DateField source="createTime" label="common.field.createTime" showTime /> |
| | | <BooleanField source="statusBool" label="common.field.status" sortable={false} /> |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> |
| | |
| | | </WrapperField> |
| | | </StyledDatagrid> |
| | | </List> |
| | | <OrderItemCreate |
| | | <StockItemCreate |
| | | open={createDialog} |
| | | setOpen={setCreateDialog} |
| | | /> |
| | | <PageDrawer |
| | | title='OrderItem Detail' |
| | | title='StockItem Detail' |
| | | drawerVal={drawerVal} |
| | | setDrawerVal={setDrawerVal} |
| | | > |
| | |
| | | ) |
| | | } |
| | | |
| | | export default OrderItemList; |
| | | export default StockItemList; |
File was renamed from rsf-admin/src/page/locItem/LocItemPanel.jsx |
| | |
| | | import PanelTypography from "../components/PanelTypography"; |
| | | import * as Common from '@/utils/common' |
| | | |
| | | const LocItemPanel = () => { |
| | | const StockItemPanel = () => { |
| | | const record = useRecordContext(); |
| | | if (!record) return null; |
| | | const translate = useTranslate(); |
| | |
| | | overflow: 'hidden', |
| | | textOverflow: 'ellipsis', |
| | | }}> |
| | | {Common.camelToPascalWithSpaces(translate('table.field.locItem.id'))}: {record.id} |
| | | {Common.camelToPascalWithSpaces(translate('table.field.stockItem.id'))}: {record.id} |
| | | </Typography> |
| | | {/* inherit, primary, secondary, textPrimary, textSecondary, error */} |
| | | <Typography variant="h6" gutterBottom align="right" > |
| | |
| | | <Grid container spacing={2}> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.locId" |
| | | property={record.locId} |
| | | title="table.field.stockItem.stockId" |
| | | property={record.stockId} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.orderId" |
| | | property={record.orderId} |
| | | title="table.field.stockItem.stockCode" |
| | | property={record.stockCode} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.type" |
| | | property={record.type} |
| | | title="table.field.stockItem.sourceItemId" |
| | | property={record.sourceItemId} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.orderItemId" |
| | | property={record.orderItemId} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.wkType" |
| | | property={record.wkType} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.matnrId" |
| | | title="table.field.stockItem.matnrId" |
| | | property={record.matnrId} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.maktx" |
| | | property={record.maktx} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.matnrCode" |
| | | title="table.field.stockItem.matnrCode" |
| | | property={record.matnrCode} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.trackCode" |
| | | property={record.trackCode} |
| | | title="table.field.stockItem.maktx" |
| | | property={record.maktx} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.unit" |
| | | property={record.unit} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.anfme" |
| | | title="table.field.stockItem.anfme" |
| | | property={record.anfme} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.batch" |
| | | title="table.field.stockItem.stockUnit" |
| | | property={record.stockUnit} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.stockItem.workQty" |
| | | property={record.workQty} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.stockItem.purQty" |
| | | property={record.purQty} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.stockItem.purUnit" |
| | | property={record.purUnit} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.stockItem.qty" |
| | | property={record.qty} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.stockItem.splrCode" |
| | | property={record.splrCode} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.stockItem.batch" |
| | | property={record.batch} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.splrBatch" |
| | | title="table.field.stockItem.splrBatch" |
| | | property={record.splrBatch} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.spec" |
| | | property={record.spec} |
| | | title="table.field.stockItem.splrName" |
| | | property={record.splrName} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.model" |
| | | property={record.model} |
| | | title="table.field.stockItem.trackCode" |
| | | property={record.trackCode} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.locItem.fieldsIndex" |
| | | property={record.fieldsIndex} |
| | | title="table.field.stockItem.barcode" |
| | | property={record.barcode} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.stockItem.prodTime" |
| | | property={record.prodTime} |
| | | /> |
| | | </Grid> |
| | | <Grid item xs={6}> |
| | | <PanelTypography |
| | | title="table.field.stockItem.packName" |
| | | property={record.packName} |
| | | /> |
| | | </Grid> |
| | | |
| | |
| | | ); |
| | | }; |
| | | |
| | | export default LocItemPanel; |
| | | export default StockItemPanel; |
File was renamed from rsf-admin/src/page/locItem/index.jsx |
| | |
| | | ShowGuesser, |
| | | } from "react-admin"; |
| | | |
| | | import LocItemList from "./LocItemList"; |
| | | import LocItemEdit from "./LocItemEdit"; |
| | | import StockItemList from "./StockItemList"; |
| | | import StockItemEdit from "./StockItemEdit"; |
| | | |
| | | export default { |
| | | list: LocItemList, |
| | | edit: LocItemEdit, |
| | | list: StockItemList, |
| | | edit: StockItemEdit, |
| | | show: ShowGuesser, |
| | | recordRepresentation: (record) => { |
| | | return `${record.id}` |
| | |
| | | // generator.username="sa"; |
| | | // generator.password="Zoneyung@zy56$"; |
| | | |
| | | generator.table="man_loc_item"; |
| | | generator.tableDesc="库位明细"; |
| | | generator.table="man_stock_item"; |
| | | generator.tableDesc="综合单据明细"; |
| | | generator.packagePath="com.vincent.rsf.server.manager"; |
| | | |
| | | generator.build(); |
| | |
| | | if (StringUtils.isBlank(ruleCode)) { |
| | | throw new CoolException("当前业务:" + SerialRuleCode.SYS_STOCK_CODE + ",编码规则不存在!!"); |
| | | } |
| | | stock.setSourceId(order.getId()).setSourceCode(order.getCode()); |
| | | double sum = items.stream().mapToDouble(TaskItem::getAnfme).sum(); |
| | | stock.setSourceId(order.getId()) |
| | | .setCode(ruleCode) |
| | | .setSourceCode(order.getCode()) |
| | | .setAnfme(sum) |
| | | .setWkType(Short.parseShort(order.getWkType())) |
| | | .setType(order.getType()); |
| | | if (!stockService.save(stock)) { |
| | | throw new CoolException("库存保存失败!!"); |
| | | } |
| | |
| | | throw new CoolException("库存修改架失败!!"); |
| | | } |
| | | } |
| | | |
| | | // public void generateOrders() { |
| | | // Map<Long, List<TaskItem>> listMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getOrderId)); |
| | | // listMap.keySet().forEach(key -> { |
| | | // double sum = listMap.get(key).stream().mapToDouble(TaskItem::getAnfme).sum(); |
| | | // listMap.get(key).forEach(taskItem -> { |
| | | // Order order = new Order(); |
| | | // String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_MANAGE_ORDER_CODE, taskItem); |
| | | // if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) { |
| | | // throw new CoolException("编码规则错误:" + "请查看编码:" + "「SYS_MANAGE_ORDER_CODE」" + "是否设置"); |
| | | // } |
| | | // order.setCode(ruleCode).setAnfme(sum).setSourceId(taskItem.getOrderId()); |
| | | // }); |
| | | // }); |
| | | // |
| | | // if (!orderItemService.saveBatch(orderItems)) { |
| | | // throw new CoolException("单据明细保存失败!!"); |
| | | // } |
| | | // } |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | -- save stockItem record |
| | | -- mysql |
| | | insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.stockItem', '0', '/manager/stockItem', 'stockItem', '0' , '0', '1' , '1'); |
| | | |
| | | insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 综合单据明细', '', '1', 'manager:stockItem:list', '0', '1', '1'); |
| | | insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 综合单据明细', '', '1', 'manager:stockItem:save', '1', '1', '1'); |
| | | insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 综合单据明细', '', '1', 'manager:stockItem:update', '2', '1', '1'); |
| | | insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 综合单据明细', '', '1', 'manager:stockItem:remove', '3', '1', '1'); |
| | | |
| | | -- locale menu name |
| | | stockItem: 'StockItem', |
| | | |
| | | -- locale field |
| | | stockItem: { |
| | | stockId: "stockId", |
| | | stockCode: "stockCode", |
| | | sourceItemId: "sourceItemId", |
| | | matnrId: "matnrId", |
| | | matnrCode: "matnrCode", |
| | | maktx: "maktx", |
| | | anfme: "anfme", |
| | | stockUnit: "stockUnit", |
| | | workQty: "workQty", |
| | | purQty: "purQty", |
| | | purUnit: "purUnit", |
| | | qty: "qty", |
| | | splrCode: "splrCode", |
| | | batch: "batch", |
| | | splrBatch: "splrBatch", |
| | | splrName: "splrName", |
| | | trackCode: "trackCode", |
| | | barcode: "barcode", |
| | | prodTime: "prodTime", |
| | | packName: "packName", |
| | | }, |
| | | |
| | | -- ResourceContent |
| | | import stockItem from './stockItem'; |
| | | |
| | | case 'stockItem': |
| | | return stockItem; |