From a4f22fb631ae29430a3f76d49f547423816b7297 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 28 二月 2024 13:42:12 +0800
Subject: [PATCH] #

---
 zy-asrs-framework/src/main/resources/templates/react/Index.txt                        |   70 ++++++-----
 zy-asrs-framework/src/main/resources/templates/react/Edit.txt                         |    8 +
 zy-asrs-flow/src/locales/en-US.ts                                                     |   47 +++++++
 zy-asrs-flow/src/pages/system/host/index.jsx                                          |   66 +++++-----
 zy-asrs-flow/src/pages/account/setting/components/base.jsx                            |   14 +-
 zy-asrs-flow/src/pages/account/setting/components/security.jsx                        |   27 ++--
 zy-asrs-flow/src/pages/account/setting/index.jsx                                      |   20 +-
 zy-asrs-flow/src/pages/system/dept/components/edit.jsx                                |    8 +
 zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java |    6 -
 zy-asrs-flow/src/pages/system/dept/index.jsx                                          |   65 +++++-----
 zy-asrs-flow/src/pages/system/host/components/edit.jsx                                |   12 +
 11 files changed, 201 insertions(+), 142 deletions(-)

diff --git a/zy-asrs-flow/src/locales/en-US.ts b/zy-asrs-flow/src/locales/en-US.ts
index 5bc95dd..7c632b7 100644
--- a/zy-asrs-flow/src/locales/en-US.ts
+++ b/zy-asrs-flow/src/locales/en-US.ts
@@ -1,4 +1,49 @@
 export default {
   'page.table.no': 'No',
-  'page.save': 'Add New',
+  'page.add': 'Add New',
+  'page.adding':'In process of adding',
+  'page.add.success':'Add Successful',
+  'page.add.fail':'Add failed, please try again!',
+  'page.updating':'Updating now',
+  'page.update.success':'Update Successful',
+  'page.update.fail':'Update failed, please try again!',
+  'page.deleting':'In process of deletion',
+  'page.delete.success':'Deletion Successful',
+  'page.delete.fail':'Deletion failed, please try again!',
+  'page.exporting':'Exporting...',
+  'page.export.success':'Exported successfully',
+  'page.export.fail':'Export failed, please try again.',
+  'page.edit':'Edit',
+  'page.delete':'Delete',
+  'page.delete.confirm':'Are you sure that you want to delete this item?',
+  'page.export':'Export',
+  'page.selected':' has been selected',
+  'page.delete.batch':'Batch Delete',
+  '':'',
+  '':'',
+  'personal.base.setting':'Basic Settings',
+  'personal.security.setting':'Security Settings',
+  'personal.base.button.name':'Update Basic Information',
+  'personal.security.button.name':'Update Password',
+  'personal.security.cur.pwd':'Current Password',
+  'personal.security.new.pwd':'New Password',
+  'personal.security.new.pwd.confirm':'Confirm Password',
+  'personal.security.new.pwd.rule.length':'The new password must be 4 to 16 characters',
+  'personal.security.new.pwd.rule.check':'The passwords entered twice do not matc',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
+  '':'',
 };
diff --git a/zy-asrs-flow/src/pages/account/setting/components/base.jsx b/zy-asrs-flow/src/pages/account/setting/components/base.jsx
index bcbff4b..23b8217 100644
--- a/zy-asrs-flow/src/pages/account/setting/components/base.jsx
+++ b/zy-asrs-flow/src/pages/account/setting/components/base.jsx
@@ -6,25 +6,26 @@
   ProFormDigit
 } from '@ant-design/pro-components';
 import { Button, Input, message, Upload, Form } from 'antd';
+import { FormattedMessage, useIntl } from '@umijs/max';
 import React from 'react';
 import useStyles from './index.style';
 import Http from '@/utils/http';
 
 import defaultAvat from '/public/img/defaultAva.png'
 
-const handleUpdate = async (val) => {
-  const hide = message.loading('姝e湪鏇存柊');
+const handleUpdate = async (val, intl) => {
+  const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '姝e湪鏇存柊' }));
   try {
     const resp = await Http.doPost('api/user/update', val);
     if (resp.code === 200) {
-      message.success('鏇存柊鎴愬姛');
+      message.success(intl.formatMessage({ id: 'page.update.success', defaultMessage: '鏇存柊鎴愬姛' }));
       return true;
     } else {
       message.error(resp.msg);
       return false;
     }
   } catch (error) {
-    message.error('閰嶇疆澶辫触璇烽噸璇曪紒');
+    message.error(intl.formatMessage({ id: 'page.update.fail', defaultMessage: '鏇存柊澶辫触璇烽噸璇曪紒' }));
     return false;
   } finally {
     hide();
@@ -32,6 +33,7 @@
 };
 
 const BaseView = () => {
+  const intl = useIntl();
   const { styles } = useStyles();
   const [loading, setLoading] = React.useState(false);
   const [currentUser, setCurrentUser] = React.useState({});
@@ -79,7 +81,7 @@
   };
 
   const handleFinish = async (values) => {
-    handleUpdate(values);
+    handleUpdate(values, intl);
   };
 
   return (
@@ -93,7 +95,7 @@
               onFinish={handleFinish}
               submitter={{
                 searchConfig: {
-                  submitText: '鏇存柊鍩烘湰淇℃伅',
+                  submitText: intl.formatMessage({ id: 'personal.base.button.name', defaultMessage: '鏇存柊鍩烘湰淇℃伅' }),
                 },
                 render: (_, dom) => dom[1],
               }}
diff --git a/zy-asrs-flow/src/pages/account/setting/components/security.jsx b/zy-asrs-flow/src/pages/account/setting/components/security.jsx
index 83cc5fb..95a5dcc 100644
--- a/zy-asrs-flow/src/pages/account/setting/components/security.jsx
+++ b/zy-asrs-flow/src/pages/account/setting/components/security.jsx
@@ -4,15 +4,16 @@
   ProForm,
   ProFormText
 } from '@ant-design/pro-components';
+import { FormattedMessage, useIntl } from '@umijs/max';
 import { useModel } from '@umijs/max';
 import Http from '@/utils/http';
 
-const resetPwd = async (val, form) => {
-  const hide = message.loading('姝e湪淇敼');
+const resetPwd = async (val, form, intl) => {
+  const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '姝e湪淇敼' }));
   try {
     const resp = await Http.doPost('api/user/reset/pwd', val);
     if (resp.code === 200) {
-      message.success('淇敼鎴愬姛');
+      message.success(intl.formatMessage({ id: 'page.update.success', defaultMessage: '淇敼鎴愬姛' }));
       form.resetFields();
       return true;
     } else {
@@ -20,7 +21,7 @@
       return false;
     }
   } catch (error) {
-    message.error('淇敼澶辫触璇烽噸璇曪紒');
+    message.error(intl.formatMessage({ id: 'page.update.fail', defaultMessage: '淇敼澶辫触璇烽噸璇曪紒' }));
     return false;
   } finally {
     hide();
@@ -28,12 +29,13 @@
 };
 
 const SecurityView = () => {
+  const intl = useIntl();
   const [form] = Form.useForm();
   const { initialState } = useModel('@@initialState');
   const { currentUser } = initialState || {};
 
   const handleFinish = (values) => {
-    resetPwd({...values, id: currentUser.id}, form);
+    resetPwd({ ...values, id: currentUser.id }, form, intl);
   }
 
   return (
@@ -45,7 +47,7 @@
           onFinish={handleFinish}
           submitter={{
             searchConfig: {
-              submitText: '淇敼瀵嗙爜',
+              submitText: intl.formatMessage({ id: 'personal.security.button.name', defaultMessage: '淇敼瀵嗙爜' }),
             },
             render: (_, dom) => dom[1],
           }}
@@ -53,29 +55,27 @@
           <ProFormText.Password
             width="md"
             name="oldPwd"
-            label="褰撳墠瀵嗙爜"
+            label={intl.formatMessage({ id: 'personal.security.cur.pwd', defaultMessage: '褰撳墠瀵嗙爜' })}
             rules={[
               {
                 required: true,
-                message: '璇疯緭鍏ュ綋鍓嶅瘑鐮�!',
               },
             ]}
           />
           <ProFormText.Password
             width="md"
             name="password"
-            label="鏂板瘑鐮�"
+            label={intl.formatMessage({ id: 'personal.security.new.pwd', defaultMessage: '鏂板瘑鐮�' })}
             rules={[
               {
                 required: true,
-                message: '璇疯緭鍏ユ柊瀵嗙爜!',
               },
               {
                 validator(_, value) {
                   if (value.length >= 4 && value.length <= 16) {
                     return Promise.resolve();
                   }
-                  return Promise.reject(new Error('鏂板瘑鐮佸繀椤绘槸4鍒�16涓瓧绗�!'));
+                  return Promise.reject(new Error(intl.formatMessage({ id: 'personal.security.new.pwd.rule.length', defaultMessage: '鏂板瘑鐮佸繀椤绘槸4鍒�16涓瓧绗�!' })));
                 },
               },
             ]}
@@ -83,16 +83,15 @@
           <ProFormText.Password
             width="md"
             name="passwordRepeat"
-            label="纭瀵嗙爜"
+            label={intl.formatMessage({ id: 'personal.security.new.pwd.confirm', defaultMessage: '纭瀵嗙爜' })}
             rules={[
               {
                 required: true,
-                message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜!',
               },
               {
                 validator(_, value) {
                   if (form.getFieldValue('password') === value) return Promise.resolve();
-                  return Promise.reject(new Error('涓ゆ杈撳叆鐨勫瘑鐮佷笉鐩哥!'));
+                  return Promise.reject(new Error(intl.formatMessage({ id: 'personal.security.new.pwd.rule.check', defaultMessage: '涓ゆ杈撳叆鐨勫瘑鐮佷笉鐩哥!' })));
                 }
               }
             ]}
diff --git a/zy-asrs-flow/src/pages/account/setting/index.jsx b/zy-asrs-flow/src/pages/account/setting/index.jsx
index 85141e9..19c153d 100644
--- a/zy-asrs-flow/src/pages/account/setting/index.jsx
+++ b/zy-asrs-flow/src/pages/account/setting/index.jsx
@@ -1,26 +1,28 @@
 import { GridContent } from '@ant-design/pro-components';
 import { Menu } from 'antd';
 import React, { useLayoutEffect, useRef, useState } from 'react';
+import { FormattedMessage, useIntl } from '@umijs/max';
 import BaseView from './components/base';
 import SecurityView from './components/security';
 import useStyles from './style.style';
 
-const menuMap = {
-    base: '鍩烘湰璁剧疆',
-    security: '瀹夊叏璁剧疆',
-};
-
-const getMenu = () => {
-    return Object.keys(menuMap).map((item) => ({ key: item, label: menuMap[item] }));
-};
-
 const Settings = () => {
+    const intl = useIntl();
     const { styles } = useStyles();
     const [initConfig, setInitConfig] = useState({
         mode: 'inline',
         selectKey: 'base',
     });
 
+    const menuMap = {
+        base: intl.formatMessage({ id: 'personal.base.setting', defaultMessage: '鍩烘湰璁剧疆' }),
+        security: intl.formatMessage({ id: 'personal.security.setting', defaultMessage: '瀹夊叏璁剧疆' }),
+    };
+    
+    const getMenu = () => {
+        return Object.keys(menuMap).map((item) => ({ key: item, label: menuMap[item] }));
+    };
+
     const dom = useRef();
 
     const resize = () => {
diff --git a/zy-asrs-flow/src/pages/system/dept/components/edit.jsx b/zy-asrs-flow/src/pages/system/dept/components/edit.jsx
index 188f718..6f6b6c5 100644
--- a/zy-asrs-flow/src/pages/system/dept/components/edit.jsx
+++ b/zy-asrs-flow/src/pages/system/dept/components/edit.jsx
@@ -8,10 +8,12 @@
     ProFormTreeSelect
 } from '@ant-design/pro-components';
 import { Form, Modal } from 'antd';
+import { FormattedMessage, useIntl } from '@umijs/max';
 import moment from 'moment';
 import Http from '@/utils/http';
 
 const Edit = (props) => {
+    const intl = useIntl();
     const [form] = Form.useForm();
     const { } = props;
 
@@ -37,7 +39,11 @@
     return (
         <>
             <Modal
-                title="Edit"
+                title={
+                    Object.keys(props.values).length > 0
+                        ? intl.formatMessage({ id: 'page.edit', defaultMessage: '缂栬緫' })
+                        : intl.formatMessage({ id: 'page.add', defaultMessage: '娣诲姞' })
+                }
                 width={640}
                 forceRender
                 destroyOnClose
diff --git a/zy-asrs-flow/src/pages/system/dept/index.jsx b/zy-asrs-flow/src/pages/system/dept/index.jsx
index 154b647..717e854 100644
--- a/zy-asrs-flow/src/pages/system/dept/index.jsx
+++ b/zy-asrs-flow/src/pages/system/dept/index.jsx
@@ -7,6 +7,7 @@
     ProTable,
     LightFilter,
 } from '@ant-design/pro-components';
+import { FormattedMessage, useIntl } from '@umijs/max';
 import { PlusOutlined, ExportOutlined } from '@ant-design/icons';
 import Http from '@/utils/http';
 import Edit from './components/edit'
@@ -17,74 +18,74 @@
 
 const TABLE_KEY = "pro-table-dept";
 
-const handleSave = async (val) => {
-    const hide = message.loading('姝e湪娣诲姞');
+const handleSave = async (val, intl) => {
+    const hide = message.loading(intl.formatMessage({ id: 'page.adding', defaultMessage: '姝e湪娣诲姞' }));
     try {
         const resp = await Http.doPost('api/dept/save', val);
         if (resp.code === 200) {
-            message.success('娣诲姞鎴愬姛');
+            message.success(intl.formatMessage({ id: 'page.add.success', defaultMessage: '娣诲姞鎴愬姛' }));
             return true;
         } else {
             message.error(resp.msg);
             return false;
         }
     } catch (error) {
-        message.error('娣诲姞澶辫触璇烽噸璇曪紒');
+        message.error(intl.formatMessage({ id: 'page.add.fail', defaultMessage: '娣诲姞澶辫触璇烽噸璇曪紒' }));
         return false;
     } finally {
         hide();
     }
 };
 
-const handleUpdate = async (val) => {
-    const hide = message.loading('姝e湪鏇存柊');
+const handleUpdate = async (val, intl) => {
+    const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '姝e湪鏇存柊' }));
     try {
         const resp = await Http.doPost('api/dept/update', val);
         if (resp.code === 200) {
-            message.success('鏇存柊鎴愬姛');
+            message.success(intl.formatMessage({ id: 'page.update.success', defaultMessage: '鏇存柊鎴愬姛' }));
             return true;
         } else {
             message.error(resp.msg);
             return false;
         }
     } catch (error) {
-        message.error('閰嶇疆澶辫触璇烽噸璇曪紒');
+        message.error(intl.formatMessage({ id: 'page.update.fail', defaultMessage: '鏇存柊澶辫触璇烽噸璇曪紒' }));
         return false;
     } finally {
         hide();
     }
 };
 
-const handleRemove = async (rows) => {
+const handleRemove = async (rows, intl) => {
     if (!rows) return true;
-    const hide = message.loading('姝e湪鍒犻櫎');
+    const hide = message.loading(intl.formatMessage({ id: 'page.deleting', defaultMessage: '姝e湪鍒犻櫎' }));
     try {
         const resp = await Http.doPost('api/dept/remove/' + rows.map((row) => row.id).join(','));
         if (resp.code === 200) {
-            message.success('鍒犻櫎鎴愬姛');
+            message.success(intl.formatMessage({ id: 'page.delete.success', defaultMessage: '鍒犻櫎鎴愬姛' }));
             return true;
         } else {
             message.error(resp.msg);
             return false;
         }
     } catch (error) {
-        message.error('鍒犻櫎澶辫触锛岃閲嶈瘯');
+        message.error(intl.formatMessage({ id: 'page.delete.fail', defaultMessage: '鍒犻櫎澶辫触锛岃閲嶈瘯锛�' }));
         return false;
     } finally {
         hide();
     }
 };
 
-const handleExport = async () => {
-    const hide = message.loading('姝e湪瀵煎嚭');
+const handleExport = async (intl) => {
+    const hide = message.loading(intl.formatMessage({ id: 'page.exporting', defaultMessage: '姝e湪瀵煎嚭' }));
     try {
         const resp = await Http.doPostBlob('api/dept/export');
         const blob = new Blob([resp], { type: 'application/vnd.ms-excel' });
         window.location.href = window.URL.createObjectURL(blob);
-        message.success('瀵煎嚭鎴愬姛');
+        message.success(intl.formatMessage({ id: 'page.export.success', defaultMessage: '瀵煎嚭鎴愬姛' }));
         return true;
     } catch (error) {
-        message.error('瀵煎嚭澶辫触锛岃閲嶈瘯');
+        message.error(intl.formatMessage({ id: 'page.export.fail', defaultMessage: '瀵煎嚭澶辫触锛岃閲嶈瘯' }));
         return false;
     } finally {
         hide();
@@ -93,6 +94,7 @@
 
 
 const Main = () => {
+    const intl = useIntl();
     const formTableRef = useRef();
     const actionRef = useRef();
     const [selectedRows, setSelectedRows] = useState([]);
@@ -303,7 +305,7 @@
                         setCurrentRow(record);
                     }}
                 >
-                    缂栬緫
+                    <FormattedMessage id='page.edit' defaultMessage='缂栬緫' />
                 </Button>,
                 <Button
                     type="link"
@@ -311,10 +313,10 @@
                     key="batchRemove"
                     onClick={async () => {
                         Modal.confirm({
-                            title: '鍒犻櫎',
-                            content: '纭畾鍒犻櫎璇ラ」鍚楋紵',
+                            title: intl.formatMessage({ id: 'page.delete', defaultMessage: '鍒犻櫎' }),
+                            content: intl.formatMessage({ id: 'page.delete.confirm', defaultMessage: '纭畾鍒犻櫎璇ラ」鍚楋紵' }),
                             onOk: async () => {
-                                const success = await handleRemove([record]);
+                                const success = await handleRemove([record], intl);
                                 if (success) {
                                     if (actionRef.current) {
                                         actionRef.current.reload();
@@ -324,7 +326,7 @@
                         });
                     }}
                 >
-                    鍒犻櫎
+                    <FormattedMessage id='page.delete' defaultMessage='鍒犻櫎' />
                 </Button>,
             ],
         },
@@ -374,16 +376,16 @@
                                 }}
                             >
                                 <PlusOutlined />
-                                娣诲姞
+                                <FormattedMessage id='page.add' defaultMessage='娣诲姞' />
                             </Button>,
                             <Button
                                 key="export"
                                 onClick={async () => {
-                                    handleExport();
+                                    handleExport(intl);
                                 }}
                             >
                                 <ExportOutlined />
-                                瀵煎嚭
+                                <FormattedMessage id='page.export' defaultMessage='瀵煎嚭' />
                             </Button>,
                         ],
                     }}
@@ -427,9 +429,8 @@
                 <FooterToolbar
                     extra={
                         <div>
-                            宸查�夋嫨
                             <a style={{ fontWeight: 600 }}>{selectedRows.length}</a>
-                            椤�
+                            <FormattedMessage id='page.selected' defaultMessage=' 椤瑰凡閫夋嫨' />
                         </div>
                     }
                 >
@@ -438,10 +439,10 @@
                         danger
                         onClick={async () => {
                             Modal.confirm({
-                                title: '鍒犻櫎',
-                                content: '纭畾鍒犻櫎璇ラ」鍚楋紵',
+                                title: intl.formatMessage({ id: 'page.delete', defaultMessage: '鍒犻櫎' }),
+                                content: intl.formatMessage({ id: 'page.delete.confirm', defaultMessage: '纭畾鍒犻櫎璇ラ」鍚楋紵' }),
                                 onOk: async () => {
-                                    const success = await handleRemove(selectedRows);
+                                    const success = await handleRemove(selectedRows, intl);
                                     if (success) {
                                         setSelectedRows([]);
                                         actionRef.current?.reloadAndRest?.();
@@ -450,7 +451,7 @@
                             });
                         }}
                     >
-                        鎵归噺鍒犻櫎
+                        <FormattedMessage id='page.delete.batch' defaultMessage='鎵归噺鍒犻櫎' />
                     </Button>
                 </FooterToolbar>
             )}
@@ -468,9 +469,9 @@
                 onSubmit={async (values) => {
                     let ok = false;
                     if (values.id) {
-                        ok = await handleUpdate({ ...values })
+                        ok = await handleUpdate({ ...values }, intl)
                     } else {
-                        ok = await handleSave({ ...values })
+                        ok = await handleSave({ ...values }, intl)
                     }
                     if (ok) {
                         setModalVisible(false);
diff --git a/zy-asrs-flow/src/pages/system/host/components/edit.jsx b/zy-asrs-flow/src/pages/system/host/components/edit.jsx
index 4950fb5..a761c78 100644
--- a/zy-asrs-flow/src/pages/system/host/components/edit.jsx
+++ b/zy-asrs-flow/src/pages/system/host/components/edit.jsx
@@ -7,10 +7,12 @@
     ProFormDateTimePicker
 } from '@ant-design/pro-components';
 import { Form, Modal } from 'antd';
+import { FormattedMessage, useIntl } from '@umijs/max';
 import moment from 'moment';
 import Http from '@/utils/http';
 
 const Edit = (props) => {
+    const intl = useIntl();
     const [form] = Form.useForm();
     const { } = props;
 
@@ -36,7 +38,11 @@
     return (
         <>
             <Modal
-                title="Edit"
+                title={
+                    Object.keys(props.values).length > 0
+                    ? intl.formatMessage({ id: 'page.edit', defaultMessage: '缂栬緫' })
+                    : intl.formatMessage({ id: 'page.add', defaultMessage: '娣诲姞' })
+                }
                 width={640}
                 forceRender
                 destroyOnClose
@@ -61,14 +67,12 @@
                             name="name"
                             label="鍚嶇О"
                             colProps={{ md: 12, xl: 12 }}
-                            placeholder="璇疯緭鍏�"
                             rules={[{ required: true, message: "鍚嶇О涓嶈兘涓虹┖锛�" }]}
                         />
                         <ProFormSelect
                             name="status"
                             label="鐘舵��"
                             colProps={{ md: 12, xl: 12 }}
-                            placeholder="璇烽�夋嫨"
                             options={[
                                 { label: '姝e父', value: 1 },
                                 { label: '绂佺敤', value: 0 },
@@ -80,14 +84,12 @@
                             name="createTime"
                             label="娣诲姞鏃堕棿"
                             colProps={{ md: 12, xl: 12 }}
-                            placeholder="璇烽�夋嫨"
                             transform={(value) => moment(value).toISOString()}
                         />
                         <ProFormDateTimePicker
                             name="updateTime"
                             label="淇敼鏃堕棿"
                             colProps={{ md: 12, xl: 12 }}
-                            placeholder="璇烽�夋嫨"
                             transform={(value) => moment(value).toISOString()}
                         />
                     </ProForm.Group>
diff --git a/zy-asrs-flow/src/pages/system/host/index.jsx b/zy-asrs-flow/src/pages/system/host/index.jsx
index 8f96bc3..7f81166 100644
--- a/zy-asrs-flow/src/pages/system/host/index.jsx
+++ b/zy-asrs-flow/src/pages/system/host/index.jsx
@@ -7,90 +7,89 @@
     ProTable,
     LightFilter,
 } from '@ant-design/pro-components';
+import { FormattedMessage, useIntl } from '@umijs/max';
 import { PlusOutlined, ExportOutlined } from '@ant-design/icons';
 import Http from '@/utils/http';
 import Edit from './components/edit'
 import { TextFilter, SelectFilter, DatetimeRangeFilter, LinkFilter } from '@/components/TableSearch'
 import { repairBug } from '@/utils/common-util';
 import { statusMap } from '@/utils/enum-util'
-import { FormattedMessage, useIntl } from '@umijs/max';
 
 const TABLE_KEY = "pro-table-host";
 
-const handleSave = async (val) => {
-    const hide = message.loading('姝e湪娣诲姞');
+const handleSave = async (val, intl) => {
+    const hide = message.loading(intl.formatMessage({ id: 'page.adding', defaultMessage: '姝e湪娣诲姞' }));
     try {
         const resp = await Http.doPost('api/host/save', val);
         if (resp.code === 200) {
-            message.success('娣诲姞鎴愬姛');
+            message.success(intl.formatMessage({ id: 'page.add.success', defaultMessage: '娣诲姞鎴愬姛' }));
             return true;
         } else {
             message.error(resp.msg);
             return false;
         }
     } catch (error) {
-        message.error('娣诲姞澶辫触璇烽噸璇曪紒');
+        message.error(intl.formatMessage({ id: 'page.add.fail', defaultMessage: '娣诲姞澶辫触璇烽噸璇曪紒' }));
         return false;
     } finally {
         hide();
     }
 };
 
-const handleUpdate = async (val) => {
-    const hide = message.loading('姝e湪鏇存柊');
+const handleUpdate = async (val, intl) => {
+    const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '姝e湪鏇存柊' }));
     try {
         const resp = await Http.doPost('api/host/update', val);
         if (resp.code === 200) {
-            message.success('鏇存柊鎴愬姛');
+            message.success(intl.formatMessage({ id: 'page.update.success', defaultMessage: '鏇存柊鎴愬姛' }));
             return true;
         } else {
             message.error(resp.msg);
             return false;
         }
     } catch (error) {
-        message.error('閰嶇疆澶辫触璇烽噸璇曪紒');
+        message.error(intl.formatMessage({ id: 'page.update.fail', defaultMessage: '鏇存柊澶辫触璇烽噸璇曪紒' }));
         return false;
     } finally {
         hide();
     }
 };
 
-const handleRemove = async (rows) => {
+const handleRemove = async (rows, intl) => {
     if (!rows) return true;
-    const hide = message.loading('姝e湪鍒犻櫎');
+    const hide = message.loading(intl.formatMessage({ id: 'page.deleting', defaultMessage: '姝e湪鍒犻櫎' }));
     try {
         const resp = await Http.doPost('api/host/remove/' + rows.map((row) => row.id).join(','));
         if (resp.code === 200) {
-            message.success('鍒犻櫎鎴愬姛');
+            message.success(intl.formatMessage({ id: 'page.delete.success', defaultMessage: '鍒犻櫎鎴愬姛' }));
             return true;
         } else {
             message.error(resp.msg);
             return false;
         }
     } catch (error) {
-        message.error('鍒犻櫎澶辫触锛岃閲嶈瘯');
+        message.error(intl.formatMessage({ id: 'page.delete.fail', defaultMessage: '鍒犻櫎澶辫触锛岃閲嶈瘯锛�' }));
         return false;
     } finally {
         hide();
     }
 };
 
-const handleExport = async () => {
-    const hide = message.loading('姝e湪瀵煎嚭');
+const handleExport = async (intl) => {
+    const hide = message.loading(intl.formatMessage({ id: 'page.exporting', defaultMessage: '姝e湪瀵煎嚭' }));
     try {
         const resp = await Http.doPostBlob('api/host/export');
         const blob = new Blob([resp], { type: 'application/vnd.ms-excel' });
         window.location.href = window.URL.createObjectURL(blob);
-        message.success('瀵煎嚭鎴愬姛');
+        message.success(intl.formatMessage({ id: 'page.export.success', defaultMessage: '瀵煎嚭鎴愬姛' }));
         return true;
     } catch (error) {
-        message.error('瀵煎嚭澶辫触锛岃閲嶈瘯');
+        message.error(intl.formatMessage({ id: 'page.export.fail', defaultMessage: '瀵煎嚭澶辫触锛岃閲嶈瘯' }));
         return false;
     } finally {
         hide();
     }
 };
-
 
 const Main = () => {
     const intl = useIntl();
@@ -204,7 +203,7 @@
                         setCurrentRow(record);
                     }}
                 >
-                    缂栬緫
+                    <FormattedMessage id='page.edit' defaultMessage='缂栬緫' />
                 </Button>,
                 <Button
                     type="link"
@@ -212,10 +211,10 @@
                     key="batchRemove"
                     onClick={async () => {
                         Modal.confirm({
-                            title: '鍒犻櫎',
-                            content: '纭畾鍒犻櫎璇ラ」鍚楋紵',
+                            title: intl.formatMessage({ id: 'page.delete', defaultMessage: '鍒犻櫎' }),
+                            content: intl.formatMessage({ id: 'page.delete.confirm', defaultMessage: '纭畾鍒犻櫎璇ラ」鍚楋紵' }),
                             onOk: async () => {
-                                const success = await handleRemove([record]);
+                                const success = await handleRemove([record], intl);
                                 if (success) {
                                     if (actionRef.current) {
                                         actionRef.current.reload();
@@ -225,7 +224,7 @@
                         });
                     }}
                 >
-                    鍒犻櫎
+                    <FormattedMessage id='page.delete' defaultMessage='鍒犻櫎' />
                 </Button>,
             ],
         },
@@ -275,16 +274,16 @@
                                 }}
                             >
                                 <PlusOutlined />
-                                <FormattedMessage id='page.save' defaultMessage='Add' />
+                                <FormattedMessage id='page.add' defaultMessage='娣诲姞' />
                             </Button>,
                             <Button
                                 key="export"
                                 onClick={async () => {
-                                    handleExport();
+                                    handleExport(intl);
                                 }}
                             >
                                 <ExportOutlined />
-                                瀵煎嚭
+                                <FormattedMessage id='page.export' defaultMessage='瀵煎嚭' />
                             </Button>,
                         ],
                     }}
@@ -318,9 +317,8 @@
                 <FooterToolbar
                     extra={
                         <div>
-                            宸查�夋嫨
                             <a style={{ fontWeight: 600 }}>{selectedRows.length}</a>
-                            椤�
+                            <FormattedMessage id='page.selected' defaultMessage=' 椤瑰凡閫夋嫨' />
                         </div>
                     }
                 >
@@ -329,10 +327,10 @@
                         danger
                         onClick={async () => {
                             Modal.confirm({
-                                title: '鍒犻櫎',
-                                content: '纭畾鍒犻櫎璇ラ」鍚楋紵',
+                                title: intl.formatMessage({ id: 'page.delete', defaultMessage: '鍒犻櫎' }),
+                                content: intl.formatMessage({ id: 'page.delete.confirm', defaultMessage: '纭畾鍒犻櫎璇ラ」鍚楋紵' }),
                                 onOk: async () => {
-                                    const success = await handleRemove(selectedRows);
+                                    const success = await handleRemove(selectedRows, intl);
                                     if (success) {
                                         setSelectedRows([]);
                                         actionRef.current?.reloadAndRest?.();
@@ -341,7 +339,7 @@
                             });
                         }}
                     >
-                        鎵归噺鍒犻櫎
+                        <FormattedMessage id='page.delete.batch' defaultMessage='鎵归噺鍒犻櫎' />
                     </Button>
                 </FooterToolbar>
             )}
@@ -358,9 +356,9 @@
                 onSubmit={async (values) => {
                     let ok = false;
                     if (values.id) {
-                        ok = await handleUpdate({ ...values })
+                        ok = await handleUpdate({ ...values }, intl)
                     } else {
-                        ok = await handleSave({ ...values })
+                        ok = await handleSave({ ...values }, intl)
                     }
                     if (ok) {
                         setModalVisible(false);
diff --git a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java
index a557854..755b764 100644
--- a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java
+++ b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java
@@ -919,12 +919,6 @@
             if (!Cools.isEmpty(precision) && Cools.isEmpty(column.getEnums())) {
                 sb.append("                            fieldProps={{ precision: ").append(precision).append(" }}\n");
             }
-            if ("Date".equals(column.getType()) || !Cools.isEmpty(column.getEnums()) || !Cools.isEmpty(column.getForeignKeyMajor())){
-                // 鏃堕棿銆佹灇涓�  鏍煎紡鍖�  涓婚敭淇グ
-                sb.append("                            placeholder=\"璇烽�夋嫨\"\n");
-            } else {
-                sb.append("                            placeholder=\"璇疯緭鍏"\n");
-            }
 
             // 闈炵┖
             if (column.isNotNull()) {
diff --git a/zy-asrs-framework/src/main/resources/templates/react/Edit.txt b/zy-asrs-framework/src/main/resources/templates/react/Edit.txt
index b3e5ab4..cf8b9f5 100644
--- a/zy-asrs-framework/src/main/resources/templates/react/Edit.txt
+++ b/zy-asrs-framework/src/main/resources/templates/react/Edit.txt
@@ -7,10 +7,12 @@
     ProFormDateTimePicker
 } from '@ant-design/pro-components';
 import { Form, Modal } from 'antd';
+import { FormattedMessage, useIntl } from '@umijs/max';
 import moment from 'moment';
 import Http from '@/utils/http';
 
 const Edit = (props) => {
+    const intl = useIntl();
     const [form] = Form.useForm();
     const { } = props;
 
@@ -36,7 +38,11 @@
     return (
         <>
             <Modal
-                title="Edit"
+                title={
+                    Object.keys(props.values).length > 0
+                        ? intl.formatMessage({ id: 'page.edit', defaultMessage: '缂栬緫' })
+                        : intl.formatMessage({ id: 'page.add', defaultMessage: '娣诲姞' })
+                }
                 width={640}
                 forceRender
                 destroyOnClose
diff --git a/zy-asrs-framework/src/main/resources/templates/react/Index.txt b/zy-asrs-framework/src/main/resources/templates/react/Index.txt
index 73a7514..44a7174 100644
--- a/zy-asrs-framework/src/main/resources/templates/react/Index.txt
+++ b/zy-asrs-framework/src/main/resources/templates/react/Index.txt
@@ -7,6 +7,7 @@
     ProTable,
     LightFilter,
 } from '@ant-design/pro-components';
+import { FormattedMessage, useIntl } from '@umijs/max';
 import { PlusOutlined, ExportOutlined } from '@ant-design/icons';
 import Http from '@/utils/http';
 import Edit from './components/edit'
@@ -16,74 +17,74 @@
 
 const TABLE_KEY = 'pro-table-@{SIMPLEENTITYNAME}';
 
-const handleSave = async (val) => {
-    const hide = message.loading('姝e湪娣诲姞');
+const handleSave = async (val, intl) => {
+    const hide = message.loading(intl.formatMessage({ id: 'page.adding', defaultMessage: '姝e湪娣诲姞' }));
     try {
         const resp = await Http.doPost('api/@{SIMPLEENTITYNAME}/save', val);
         if (resp.code === 200) {
-            message.success('娣诲姞鎴愬姛');
+            message.success(intl.formatMessage({ id: 'page.add.success', defaultMessage: '娣诲姞鎴愬姛' }));
             return true;
         } else {
             message.error(resp.msg);
             return false;
         }
     } catch (error) {
-        message.error('娣诲姞澶辫触璇烽噸璇曪紒');
+        message.error(intl.formatMessage({ id: 'page.add.fail', defaultMessage: '娣诲姞澶辫触璇烽噸璇曪紒' }));
         return false;
     } finally {
         hide();
     }
 };
 
-const handleUpdate = async (val) => {
-    const hide = message.loading('姝e湪鏇存柊');
+const handleUpdate = async (val, intl) => {
+    const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '姝e湪鏇存柊' }));
     try {
         const resp = await Http.doPost('api/@{SIMPLEENTITYNAME}/update', val);
         if (resp.code === 200) {
-            message.success('鏇存柊鎴愬姛');
+            message.success(intl.formatMessage({ id: 'page.update.success', defaultMessage: '鏇存柊鎴愬姛' }));
             return true;
         } else {
             message.error(resp.msg);
             return false;
         }
     } catch (error) {
-        message.error('閰嶇疆澶辫触璇烽噸璇曪紒');
+        message.error(intl.formatMessage({ id: 'page.update.fail', defaultMessage: '鏇存柊澶辫触璇烽噸璇曪紒' }));
         return false;
     } finally {
         hide();
     }
 };
 
-const handleRemove = async (rows) => {
+const handleRemove = async (rows, intl) => {
     if (!rows) return true;
-    const hide = message.loading('姝e湪鍒犻櫎');
+    const hide = message.loading(intl.formatMessage({ id: 'page.deleting', defaultMessage: '姝e湪鍒犻櫎' }));
     try {
         const resp = await Http.doPost('api/@{SIMPLEENTITYNAME}/remove/' + rows.map((row) => row.id).join(','));
         if (resp.code === 200) {
-            message.success('鍒犻櫎鎴愬姛');
+            message.success(intl.formatMessage({ id: 'page.delete.success', defaultMessage: '鍒犻櫎鎴愬姛' }));
             return true;
         } else {
             message.error(resp.msg);
             return false;
         }
     } catch (error) {
-        message.error('鍒犻櫎澶辫触锛岃閲嶈瘯');
+        message.error(intl.formatMessage({ id: 'page.delete.fail', defaultMessage: '鍒犻櫎澶辫触锛岃閲嶈瘯锛�' }));
         return false;
     } finally {
         hide();
     }
 };
 
-const handleExport = async () => {
-    const hide = message.loading('姝e湪瀵煎嚭');
+const handleExport = async (intl) => {
+    const hide = message.loading(intl.formatMessage({ id: 'page.exporting', defaultMessage: '姝e湪瀵煎嚭' }));
     try {
         const resp = await Http.doPostBlob('api/@{SIMPLEENTITYNAME}/export');
         const blob = new Blob([resp], { type: 'application/vnd.ms-excel' });
         window.location.href = window.URL.createObjectURL(blob);
-        message.success('瀵煎嚭鎴愬姛');
+        message.success(intl.formatMessage({ id: 'page.export.success', defaultMessage: '瀵煎嚭鎴愬姛' }));
         return true;
     } catch (error) {
-        message.error('瀵煎嚭澶辫触锛岃閲嶈瘯');
+        message.error(intl.formatMessage({ id: 'page.export.fail', defaultMessage: '瀵煎嚭澶辫触锛岃閲嶈瘯' }));
         return false;
     } finally {
         hide();
@@ -92,6 +93,7 @@
 
 
 const Main = () => {
+    const intl = useIntl();
     const formTableRef = useRef();
     const actionRef = useRef();
     const [selectedRows, setSelectedRows] = useState([]);
@@ -105,7 +107,10 @@
 
     const columns = [
         {
-            title: 'No',
+            title: intl.formatMessage({
+                id: 'page.table.no',
+                defaultMessage: 'No'
+            }),
             dataIndex: 'index',
             valueType: 'indexBorder',
             width: 48,
@@ -125,7 +130,7 @@
                         setCurrentRow(record);
                     }}
                 >
-                    缂栬緫
+                    <FormattedMessage id='page.edit' defaultMessage='缂栬緫' />
                 </Button>,
                 <Button
                     type="link"
@@ -133,10 +138,10 @@
                     key="batchRemove"
                     onClick={async () => {
                         Modal.confirm({
-                            title: '鍒犻櫎',
-                            content: '纭畾鍒犻櫎璇ラ」鍚楋紵',
+                            title: intl.formatMessage({ id: 'page.delete', defaultMessage: '鍒犻櫎' }),
+                            content: intl.formatMessage({ id: 'page.delete.confirm', defaultMessage: '纭畾鍒犻櫎璇ラ」鍚楋紵' }),
                             onOk: async () => {
-                                const success = await handleRemove([record]);
+                                const success = await handleRemove([record], intl);
                                 if (success) {
                                     if (actionRef.current) {
                                         actionRef.current.reload();
@@ -146,7 +151,7 @@
                         });
                     }}
                 >
-                    鍒犻櫎
+                    <FormattedMessage id='page.delete' defaultMessage='鍒犻櫎' />
                 </Button>,
             ],
         },
@@ -196,16 +201,16 @@
                                 }}
                             >
                                 <PlusOutlined />
-                                娣诲姞
+                                <FormattedMessage id='page.add' defaultMessage='娣诲姞' />
                             </Button>,
                             <Button
                                 key="export"
                                 onClick={async () => {
-                                    handleExport();
+                                    handleExport(intl);
                                 }}
                             >
                                 <ExportOutlined />
-                                瀵煎嚭
+                                <FormattedMessage id='page.export' defaultMessage='瀵煎嚭' />
                             </Button>,
                         ],
                     }}
@@ -240,9 +245,8 @@
                 <FooterToolbar
                     extra={
                         <div>
-                            宸查�夋嫨
                             <a style={{ fontWeight: 600 }}>{selectedRows.length}</a>
-                            椤�
+                            <FormattedMessage id='page.selected' defaultMessage=' 椤瑰凡閫夋嫨' />
                         </div>
                     }
                 >
@@ -251,10 +255,10 @@
                         danger
                         onClick={async () => {
                             Modal.confirm({
-                                title: '鍒犻櫎',
-                                content: '纭畾鍒犻櫎璇ラ」鍚楋紵',
+                                title: intl.formatMessage({ id: 'page.delete', defaultMessage: '鍒犻櫎' }),
+                                content: intl.formatMessage({ id: 'page.delete.confirm', defaultMessage: '纭畾鍒犻櫎璇ラ」鍚楋紵' }),
                                 onOk: async () => {
-                                    const success = await handleRemove(selectedRows);
+                                    const success = await handleRemove(selectedRows, intl);
                                     if (success) {
                                         setSelectedRows([]);
                                         actionRef.current?.reloadAndRest?.();
@@ -263,7 +267,7 @@
                             });
                         }}
                     >
-                        鎵归噺鍒犻櫎
+                        <FormattedMessage id='page.delete.batch' defaultMessage='鎵归噺鍒犻櫎' />
                     </Button>
                 </FooterToolbar>
             )}
@@ -280,9 +284,9 @@
                 onSubmit={async (values) => {
                     let ok = false;
                     if (values.id) {
-                        ok = await handleUpdate({ ...values })
+                        ok = await handleUpdate({ ...values }, intl)
                     } else {
-                        ok = await handleSave({ ...values })
+                        ok = await handleSave({ ...values }, intl)
                     }
                     if (ok) {
                         setModalVisible(false);

--
Gitblit v1.9.1