work-order-monitor/src/App2.vue

71 lines
1.6 KiB
Vue
Raw Normal View History

<script setup>
import { ref, onMounted } from 'vue'
import { invoke } from '@tauri-apps/api/core'
const showSettings = ref(true)
const username = ref('')
const password = ref('')
// 页面加载时尝试从存储中读取配置
onMounted(async () => {
try {
const config = await invoke('load_config')
if (config && config.username) {
username.value = config.username
password.value = config.password || ''
}
} catch (error) {
console.log('No saved config found.')
}
})
// 保存设置并登录
async function saveAndLogin() {
try {
await invoke('save_config', {
config: { username: username.value, password: password.value }
})
await invoke('start_monitoring') // 开始轮询
showSettings.value = false // 隐藏设置界面
await invoke('minimize_to_tray') // 最小化到托盘
} catch (error) {
alert('保存失败: ' + error)
}
}
</script>
<template>
<div v-if="showSettings" class="settings">
<h2>登录设置</h2>
<div>
<label>用户名:</label>
<input v-model="username" type="text" />
</div>
<div>
<label>密码:</label>
<input v-model="password" type="password" />
</div>
<button @click="saveAndLogin">登录</button>
</div>
<div v-else class="main">
<h2>正在监控...</h2>
<p>程序已最小化到系统托盘</p>
<button @click="() => showSettings = true">重新打开设置</button>
</div>
</template>
<style>
.settings, .main {
padding: 20px;
font-family: Arial, sans-serif;
}
input {
margin: 5px 0;
padding: 8px;
width: 200px;
}
button {
margin-top: 10px;
padding: 10px 20px;
}
</style>