From 4e7c6e216f9bb759d755bc5557ffedeb8e5f880d Mon Sep 17 00:00:00 2001 From: verou <857149855@qq.com> Date: 星期三, 12 三月 2025 09:40:26 +0800 Subject: [PATCH] feat:po asn btn --- rsf-admin/src/page/asnOrder/AsnOrderList.jsx | 180 ++++------- rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx | 275 ++++++---------- rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx | 283 ++++++----------- rsf-admin/src/i18n/zh.js | 11 rsf-admin/src/i18n/en.js | 7 rsf-admin/src/page/purchase/PurchaseList.jsx | 169 +++------ 6 files changed, 348 insertions(+), 577 deletions(-) diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index 7b12baf..5dd4825 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -553,7 +553,12 @@ shipper: 'shipper is required', groupId: 'groupId is required', } - } + }, + toolbar: { + inspection: "Inspection", + creatcode: "creatcode", + print: "print", + }, }; export default customEnglishMessages; diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index 1551bc2..5f853f8 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -411,7 +411,7 @@ wkType: "涓氬姟绫诲瀷", anfme: "鏁伴噺", qty: "宸插畬鎴愭暟閲�", - logisNo: "logisNo", + logisNo: "鐗╂祦鍗曞彿", arrTime: "棰勮鍒拌揪鏃堕棿", rleStatus: "閲婃斁鐘舵��", ntyStatus: "璐ㄦ涓婃姤鐘舵��", @@ -460,7 +460,7 @@ anfme: "鏁伴噺", qty: "宸插畬鎴�", nromQty: "鏍囧寘鏁伴噺", - asnQty: "鍗曟嵁鏁伴噺", + asnQty: "鍗曟嵁鏁伴噺", printQty: "鎵撳嵃鏁伴噺", splrName: "渚涘簲鍟嗗悕绉�", splrCode: "渚涘簲鍟嗙紪鐮�", @@ -555,7 +555,12 @@ shipper: '璐т富涓嶈兘涓虹┖', groupId: '鍒嗙粍涓嶈兘涓虹┖', } - } + }, + toolbar: { + inspection: "鎶ユ", + creatcode: "鐢熸垚鏉$爜", + print: "鎵撳嵃", + }, }; export default customChineseMessages; diff --git a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx index 57ee098..b032abd 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx @@ -1,11 +1,5 @@ -import React, { - useState, - useRef, - useEffect, - useMemo, - useCallback, -} from "react"; -import { useNavigate } from "react-router-dom"; +import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; +import { useNavigate } from 'react-router-dom'; import { List, DatagridConfigurable, @@ -37,36 +31,34 @@ ReferenceArrayInput, AutocompleteInput, DeleteButton, - Button, -} from "react-admin"; -import { Box, Typography, Card, Stack } from "@mui/material"; -import { styled } from "@mui/material/styles"; + Button +} from 'react-admin'; +import { Box, Typography, Card, Stack } from '@mui/material'; +import { styled } from '@mui/material/styles'; import AsnOrderCreate from "./AsnOrderCreate"; import AsnOrderPanel from "./AsnOrderPanel"; import EmptyData from "../components/EmptyData"; import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from "../components/MyExportButton"; +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 ConstructionIcon from "@mui/icons-material/Construction"; import UploadloadIcon from "@mui/icons-material/Upload"; -import { - PAGE_DRAWER_WIDTH, - OPERATE_MODE, - DEFAULT_PAGE_SIZE, -} from "@/config/setting"; -import * as Common from "@/utils/common"; +import FileDownloadIcon from '@mui/icons-material/FileDownload'; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ - "& .css-1vooibu-MuiSvgIcon-root": { - height: ".9em", + '& .css-1vooibu-MuiSvgIcon-root': { + height: '.9em' }, - "& .RaDatagrid-row": { - cursor: "auto", + '& .RaDatagrid-row': { + cursor: 'auto' }, - "& .column-name": {}, - "& .opt": { - width: 200, + '& .column-name': { + }, + '& .opt': { + width: 200 }, })); @@ -82,27 +74,24 @@ <NumberInput source="qty" label="table.field.asnOrder.qty" />, <TextInput source="logisNo" label="table.field.asnOrder.logisNo" />, <DateInput source="arrTime" label="table.field.asnOrder.arrTime" />, - <SelectInput - source="rleStatus" - label="table.field.asnOrder.rleStatus" + <SelectInput source="rleStatus" label="table.field.asnOrder.rleStatus" choices={[ - { id: 0, name: " 姝e父" }, - { id: 1, name: " 宸查噴鏀�" }, + { id: 0, name: ' 姝e父' }, + { id: 1, name: ' 宸查噴鏀�' }, ]} />, - <TextInput source="name" label="table.field.asnOrder.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" }, + { id: '1', name: 'common.enums.statusTrue' }, + { id: '0', name: 'common.enums.statusFalse' }, ]} resettable />, -]; +] const AsnOrderList = () => { const translate = useTranslate(); @@ -115,8 +104,10 @@ navigate(`/asnOrderItem?asnId=${record.id}`); }; - const importList = () => {}; - const inspection = () => {}; + const importList = () => { }; + const inspection = () => { }; + + const print = () => { }; return ( <Box display="flex"> @@ -124,55 +115,49 @@ sx={{ flexGrow: 1, transition: (theme) => - theme.transitions.create(["all"], { + theme.transitions.create(['all'], { duration: theme.transitions.duration.enteringScreen, }), marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, }} title={"menu.asnOrder"} - empty={ - <EmptyData - onClick={() => { - setCreateDialog(true); - }} - /> - } + empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} filters={filters} sort={{ field: "create_time", order: "desc" }} - actions={ + actions={( <TopToolbar> - <Button onClick={importList} label={"toolbar.inspection"}> + <Button onClick={importList} label={"ra.action.import"}> <UploadloadIcon /> </Button> - <Button onClick={inspection} label={"ra.action.import"}> + <Button onClick={inspection} label={"toolbar.inspection"}> <ConstructionIcon /> </Button> - <FilterButton /> - <MyCreateButton - onClick={() => { - setCreateDialog(true); - }} - /> - <SelectColumnsButton preferenceKey="asnOrder" /> + <MyCreateButton onClick={() => { setCreateDialog(true) }} /> + <SelectColumnsButton preferenceKey='asnOrder' /> <MyExportButton /> </TopToolbar> - } + )} perPage={DEFAULT_PAGE_SIZE} > <StyledDatagrid - preferenceKey="asnOrder" - bulkActionButtons={() => ( - <BulkDeleteButton mutationMode={OPERATE_MODE} /> - )} + preferenceKey='asnOrder' + bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} rowClick={(id, resource, record) => false} expand={() => <AsnOrderPanel />} expandSingle={true} - omit={["id", "createTime", "createBy", "memo"]} + omit={['id', 'createTime', 'createBy', 'memo']} > <NumberField source="id" /> - <TextField source="code" label="table.field.asnOrder.code" /> + <MyField + source="code" + label="table.field.asnOrder.code" + onClick={(event, record, val) => { + event.stopPropagation(); + assign(record); + }} + /> <TextField source="poCode" label="table.field.asnOrder.poCode" /> <NumberField source="poId" label="table.field.asnOrder.poId" /> <TextField source="type" label="table.field.asnOrder.type" /> @@ -180,69 +165,40 @@ <NumberField source="anfme" label="table.field.asnOrder.anfme" /> <NumberField source="qty" label="table.field.asnOrder.qty" /> <TextField source="logisNo" label="table.field.asnOrder.logisNo" /> - <DateField - source="arrTime" - label="table.field.asnOrder.arrTime" - showTime - /> - <TextField - source="rleStatus$" - label="table.field.asnOrder.rleStatus" - sortable={false} - /> - <TextField source="name" label="table.field.asnOrder.name" /> + <DateField source="arrTime" label="table.field.asnOrder.arrTime" showTime /> + <TextField source="rleStatus$" label="table.field.asnOrder.rleStatus" sortable={false} /> - <ReferenceField - source="updateBy" - label="common.field.updateBy" - reference="user" - link={false} - 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} - > + <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> - <DateField - source="createTime" - label="common.field.createTime" - showTime - /> - <BooleanField - source="statusBool" - label="common.field.status" - sortable={false} - /> + <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} - /> + <Button label="toolbar.print" onClick={print}> + <FileDownloadIcon /> + </Button> + <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> + <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> </WrapperField> </StyledDatagrid> </List> - <AsnOrderCreate open={createDialog} setOpen={setCreateDialog} /> + <AsnOrderCreate + open={createDialog} + setOpen={setCreateDialog} + /> <PageDrawer - title="AsnOrder Detail" + title='AsnOrder Detail' drawerVal={drawerVal} setDrawerVal={setDrawerVal} - ></PageDrawer> + > + </PageDrawer> </Box> - ); -}; + ) +} export default AsnOrderList; diff --git a/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx b/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx index df78071..31ffd1d 100644 --- a/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx +++ b/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx @@ -1,11 +1,5 @@ -import React, { - useState, - useRef, - useEffect, - useMemo, - useCallback, -} from "react"; -import { useNavigate, useLocation } from "react-router-dom"; +import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; +import { useNavigate, useLocation } from 'react-router-dom'; import { List, DatagridConfigurable, @@ -37,35 +31,33 @@ ReferenceArrayInput, AutocompleteInput, DeleteButton, - Button, -} from "react-admin"; -import { Box, Typography, Card, Stack } from "@mui/material"; -import { styled } from "@mui/material/styles"; + Button +} from 'react-admin'; +import { Box, Typography, Card, Stack } from '@mui/material'; +import { styled } from '@mui/material/styles'; import AsnOrderItemCreate from "./AsnOrderItemCreate"; import AsnOrderItemPanel from "./AsnOrderItemPanel"; import EmptyData from "../components/EmptyData"; import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from "../components/MyExportButton"; +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 CustomerTopToolBar from "../components/EditTopToolBar"; import QrCodeIcon from "@mui/icons-material/QrCode"; -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", + '& .css-1vooibu-MuiSvgIcon-root': { + height: '.9em' }, - "& .RaDatagrid-row": { - cursor: "auto", + '& .RaDatagrid-row': { + cursor: 'auto' }, - "& .column-name": {}, - "& .opt": { - width: 200, + '& .column-name': { + }, + '& .opt': { + width: 200 }, })); @@ -94,12 +86,12 @@ label="common.field.status" source="status" choices={[ - { id: "1", name: "common.enums.statusTrue" }, - { id: "0", name: "common.enums.statusFalse" }, + { id: '1', name: 'common.enums.statusTrue' }, + { id: '0', name: 'common.enums.statusFalse' }, ]} resettable />, -]; +] const AsnOrderItemList = () => { const translate = useTranslate(); @@ -109,160 +101,95 @@ const location = useLocation(); const queryParams = new URLSearchParams(location.search); - const ruleId = queryParams.get("ruleId"); + const asnId = queryParams.get("asnId"); - const creatCode = () => {}; + const creatCode = () => { }; 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.asnOrderItem"} - empty={ - <EmptyData - onClick={() => { - setCreateDialog(true); - }} - /> - } - filters={filters} - sort={{ field: "create_time", order: "desc" }} - actions={ - <TopToolbar> - <Button onClick={creatCode} label={"toolbar.creatcode"}> - <QrCodeIcon /> - </Button> - <FilterButton /> - <MyCreateButton - onClick={() => { - setCreateDialog(true); - }} - /> - <SelectColumnsButton preferenceKey="asnOrderItem" /> - <MyExportButton /> - </TopToolbar> - } - perPage={DEFAULT_PAGE_SIZE} - > - <StyledDatagrid - preferenceKey="asnOrderItem" - bulkActionButtons={() => ( - <BulkDeleteButton mutationMode={OPERATE_MODE} /> + <> + {asnId && <CustomerTopToolBar backPrevious={true} />} + <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.asnOrderItem"} + empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} + filters={filters} + sort={{ field: "create_time", order: "desc" }} + actions={( + <TopToolbar> + <Button onClick={creatCode} label={"toolbar.creatcode"}> + <QrCodeIcon /> + </Button> + <FilterButton /> + <MyCreateButton onClick={() => { setCreateDialog(true) }} /> + <SelectColumnsButton preferenceKey='asnOrderItem' /> + <MyExportButton /> + </TopToolbar> )} - rowClick={(id, resource, record) => false} - expand={() => <AsnOrderItemPanel />} - expandSingle={true} - omit={["id", "createTime", "createBy", "memo"]} + perPage={DEFAULT_PAGE_SIZE} > - <NumberField source="id" /> - <NumberField source="asnId" label="table.field.asnOrderItem.asnId" /> - <TextField - source="asnCode" - label="table.field.asnOrderItem.asnCode" - /> - <TextField - source="poDetlId" - label="table.field.asnOrderItem.poDetlId" - /> - <TextField - source="poDetlCode" - label="table.field.asnOrderItem.poDetlCode" - /> - <TextField - source="matnrId" - label="table.field.asnOrderItem.matnrId" - /> - <TextField source="matnk" label="table.field.asnOrderItem.matnk" /> - <NumberField source="anfme" label="table.field.asnOrderItem.anfme" /> - <TextField - source="stockUnit" - label="table.field.asnOrderItem.stockUnit" - /> - <NumberField - source="purQty" - label="table.field.asnOrderItem.purQty" - /> - <TextField - source="purUnit" - label="table.field.asnOrderItem.purUnit" - /> - <NumberField source="qty" label="table.field.asnOrderItem.qty" /> - <TextField - source="splrCode" - label="table.field.asnOrderItem.splrCode" - /> - <TextField - source="splrName" - label="table.field.asnOrderItem.splrName" - /> - <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" /> - <TextField - source="barcode" - label="table.field.asnOrderItem.barcode" - /> - <TextField - source="packName" - label="table.field.asnOrderItem.packName" - /> + <StyledDatagrid + preferenceKey='asnOrderItem' + bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} + rowClick={(id, resource, record) => false} + expand={() => <AsnOrderItemPanel />} + expandSingle={true} + omit={['id', 'createTime', 'createBy', 'memo']} + > + <NumberField source="id" /> + <NumberField source="asnId" label="table.field.asnOrderItem.asnId" /> + <TextField source="asnCode" label="table.field.asnOrderItem.asnCode" /> + <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" /> + <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" /> + <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" /> + <TextField source="matnk" label="table.field.asnOrderItem.matnk" /> + <NumberField source="anfme" label="table.field.asnOrderItem.anfme" /> + <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" /> + <NumberField source="purQty" label="table.field.asnOrderItem.purQty" /> + <TextField source="purUnit" label="table.field.asnOrderItem.purUnit" /> + <NumberField source="qty" label="table.field.asnOrderItem.qty" /> + <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" /> + <TextField source="splrName" label="table.field.asnOrderItem.splrName" /> + <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" /> + <TextField source="barcode" label="table.field.asnOrderItem.barcode" /> + <TextField source="packName" label="table.field.asnOrderItem.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 - /> - <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 cellClassName="opt" label="common.field.opt"> - <EditButton sx={{ padding: "1px", fontSize: ".75rem" }} /> - <DeleteButton - sx={{ padding: "1px", fontSize: ".75rem" }} - mutationMode={OPERATE_MODE} - /> - </WrapperField> - </StyledDatagrid> - </List> - <AsnOrderItemCreate open={createDialog} setOpen={setCreateDialog} /> - <PageDrawer - title="AsnOrderItem Detail" - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - ></PageDrawer> - </Box> - ); -}; + <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> + <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> + <AsnOrderItemCreate + open={createDialog} + setOpen={setCreateDialog} + /> + <PageDrawer + title='AsnOrderItem Detail' + drawerVal={drawerVal} + setDrawerVal={setDrawerVal} + > + </PageDrawer> + </Box> + </> + ) +} export default AsnOrderItemList; diff --git a/rsf-admin/src/page/purchase/PurchaseList.jsx b/rsf-admin/src/page/purchase/PurchaseList.jsx index 8946696..adc1921 100644 --- a/rsf-admin/src/page/purchase/PurchaseList.jsx +++ b/rsf-admin/src/page/purchase/PurchaseList.jsx @@ -1,11 +1,5 @@ -import React, { - useState, - useRef, - useEffect, - useMemo, - useCallback, -} from "react"; -import { useNavigate } from "react-router-dom"; +import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; +import { useNavigate } from 'react-router-dom'; import { List, DatagridConfigurable, @@ -37,63 +31,58 @@ ReferenceArrayInput, AutocompleteInput, DeleteButton, -} from "react-admin"; -import { Box, Typography, Card, Stack } from "@mui/material"; -import { styled } from "@mui/material/styles"; +} from 'react-admin'; +import { Box, Typography, Card, Stack } from '@mui/material'; +import { styled } from '@mui/material/styles'; import PurchaseCreate from "./PurchaseCreate"; import PurchasePanel from "./PurchasePanel"; import EmptyData from "../components/EmptyData"; import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from "../components/MyExportButton"; +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 { 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", + '& .css-1vooibu-MuiSvgIcon-root': { + height: '.9em' }, - "& .RaDatagrid-row": { - cursor: "auto", + '& .RaDatagrid-row': { + cursor: 'auto' }, - "& .column-name": {}, - "& .opt": { - width: 200, + '& .column-name': { + }, + '& .opt': { + width: 200 }, })); const filters = [ <SearchInput source="condition" alwaysOn />, - <TextInput source="code" label="table.field.purchase.code" />, <TextInput source="type" label="table.field.purchase.type" />, - <TextInput source="from" label="table.field.purchase.from" />, + <TextInput source="source" label="table.field.purchase.source" />, <DateInput source="preArr" label="table.field.purchase.preArr" />, <NumberInput source="anfme" label="table.field.purchase.anfme" />, <NumberInput source="qty" label="table.field.purchase.qty" />, <NumberInput source="workQty" label="table.field.purchase.workQty" />, <TextInput source="channel" label="table.field.purchase.channel" />, - <TextInput source="erpCode" label="table.field.purchase.erpCode" />, + <TextInput source="platCode" label="table.field.purchase.platCode" />, <DateInput source="startTime" label="table.field.purchase.startTime" />, <DateInput source="endTime" label="table.field.purchase.endTime" />, <TextInput source="project" label="table.field.purchase.project" />, - <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" }, + { id: '1', name: 'common.enums.statusTrue' }, + { id: '0', name: 'common.enums.statusFalse' }, ]} resettable />, -]; +] const PurchaseList = () => { const translate = useTranslate(); @@ -112,122 +101,82 @@ sx={{ flexGrow: 1, transition: (theme) => - theme.transitions.create(["all"], { + theme.transitions.create(['all'], { duration: theme.transitions.duration.enteringScreen, }), marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, }} title={"menu.purchase"} - empty={ - <EmptyData - onClick={() => { - setCreateDialog(true); - }} - /> - } + empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} filters={filters} sort={{ field: "create_time", order: "desc" }} - actions={ + actions={( <TopToolbar> <FilterButton /> - <MyCreateButton - onClick={() => { - setCreateDialog(true); - }} - /> - <SelectColumnsButton preferenceKey="purchase" /> + <MyCreateButton onClick={() => { setCreateDialog(true) }} /> + <SelectColumnsButton preferenceKey='purchase' /> <MyExportButton /> </TopToolbar> - } + )} perPage={DEFAULT_PAGE_SIZE} > <StyledDatagrid - preferenceKey="purchase" - bulkActionButtons={() => ( - <BulkDeleteButton mutationMode={OPERATE_MODE} /> - )} + preferenceKey='purchase' + bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} rowClick={(id, resource, record) => false} expand={() => <PurchasePanel />} expandSingle={true} - omit={["id", "createTime", "createBy", "memo"]} + omit={['id', 'createTime', 'createBy', 'memo']} > <NumberField source="id" /> - <TextField source="code" label="table.field.purchase.code" /> - <TextField source="type" label="table.field.purchase.type" /> - <TextField source="from" label="table.field.purchase.from" /> - <DateField - source="preArr" - label="table.field.purchase.preArr" - showTime + <MyField + source="code" + label="table.field.purchase.code" + onClick={(event, record, val) => { + event.stopPropagation(); + assign(record); + }} /> + <TextField source="type" label="table.field.purchase.type" /> + <TextField source="source" label="table.field.purchase.source" /> + <DateField source="preArr" label="table.field.purchase.preArr" showTime /> <NumberField source="anfme" label="table.field.purchase.anfme" /> <NumberField source="qty" label="table.field.purchase.qty" /> <NumberField source="workQty" label="table.field.purchase.workQty" /> <TextField source="channel" label="table.field.purchase.channel" /> - <TextField source="erpCode" label="table.field.purchase.erpCode" /> - <DateField - source="startTime" - label="table.field.purchase.startTime" - showTime - /> - <DateField - source="endTime" - label="table.field.purchase.endTime" - showTime - /> + <TextField source="platCode" label="table.field.purchase.platCode" /> + <DateField source="startTime" label="table.field.purchase.startTime" showTime /> + <DateField source="endTime" label="table.field.purchase.endTime" showTime /> <TextField source="project" label="table.field.purchase.project" /> - <ReferenceField - source="updateBy" - label="common.field.updateBy" - reference="user" - link={false} - 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} - > + <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> - <DateField - source="createTime" - label="common.field.createTime" - showTime - /> - <BooleanField - source="statusBool" - label="common.field.status" - sortable={false} - /> + <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 sx={{ padding: '1px', fontSize: '.75rem' }} /> + <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> </WrapperField> </StyledDatagrid> </List> - <PurchaseCreate open={createDialog} setOpen={setCreateDialog} /> + <PurchaseCreate + open={createDialog} + setOpen={setCreateDialog} + /> <PageDrawer - title="Purchase Detail" + title='Purchase Detail' drawerVal={drawerVal} setDrawerVal={setDrawerVal} - ></PageDrawer> + > + </PageDrawer> </Box> - ); -}; + ) +} export default PurchaseList; diff --git a/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx b/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx index 140a740..dd9e4f4 100644 --- a/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx +++ b/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx @@ -1,11 +1,5 @@ -import React, { - useState, - useRef, - useEffect, - useMemo, - useCallback, -} from "react"; -import { useNavigate, useLocation } from "react-router-dom"; +import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; +import { useNavigate, useLocation } from 'react-router-dom'; import { List, DatagridConfigurable, @@ -37,67 +31,62 @@ ReferenceArrayInput, AutocompleteInput, DeleteButton, -} from "react-admin"; -import { Box, Typography, Card, Stack } from "@mui/material"; -import { styled } from "@mui/material/styles"; +} from 'react-admin'; +import { Box, Typography, Card, Stack } from '@mui/material'; +import { styled } from '@mui/material/styles'; import PurchaseItemCreate from "./PurchaseItemCreate"; import PurchaseItemPanel from "./PurchaseItemPanel"; import EmptyData from "../components/EmptyData"; import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from "../components/MyExportButton"; +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 { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; +import * as Common from '@/utils/common'; +import CustomerTopToolBar from "../components/EditTopToolBar"; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ - "& .css-1vooibu-MuiSvgIcon-root": { - height: ".9em", + '& .css-1vooibu-MuiSvgIcon-root': { + height: '.9em' }, - "& .RaDatagrid-row": { - cursor: "auto", + '& .RaDatagrid-row': { + cursor: 'auto' }, - "& .column-name": {}, - "& .opt": { - width: 200, + '& .column-name': { + }, + '& .opt': { + width: 200 }, })); const filters = [ <SearchInput source="condition" alwaysOn />, - <NumberInput - source="purchaseId" - label="table.field.purchaseItem.purchaseId" - />, - <TextInput source="erpId" label="table.field.purchaseItem.erpId" />, + <NumberInput source="purchaseId" label="table.field.purchaseItem.purchaseId" />, + <TextInput source="platItemId" label="table.field.purchaseItem.platItemId" />, <TextInput source="matnrCode" label="table.field.purchaseItem.matnrCode" />, <TextInput source="matnrName" label="table.field.purchaseItem.matnrName" />, <TextInput source="unit" label="table.field.purchaseItem.unit" />, <NumberInput source="anfme" label="table.field.purchaseItem.anfme" />, <NumberInput source="qty" label="table.field.purchaseItem.qty" />, - <NumberInput source="nomQty" label="table.field.purchaseItem.nomQty" />, + <NumberInput source="nromQty" label="table.field.purchaseItem.nromQty" />, <NumberInput source="asnQty" label="table.field.purchaseItem.asnQty" />, <NumberInput source="printQty" label="table.field.purchaseItem.printQty" />, - <TextInput source="pulrName" label="table.field.purchaseItem.pulrName" />, - <TextInput source="pulrCode" label="table.field.purchaseItem.pulrCode" />, - <TextInput source="pulrBatch" label="table.field.purchaseItem.pulrBatch" />, + <TextInput source="splrName" label="table.field.purchaseItem.splrName" />, + <TextInput source="splrCode" label="table.field.purchaseItem.splrCode" />, + <TextInput source="splrBatch" label="table.field.purchaseItem.splrBatch" />, <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" }, + { id: '1', name: 'common.enums.statusTrue' }, + { id: '0', name: 'common.enums.statusFalse' }, ]} resettable />, -]; +] const PurchaseItemList = () => { const translate = useTranslate(); @@ -107,146 +96,86 @@ const location = useLocation(); const queryParams = new URLSearchParams(location.search); - const ruleId = queryParams.get("ruleId"); + const poId = queryParams.get("poId"); 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.purchaseItem"} - empty={ - <EmptyData - onClick={() => { - setCreateDialog(true); - }} - /> - } - filters={filters} - sort={{ field: "create_time", order: "desc" }} - actions={ - <TopToolbar> - <FilterButton /> - <MyCreateButton - onClick={() => { - setCreateDialog(true); - }} - /> - <SelectColumnsButton preferenceKey="purchaseItem" /> - <MyExportButton /> - </TopToolbar> - } - perPage={DEFAULT_PAGE_SIZE} - > - <StyledDatagrid - preferenceKey="purchaseItem" - bulkActionButtons={() => ( - <BulkDeleteButton mutationMode={OPERATE_MODE} /> + <> + {poId && <CustomerTopToolBar backPrevious={true} />} + <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.purchaseItem"} + empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} + filters={filters} + sort={{ field: "create_time", order: "desc" }} + actions={( + <TopToolbar> + <FilterButton /> + <MyCreateButton onClick={() => { setCreateDialog(true) }} /> + <SelectColumnsButton preferenceKey='purchaseItem' /> + <MyExportButton /> + </TopToolbar> )} - rowClick={(id, resource, record) => false} - expand={() => <PurchaseItemPanel />} - expandSingle={true} - omit={["id", "createTime", "createBy", "memo"]} + perPage={DEFAULT_PAGE_SIZE} > - <NumberField source="id" /> - <NumberField - source="purchaseId" - label="table.field.purchaseItem.purchaseId" - /> - <TextField source="erpId" label="table.field.purchaseItem.erpId" /> - <TextField - source="matnrCode" - label="table.field.purchaseItem.matnrCode" - /> - <TextField - source="matnrName" - label="table.field.purchaseItem.matnrName" - /> - <TextField source="unit" label="table.field.purchaseItem.unit" /> - <NumberField source="anfme" label="table.field.purchaseItem.anfme" /> - <NumberField source="qty" label="table.field.purchaseItem.qty" /> - <NumberField - source="nomQty" - label="table.field.purchaseItem.nomQty" - /> - <NumberField - source="asnQty" - label="table.field.purchaseItem.asnQty" - /> - <NumberField - source="printQty" - label="table.field.purchaseItem.printQty" - /> - <TextField - source="pulrName" - label="table.field.purchaseItem.pulrName" - /> - <TextField - source="pulrCode" - label="table.field.purchaseItem.pulrCode" - /> - <TextField - source="pulrBatch" - label="table.field.purchaseItem.pulrBatch" - /> + <StyledDatagrid + preferenceKey='purchaseItem' + bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} + rowClick={(id, resource, record) => false} + expand={() => <PurchaseItemPanel />} + expandSingle={true} + omit={['id', 'createTime', 'createBy', 'memo']} + > + <NumberField source="id" /> + <NumberField source="purchaseId" label="table.field.purchaseItem.purchaseId" /> + <TextField source="platItemId" label="table.field.purchaseItem.platItemId" /> + <TextField source="matnrCode" label="table.field.purchaseItem.matnrCode" /> + <TextField source="matnrName" label="table.field.purchaseItem.matnrName" /> + <TextField source="unit" label="table.field.purchaseItem.unit" /> + <NumberField source="anfme" label="table.field.purchaseItem.anfme" /> + <NumberField source="qty" label="table.field.purchaseItem.qty" /> + <NumberField source="nromQty" label="table.field.purchaseItem.nromQty" /> + <NumberField source="asnQty" label="table.field.purchaseItem.asnQty" /> + <NumberField source="printQty" label="table.field.purchaseItem.printQty" /> + <TextField source="splrName" label="table.field.purchaseItem.splrName" /> + <TextField source="splrCode" label="table.field.purchaseItem.splrCode" /> + <TextField source="splrBatch" label="table.field.purchaseItem.splrBatch" /> - <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> - <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> - <PurchaseItemCreate open={createDialog} setOpen={setCreateDialog} /> - <PageDrawer - title="PurchaseItem Detail" - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - ></PageDrawer> - </Box> - ); -}; + <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> + <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> + <PurchaseItemCreate + open={createDialog} + setOpen={setCreateDialog} + /> + <PageDrawer + title='PurchaseItem Detail' + drawerVal={drawerVal} + setDrawerVal={setDrawerVal} + > + </PageDrawer> + </Box></> + ) +} export default PurchaseItemList; -- Gitblit v1.9.1