75 lines
1.9 KiB
Vue
75 lines
1.9 KiB
Vue
<script setup>
|
||
import { computed, onMounted, ref } from "vue";
|
||
import { useRouter } from "vue-router";
|
||
import { getToken, setToken } from "../../lib/extStorage";
|
||
|
||
const router = useRouter();
|
||
|
||
const token = ref("");
|
||
const loggedIn = computed(() => Boolean(token.value));
|
||
|
||
const webBaseUrl = import.meta.env.VITE_WEB_BASE_URL || "http://localhost:5173";
|
||
|
||
async function refresh() {
|
||
token.value = await getToken();
|
||
}
|
||
|
||
function openWeb() {
|
||
const url = String(webBaseUrl || "").trim();
|
||
if (!url) return;
|
||
if (typeof chrome !== "undefined" && chrome.tabs?.create) chrome.tabs.create({ url });
|
||
else window.open(url, "_blank", "noopener,noreferrer");
|
||
}
|
||
|
||
async function logout() {
|
||
await setToken("");
|
||
await refresh();
|
||
await router.replace("/login");
|
||
}
|
||
|
||
onMounted(refresh);
|
||
</script>
|
||
|
||
<template>
|
||
<section class="page">
|
||
<h1 class="h1">更多操作</h1>
|
||
|
||
<p v-if="!loggedIn" class="muted">当前未登录,将跳转到登录页。</p>
|
||
|
||
<div class="card">
|
||
<button class="btn" type="button" @click="openWeb">跳转 Web</button>
|
||
<button class="btn btn--secondary" type="button" @click="logout">退出登录</button>
|
||
<p class="hint">Web 地址来自环境变量:VITE_WEB_BASE_URL</p>
|
||
</div>
|
||
</section>
|
||
</template>
|
||
|
||
<style scoped>
|
||
.page { padding: 14px; }
|
||
.h1 { margin: 0 0 10px; font-size: 18px; }
|
||
.card {
|
||
max-width: 560px;
|
||
border: 1px solid rgba(255,255,255,0.65);
|
||
background: var(--bb-card);
|
||
border-radius: 18px;
|
||
padding: 12px;
|
||
display: grid;
|
||
gap: 10px;
|
||
}
|
||
.btn {
|
||
border: 1px solid rgba(255,255,255,0.25);
|
||
border-radius: 14px;
|
||
padding: 10px 12px;
|
||
background: linear-gradient(135deg, var(--bb-primary), var(--bb-cta));
|
||
color: white;
|
||
cursor: pointer;
|
||
}
|
||
.btn--secondary {
|
||
background: rgba(255,255,255,0.55);
|
||
color: var(--bb-text);
|
||
border-color: var(--bb-border);
|
||
}
|
||
.muted { color: rgba(19, 78, 74, 0.72); font-size: 12px; }
|
||
.hint { color: rgba(19, 78, 74, 0.72); font-size: 12px; margin: 0; }
|
||
</style>
|