b90a89790f
统一 nav(5 个链接含支持、auth-aware 用户下拉菜单)、 docs 页补充面包屑/搜索/版本栏三栏布局、 footer 完整 5 列、所有内链替换为生产绝对路径。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1204 lines
47 KiB
HTML
1204 lines
47 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>下载 · 岩美酒库管理系统</title>
|
|
<link rel="stylesheet" href="assets/colors_and_type.css" />
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
|
<script src="https://unpkg.com/lucide@0.469.0/dist/umd/lucide.min.js"></script>
|
|
<style>
|
|
* { box-sizing: border-box; }
|
|
html, body {
|
|
margin: 0; padding: 0;
|
|
font-family: var(--font-sans);
|
|
color: var(--fg-default);
|
|
background: var(--bg-surface);
|
|
-webkit-font-smoothing: antialiased;
|
|
text-rendering: optimizeLegibility;
|
|
font-feature-settings: "tnum" 1;
|
|
}
|
|
img, svg { display: block; max-width: 100%; }
|
|
a { color: inherit; text-decoration: none; }
|
|
button { font-family: inherit; cursor: pointer; }
|
|
|
|
/* ---------------- Buttons (shared) ---------------- */
|
|
.btn {
|
|
display: inline-flex; align-items: center; gap: 8px;
|
|
height: 40px; padding: 0 18px;
|
|
border-radius: var(--radius-md);
|
|
font-size: var(--text-md); font-weight: 500;
|
|
border: 1px solid transparent;
|
|
transition: background var(--duration-fast) var(--ease-standard),
|
|
border-color var(--duration-fast) var(--ease-standard),
|
|
color var(--duration-fast) var(--ease-standard);
|
|
white-space: nowrap;
|
|
}
|
|
.btn-primary { background: var(--brand-500); color: #fff; }
|
|
.btn-primary:hover { background: var(--brand-600); }
|
|
.btn-primary:active { background: var(--brand-700); }
|
|
.btn-secondary { background: var(--gray-0); color: var(--brand-900); border-color: var(--border-default); }
|
|
.btn-secondary:hover { background: var(--gray-50); border-color: var(--border-strong); }
|
|
.btn-ghost { background: transparent; color: var(--fg-default); }
|
|
.btn-ghost:hover { background: var(--gray-100); }
|
|
.btn-lg { height: 48px; padding: 0 24px; font-size: var(--text-lg); }
|
|
.btn-sm { height: 32px; padding: 0 12px; font-size: var(--text-sm); }
|
|
.btn .icon { width: 18px; height: 18px; }
|
|
|
|
.container { max-width: 1280px; margin: 0 auto; padding: 0 32px; }
|
|
.section { padding: 80px 0; }
|
|
|
|
/* ---------------- Top Nav (shared) ---------------- */
|
|
.topnav {
|
|
position: sticky; top: 0; z-index: 50;
|
|
background: rgba(255,255,255,0.85);
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
}
|
|
.topnav-inner {
|
|
height: 64px;
|
|
display: flex; align-items: center; justify-content: space-between;
|
|
max-width: 1440px; margin: 0 auto; padding: 0 32px;
|
|
}
|
|
.topnav-brand { display: flex; align-items: center; gap: 10px; }
|
|
.topnav-brand img { height: 32px; }
|
|
.topnav-links { display: flex; align-items: center; gap: 4px; font-size: var(--text-md); color: var(--gray-700); }
|
|
.topnav-links a {
|
|
padding: 8px 14px;
|
|
border-radius: var(--radius-md);
|
|
transition: background var(--duration-fast) var(--ease-standard);
|
|
}
|
|
.topnav-links a:hover { background: var(--gray-100); color: var(--brand-900); }
|
|
.topnav-links a.active { color: var(--brand-500); background: var(--brand-50); }
|
|
.topnav-cta { display: flex; gap: 10px; align-items: center; }
|
|
|
|
/* nav user dropdown */
|
|
.nav-user { position: relative; }
|
|
.nav-user-btn { display: flex; align-items: center; gap: 8px; height: 36px; padding: 0 12px; background: var(--gray-0); border: 1px solid var(--border-default); border-radius: var(--radius-pill); cursor: pointer; font-size: var(--text-md); color: var(--gray-800); font-weight: 500; transition: border-color var(--duration-fast) var(--ease-standard); }
|
|
.nav-user-btn:hover { border-color: var(--border-strong); }
|
|
.nav-avatar { width: 22px; height: 22px; border-radius: 50%; background: var(--brand-500); color: #fff; display: grid; place-items: center; font-size: 10px; font-weight: 700; flex-shrink: 0; }
|
|
.nav-user-btn .icon { width: 14px; height: 14px; color: var(--fg-muted); }
|
|
.nav-dropdown { display: none; position: absolute; top: calc(100% + 8px); right: 0; min-width: 160px; background: var(--gray-0); border: 1px solid var(--border-default); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); overflow: hidden; z-index: 100; }
|
|
.nav-dropdown.open { display: block; }
|
|
.nav-dropdown a, .nav-dropdown button { display: flex; align-items: center; gap: 8px; width: 100%; padding: 10px 14px; font-size: var(--text-sm); color: var(--gray-800); background: none; border: none; cursor: pointer; text-decoration: none; font-family: inherit; transition: background var(--duration-fast) var(--ease-standard); }
|
|
.nav-dropdown a:hover, .nav-dropdown button:hover { background: var(--gray-50); }
|
|
.nav-dropdown .icon { width: 14px; height: 14px; color: var(--fg-muted); }
|
|
.nav-dropdown-divider { height: 1px; background: var(--border-subtle); margin: 4px 0; }
|
|
.nav-dropdown .logout { color: var(--danger-600); }
|
|
|
|
/* ====================================================================
|
|
PAGE HEADER (download-specific hero)
|
|
==================================================================== */
|
|
.page-header {
|
|
padding: 72px 0 56px;
|
|
background:
|
|
radial-gradient(700px 360px at 80% 20%, rgba(37, 99, 172, 0.06), transparent 60%),
|
|
linear-gradient(180deg, #FBFCFD 0%, #FFFFFF 80%);
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
}
|
|
.ph-inner {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 64px;
|
|
align-items: center;
|
|
}
|
|
.ph-eyebrow {
|
|
font-size: var(--text-xs); font-weight: 600;
|
|
letter-spacing: 0.12em;
|
|
color: var(--brand-500);
|
|
text-transform: uppercase;
|
|
margin: 0 0 12px;
|
|
display: flex; align-items: center; gap: 8px;
|
|
}
|
|
.ph-eyebrow .badge {
|
|
background: var(--brand-500); color: #fff;
|
|
padding: 3px 8px; border-radius: var(--radius-sm);
|
|
font-family: var(--font-mono);
|
|
letter-spacing: 0.02em;
|
|
font-size: 11px;
|
|
}
|
|
.ph-title {
|
|
font-size: 44px; font-weight: 700; line-height: 1.15;
|
|
letter-spacing: var(--tracking-cn-display);
|
|
color: var(--brand-900);
|
|
margin: 0 0 18px;
|
|
}
|
|
.ph-lead {
|
|
font-size: var(--text-lg); color: var(--gray-600);
|
|
line-height: 1.6; margin: 0 0 24px;
|
|
max-width: 480px;
|
|
}
|
|
.ph-meta {
|
|
display: flex; gap: 24px;
|
|
font-size: var(--text-sm); color: var(--fg-muted);
|
|
border-top: 1px solid var(--border-subtle);
|
|
padding-top: 16px;
|
|
}
|
|
.ph-meta-item { display: flex; flex-direction: column; gap: 2px; }
|
|
.ph-meta-label { font-size: 11px; color: var(--fg-subtle); letter-spacing: 0.04em; }
|
|
.ph-meta-val { font-size: var(--text-sm); color: var(--gray-800); font-weight: 500; }
|
|
|
|
/* Auto-detect card */
|
|
.detect-card {
|
|
background: var(--gray-0);
|
|
border: 1px solid var(--border-default);
|
|
border-radius: var(--radius-lg);
|
|
box-shadow: var(--shadow-md);
|
|
overflow: hidden;
|
|
}
|
|
.detect-card-head {
|
|
padding: 14px 20px;
|
|
background: var(--gray-50);
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
font-size: var(--text-xs);
|
|
color: var(--fg-muted);
|
|
display: flex; justify-content: space-between; align-items: center;
|
|
}
|
|
.detect-card-head .icon { width: 14px; height: 14px; color: var(--success-500); }
|
|
.detect-card-body {
|
|
padding: 28px;
|
|
display: flex; gap: 24px; align-items: center;
|
|
}
|
|
.detect-card-icon {
|
|
width: 72px; height: 72px;
|
|
background: var(--brand-50);
|
|
border-radius: 16px;
|
|
display: grid; place-items: center;
|
|
color: var(--brand-500);
|
|
flex-shrink: 0;
|
|
}
|
|
.detect-card-icon .icon { width: 38px; height: 38px; }
|
|
.detect-card-info { flex: 1; }
|
|
.detect-card-info h3 {
|
|
margin: 0 0 4px;
|
|
font-size: var(--text-xl);
|
|
font-weight: 600;
|
|
color: var(--brand-900);
|
|
}
|
|
.detect-card-info p {
|
|
margin: 0 0 12px;
|
|
font-size: var(--text-sm);
|
|
color: var(--fg-muted);
|
|
}
|
|
.detect-card-info .meta-row {
|
|
display: flex; gap: 18px;
|
|
font-size: var(--text-xs);
|
|
color: var(--gray-700);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.detect-card-info .meta-row span { display: flex; align-items: center; gap: 4px; }
|
|
.detect-card-info .meta-row .icon { width: 12px; height: 12px; color: var(--fg-muted); }
|
|
.detect-card-actions {
|
|
padding: 0 28px 28px;
|
|
display: flex; gap: 8px;
|
|
}
|
|
.detect-card-actions .btn-primary { flex: 1; justify-content: center; }
|
|
|
|
/* ====================================================================
|
|
PLATFORM GRID
|
|
==================================================================== */
|
|
.platforms-section { background: var(--bg-surface); }
|
|
.platforms-section h2 {
|
|
font-size: var(--text-3xl); font-weight: 600;
|
|
color: var(--brand-900); margin: 0 0 8px;
|
|
letter-spacing: var(--tracking-cn-display);
|
|
}
|
|
.platforms-section .section-sub {
|
|
font-size: var(--text-md);
|
|
color: var(--fg-muted); margin: 0 0 40px;
|
|
max-width: 600px;
|
|
}
|
|
.dl-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 16px;
|
|
}
|
|
.dl-card {
|
|
background: var(--gray-0);
|
|
border: 1px solid var(--border-default);
|
|
border-radius: var(--radius-lg);
|
|
padding: 28px;
|
|
display: flex; flex-direction: column;
|
|
transition: border-color var(--duration-base) var(--ease-standard),
|
|
box-shadow var(--duration-base) var(--ease-standard);
|
|
}
|
|
.dl-card:hover {
|
|
border-color: var(--brand-300);
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
.dl-card-head {
|
|
display: flex; align-items: flex-start; justify-content: space-between;
|
|
margin-bottom: 24px;
|
|
}
|
|
.dl-card-icon {
|
|
width: 56px; height: 56px;
|
|
background: var(--brand-50);
|
|
border-radius: var(--radius-md);
|
|
display: grid; place-items: center;
|
|
color: var(--brand-500);
|
|
}
|
|
.dl-card-icon .icon { width: 28px; height: 28px; }
|
|
.dl-card-version {
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
color: var(--gray-700);
|
|
background: var(--gray-100);
|
|
padding: 4px 10px;
|
|
border-radius: var(--radius-pill);
|
|
white-space: nowrap;
|
|
flex-shrink: 0;
|
|
}
|
|
.dl-card-name {
|
|
font-size: var(--text-2xl);
|
|
font-weight: 600;
|
|
color: var(--brand-900);
|
|
margin: 0 0 6px;
|
|
}
|
|
.dl-card-tagline {
|
|
font-size: var(--text-sm);
|
|
color: var(--fg-muted);
|
|
margin: 0 0 18px;
|
|
line-height: 1.5;
|
|
flex: 1;
|
|
}
|
|
.dl-card-meta {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 12px;
|
|
padding: 14px 0;
|
|
border-top: 1px solid var(--border-subtle);
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
margin-bottom: 18px;
|
|
}
|
|
.dl-meta-label {
|
|
font-size: 11px;
|
|
color: var(--fg-subtle);
|
|
letter-spacing: 0.04em;
|
|
margin-bottom: 2px;
|
|
}
|
|
.dl-meta-val {
|
|
font-size: var(--text-sm);
|
|
color: var(--gray-800);
|
|
font-weight: 500;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.dl-card-actions {
|
|
display: flex; flex-direction: column; gap: 8px;
|
|
}
|
|
.dl-card-actions .btn { width: 100%; justify-content: center; }
|
|
.dl-card-alt {
|
|
display: flex; gap: 8px; align-items: center;
|
|
margin-top: 12px;
|
|
font-size: var(--text-xs);
|
|
color: var(--fg-muted);
|
|
flex-wrap: wrap;
|
|
}
|
|
.dl-card-alt a {
|
|
color: var(--brand-500);
|
|
font-weight: 500;
|
|
}
|
|
.dl-card-alt a:hover { color: var(--brand-700); text-decoration: underline; }
|
|
|
|
/* QR for mobile */
|
|
.dl-qr {
|
|
width: 84px; height: 84px;
|
|
background: var(--gray-100);
|
|
border: 1px solid var(--border-default);
|
|
border-radius: var(--radius-sm);
|
|
position: relative;
|
|
display: grid; place-items: center;
|
|
flex-shrink: 0;
|
|
}
|
|
.dl-qr-pattern { width: 64px; height: 64px; }
|
|
|
|
/* mobile card uses a slightly different layout */
|
|
.dl-card.mobile .dl-card-actions {
|
|
display: grid;
|
|
grid-template-columns: 84px 1fr;
|
|
gap: 14px;
|
|
align-items: center;
|
|
}
|
|
.dl-card.mobile .dl-card-actions .stores {
|
|
display: flex; flex-direction: column; gap: 6px;
|
|
}
|
|
.dl-card.mobile .dl-card-actions .store-btn {
|
|
display: flex; align-items: center; gap: 8px;
|
|
height: 34px;
|
|
padding: 0 12px;
|
|
border: 1px solid var(--border-default);
|
|
border-radius: var(--radius-sm);
|
|
background: var(--gray-0);
|
|
font-size: var(--text-xs);
|
|
color: var(--gray-800);
|
|
font-weight: 500;
|
|
}
|
|
.dl-card.mobile .dl-card-actions .store-btn:hover { background: var(--gray-50); }
|
|
.dl-card.mobile .dl-card-actions .store-btn .icon { width: 14px; height: 14px; color: var(--fg-muted); }
|
|
|
|
/* ====================================================================
|
|
SYSTEM REQUIREMENTS
|
|
==================================================================== */
|
|
.req-section { background: var(--gray-25); }
|
|
.req-card {
|
|
background: var(--gray-0);
|
|
border: 1px solid var(--border-default);
|
|
border-radius: var(--radius-lg);
|
|
overflow: hidden;
|
|
}
|
|
.req-row {
|
|
display: grid;
|
|
grid-template-columns: 200px 1fr 1fr 1fr;
|
|
gap: 16px;
|
|
padding: 16px 24px;
|
|
align-items: center;
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
font-size: var(--text-sm);
|
|
color: var(--gray-800);
|
|
}
|
|
.req-row:last-child { border-bottom: none; }
|
|
.req-row.head {
|
|
background: var(--gray-50);
|
|
color: var(--fg-muted);
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
letter-spacing: 0.04em;
|
|
text-transform: uppercase;
|
|
}
|
|
.req-platform { display: flex; align-items: center; gap: 10px; font-weight: 600; color: var(--brand-900); }
|
|
.req-platform .icon { width: 18px; height: 18px; color: var(--brand-500); }
|
|
.req-row .req-val { font-variant-numeric: tabular-nums; }
|
|
.req-row .req-supported { color: var(--success-700); font-weight: 500; display: flex; align-items: center; gap: 6px; }
|
|
.req-row .req-supported .icon { width: 14px; height: 14px; color: var(--success-500); }
|
|
|
|
/* ====================================================================
|
|
RELEASE NOTES / CHANGELOG
|
|
==================================================================== */
|
|
.changelog-section { background: var(--bg-surface); }
|
|
.changelog {
|
|
display: grid;
|
|
grid-template-columns: 200px 1fr;
|
|
gap: 0;
|
|
margin-top: 40px;
|
|
border-left: 1px solid var(--border-subtle);
|
|
}
|
|
.changelog-entry {
|
|
display: contents;
|
|
}
|
|
.changelog-meta {
|
|
padding: 28px 24px 28px 32px;
|
|
position: relative;
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
}
|
|
.changelog-meta::before {
|
|
content: '';
|
|
position: absolute;
|
|
left: -7px; top: 36px;
|
|
width: 13px; height: 13px;
|
|
border-radius: 50%;
|
|
background: var(--gray-0);
|
|
border: 3px solid var(--gray-300);
|
|
}
|
|
.changelog-entry.current .changelog-meta::before {
|
|
background: var(--brand-500);
|
|
border-color: var(--brand-100);
|
|
box-shadow: 0 0 0 4px var(--brand-50);
|
|
}
|
|
.changelog-version {
|
|
font-family: var(--font-mono);
|
|
font-size: var(--text-md);
|
|
font-weight: 600;
|
|
color: var(--brand-900);
|
|
margin-bottom: 4px;
|
|
}
|
|
.changelog-date {
|
|
font-size: var(--text-xs);
|
|
color: var(--fg-muted);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.changelog-tag {
|
|
display: inline-block;
|
|
font-size: 10px;
|
|
background: var(--success-50);
|
|
color: var(--success-700);
|
|
padding: 2px 8px;
|
|
border-radius: var(--radius-pill);
|
|
font-weight: 500;
|
|
margin-top: 8px;
|
|
}
|
|
.changelog-body {
|
|
padding: 28px 0 28px 32px;
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
border-left: 1px solid var(--border-subtle);
|
|
margin-left: -1px;
|
|
}
|
|
.changelog-entry:last-child .changelog-meta,
|
|
.changelog-entry:last-child .changelog-body { border-bottom: none; }
|
|
.changelog-body h3 {
|
|
margin: 0 0 14px;
|
|
font-size: var(--text-lg);
|
|
font-weight: 600;
|
|
color: var(--brand-900);
|
|
}
|
|
.changelog-cat {
|
|
display: flex; flex-direction: column; gap: 6px;
|
|
margin-bottom: 14px;
|
|
}
|
|
.changelog-cat-label {
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
letter-spacing: 0.06em;
|
|
color: var(--fg-muted);
|
|
text-transform: uppercase;
|
|
display: flex; align-items: center; gap: 6px;
|
|
margin-bottom: 2px;
|
|
}
|
|
.changelog-cat-label .dot {
|
|
width: 6px; height: 6px;
|
|
border-radius: 50%;
|
|
}
|
|
.changelog-cat-label .dot.feature { background: var(--brand-500); }
|
|
.changelog-cat-label .dot.improve { background: var(--success-500); }
|
|
.changelog-cat-label .dot.fix { background: var(--warning-500); }
|
|
.changelog-cat ul {
|
|
margin: 0; padding: 0;
|
|
list-style: none;
|
|
font-size: var(--text-sm);
|
|
color: var(--gray-700);
|
|
line-height: 1.6;
|
|
}
|
|
.changelog-cat ul li {
|
|
padding: 3px 0;
|
|
padding-left: 16px;
|
|
position: relative;
|
|
}
|
|
.changelog-cat ul li::before {
|
|
content: '';
|
|
position: absolute;
|
|
left: 0; top: 11px;
|
|
width: 6px; height: 1px;
|
|
background: var(--gray-400);
|
|
}
|
|
|
|
/* ====================================================================
|
|
BETA PROGRAM
|
|
==================================================================== */
|
|
.beta-banner {
|
|
background:
|
|
radial-gradient(800px 360px at 80% 30%, rgba(37, 99, 172, 0.30), transparent 60%),
|
|
linear-gradient(135deg, #0A1F3B 0%, #15407D 100%);
|
|
color: #fff;
|
|
border-radius: var(--radius-xl);
|
|
padding: 48px;
|
|
display: grid;
|
|
grid-template-columns: 1.4fr 1fr;
|
|
gap: 48px;
|
|
align-items: center;
|
|
margin: 0 0 80px;
|
|
}
|
|
.beta-banner-tag {
|
|
display: inline-flex; align-items: center; gap: 6px;
|
|
background: rgba(255,255,255,0.12);
|
|
border: 1px solid rgba(255,255,255,0.20);
|
|
padding: 4px 12px;
|
|
border-radius: var(--radius-pill);
|
|
font-size: var(--text-xs);
|
|
color: #DCE2EB;
|
|
margin-bottom: 16px;
|
|
font-family: var(--font-mono);
|
|
letter-spacing: 0.04em;
|
|
white-space: nowrap;
|
|
}
|
|
.beta-banner-tag .icon { width: 12px; height: 12px; color: var(--warning-500); }
|
|
.beta-banner h2 {
|
|
font-size: 28px;
|
|
font-weight: 600;
|
|
letter-spacing: var(--tracking-cn-display);
|
|
margin: 0 0 12px;
|
|
color: #fff; line-height: 1.3;
|
|
}
|
|
.beta-banner p { font-size: var(--text-md); color: #ADC9EA; margin: 0; line-height: 1.6; }
|
|
.beta-banner-actions { display: flex; flex-direction: column; gap: 10px; align-items: flex-end; }
|
|
.beta-banner .btn-primary { background: #fff; color: var(--brand-700); }
|
|
.beta-banner .btn-primary:hover { background: #DCE2EB; }
|
|
.beta-banner-note { font-size: var(--text-xs); color: #99A3B3; text-align: right; }
|
|
|
|
/* ====================================================================
|
|
FOOTER (shared)
|
|
==================================================================== */
|
|
footer {
|
|
background: var(--gray-25);
|
|
border-top: 1px solid var(--border-subtle);
|
|
padding: 64px 0 32px;
|
|
color: var(--fg-muted);
|
|
font-size: var(--text-sm);
|
|
}
|
|
.footer-grid {
|
|
display: grid;
|
|
grid-template-columns: 1.5fr repeat(4, 1fr);
|
|
gap: 48px;
|
|
margin-bottom: 48px;
|
|
}
|
|
.footer-brand img { height: 32px; margin-bottom: 16px; }
|
|
.footer-brand p { margin: 0 0 16px; max-width: 320px; line-height: 1.6; color: var(--fg-muted); }
|
|
.footer-contact { font-size: var(--text-sm); color: var(--gray-700); line-height: 1.8; }
|
|
.footer-col h5 {
|
|
font-size: var(--text-xs); font-weight: 600;
|
|
color: var(--brand-900);
|
|
letter-spacing: 0.06em;
|
|
margin: 0 0 16px;
|
|
text-transform: uppercase;
|
|
}
|
|
.footer-col ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
|
|
.footer-col li a { color: var(--gray-600); }
|
|
.footer-col li a:hover { color: var(--brand-500); }
|
|
.footer-bottom {
|
|
border-top: 1px solid var(--border-subtle);
|
|
padding-top: 24px;
|
|
display: flex; justify-content: space-between;
|
|
font-size: var(--text-xs);
|
|
color: var(--fg-subtle);
|
|
}
|
|
|
|
@media (max-width: 1024px) {
|
|
.ph-inner, .beta-banner { grid-template-columns: 1fr; }
|
|
.dl-grid { grid-template-columns: repeat(2, 1fr); }
|
|
.req-row { grid-template-columns: 140px 1fr 1fr; }
|
|
.req-row > :last-child { display: none; }
|
|
.changelog { grid-template-columns: 140px 1fr; }
|
|
.footer-grid { grid-template-columns: 1fr 1fr; }
|
|
.ph-title { font-size: 36px; }
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<!-- =========================== TOP NAV =========================== -->
|
|
<nav class="topnav">
|
|
<div class="topnav-inner">
|
|
<a href="/" class="topnav-brand">
|
|
<img src="assets/logo-full.svg" alt="岩美" />
|
|
</a>
|
|
<div class="topnav-links">
|
|
<a href="/#modules">产品</a>
|
|
<a href="/#pricing">价格</a>
|
|
<a href="/download.html" class="active">下载</a>
|
|
<a href="/docs.html">文档</a>
|
|
<a href="/#faq">支持</a>
|
|
</div>
|
|
<div class="topnav-cta" id="nav-cta"></div>
|
|
</div>
|
|
</nav>
|
|
|
|
<!-- =========================== PAGE HEADER =========================== -->
|
|
<section class="page-header">
|
|
<div class="container ph-inner">
|
|
<div>
|
|
<div class="ph-eyebrow">
|
|
<span class="badge">v1.6.2</span>
|
|
<span>下载客户端</span>
|
|
</div>
|
|
<h1 class="ph-title">选择你的平台,<br/>立刻开始管理酒库。</h1>
|
|
<p class="ph-lead">
|
|
五端同步,数据实时云端备份。Windows、macOS 桌面客户端体验最佳,移动端适合仓库现场操作。
|
|
</p>
|
|
<div class="ph-meta">
|
|
<div class="ph-meta-item">
|
|
<div class="ph-meta-label">最新版本</div>
|
|
<div class="ph-meta-val">v1.6.2</div>
|
|
</div>
|
|
<div class="ph-meta-item">
|
|
<div class="ph-meta-label">发布日期</div>
|
|
<div class="ph-meta-val">2026-05-15</div>
|
|
</div>
|
|
<div class="ph-meta-item">
|
|
<div class="ph-meta-label">兼容旧版</div>
|
|
<div class="ph-meta-val">v1.4+ 数据自动迁移</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Auto-detect download card -->
|
|
<div class="detect-card">
|
|
<div class="detect-card-head">
|
|
<span style="display: flex; align-items: center; gap: 6px;">
|
|
<i data-lucide="zap" class="icon"></i>
|
|
已自动识别您的系统
|
|
</span>
|
|
<span style="font-family: var(--font-mono); color: var(--fg-subtle);">推荐</span>
|
|
</div>
|
|
<div class="detect-card-body">
|
|
<div class="detect-card-icon">
|
|
<i data-lucide="monitor" class="icon"></i>
|
|
</div>
|
|
<div class="detect-card-info">
|
|
<h3>Windows 桌面客户端</h3>
|
|
<p>支持 Windows 10 及以上,64 位系统。</p>
|
|
<div class="meta-row">
|
|
<span><i data-lucide="hard-drive" class="icon"></i>86.4 MB</span>
|
|
<span><i data-lucide="package" class="icon"></i>v1.6.2 · x64</span>
|
|
<span><i data-lucide="shield-check" class="icon"></i>已签名</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="detect-card-actions">
|
|
<a href="#" class="btn btn-primary btn-lg">
|
|
<i data-lucide="download" class="icon"></i>
|
|
下载 Windows 客户端
|
|
</a>
|
|
<a href="#" class="btn btn-secondary btn-lg" style="width: 48px; padding: 0;" title="其他平台">
|
|
<i data-lucide="more-horizontal" class="icon"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- =========================== PLATFORM GRID =========================== -->
|
|
<section class="section platforms-section">
|
|
<div class="container">
|
|
<h2>支持的平台</h2>
|
|
<p class="section-sub">所有版本功能一致,数据云端实时同步。</p>
|
|
|
|
<!-- Row 1: Desktop -->
|
|
<div class="dl-grid" style="margin-bottom: 16px;">
|
|
<!-- Windows -->
|
|
<div class="dl-card">
|
|
<div class="dl-card-head">
|
|
<div class="dl-card-icon"><i data-lucide="monitor" class="icon"></i></div>
|
|
<span class="dl-card-version">v1.6.2 · x64</span>
|
|
</div>
|
|
<h3 class="dl-card-name">Windows</h3>
|
|
<p class="dl-card-tagline">适合办公室、收银台日常使用。支持小票机、标签机直连打印。</p>
|
|
<div class="dl-card-meta">
|
|
<div>
|
|
<div class="dl-meta-label">系统要求</div>
|
|
<div class="dl-meta-val">Windows 10+</div>
|
|
</div>
|
|
<div>
|
|
<div class="dl-meta-label">安装包大小</div>
|
|
<div class="dl-meta-val">86.4 MB</div>
|
|
</div>
|
|
</div>
|
|
<div class="dl-card-actions">
|
|
<a href="#" class="btn btn-primary">
|
|
<i data-lucide="download" class="icon"></i>下载 .exe 安装包
|
|
</a>
|
|
</div>
|
|
<div class="dl-card-alt">
|
|
<a href="#">便携版 (zip)</a> · <a href="#">x86 32 位</a> · <a href="#">历史版本</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- macOS -->
|
|
<div class="dl-card">
|
|
<div class="dl-card-head">
|
|
<div class="dl-card-icon"><i data-lucide="laptop" class="icon"></i></div>
|
|
<span class="dl-card-version">v1.6.2 · Universal</span>
|
|
</div>
|
|
<h3 class="dl-card-name">macOS</h3>
|
|
<p class="dl-card-tagline">通用版本,原生支持 Apple Silicon 与 Intel 芯片,无需切换。</p>
|
|
<div class="dl-card-meta">
|
|
<div>
|
|
<div class="dl-meta-label">系统要求</div>
|
|
<div class="dl-meta-val">macOS 12+</div>
|
|
</div>
|
|
<div>
|
|
<div class="dl-meta-label">安装包大小</div>
|
|
<div class="dl-meta-val">92.1 MB</div>
|
|
</div>
|
|
</div>
|
|
<div class="dl-card-actions">
|
|
<a href="#" class="btn btn-primary">
|
|
<i data-lucide="download" class="icon"></i>下载 .dmg 安装包
|
|
</a>
|
|
</div>
|
|
<div class="dl-card-alt">
|
|
<a href="#">仅 Apple Silicon</a> · <a href="#">仅 Intel</a> · <a href="#">历史版本</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Web -->
|
|
<div class="dl-card">
|
|
<div class="dl-card-head">
|
|
<div class="dl-card-icon"><i data-lucide="globe" class="icon"></i></div>
|
|
<span class="dl-card-version">无需安装</span>
|
|
</div>
|
|
<h3 class="dl-card-name">Web 版</h3>
|
|
<p class="dl-card-tagline">浏览器直接访问,无需下载。功能与桌面端一致,适合临时使用。</p>
|
|
<div class="dl-card-meta">
|
|
<div>
|
|
<div class="dl-meta-label">支持浏览器</div>
|
|
<div class="dl-meta-val">Chrome 110+</div>
|
|
</div>
|
|
<div>
|
|
<div class="dl-meta-label">同步</div>
|
|
<div class="dl-meta-val">实时云端</div>
|
|
</div>
|
|
</div>
|
|
<div class="dl-card-actions">
|
|
<a href="/app/" class="btn btn-primary">
|
|
<i data-lucide="arrow-right" class="icon"></i>立即访问 Web 版
|
|
</a>
|
|
</div>
|
|
<div class="dl-card-alt">
|
|
推荐 <a href="#">Chrome</a> · <a href="#">Edge</a> · <a href="#">Safari 15+</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Row 2: Mobile -->
|
|
<div class="dl-grid" style="grid-template-columns: 1fr 1fr;">
|
|
<!-- iOS -->
|
|
<div class="dl-card mobile">
|
|
<div class="dl-card-head">
|
|
<div class="dl-card-icon"><i data-lucide="smartphone" class="icon"></i></div>
|
|
<span class="dl-card-version">v1.6.2</span>
|
|
</div>
|
|
<h3 class="dl-card-name">iOS</h3>
|
|
<p class="dl-card-tagline">iPhone 与 iPad 通用版本。支持扫码盘点、离线缓存、推送通知。</p>
|
|
<div class="dl-card-meta">
|
|
<div>
|
|
<div class="dl-meta-label">系统要求</div>
|
|
<div class="dl-meta-val">iOS 15+</div>
|
|
</div>
|
|
<div>
|
|
<div class="dl-meta-label">App 大小</div>
|
|
<div class="dl-meta-val">48.2 MB</div>
|
|
</div>
|
|
</div>
|
|
<div class="dl-card-actions">
|
|
<div class="dl-qr" aria-label="二维码">
|
|
<svg class="dl-qr-pattern" viewBox="0 0 64 64" fill="#141821" xmlns="http://www.w3.org/2000/svg">
|
|
<rect x="0" y="0" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"/>
|
|
<rect x="4" y="4" width="6" height="6"/>
|
|
<rect x="50" y="0" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"/>
|
|
<rect x="54" y="4" width="6" height="6"/>
|
|
<rect x="0" y="50" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"/>
|
|
<rect x="4" y="54" width="6" height="6"/>
|
|
<rect x="18" y="2" width="3" height="3"/><rect x="24" y="2" width="3" height="3"/>
|
|
<rect x="30" y="2" width="3" height="3"/><rect x="36" y="6" width="3" height="3"/>
|
|
<rect x="42" y="2" width="3" height="3"/><rect x="18" y="8" width="3" height="3"/>
|
|
<rect x="30" y="8" width="3" height="3"/><rect x="42" y="8" width="3" height="3"/>
|
|
<rect x="2" y="18" width="3" height="3"/><rect x="8" y="18" width="3" height="3"/>
|
|
<rect x="56" y="18" width="3" height="3"/><rect x="18" y="18" width="3" height="3"/>
|
|
<rect x="24" y="18" width="3" height="3"/><rect x="36" y="18" width="3" height="3"/>
|
|
<rect x="48" y="18" width="3" height="3"/><rect x="22" y="22" width="3" height="3"/>
|
|
<rect x="30" y="22" width="3" height="3"/><rect x="38" y="22" width="3" height="3"/>
|
|
<rect x="2" y="26" width="3" height="3"/><rect x="14" y="26" width="3" height="3"/>
|
|
<rect x="26" y="26" width="3" height="3"/><rect x="42" y="26" width="3" height="3"/>
|
|
<rect x="50" y="26" width="3" height="3"/><rect x="58" y="26" width="3" height="3"/>
|
|
<rect x="6" y="32" width="3" height="3"/><rect x="20" y="32" width="3" height="3"/>
|
|
<rect x="32" y="32" width="3" height="3"/><rect x="46" y="32" width="3" height="3"/>
|
|
<rect x="2" y="38" width="3" height="3"/><rect x="14" y="38" width="3" height="3"/>
|
|
<rect x="24" y="38" width="3" height="3"/><rect x="38" y="38" width="3" height="3"/>
|
|
<rect x="50" y="38" width="3" height="3"/><rect x="20" y="44" width="3" height="3"/>
|
|
<rect x="28" y="44" width="3" height="3"/><rect x="40" y="44" width="3" height="3"/>
|
|
<rect x="50" y="44" width="3" height="3"/><rect x="56" y="44" width="3" height="3"/>
|
|
<rect x="22" y="50" width="3" height="3"/><rect x="30" y="50" width="3" height="3"/>
|
|
<rect x="42" y="50" width="3" height="3"/><rect x="48" y="50" width="3" height="3"/>
|
|
<rect x="56" y="50" width="3" height="3"/><rect x="22" y="56" width="3" height="3"/>
|
|
<rect x="34" y="56" width="3" height="3"/><rect x="42" y="56" width="3" height="3"/>
|
|
<rect x="50" y="56" width="3" height="3"/>
|
|
</svg>
|
|
</div>
|
|
<div class="stores">
|
|
<span style="font-size: 11px; color: var(--fg-subtle);">扫码或选择应用商店</span>
|
|
<a href="#" class="store-btn">
|
|
<i data-lucide="apple" class="icon"></i>App Store
|
|
<i data-lucide="external-link" class="icon" style="margin-left: auto;"></i>
|
|
</a>
|
|
<a href="#" class="store-btn">
|
|
<i data-lucide="file-down" class="icon"></i>下载 .ipa (企业证书)
|
|
<i data-lucide="external-link" class="icon" style="margin-left: auto;"></i>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Android -->
|
|
<div class="dl-card mobile">
|
|
<div class="dl-card-head">
|
|
<div class="dl-card-icon"><i data-lucide="tablet-smartphone" class="icon"></i></div>
|
|
<span class="dl-card-version">v1.6.2</span>
|
|
</div>
|
|
<h3 class="dl-card-name">Android</h3>
|
|
<p class="dl-card-tagline">支持手机与平板,可通过四大应用商店或官网直接安装 APK。</p>
|
|
<div class="dl-card-meta">
|
|
<div>
|
|
<div class="dl-meta-label">系统要求</div>
|
|
<div class="dl-meta-val">Android 9+</div>
|
|
</div>
|
|
<div>
|
|
<div class="dl-meta-label">App 大小</div>
|
|
<div class="dl-meta-val">42.8 MB</div>
|
|
</div>
|
|
</div>
|
|
<div class="dl-card-actions">
|
|
<div class="dl-qr" aria-label="二维码">
|
|
<svg class="dl-qr-pattern" viewBox="0 0 64 64" fill="#141821" xmlns="http://www.w3.org/2000/svg">
|
|
<rect x="0" y="0" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"/>
|
|
<rect x="4" y="4" width="6" height="6"/>
|
|
<rect x="50" y="0" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"/>
|
|
<rect x="54" y="4" width="6" height="6"/>
|
|
<rect x="0" y="50" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"/>
|
|
<rect x="4" y="54" width="6" height="6"/>
|
|
<rect x="20" y="0" width="3" height="3"/><rect x="26" y="0" width="3" height="3"/>
|
|
<rect x="32" y="2" width="3" height="3"/><rect x="40" y="4" width="3" height="3"/>
|
|
<rect x="46" y="0" width="3" height="3"/><rect x="20" y="6" width="3" height="3"/>
|
|
<rect x="28" y="6" width="3" height="3"/><rect x="38" y="6" width="3" height="3"/>
|
|
<rect x="4" y="20" width="3" height="3"/><rect x="10" y="20" width="3" height="3"/>
|
|
<rect x="58" y="20" width="3" height="3"/><rect x="20" y="20" width="3" height="3"/>
|
|
<rect x="28" y="20" width="3" height="3"/><rect x="40" y="20" width="3" height="3"/>
|
|
<rect x="50" y="20" width="3" height="3"/><rect x="18" y="24" width="3" height="3"/>
|
|
<rect x="32" y="24" width="3" height="3"/><rect x="42" y="24" width="3" height="3"/>
|
|
<rect x="4" y="28" width="3" height="3"/><rect x="12" y="28" width="3" height="3"/>
|
|
<rect x="24" y="28" width="3" height="3"/><rect x="38" y="28" width="3" height="3"/>
|
|
<rect x="48" y="28" width="3" height="3"/><rect x="54" y="28" width="3" height="3"/>
|
|
<rect x="8" y="34" width="3" height="3"/><rect x="22" y="34" width="3" height="3"/>
|
|
<rect x="34" y="34" width="3" height="3"/><rect x="46" y="34" width="3" height="3"/>
|
|
<rect x="0" y="38" width="3" height="3"/><rect x="14" y="38" width="3" height="3"/>
|
|
<rect x="22" y="38" width="3" height="3"/><rect x="36" y="38" width="3" height="3"/>
|
|
<rect x="50" y="38" width="3" height="3"/><rect x="22" y="44" width="3" height="3"/>
|
|
<rect x="30" y="44" width="3" height="3"/><rect x="42" y="44" width="3" height="3"/>
|
|
<rect x="52" y="44" width="3" height="3"/><rect x="58" y="44" width="3" height="3"/>
|
|
<rect x="20" y="50" width="3" height="3"/><rect x="28" y="50" width="3" height="3"/>
|
|
<rect x="40" y="50" width="3" height="3"/><rect x="48" y="50" width="3" height="3"/>
|
|
<rect x="54" y="50" width="3" height="3"/><rect x="20" y="56" width="3" height="3"/>
|
|
<rect x="32" y="56" width="3" height="3"/><rect x="40" y="56" width="3" height="3"/>
|
|
<rect x="48" y="56" width="3" height="3"/>
|
|
</svg>
|
|
</div>
|
|
<div class="stores">
|
|
<a href="#" class="store-btn">
|
|
<i data-lucide="download" class="icon"></i>下载 APK (推荐)
|
|
<i data-lucide="external-link" class="icon" style="margin-left: auto;"></i>
|
|
</a>
|
|
<a href="#" class="store-btn">
|
|
<i data-lucide="store" class="icon"></i>应用宝
|
|
</a>
|
|
<a href="#" class="store-btn">
|
|
<i data-lucide="store" class="icon"></i>华为应用市场
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- =========================== SYSTEM REQUIREMENTS =========================== -->
|
|
<section class="section req-section">
|
|
<div class="container">
|
|
<h2 style="font-size: var(--text-3xl); font-weight: 600; color: var(--brand-900); margin: 0 0 8px; letter-spacing: var(--tracking-cn-display);">系统要求</h2>
|
|
<p class="section-sub" style="font-size: var(--text-md); color: var(--fg-muted); margin: 0 0 40px;">
|
|
在以下环境中均经过测试与验证。低于最低要求的环境可能影响功能可用性。
|
|
</p>
|
|
|
|
<div class="req-card">
|
|
<div class="req-row head">
|
|
<div>平台</div>
|
|
<div>最低要求</div>
|
|
<div>推荐配置</div>
|
|
<div>状态</div>
|
|
</div>
|
|
<div class="req-row">
|
|
<div class="req-platform"><i data-lucide="monitor" class="icon"></i>Windows</div>
|
|
<div class="req-val">Win 10 · 4GB RAM · 1GB 存储</div>
|
|
<div class="req-val">Win 11 · 8GB RAM · SSD</div>
|
|
<div class="req-supported"><i data-lucide="check-circle" class="icon"></i>已验证</div>
|
|
</div>
|
|
<div class="req-row">
|
|
<div class="req-platform"><i data-lucide="laptop" class="icon"></i>macOS</div>
|
|
<div class="req-val">macOS 12 · 4GB RAM</div>
|
|
<div class="req-val">macOS 14+ · M1/M2 芯片</div>
|
|
<div class="req-supported"><i data-lucide="check-circle" class="icon"></i>已验证</div>
|
|
</div>
|
|
<div class="req-row">
|
|
<div class="req-platform"><i data-lucide="smartphone" class="icon"></i>iOS</div>
|
|
<div class="req-val">iOS 15 · iPhone 8 及以上</div>
|
|
<div class="req-val">iOS 17+ · iPhone 12+</div>
|
|
<div class="req-supported"><i data-lucide="check-circle" class="icon"></i>已验证</div>
|
|
</div>
|
|
<div class="req-row">
|
|
<div class="req-platform"><i data-lucide="tablet-smartphone" class="icon"></i>Android</div>
|
|
<div class="req-val">Android 9 · 3GB RAM</div>
|
|
<div class="req-val">Android 13+ · 6GB RAM</div>
|
|
<div class="req-supported"><i data-lucide="check-circle" class="icon"></i>已验证</div>
|
|
</div>
|
|
<div class="req-row">
|
|
<div class="req-platform"><i data-lucide="globe" class="icon"></i>Web</div>
|
|
<div class="req-val">Chrome 110 · Edge 110 · Safari 15</div>
|
|
<div class="req-val">最新版 Chrome / Edge</div>
|
|
<div class="req-supported"><i data-lucide="check-circle" class="icon"></i>已验证</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="display: flex; gap: 18px; align-items: flex-start; margin-top: 24px; padding: 16px 20px; background: var(--info-50); border-radius: var(--radius-md); border-left: 3px solid var(--info-500);">
|
|
<i data-lucide="info" class="icon" style="width: 18px; height: 18px; color: var(--info-500); margin-top: 2px; flex-shrink: 0;"></i>
|
|
<div style="font-size: var(--text-sm); color: var(--gray-700); line-height: 1.6;">
|
|
<strong style="color: var(--gray-900);">硬件外设支持</strong> · 打印机:USB / 网络 ESC/POS · 标签机:佳博、芯烨、汉印 · 扫码枪:USB / 蓝牙 HID 模式。完整外设兼容列表参见<a href="/docs.html" style="color: var(--brand-500); font-weight: 500;">文档 · 硬件支持</a>。
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- =========================== CHANGELOG =========================== -->
|
|
<section class="section changelog-section">
|
|
<div class="container">
|
|
<h2 style="font-size: var(--text-3xl); font-weight: 600; color: var(--brand-900); margin: 0 0 8px; letter-spacing: var(--tracking-cn-display);">版本更新日志</h2>
|
|
<p class="section-sub" style="font-size: var(--text-md); color: var(--fg-muted); margin: 0 0 0; max-width: 600px;">
|
|
每月一次小版本,每季度一次大更新。完整变更见 <a href="#" style="color: var(--brand-500); font-weight: 500;">GitHub Releases</a>。
|
|
</p>
|
|
|
|
<div class="changelog">
|
|
<!-- v1.6.2 -->
|
|
<div class="changelog-entry current">
|
|
<div class="changelog-meta">
|
|
<div class="changelog-version">v1.6.2</div>
|
|
<div class="changelog-date">2026-05-15</div>
|
|
<span class="changelog-tag">当前版本</span>
|
|
</div>
|
|
<div class="changelog-body">
|
|
<h3>多仓库联动盘点与权限增强</h3>
|
|
<div class="changelog-cat">
|
|
<div class="changelog-cat-label"><span class="dot feature"></span>新功能</div>
|
|
<ul>
|
|
<li>「库存盘点」支持跨仓库联动盘点,一次盘完多仓数据</li>
|
|
<li>新增「只读账号」可独立配置导出权限</li>
|
|
<li>商品标签支持自定义二维码内容与门店 logo 水印</li>
|
|
</ul>
|
|
</div>
|
|
<div class="changelog-cat">
|
|
<div class="changelog-cat-label"><span class="dot improve"></span>体验改进</div>
|
|
<ul>
|
|
<li>入库单明细行支持复制上一行,连续录入更快</li>
|
|
<li>财务列表新增「往来单位余额」一列</li>
|
|
<li>移动端扫码识别速度提升约 30%</li>
|
|
</ul>
|
|
</div>
|
|
<div class="changelog-cat">
|
|
<div class="changelog-cat-label"><span class="dot fix"></span>问题修复</div>
|
|
<ul>
|
|
<li>修复 macOS 14.4 下打印对话框偶发卡死</li>
|
|
<li>修复数据导入时空行被计入失败计数</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- v1.6.0 -->
|
|
<div class="changelog-entry">
|
|
<div class="changelog-meta">
|
|
<div class="changelog-version">v1.6.0</div>
|
|
<div class="changelog-date">2026-04-02</div>
|
|
</div>
|
|
<div class="changelog-body">
|
|
<h3>财务模块大幅升级</h3>
|
|
<div class="changelog-cat">
|
|
<div class="changelog-cat-label"><span class="dot feature"></span>新功能</div>
|
|
<ul>
|
|
<li>财务管理新增「应付应收对账单」模块,按月按往来单位汇总</li>
|
|
<li>支持「部分结清」与「批量结清」操作</li>
|
|
<li>报表新增损耗趋势分析</li>
|
|
</ul>
|
|
</div>
|
|
<div class="changelog-cat">
|
|
<div class="changelog-cat-label"><span class="dot improve"></span>体验改进</div>
|
|
<ul>
|
|
<li>侧边栏支持收起与图标导航模式</li>
|
|
<li>商品字典三级联动(名称/系列/规格)下拉响应更顺滑</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- v1.5.4 -->
|
|
<div class="changelog-entry">
|
|
<div class="changelog-meta">
|
|
<div class="changelog-version">v1.5.4</div>
|
|
<div class="changelog-date">2026-03-12</div>
|
|
</div>
|
|
<div class="changelog-body">
|
|
<h3>稳定性更新</h3>
|
|
<div class="changelog-cat">
|
|
<div class="changelog-cat-label"><span class="dot fix"></span>问题修复</div>
|
|
<ul>
|
|
<li>修复连续高频提交单据时的偶发重复编号问题</li>
|
|
<li>修复 Windows 7 系统下中文输入法弹出的兼容问题</li>
|
|
<li>提升弱网环境下数据同步的可靠性</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- v1.5.0 -->
|
|
<div class="changelog-entry">
|
|
<div class="changelog-meta">
|
|
<div class="changelog-version">v1.5.0</div>
|
|
<div class="changelog-date">2026-02-08</div>
|
|
</div>
|
|
<div class="changelog-body">
|
|
<h3>引入移动端 App</h3>
|
|
<div class="changelog-cat">
|
|
<div class="changelog-cat-label"><span class="dot feature"></span>新功能</div>
|
|
<ul>
|
|
<li>正式发布 iOS 与 Android 移动端 App</li>
|
|
<li>支持蓝牙扫码枪与蓝牙标签打印</li>
|
|
<li>离线缓存机制:断网时仍可查询库存与录入单据</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="margin-top: 32px; text-align: center;">
|
|
<a href="#" class="btn btn-secondary">查看完整变更历史 <i data-lucide="arrow-right" class="icon"></i></a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- =========================== BETA PROGRAM =========================== -->
|
|
<section class="container">
|
|
<div class="beta-banner">
|
|
<div>
|
|
<div class="beta-banner-tag">
|
|
<i data-lucide="flask-conical" class="icon"></i>BETA · 内测通道
|
|
</div>
|
|
<h2>抢先体验下一个版本</h2>
|
|
<p>v1.7 内测包含智能补货建议、AI 单据识别、批次过期预警等新特性。Beta 渠道独立部署,不影响正式环境数据。</p>
|
|
</div>
|
|
<div class="beta-banner-actions">
|
|
<a href="#" class="btn btn-primary btn-lg">
|
|
<i data-lucide="user-plus" class="icon"></i>申请加入 Beta
|
|
</a>
|
|
<span class="beta-banner-note">名额限定,需企业账号审批通过</span>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- =========================== FOOTER =========================== -->
|
|
<footer>
|
|
<div class="container">
|
|
<div class="footer-grid">
|
|
<div class="footer-brand">
|
|
<img src="assets/logo-full.svg" alt="岩美" />
|
|
<p>为酒行与酒店设计的库存、审核、财务一体化管理平台。</p>
|
|
<div class="footer-contact">
|
|
<div>support@yanmei.app</div>
|
|
<div>400-880-8888</div>
|
|
</div>
|
|
</div>
|
|
<div class="footer-col">
|
|
<h5>产品</h5>
|
|
<ul>
|
|
<li><a href="/#modules">核心模块</a></li>
|
|
<li><a href="/#platforms">多端覆盖</a></li>
|
|
<li><a href="/#reports">数据洞察</a></li>
|
|
<li><a href="/#pricing">价格方案</a></li>
|
|
<li><a href="/download.html">下载客户端</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer-col">
|
|
<h5>资源</h5>
|
|
<ul>
|
|
<li><a href="/docs.html">使用手册</a></li>
|
|
<li><a href="#">API 文档</a></li>
|
|
<li><a href="#">视频教程</a></li>
|
|
<li><a href="#">数据导入模板</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer-col">
|
|
<h5>客户支持</h5>
|
|
<ul>
|
|
<li><a href="/#faq">常见问题</a></li>
|
|
<li><a href="#">提交工单</a></li>
|
|
<li><a href="#">技术支持</a></li>
|
|
<li><a href="#">服务等级</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer-col">
|
|
<h5>公司</h5>
|
|
<ul>
|
|
<li><a href="#">关于岩美</a></li>
|
|
<li><a href="#">客户案例</a></li>
|
|
<li><a href="#">招贤纳士</a></li>
|
|
<li><a href="#">联系我们</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="footer-bottom">
|
|
<div>© 2026 岩美科技 · 保留所有权利</div>
|
|
<div>沪 ICP 备 2026000000 号 · 沪公网安备 31010000000000 号</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
<script>
|
|
function getAuthUser() {
|
|
var token = localStorage.getItem('flutter.access_token');
|
|
var username = localStorage.getItem('flutter.username');
|
|
var realName = localStorage.getItem('flutter.real_name') || '';
|
|
var role = localStorage.getItem('flutter.role') || '';
|
|
var shopNo = localStorage.getItem('flutter.shop_no') || '';
|
|
if (!token || !username) return null;
|
|
return { username: username, realName: realName, role: role, shopNo: shopNo };
|
|
}
|
|
function doLogout() {
|
|
['access_token','refresh_token','username','real_name','shop_no','shop_id','role']
|
|
.forEach(function(k) { localStorage.removeItem('flutter.' + k); });
|
|
location.reload();
|
|
}
|
|
function toggleUserMenu() {
|
|
var el = document.getElementById('userDropdown');
|
|
if (el) el.classList.toggle('open');
|
|
}
|
|
document.addEventListener('click', function(e) {
|
|
var menu = document.getElementById('userDropdown');
|
|
if (menu) {
|
|
var navUser = menu.closest('.nav-user');
|
|
if (navUser && !navUser.contains(e.target)) menu.classList.remove('open');
|
|
}
|
|
});
|
|
function renderNav() {
|
|
var cta = document.getElementById('nav-cta');
|
|
if (!cta) return;
|
|
var user = getAuthUser();
|
|
if (user) {
|
|
var display = user.realName || user.username;
|
|
var initial = display.charAt(0).toUpperCase();
|
|
var roleMap = { admin: '管理员', user: '成员', readonly: '只读' };
|
|
var roleLabel = roleMap[user.role] || user.role;
|
|
cta.innerHTML = '<div class="nav-user">'
|
|
+ '<button class="nav-user-btn" onclick="toggleUserMenu()">'
|
|
+ '<div class="nav-avatar">' + initial + '</div>'
|
|
+ '<span>' + display + '</span>'
|
|
+ '<i data-lucide="chevron-down" class="icon"></i>'
|
|
+ '</button>'
|
|
+ '<div class="nav-dropdown" id="userDropdown">'
|
|
+ '<div style="padding:10px 14px 6px;border-bottom:1px solid var(--border-subtle);margin-bottom:4px">'
|
|
+ '<div style="font-size:13px;font-weight:600;color:var(--brand-900)">' + display + '</div>'
|
|
+ '<div style="font-size:11px;color:var(--fg-muted);margin-top:2px">' + (user.shopNo ? user.shopNo + ' · ' : '') + roleLabel + '</div>'
|
|
+ '</div>'
|
|
+ '<a href="/app/"><i data-lucide="layout-dashboard" class="icon"></i>进入管理端</a>'
|
|
+ '<div class="nav-dropdown-divider"></div>'
|
|
+ '<button class="logout" onclick="doLogout()"><i data-lucide="log-out" class="icon"></i>退出登录</button>'
|
|
+ '</div></div>';
|
|
} else {
|
|
cta.innerHTML = '<a href="/app/" class="btn btn-ghost">登录</a>'
|
|
+ '<a href="/app/" class="btn btn-primary">免费试用</a>';
|
|
}
|
|
if (window.lucide) lucide.createIcons();
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
renderNav();
|
|
if (window.lucide) lucide.createIcons();
|
|
});
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|