1190 lines
72 KiB
HTML
1190 lines
72 KiB
HTML
<!doctype html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<meta name="color-scheme" content="light">
|
||
<title>小白复盘</title>
|
||
<link rel="stylesheet" href="/styles.css">
|
||
</head>
|
||
<body>
|
||
<section id="authGate" class="auth-gate" aria-label="账号登录">
|
||
<div class="auth-shell">
|
||
<div class="auth-brand">
|
||
<div class="brand-mark" aria-hidden="true">
|
||
<svg class="brand-logo" viewBox="0 0 36 36" role="img">
|
||
<rect width="36" height="36" rx="7" fill="currentColor"/>
|
||
<path d="M12 11.5h13v15H11.5v-11h13M12 19h12.5M16 7.5l3 3.2 4.5-4.2" fill="none" stroke="#fff" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/>
|
||
<path d="M19 10.7l4.5-4.2" fill="none" stroke="#E96B70" stroke-width="2.4" stroke-linecap="round"/>
|
||
</svg>
|
||
</div>
|
||
<div><h1>小白复盘</h1><span>登录后进入你的复盘空间</span></div>
|
||
</div>
|
||
<div class="auth-tabs" role="tablist">
|
||
<button id="authLoginTab" class="auth-tab active" type="button" data-auth-mode="login">登录</button>
|
||
<button id="authRegisterTab" class="auth-tab" type="button" data-auth-mode="register">注册</button>
|
||
</div>
|
||
<form id="authForm" class="auth-form">
|
||
<label class="form-field"><span>账号名</span><input id="authUsername" type="text" minlength="3" maxlength="30" autocomplete="username" required></label>
|
||
<label class="form-field"><span>密码</span><input id="authPassword" type="password" minlength="8" maxlength="128" autocomplete="current-password" required></label>
|
||
<label id="authConfirmField" class="form-field" hidden><span>确认密码</span><input id="authPasswordConfirm" type="password" minlength="8" maxlength="128" autocomplete="new-password"></label>
|
||
<p id="authError" class="auth-error" hidden></p>
|
||
<button id="authSubmitButton" class="button primary" type="submit">登录</button>
|
||
</form>
|
||
</div>
|
||
</section>
|
||
|
||
<header class="app-header">
|
||
<div class="brand-block">
|
||
<div class="brand-mark" aria-hidden="true">
|
||
<svg class="brand-logo" viewBox="0 0 36 36" role="img">
|
||
<rect width="36" height="36" rx="7" fill="currentColor"/>
|
||
<path d="M12 11.5h13v15H11.5v-11h13M12 19h12.5M16 7.5l3 3.2 4.5-4.2" fill="none" stroke="#fff" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/>
|
||
<path d="M19 10.7l4.5-4.2" fill="none" stroke="#E96B70" stroke-width="2.4" stroke-linecap="round"/>
|
||
</svg>
|
||
</div>
|
||
<div>
|
||
<h1>小白复盘</h1>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="market-tape" aria-label="市场概况">
|
||
<span class="market-item up">上涨 <strong id="tapeUp">--</strong></span>
|
||
<span class="market-item down">下跌 <strong id="tapeDown">--</strong></span>
|
||
<span class="market-item">涨停 <strong id="tapeLimit">--</strong></span>
|
||
<span class="market-item">成交额 <strong id="tapeAmount">--</strong></span>
|
||
</div>
|
||
|
||
<div class="header-actions">
|
||
<div class="header-date-group">
|
||
<button id="prevDate" class="icon-button" type="button" title="前一个交易日" aria-label="前一个交易日"><i data-lucide="chevron-left"></i></button>
|
||
<input id="tradeDate" class="date-input" type="date" aria-label="交易日期">
|
||
<button id="nextDate" class="icon-button" type="button" title="后一个交易日" aria-label="后一个交易日"><i data-lucide="chevron-right"></i></button>
|
||
</div>
|
||
<button id="globalSearchButton" class="icon-button global-search-button" type="button" title="全局搜索(Ctrl+K)" aria-label="全局搜索"><i data-lucide="search"></i></button>
|
||
<button id="headerMenuButton" class="icon-button header-menu-button" type="button" title="打开命令菜单" aria-label="打开命令菜单" aria-expanded="false" aria-controls="headerCommandGroup"><i data-lucide="ellipsis"></i></button>
|
||
<div id="headerCommandGroup" class="header-command-group">
|
||
<button id="refreshButton" class="button command-button" type="button"><i data-lucide="refresh-cw"></i><span>刷新</span></button>
|
||
<button id="syncButton" class="button primary command-button" type="button" hidden><i data-lucide="cloud-download"></i><span>后台刷新</span></button>
|
||
<button id="settingsButton" class="button command-button" type="button" hidden><i data-lucide="settings-2"></i><span>系统管理</span></button>
|
||
<div class="account-menu-shell">
|
||
<div id="accountRoleBadges" class="account-role-badges" aria-label="账号身份">
|
||
<span id="accountAdminBadge" class="account-role-badge admin-role-badge" hidden><i data-lucide="shield-check"></i><span>管理员</span></span>
|
||
<button id="accountVipBadge" class="account-role-badge vip-role-badge" type="button" title="查看会员状态" hidden><b aria-hidden="true">V</b><span id="accountVipLabel">非会员</span></button>
|
||
</div>
|
||
<button id="accountButton" class="button account-button command-button" type="button" title="账号菜单" aria-haspopup="menu" aria-expanded="false" aria-controls="accountDropdown"><i data-lucide="circle-user-round"></i><span id="accountName">--</span><i class="account-menu-chevron" data-lucide="chevron-down"></i></button>
|
||
<div id="accountDropdown" class="account-dropdown" role="menu" hidden>
|
||
<div class="account-dropdown-head"><strong id="accountMenuName">--</strong><span id="accountMenuRole">普通用户</span></div>
|
||
<button type="button" role="menuitem" data-account-panel="profile"><i data-lucide="user-round"></i><span>个人资料</span><i data-lucide="chevron-right"></i></button>
|
||
<button type="button" role="menuitem" data-account-panel="membership"><i data-lucide="badge-check"></i><span>会员状态</span><i data-lucide="chevron-right"></i></button>
|
||
<button type="button" role="menuitem" data-account-panel="password"><i data-lucide="key-round"></i><span>修改密码</span><i data-lucide="chevron-right"></i></button>
|
||
<div class="account-dropdown-separator"></div>
|
||
<button id="switchAccountMenuButton" type="button" role="menuitem"><i data-lucide="repeat-2"></i><span>切换账号</span></button>
|
||
<button id="logoutMenuButton" class="account-menu-danger" type="button" role="menuitem"><i data-lucide="log-out"></i><span>退出</span></button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
<nav class="module-nav" aria-label="复盘模块">
|
||
<div class="nav-brand" aria-hidden="true"><span>工作台</span></div>
|
||
<div class="nav-group market-nav-group">
|
||
<div class="nav-group-label">市场复盘</div>
|
||
<button class="module-tab market-sub-tab" type="button" data-view="sentimentCycleView" title="情绪周期"><i data-lucide="activity"></i><span>情绪周期</span></button>
|
||
<button class="module-tab active mobile-primary-tab" type="button" data-view="limitPool" title="涨停池"><i data-lucide="flame"></i><span class="nav-label-desktop">涨停池</span><span class="nav-label-mobile">行情</span></button>
|
||
<button class="module-tab market-sub-tab" type="button" data-view="brokenView" title="炸板池"><i data-lucide="bomb"></i><span>炸板池</span></button>
|
||
<button class="module-tab market-sub-tab" type="button" data-view="downView" title="跌停板"><i data-lucide="trending-down"></i><span>跌停板</span></button>
|
||
<button class="module-tab market-sub-tab" type="button" data-view="yesterdayView" title="昨日涨停"><i data-lucide="history"></i><span>昨日涨停</span></button>
|
||
<button class="module-tab market-sub-tab" type="button" data-view="performanceView" title="涨停表现"><i data-lucide="chart-no-axes-combined"></i><span>涨停表现</span></button>
|
||
<button class="module-tab market-sub-tab" type="button" data-view="ladderView" title="市场天梯"><i data-lucide="layers-3"></i><span>市场天梯</span></button>
|
||
<button class="module-tab market-sub-tab" type="button" data-view="rotationView" title="板块轮动"><i data-lucide="refresh-cw"></i><span>板块轮动</span></button>
|
||
<button class="module-tab market-sub-tab" type="button" data-view="dragonView" title="龙虎榜"><i data-lucide="list-tree"></i><span>龙虎榜</span></button>
|
||
</div>
|
||
<div class="nav-group tool-nav-group">
|
||
<div class="nav-group-label">智能工具</div>
|
||
<button class="module-tab mobile-primary-tab" type="button" data-view="screenerView" title="智能选股"><i data-lucide="search-check"></i><span>智能选股</span></button>
|
||
<button class="module-tab mobile-primary-tab" type="button" data-view="mentorView" title="问师"><i data-lucide="messages-square"></i><span>问师</span></button>
|
||
<button class="module-tab mobile-primary-tab" type="button" data-view="heavenView" title="问天"><i data-lucide="sparkles"></i><span>问天</span></button>
|
||
</div>
|
||
<div class="nav-group personal-nav-group">
|
||
<div class="nav-group-label">个人</div>
|
||
<button class="module-tab mobile-primary-tab" type="button" data-view="reviewWorkspaceView" title="我的复盘"><i data-lucide="notebook-pen"></i><span class="nav-label-desktop">我的复盘</span><span class="nav-label-mobile">复盘</span></button>
|
||
</div>
|
||
<button id="sidebarCollapseButton" class="sidebar-collapse-button" type="button" title="收起侧栏" aria-label="收起侧栏" aria-expanded="true"><i data-lucide="panel-left-close"></i><span>收起侧栏</span></button>
|
||
</nav>
|
||
|
||
<main class="app-main">
|
||
<label id="mobileMarketSelector" class="mobile-market-selector" hidden>
|
||
<span><i data-lucide="layout-dashboard"></i><b>行情视图</b></span>
|
||
<select id="mobileMarketViewSelect" aria-label="选择行情视图">
|
||
<option value="sentimentCycleView">情绪周期</option>
|
||
<option value="limitPool">涨停池</option>
|
||
<option value="brokenView">炸板池</option>
|
||
<option value="downView">跌停板</option>
|
||
<option value="yesterdayView">昨日涨停</option>
|
||
<option value="performanceView">涨停表现</option>
|
||
<option value="ladderView">市场天梯</option>
|
||
<option value="rotationView">板块轮动</option>
|
||
<option value="dragonView">龙虎榜</option>
|
||
</select>
|
||
<i data-lucide="chevron-down" aria-hidden="true"></i>
|
||
</label>
|
||
<section class="overview-strip" aria-label="当日复盘指标">
|
||
<div class="sentiment-block">
|
||
<div class="sentiment-gauge" id="sentimentGauge">
|
||
<span id="sentimentScore">--</span>
|
||
</div>
|
||
<div>
|
||
<span class="metric-label">市场情绪</span>
|
||
<strong id="sentimentText" class="sentiment-text">等待数据</strong>
|
||
</div>
|
||
</div>
|
||
<div class="metric">
|
||
<span class="metric-label">涨停</span>
|
||
<strong id="limitUpMetric" class="metric-value up">--</strong>
|
||
</div>
|
||
<div class="metric">
|
||
<span class="metric-label">跌停</span>
|
||
<strong id="limitDownMetric" class="metric-value down">--</strong>
|
||
</div>
|
||
<div class="metric">
|
||
<span class="metric-label">炸板</span>
|
||
<strong id="brokenMetric" class="metric-value warning">--</strong>
|
||
</div>
|
||
<div class="metric">
|
||
<span class="metric-label">封板率</span>
|
||
<strong id="sealRateMetric" class="metric-value">--</strong>
|
||
</div>
|
||
<div class="metric">
|
||
<span class="metric-label">两市成交</span>
|
||
<strong id="amountMetric" class="metric-value">--</strong>
|
||
</div>
|
||
<div class="metric metric-wide">
|
||
<span class="metric-label">数据日期</span>
|
||
<strong id="dataDateMetric" class="metric-value small">--</strong>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="limitPool" class="workspace-view active-view">
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>涨停股票池</h2>
|
||
<span id="resultCount" class="count-badge">0 只</span>
|
||
</div>
|
||
<div class="toolbar-controls">
|
||
<div class="segmented" role="group" aria-label="连板筛选">
|
||
<button type="button" class="segment active" data-filter="all">全部</button>
|
||
<button type="button" class="segment" data-filter="1">首板</button>
|
||
<button type="button" class="segment" data-filter="2">2板</button>
|
||
<button type="button" class="segment" data-filter="3">3板+</button>
|
||
</div>
|
||
<label class="search-field">
|
||
<span class="visually-hidden">搜索股票</span>
|
||
<input id="stockSearch" type="search" placeholder="代码、名称、题材">
|
||
</label>
|
||
<button id="exportButton" class="button" type="button">导出 CSV</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="main-grid">
|
||
<div class="table-frame">
|
||
<table class="data-table" id="limitTable">
|
||
<thead>
|
||
<tr>
|
||
<th class="row-number">#</th>
|
||
<th data-sort="code">代码</th>
|
||
<th data-sort="name">股票名称</th>
|
||
<th class="number" data-sort="streak">连板</th>
|
||
<th class="number" data-sort="change">涨幅</th>
|
||
<th class="number" data-sort="price">价格</th>
|
||
<th data-sort="sector">所属板块</th>
|
||
<th class="reason-column">涨停原因</th>
|
||
<th data-sort="first_time">首封</th>
|
||
<th data-sort="last_time">最后封板</th>
|
||
<th class="number" data-sort="open_times">开板</th>
|
||
<th class="number" data-sort="turnover_rate">换手率</th>
|
||
<th class="number" data-sort="amount_billion">成交额</th>
|
||
<th class="number" data-sort="seal_amount_million">封单额</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="limitTableBody"></tbody>
|
||
</table>
|
||
<div id="emptyState" class="empty-state" hidden>没有符合条件的股票</div>
|
||
</div>
|
||
|
||
<aside class="insight-rail" aria-label="连板与板块概况">
|
||
<section class="rail-section">
|
||
<div class="rail-heading">
|
||
<h3>连板高度</h3>
|
||
<span id="maxHeight">--</span>
|
||
</div>
|
||
<div id="ladderMini" class="ladder-mini"></div>
|
||
</section>
|
||
<section class="rail-section">
|
||
<div class="rail-heading">
|
||
<h3>热点板块</h3>
|
||
<button class="text-button" type="button" data-open-view="rotationView">查看轮动</button>
|
||
</div>
|
||
<div id="sectorMini" class="sector-mini"></div>
|
||
</section>
|
||
</aside>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="brokenView" class="workspace-view">
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>炸板股票池</h2>
|
||
<span id="brokenCount" class="count-badge warning-badge">0 只</span>
|
||
<span class="section-subtitle">触及涨停后未能封住</span>
|
||
</div>
|
||
<button id="brokenExportButton" class="button" type="button">导出 CSV</button>
|
||
</div>
|
||
<div class="table-frame phase-table-frame">
|
||
<table class="data-table">
|
||
<thead><tr>
|
||
<th>#</th><th>代码</th><th>股票名称</th><th class="number">涨幅</th>
|
||
<th class="number">价格</th><th>所属板块</th><th class="reason-column">炸板原因</th>
|
||
<th>首次触板</th><th>最后触板</th><th class="number">开板</th>
|
||
<th class="number">换手率</th><th class="number">成交额</th>
|
||
</tr></thead>
|
||
<tbody id="brokenTableBody"></tbody>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="downView" class="workspace-view">
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>跌停股票池</h2>
|
||
<span id="downCount" class="count-badge down-badge">0 只</span>
|
||
<span class="section-subtitle">观察退潮、高位风险与亏钱效应</span>
|
||
</div>
|
||
<button id="downExportButton" class="button" type="button">导出 CSV</button>
|
||
</div>
|
||
<div class="table-frame phase-table-frame">
|
||
<table class="data-table">
|
||
<thead><tr>
|
||
<th>#</th><th>代码</th><th>股票名称</th><th class="number">跌幅</th>
|
||
<th class="number">价格</th><th>所属板块</th><th class="reason-column">风险线索</th>
|
||
<th class="number">连续跌停</th><th class="number">换手率</th><th class="number">成交额</th>
|
||
</tr></thead>
|
||
<tbody id="downTableBody"></tbody>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="yesterdayView" class="workspace-view">
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>昨日涨停表现</h2>
|
||
<span id="yesterdayCount" class="count-badge">0 只</span>
|
||
<span id="previousTradeDate" class="section-subtitle">--</span>
|
||
</div>
|
||
<button id="yesterdayExportButton" class="button" type="button">导出 CSV</button>
|
||
</div>
|
||
<div class="table-frame phase-table-frame">
|
||
<table class="data-table">
|
||
<thead><tr>
|
||
<th>#</th><th>代码</th><th>股票名称</th><th class="number">昨日高度</th>
|
||
<th class="number">今日涨幅</th><th>今日结果</th><th class="number">当前高度</th>
|
||
<th>所属板块</th><th class="reason-column">涨停逻辑</th>
|
||
</tr></thead>
|
||
<tbody id="yesterdayTableBody"></tbody>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="performanceView" class="workspace-view">
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>涨停晋级表现</h2>
|
||
<span class="section-subtitle">按昨日连板高度统计今日反馈</span>
|
||
</div>
|
||
</div>
|
||
<div id="performanceCards" class="performance-cards"></div>
|
||
<section class="market-breadth-panel" aria-labelledby="marketBreadthTitle">
|
||
<div class="workspace-heading">
|
||
<div><h3 id="marketBreadthTitle">市场宽度</h3><span id="breadthSummary">--</span></div>
|
||
<strong id="breadthRatio">--</strong>
|
||
</div>
|
||
<div class="breadth-distribution" aria-label="上涨、平盘与下跌家数分布">
|
||
<i id="breadthUpBar" class="breadth-up"></i><i id="breadthFlatBar" class="breadth-flat"></i><i id="breadthDownBar" class="breadth-down"></i>
|
||
</div>
|
||
<div class="breadth-metrics">
|
||
<div><span>上涨</span><strong id="breadthUpCount" class="up">--</strong></div>
|
||
<div><span>平盘</span><strong id="breadthFlatCount">--</strong></div>
|
||
<div><span>下跌</span><strong id="breadthDownCount" class="down">--</strong></div>
|
||
<div><span>涨跌比</span><strong id="breadthAdvanceDecline">--</strong></div>
|
||
<div><span>宽度差</span><strong id="breadthDifference">--</strong></div>
|
||
</div>
|
||
</section>
|
||
<div class="table-frame performance-table-frame">
|
||
<table class="data-table">
|
||
<thead><tr>
|
||
<th>昨日梯队</th><th class="number">股票数</th><th class="number">晋级数</th>
|
||
<th class="number">晋级率</th><th class="number">收红率</th><th class="number">平均涨幅</th>
|
||
</tr></thead>
|
||
<tbody id="performanceTableBody"></tbody>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="sentimentCycleView" class="workspace-view">
|
||
<div class="section-toolbar sentiment-cycle-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>情绪周期</h2>
|
||
<span id="sentimentHistoryDateRange" class="section-subtitle">--</span>
|
||
</div>
|
||
<div class="toolbar-controls">
|
||
<div class="segmented sentiment-range-selector" role="group" aria-label="统计交易日范围">
|
||
<button class="segment sentiment-range-button" type="button" data-sentiment-range="10">10日</button>
|
||
<button class="segment sentiment-range-button active" type="button" data-sentiment-range="20">20日</button>
|
||
<button class="segment sentiment-range-button" type="button" data-sentiment-range="60">60日</button>
|
||
</div>
|
||
<button id="sentimentExportButton" class="button" type="button">导出 CSV</button>
|
||
</div>
|
||
</div>
|
||
<div id="sentimentHistoryNotice" class="inline-notice" hidden></div>
|
||
<section class="sentiment-cycle-summary" aria-label="最新情绪状态">
|
||
<div class="sentiment-cycle-current">
|
||
<div id="sentimentCycleScoreMarker" class="sentiment-cycle-score-marker"><strong id="sentimentCycleScore">--</strong><span>/ 100</span></div>
|
||
<div><span class="metric-label">最新交易日</span><h3 id="sentimentCycleLabel">--</h3><small id="sentimentCycleDate">--</small></div>
|
||
</div>
|
||
<div class="sentiment-cycle-state"><span>周期阶段</span><strong id="sentimentCyclePhase">--</strong><small id="sentimentCycleDirection">--</small></div>
|
||
<div class="sentiment-cycle-state"><span>昨日涨停反馈</span><strong id="sentimentPreviousPositive">--</strong><small id="sentimentPreviousAverage">--</small></div>
|
||
<div class="sentiment-cycle-state"><span>统计样本</span><strong id="sentimentHistoryDays">--</strong><small id="sentimentNormalization">--</small></div>
|
||
</section>
|
||
<div class="sentiment-cycle-analysis">
|
||
<section class="sentiment-trend-panel">
|
||
<div class="workspace-heading"><h3>温度走势</h3><span>0—100</span></div>
|
||
<div class="sentiment-chart-shell"><canvas id="sentimentTrendChart" aria-label="市场情绪温度走势图"></canvas></div>
|
||
</section>
|
||
<section class="sentiment-components-panel">
|
||
<div class="workspace-heading"><h3>评分构成</h3><span>最新交易日</span></div>
|
||
<div id="sentimentComponentList" class="sentiment-component-list"></div>
|
||
</section>
|
||
</div>
|
||
<div class="section-toolbar sentiment-detail-toolbar">
|
||
<div class="section-title-group"><h2>交易日明细</h2><span class="section-subtitle">涨停梯队与昨日反馈</span></div>
|
||
</div>
|
||
<div class="table-frame sentiment-history-frame">
|
||
<table class="data-table sentiment-history-table">
|
||
<colgroup>
|
||
<col class="sentiment-col-date"><col class="sentiment-col-score"><col class="sentiment-col-phase"><col class="sentiment-col-direction">
|
||
<col class="sentiment-col-count"><col class="sentiment-col-count"><col class="sentiment-col-count"><col class="sentiment-col-count"><col class="sentiment-col-height">
|
||
<col class="sentiment-col-count"><col class="sentiment-col-count">
|
||
<col class="sentiment-col-feedback"><col class="sentiment-col-feedback"><col class="sentiment-col-rate">
|
||
</colgroup>
|
||
<thead>
|
||
<tr class="sentiment-history-groups">
|
||
<th colspan="4" class="group-state">情绪状态</th>
|
||
<th colspan="5" class="group-ladder">涨停结构</th>
|
||
<th colspan="2" class="group-risk">风险释放</th>
|
||
<th colspan="3" class="group-feedback">昨日反馈</th>
|
||
</tr>
|
||
<tr class="sentiment-history-columns">
|
||
<th>交易日</th><th>温度</th><th>阶段</th><th>方向</th>
|
||
<th>涨停</th><th>首板</th><th>二板</th><th>三板+</th><th>高度</th>
|
||
<th>炸板</th><th>跌停</th><th>昨涨停</th><th>昨红盘</th><th>红盘率</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="sentimentHistoryBody"></tbody>
|
||
</table>
|
||
<div id="sentimentHistoryEmpty" class="empty-state">尚无连续交易日数据</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="heavenView" class="workspace-view member-feature-view">
|
||
<div class="member-gate" hidden><div class="member-gate-icon"><i data-lucide="lock-keyhole"></i></div><div><strong>问天仅对会员开放</strong><span>开通会员后可使用观势、观气、观心及平台解读。会员状态可从顶部账号标识进入。</span></div></div>
|
||
<div class="section-toolbar heaven-toolbar">
|
||
<div class="section-title-group">
|
||
<h2><span class="heaven-title-seal" aria-hidden="true">问</span>问天</h2>
|
||
<span id="heavenDataDate" class="section-subtitle">--</span>
|
||
</div>
|
||
</div>
|
||
<div class="heaven-tabs" role="tablist" aria-label="问天模块">
|
||
<button class="heaven-tab active" type="button" data-heaven-panel="trend">观势</button>
|
||
<button class="heaven-tab" type="button" data-heaven-panel="fortune">观气</button>
|
||
<button class="heaven-tab" type="button" data-heaven-panel="heart">观心</button>
|
||
</div>
|
||
<p class="heaven-proverb">遇事不决可问春风,春风不语即随本心</p>
|
||
<div id="heavenNotice" class="inline-notice" hidden></div>
|
||
|
||
<section id="heavenTrendPanel" class="heaven-panel active-heaven-panel">
|
||
<div class="heaven-controls">
|
||
<div class="heaven-stock-query">
|
||
<label class="form-field"><span>股票代码或名称</span><input id="heavenStockInput" type="text" inputmode="text" maxlength="30" placeholder="例如 600000 或 浦发银行"></label>
|
||
<div id="heavenStockIdentity" class="heaven-stock-identity" aria-live="polite" hidden>
|
||
<span>当前标的</span>
|
||
<strong id="heavenStockName">--</strong>
|
||
<small id="heavenStockSector">--</small>
|
||
</div>
|
||
</div>
|
||
<button id="loadHeavenSelectionButton" class="button" type="button">载入</button>
|
||
<button id="interpretTrendButton" class="button primary" type="button" disabled>解势</button>
|
||
</div>
|
||
<div id="heavenTrendEmpty" class="heaven-trend-empty" role="status">请输入股票代码或股票名称</div>
|
||
<div class="heaven-trend-layout" hidden>
|
||
<section class="hexagram-board">
|
||
<div class="hexagram-heading">
|
||
<div><span class="metric-label">三才六爻</span><h3 id="marketHexagramName">--</h3></div>
|
||
<div class="hexagram-change"><span>动而之卦</span><strong id="marketTransformedName">--</strong></div>
|
||
</div>
|
||
<div id="marketHexagramLines" class="hexagram-lines"></div>
|
||
<p id="marketHexagramText" class="hexagram-text">--</p>
|
||
<p id="marketMovementSummary" class="market-movement-summary">--</p>
|
||
</section>
|
||
<section class="trend-reading-panel">
|
||
<div class="trend-score-line">
|
||
<div><span class="metric-label">势值</span><strong id="heavenMomentumScore">--</strong></div>
|
||
<span id="heavenMomentumLabel">--</span>
|
||
</div>
|
||
<div class="trend-score-meter" role="meter" aria-label="势值" aria-valuemin="-100" aria-valuemax="100">
|
||
<div class="trend-score-track"><i id="heavenMomentumNeedle"></i></div>
|
||
<div class="trend-score-marks"><span>-100 · 势衰</span><span>0</span><span>+100 · 势盛</span></div>
|
||
</div>
|
||
<div id="threeTalentReadings" class="three-talent-readings"></div>
|
||
<div id="heavenIndexStrip" class="heaven-index-strip"></div>
|
||
<details class="trend-evidence-panel">
|
||
<summary>三才取象之据<i data-lucide="chevron-down" aria-hidden="true"></i></summary>
|
||
<div id="heavenTrendEvidence" class="trend-evidence-body"></div>
|
||
</details>
|
||
</section>
|
||
</div>
|
||
<section id="heavenCalibrationPanel" class="heaven-calibration-panel" aria-labelledby="heavenCalibrationTitle" hidden>
|
||
<div class="heaven-calibration-heading">
|
||
<div>
|
||
<span class="metric-label">量化数据安全门</span>
|
||
<h3 id="heavenCalibrationTitle">六爻数据校验</h3>
|
||
</div>
|
||
<div class="heaven-calibration-summary">
|
||
<span><i class="status-dot passed"></i>通过</span>
|
||
<span><i class="status-dot failed"></i>未通过</span>
|
||
<span><i class="status-dot manual"></i>用户补录</span>
|
||
<strong id="heavenCalibrationStatus">等待载入</strong>
|
||
</div>
|
||
</div>
|
||
<p>系统只接收客观行情数据,所有补录仍按原量化公式计算阴阳与动爻。</p>
|
||
<form id="heavenCalibrationForm">
|
||
<div id="heavenLineChecks" class="heaven-line-checks" aria-live="polite"></div>
|
||
<label class="form-field calibration-note-field"><span>补录说明</span><input id="heavenCalibrationNote" type="text" maxlength="200" placeholder="可选:记录数据来源或补录原因"></label>
|
||
<div class="dialog-actions heaven-calibration-actions">
|
||
<button id="resetHeavenCalibrationButton" class="button" type="button">恢复自动数据</button>
|
||
<button id="applyHeavenCalibrationButton" class="button primary" type="submit">重新校验并成卦</button>
|
||
</div>
|
||
</form>
|
||
</section>
|
||
<section id="trendInterpretation" class="heaven-interpretation" hidden></section>
|
||
</section>
|
||
|
||
<section id="heavenFortunePanel" class="heaven-panel">
|
||
<div class="fortune-heading">
|
||
<div class="fortune-calendar-heading"><span id="fortuneLunarDate" class="metric-label">--</span><h3 id="fortunePillars">--</h3></div>
|
||
<div class="fortune-heading-actions">
|
||
<label class="qi-time-field"><span>观测日期</span><input id="qiObservationDate" type="date"></label>
|
||
<button id="interpretFortuneButton" class="button primary" type="button">解运</button>
|
||
</div>
|
||
</div>
|
||
<div class="qi-hero">
|
||
<section class="human-field-panel qi-climate-panel">
|
||
<canvas id="qiFieldCanvas" aria-hidden="true"></canvas>
|
||
<div class="qi-climate-center">
|
||
<span class="qi-section-mark">壹 · 天</span>
|
||
<div class="qi-climate-heading">
|
||
<div><span>今日气候</span><h3 id="qiClimateKeyword">--</h3></div>
|
||
<strong id="qiClimateTone">--</strong>
|
||
</div>
|
||
<p id="humanFieldSummary" class="human-field-summary">--</p>
|
||
</div>
|
||
</section>
|
||
<section class="five-phase-panel">
|
||
<div class="workspace-heading"><h3>五行流转</h3><span>强弱 · 心性 · 流向</span></div>
|
||
<div id="fivePhaseBalance" class="five-phase-balance"></div>
|
||
</section>
|
||
</div>
|
||
<section class="qi-framework-panel">
|
||
<div class="workspace-heading"><h3>三层气机</h3><span id="qiFrameworkPrinciple">--</span></div>
|
||
<div id="qiFrameworkLayers" class="qi-framework-layers"></div>
|
||
</section>
|
||
<section class="qi-instincts-panel">
|
||
<div class="human-field-grid">
|
||
<div><span><i data-lucide="heart-pulse"></i>容易生起</span><strong id="humanEmotionList">--</strong></div>
|
||
<div><span><i data-lucide="scan-eye"></i>判断偏差</span><strong id="humanBiasList">--</strong></div>
|
||
<div><span><i data-lucide="mouse-pointer-click"></i>操作惯性</span><strong id="humanOperation">--</strong></div>
|
||
<div><span><i data-lucide="shield-check"></i>风险与制衡</span><strong id="humanBalanceActions">--</strong></div>
|
||
</div>
|
||
</section>
|
||
<section id="fortuneInterpretation" class="heaven-interpretation fortune-interpretation" hidden></section>
|
||
<section class="personal-fortune-panel">
|
||
<div class="workspace-heading"><h3>个人影响</h3><span>日主、十神喜恶、五行喜忌与当日作用</span></div>
|
||
<div id="personalProfileEmpty" class="personal-profile-empty">
|
||
<span>当前账号尚未设置个人命理资料</span>
|
||
<button id="openPersonalSettingsButton" class="button" type="button">前往设置</button>
|
||
</div>
|
||
<div id="personalFortuneResult" class="personal-fortune-result" hidden></div>
|
||
</section>
|
||
<section class="qi-use-panel">
|
||
<div class="workspace-heading"><div><span>叁 · 用</span><h3 id="phaseSectorTitle">五行行业归属</h3></div><span id="phaseSectorContext">传统取象 · 手动归类优先</span></div>
|
||
<div id="qiUseMap" class="qi-use-map">
|
||
<div id="qiUseSources" class="qi-use-sources" aria-label="五行气场来源"></div>
|
||
<svg id="qiUseConnections" class="qi-use-connections" aria-hidden="true"></svg>
|
||
<div id="phaseSectorList" class="phase-sector-list qi-sector-groups" aria-label="五行行业归类"></div>
|
||
</div>
|
||
</section>
|
||
<details class="phase-sector-panel qi-evidence-panel">
|
||
<summary class="qi-evidence-summary">
|
||
<div><span>次要信息</span><h3>历法细目与归类管理</h3></div>
|
||
<span>展开查看推演依据</span>
|
||
<i data-lucide="chevron-down" aria-hidden="true"></i>
|
||
</summary>
|
||
<div class="qi-evidence-body">
|
||
<section class="qi-detail-section">
|
||
<div class="workspace-heading"><h3>历法细目</h3><span>中运、司天、在泉与节气定位</span></div>
|
||
<div id="fortuneMetrics" class="fortune-metrics"></div>
|
||
</section>
|
||
<details class="sector-phase-manager">
|
||
<summary class="sector-phase-manager-heading"><strong>管理手动归类</strong><span>精确名称优先</span><i data-lucide="chevron-down" aria-hidden="true"></i></summary>
|
||
<div class="sector-phase-manager-body">
|
||
<form id="sectorPhaseForm" class="sector-phase-form">
|
||
<input id="sectorPhaseName" type="text" maxlength="50" placeholder="行业或题材名称" aria-label="行业或题材名称" required>
|
||
<select id="sectorPhaseElement" aria-label="五行归类"><option value="木">木</option><option value="火">火</option><option value="土">土</option><option value="金">金</option><option value="水">水</option></select>
|
||
<button class="button" type="submit">保存归类</button>
|
||
</form>
|
||
<div id="sectorPhaseOverrides" class="sector-phase-overrides"></div>
|
||
</div>
|
||
</details>
|
||
</div>
|
||
</details>
|
||
<p id="fortuneNotice" class="heaven-footnote"></p>
|
||
</section>
|
||
|
||
<section id="heavenHeartPanel" class="heaven-panel">
|
||
<canvas id="heartDustCanvas" class="heart-dust-canvas" aria-hidden="true"></canvas>
|
||
<div id="heartLamp" class="heart-lamp" aria-hidden="true"></div>
|
||
<button id="heartSoundToggle" class="heart-sound-toggle" type="button" aria-pressed="false" aria-label="开启观心声音">
|
||
<i data-lucide="volume-x"></i><span>静音</span>
|
||
</button>
|
||
<div id="heartRitualCurtain" class="heart-ritual-curtain" aria-hidden="true">
|
||
<i class="heart-daybreak-dark"></i><strong>观 心</strong><span>心静,而后问</span>
|
||
</div>
|
||
<div id="heartIntro" class="heart-stage active-heart-stage">
|
||
<div id="heartWhispers" class="heart-whispers" aria-hidden="true"></div>
|
||
<div class="heart-stage-inner">
|
||
<span class="heart-stage-index heart-rise" data-heart-delay="0">观心 · 一</span>
|
||
<h3 class="heart-rise" data-heart-delay="420">把所问之事留在心里</h3>
|
||
<div class="heart-guidance heart-rise" data-heart-delay="900">
|
||
<p>只问一事,不必说出来。</p>
|
||
<p>心里默念它发生的对象与时间。</p>
|
||
<p>不求一个喜欢的答案,只看自己真正担心什么。</p>
|
||
</div>
|
||
<blockquote class="heart-motto heart-rise" data-heart-delay="1500">遇事不决可问春风,春风不语即随本心</blockquote>
|
||
<button id="startBreathingButton" class="button primary heart-rise" data-heart-delay="2200" type="button">开始静心</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="heartBreathing" class="heart-stage">
|
||
<button class="button heart-return-button" type="button" data-heart-return><i data-lucide="arrow-left"></i><span>返回</span></button>
|
||
<div class="heart-stage-inner breathing-stage">
|
||
<span class="heart-stage-index">观心 · 二</span>
|
||
<div id="breathingScene" class="breathing-scene" data-phase="inhale">
|
||
<span class="breathing-ring ring-outer" aria-hidden="true"></span>
|
||
<span class="breathing-ring ring-inner" aria-hidden="true"></span>
|
||
<div class="heart-breath-flame" aria-hidden="true"><i></i></div>
|
||
<div class="breathing-orbit"><strong id="breathingSeconds">30</strong><span>秒</span></div>
|
||
<b id="breathingPhase" class="breathing-phase">吸气</b>
|
||
</div>
|
||
<h3 id="breathingPrompt">缓慢吸气,放下对答案的预设</h3>
|
||
<div class="heart-incense" aria-hidden="true"><i id="heartIncenseEmber"></i></div>
|
||
<div class="breathing-progress" aria-hidden="true"><i id="breathingProgress"></i></div>
|
||
<button id="beginCastingButton" class="button primary" type="button" disabled>静心完成,开始起卦</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="heartCasting" class="heart-stage">
|
||
<button class="button heart-return-button" type="button" data-heart-return><i data-lucide="arrow-left"></i><span>返回</span></button>
|
||
<div class="heart-casting-layout">
|
||
<section class="heart-hexagram-shell">
|
||
<div class="workspace-heading"><h3>从初爻起</h3><span id="castingProgress">0 / 6</span></div>
|
||
<div id="heartCastingLines" class="hexagram-lines ritual-lines"></div>
|
||
</section>
|
||
<section class="casting-action-panel">
|
||
<span class="heart-stage-index">观心 · 三</span>
|
||
<div id="coinResult" class="heart-coins" aria-label="三枚铜钱">
|
||
<div class="heart-coin" data-coin-index="0"><div class="heart-coin-inner"><span class="heart-coin-face front">观</span><span class="heart-coin-face back"></span></div><i class="heart-coin-ring"></i></div>
|
||
<div class="heart-coin" data-coin-index="1"><div class="heart-coin-inner"><span class="heart-coin-face front">观</span><span class="heart-coin-face back"></span></div><i class="heart-coin-ring"></i></div>
|
||
<div class="heart-coin" data-coin-index="2"><div class="heart-coin-inner"><span class="heart-coin-face front">观</span><span class="heart-coin-face back"></span></div><i class="heart-coin-ring"></i></div>
|
||
</div>
|
||
<h3 id="castingPrompt">心中默念所问之事,然后掷出初爻</h3>
|
||
<button id="tossCoinsButton" class="heart-cast-button" type="button"><i class="heart-hold-charge" aria-hidden="true"></i><span>按住<br>摇初爻</span></button>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="heartReveal" class="heart-stage">
|
||
<button class="button heart-return-button" type="button" data-heart-return><i data-lucide="arrow-left"></i><span>返回</span></button>
|
||
<div class="heart-reveal-layout">
|
||
<section class="hexagram-board heart-reveal-board">
|
||
<div class="hexagram-heading">
|
||
<div><span class="metric-label">本卦</span><h3 id="heartHexagramName">--</h3></div>
|
||
<div class="hexagram-change"><span>之卦</span><strong id="heartTransformedName">--</strong></div>
|
||
</div>
|
||
<div id="heartHexagramLines" class="hexagram-lines"></div>
|
||
<p id="heartHexagramText" class="hexagram-text">--</p>
|
||
</section>
|
||
<section class="heart-first-thought">
|
||
<span class="heart-stage-index">观心 · 四</span>
|
||
<h3>先不解卦</h3>
|
||
<p id="heartFirstThoughtPrompt">看见卦象与爻辞后,心里升起的第一念是什么?</p>
|
||
<p>不要修饰,也不必记录。只需看见它。</p>
|
||
<button id="interpretHeartButton" class="button primary" type="button">我已察念,开始解卦</button>
|
||
</section>
|
||
</div>
|
||
<div id="heartLineTexts" class="heart-line-texts" aria-label="六爻爻辞,悬停、点击或聚焦查看"></div>
|
||
</div>
|
||
|
||
<div id="heartInterpretationStage" class="heart-stage">
|
||
<div class="heart-interpretation-heading">
|
||
<div><span class="heart-stage-index">观心 · 五</span><h3 id="heartReadTitle">解卦</h3><small id="heartReadChange">--</small></div>
|
||
<button id="restartHeartButton" class="button" type="button">重新观心</button>
|
||
</div>
|
||
<p id="heartReadGuaci" class="heart-read-guaci">--</p>
|
||
<div class="heart-read-layout">
|
||
<div id="heartReadLines" class="heart-read-lines"></div>
|
||
<div id="heartReadTexts" class="heart-read-texts"></div>
|
||
</div>
|
||
<section id="heartInterpretation" class="heaven-interpretation heart-read-interpretation"></section>
|
||
<p class="heart-read-motto">一念既察,卦只是镜。</p>
|
||
</div>
|
||
<p class="heaven-footnote heart-footnote">观心用于观察念头与执着,不用于替代交易计划或预测涨跌。</p>
|
||
</section>
|
||
</section>
|
||
|
||
<section id="ladderView" class="workspace-view">
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>市场天梯</h2>
|
||
<span class="section-subtitle">按连续涨停高度观察空间板和梯队完整度</span>
|
||
</div>
|
||
</div>
|
||
<div id="ladderBoard" class="ladder-board"></div>
|
||
</section>
|
||
|
||
<section id="screenerView" class="workspace-view member-feature-view">
|
||
<div class="member-gate" hidden><div class="member-gate-icon"><i data-lucide="lock-keyhole"></i></div><div><strong>智能选股仅对会员开放</strong><span>开通会员后可同步因子、生成公式和执行策略。会员状态可从顶部账号标识进入。</span></div></div>
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>智能选股</h2>
|
||
<span id="screenerDateLabel" class="section-subtitle">--</span>
|
||
</div>
|
||
<div class="toolbar-controls">
|
||
<button id="factorSyncButton" class="button" type="button">同步因子数据</button>
|
||
<button id="screenerRunButton" class="button primary" type="button">执行选股</button>
|
||
<button id="screenerExportButton" class="button" type="button">导出 CSV</button>
|
||
</div>
|
||
</div>
|
||
<div id="screenerNotice" class="inline-notice" hidden></div>
|
||
<div class="screener-mobile-tabs" role="tablist" aria-label="智能选股视图">
|
||
<button class="active" type="button" role="tab" aria-selected="true" data-screener-mobile-view="strategy">策略</button>
|
||
<button type="button" role="tab" aria-selected="false" data-screener-mobile-view="results">候选</button>
|
||
</div>
|
||
<div class="screener-strategy-view">
|
||
<div class="screener-task-strip" aria-live="polite">
|
||
<div><i data-lucide="database"></i><span>因子</span><strong id="factorTaskStatus">等待检查</strong></div>
|
||
<div><i data-lucide="cpu"></i><span>编译</span><strong id="compilerStatus">本地模板编译</strong></div>
|
||
<div><i data-lucide="list-checks"></i><span>选股</span><strong id="screenerRunStatus">等待执行</strong></div>
|
||
<div><i data-lucide="chart-no-axes-combined"></i><span>回测</span><strong id="backtestTaskStatus">随选股执行</strong></div>
|
||
</div>
|
||
<section class="regime-panel">
|
||
<div class="regime-summary">
|
||
<span class="metric-label">自动识别阶段</span>
|
||
<strong id="regimeLabel">--</strong>
|
||
<span id="regimeConfidence">置信度 --</span>
|
||
</div>
|
||
<div id="regimeSelector" class="regime-selector" role="group" aria-label="选择市场阶段"></div>
|
||
<div class="regime-evidence">
|
||
<strong id="regimeReason">--</strong>
|
||
<div id="regimeEvidenceList"></div>
|
||
</div>
|
||
<div class="factor-data-status">
|
||
<span class="metric-label">因子数据</span>
|
||
<strong id="factorDateCount">0 日</strong>
|
||
<span id="factorDateRange">尚未同步</span>
|
||
</div>
|
||
</section>
|
||
<div class="screener-layout">
|
||
<aside class="strategy-sidebar">
|
||
<div class="workspace-heading"><h3>策略库</h3><span id="strategyCount">0 套</span></div>
|
||
<div id="strategyList" class="strategy-list"></div>
|
||
</aside>
|
||
<div class="strategy-workbench">
|
||
<div class="strategy-workbench-heading">
|
||
<div><span>当前策略</span><h3 id="activeStrategyHeading">--</h3></div>
|
||
<small>自然语言生成受控公式</small>
|
||
</div>
|
||
<div class="strategy-meta-fields">
|
||
<label class="form-field"><span>策略名称</span><input id="strategyNameInput" type="text" maxlength="60"></label>
|
||
<label class="form-field"><span>策略说明</span><input id="strategyDescriptionInput" type="text" maxlength="1000"></label>
|
||
</div>
|
||
<label class="form-field strategy-prompt-field">
|
||
<span>自然语言策略</span>
|
||
<textarea id="strategyPrompt" maxlength="3000" placeholder="例如:修复阶段筛选低吸、放量、有主力资金流入的主线前排"></textarea>
|
||
</label>
|
||
<div class="strategy-actions">
|
||
<button id="compileStrategyButton" class="button" type="button">生成公式</button>
|
||
<button id="saveStrategyButton" class="button" type="button">保存策略</button>
|
||
<button id="deleteStrategyButton" class="button danger-button" type="button" hidden>删除策略</button>
|
||
<label class="checkbox-control"><input id="runBacktestToggle" type="checkbox" checked>滚动回测</label>
|
||
</div>
|
||
<details class="strategy-advanced">
|
||
<summary><div><strong>高级公式</strong><span>查看或手动调整受控 DSL</span></div><i data-lucide="chevron-down" aria-hidden="true"></i></summary>
|
||
<label class="form-field formula-field">
|
||
<span>受控公式 DSL</span>
|
||
<textarea id="formulaEditor" spellcheck="false"></textarea>
|
||
</label>
|
||
</details>
|
||
</div>
|
||
</div>
|
||
<section id="backtestPanel" class="backtest-panel" hidden>
|
||
<div class="workspace-heading"><h3>历史条件验证</h3><span id="backtestDefinition">--</span></div>
|
||
<div id="backtestMetrics" class="dragon-summary"></div>
|
||
</section>
|
||
</div>
|
||
<div class="screener-results-view">
|
||
<div class="section-toolbar result-toolbar">
|
||
<div class="section-title-group"><h2>候选结果</h2><span id="screenerResultCount" class="count-badge">0 只</span></div>
|
||
<span id="screenerDisclaimer" class="section-subtitle">历史统计不代表未来收益</span>
|
||
</div>
|
||
<div class="table-frame screener-result-frame">
|
||
<table class="data-table">
|
||
<thead><tr>
|
||
<th>排名</th><th>代码</th><th>股票名称</th><th>板块</th><th class="number">综合分</th>
|
||
<th class="number">历史估计</th><th class="number">当日涨幅</th><th class="number">5日涨幅</th>
|
||
<th class="number">量比</th><th class="number">板块强度</th><th>主要贡献</th><th>风险</th><th>操作</th>
|
||
</tr></thead>
|
||
<tbody id="screenerTableBody"></tbody>
|
||
</table>
|
||
<div id="screenerEmpty" class="empty-state">尚未执行选股</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="mentorView" class="workspace-view member-feature-view">
|
||
<div class="member-gate" hidden><div class="member-gate-icon"><i data-lucide="lock-keyhole"></i></div><div><strong>问师仅对会员开放</strong><span>开通会员后可使用游资思维模型进行对话。会员状态可从顶部账号标识进入。</span></div></div>
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>问师</h2>
|
||
<span id="mentorDataDate" class="section-subtitle">--</span>
|
||
</div>
|
||
<button id="clearMentorChatButton" class="button" type="button" disabled>清空对话</button>
|
||
</div>
|
||
<div id="mentorNotice" class="inline-notice" hidden></div>
|
||
<div class="mentor-layout">
|
||
<aside class="mentor-sidebar">
|
||
<div class="workspace-heading"><h3>思维模型</h3><span id="mentorCount">0 位</span></div>
|
||
<div id="mentorList" class="mentor-list"></div>
|
||
</aside>
|
||
<section class="mentor-chat-panel">
|
||
<header class="mentor-chat-header">
|
||
<div>
|
||
<span class="metric-label">当前问师</span>
|
||
<h3 id="activeMentorName">--</h3>
|
||
</div>
|
||
</header>
|
||
<div id="mentorMessages" class="mentor-messages" aria-live="polite"></div>
|
||
<div id="mentorQuickPrompts" class="mentor-quick-prompts">
|
||
<button type="button" data-mentor-prompt="怎么看今天的市场环境?">市场环境</button>
|
||
<button type="button" data-mentor-prompt="当前的市场主线和情绪周期是什么?">主线与周期</button>
|
||
<button type="button" data-mentor-prompt="如果今天是空仓状态,你会怎么制定操作预案?">空仓预案</button>
|
||
<button type="button" data-mentor-prompt="现在最需要防范的风险是什么?">风险检查</button>
|
||
</div>
|
||
<form id="mentorChatForm" class="mentor-chat-form">
|
||
<label class="visually-hidden" for="mentorQuestion">向当前思维模型提问</label>
|
||
<textarea id="mentorQuestion" maxlength="2000" placeholder="输入市场、板块、个股代码或交易问题"></textarea>
|
||
<button id="sendMentorQuestion" class="button primary" type="submit">发送</button>
|
||
</form>
|
||
<p class="mentor-disclaimer">基于公开资料提炼的思维模型模拟,不代表本人观点,不构成投资建议。</p>
|
||
</section>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="rotationView" class="workspace-view">
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>板块轮动</h2>
|
||
<span id="rotationHistoryRange" class="section-subtitle">最近 9 个交易日 · 由近到远</span>
|
||
</div>
|
||
<div class="toolbar-controls">
|
||
<button id="rotationExportButton" class="button" type="button">导出 CSV</button>
|
||
</div>
|
||
</div>
|
||
<section class="rotation-history-panel">
|
||
<div class="rotation-history-heading">
|
||
<div><h3>热点轨迹</h3><span id="rotationSelectionHint">左近右远 · 点击板块查看连续性</span></div>
|
||
<button id="clearRotationSelection" class="text-button" type="button" hidden>清除高亮</button>
|
||
</div>
|
||
<div id="rotationHistory" class="rotation-history"><div class="empty-state">正在读取轮动历史</div></div>
|
||
</section>
|
||
<div class="section-toolbar rotation-detail-toolbar">
|
||
<div class="section-title-group"><h2>当日轮动明细</h2><span class="section-subtitle">趋势、强度与涨停梯队</span></div>
|
||
</div>
|
||
<div class="table-frame phase-table-frame">
|
||
<table class="data-table rotation-table">
|
||
<thead><tr>
|
||
<th class="number">排名</th><th>板块</th><th>趋势</th><th class="number">今日涨停</th>
|
||
<th class="number">昨日涨停</th><th class="number">变化</th><th>强度分布</th>
|
||
<th class="number">最高板</th><th class="number">平均涨幅</th><th>领涨股</th><th class="number">涨停股成交额</th>
|
||
</tr></thead>
|
||
<tbody id="rotationTableBody"></tbody>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="dragonView" class="workspace-view">
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>游资龙虎榜</h2>
|
||
<span id="dragonDateLabel" class="section-subtitle">--</span>
|
||
</div>
|
||
<div class="toolbar-controls">
|
||
<button id="dragonRefreshButton" class="button" type="button">刷新龙虎榜</button>
|
||
<button id="dragonExportButton" class="button" type="button">导出 CSV</button>
|
||
</div>
|
||
</div>
|
||
<div id="dragonSummary" class="dragon-summary"></div>
|
||
<div class="dragon-filterbar">
|
||
<label class="search-field dragon-search-field">
|
||
<input id="dragonSearch" type="search" placeholder="搜索游资、席位或股票" autocomplete="off">
|
||
</label>
|
||
<div class="segmented dragon-segments" role="group" aria-label="龙虎榜筛选">
|
||
<button type="button" class="dragon-filter active" data-dragon-filter="all">全部游资</button>
|
||
<button type="button" class="dragon-filter" data-dragon-filter="buy">净买入</button>
|
||
<button type="button" class="dragon-filter" data-dragon-filter="sell">净卖出</button>
|
||
<button id="dragonUnclassifiedFilter" type="button" class="dragon-filter" data-dragon-filter="unclassified">待归类</button>
|
||
</div>
|
||
</div>
|
||
<section class="dragon-card-stage">
|
||
<div class="dragon-stage-heading"><h3>活跃游资</h3><span>点击卡牌查看当日操作</span></div>
|
||
<div id="dragonTraderList" class="dragon-trader-list"></div>
|
||
</section>
|
||
<section id="dragonTraderDetail" class="dragon-trader-detail"><div class="empty-state dragon-empty">选择一位游资查看操作明细</div></section>
|
||
<details id="dragonUnclassifiedSection" class="unclassified-section">
|
||
<summary class="unclassified-heading">
|
||
<div><h3 id="unclassifiedTitle">待归类席位</h3><span>为营业部设置游资名后,同名席位会自动合并</span></div>
|
||
<strong id="unclassifiedCount">0 个</strong>
|
||
</summary>
|
||
<div id="unclassifiedSeatList" class="unclassified-seat-list"></div>
|
||
</details>
|
||
</section>
|
||
|
||
<section id="reviewWorkspaceView" class="workspace-view">
|
||
<div class="section-toolbar">
|
||
<div class="section-title-group">
|
||
<h2>我的复盘</h2>
|
||
<span class="section-subtitle">自选跟踪、复盘记录与明日计划</span>
|
||
</div>
|
||
</div>
|
||
<div class="review-workspace">
|
||
<section class="workspace-section watchlist-section">
|
||
<div class="workspace-heading">
|
||
<h3>自选跟踪</h3>
|
||
<span id="watchlistCount">0 只</span>
|
||
</div>
|
||
<div class="table-frame workspace-table-frame">
|
||
<table class="data-table">
|
||
<thead><tr><th>标记</th><th>代码</th><th>股票名称</th><th>板块</th><th>操作</th></tr></thead>
|
||
<tbody id="watchlistTableBody"></tbody>
|
||
</table>
|
||
<div id="watchlistEmpty" class="empty-state">从股票详情中添加自选</div>
|
||
</div>
|
||
</section>
|
||
<section class="workspace-section journal-section">
|
||
<div class="workspace-heading">
|
||
<h3>每日复盘</h3>
|
||
<input id="journalDate" class="date-input" type="date" aria-label="复盘日期">
|
||
</div>
|
||
<form id="journalForm" class="journal-form">
|
||
<label class="form-field"><span>今日复盘</span><textarea id="journalContent" maxlength="5000" placeholder="记录市场主线、情绪周期和交易得失"></textarea></label>
|
||
<label class="form-field"><span>明日计划</span><textarea id="journalPlan" maxlength="2000" placeholder="记录观察方向、触发条件和风险点"></textarea></label>
|
||
<div class="dialog-actions"><button class="button primary" type="submit">保存复盘</button></div>
|
||
</form>
|
||
</section>
|
||
<section class="workspace-section notes-history-section">
|
||
<div class="workspace-heading"><h3>最近记录</h3><span id="notesCount">0 条</span></div>
|
||
<div id="notesHistory" class="notes-history"><div class="empty-state">暂无复盘记录</div></div>
|
||
</section>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
|
||
<footer class="status-bar">
|
||
<span id="statusText">准备就绪</span>
|
||
<span class="risk-note">股市有风险,投资需谨慎</span>
|
||
<span id="updatedAt">--</span>
|
||
</footer>
|
||
|
||
<div id="stockPreviewBackdrop" class="stock-preview-backdrop" hidden></div>
|
||
<aside id="stockPreview" class="stock-preview" aria-label="个股行情预览" aria-live="polite" hidden>
|
||
<header class="stock-preview-header">
|
||
<div class="stock-preview-identity">
|
||
<span id="stockPreviewCode">--</span>
|
||
<strong id="stockPreviewName">正在加载</strong>
|
||
<small id="stockPreviewSector">--</small>
|
||
</div>
|
||
<div class="stock-preview-quote">
|
||
<strong id="stockPreviewPrice">--</strong>
|
||
<span id="stockPreviewChange">--</span>
|
||
</div>
|
||
<button id="closeStockPreview" class="icon-button stock-preview-close" type="button" title="关闭预览" aria-label="关闭预览"><i data-lucide="x"></i></button>
|
||
</header>
|
||
<div class="stock-preview-tabs" role="tablist" aria-label="行情图表">
|
||
<button class="stock-preview-tab active" type="button" role="tab" aria-selected="true" data-preview-chart="intraday">分时</button>
|
||
<button class="stock-preview-tab" type="button" role="tab" aria-selected="false" data-preview-chart="daily">日K</button>
|
||
<span id="stockPreviewDate">--</span>
|
||
</div>
|
||
<div class="stock-preview-chart-shell">
|
||
<canvas id="stockPreviewChart" width="488" height="232" aria-label="个股行情图" aria-describedby="stockPreviewSummary"></canvas>
|
||
<div id="stockPreviewLoading" class="stock-preview-loading">
|
||
<span class="spinner" aria-hidden="true"></span>
|
||
<span>正在读取行情</span>
|
||
</div>
|
||
</div>
|
||
<p id="stockPreviewSummary" class="stock-preview-summary">等待行情数据</p>
|
||
<footer class="stock-preview-footer">
|
||
<span id="stockPreviewSource">--</span>
|
||
<button id="openStockDetailFromPreview" class="button" type="button"><i data-lucide="maximize-2"></i><span>完整详情</span></button>
|
||
</footer>
|
||
</aside>
|
||
|
||
<dialog id="globalSearchDialog" class="global-search-dialog" aria-labelledby="globalSearchTitle">
|
||
<div class="global-search-shell">
|
||
<h2 id="globalSearchTitle" class="sr-only">全局搜索</h2>
|
||
<div class="global-search-head">
|
||
<i data-lucide="search" aria-hidden="true"></i>
|
||
<label class="sr-only" for="globalSearchInput">搜索股票、板块、题材或指数</label>
|
||
<input id="globalSearchInput" type="search" autocomplete="off" spellcheck="false" placeholder="搜索股票、板块、题材或指数" aria-controls="globalSearchResults" aria-autocomplete="list">
|
||
<kbd aria-label="快捷键 Ctrl 加 K">Ctrl K</kbd>
|
||
<button id="closeGlobalSearch" class="icon-button" type="button" aria-label="关闭搜索" title="关闭搜索"><i data-lucide="x"></i></button>
|
||
</div>
|
||
<div id="globalSearchResults" class="global-search-results" role="listbox" aria-labelledby="globalSearchTitle" aria-live="polite">
|
||
<div class="global-search-empty"><i data-lucide="corner-down-left"></i><p>输入名称或代码开始搜索</p><span>使用方向键选择,回车打开详情</span></div>
|
||
</div>
|
||
</div>
|
||
</dialog>
|
||
|
||
<dialog id="entityDetailDialog" class="stock-dialog entity-detail-dialog" aria-labelledby="entityDetailName">
|
||
<div class="dialog-header">
|
||
<div>
|
||
<span id="entityDetailCode" class="detail-code">--</span>
|
||
<h2 id="entityDetailName">--</h2>
|
||
</div>
|
||
<button id="closeEntityDetail" class="icon-button" type="button" aria-label="关闭" title="关闭"><i data-lucide="x"></i></button>
|
||
</div>
|
||
<div class="detail-price-line">
|
||
<strong id="entityDetailValue">--</strong>
|
||
<span id="entityDetailChange">--</span>
|
||
<span id="entityDetailType" class="streak-pill">--</span>
|
||
</div>
|
||
<section class="stock-chart-section">
|
||
<div class="detail-section-heading">
|
||
<h3>日 K 与成交量</h3>
|
||
<span id="entityDetailDate">--</span>
|
||
</div>
|
||
<canvas id="entityDetailChart" class="price-chart" width="680" height="300" aria-label="日 K 线与成交量图"></canvas>
|
||
</section>
|
||
<section class="detail-section">
|
||
<h3>交易数据</h3>
|
||
<dl id="entityDetailMetrics" class="detail-grid"></dl>
|
||
</section>
|
||
</dialog>
|
||
|
||
<dialog id="stockDialog" class="stock-dialog">
|
||
<div class="dialog-header">
|
||
<div>
|
||
<span id="detailCode" class="detail-code">--</span>
|
||
<h2 id="detailName">--</h2>
|
||
</div>
|
||
<div class="dialog-header-actions">
|
||
<button id="stockHeavenButton" class="button stock-heaven-button" type="button"><i data-lucide="sparkles"></i><span>观势</span></button>
|
||
<button id="watchStockButton" class="button" type="button">加入自选</button>
|
||
<button id="closeStockDialog" class="icon-button" type="button" aria-label="关闭" title="关闭">×</button>
|
||
</div>
|
||
</div>
|
||
<div class="detail-price-line">
|
||
<strong id="detailPrice">--</strong>
|
||
<span id="detailChange">--</span>
|
||
<span id="detailStreak" class="streak-pill">--</span>
|
||
</div>
|
||
<section class="stock-chart-section">
|
||
<div class="detail-section-heading">
|
||
<h3>日 K 与成交量</h3>
|
||
<span id="chartSource">--</span>
|
||
</div>
|
||
<canvas id="priceChart" class="price-chart" width="680" height="300" aria-label="股票日K线图"></canvas>
|
||
</section>
|
||
<section class="detail-section moneyflow-section">
|
||
<h3>当日资金流</h3>
|
||
<dl class="moneyflow-grid">
|
||
<div><dt>主力净额</dt><dd id="flowNet">--</dd></div>
|
||
<div><dt>大单净额</dt><dd id="flowLarge">--</dd></div>
|
||
<div><dt>中单净额</dt><dd id="flowMedium">--</dd></div>
|
||
<div><dt>小单净额</dt><dd id="flowSmall">--</dd></div>
|
||
</dl>
|
||
</section>
|
||
<section class="detail-section">
|
||
<h3>事件逻辑</h3>
|
||
<p id="detailReason">--</p>
|
||
<span id="detailSector" class="sector-chip">--</span>
|
||
<form id="reasonForm" class="inline-edit-form">
|
||
<input id="reasonInput" type="text" maxlength="200" placeholder="修订事件逻辑">
|
||
<button class="button" type="submit">保存修订</button>
|
||
</form>
|
||
</section>
|
||
<section class="detail-section">
|
||
<h3>交易数据</h3>
|
||
<dl class="detail-grid">
|
||
<div><dt>首次触板</dt><dd id="detailFirst">--</dd></div>
|
||
<div><dt>最后触板</dt><dd id="detailLast">--</dd></div>
|
||
<div><dt>开板次数</dt><dd id="detailOpen">--</dd></div>
|
||
<div><dt>换手率</dt><dd id="detailTurnover">--</dd></div>
|
||
<div><dt>成交额</dt><dd id="detailAmount">--</dd></div>
|
||
<div><dt>封单额</dt><dd id="detailSeal">--</dd></div>
|
||
</dl>
|
||
</section>
|
||
<section class="detail-section">
|
||
<h3>个股复盘笔记</h3>
|
||
<form id="stockNoteForm" class="journal-form compact-form">
|
||
<label class="form-field"><span>复盘内容</span><textarea id="stockNoteContent" maxlength="5000" placeholder="记录交易逻辑与盘面反馈"></textarea></label>
|
||
<label class="form-field"><span>明日计划</span><textarea id="stockNotePlan" maxlength="2000" placeholder="记录观察条件和应对计划"></textarea></label>
|
||
<div class="dialog-actions"><button class="button primary" type="submit">保存笔记</button></div>
|
||
</form>
|
||
<div id="stockNotes" class="notes-history compact-notes"></div>
|
||
</section>
|
||
</dialog>
|
||
|
||
<dialog id="settingsDialog" class="settings-dialog">
|
||
<div class="dialog-header">
|
||
<div>
|
||
<span class="dialog-eyebrow">当前账号</span>
|
||
<h2 id="accountDialogTitle">个人资料</h2>
|
||
</div>
|
||
<button id="closeSettingsDialog" class="icon-button" type="button" aria-label="关闭" title="关闭">×</button>
|
||
</div>
|
||
<div id="connectionStatus" class="connection-status" aria-live="polite">正在读取账号状态</div>
|
||
<section class="settings-section membership-overview account-settings-panel" data-account-panel-content="membership" hidden>
|
||
<div class="settings-section-heading"><h3>会员状态</h3><span id="membershipBadge">普通用户</span></div>
|
||
<p id="membershipDetail" class="settings-lead">开通会员后可使用智能选股、问师、问天及平台 LLM 算力。</p>
|
||
<p id="membershipQuotaHint" class="form-hint">会员默认每日 LLM 用量 -- 次,由管理员统一设置。</p>
|
||
<div id="membershipUsage" class="membership-usage">今日 LLM 用量 --</div>
|
||
<div class="membership-status-grid">
|
||
<div><span>开通状态</span><strong id="membershipStateValue">未开通</strong></div>
|
||
<div><span>剩余时长</span><strong id="membershipRemainingValue">--</strong></div>
|
||
<div><span>今日 LLM 用量</span><strong id="membershipUsageSummary">--</strong></div>
|
||
<div><span>LLM 剩余用量</span><strong id="membershipRemainingUsage">--</strong></div>
|
||
</div>
|
||
<div class="membership-comparison" aria-label="会员权益对比">
|
||
<div class="membership-comparison-head"><span>功能</span><span>普通用户</span><span>会员用户</span></div>
|
||
<div><span>行情数据与股票预览</span><b>可用</b><b>可用</b></div>
|
||
<div><span>智能选股 / 问师 / 问天</span><b class="muted">不可用</b><b class="available">可用</b></div>
|
||
<div><span>平台 LLM 算力</span><b class="muted">不可用</b><b class="available">按额度使用</b></div>
|
||
</div>
|
||
<div class="membership-topup-row"><span><i data-lucide="battery-charging"></i>LLM 用量加油包</span><button id="membershipTopupButton" class="button" type="button" disabled>暂不可用</button></div>
|
||
</section>
|
||
<section class="settings-section account-birth-section account-settings-panel" data-account-panel-content="profile">
|
||
<div class="settings-section-heading"><h3>个人资料</h3><span id="birthProfileStatus">尚未设置</span></div>
|
||
<p class="settings-lead privacy-note"><i data-lucide="lock-keyhole"></i><span>出生信息仅对当前账号可见并加密保存,不会向其他用户公开。</span></p>
|
||
<form id="accountBirthForm" class="account-birth-form">
|
||
<label class="form-field"><span>出生日期</span><input id="accountBirthDate" type="date" min="1900-01-01" max="2100-12-31" required></label>
|
||
<label class="form-field"><span>出生时间</span><input id="accountBirthTime" type="time" required></label>
|
||
<label class="form-field"><span>性别</span><select id="accountBirthGender"><option value="unspecified">不指定</option><option value="male">男</option><option value="female">女</option></select></label>
|
||
<div class="dialog-actions">
|
||
<button id="deleteBirthProfileButton" class="button danger-button" type="button">删除资料</button>
|
||
<button class="button primary" type="submit">保存资料</button>
|
||
</div>
|
||
</form>
|
||
<p class="form-hint">原始信息加密保存且不在观气页回显;模型只接收排盘后的派生结果。</p>
|
||
</section>
|
||
<section class="settings-section password-section account-settings-panel" data-account-panel-content="password" hidden>
|
||
<div class="settings-section-heading"><h3>修改密码</h3><span>仅当前账号</span></div>
|
||
<form id="passwordForm" class="password-form">
|
||
<label class="form-field"><span>当前密码</span><input id="currentPassword" type="password" autocomplete="current-password" required></label>
|
||
<label class="form-field"><span>新密码</span><input id="newPassword" type="password" minlength="8" maxlength="128" autocomplete="new-password" required></label>
|
||
<label class="form-field"><span>确认新密码</span><input id="confirmPassword" type="password" minlength="8" maxlength="128" autocomplete="new-password" required></label>
|
||
<div class="dialog-actions"><button class="button primary" type="submit">更新密码</button></div>
|
||
</form>
|
||
</section>
|
||
</dialog>
|
||
|
||
<dialog id="adminDialog" class="settings-dialog admin-dialog">
|
||
<div class="dialog-header">
|
||
<div><span class="dialog-eyebrow">管理员</span><h2>系统配置</h2></div>
|
||
<button id="closeAdminDialog" class="icon-button" type="button" aria-label="关闭" title="关闭">×</button>
|
||
</div>
|
||
<div id="adminConnectionStatus" class="connection-status" aria-live="polite">正在读取系统状态</div>
|
||
<div class="admin-section-picker">
|
||
<label for="adminSectionSelect">管理项目</label>
|
||
<select id="adminSectionSelect">
|
||
<option value="market">行情管理</option>
|
||
<option value="models">模型池</option>
|
||
<option value="members">会员管理</option>
|
||
</select>
|
||
</div>
|
||
<div class="admin-panel" data-admin-panel="market">
|
||
<form id="systemMarketForm" class="settings-section">
|
||
<div class="settings-section-heading"><h3>公共行情</h3><span id="systemDataStatus">待检查</span></div>
|
||
<label class="form-field"><span>Tushare Token</span><input id="systemTokenInput" type="password" autocomplete="off" minlength="20" placeholder="留空保留现有 Token"></label>
|
||
<label class="switch-control"><input id="systemBackgroundRefresh" type="checkbox"><span>启用交易时段后台刷新</span></label>
|
||
<p class="form-hint">所有用户读取同一份后台快照,页面不会随后台任务自动重绘。</p>
|
||
<div class="dialog-actions admin-inline-actions"><button id="adminRefreshButton" class="button" type="button"><i data-lucide="refresh-cw"></i>立即后台刷新</button><button class="button primary" type="submit">保存行情配置</button></div>
|
||
</form>
|
||
<section class="settings-section">
|
||
<div class="settings-section-heading"><h3>历史数据回补</h3><span>管理员任务</span></div>
|
||
<div class="backfill-controls">
|
||
<label class="form-field"><span>开始日期</span><input id="backfillStart" type="date"></label>
|
||
<label class="form-field"><span>结束日期</span><input id="backfillEnd" type="date"></label>
|
||
</div>
|
||
<div class="dialog-actions"><button id="backfillButton" class="button" type="button">开始回补</button></div>
|
||
</section>
|
||
</div>
|
||
<div class="admin-panel" data-admin-panel="models" hidden>
|
||
<form id="systemModelsForm" class="settings-section">
|
||
<div class="settings-section-heading"><h3>平台模型池</h3><span>会员共享</span></div>
|
||
<div class="model-role-selectors">
|
||
<label class="form-field"><span>主模型</span><select id="platformPrimaryModelSelect"></select></label>
|
||
<label class="form-field"><span>辅助模型</span><select id="platformFallbackModelSelect"><option value="">不启用辅助模型</option></select></label>
|
||
</div>
|
||
<div id="modelPoolList" class="model-pool-list"></div>
|
||
<div class="dialog-actions admin-inline-actions"><button id="addPlatformModel" class="button" type="button"><i data-lucide="plus"></i>添加模型</button><button class="button primary" type="submit">保存模型池</button></div>
|
||
</form>
|
||
</div>
|
||
<div class="admin-panel" data-admin-panel="members" hidden>
|
||
<form id="membershipSettingsForm" class="settings-section membership-limit-form">
|
||
<div class="settings-section-heading"><h3>会员调用额度</h3><span>每日自动重置</span></div>
|
||
<label class="form-field compact-number-field"><span>会员每日调用 LLM 上限</span><input id="memberDailyLimit" type="number" min="1" max="1000" value="50"></label>
|
||
<div class="dialog-actions"><button class="button primary" type="submit">保存调用额度</button></div>
|
||
</form>
|
||
<section class="settings-section">
|
||
<div class="settings-section-heading"><h3>会员账号</h3><span>手动开通与续期</span></div>
|
||
<div id="adminUsersList" class="admin-users-list"></div>
|
||
</section>
|
||
</div>
|
||
</dialog>
|
||
|
||
<div id="loadingOverlay" class="loading-overlay" hidden>
|
||
<div class="loading-box">
|
||
<span class="spinner" aria-hidden="true"></span>
|
||
<div class="loading-copy">
|
||
<strong id="loadingTitle">正在加载复盘数据</strong>
|
||
<small id="loadingHint">请稍候</small>
|
||
</div>
|
||
<div class="loading-progress" aria-hidden="true"><i></i></div>
|
||
</div>
|
||
</div>
|
||
<div id="toast" class="toast" role="status" hidden></div>
|
||
|
||
<script src="/vendor/lucide.min.js" defer></script>
|
||
<script src="/app.js" defer></script>
|
||
</body>
|
||
</html>
|