Merge remote-tracking branch 'origin/master'

pull/59/head
shao1121353141 2023-09-26 21:23:54 +08:00
commit c0c0300082
6 changed files with 109 additions and 112 deletions

View File

@ -47,7 +47,7 @@
"@ant-design/charts": "^1.4.2",
"@ant-design/icons": "^5.2.6",
"@ant-design/maps": "^1.0.7",
"@ant-design/pro-components": "^2.6.25",
"@ant-design/pro-components": "^2.6.27",
"ahooks": "^3.7.8",
"antd": "^5.9.3",
"antd-img-crop": "^4.13.0",

View File

@ -89,11 +89,7 @@ export default () => {
loading ? (
<Skeleton active paragraph={{ rows: 1 }} />
) : (
<ProDescriptions
size="small"
column={isMobile ? 1 : 2}
dataSource={{ ...app }}
>
<ProDescriptions size="small" column={isMobile ? 1 : 2} dataSource={{ ...app }}>
<ProDescriptions.Item
dataIndex="type"
label={intl.formatMessage({ id: 'pages.app.config.detail.config.type' })}
@ -195,7 +191,16 @@ export default () => {
</Button>,
]}
tabActiveKey={tabActiveKey}
onTabChange={setTabActiveKey}
onTabChange={(key) => {
setTabActiveKey(key);
history.replace({
pathname: location.pathname,
search: queryString.stringify({
type: key,
id,
}),
});
}}
tabList={[
{
key: ConfigTabs.app_config,

View File

@ -45,7 +45,7 @@ export default {
'pages.app.config.detail.items.login_access.protocol_config.common.authorization_type':
'授权范围',
'pages.app.config.detail.items.login_access.protocol_config.common.authorization_type.extra':
'若选择手动授权,需要在 访问授权 中进行权限分配。',
'若选择手动授权,需要在【访问授权】中进行权限分配。',
'pages.app.config.detail.items.login_access.protocol_config.common.authorization_type.rule.0.message':
'请选择授权范围',
'pages.app.config.detail.items.login_access.protocol_config.common.authorization_type.option.0':

View File

@ -28,11 +28,9 @@ import queryString from 'query-string';
import { flushSync } from 'react-dom';
import classnames from 'classnames';
import useStyle from './style';
import Banner from '@/components/Banner';
import PageLoading from '@/components/PageLoading';
const prefixCls = 'login';
const showBanner = process.env.PREVIEW_ENV || process.env.NODE_ENV === 'development';
/**
*
@ -152,116 +150,107 @@ const Login: React.FC = () => {
<link rel="icon" href={'/favicon.ico'} />
</Helmet>
<div className={classnames(`${prefixCls}`)}>
{showBanner && <Banner />}
<div
style={{
backgroundColor: 'white',
height: 'calc(100vh - 48px)',
border: '1px solid rgb(240, 240, 240)',
<LoginFormPage
backgroundImageUrl={'/login-background.png'}
logo={'/full-logo.svg'}
subTitle={intl.formatMessage({
id: 'pages.layout.title',
})}
initialValues={{
'remember-me': false,
}}
form={form}
scrollToFirstError
submitter={{
searchConfig: {
submitText: intl.formatMessage({
id: 'pages.login.submit',
}),
},
render: (_, dom) => dom.pop(),
submitButtonProps: {
loading,
size: 'large',
style: {
width: '100%',
},
},
}}
onFinish={async (values) => {
run(values);
return data;
}}
>
<LoginFormPage
backgroundImageUrl={'/login-background.png'}
logo={'/full-logo.svg'}
subTitle={intl.formatMessage({
id: 'pages.layout.title',
})}
initialValues={{
'remember-me': false,
}}
form={form}
scrollToFirstError
submitter={{
searchConfig: {
submitText: intl.formatMessage({
id: 'pages.login.submit',
}),
},
render: (_, dom) => dom.pop(),
submitButtonProps: {
loading,
{userLoginState?.status !== RESULT_STATE.SUCCESS && userLoginState?.message && (
<>
<LoginMessage content={userLoginState?.message} />
<br />
</>
)}
<>
<ProFormText
name="username"
fieldProps={{
size: 'large',
style: {
width: '100%',
prefix: (
<UserOutlined className={classnames(`${prefixCls}-form-prefix-icon`)} />
),
autoComplete: 'off',
}}
placeholder={intl.formatMessage({
id: 'pages.login.username.placeholder',
})}
rules={[
{
required: true,
message: <FormattedMessage id="pages.login.username.required" />,
},
},
}}
onFinish={async (values) => {
run(values);
return data;
]}
/>
<ProFormText.Password
name="password"
fieldProps={{
size: 'large',
autoComplete: 'new-password',
prefix: (
<LockOutlined className={classnames(`${prefixCls}-form-prefix-icon`)} />
),
}}
placeholder={intl.formatMessage({
id: 'pages.login.password.placeholder',
})}
rules={[
{
required: true,
message: <FormattedMessage id="pages.login.password.required" />,
},
]}
/>
</>
<div
style={{
marginBottom: 24,
}}
>
{userLoginState?.status !== RESULT_STATE.SUCCESS && userLoginState?.message && (
<>
<LoginMessage content={userLoginState?.message} />
<br />
</>
)}
<>
<ProFormText
name="username"
fieldProps={{
size: 'large',
prefix: (
<UserOutlined className={classnames(`${prefixCls}-form-prefix-icon`)} />
),
autoComplete: 'off',
}}
placeholder={intl.formatMessage({
id: 'pages.login.username.placeholder',
})}
rules={[
{
required: true,
message: <FormattedMessage id="pages.login.username.required" />,
},
]}
/>
<ProFormText.Password
name="password"
fieldProps={{
size: 'large',
autoComplete: 'new-password',
prefix: (
<LockOutlined className={classnames(`${prefixCls}-form-prefix-icon`)} />
),
}}
placeholder={intl.formatMessage({
id: 'pages.login.password.placeholder',
})}
rules={[
{
required: true,
message: <FormattedMessage id="pages.login.password.required" />,
},
]}
/>
</>
<div
<ProFormCheckbox noStyle name="remember-me">
<FormattedMessage id="pages.login.remember-me" />
</ProFormCheckbox>
<a
style={{
marginBottom: 24,
float: 'right',
}}
onClick={async () => {
message.info(
intl.formatMessage({
id: 'app.not_yet_realized',
}),
);
}}
>
<ProFormCheckbox noStyle name="remember-me">
<FormattedMessage id="pages.login.remember-me" />
</ProFormCheckbox>
<a
style={{
float: 'right',
}}
onClick={async () => {
message.info(
intl.formatMessage({
id: 'app.not_yet_realized',
}),
);
}}
>
<FormattedMessage id="pages.login.forgot-password" />
</a>
</div>
</LoginFormPage>
</div>
<FormattedMessage id="pages.login.forgot-password" />
</a>
</div>
</LoginFormPage>
</div>
</>
) : (

View File

@ -23,6 +23,9 @@ const useStyle = createStyles(({ token, prefixCls }, prefix) => {
return {
main: {
[`${prefixClassName}`]: {
backgroundColor: 'white',
height: '100vh',
border: '1px solid rgb(240, 240, 240)',
[`${prefixClassName}-form-prefix-icon`]: {
color: token.colorPrimary,
fontSize: token.fontSize,

View File

@ -48,7 +48,7 @@
"@ant-design/charts": "^1.4.2",
"@ant-design/icons": "^5.2.6",
"@ant-design/maps": "^1.0.7",
"@ant-design/pro-components": "^2.6.25",
"@ant-design/pro-components": "^2.6.27",
"ahooks": "^3.7.8",
"antd": "^5.9.3",
"antd-img-crop": "^4.13.0",