From 8e058ad522772460a6964a4ba49002363e1e4d1a Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 08 十一月 2024 13:23:23 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/i18n/core/chineseMessages.js  |    2 
 zy-acs-flow/src/page/loc/LocList.jsx          |    3 -
 zy-acs-flow/src/config/MyDataProvider.js      |   13 +++
 zy-acs-flow/src/page/loc/BulkUpdateButton.jsx |  129 ++++++++++++++++++++++++++++--------------
 zy-acs-flow/src/map/player.js                 |    8 +-
 5 files changed, 102 insertions(+), 53 deletions(-)

diff --git a/zy-acs-flow/src/config/MyDataProvider.js b/zy-acs-flow/src/config/MyDataProvider.js
index 0e453d6..0b515d2 100644
--- a/zy-acs-flow/src/config/MyDataProvider.js
+++ b/zy-acs-flow/src/config/MyDataProvider.js
@@ -89,8 +89,17 @@
     // update a list of records based on an array of ids and a common patch
     updateMany: async (resource, params) => {
         console.log("updateMany", resource, params);
-
-        return Promise.resolve();
+        const res = await request.post(
+            resource + '/update/many'
+            , params.ids.map(id => ({ id, ...params.data }))
+        );
+        const { code, msg, data } = res.data;
+        if (code === 200) {
+            return Promise.resolve({
+                data: data,
+            });
+        }
+        return Promise.reject(new Error(msg));
     },
 
     // delete a record by id
diff --git a/zy-acs-flow/src/i18n/core/chineseMessages.js b/zy-acs-flow/src/i18n/core/chineseMessages.js
index 81ed6f7..f6eafa3 100644
--- a/zy-acs-flow/src/i18n/core/chineseMessages.js
+++ b/zy-acs-flow/src/i18n/core/chineseMessages.js
@@ -32,7 +32,7 @@
             close: '鍏抽棴',
             open_menu: 'Open menu',
             close_menu: 'Close menu',
-            update: 'Update',
+            update: '淇敼',
             move_up: 'Move up',
             move_down: 'Move down',
             open: 'Open',
diff --git a/zy-acs-flow/src/map/player.js b/zy-acs-flow/src/map/player.js
index 2f8b87d..8aff09e 100644
--- a/zy-acs-flow/src/map/player.js
+++ b/zy-acs-flow/src/map/player.js
@@ -238,7 +238,7 @@
         const newRotation = this.mapContainer.rotation + value;
 
         const rotationDegrees = (newRotation * 180 / Math.PI) % 360;
-        this.rotationText.text = `{ rotation: ${rotationDegrees.toFixed(1)}掳 }`;
+        this.rotationText.text = `{ ROTATION: ${rotationDegrees.toFixed(1)}掳 }`;
 
         new TWEEDLE.Tween(this.mapContainer)
             .to({ rotation: newRotation }, 200)
@@ -250,7 +250,7 @@
     }
 
     showCoordinates = () => {
-        this.coordinatesText = new PIXI.Text('{ x: 0, y: 0 }', {
+        this.coordinatesText = new PIXI.Text('{ X: 0, Y: 0 }', {
             fill: this.themeMode === 'dark' ? 0xdddddd : 0x333333,
             fontSize: 13,
             fontFamily: 'Microsoft YaHei',
@@ -260,7 +260,7 @@
         this.coordinatesText.position.set(10, 10);
         this.app.stage.addChild(this.coordinatesText);
 
-        this.rotationText = new PIXI.Text('Rotation: 0掳', {
+        this.rotationText = new PIXI.Text('ROTATION: 0掳', {
             fill: this.themeMode === 'dark' ? 0xdddddd : 0x333333,
             fontSize: 13,
             fontFamily: 'Microsoft YaHei',
@@ -272,7 +272,7 @@
 
         this.app.stage.on('pointermove', (event) => {
             const worldPos = event.data.getLocalPosition(this.mapContainer);
-            this.coordinatesText.text = `{ x: ${worldPos.x.toFixed(2)}, y: ${worldPos.y.toFixed(2)} }`;
+            this.coordinatesText.text = `{ X: ${worldPos.x.toFixed(2)}, Y: ${worldPos.y.toFixed(2)} }`;
         });
     }
 
diff --git a/zy-acs-flow/src/page/loc/BulkUpdateButton.jsx b/zy-acs-flow/src/page/loc/BulkUpdateButton.jsx
index 15cf7f9..bfe5f0e 100644
--- a/zy-acs-flow/src/page/loc/BulkUpdateButton.jsx
+++ b/zy-acs-flow/src/page/loc/BulkUpdateButton.jsx
@@ -1,19 +1,33 @@
-// src/components/BulkUpdateButton.js
 import React, { useState } from 'react';
-import { useUpdateMany, useRefresh, useNotify, useUnselectAll, Button as RaButton } from 'react-admin';
-import { Dialog, DialogActions, DialogContent, DialogTitle, TextField, Select, MenuItem } from '@mui/material';
+import {
+    useUpdateMany,
+    useRefresh,
+    useNotify,
+    useListContext,
+    useUnselectAll,
+    Button as RaButton,
+    Form,
+    ReferenceInput,
+    AutocompleteInput,
+    NumberInput,
+    TextInput,
+    useTranslate,
+} from 'react-admin';
+import { Dialog, DialogActions, DialogContent, DialogTitle, Grid, Stack, Divider } from '@mui/material';
 import UpdateIcon from '@mui/icons-material/Update';
+import MemoInput from "../components/MemoInput";
+import ContentSave from '@mui/icons-material/Save';
+import CloseIcon from '@mui/icons-material/Close';
 
-const BulkUpdateButton = ({ selectedIds, resource, label }) => {
-    console.log('BulkUpdateButton rendered with selectedIds:', selectedIds);
-
+const BulkUpdateButton = ({ resource, label = 'ra.action.update', ...rest }) => {
     const [open, setOpen] = useState(false);
     const [formData, setFormData] = useState({});
 
-    // Hooks 璋冪敤椤哄簭璋冩暣
     const refresh = useRefresh();
     const notify = useNotify();
+    const translate = useTranslate();
     const unselectAll = useUnselectAll(resource);
+    const { selectedIds, onUnselectItems } = useListContext();
 
     const [updateMany, { loading }] = useUpdateMany(
         resource,
@@ -22,11 +36,11 @@
             onSuccess: () => {
                 setOpen(false);
                 refresh();
-                notify('鎵归噺鏇存柊鎴愬姛', { type: 'success' });
+                notify('common.response.success', { type: 'info' });
                 unselectAll();
             },
             onError: (error) => {
-                notify(`鎵归噺鏇存柊澶辫触: ${error.message}`, { type: 'warning' });
+                notify(error.msg || 'common.response.fail', { type: 'error' });
             }
         }
     );
@@ -43,49 +57,78 @@
     };
 
     const handleSubmit = () => {
+        console.log(formData);
         updateMany();
     };
 
     return (
         <>
-            <RaButton onClick={handleOpen} startIcon={<UpdateIcon />} label={label || '鎵归噺淇敼'}>
-                {/* 濡傛灉浣跨敤 React-Admin 鐨� Button锛屽彲浠ョ渷鐣ュ瓙鑺傜偣 */}
-            </RaButton>
+            <RaButton onClick={handleOpen} startIcon={<UpdateIcon />} label={label} />
             <Dialog open={open} onClose={handleClose}>
-                <DialogTitle>鎵归噺淇敼</DialogTitle>
+                <DialogTitle>{translate('ra.action.update')}</DialogTitle>
                 <DialogContent>
-                    {/* 浣跨敤 Select 缁勪欢闄愬埗鐘舵�佸�� */}
-                    <Select
-                        margin="dense"
-                        name="status"
-                        label="鐘舵��"
-                        fullWidth
-                        variant="standard"
-                        onChange={handleChange}
-                        defaultValue=""
-                    >
-                        <MenuItem value="">
-                            <em>鏃�</em>
-                        </MenuItem>
-                        <MenuItem value="1">鍚敤</MenuItem>
-                        <MenuItem value="0">绂佺敤</MenuItem>
-                    </Select>
-                    <TextField
-                        margin="dense"
-                        name="memo"
-                        label="澶囨敞"
-                        type="text"
-                        fullWidth
-                        variant="standard"
-                        onChange={handleChange}
-                    />
+                    <Form>
+                        <Grid container rowSpacing={2} columnSpacing={2}>
+                            <Grid item xs={6} display="flex" gap={1}>
+                                <ReferenceInput
+                                    source="code"
+                                    reference="code"
+                                >
+                                    <AutocompleteInput
+                                        label="table.field.loc.code"
+                                        optionText="data"
+                                        filterToQuery={(val) => ({ data: val })}
+                                    />
+                                </ReferenceInput>
+                            </Grid>
+                            <Grid item xs={6} display="flex" gap={1}>
+                                <ReferenceInput
+                                    source="locSts"
+                                    reference="locSts"
+                                >
+                                    <AutocompleteInput
+                                        label="table.field.loc.locSts"
+                                        optionText="name"
+                                        filterToQuery={(val) => ({ name: val })}
+                                    />
+                                </ReferenceInput>
+                            </Grid>
+                            <Grid item xs={6} display="flex" gap={1}>
+                                <NumberInput
+                                    label="table.field.loc.offset"
+                                    source="offset"
+                                />
+                            </Grid>
+                            <Grid item xs={12} display="flex" gap={1}>
+                                <Stack direction="column" spacing={1} width={'100%'}>
+                                    <MemoInput />
+                                </Stack>
+                            </Grid>
+                        </Grid>
+                    </Form>
                 </DialogContent>
-                <DialogActions>
-                    <RaButton onClick={handleClose} color="primary">
-                        鍙栨秷
+                <Divider sx={{ mb: 1 }} />
+                <DialogActions sx={{ mb: 1 }}>
+                    <RaButton
+                        onClick={handleClose}
+                        variant="contained"
+                        color="inherit"
+                        size='large'
+                        label='ra.action.cancel'
+                        sx={{ mr: 1 }}
+                    >
+                        <CloseIcon />
                     </RaButton>
-                    <RaButton onClick={handleSubmit} color="primary" disabled={loading}>
-                        纭
+                    <RaButton
+                        onClick={handleSubmit}
+                        variant="contained"
+                        color="primary"
+                        size='large'
+                        label='ra.action.save'
+                        disabled={loading}
+                        sx={{ mr: 1 }}
+                    >
+                        <ContentSave />
                     </RaButton>
                 </DialogActions>
             </Dialog>
diff --git a/zy-acs-flow/src/page/loc/LocList.jsx b/zy-acs-flow/src/page/loc/LocList.jsx
index 980a84d..d06d296 100644
--- a/zy-acs-flow/src/page/loc/LocList.jsx
+++ b/zy-acs-flow/src/page/loc/LocList.jsx
@@ -101,14 +101,11 @@
 ]
 
 const LocBulkActionButtons = (props) => {
-    const translate = useTranslate();
-
     return (
         <>
             <BulkUpdateButton
                 {...props}
                 resource="loc"
-                label={translate('ra.action.update')}
             />
             <BulkDeleteButton mutationMode={OPERATE_MODE} />
         </>

--
Gitblit v1.9.1