Ver Fonte

暂时 去除敏感标题

Luka há 13 horas atrás
pai
commit
865d44371e

+ 1 - 1
.env.development

@@ -1,5 +1,5 @@
 # 页面标题
-VITE_APP_TITLE = 中华人民共和国海事局
+VITE_APP_TITLE = xxxxxxx
 
 # 开发环境配置
 VITE_APP_ENV = 'development'

+ 1 - 1
.env.production

@@ -1,5 +1,5 @@
 # 页面标题
-VITE_APP_TITLE = 中华人民共和国海事局
+VITE_APP_TITLE = xxxxxxx
 
 # 生产环境配置
 VITE_APP_ENV = 'production'

+ 1 - 1
index.html

@@ -8,7 +8,7 @@
   <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
   <meta name="referrer" content="no-referrer"/>
   <link rel="icon" href="./public/favicon.png">
-  <title>中华人民共和国海事局</title>
+  <title>xxxxx</title>
   <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
   <style>
     html,

+ 74 - 81
src/layout/components/Sidebar/Logo.vue

@@ -1,44 +1,37 @@
 <template>
-    <div
-        class="sidebar-logo-container"
-        :class="{ collapse: collapse }"
-        :style="{
-            backgroundColor:
-                sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground,
-        }"
-    >
-        <transition name="sidebarLogoFade">
-            <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
-                <img v-if="logo" :src="logo" class="sidebar-logo" />
-                <h1
-                    v-else
-                    class="sidebar-title"
-                    :style="{
-                        color:
-                            sideTheme === 'theme-dark'
-                                ? variables.logoTitleColor
-                                : variables.logoLightTitleColor,
-                    }"
-                >
-                    {{ title }}
-                </h1>
-            </router-link>
-            <router-link v-else key="expand" class="sidebar-logo-link" to="/">
-                <img v-if="logo" :src="logo" class="sidebar-logo" />
-                <h1
-                    class="sidebar-title"
-                    :style="{
-                        color:
-                            sideTheme === 'theme-dark'
-                                ? variables.logoTitleColor
-                                : variables.logoLightTitleColor,
-                    }"
-                >
-                    {{ title }}
-                </h1>
-            </router-link>
-        </transition>
-    </div>
+	<div
+		class="sidebar-logo-container"
+		:class="{ collapse: collapse }"
+		:style="{
+			backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground,
+		}"
+	>
+		<transition name="sidebarLogoFade">
+			<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
+				<img v-if="logo" :src="logo" class="sidebar-logo" />
+				<h1
+					v-else
+					class="sidebar-title"
+					:style="{
+						color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor,
+					}"
+				>
+					{{ title }}
+				</h1>
+			</router-link>
+			<router-link v-else key="expand" class="sidebar-logo-link" to="/">
+				<img v-if="logo" :src="logo" class="sidebar-logo" />
+				<h1
+					class="sidebar-title"
+					:style="{
+						color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor,
+					}"
+				>
+					{{ title }}
+				</h1>
+			</router-link>
+		</transition>
+	</div>
 </template>
 
 <script setup lang="ts">
@@ -49,65 +42,65 @@ import useSettingsStore from '@/store/modules/settings';
 import { ref, computed } from 'vue';
 
 defineProps({
-    collapse: {
-        type: Boolean,
-        required: true,
-    },
+	collapse: {
+		type: Boolean,
+		required: true,
+	},
 });
 
-const title = ref('中华人民共和国海事局');
+const title = ref('xxxxxxx');
 const settingsStore = useSettingsStore();
 const sideTheme = computed(() => settingsStore.sideTheme);
 </script>
 
 <style lang="scss" scoped>
 .sidebarLogoFade-enter-active {
-    transition: opacity 1.5s;
+	transition: opacity 1.5s;
 }
 
 .sidebarLogoFade-enter,
 .sidebarLogoFade-leave-to {
-    opacity: 0;
+	opacity: 0;
 }
 
 .sidebar-logo-container {
-    position: relative;
-    width: 100%;
-    height: 50px;
-    line-height: 50px;
-    background: #2b2f3a;
-    // text-align: center;
-    padding-left: 8px;
-    overflow: hidden;
+	position: relative;
+	width: 100%;
+	height: 50px;
+	line-height: 50px;
+	background: #2b2f3a;
+	// text-align: center;
+	padding-left: 8px;
+	overflow: hidden;
 
-    & .sidebar-logo-link {
-        height: 100%;
-        width: 100%;
+	& .sidebar-logo-link {
+		height: 100%;
+		width: 100%;
 
-        & .sidebar-logo {
-            display: inline-block;
-            width: 20px;
-            height: 20px;
-            vertical-align: middle;
-            margin-right: 6px;
-        }
+		& .sidebar-logo {
+			display: inline-block;
+			width: 20px;
+			height: 20px;
+			vertical-align: middle;
+			margin-right: 6px;
+		}
 
-        & .sidebar-title {
-            display: inline-block;
-            margin: 0;
-            color: #fff;
-            font-weight: 600;
-            line-height: 50px;
-            font-size: 15px;
-            font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
-            vertical-align: middle;
-        }
-    }
+		& .sidebar-title {
+			display: inline-block;
+			margin: 0;
+			color: #fff;
+			font-weight: 600;
+			line-height: 50px;
+			font-size: 15px;
+			font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
+			vertical-align: middle;
+		}
+	}
 
-    &.collapse {
-        .sidebar-logo {
-            margin-right: 0px;
-        }
-    }
+	&.collapse {
+		.sidebar-logo {
+			margin-right: 0px;
+		}
+	}
 }
 </style>

+ 1 - 1
src/views/addressBook/config/content.config.ts

@@ -1,5 +1,5 @@
 const contentConfig = {
-	pageName: 'contactPerson',
+	pageName: 'ntlo',
 	header: {
 		title: '行内联络员',
 	},

+ 1 - 1
src/views/addressBook/config/content.nonIndustry.config.ts

@@ -1,5 +1,5 @@
 const contentConfig = {
-	pageName: 'contactPerson',
+	pageName: 'ntlo',
 	header: {
 		title: '行外联络员',
 	},

+ 1 - 1
src/views/addressBook/config/detail.config.ts

@@ -1,5 +1,5 @@
 const modalConfig = {
-	pageName: 'contactPerson',
+	pageName: 'ntlo',
 	addTitle: '个人基本信息',
 	editTitle: '个人基本信息',
 	detailTitle: '个人基本信息',

+ 1 - 1
src/views/addressBook/config/detail.nonIndustry.config.ts

@@ -1,5 +1,5 @@
 const modalConfig = {
-	pageName: 'contactPerson',
+	pageName: 'ntlo',
 	addTitle: '个人基本信息',
 	editTitle: '个人基本信息',
 	detailTitle: '个人基本信息',

+ 1 - 1
src/views/addressBook/config/search.config.ts

@@ -4,7 +4,7 @@ interface Inew {
 }
 
 const searchConfig = {
-	pageName: 'contactPerson',
+	pageName: 'ntlo',
 	pageListParams: {
 		type: 'industry',
 		deptIds: '',

+ 1 - 1
src/views/addressBook/config/search.nonIndustry.config.ts

@@ -4,7 +4,7 @@ interface Inew {
 }
 
 const searchConfig = {
-	pageName: 'contactPerson',
+	pageName: 'ntlo',
 	pageListParams: {
 		type: 'nonIndustry',
 		deptIds: '',

+ 151 - 134
src/views/login.vue

@@ -1,30 +1,47 @@
 <template>
-    <div class="login">
-        <el-form v-if="isFlag" ref="loginFirstRef" :model="loginForm" :rules="loginRules" class="login-form">
-            <h3 class="title">中华人民共和国海事局</h3>
-            <el-form-item prop="username">
-                <el-input v-model="loginForm.username" type="text" size="large" auto-complete="off" placeholder="账号">
-                    <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template>
-                </el-input>
-            </el-form-item>
-            <el-form-item prop="password">
-                <el-input v-model="loginForm.password" type="password" size="large" auto-complete="off" placeholder="密码"
-                    @keyup.enter="handleAllLogin">
-                    <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
-                </el-input>
-            </el-form-item>
-            <el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px">记住密码</el-checkbox>
-            <el-form-item style="width: 100%">
-                <el-button :loading="loading" size="large" type="primary" style="width: 100%"
-                    @click.prevent="handleAllLogin">
-                    登 录
-                </el-button>
-                <div style="float: right" v-if="register">
-                    <router-link class="link-type" :to="'/register'">立即注册</router-link>
-                </div>
-            </el-form-item>
-        </el-form>
-    </div>
+	<div class="login">
+		<el-form v-if="isFlag" ref="loginFirstRef" :model="loginForm" :rules="loginRules" class="login-form">
+			<h3 class="title">xxxxxxx</h3>
+			<el-form-item prop="username">
+				<el-input
+					v-model="loginForm.username"
+					type="text"
+					size="large"
+					auto-complete="off"
+					placeholder="账号"
+				>
+					<template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template>
+				</el-input>
+			</el-form-item>
+			<el-form-item prop="password">
+				<el-input
+					v-model="loginForm.password"
+					type="password"
+					size="large"
+					auto-complete="off"
+					placeholder="密码"
+					@keyup.enter="handleAllLogin"
+				>
+					<template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
+				</el-input>
+			</el-form-item>
+			<el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px">记住密码</el-checkbox>
+			<el-form-item style="width: 100%">
+				<el-button
+					:loading="loading"
+					size="large"
+					type="primary"
+					style="width: 100%"
+					@click.prevent="handleAllLogin"
+				>
+					登 录
+				</el-button>
+				<div style="float: right" v-if="register">
+					<router-link class="link-type" :to="'/register'">立即注册</router-link>
+				</div>
+			</el-form-item>
+		</el-form>
+	</div>
 </template>
 
 <script setup lang="ts">
@@ -39,18 +56,18 @@ import { ref } from 'vue';
 const userStore = useUserStore();
 const router = useRouter();
 const loginForm = ref<any>({
-    username: '',
-    password: '',
-    rememberMe: false,
-    code: '',
-    uuid: '',
-    phone: '',
+	username: '',
+	password: '',
+	rememberMe: false,
+	code: '',
+	uuid: '',
+	phone: '',
 });
 
 const loginRules = {
-    // username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
-    // password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }],
-    // code: [{ required: true, trigger: 'change', message: '请输入验证码' }],
+	// username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
+	// password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }],
+	// code: [{ required: true, trigger: 'change', message: '请输入验证码' }],
 };
 
 const loading = ref(false);
@@ -61,65 +78,65 @@ const loginFirstRef = ref<FormInstance>();
 
 const isFlag = ref(true);
 const publicKey =
-    'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
-    'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==';
+	'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
+	'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==';
 const privateKey =
-    'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' +
-    '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' +
-    'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' +
-    'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' +
-    'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' +
-    'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' +
-    'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' +
-    'UP8iWi1Qw0Y=';
+	'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' +
+	'7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' +
+	'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' +
+	'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' +
+	'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' +
+	'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' +
+	'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' +
+	'UP8iWi1Qw0Y=';
 
 function handleLogin() {
-    loginFirstRef.value?.validate(valid => {
-        if (valid) {
-            loading.value = true;
-            // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
-            if (loginForm.value.rememberMe) {
-                Cookies.set('username', loginForm.value.username, { expires: 30 });
-                const enPwd = encrypt(loginForm.value.password, publicKey);
-                if (enPwd) {
-                    Cookies.set('password', enPwd, { expires: 30 });
-                }
-                if (loginForm.value.rememberMe) {
-                    Cookies.set('rememberMe', String(loginForm.value.rememberMe), { expires: 30 });
-                }
-            } else {
-                // 否则移除
-                Cookies.remove('username');
-                Cookies.remove('password');
-                Cookies.remove('rememberMe');
-            }
-            // 调用action的登录方法
-            userStore
-                .login(loginForm.value)
-                .then(() => {
-                    router.push({ path: redirect.value || '/' });
-                })
-                .catch(() => {
-                    loading.value = false;
-                });
-        }
-    });
+	loginFirstRef.value?.validate(valid => {
+		if (valid) {
+			loading.value = true;
+			// 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
+			if (loginForm.value.rememberMe) {
+				Cookies.set('username', loginForm.value.username, { expires: 30 });
+				const enPwd = encrypt(loginForm.value.password, publicKey);
+				if (enPwd) {
+					Cookies.set('password', enPwd, { expires: 30 });
+				}
+				if (loginForm.value.rememberMe) {
+					Cookies.set('rememberMe', String(loginForm.value.rememberMe), { expires: 30 });
+				}
+			} else {
+				// 否则移除
+				Cookies.remove('username');
+				Cookies.remove('password');
+				Cookies.remove('rememberMe');
+			}
+			// 调用action的登录方法
+			userStore
+				.login(loginForm.value)
+				.then(() => {
+					router.push({ path: redirect.value || '/' });
+				})
+				.catch(() => {
+					loading.value = false;
+				});
+		}
+	});
 }
 
 // 登陆按钮
 const handleAllLogin = () => {
-    handleLogin();
+	handleLogin();
 };
 
 function getCookie() {
-    const username = Cookies.get('username');
-    const password = Cookies.get('password');
-    const rememberMe = Cookies.get('rememberMe');
-    loginForm.value = {
-        username: username === undefined ? loginForm.value.username : username,
-        password: password === undefined ? loginForm.value.password : decrypt(password, privateKey) || '',
-        rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
-    };
+	const username = Cookies.get('username');
+	const password = Cookies.get('password');
+	const rememberMe = Cookies.get('rememberMe');
+	loginForm.value = {
+		username: username === undefined ? loginForm.value.username : username,
+		password: password === undefined ? loginForm.value.password : decrypt(password, privateKey) || '',
+		rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
+	};
 }
 
 getCookie();
@@ -127,73 +144,73 @@ getCookie();
 
 <style lang="scss" scoped>
 .login {
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    height: 100%;
-    background-image: url('../assets/images/login-background.jpg');
-    background-size: cover;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	height: 100%;
+	background-image: url('../assets/images/login-background.jpg');
+	background-size: cover;
 }
 
 .title {
-    margin: 0px auto 30px auto;
-    text-align: center;
-    color: #707070;
+	margin: 0px auto 30px auto;
+	text-align: center;
+	color: #707070;
 }
 
 .login-form {
-    border-radius: 6px;
-    background: #ffffff;
-    width: 400px;
-    padding: 25px 25px 5px 25px;
-
-    .el-input {
-        height: 40px;
-
-        input {
-            height: 40px;
-        }
-    }
-
-    .input-icon {
-        height: 39px;
-        width: 14px;
-        margin-left: 0px;
-    }
+	border-radius: 6px;
+	background: #ffffff;
+	width: 400px;
+	padding: 25px 25px 5px 25px;
+
+	.el-input {
+		height: 40px;
+
+		input {
+			height: 40px;
+		}
+	}
+
+	.input-icon {
+		height: 39px;
+		width: 14px;
+		margin-left: 0px;
+	}
 }
 
 .login-tip {
-    font-size: 13px;
-    text-align: center;
-    color: #bfbfbf;
+	font-size: 13px;
+	text-align: center;
+	color: #bfbfbf;
 }
 
 .login-code {
-    width: 33%;
-    height: 40px;
-    float: right;
-
-    img {
-        cursor: pointer;
-        vertical-align: middle;
-    }
+	width: 33%;
+	height: 40px;
+	float: right;
+
+	img {
+		cursor: pointer;
+		vertical-align: middle;
+	}
 }
 
 .el-login-footer {
-    height: 40px;
-    line-height: 40px;
-    position: fixed;
-    bottom: 0;
-    width: 100%;
-    text-align: center;
-    color: #fff;
-    font-family: Arial;
-    font-size: 12px;
-    letter-spacing: 1px;
+	height: 40px;
+	line-height: 40px;
+	position: fixed;
+	bottom: 0;
+	width: 100%;
+	text-align: center;
+	color: #fff;
+	font-family: Arial;
+	font-size: 12px;
+	letter-spacing: 1px;
 }
 
 .login-code-img {
-    height: 40px;
-    padding-left: 12px;
+	height: 40px;
+	padding-left: 12px;
 }
 </style>

+ 178 - 186
src/views/register.vue

@@ -1,86 +1,78 @@
 <template>
-    <div class="register">
-        <el-form ref="registerRef" :model="registerForm" :rules="registerRules" class="register-form">
-            <h3 class="title">中华人民共和国海事局</h3>
-            <el-form-item prop="username">
-                <el-input
-                    v-model="registerForm.username"
-                    type="text"
-                    size="large"
-                    auto-complete="off"
-                    placeholder="账号"
-                >
-                    <template #prefix
-                        ><svg-icon icon-class="user" class="el-input__icon input-icon"
-                    /></template>
-                </el-input>
-            </el-form-item>
-            <el-form-item prop="password">
-                <el-input
-                    v-model="registerForm.password"
-                    type="password"
-                    size="large"
-                    auto-complete="off"
-                    placeholder="密码"
-                    @keyup.enter="handleRegister"
-                >
-                    <template #prefix
-                        ><svg-icon icon-class="password" class="el-input__icon input-icon"
-                    /></template>
-                </el-input>
-            </el-form-item>
-            <el-form-item prop="confirmPassword">
-                <el-input
-                    v-model="registerForm.confirmPassword"
-                    type="password"
-                    size="large"
-                    auto-complete="off"
-                    placeholder="确认密码"
-                    @keyup.enter="handleRegister"
-                >
-                    <template #prefix
-                        ><svg-icon icon-class="password" class="el-input__icon input-icon"
-                    /></template>
-                </el-input>
-            </el-form-item>
-            <el-form-item prop="code" v-if="captchaEnabled">
-                <el-input
-                    size="large"
-                    v-model="registerForm.code"
-                    auto-complete="off"
-                    placeholder="验证码"
-                    style="width: 63%"
-                    @keyup.enter="handleRegister"
-                >
-                    <template #prefix
-                        ><svg-icon icon-class="validCode" class="el-input__icon input-icon"
-                    /></template>
-                </el-input>
-                <div class="register-code">
-                    <img :src="codeUrl" @click="getCode" class="register-code-img" />
-                </div>
-            </el-form-item>
-            <el-form-item style="width: 100%">
-                <el-button
-                    :loading="loading"
-                    size="large"
-                    type="primary"
-                    style="width: 100%"
-                    @click.prevent="handleRegister"
-                >
-                    <span v-if="!loading">注 册</span>
-                    <span v-else>注 册 中...</span>
-                </el-button>
-                <div style="float: right">
-                    <router-link class="link-type" :to="'/login'">使用已有账户登录</router-link>
-                </div>
-            </el-form-item>
-        </el-form>
-        <!--  底部  -->
-        <!-- <div class="el-register-footer">
+	<div class="register">
+		<el-form ref="registerRef" :model="registerForm" :rules="registerRules" class="register-form">
+			<h3 class="title">xxxxxxx</h3>
+			<el-form-item prop="username">
+				<el-input
+					v-model="registerForm.username"
+					type="text"
+					size="large"
+					auto-complete="off"
+					placeholder="账号"
+				>
+					<template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template>
+				</el-input>
+			</el-form-item>
+			<el-form-item prop="password">
+				<el-input
+					v-model="registerForm.password"
+					type="password"
+					size="large"
+					auto-complete="off"
+					placeholder="密码"
+					@keyup.enter="handleRegister"
+				>
+					<template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
+				</el-input>
+			</el-form-item>
+			<el-form-item prop="confirmPassword">
+				<el-input
+					v-model="registerForm.confirmPassword"
+					type="password"
+					size="large"
+					auto-complete="off"
+					placeholder="确认密码"
+					@keyup.enter="handleRegister"
+				>
+					<template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
+				</el-input>
+			</el-form-item>
+			<el-form-item prop="code" v-if="captchaEnabled">
+				<el-input
+					size="large"
+					v-model="registerForm.code"
+					auto-complete="off"
+					placeholder="验证码"
+					style="width: 63%"
+					@keyup.enter="handleRegister"
+				>
+					<template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template>
+				</el-input>
+				<div class="register-code">
+					<img :src="codeUrl" @click="getCode" class="register-code-img" />
+				</div>
+			</el-form-item>
+			<el-form-item style="width: 100%">
+				<el-button
+					:loading="loading"
+					size="large"
+					type="primary"
+					style="width: 100%"
+					@click.prevent="handleRegister"
+				>
+					<span v-if="!loading">注 册</span>
+					<span v-else>注 册 中...</span>
+				</el-button>
+				<div style="float: right">
+					<router-link class="link-type" :to="'/login'">使用已有账户登录</router-link>
+				</div>
+			</el-form-item>
+		</el-form>
+		<!--  底部  -->
+		<!-- <div class="el-register-footer">
             <span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>
         </div> -->
-    </div>
+	</div>
 </template>
 
 <script setup lang="ts">
@@ -92,35 +84,35 @@ import { ref } from 'vue';
 const router = useRouter();
 
 const registerForm = ref({
-    username: '',
-    password: '',
-    confirmPassword: '',
-    code: '',
-    uuid: '',
+	username: '',
+	password: '',
+	confirmPassword: '',
+	code: '',
+	uuid: '',
 });
 
 const equalToPassword = (rule: any, value: any, callback: (...args: any[]) => void) => {
-    if (registerForm.value.password !== value) {
-        callback(new Error('两次输入的密码不一致'));
-    } else {
-        callback();
-    }
+	if (registerForm.value.password !== value) {
+		callback(new Error('两次输入的密码不一致'));
+	} else {
+		callback();
+	}
 };
 
 const registerRules = {
-    username: [
-        { required: true, trigger: 'blur', message: '请输入您的账号' },
-        { min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur' },
-    ],
-    password: [
-        { required: true, trigger: 'blur', message: '请输入您的密码' },
-        { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' },
-    ],
-    confirmPassword: [
-        { required: true, trigger: 'blur', message: '请再次输入您的密码' },
-        { required: true, validator: equalToPassword, trigger: 'blur' },
-    ],
-    code: [{ required: true, trigger: 'change', message: '请输入验证码' }],
+	username: [
+		{ required: true, trigger: 'blur', message: '请输入您的账号' },
+		{ min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur' },
+	],
+	password: [
+		{ required: true, trigger: 'blur', message: '请输入您的密码' },
+		{ min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' },
+	],
+	confirmPassword: [
+		{ required: true, trigger: 'blur', message: '请再次输入您的密码' },
+		{ required: true, validator: equalToPassword, trigger: 'blur' },
+	],
+	code: [{ required: true, trigger: 'change', message: '请输入验证码' }],
 };
 
 const codeUrl = ref('');
@@ -128,46 +120,46 @@ const loading = ref(false);
 const captchaEnabled = ref(true);
 const registerRef = ref<FormInstance>();
 function handleRegister() {
-    registerRef.value?.validate(valid => {
-        if (valid) {
-            loading.value = true;
-            register(registerForm.value)
-                .then(res => {
-                    const username = registerForm.value.username;
-                    ElMessageBox.alert(
-                        "<font color='red'>恭喜你,您的账号 " + username + ' 注册成功!</font>',
-                        '系统提示',
-                        {
-                            dangerouslyUseHTMLString: true,
-                            type: 'success',
-                        }
-                    )
-                        .then(() => {
-                            router.push('/login');
-                        })
-                        .catch((e: any) => {
-                            loading.value = true;
-                            console.log(e);
-                        });
-                })
-                .catch(() => {
-                    loading.value = false;
-                    if (captchaEnabled.value) {
-                        getCode();
-                    }
-                });
-        }
-    });
+	registerRef.value?.validate(valid => {
+		if (valid) {
+			loading.value = true;
+			register(registerForm.value)
+				.then(res => {
+					const username = registerForm.value.username;
+					ElMessageBox.alert(
+						"<font color='red'>恭喜你,您的账号 " + username + ' 注册成功!</font>',
+						'系统提示',
+						{
+							dangerouslyUseHTMLString: true,
+							type: 'success',
+						}
+					)
+						.then(() => {
+							router.push('/login');
+						})
+						.catch((e: any) => {
+							loading.value = true;
+							console.log(e);
+						});
+				})
+				.catch(() => {
+					loading.value = false;
+					if (captchaEnabled.value) {
+						getCode();
+					}
+				});
+		}
+	});
 }
 
 function getCode() {
-    getCodeImg().then((res: any) => {
-        captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled;
-        if (captchaEnabled.value) {
-            codeUrl.value = 'data:image/gif;base64,' + res.img;
-            registerForm.value.uuid = res.uuid;
-        }
-    });
+	getCodeImg().then((res: any) => {
+		captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+		if (captchaEnabled.value) {
+			codeUrl.value = 'data:image/gif;base64,' + res.img;
+			registerForm.value.uuid = res.uuid;
+		}
+	});
 }
 
 getCode();
@@ -175,64 +167,64 @@ getCode();
 
 <style lang="scss" scoped>
 .register {
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    height: 100%;
-    background-image: url('../assets/images/login-background.jpg');
-    background-size: cover;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	height: 100%;
+	background-image: url('../assets/images/login-background.jpg');
+	background-size: cover;
 }
 .title {
-    margin: 0px auto 30px auto;
-    text-align: center;
-    color: #707070;
+	margin: 0px auto 30px auto;
+	text-align: center;
+	color: #707070;
 }
 
 .register-form {
-    border-radius: 6px;
-    background: #ffffff;
-    width: 400px;
-    padding: 25px 25px 5px 25px;
-    .el-input {
-        height: 40px;
-        input {
-            height: 40px;
-        }
-    }
-    .input-icon {
-        height: 39px;
-        width: 14px;
-        margin-left: 0px;
-    }
+	border-radius: 6px;
+	background: #ffffff;
+	width: 400px;
+	padding: 25px 25px 5px 25px;
+	.el-input {
+		height: 40px;
+		input {
+			height: 40px;
+		}
+	}
+	.input-icon {
+		height: 39px;
+		width: 14px;
+		margin-left: 0px;
+	}
 }
 .register-tip {
-    font-size: 13px;
-    text-align: center;
-    color: #bfbfbf;
+	font-size: 13px;
+	text-align: center;
+	color: #bfbfbf;
 }
 .register-code {
-    width: 33%;
-    height: 40px;
-    float: right;
-    img {
-        cursor: pointer;
-        vertical-align: middle;
-    }
+	width: 33%;
+	height: 40px;
+	float: right;
+	img {
+		cursor: pointer;
+		vertical-align: middle;
+	}
 }
 .el-register-footer {
-    height: 40px;
-    line-height: 40px;
-    position: fixed;
-    bottom: 0;
-    width: 100%;
-    text-align: center;
-    color: #fff;
-    font-family: Arial;
-    font-size: 12px;
-    letter-spacing: 1px;
+	height: 40px;
+	line-height: 40px;
+	position: fixed;
+	bottom: 0;
+	width: 100%;
+	text-align: center;
+	color: #fff;
+	font-family: Arial;
+	font-size: 12px;
+	letter-spacing: 1px;
 }
 .register-code-img {
-    height: 40px;
-    padding-left: 12px;
+	height: 40px;
+	padding-left: 12px;
 }
 </style>