From f83d2ae89575240b4d467ecc43fe131f6bc63708 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 06 三月 2026 16:45:06 +0800
Subject: [PATCH] #站点区域
---
rsf-admin/src/page/orders/outStock/OutOrderList.jsx | 205 ++++++++++++++++++++++++++++++++++-----------------
1 files changed, 136 insertions(+), 69 deletions(-)
diff --git a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
index 1181459..1f8ce47 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
@@ -2,11 +2,10 @@
import { useLocation, useNavigate } from 'react-router-dom';
import {
List,
- DatagridConfigurable,
SearchInput,
TopToolbar,
Toolbar,
- SelectColumnsButton,
+ ColumnsButton,
EditButton,
FilterButton,
CreateButton,
@@ -42,44 +41,115 @@
import { styled } from '@mui/material/styles';
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';
-import { Box, Typography, Card, Stack, Drawer } from '@mui/material';
+import { Box, Typography, Card, Stack, Drawer, LinearProgress } from '@mui/material';
import DictionarySelect from "../../components/DictionarySelect";
+import StickyDataTable from "../../components/StickyDataTable";
+import useTableLayout from '@/utils/useTableLayout';
import BillStatusField from '../../components/BillStatusField';
import MyCreateButton from "../../components/MyCreateButton";
import PageEditDrawer from "../../components/PageEditDrawer";
import ConfirmButton from '../../components/ConfirmButton';
import ImportButton from "../../components/ImportButton";
import DetailsIcon from '@mui/icons-material/Details';
+import OutStockWaveDialog from "./OutStockWaveDialog";
import AddTaskIcon from '@mui/icons-material/AddTask';
import PublicIcon from '@mui/icons-material/Public';
import SelectMatnrModal from "./SelectMatnrModal";
import EditIcon from '@mui/icons-material/Edit';
+import TaskIcon from '@mui/icons-material/Task';
import OutOrderPreview from "./OutOrderPreview";
import AddIcon from '@mui/icons-material/Add';
import OutStockPublic from "./OutStockPublic";
import OutOrderModal from "./OutOrderModal";
import request from '@/utils/request';
-import OutStockWaveDialog from "./OutStockWaveDialog";
-const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
- '& .css-1vooibu-MuiSvgIcon-root': {
- height: '.9em'
- },
- '& .RaDatagrid-row': {
- cursor: 'auto'
- },
- '& .column-name': {
- },
- '& .opt': {
- width: 220
- },
- '& .wkType': {
- width: 110
- },
- '& .status': {
- width: 90
- },
-}));
+const ListContent = ({ drawerVal, setDrawerVal, setWaveRule, setSelectIds, setSelect }) => {
+ const { isLoading } = useListContext();
+ const { boxMaxWidth, boxMaxHeight } = useTableLayout(drawerVal);
+
+ const omittedFields = ['id', 'code', 'createTime', 'createBy$', 'memo', 'rleStatus$', 'logisNo', 'updateBy$', 'workQty', 'updateTime', 'type$'];
+
+ return (
+ <Box sx={{
+ position: 'relative',
+ maxHeight: boxMaxHeight,
+ maxWidth: boxMaxWidth,
+ overflowX: 'auto',
+ overflowY: 'auto',
+ '& .MuiTableCell-root': {
+ whiteSpace: 'nowrap',
+ },
+ '& .css-1vooibu-MuiSvgIcon-root': {
+ height: '.9em'
+ },
+ '& .RaDatagrid-row': {
+ cursor: 'auto'
+ },
+ '& .column-name': {
+ },
+ '& .opt': {
+ width: 420
+ },
+ '& .wkType': {
+ width: 110
+ },
+ '& .status': {
+ width: 90
+ },
+ }}>
+ {isLoading && (
+ <LinearProgress
+ sx={{
+ height: "2px",
+ position: 'absolute',
+ top: 0,
+ left: 0,
+ right: 0,
+ }}
+ />
+ )}
+ <StickyDataTable
+ storeKey='outStock'
+ bulkActionButtons={<PublicTaskButton setWaveRule={setWaveRule} setSelectIds={setSelectIds} />}
+ rowClick={false}
+ hiddenColumns={omittedFields}
+ >
+ <NumberField source="id" />
+ <TextField source="code" label="table.field.outStock.code" />
+ <TextField source="poCode" label="table.field.outStock.poCode" />
+ <TextField source="type$" label="table.field.outStock.type" />
+ <TextField cellClassName="wkType" source="wkType$" label="table.field.outStock.wkType" />
+ <NumberField source="anfme" label="table.field.outStock.anfme" />
+ <NumberField source="workQty" label="table.field.outStock.workQty" />
+ <NumberField source="qty" label="table.field.outStock.qty" />
+ <TextField source="logisNo" label="table.field.outStock.logisNo" />
+ <TextField source="rleStatus$" label="table.field.outStock.rleStatus" 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 />
+ <TextField source="memo" label="common.field.memo" sortable={false} />
+
+ {/* 閾跺骇鏂板 */}
+ <TextField source="saleOrgName" label="閿�鍞粍缁�" />
+ <TextField source="saleUserName" label="閿�鍞憳" />
+ <DateField source="businessTime" label="鍑哄簱鏃ユ湡" />
+ <TextField source="customerId" label="瀹㈡埛缂栫爜" />
+ <TextField source="customerName" label="瀹㈡埛" />
+ <TextField source="stockOrgName" label="table.field.outStock.stockOrgName" />
+
+ <BillStatusField cellClassName="status" source="exceStatus" label="table.field.outStock.exceStatus" />
+ <WrapperField cellClassName="opt" label="common.field.opt" >
+ {/* <MyButton setCreateDialog={setManualDialog} setmodalType={setmodalType} /> */}
+ <EditButton label="toolbar.detail" icon={(<DetailsIcon />)}></EditButton>
+ <CancelButton />
+ <CompleteButton />
+ <PublicButton setDrawerVal={setDrawerVal} drawerVal={drawerVal} setSelect={setSelect} />
+ </WrapperField>
+ </StickyDataTable>
+ </Box>
+ )
+}
const filters = [
<SearchInput source="condition" alwaysOn />,
@@ -113,33 +183,31 @@
]
const OutOrderList = (props) => {
- const translate = useTranslate();
- const refresh = useRefresh();
+ const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || [];
const [createDialog, setCreateDialog] = useState(false);
const [manualDialog, setManualDialog] = useState(false);
+ const [drawerVal, setDrawerVal] = useState(false);
+ const [waveRule, setWaveRule] = useState(false);
const [selectIds, setSelectIds] = useState([]);
const [preview, setPreview] = useState(false);
- const [waveRule, setWaveRule] = useState(false);
- const [drawerVal, setDrawerVal] = useState(false);
const [modalType, setmodalType] = useState(0);
const [select, setSelect] = useState(0);
+ const translate = useTranslate();
+ const refresh = useRefresh();
+ const notify = useNotify();
const billReload = useRef();
- const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || [];
//鑾峰彇娉㈡瑙勫垯
const closeDialog = async (value) => {
setWaveRule(false)
+ const res = await request.post(`/outStock/generate/wave`, { ids: selectIds, waveRuleId: value.id });
+ if (res?.data?.code === 200) {
+ notify(res.data.msg);
+ } else {
+ notify(res.data.msg);
+ }
refresh()
- console.log('=====>');
- console.log(value);
- console.log(selectIds);
- // const res = await request.post(`/outStock/generate/wave`, { ids: selectIds });
- // if (res?.data?.code === 200) {
- // notify(res.data.msg);
- // } else {
- // notify(res.data.msg);
- // }
}
return (
@@ -163,43 +231,19 @@
<FilterButton />
<CreateByOrderButton setCreateDialog={setCreateDialog} />
<MyCreateButton onClick={() => { setManualDialog(true); setmodalType(0) }} />
- <SelectColumnsButton preferenceKey='outStock' />
+ <ColumnsButton storeKey='outStock' />
<ImportButton value={'outStockItem'} />
</TopToolbar>
)}
perPage={DEFAULT_PAGE_SIZE}
>
- <StyledDatagrid
- sx={{ width: '100%' }}
- preferenceKey='outStock'
- bulkActionButtons={<PublicTaskButton setWaveRule={setWaveRule} setSelectIds={setSelectIds} />}
- rowClick={false}
- expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo', 'rleStatus$']}
- >
- <NumberField source="id" />
- <TextField source="code" label="table.field.outStock.code" />
- <TextField source="poCode" label="table.field.outStock.poCode" />
- <TextField source="type$" label="table.field.outStock.type" />
- <TextField cellClassName="wkType" source="wkType$" label="table.field.outStock.wkType" />
- <NumberField source="anfme" label="table.field.outStock.anfme" />
- <NumberField source="workQty" label="table.field.outStock.workQty" />
- <NumberField source="qty" label="table.field.outStock.qty" />
- <TextField source="logisNo" label="table.field.outStock.logisNo" />
- <TextField source="rleStatus$" label="table.field.outStock.rleStatus" 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 />
- <BillStatusField cellClassName="status" source="exceStatus" label="table.field.outStock.exceStatus" />
- <TextField source="memo" label="common.field.memo" sortable={false} />
- <WrapperField cellClassName="opt" label="common.field.opt" >
- <MyButton setCreateDialog={setManualDialog} setmodalType={setmodalType} />
- <EditButton label="toolbar.detail" icon={(<DetailsIcon />)}></EditButton>
- <CancelButton />
- <PublicButton setDrawerVal={setDrawerVal} drawerVal={drawerVal} setSelect={setSelect} />
- </WrapperField>
- </StyledDatagrid>
+ <ListContent
+ drawerVal={drawerVal}
+ setDrawerVal={setDrawerVal}
+ setWaveRule={setWaveRule}
+ setSelectIds={setSelectIds}
+ setSelect={setSelect}
+ />
</List>
{/* <OutOrderCreate
open={manualDialog}
@@ -253,6 +297,29 @@
);
}
+//瀹屾垚鍗曟嵁
+const CompleteButton = () => {
+ const record = useRecordContext();
+ const notify = useNotify();
+ const refresh = useRefresh();
+ const requestComplete = async () => {
+ const { data: { code, data, msg } } = await request.get(`/outStock/complete/${record.id}`);
+ if (code === 200) {
+ notify(msg);
+ refresh()
+ } else {
+ notify(msg);
+ }
+ }
+
+ return (
+ // record.exceStatus === 1 && (record.anfme === record.qty ? <Button onClick={requestComplete} label={"toolbar.complete"} color="secondary">
+ // <TaskIcon />
+ // </Button> : )
+ record.exceStatus != 15 ? <ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskIcon />} onConfirm={requestComplete} /> : <></>
+ )
+}
+
const MyButton = ({ setCreateDialog, setmodalType }) => {
const record = useRecordContext();
const handleEditClick = (btn) => {
--
Gitblit v1.9.1