From e411a471a08717964937be2e6ac0eadaa84961ca Mon Sep 17 00:00:00 2001 From: DESKTOP-LMJ82IJ\Eno <creaycat@gmail.com> Date: 星期日, 13 四月 2025 18:39:36 +0800 Subject: [PATCH] #修改 1. 组拖界面优化 --- rsf-admin/src/page/waitPakinItem/WaitPakinItemList.jsx | 25 +-- rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java | 2 rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx | 6 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java | 3 rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx | 160 +++++++++---------- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java | 13 + rsf-admin/src/page/qlyInspect/QlyInspectList.jsx | 12 - rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx | 1 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 17 - /dev/null | 18 -- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java | 2 rsf-admin/src/page/waitPakin/WaitPakinList.jsx | 25 -- rsf-admin/src/i18n/zh.js | 2 rsf-admin/src/i18n/en.js | 2 rsf-admin/src/page/ResourceContent.js | 12 - rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx | 149 +++++++++--------- 16 files changed, 192 insertions(+), 257 deletions(-) diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index a9d204c..6028053 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -631,6 +631,7 @@ ansId: "ansId", asnCode: "asnCode", barcode: "barcode", + flagDefect: "Defective", anfme: "anfme", ioStatus: "ioStatus", }, @@ -821,6 +822,7 @@ creatcode: "creatcode", print: "print", enable: 'enable', + detail: "Detail", unenable: 'unenable', locInit: 'loc init', siteInit: 'site init', diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index dc16f18..9bdf742 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -641,6 +641,7 @@ ansId: "鏀惰揣閫氱煡鍗曞彿", asnCode: "鏀惰揣閫氱煡鍗曠紪鐮�", barcode: "瀹瑰櫒鐮�", + flagDefect: "涓嶈壇鍝�", anfme: "鏁伴噺", ioStatus: "鐘舵��", }, @@ -832,6 +833,7 @@ inspection: "鎶ユ", creatcode: "鐢熸垚鏉$爜", print: "鎵撳嵃", + detail: "鏌ョ湅璇︽儏", enable: '鍚敤', unenable: '绂佺敤', locInit: '搴撲綅鍒濆鍖�', diff --git a/rsf-admin/src/page/ResourceContent.js b/rsf-admin/src/page/ResourceContent.js index ab19384..f5c5497 100644 --- a/rsf-admin/src/page/ResourceContent.js +++ b/rsf-admin/src/page/ResourceContent.js @@ -23,18 +23,14 @@ import qlyInspect from './qlyInspect'; import qlyIsptItem from './qlyIsptItem'; import dictType from './system/dicts/dictType'; -// import dictData from './system/dicts/dictData'; import companys from './basicInfo/companys'; import locType from './basicInfo/locType'; import locArea from './basicInfo//locArea'; import locAreaMatRela from './basicInfo/locAreaMatRela'; import locAreaMat from './basicInfo/locAreaMat'; -// import serialRuleItem from './system/serialRuleItem'; import serialRule from './system/serialRule'; import whMat from './basicInfo/whMat'; import asnOrder from './orders/asnOrder'; -// import asnOrderItem from './orders/asnOrderItem'; -// import purchaseItem from './purchaseItem'; import purchase from './purchase'; import fields from './fields'; import fieldsItem from './fieldsItem'; @@ -43,7 +39,7 @@ import waitPakin from './waitPakin'; import waitPakinItem from './waitPakinItem'; import waitPakinLog from './waitPakinLog'; -import asnOrderLog from './asnOrderLog'; +import asnOrderLog from './orders/asnOrderLog'; import task from './task'; import taskLog from './taskLog'; @@ -89,12 +85,8 @@ return qlyIsptItem; case 'dictType': return dictType; - // case 'dictData': - // return dictData; case 'companys': return companys; - // case 'serialRuleItem': - // return serialRuleItem; case 'serialRule': return serialRule; case 'whMat': @@ -105,8 +97,6 @@ return asnOrderItem; case 'asnOrderLog': return asnOrderLog; - // case 'purchaseItem': - // return purchaseItem; case 'purchase': return purchase; case 'fields': diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderItemLogList.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderItemLogList.jsx deleted file mode 100644 index 643d4ca..0000000 --- a/rsf-admin/src/page/asnOrderLog/AsnOrderItemLogList.jsx +++ /dev/null @@ -1,177 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; -import { useNavigate } from 'react-router-dom'; -import { - List, - DatagridConfigurable, - SearchInput, - TopToolbar, - SelectColumnsButton, - EditButton, - FilterButton, - CreateButton, - ExportButton, - BulkDeleteButton, - WrapperField, - useRecordContext, - useTranslate, - useNotify, - useListContext, - FunctionField, - TextField, - NumberField, - DateField, - BooleanField, - ReferenceField, - TextInput, - DateTimeInput, - DateInput, - SelectInput, - NumberInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, - DeleteButton, - useGetRecordId, -} from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; -import { styled } from '@mui/material/styles'; -import EmptyData from "../components/EmptyData"; -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'; - -const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ - '& .css-1vooibu-MuiSvgIcon-root': { - height: '.9em' - }, - '& .RaDatagrid-row': { - cursor: 'auto' - }, - '& .column-name': { - }, - '& .opt': { - width: 200 - }, -})); - -const filters = [ - <SearchInput source="condition" alwaysOn />, - - <NumberInput source="asnId" label="table.field.asnOrderItemLog.asnId" />, - <TextInput source="asnCode" label="table.field.asnOrderItemLog.asnCode" />, - <TextInput source="platItemId" label="table.field.asnOrderItemLog.platItemId" />, - <NumberInput source="poDetlId" label="table.field.asnOrderItemLog.poDetlId" />, - <TextInput source="poCode" label="table.field.asnOrderItemLog.poCode" />, - <TextInput source="fieldsIndex" label="table.field.asnOrderItemLog.fieldsIndex" />, - <TextInput source="matnrId" label="table.field.asnOrderItemLog.matnrId" />, - <TextInput source="matnrCode" label="table.field.asnOrderItemLog.matnrCode" />, - <TextInput source="maktx" label="table.field.asnOrderItemLog.maktx" />, - <NumberInput source="anfme" label="table.field.asnOrderItemLog.anfme" />, - <TextInput source="stockUnit" label="table.field.asnOrderItemLog.stockUnit" />, - <NumberInput source="purQty" label="table.field.asnOrderItemLog.purQty" />, - <TextInput source="purUnit" label="table.field.asnOrderItemLog.purUnit" />, - <NumberInput source="qty" label="table.field.asnOrderItemLog.qty" />, - <TextInput source="splrCode" label="table.field.asnOrderItemLog.splrCode" />, - <TextInput source="splrBatch" label="table.field.asnOrderItemLog.splrBatch" />, - <TextInput source="splrName" label="table.field.asnOrderItemLog.splrName" />, - <TextInput source="qrcode" label="table.field.asnOrderItemLog.qrcode" />, - <TextInput source="trackCode" label="table.field.asnOrderItemLog.trackCode" />, - <TextInput source="barcode" label="table.field.asnOrderItemLog.barcode" />, - <TextInput source="packName" label="table.field.asnOrderItemLog.packName" />, - <SelectInput source="ntyStatus" label="table.field.asnOrderItemLog.ntyStatus" - choices={[ - { id: 0, name: ' 鏈笂鎶�' }, - { id: 1, name: ' 宸蹭笂鎶�' }, - ]} - />, - - <TextInput label="common.field.memo" source="memo" />, - <SelectInput - label="common.field.status" - source="status" - choices={[ - { id: '1', name: 'common.enums.statusTrue' }, - { id: '0', name: 'common.enums.statusFalse' }, - ]} - resettable - />, -] - -const AsnOrderItemLogList = () => { - const translate = useTranslate(); - const [createDialog, setCreateDialog] = useState(false); - const [drawerVal, setDrawerVal] = useState(false); - const recodeId = useGetRecordId(); - - return ( - <Box display="flex"> - <List - resource="asnOrderItemLog" - sx={{ - flexGrow: 1, - transition: (theme) => - theme.transitions.create(['all'], { - duration: theme.transitions.duration.enteringScreen, - }), - marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, - }} - title={"menu.asnOrderItemLog"} - empty={false} - filters={filters} - filter={{ logId: recodeId }} - sort={{ field: "create_time", order: "desc" }} - actions={( - <TopToolbar> - <FilterButton /> - <SelectColumnsButton preferenceKey='asnOrderItemLog' /> - <MyExportButton /> - </TopToolbar> - )} - perPage={DEFAULT_PAGE_SIZE} - > - <StyledDatagrid - preferenceKey='asnOrderItemLog' - bulkActionButtons={false} - rowClick={(id, resource, record) => false} - omit={['id', 'asnId', 'poDetlId', 'poCode', 'qrcode', 'packName', 'createTime', 'memo', 'fieldsIndex', 'matnrId', 'splrCode', 'status', 'createBy$']} - > - <NumberField source="id" /> - <NumberField source="asnId" label="table.field.asnOrderItemLog.asnId" /> - <TextField source="asnCode" label="table.field.asnOrderItemLog.asnCode" /> - <TextField source="platItemId" label="table.field.asnOrderItemLog.platItemId" /> - <NumberField source="poDetlId" label="table.field.asnOrderItemLog.poDetlId" /> - <TextField source="poCode" label="table.field.asnOrderItemLog.poCode" /> - <TextField source="fieldsIndex" label="table.field.asnOrderItemLog.fieldsIndex" /> - <TextField source="matnrId" label="table.field.asnOrderItemLog.matnrId" /> - <TextField source="matnrCode" label="table.field.asnOrderItemLog.matnrCode" /> - <TextField source="maktx" label="table.field.asnOrderItemLog.maktx" /> - <NumberField source="anfme" label="table.field.asnOrderItemLog.anfme" /> - <NumberField source="purQty" label="table.field.asnOrderItemLog.purQty" /> - <TextField source="purUnit" label="table.field.asnOrderItemLog.purUnit" /> - <NumberField source="qty" label="table.field.asnOrderItemLog.qty" /> - <TextField source="splrCode" label="table.field.asnOrderItemLog.splrCode" /> - <TextField source="splrBatch" label="table.field.asnOrderItemLog.splrBatch" /> - <TextField source="splrName" label="table.field.asnOrderItemLog.splrName" /> - <TextField source="qrcode" label="table.field.asnOrderItemLog.qrcode" /> - <TextField source="trackCode" label="table.field.asnOrderItemLog.trackCode" /> - <TextField source="packName" label="table.field.asnOrderItemLog.packName" /> - <TextField source="ntyStatus$" label="table.field.asnOrderItemLog.ntyStatus" sortable={false} /> - <TextField source="updateBy$" label="common.field.updateBy" /> - <TextField source="createBy$" label="common.field.createBy" /> - <DateField source="createTime" label="common.field.createTime" showTime /> - <TextField source="memo" label="common.field.memo" sortable={false} /> - </StyledDatagrid> - </List> - <PageDrawer - title='AsnOrderItemLog Detail' - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - > - </PageDrawer> - </Box> - ) -} - -export default AsnOrderItemLogList; diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogCreate.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogCreate.jsx deleted file mode 100644 index cedf651..0000000 --- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogCreate.jsx +++ /dev/null @@ -1,195 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { - CreateBase, - useTranslate, - TextInput, - NumberInput, - BooleanInput, - DateInput, - SaveButton, - SelectInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, - Toolbar, - required, - useDataProvider, - useNotify, - Form, - useCreateController, -} from 'react-admin'; -import { - Dialog, - DialogActions, - DialogContent, - DialogTitle, - Stack, - Grid, - Box, -} from '@mui/material'; -import DialogCloseButton from "../components/DialogCloseButton"; -import StatusSelectInput from "../components/StatusSelectInput"; -import MemoInput from "../components/MemoInput"; - -const AsnOrderLogCreate = (props) => { - const { open, setOpen } = props; - - const translate = useTranslate(); - const notify = useNotify(); - - const handleClose = (event, reason) => { - if (reason !== "backdropClick") { - setOpen(false); - } - }; - - const handleSuccess = async (data) => { - setOpen(false); - notify('common.response.success'); - }; - - const handleError = async (error) => { - notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } }); - }; - - return ( - <> - <CreateBase - record={{}} - transform={(data) => { - return data; - }} - mutationOptions={{ onSuccess: handleSuccess, onError: handleError }} - > - <Dialog - open={open} - onClose={handleClose} - aria-labelledby="form-dialog-title" - fullWidth - disableRestoreFocus - maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' - > - <Form> - <DialogTitle id="form-dialog-title" sx={{ - position: 'sticky', - top: 0, - backgroundColor: 'background.paper', - zIndex: 1000 - }} - > - {translate('create.title')} - <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}> - <DialogCloseButton onClose={handleClose} /> - </Box> - </DialogTitle> - <DialogContent sx={{ mt: 2 }}> - <Grid container rowSpacing={2} columnSpacing={2}> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.asnOrderLog.code" - source="code" - parse={v => v} - autoFocus - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.asnOrderLog.poCode" - source="poCode" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.asnOrderLog.poId" - source="poId" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.asnOrderLog.type" - source="type" - parse={v => v} - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.asnOrderLog.wkType" - source="wkType" - parse={v => v} - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.asnOrderLog.anfme" - source="anfme" - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.asnOrderLog.qty" - source="qty" - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.asnOrderLog.logisNo" - source="logisNo" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <DateInput - label="table.field.asnOrderLog.arrTime" - source="arrTime" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <SelectInput - label="table.field.asnOrderLog.rleStatus" - source="rleStatus" - choices={[ - { id: 0, name: ' 姝e父' }, - { id: 1, name: ' 宸查噴鏀�' }, - ]} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <SelectInput - label="table.field.asnOrderLog.ntyStatus" - source="ntyStatus" - choices={[ - { id: 0, name: ' 鏈笂鎶�' }, - { id: 1, name: ' 宸蹭笂鎶�' }, - { id: 2, name: ' 閮ㄥ垎涓婃姤' }, - ]} - /> - </Grid> - - <Grid item xs={6} display="flex" gap={1}> - <StatusSelectInput /> - </Grid> - <Grid item xs={12} display="flex" gap={1}> - <Stack direction="column" spacing={1} width={'100%'}> - <MemoInput /> - </Stack> - </Grid> - </Grid> - </DialogContent> - <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> - <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} > - <SaveButton /> - </Toolbar> - </DialogActions> - </Form> - </Dialog> - </CreateBase> - </> - ) -} - -export default AsnOrderLogCreate; diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx deleted file mode 100644 index 4e61d1b..0000000 --- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx +++ /dev/null @@ -1,144 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { - Edit, - SimpleForm, - FormDataConsumer, - useTranslate, - TextInput, - NumberInput, - BooleanInput, - DateInput, - SelectInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, - SaveButton, - Toolbar, - Labeled, - NumberField, - required, - useRecordContext, - DeleteButton, -} from 'react-admin'; -import { useWatch, useFormContext } from "react-hook-form"; -import { Stack, Grid, Box, Typography, Card } from '@mui/material'; -import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; -import EditBaseAside from "../components/EditBaseAside"; -import CustomerTopToolBar from "../components/EditTopToolBar"; -import AsnOrderItemLogList from "./AsnOrderItemLogList" -const FormToolbar = () => { - return ( - <Toolbar sx={{ justifyContent: 'end' }}> - <SaveButton /> - </Toolbar> - ) -} - -const AsnOrderLogEdit = () => { - const translate = useTranslate(); - - return ( - <> - <Edit - redirect="list" - mutationMode={EDIT_MODE} - actions={<CustomerTopToolBar />} - aside={<EditBaseAside />} - > - <SimpleForm - shouldUnregister - warnWhenUnsavedChanges - toolbar={<FormToolbar />} - mode="onTouched" - defaultValues={{}} - // validate={(values) => { }} - > - <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> - <Grid item xs={24} md={12}> - <Typography variant="h6" gutterBottom> - {translate('common.edit.title.main')} - </Typography> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.asnOrderLog.code" - source="code" - parse={v => v} - readOnly - /> - <TextInput - label="table.field.asnOrderLog.poCode" - source="poCode" - readOnly - parse={v => v} - /> - <NumberInput - label="table.field.asnOrderLog.poId" - readOnly - source="poId" - /> - <TextInput - label="table.field.asnOrderLog.type" - source="type" - readOnly - parse={v => v} - validate={required()} - /> - <TextInput - label="table.field.asnOrderLog.wkType" - source="wkType" - readOnly - parse={v => v} - validate={required()} - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.asnOrderLog.anfme" - source="anfme" - readOnly - validate={required()} - /> - <NumberInput - label="table.field.asnOrderLog.qty" - source="qty" - readOnly - validate={required()} - /> - <TextInput - label="table.field.asnOrderLog.logisNo" - source="logisNo" - readOnly - parse={v => v} - /> - <DateInput - label="table.field.asnOrderLog.arrTime" - readOnly - source="arrTime" - /> - <SelectInput - label="table.field.asnOrderLog.ntyStatus" - source="ntyStatus" - readOnly - choices={[ - { id: 0, name: ' 鏈笂鎶�' }, - { id: 1, name: ' 宸蹭笂鎶�' }, - { id: 2, name: ' 閮ㄥ垎涓婃姤' }, - ]} - validate={required()} - /> - </Stack> - </Grid> - </Grid> - </SimpleForm> - </Edit > - <Grid item xs={24} md={16} sx={{ marginTop: '1em' }}> - <Typography variant="h6" gutterBottom > - {translate('common.edit.title.common')} - </Typography> - </Grid> - <AsnOrderItemLogList /> - </> - ) -} - -export default AsnOrderLogEdit; diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx deleted file mode 100644 index ceb24f6..0000000 --- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx +++ /dev/null @@ -1,170 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; -import { useNavigate } from 'react-router-dom'; -import { - List, - DatagridConfigurable, - SearchInput, - TopToolbar, - SelectColumnsButton, - EditButton, - FilterButton, - CreateButton, - ExportButton, - BulkDeleteButton, - WrapperField, - useRecordContext, - useTranslate, - useNotify, - useListContext, - FunctionField, - TextField, - NumberField, - DateField, - BooleanField, - ReferenceField, - TextInput, - DateTimeInput, - DateInput, - SelectInput, - NumberInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, - DeleteButton, -} from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; -import { styled } from '@mui/material/styles'; -import AsnOrderLogCreate from "./AsnOrderLogCreate"; -import AsnOrderLogPanel from "./AsnOrderLogPanel"; -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'; - -const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ - '& .css-1vooibu-MuiSvgIcon-root': { - height: '.9em' - }, - '& .RaDatagrid-row': { - cursor: 'auto' - }, - '& .column-name': { - }, - '& .opt': { - width: 200 - }, -})); - -const filters = [ - <SearchInput source="condition" alwaysOn />, - <TextInput source="code" label="table.field.asnOrderLog.code" />, - <TextInput source="poCode" label="table.field.asnOrderLog.poCode" />, - <NumberInput source="poId" label="table.field.asnOrderLog.poId" />, - <TextInput source="type" label="table.field.asnOrderLog.type" />, - <TextInput source="wkType" label="table.field.asnOrderLog.wkType" />, - <NumberInput source="anfme" label="table.field.asnOrderLog.anfme" />, - <NumberInput source="qty" label="table.field.asnOrderLog.qty" />, - <TextInput source="logisNo" label="table.field.asnOrderLog.logisNo" />, - <DateInput source="arrTime" label="table.field.asnOrderLog.arrTime" />, - <SelectInput source="rleStatus" label="table.field.asnOrderLog.rleStatus" - choices={[ - { id: 0, name: ' 姝e父' }, - { id: 1, name: ' 宸查噴鏀�' }, - ]} - />, - <SelectInput source="ntyStatus" label="table.field.asnOrderLog.ntyStatus" - choices={[ - { id: 0, name: ' 鏈笂鎶�' }, - { id: 1, name: ' 宸蹭笂鎶�' }, - { id: 2, name: ' 閮ㄥ垎涓婃姤' }, - ]} - />, - - <TextInput label="common.field.memo" source="memo" />, - <SelectInput - label="common.field.status" - source="status" - choices={[ - { id: '1', name: 'common.enums.statusTrue' }, - { id: '0', name: 'common.enums.statusFalse' }, - ]} - resettable - />, -] - -const AsnOrderLogList = () => { - const translate = useTranslate(); - const [createDialog, setCreateDialog] = useState(false); - const [drawerVal, setDrawerVal] = useState(false); - - return ( - <Box display="flex"> - <List - sx={{ - flexGrow: 1, - transition: (theme) => - theme.transitions.create(['all'], { - duration: theme.transitions.duration.enteringScreen, - }), - marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, - }} - title={"menu.asnOrderLog"} - empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} - filters={filters} - sort={{ field: "create_time", order: "desc" }} - actions={( - <TopToolbar> - <FilterButton /> - {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */} - <SelectColumnsButton preferenceKey='asnOrderLog' /> - <MyExportButton /> - </TopToolbar> - )} - perPage={DEFAULT_PAGE_SIZE} - > - <StyledDatagrid - preferenceKey='asnOrderLog' - bulkActionButtons={false} - rowClick={'edit'} - expand={false} - expandSingle={true} - omit={['id', 'createTime', 'createBy', 'memo', 'rleStatus']} - > - <NumberField source="id" /> - <TextField source="code" label="table.field.asnOrderLog.code" /> - <TextField source="poCode" label="table.field.asnOrderLog.poCode" /> - <NumberField source="poId" label="table.field.asnOrderLog.poId" /> - <TextField source="type$" label="table.field.asnOrderLog.type" /> - <TextField source="wkType$" label="table.field.asnOrderLog.wkType" /> - <NumberField source="anfme" label="table.field.asnOrderLog.anfme" /> - <NumberField source="qty" label="table.field.asnOrderLog.qty" /> - <TextField source="logisNo" label="table.field.asnOrderLog.logisNo" /> - <DateField source="arrTime" label="table.field.asnOrderLog.arrTime" showTime /> - <TextField source="rleStatus$" label="table.field.asnOrderLog.rleStatus" sortable={false} /> - <TextField source="ntyStatus$" label="table.field.asnOrderLog.ntyStatus" sortable={false} /> - <TextField source="updateBy$" label="common.field.updateBy" /> - <DateField source="updateTime" label="common.field.updateTime" showTime /> - <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} /> - </StyledDatagrid> - </List> - <AsnOrderLogCreate - open={createDialog} - setOpen={setCreateDialog} - /> - <PageDrawer - title='AsnOrderLog Detail' - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - > - </PageDrawer> - </Box> - ) -} - -export default AsnOrderLogList; diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx deleted file mode 100644 index 1058e9d..0000000 --- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx +++ /dev/null @@ -1,143 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { Box, Card, CardContent, Grid, Typography, Button, TextField, Tooltip, Paper, TableContainer, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material'; -import { - useTranslate, - useRecordContext, - useNotify, - useRefresh, - useListContext, -} from 'react-admin'; -import PanelTypography from "../components/PanelTypography"; -import * as Common from '@/utils/common' -import { styled } from "@mui/material/styles"; -import request from '@/utils/request'; -import debounce from 'lodash/debounce'; -import { DataGrid } from '@mui/x-data-grid'; - -const AsnOrderLogPanel = () => { - const record = useRecordContext(); - if (!record) return null; - const translate = useTranslate(); - const notify = useNotify(); - const [rows, setRows] = useState([]); - const [maktx, setMaktx] = useState(''); - const asnId = record.asnId; - - useEffect(() => { - debouncedHttp({ maktx }); - }, [asnId, maktx]); - - - const http = async (parmas) => { - const res = await request.post('/asnOrderItemLog/page', { ...parmas, asnId }); - if (res?.data?.code === 200) { - setRows(res.data.data.records) - } else { - notify(res.data.msg); - } - } - - const debouncedHttp = useMemo(() => debounce(http, 300), []); - - const columns = [ - { - field: 'asnId', - headerName: translate('table.field.asnOrderItemLog.asnId') - }, - { - field: 'asnCode', - headerName: translate('table.field.asnOrderItemLog.asnCode') - }, - { - field: 'poDetlId', - headerName: translate('table.field.asnOrderItemLog.poDetlId') - }, - { - field: 'poCode', - headerName: translate('table.field.asnOrderItemLog.poDetlCode') - }, - { - field: 'matnrId', - headerName: translate('table.field.asnOrderItemLog.matnrId') - }, - { - field: 'matnrCode', - headerName: translate('table.field.asnOrderItemLog.matnrCode') - }, - { - field: 'maktx', - headerName: translate('table.field.asnOrderItemLog.maktx') - }, - { - field: 'anfme', - headerName: translate('table.field.asnOrderItemLog.purQty') - }, - { - field: 'purUnit', - headerName: translate('table.field.asnOrderItemLog.purUnit') - }, - { - field: 'qty', - headerName: translate('table.field.asnOrderItemLog.qty') - }, - { - field: 'splrBatch', - headerName: translate('table.field.asnOrderItem.splrBatch') - }, - { - field: 'splrCode', - headerName: translate('table.field.asnOrderItemLog.splrCode') - }, - { - field: 'splrName', - headerName: translate('table.field.asnOrderItemLog.splrName') - }, - { - field: 'trackCode', - headerName: translate('table.field.asnOrderItemLog.barcode') - }, - { - field: 'prodTime', - headerName: translate('table.field.asnOrderItem.prodTime') - }, - { - field: 'packName', - headerName: translate('table.field.asnOrderItemLog.packName') - }, - { - field: 'ntyStatus$', - headerName: translate('table.field.asnOrderItemLog.ntyStatus') - }] - - const maktxChange = (value) => { - setMaktx(value) - } - - return ( - <Box sx={{ - position: 'relative', - padding: '5px 10px' - }}> - - <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '4px', alignItems: 'center' }}> - <TextField value={maktx} onChange={(e) => maktxChange(e.target.value)} label="鎼滅储鐗╂枡" variant="outlined" sx={{ width: '300px' }} size="small" /> - - <div style={{ display: 'flex', gap: '10px' }}> - </div> - </div> - - - <DataGrid - size="small" - rows={rows} - columns={columns} - disableRowSelectionOnClick - disableColumnMenu={true} - disableColumnSorting - disableMultipleColumnsSorting - /> - </Box > - ); -}; - -export default AsnOrderLogPanel; diff --git a/rsf-admin/src/page/asnOrderLog/index.jsx b/rsf-admin/src/page/asnOrderLog/index.jsx deleted file mode 100644 index e292c57..0000000 --- a/rsf-admin/src/page/asnOrderLog/index.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { - ListGuesser, - EditGuesser, - ShowGuesser, -} from "react-admin"; - -import AsnOrderLogList from "./AsnOrderLogList"; -import AsnOrderLogEdit from "./AsnOrderLogEdit"; - -export default { - list: AsnOrderLogList, - edit: AsnOrderLogEdit, - show: ShowGuesser, - recordRepresentation: (record) => { - return `${record.id}` - } -}; diff --git a/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx b/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx index 895ebc6..d44da31 100644 --- a/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx +++ b/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx @@ -28,12 +28,13 @@ import CustomerTopToolBar from "../components/EditTopToolBar"; import MemoInput from "../components/MemoInput"; import StatusSelectInput from "../components/StatusSelectInput"; +import QlyIsptItemList from "./QlyIsptItemList"; const FormToolbar = () => { const { getValues } = useFormContext(); return ( - <Toolbar sx={{ justifyContent: 'space-between' }}> + <Toolbar sx={{ justifyContent: 'end' }}> <SaveButton /> <DeleteButton mutationMode="optimistic" /> </Toolbar> @@ -42,86 +43,82 @@ const QlyInspectEdit = () => { const translate = useTranslate(); + const business = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || []; return ( - <Edit - redirect="list" - mutationMode={EDIT_MODE} - actions={<CustomerTopToolBar />} - aside={<EditBaseAside />} - > - <SimpleForm - shouldUnregister - warnWhenUnsavedChanges - toolbar={<FormToolbar />} - mode="onTouched" - defaultValues={{}} - // validate={(values) => { }} + <> + <Edit + redirect="list" + mutationMode={EDIT_MODE} + actions={<CustomerTopToolBar />} + aside={<EditBaseAside />} > - <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> - <Grid item xs={12} md={8}> - <Typography variant="h6" gutterBottom> - {translate('common.edit.title.main')} - </Typography> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.qlyInspect.asnItemId" - source="asnItemId" - autoFocus - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.qlyInspect.code" - source="code" - parse={v => v} - validate={required()} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.qlyInspect.wkType" - source="wkType" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.qlyInspect.safeQty" - source="safeQty" - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.qlyInspect.dlyQty" - source="dlyQty" - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.qlyInspect.rcptQty" - source="rcptQty" - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.qlyInspect.isptQty" - source="isptQty" - /> - </Stack> + <SimpleForm + shouldUnregister + warnWhenUnsavedChanges + toolbar={<FormToolbar />} + mode="onTouched" + defaultValues={{}} + > + <Grid container width={{ xs: '100%', xl: '100%' }}> + <Grid item xs={24} md={12}> + <Typography variant="h6" gutterBottom> + {translate('common.edit.title.main')} + </Typography> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.qlyInspect.asnCode" + source="asnCode" + readOnly + /> + <TextInput + label="table.field.qlyInspect.code" + source="code" + parse={v => v} + readOnly + validate={required()} + /> + <AutocompleteInput + choices={business} + optionText="label" + label="table.field.asnOrder.wkType" + source="wkType" + readOnly + optionValue="value" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.qlyInspect.safeQty" + source="safeQty" + readOnly + /> + <NumberInput + label="table.field.qlyInspect.dlyQty" + source="dlyQty" + readOnly + /> + <NumberInput + label="table.field.qlyInspect.rcptQty" + source="rcptQty" + readOnly + + /> + <NumberInput + label="table.field.qlyInspect.isptQty" + source="isptQty" + readOnly + + /> + </Stack> + </Grid> </Grid> - <Grid item xs={12} md={4}> - <Typography variant="h6" gutterBottom> - {translate('common.edit.title.common')} - </Typography> - <StatusSelectInput /> - <Box mt="2em" /> - <MemoInput /> - </Grid> - </Grid> - </SimpleForm> - </Edit > + </SimpleForm> + </Edit > + <QlyIsptItemList /> + </> ) } diff --git a/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx b/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx index 5a0bbc3..76c6410 100644 --- a/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx +++ b/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx @@ -128,8 +128,7 @@ <StyledDatagrid preferenceKey='qlyInspect' bulkActionButtons={<BulkDeleteButton mutationMode={OPERATE_MODE} />} - rowClick={(id, resource, record) => false} - expand={() => <QlyInspectPanel />} + rowClick='edit' expandSingle={true} omit={['id', 'createTime', 'createBy', 'memo', 'asnId', 'statusBool']} > @@ -143,14 +142,9 @@ <NumberField source="dlyQty" label="table.field.qlyInspect.dlyQty" /> <NumberField source="rcptQty" label="table.field.qlyInspect.rcptQty" /> <NumberField source="isptQty" label="table.field.qlyInspect.isptQty" /> - - <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} /> diff --git a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx b/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx index ff12b3d..fa17cff 100644 --- a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx +++ b/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx @@ -88,7 +88,6 @@ const QlyIsptItemList = () => { const translate = useTranslate(); - const [createDialog, setCreateDialog] = useState(false); const [drawerVal, setDrawerVal] = useState(false); diff --git a/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx b/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx index 9f5bad2..f41049c 100644 --- a/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx +++ b/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx @@ -43,7 +43,7 @@ import MyCreateButton from "../../../components/MyCreateButton"; import MyExportButton from '../../../components/MyExportButton'; import PageDrawer from "../../../components/PageDrawer"; -import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; +import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting'; import DictDataEdit from "./DictDataEdit"; import { use } from "react"; @@ -117,7 +117,7 @@ <MyExportButton /> </TopToolbar> )} - perPage={DEFAULT_PAGE_SIZE} + perPage={DEFAULT_ITEM_PAGE_SIZE} > <StyledDatagrid bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} @@ -140,7 +140,7 @@ <BooleanField source="statusBool" label="common.field.status" sortable={false} /> <TextField source="memo" label="common.field.memo" sortable={false} /> <WrapperField cellClassName="opt" label="common.field.opt"> - <Button onClick={() => { setEditDialog(true) }}>缂栬緫</Button> + <Button onClick={() => { setEditDialog(true) }} label="ra.action.edit"></Button> <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode='pessimistic' redirect={"/dictType/" + dictId} /> </WrapperField> </StyledDatagrid> diff --git a/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx b/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx index 93a66e4..91fcd56 100644 --- a/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx +++ b/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx @@ -2,38 +2,29 @@ import { Edit, SimpleForm, - FormDataConsumer, useTranslate, TextInput, NumberInput, - BooleanInput, - DateInput, SelectInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, SaveButton, Toolbar, - Labeled, - NumberField, - required, - useRecordContext, DeleteButton, } from 'react-admin'; import { useWatch, useFormContext } from "react-hook-form"; 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 WaitPakinItem from "../waitPakinItem"; +import WaitPakinItemList from "../waitPakinItem/WaitPakinItemList"; const FormToolbar = () => { const { getValues } = useFormContext(); return ( - <Toolbar sx={{ justifyContent: 'space-between' }}> + <Toolbar sx={{ justifyContent: 'end' }}> <SaveButton /> <DeleteButton mutationMode="optimistic" /> </Toolbar> @@ -44,82 +35,79 @@ const translate = useTranslate(); return ( - <Edit - redirect="list" - mutationMode={EDIT_MODE} - actions={<CustomerTopToolBar />} - aside={<EditBaseAside />} - > - <SimpleForm - shouldUnregister - warnWhenUnsavedChanges - toolbar={<FormToolbar />} - mode="onTouched" - defaultValues={{}} - // validate={(values) => { }} + <> + <Edit + redirect="list" + mutationMode={EDIT_MODE} + actions={<CustomerTopToolBar />} + aside={<EditBaseAside />} > - <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> - <Grid item xs={12} md={8}> - <Typography variant="h6" gutterBottom> - {translate('common.edit.title.main')} - </Typography> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.waitPakin.code" - source="code" - parse={v => v} - autoFocus - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.waitPakin.ansId" - source="ansId" - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.waitPakin.asnCode" - source="asnCode" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.waitPakin.barcode" - source="barcode" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.waitPakin.anfme" - source="anfme" - /> - </Stack> - <Stack direction='row' gap={2}> - <SelectInput - label="table.field.waitPakin.ioStatus" - source="ioStatus" - choices={[ - { id: 0, name: '寰呭叆搴�' }, - { id: 1, name: ' 鍏ュ簱涓�' }, - ]} - /> - </Stack> - + <SimpleForm + shouldUnregister + warnWhenUnsavedChanges + toolbar={<FormToolbar />} + mode="onTouched" + defaultValues={{}} + > + <Grid container width={{ xs: '100%', xl: '100%' }}> + <Grid item xs={12} md={8}> + <Typography variant="h6" gutterBottom> + {translate('common.edit.title.main')} + </Typography> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.waitPakin.code" + source="code" + readOnly + parse={v => v} + autoFocus + /> + <NumberInput + label="table.field.waitPakin.ansId" + readOnly + source="ansId" + /> + <TextInput + label="table.field.waitPakin.asnCode" + readOnly + source="asnCode" + parse={v => v} + /> + <SelectInput + label="table.field.waitPakin.flagDefect" + readOnly + source="flagDefect" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.waitPakin.barcode" + readOnly + source="barcode" + parse={v => v} + /> + <NumberInput + label="table.field.waitPakin.anfme" + readOnly + source="anfme" + /> + <SelectInput + label="table.field.waitPakin.ioStatus" + readOnly + source="ioStatus" + choices={[ + { id: 0, name: '寰呭叆搴�' }, + { id: 1, name: ' 鍏ュ簱涓�' }, + ]} + /> + </Stack> + </Grid> </Grid> - <Grid item xs={12} md={4}> - <Typography variant="h6" gutterBottom> - {translate('common.edit.title.common')} - </Typography> - <StatusSelectInput /> - <Box mt="2em" /> - <MemoInput /> - </Grid> - </Grid> - </SimpleForm> - </Edit > + </SimpleForm> + </Edit > + <WaitPakinItemList /> + </> ) } diff --git a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx index 11405c2..39739cc 100644 --- a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx +++ b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx @@ -39,12 +39,9 @@ import WaitPakinCreate from "./WaitPakinCreate"; import WaitPakinPanel from "./WaitPakinPanel"; 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 AddIcon from '@mui/icons-material/Add'; import request from '@/utils/request'; @@ -64,7 +61,6 @@ const filters = [ <SearchInput source="condition" alwaysOn />, - <TextInput source="code" label="table.field.waitPakin.code" />, <NumberInput source="ansId" label="table.field.waitPakin.ansId" />, <TextInput source="asnCode" label="table.field.waitPakin.asnCode" />, @@ -76,7 +72,6 @@ { id: 1, name: ' 鍏ュ簱涓�' }, ]} />, - <TextInput label="common.field.memo" source="memo" />, <SelectInput label="common.field.status" @@ -91,7 +86,6 @@ const WaitPakinList = () => { const translate = useTranslate(); - const [createDialog, setCreateDialog] = useState(false); const [drawerVal, setDrawerVal] = useState(false); @@ -113,7 +107,6 @@ actions={( <TopToolbar> <FilterButton /> - {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */} <SelectColumnsButton preferenceKey='waitPakin' /> <MyExportButton /> </TopToolbar> @@ -123,8 +116,8 @@ <StyledDatagrid preferenceKey='waitPakin' bulkActionButtons={<> <CreateTaskButton /> <BulkDeleteButton mutationMode={OPERATE_MODE} /></>} - rowClick={(id, resource, record) => false} - expand={() => <WaitPakinPanel />} + rowClick='edit' + expand={false} expandSingle={true} omit={['id', 'createTime', 'createBy', 'memo']} > @@ -135,20 +128,14 @@ <TextField source="barcode" label="table.field.waitPakin.barcode" /> <NumberField source="anfme" label="table.field.waitPakin.anfme" /> <TextField source="ioStatus$" label="table.field.waitPakin.ioStatus" sortable={false} /> - - <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 /> - <ReferenceField source="createBy" label="common.field.createBy" 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 /> <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 cellClassName="opt" label="common.field.opt"> - {/* <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> */} - <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> + <EditButton label="toolbar.detail" sx={{ padding: '1px', fontSize: '.75rem' }} /> + {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */} </WrapperField> </StyledDatagrid> </List> diff --git a/rsf-admin/src/page/waitPakinItem/WaitPakinItemList.jsx b/rsf-admin/src/page/waitPakinItem/WaitPakinItemList.jsx index 6cbc531..9d8f88f 100644 --- a/rsf-admin/src/page/waitPakinItem/WaitPakinItemList.jsx +++ b/rsf-admin/src/page/waitPakinItem/WaitPakinItemList.jsx @@ -31,6 +31,7 @@ ReferenceArrayInput, AutocompleteInput, DeleteButton, + useGetRecordId, } from 'react-admin'; import { Box, Typography, Card, Stack } from '@mui/material'; import { styled } from '@mui/material/styles'; @@ -41,7 +42,7 @@ 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 { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting'; import * as Common from '@/utils/common'; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ @@ -60,7 +61,6 @@ const filters = [ <SearchInput source="condition" alwaysOn />, - <NumberInput source="pakinId" label="table.field.waitPakinItem.pakinId" />, <TextInput source="maktx" label="table.field.waitPakinItem.maktx" />, <NumberInput source="matnrId" label="table.field.waitPakinItem.matnrId" />, @@ -71,7 +71,6 @@ <TextInput source="fieldsIndex" label="table.field.waitPakinItem.fieldsIndex" />, <NumberInput source="qty" label="table.field.waitPakinItem.qty" />, <TextInput source="batch" label="table.field.waitPakinItem.batch" />, - <TextInput label="common.field.memo" source="memo" />, <SelectInput label="common.field.status" @@ -86,13 +85,15 @@ const WaitPakinItemList = () => { const translate = useTranslate(); - const [createDialog, setCreateDialog] = useState(false); const [drawerVal, setDrawerVal] = useState(false); + const pakinId = useGetRecordId(); return ( <Box display="flex"> <List + resource="waitPakinItem" + filter={{pakinId: pakinId}} sx={{ flexGrow: 1, transition: (theme) => @@ -113,7 +114,7 @@ <MyExportButton /> </TopToolbar> )} - perPage={DEFAULT_PAGE_SIZE} + perPage={DEFAULT_ITEM_PAGE_SIZE} > <StyledDatagrid preferenceKey='waitPakinItem' @@ -132,21 +133,13 @@ <TextField source="fieldsIndex" label="table.field.waitPakinItem.fieldsIndex" /> <NumberField source="qty" label="table.field.waitPakinItem.qty" /> <TextField source="batch" label="table.field.waitPakinItem.batch" /> - - <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" /> + <TextField source="flagDefect" 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 cellClassName="opt" label="common.field.opt"> - {/* <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> */} - <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> - </WrapperField> </StyledDatagrid> </List> <WaitPakinItemCreate diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java index ddeb48c..c0d588d 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java @@ -145,6 +145,7 @@ @ApiOperation("缁勬嫋") @PostMapping("/waitPakin/merge") public R pikinOrder(@RequestBody WaitPakinParam waitPakin) { + Long userId = getLoginUserId(); if (Objects.isNull(waitPakin)) { return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } @@ -154,7 +155,7 @@ if (Objects.isNull(waitPakin.getItems()) || waitPakin.getItems().isEmpty()) { return R.error("璺熻釜鐮佷笉鑳戒负绌猴紒锛�"); } - return R.ok(mobileService.mergeItems(waitPakin)); + return R.ok(mobileService.mergeItems(waitPakin, userId)); } @PreAuthorize("hasAuthority('manager:waitPakin:update')") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java index ab4daa7..932f558 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java @@ -38,7 +38,7 @@ R getDeltByCode(String code); - WaitPakin mergeItems(WaitPakinParam waitPakin); + WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId); WaitPakin unBind(WaitPakinParam param); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index c8cd598..5dd5d83 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -16,7 +16,6 @@ import com.vincent.rsf.server.common.security.JwtSubject; import com.vincent.rsf.server.common.utils.CommonUtil; import com.vincent.rsf.server.common.utils.FieldsUtils; -import com.vincent.rsf.server.common.utils.JSONUtil; import com.vincent.rsf.server.common.utils.JwtUtil; import com.vincent.rsf.server.manager.controller.params.IsptItemsParams; import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; @@ -32,13 +31,10 @@ import com.vincent.rsf.server.system.entity.*; import com.vincent.rsf.server.system.mapper.FieldsMapper; import com.vincent.rsf.server.system.mapper.TenantMapper; -import com.vincent.rsf.server.system.mapper.UserMapper; import com.vincent.rsf.server.system.service.FieldsItemService; import com.vincent.rsf.server.system.service.UserLoginService; import com.vincent.rsf.server.system.service.UserService; -import com.vincent.rsf.server.system.utils.ExtendFieldsUtils; import com.vincent.rsf.server.system.utils.SerialRuleUtils; -import net.sf.jsqlparser.statement.select.Wait; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -48,7 +44,6 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -370,7 +365,8 @@ */ @Override public R getReceiptAreas() { - return R.ok(warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type))); + List<WarehouseAreas> areas = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type)); + return R.ok(areas); } /** @@ -403,15 +399,16 @@ } /** + * @param + * @param userId + * @return * @author Ryan * @description PDA缁勬嫋 - * @param - * @return * @time 2025/3/29 14:26 */ @Override - public WaitPakin mergeItems(WaitPakinParam waitPakin) { - return waitPakinService.mergeItems(waitPakin); + public WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId) { + return waitPakinService.mergeItems(waitPakin, userId); } /** diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java index 32752f4..f6a22fb 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java @@ -6,7 +6,7 @@ public interface WaitPakinService extends IService<WaitPakin> { - WaitPakin mergeItems(WaitPakinParam waitPakin); + WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId); WaitPakin unBind(WaitPakinParam param); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java index 07e3d46..4ab88da 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.manager.controller.params.PakinItem; import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; @@ -16,7 +15,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -41,15 +39,16 @@ private LocService locService; /** + * @param + * @param userId + * @return * @author Ryan * @description 缁勬嫋 - * @param - * @return * @time 2025/3/29 14:42 */ @Override @Transactional(rollbackFor = Exception.class) - public WaitPakin mergeItems(WaitPakinParam waitPakin) { + public WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId) { if (waitPakin.getItems().isEmpty()) { throw new CoolException("鍙傛暟閿欒锛氱墿鏂欒窡韪爜涓虹┖锛�"); } @@ -125,6 +124,8 @@ .setFieldsIndex(item.getFieldsIndex()) .setMatnrId(item.getMatnrId()) .setMaktx(item.getMaktx()) + .setUpdateBy(userId) + .setCreateBy(userId) .setMatnrCode(item.getMatnrCode()); for (PakinItem waitPakinItem : waitPakin.getItems()) { if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) { @@ -159,6 +160,8 @@ .setFieldsIndex(item.getFieldsIndex()) .setMatnrId(item.getMatnrId()) .setMaktx(item.getMaktx()) + .setUpdateBy(userId) + .setCreateBy(userId) .setMatnrCode(item.getMatnrCode()); for (PakinItem waitPakinItem : waitPakin.getItems()) { if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) { -- Gitblit v1.9.1