登录服务器设置自动获取

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