登录服务器设置自动获取

This commit is contained in:
龚皓 2024-10-25 16:57:02 +08:00
parent 32feaeb0b5
commit 733e548068
1 changed files with 45 additions and 30 deletions

View File

@ -1,18 +1,24 @@
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, ref, onMounted } from 'vue'; import { reactive, ref, onMounted } from 'vue';
import { useRoute, useRouter } from 'vue-router'; import { useRoute, useRouter } from 'vue-router';
import { BoxApi } from '@/utils/boxApi'; import { BoxApi } from '@/utils/boxApi';
import { User, Lock } from '@element-plus/icons-vue'; import { User, Lock } from '@element-plus/icons-vue';
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
//
const getHostAddress = () => window.location.hostname;
const getHostPort = () => '8000';
const loginForm = reactive({ const loginForm = reactive({
username: '', username: '',
password: '', password: '',
address: '', address: localStorage.getItem('rememberedAddress') || getHostAddress(),
port: '', port: localStorage.getItem('rememberedPort') || getHostPort(),
remember: false // "" remember: false,
serverSettings: false
}); });
const errorMessage = ref(''); const errorMessage = ref('');
@ -23,50 +29,48 @@ const cookless = ref(false);
// //
let apiInstance: BoxApi | null = null; let apiInstance: BoxApi | null = null;
// //
onMounted(() => { onMounted(() => {
const savedUsername = localStorage.getItem('username'); const savedUsername = localStorage.getItem('username');
const savedPassword = localStorage.getItem('rememberedPassword'); const savedPassword = localStorage.getItem('rememberedPassword');
const savedAddress = localStorage.getItem('rememberedAddress'); // const savedAddress = localStorage.getItem('rememberedAddress');
const savedPort = localStorage.getItem('rememberedPort'); // const savedPort = localStorage.getItem('rememberedPort');
if (savedUsername && savedPassword) {
if (savedUsername && savedPassword && savedAddress && savedPort) {
loginForm.username = savedUsername; loginForm.username = savedUsername;
loginForm.password = savedPassword; loginForm.password = savedPassword;
loginForm.address = savedAddress;
loginForm.port = savedPort;
loginForm.remember = true; // loginForm.remember = true; //
} }
}); });
const onSubmit = async () => { const onSubmit = async () => {
try { try {
// // if (!loginForm.address || !loginForm.port) {
if (!loginForm.address || !loginForm.port) { // errorMessage.value = '';
errorMessage.value = '请输入服务器地址和端口'; // return;
return; // }
} const address = loginForm.serverSettings ? loginForm.address : getHostAddress();
const port = loginForm.serverSettings ? loginForm.port : getHostPort();
// SuperboxApi // SuperboxApi
apiInstance = new BoxApi(loginForm.address, parseInt(loginForm.port)); apiInstance = new BoxApi(address, parseInt(port));
// SuperboxApi login cookless false // SuperboxApi login cookless false
const apiToken = await apiInstance.login(loginForm.username, loginForm.password,false); const apiToken = await apiInstance.login(loginForm.username, loginForm.password, false);
// token // token
localStorage.setItem('alertToken', apiToken); localStorage.setItem('alertToken', apiToken);
localStorage.setItem('username', loginForm.username);
localStorage.setItem('rememberedAddress', address);
localStorage.setItem('rememberedPort', port);
// localStorage // localStorage
if (loginForm.remember) { if (loginForm.remember) {
localStorage.setItem('username', loginForm.username);
localStorage.setItem('rememberedPassword', loginForm.password); localStorage.setItem('rememberedPassword', loginForm.password);
localStorage.setItem('rememberedAddress', loginForm.address);
localStorage.setItem('rememberedPort', loginForm.port);
} else { } else {
// //
localStorage.removeItem('rememberedPassword'); localStorage.removeItem('rememberedPassword');
localStorage.removeItem('rememberedAddress');
localStorage.removeItem('rememberedPort');
} }
// //
@ -84,9 +88,12 @@ const onSubmit = async () => {
const onReset = () => { const onReset = () => {
loginForm.username = ''; loginForm.username = '';
loginForm.password = ''; loginForm.password = '';
loginForm.address = ''; // loginForm.address = '';
loginForm.port = ''; // loginForm.port = '';
loginForm.address = getHostAddress(); //
loginForm.port = getHostPort(); //
loginForm.remember = false; // loginForm.remember = false; //
loginForm.serverSettings = false;
errorMessage.value = ''; errorMessage.value = '';
}; };
</script> </script>
@ -102,10 +109,10 @@ const onReset = () => {
</div> </div>
<div class="login-body"> <div class="login-body">
<el-form :model="loginForm" style="max-width: 600px;"> <el-form :model="loginForm" style="max-width: 600px;">
<el-form-item> <el-form-item v-show="loginForm.serverSettings">
<el-input v-model="loginForm.address" placeholder="服务器地址" /> <el-input v-model="loginForm.address" placeholder="服务器地址" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item v-show="loginForm.serverSettings">
<el-input v-model="loginForm.port" placeholder="端口" type="number" /> <el-input v-model="loginForm.port" placeholder="端口" type="number" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -126,10 +133,14 @@ const onReset = () => {
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<!-- 添加记住密码复选框 --> <el-row class="setting-row">
<el-form-item> <el-form-item>
<el-checkbox v-model="loginForm.remember">记住密码</el-checkbox> <el-checkbox v-model="loginForm.remember">记住密码</el-checkbox>
</el-form-item> </el-form-item>
<el-form-item>
<el-checkbox v-model="loginForm.serverSettings">服务器设置</el-checkbox>
</el-form-item>
</el-row>
<el-row justify="end"> <el-row justify="end">
<el-form-item size="small" :gutter="30"> <el-form-item size="small" :gutter="30">
<el-button type="primary" @click="onReset" plain>重置</el-button> <el-button type="primary" @click="onReset" plain>重置</el-button>
@ -201,4 +212,8 @@ const onReset = () => {
.error-message { .error-message {
color: red; color: red;
} }
.setting-row {
gap: 20px;
}
</style> </style>