#
luxiaotao1123
2024-02-28 a4f22fb631ae29430a3f76d49f547423816b7297
#
11个文件已修改
343 ■■■■■ 已修改文件
zy-asrs-flow/src/locales/en-US.ts 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/account/setting/components/base.jsx 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/account/setting/components/security.jsx 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/account/setting/index.jsx 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/system/dept/components/edit.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/system/dept/index.jsx 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/system/host/components/edit.jsx 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/system/host/index.jsx 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-framework/src/main/resources/templates/react/Edit.txt 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-framework/src/main/resources/templates/react/Index.txt 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
  '':'',
};
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('正在更新');
const handleUpdate = async (val, intl) => {
  const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '正在更新' }));
  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],
              }}
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('正在修改');
const resetPwd = async (val, form, intl) => {
  const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '正在修改' }));
  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: '两次输入的密码不相符!' })));
                }
              }
            ]}
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 = () => {
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
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('正在添加');
const handleSave = async (val, intl) => {
    const hide = message.loading(intl.formatMessage({ id: 'page.adding', defaultMessage: '正在添加' }));
    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('正在更新');
const handleUpdate = async (val, intl) => {
    const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '正在更新' }));
    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('正在删除');
    const hide = message.loading(intl.formatMessage({ id: 'page.deleting', defaultMessage: '正在删除' }));
    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('正在导出');
const handleExport = async (intl) => {
    const hide = message.loading(intl.formatMessage({ id: 'page.exporting', defaultMessage: '正在导出' }));
    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);
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: '正常', 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>
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('正在添加');
const handleSave = async (val, intl) => {
    const hide = message.loading(intl.formatMessage({ id: 'page.adding', defaultMessage: '正在添加' }));
    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('正在更新');
const handleUpdate = async (val, intl) => {
    const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '正在更新' }));
    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('正在删除');
    const hide = message.loading(intl.formatMessage({ id: 'page.deleting', defaultMessage: '正在删除' }));
    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('正在导出');
const handleExport = async (intl) => {
    const hide = message.loading(intl.formatMessage({ id: 'page.exporting', defaultMessage: '正在导出' }));
    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);
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()) {
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
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('正在添加');
const handleSave = async (val, intl) => {
    const hide = message.loading(intl.formatMessage({ id: 'page.adding', defaultMessage: '正在添加' }));
    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('正在更新');
const handleUpdate = async (val, intl) => {
    const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '正在更新' }));
    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('正在删除');
    const hide = message.loading(intl.formatMessage({ id: 'page.deleting', defaultMessage: '正在删除' }));
    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('正在导出');
const handleExport = async (intl) => {
    const hide = message.loading(intl.formatMessage({ id: 'page.exporting', defaultMessage: '正在导出' }));
    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);