From af455bd20edfd02cb3e8c7710e65aee798720dca Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 14 四月 2025 17:25:40 +0800
Subject: [PATCH] #新增 1. 生成任务新增站点选择功能

---
 rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx   |    2 
 rsf-admin/src/page/waitPakin/SelectSiteModel.jsx     |  117 +++++++++++++++++++++++++++++++++++++++
 rsf-admin/src/page/waitPakin/WaitPakinList.jsx       |   47 ++++++++++-----
 rsf-admin/src/i18n/zh.js                             |    3 
 rsf-admin/src/i18n/en.js                             |    1 
 rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx |    2 
 6 files changed, 151 insertions(+), 21 deletions(-)

diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index 6028053..a509658 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -829,6 +829,7 @@
         batch: 'batch',
         confirm: 'confirm',
         cancel: "cancel",
+        selectSite: 'Select Site',
         top: "top",
         resort: "sort",
         subzone: 'subzone',
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 8dcfd40..d567fd3 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -630,7 +630,7 @@
                 name: "鍚嶇О",
                 wcsCode: "wcs绔欑偣缂栧彿",
                 label: "绔欑偣鏍囩",
-                device: "璁惧绫诲瀷",
+                device: "绔嬪簱绫诲瀷",
                 deviceCode: "璁惧缂栧彿",
                 deviceSite: "璁惧绔欑偣",
                 flagInit: "鏄惁鍒濆鍖�",
@@ -840,6 +840,7 @@
         siteInit: '绔欑偣鍒濆鍖�',
         batch: '鎵归噺鎿嶄綔',
         confirm: '纭',
+        selectSite: '閫夋嫨绔欑偣',
         cancel: "鍙栨秷",
         top: "缃《",
         resort: "鎺掑簭",
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
index 4c89a10..fd4d8ca 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
@@ -282,9 +282,7 @@
                             {/* {asnId !== '' && <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDelete} />} */}
                             <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDeleteItem} />
                         </Stack>
-
                     </Box>
-
                     <Box sx={{ mt: 2 }}>
                         <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} tableRef={tableRef}></AsnOrderModalTable>
                     </Box>
diff --git a/rsf-admin/src/page/waitPakin/SelectSiteModel.jsx b/rsf-admin/src/page/waitPakin/SelectSiteModel.jsx
new file mode 100644
index 0000000..ffd7164
--- /dev/null
+++ b/rsf-admin/src/page/waitPakin/SelectSiteModel.jsx
@@ -0,0 +1,117 @@
+import { Dialog, DialogTitle, Box, DialogActions, DialogContent } from "@mui/material";
+import React, { useState, useRef, useEffect, useMemo, useCallback, Form } from "react";
+import { styled } from '@mui/material/styles';
+import { FilterButton, TopToolbar, Toolbar, useTranslate, SaveButton, List, SelectInput, NumberField, WrapperField, EditButton, DeleteButton, TextField, DateField, TextInput, BooleanField, NumberInput, ReferenceField, SearchInput, SelectColumnsButton, DatagridConfigurable, Button } from "react-admin";
+import DialogCloseButton from "../components/DialogCloseButton";
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
+
+const filters = [
+    <SearchInput source="condition" alwaysOn />,
+    <NumberInput source="type" label="table.field.deviceSite.type" />,
+    <TextInput source="site" label="table.field.deviceSite.site" />,
+    <TextInput source="name" label="table.field.deviceSite.name" />,
+    <TextInput source="wcsCode" label="table.field.deviceSite.wcsCode" />,
+    <TextInput source="label" label="table.field.deviceSite.label" />,
+    <TextInput source="device" label="table.field.deviceSite.device" />,
+    <TextInput source="deviceCode" label="table.field.deviceSite.deviceCode" />,
+    <TextInput source="deviceSite" label="table.field.deviceSite.deviceSite" />,
+    <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 StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
+    '& .css-1vooibu-MuiSvgIcon-root': {
+        height: '.9em'
+    },
+    '& .RaDatagrid-row': {
+        cursor: 'auto'
+    },
+    '& .column-name': {
+    },
+    '& .opt': {
+        width: 200
+    },
+}));
+
+const SelectSiteModel = (props) => {
+    const { open, setOpen, record } = props;
+    const translate = useTranslate();
+    const [drawerVal, setDrawerVal] = useState(false);
+    const handleClose = (event, reason) => {
+        if (reason !== "backdropClick") {
+            setOpen(false);
+        }
+    };
+
+    return (
+        <Box>
+            <Dialog
+                open={open}
+                onClose={handleClose}
+                fullWidth
+                disableRestoreFocus
+                maxWidth="md"
+            >
+                <DialogTitle>
+                    {translate('toolbar.selectSite')}
+                </DialogTitle>
+                <DialogContent>
+                    <List
+                        resource='deviceSite'
+                        sx={{
+                            flexGrow: 1,
+                            transition: (theme) =>
+                                theme.transitions.create(['all'], {
+                                    duration: theme.transitions.duration.enteringScreen,
+                                }),
+                            marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+                        }}
+                        title={"menu.deviceSite"}
+                        empty={false}
+                        filters={filters}
+                        sort={{ field: "create_time", order: "desc" }}
+                        actions={(
+                            <TopToolbar>
+                                <FilterButton />
+                                <SelectColumnsButton preferenceKey='deviceSite' />
+                            </TopToolbar>
+                        )}
+                        perPage={DEFAULT_ITEM_PAGE_SIZE}
+                    >
+                        <StyledDatagrid
+                            preferenceKey='deviceSite'
+                            bulkActionButtons={false}
+                            rowClick={(id, resource, record) => false}
+                            omit={['id', 'createTime', 'createBy', 'memo', 'updateBy$', 'createBy$', 'createTime', 'updateTime']}
+                        >
+                            <NumberField source="id" />
+                            <TextField source="name" label="table.field.deviceSite.name" />
+                            <NumberField source="type$" label="table.field.deviceSite.type" />
+                            <TextField source="site" label="table.field.deviceSite.site" />
+                            <TextField source="wcsCode" label="table.field.deviceSite.wcsCode" />
+                            <TextField source="label" label="table.field.deviceSite.label" />
+                            <TextField source="device$" label="table.field.deviceSite.device" />
+                            <TextField source="deviceCode" label="table.field.deviceSite.deviceCode" />
+                            <TextField source="deviceSite" label="table.field.deviceSite.deviceSite" />
+                            <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>
+                </DialogContent>
+            </Dialog>
+        </Box>
+    )
+}
+
+export default SelectSiteModel;
diff --git a/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx b/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx
index 4c075f4..f9f48aa 100644
--- a/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx
+++ b/rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx
@@ -119,7 +119,7 @@
                     preferenceKey='waitPakinItem'
                     bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
                     rowClick={(id, resource, record) => false}
-                    omit={['id', 'createTime', 'createBy', 'memo']}
+                    omit={['id', 'pakinId', 'createTime', 'createBy', 'memo']}
                 >
                     <NumberField source="id" />
                     <NumberField source="pakinId" label="table.field.waitPakinItem.pakinId" />
diff --git a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
index 39739cc..bb39a6f 100644
--- a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
+++ b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
@@ -37,13 +37,16 @@
 import { Box, Typography, Card, Stack } from '@mui/material';
 import { styled } from '@mui/material/styles';
 import WaitPakinCreate from "./WaitPakinCreate";
-import WaitPakinPanel from "./WaitPakinPanel";
+import ConfirmButton from "../components/ConfirmButton";
 import EmptyData from "../components/EmptyData";
 import MyExportButton from '../components/MyExportButton';
 import PageDrawer from "../components/PageDrawer";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
 import AddIcon from '@mui/icons-material/Add';
 import request from '@/utils/request';
+import TaskIcon from '@mui/icons-material/Task';
+import { width } from "@mui/system";
+import SelectSiteModel from "./SelectSiteModel";
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
@@ -54,8 +57,11 @@
     },
     '& .column-name': {
     },
+    '& .column-statusBool': {
+        width: 90
+    },
     '& .opt': {
-        width: 200
+        width: 180
     },
 }));
 
@@ -87,6 +93,7 @@
 const WaitPakinList = () => {
     const translate = useTranslate();
     const [createDialog, setCreateDialog] = useState(false);
+    const [siteDialog, setSiteDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
 
     return (
@@ -115,7 +122,9 @@
             >
                 <StyledDatagrid
                     preferenceKey='waitPakin'
-                    bulkActionButtons={<> <CreateTaskButton /> <BulkDeleteButton mutationMode={OPERATE_MODE} /></>}
+                    bulkActionButtons={<Box> <Button label="ra.action.edit" onClick={()=>{
+                        setSiteDialog(true)
+                    }} /> <BulkDeleteButton mutationMode={OPERATE_MODE} /></Box>}
                     rowClick='edit'
                     expand={false}
                     expandSingle={true}
@@ -129,7 +138,7 @@
                     <NumberField source="anfme" label="table.field.waitPakin.anfme" />
                     <TextField source="ioStatus$" label="table.field.waitPakin.ioStatus" sortable={false} />
                     <TextField source="updateBy$" label="common.field.updateBy" />
-                    <DateField source="updateTime" label="common.field.updateTime" showTime  />
+                    <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} />
@@ -139,6 +148,7 @@
                     </WrapperField>
                 </StyledDatagrid>
             </List>
+            <SelectSiteModel open={siteDialog} setOpen={setSiteDialog}/>
             <WaitPakinCreate
                 open={createDialog}
                 setOpen={setCreateDialog}
@@ -157,29 +167,32 @@
 
 const CreateTaskButton = () => {
     const record = useRecordContext();
+    const [siteDialog, setSiteDialog] = useState(false);
     const notify = useNotify();
     const refresh = useRefresh();
     const { selectedIds, onUnselectItems, data } = useListContext();
-    const createTask = async () => {
-        const rows = data.filter((item) => selectedIds.includes(item.id)) || [];
-        const res = await request.post(`/waitPakin/merge`, rows);
-        if (res?.data?.code === 200) {
-            refresh()
-            notify(res.data.msg);
 
-        } else {
-            notify(res.data.msg);
-        }
+    const createTask = () => {
+        // const rows = data.filter((item) => selectedIds.includes(item.id)) || [];
+        // const res = await request.post(`/waitPakin/merge`, rows);
+        // if (res?.data?.code === 200) {
+        //     refresh();
+        //     notify(res.data.msg);
+        // } else {
+        //     notify(res.data.msg);
+        // }
+        console.log('-------->');
+        setSiteDialog(true)
+
     }
-
+    // return (
+    //     <ConfirmButton label={"toolbar.createTask"} startIcon={<TaskIcon />} onConfirm={createTask} />
+    // )
     return (
         <>
             <Button onClick={() => createTask()} label={"toolbar.createTask"}>
                 <AddIcon />
             </Button>
-
-
         </>
-
     )
 }

--
Gitblit v1.9.1