Files
withmindwebsite/public/index.html
T
2026-07-16 15:53:22 +08:00

86 lines
3.6 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta name="referrer" content="no-referrer">
<meta name="description" content="WithMind 以 AI Agent 为核心,构建企业专属 AI 能力体系,落地本地私有化部署、专属企业知识库、四大行业技能插件,实现全员 AI 赋能。">
<meta name="keywords" content="WithMind,AI Agent,企业AI,私有化部署,知识库,模型网关,创作平台">
<meta property="og:title" content="WithMind — 企业专属 AI 能力体系">
<meta property="og:description" content="以 AI Agent 为核心的全员 AI 赋能系统:本地私有部署、企业知识库沉淀、四大行业技能插件。">
<meta property="og:type" content="website">
<link rel="icon" type="image/x-icon" sizes="16x16 32x32 48x48" href="<%= BASE_URL %>favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="<%= BASE_URL %>favicon-32x32.png">
<link rel="apple-touch-icon" sizes="180x180" href="<%= BASE_URL %>apple-touch-icon.png">
<title>WithMind — 企业专属 AI 能力体系</title>
<script src="<%= BASE_URL %>flexible.js"></script>
<style type="text/css">
body {
margin: 0;
}
/* 占位 spinner,vue 异步挂载期间显示,挂载完成 (app-mounted 事件) 后淡出 */
#app-placeholder {
position: fixed;
inset: 0;
width: 100vw;
height: 100vh;
background: #ffffff;
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
}
#app-placeholder .spinner {
width: 48px;
height: 48px;
border: 4px solid #e0e0e0;
border-top-color: #3f2b96;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
/* vue 挂载后真实内容淡入 */
.app-fadein { animation: appFadeIn 0.4s ease-out; }
@keyframes appFadeIn { from { opacity: 0; } to { opacity: 1; } }
</style>
</head>
<body>
<noscript>
<strong>WithMind 官网需要启用 JavaScript 才能正常运行,请开启后继续访问。</strong>
</noscript>
<div id="app">
<div id="app-placeholder" aria-hidden="true">
<div class="spinner"></div>
</div>
</div>
<script>
// 等 main.js 里的 mounted() 钩子派发 app-mounted 事件,然后占位淡出 + 真实内容淡入
(function(){
var app = document.getElementById('app');
var placeholder = document.getElementById('app-placeholder');
if (!app || !placeholder) return;
var done = false;
function onMounted() {
if (done) return;
done = true;
document.removeEventListener('app-mounted', onMounted);
// 占位淡出
placeholder.style.transition = 'opacity 0.4s';
placeholder.style.opacity = '0';
// 真实内容淡入
app.classList.add('app-fadein');
// 0.45s 后移除占位 DOM
setTimeout(function(){
if (placeholder.parentNode) placeholder.parentNode.removeChild(placeholder);
}, 450);
}
document.addEventListener('app-mounted', onMounted);
// 兜底: 5 秒后强制收尾 (防止 vue 异常时占位永远停留)
setTimeout(onMounted, 5000);
})();
</script>
<!-- built files will be auto injected -->
</body>
</html>