1087 lines
65 KiB
HTML
1087 lines
65 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>华夏基金 · 界面设计总览</title>
|
||
<style>
|
||
:root{
|
||
--navy:#12304f; --indigo:#4f46e5; --indigo-dark:#4338ca;
|
||
--bg:#f8fafc; --panel:#ffffff; --border:#e2e8f0; --border-soft:#f1f5f9;
|
||
--text:#0f172a; --muted:#64748b; --faint:#94a3b8;
|
||
--red:#dc2626; --green:#16a34a; --amber:#d97706; --blue:#2563eb;
|
||
--radius:12px;
|
||
}
|
||
*{box-sizing:border-box}
|
||
body{margin:0;background:#eef2f7;color:var(--text);
|
||
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
|
||
font-size:14px;line-height:1.6}
|
||
h1,h2,h3,h4,p{margin:0}
|
||
|
||
/* ---------- 预览工具条 ---------- */
|
||
/* 页面内可点击导航(替代原先顶部的切屏标签栏) */
|
||
.navlink{cursor:pointer;transition:.15s}
|
||
.navlink:hover{color:var(--indigo)}
|
||
.site-nav .links span{cursor:pointer;transition:.15s}
|
||
.site-nav .links span:hover{color:var(--indigo)}
|
||
.screen{display:none}
|
||
.screen.active{display:block}
|
||
|
||
/* ---------- 通用组件 ---------- */
|
||
.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}
|
||
.card-head{padding:16px 18px;border-bottom:1px solid var(--border-soft);display:flex;
|
||
align-items:flex-start;justify-content:space-between;gap:12px}
|
||
.card-title{font-size:14px;font-weight:600}
|
||
.card-desc{font-size:12px;color:var(--muted);margin-top:2px}
|
||
.card-body{padding:16px 18px}
|
||
.grid{display:grid;gap:16px}
|
||
.g4{grid-template-columns:repeat(4,1fr)}
|
||
.g3{grid-template-columns:repeat(3,1fr)}
|
||
.g2{grid-template-columns:repeat(2,1fr)}
|
||
.row{display:flex;align-items:center;gap:10px}
|
||
.between{display:flex;align-items:center;justify-content:space-between;gap:12px}
|
||
.wrap{flex-wrap:wrap}
|
||
.muted{color:var(--muted)}
|
||
.faint{color:var(--faint)}
|
||
.xs{font-size:12px}.sm{font-size:13px}.lg{font-size:15px}
|
||
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}
|
||
.b{font-weight:600}
|
||
.nowrap{white-space:nowrap}
|
||
|
||
.stat{padding:16px 18px}
|
||
.stat .label{font-size:12px;color:var(--muted)}
|
||
.stat .value{font-size:24px;font-weight:600;margin-top:6px;letter-spacing:-.02em}
|
||
.stat .sub{font-size:11px;color:var(--faint);margin-top:4px}
|
||
|
||
table{width:100%;border-collapse:collapse;font-size:13px}
|
||
th{text-align:left;font-weight:500;color:var(--muted);font-size:12px;
|
||
padding:10px 14px;border-bottom:1px solid var(--border);background:#f8fafc;white-space:nowrap}
|
||
td{padding:12px 14px;border-bottom:1px solid var(--border-soft);white-space:nowrap}
|
||
tbody tr:hover{background:#f8fafc}
|
||
.table-wrap{overflow-x:auto}
|
||
|
||
.badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 9px;
|
||
font-size:11px;font-weight:500;line-height:18px}
|
||
.b-red{background:#fef2f2;color:var(--red)} .b-green{background:#f0fdf4;color:var(--green)}
|
||
.b-amber{background:#fffbeb;color:var(--amber)} .b-blue{background:#eff6ff;color:var(--blue)}
|
||
.b-slate{background:#f1f5f9;color:var(--muted)} .b-indigo{background:#eef2ff;color:var(--indigo)}
|
||
|
||
.btn{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:8px;
|
||
padding:7px 14px;font-size:13px;cursor:pointer;transition:.15s;font-family:inherit}
|
||
.btn:hover{background:#f8fafc}
|
||
.btn-primary{background:var(--indigo);border-color:var(--indigo);color:#fff}
|
||
.btn-primary:hover{background:var(--indigo-dark)}
|
||
.btn-danger{background:#fff;border-color:#fecaca;color:var(--red)}
|
||
.btn-sm{padding:4px 10px;font-size:12px;border-radius:6px}
|
||
.btn-ghost{border-color:transparent;background:transparent;color:var(--muted)}
|
||
.btn-ghost:hover{background:#f1f5f9}
|
||
.btn:disabled{opacity:.5;cursor:not-allowed}
|
||
|
||
.input,.select,textarea{width:100%;border:1px solid var(--border);border-radius:8px;
|
||
padding:8px 12px;font-size:13px;font-family:inherit;color:var(--text);background:#fff}
|
||
.input:focus,.select:focus,textarea:focus{outline:none;border-color:#a5b4fc}
|
||
.chip{border:1px solid var(--border);border-radius:999px;padding:3px 11px;font-size:12px;
|
||
color:var(--muted);cursor:pointer;background:#fff}
|
||
.chip:hover{border-color:#a5b4fc;color:var(--indigo)}
|
||
|
||
.empty{padding:48px 0;text-align:center;color:var(--faint);font-size:13px}
|
||
.skeleton{background:#f1f5f9;border-radius:6px;height:12px;animation:pulse 1.4s infinite}
|
||
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
|
||
.spin{display:inline-block;width:13px;height:13px;border:2px solid #cbd5e1;
|
||
border-top-color:var(--indigo);border-radius:50%;animation:rot .8s linear infinite}
|
||
@keyframes rot{to{transform:rotate(360deg)}}
|
||
|
||
/* ---------- 后台壳层 ---------- */
|
||
.shell{min-height:100vh}
|
||
.sidebar{position:fixed;inset-y:0;left:0;width:224px;background:var(--navy);color:#fff;
|
||
display:flex;flex-direction:column;z-index:20}
|
||
.brand{display:flex;align-items:center;gap:10px;padding:18px 20px}
|
||
.brand-logo{width:34px;height:34px;border-radius:9px;background:var(--indigo);
|
||
display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px}
|
||
.brand-name{font-size:13px;font-weight:600}
|
||
.brand-sub{font-size:11px;color:#94a3b8}
|
||
.side-nav{flex:1;padding:6px 12px;overflow-y:auto}
|
||
.zone-label{font-size:10px;letter-spacing:.08em;color:#64748b;padding:12px 10px 4px;
|
||
text-transform:uppercase;font-weight:600}
|
||
.nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:0;
|
||
background:transparent;color:#94a3b8;border-radius:8px;font-size:13px;cursor:pointer;
|
||
text-align:left;font-family:inherit;margin-bottom:2px}
|
||
.nav-item:hover{background:rgba(255,255,255,.06);color:#fff}
|
||
.nav-item.active{background:rgba(255,255,255,.12);color:#fff}
|
||
.nav-item .ico{width:16px;text-align:center;font-size:13px}
|
||
.nav-item .lock{margin-left:auto;font-size:10px;background:#1e293b;color:#94a3b8;
|
||
border-radius:4px;padding:1px 5px}
|
||
.side-foot{border-top:1px solid rgba(255,255,255,.1);padding:14px 20px;font-size:12px;color:#94a3b8}
|
||
|
||
.main{margin-left:224px;min-height:100vh}
|
||
.topbar{position:sticky;top:0;z-index:30;height:60px;background:#fff;
|
||
border-bottom:1px solid var(--border);display:flex;align-items:center;
|
||
justify-content:space-between;padding:0 22px}
|
||
.page-title{font-size:14px;font-weight:600}
|
||
.page-sub{font-size:12px;color:var(--muted)}
|
||
.avatar{width:32px;height:32px;border-radius:50%;background:#eef2ff;color:var(--indigo);
|
||
display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}
|
||
.bell{position:relative;border:0;background:transparent;cursor:pointer;font-size:16px;padding:6px}
|
||
.dot{position:absolute;top:2px;right:2px;min-width:15px;height:15px;border-radius:999px;
|
||
background:var(--red);color:#fff;font-size:10px;display:flex;align-items:center;
|
||
justify-content:center;padding:0 3px}
|
||
.content{max-width:1360px;padding:22px}
|
||
|
||
/* ---------- 悬浮助手 ---------- */
|
||
.fab{position:fixed;right:24px;bottom:24px;z-index:60;width:56px;height:56px;border-radius:50%;
|
||
background:var(--indigo);color:#fff;border:0;cursor:pointer;box-shadow:0 10px 24px rgba(79,70,229,.35);
|
||
font-size:22px;display:flex;align-items:center;justify-content:center}
|
||
.fab:hover{background:var(--indigo-dark)}
|
||
.fab .cnt{position:absolute;top:-2px;right:-2px;min-width:20px;height:20px;border-radius:999px;
|
||
background:var(--red);color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center}
|
||
.drawer-mask{position:fixed;inset:0;background:rgba(15,23,42,.12);z-index:70}
|
||
.drawer{position:fixed;top:0;right:0;bottom:0;width:560px;max-width:100%;background:#fff;z-index:80;
|
||
display:flex;flex-direction:column;box-shadow:-8px 0 32px rgba(15,23,42,.12)}
|
||
.drawer-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border)}
|
||
.drawer-body{flex:1;overflow-y:auto;padding:16px 18px;background:#f8fafc}
|
||
.drawer-foot{border-top:1px solid var(--border);padding:12px 18px;background:#fff}
|
||
.msg{display:flex;gap:9px;margin-bottom:14px}
|
||
.msg.me{flex-direction:row-reverse}
|
||
.msg-ava{width:28px;height:28px;border-radius:50%;background:#f1f5f9;color:var(--muted);
|
||
display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0}
|
||
.msg.me .msg-ava{background:#eef2ff;color:var(--indigo)}
|
||
.bubble{max-width:78%;background:#f1f5f9;color:var(--text);border-radius:12px;
|
||
padding:10px 14px;font-size:13px;line-height:1.7}
|
||
.msg.me .bubble{background:var(--indigo);color:#fff}
|
||
.seg{display:inline-flex;background:#f1f5f9;border-radius:8px;padding:2px}
|
||
.seg button{border:0;background:transparent;padding:5px 12px;font-size:12px;border-radius:6px;
|
||
cursor:pointer;color:var(--muted);font-family:inherit}
|
||
.seg button.on{background:#fff;color:var(--text);box-shadow:0 1px 2px rgba(15,23,42,.08)}
|
||
|
||
/* ---------- 弹窗 ---------- */
|
||
.modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:90;
|
||
display:flex;align-items:center;justify-content:center;padding:24px}
|
||
.modal{background:#fff;border-radius:14px;width:100%;max-width:640px;max-height:88vh;
|
||
display:flex;flex-direction:column}
|
||
.modal-head{padding:16px 20px;border-bottom:1px solid var(--border-soft);
|
||
display:flex;align-items:center;justify-content:space-between}
|
||
.modal-body{padding:18px 20px;overflow-y:auto}
|
||
.modal-foot{padding:14px 20px;border-top:1px solid var(--border-soft);
|
||
display:flex;justify-content:flex-end;gap:10px}
|
||
.kv{display:grid;grid-template-columns:96px 1fr;gap:8px 14px;font-size:13px}
|
||
.kv .k{color:var(--muted)}
|
||
.subtabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:14px}
|
||
.subtabs button{border:0;background:transparent;padding:8px 14px;font-size:13px;cursor:pointer;
|
||
color:var(--muted);border-bottom:2px solid transparent;font-family:inherit}
|
||
.subtabs button.on{color:var(--indigo);border-bottom-color:var(--indigo);font-weight:500}
|
||
|
||
/* ---------- 客户端 ---------- */
|
||
.site{background:#fff;min-height:100vh}
|
||
.site-nav{display:flex;align-items:center;justify-content:space-between;padding:16px 40px;
|
||
border-bottom:1px solid var(--border-soft);position:sticky;top:0;background:#fff;z-index:10}
|
||
.site-nav .links{display:flex;gap:26px;font-size:13px;color:var(--muted)}
|
||
.hero{padding:80px 40px;background:linear-gradient(180deg,#f8fafc,#fff)}
|
||
.hero h1{font-size:56px;line-height:1.1;font-weight:600;letter-spacing:-.02em;max-width:760px}
|
||
.hero p{color:var(--muted);margin-top:20px;font-size:16px;max-width:520px}
|
||
.section{padding:56px 40px}
|
||
.section h2{font-size:30px;font-weight:600;letter-spacing:-.01em}
|
||
.section .lead{color:var(--muted);margin-top:10px;font-size:15px}
|
||
.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
|
||
.auth-left{background:var(--navy);color:#fff;padding:60px;display:flex;flex-direction:column;
|
||
justify-content:center}
|
||
.auth-left h1{font-size:38px;line-height:1.25;font-weight:600}
|
||
.auth-right{display:flex;align-items:center;justify-content:center;padding:60px;background:#fff}
|
||
.auth-box{width:100%;max-width:340px}
|
||
.auth-box h2{font-size:24px;font-weight:600}
|
||
.field{margin-top:16px}
|
||
.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}
|
||
.site-foot{border-top:1px solid var(--border-soft);padding:24px 40px;color:var(--faint);font-size:12px}
|
||
.nav-line{height:3px;background:var(--border);border-radius:2px;overflow:hidden}
|
||
.nav-line i{display:block;height:100%;background:var(--indigo);width:34%}
|
||
.bar-row{display:flex;align-items:center;gap:10px;font-size:12px;margin-bottom:8px}
|
||
.bar-track{flex:1;height:8px;background:#f1f5f9;border-radius:4px;overflow:hidden}
|
||
.bar-fill{height:100%;border-radius:4px}
|
||
/* 客户 / 游客侧智能助手(全局挂载) */
|
||
.ca-win{position:fixed;right:28px;bottom:92px;width:380px;height:520px;background:#fff;
|
||
border-radius:16px;border:1px solid var(--border);box-shadow:0 20px 48px rgba(15,23,42,.18);
|
||
display:flex;flex-direction:column;z-index:80;overflow:hidden}
|
||
.ca-head{background:var(--navy);color:#fff;padding:13px 18px;display:flex;
|
||
align-items:center;justify-content:space-between}
|
||
.ca-head .t{font-size:13px;font-weight:600}
|
||
.ca-head .s{font-size:11px;color:#bfdbfe}
|
||
.ca-body{flex:1;overflow-y:auto;padding:16px;background:#f8fafc}
|
||
.ca-body .m{margin-bottom:12px;display:flex}
|
||
.ca-body .m.bot{justify-content:flex-start}
|
||
.ca-body .m.usr{justify-content:flex-end}
|
||
.ca-body .bl{max-width:82%;border-radius:14px;padding:10px 14px;font-size:13px;line-height:1.7}
|
||
.ca-body .m.bot .bl{border:1px solid var(--border);background:#fff;color:var(--text)}
|
||
.ca-body .m.usr .bl{background:var(--indigo);color:#fff}
|
||
.ca-foot{border-top:1px solid var(--border);padding:12px;display:flex;gap:8px;background:#fff}
|
||
|
||
.price{font-size:34px;font-weight:600;letter-spacing:-.02em}
|
||
.up{color:var(--red)} .down{color:var(--green)}
|
||
.note{background:#fffbeb;border:1px solid #fde68a;color:#92400e;border-radius:8px;
|
||
padding:12px 14px;font-size:12px;line-height:1.7}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<!-- ============ 后台工作台(共享壳层) ============ -->
|
||
<div class="screen active" id="screen-admin">
|
||
<div class="shell">
|
||
<aside class="sidebar">
|
||
<div class="brand">
|
||
<div class="brand-logo">华</div>
|
||
<div><div class="brand-name">华夏基金</div><div class="brand-sub">统一员工工作台</div></div>
|
||
</div>
|
||
<nav class="side-nav" id="side-nav"></nav>
|
||
<div class="side-foot"><span class="navlink" onclick="navTo('screen-home')">返回官网</span>
|
||
· <span class="navlink" onclick="navTo('screen-login')">退出登录</span></div>
|
||
</aside>
|
||
|
||
<div class="main">
|
||
<header class="topbar">
|
||
<div class="row">
|
||
<button class="btn btn-ghost btn-sm">☰</button>
|
||
<div><div class="page-title" id="pg-title">工作台概览</div>
|
||
<div class="page-sub" id="pg-sub">按当前角色展示核心经营指标</div></div>
|
||
</div>
|
||
<div class="row">
|
||
<button class="bell">🔔<span class="dot">6</span></button>
|
||
<div class="avatar">李</div>
|
||
<div class="xs"><div class="b">李静</div><div class="faint">投顾</div></div>
|
||
</div>
|
||
</header>
|
||
<div class="content" id="admin-content"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<button class="fab" id="fab" title="打开投顾助手">🤖<span class="cnt">3</span></button>
|
||
|
||
<div id="drawer-root" style="display:none">
|
||
<div class="drawer-mask" onclick="closeDrawer()"></div>
|
||
<aside class="drawer">
|
||
<div class="drawer-head">
|
||
<div class="brand-logo" style="width:34px;height:34px;font-size:16px">🤖</div>
|
||
<div style="flex:1">
|
||
<div class="sm b">投顾助手</div>
|
||
<div class="xs faint">会话 #8f2a1c · <span id="dw-status">空闲</span></div>
|
||
</div>
|
||
<select class="select" style="width:170px">
|
||
<option>#10231 王伟明</option><option>#10245 陈晓琳</option>
|
||
<option selected>未指定客户(通用问答)</option>
|
||
</select>
|
||
<button class="btn btn-sm" onclick="endSession()">结束会话</button>
|
||
<button class="btn btn-ghost btn-sm" onclick="closeDrawer()">-</button>
|
||
</div>
|
||
<div style="padding:10px 18px;border-bottom:1px solid var(--border-soft)">
|
||
<div class="seg">
|
||
<button class="on" onclick="switchDw(this,'dw-chat')">对话</button>
|
||
<button onclick="switchDw(this,'dw-drafts')">草稿 (3)</button>
|
||
</div>
|
||
</div>
|
||
<div class="drawer-body" id="dw-chat">
|
||
<div class="msg"><div class="msg-ava">🤖</div>
|
||
<div class="bubble">我可以帮你查询客户数据、分析基金、生成沟通话术和调仓建议。<br>
|
||
<span class="faint xs">指定客户后,助手只能读取你名下已授权的客户数据。</span></div></div>
|
||
<div class="msg me"><div class="msg-ava">李</div>
|
||
<div class="bubble">帮我看看王伟明的持仓,最近需要调仓吗?</div></div>
|
||
<div class="msg"><div class="msg-ava">🤖</div>
|
||
<div class="bubble">客户王伟明(C3·稳健型)当前持仓 5 只基金,权益类占比 <b>62%</b>,
|
||
高于其风险等级建议上限 <b>50%</b>,主要超配来自「华夏成长混合」单只占比 28%。<br><br>
|
||
近 3 月组合回撤 6.4%,同期基准 4.1%。建议将权益仓位下调至 50% 以内,
|
||
优先减持单一集中度较高的成长风格产品。<br><br>
|
||
<span class="faint xs">意图:portfolio_rebalance · 已生成草稿</span></div></div>
|
||
</div>
|
||
<div class="drawer-body" id="dw-drafts" style="display:none">
|
||
<div class="card"><div class="card-body" style="padding:14px 16px">
|
||
<div class="between"><div><div class="sm b">调仓建议 · 王伟明</div>
|
||
<div class="xs muted mt8">建议将权益仓位由 62% 降至 50%…</div></div>
|
||
<span class="badge b-amber">待发送</span></div>
|
||
<div class="row mt12"><span class="badge b-indigo">rebalance</span>
|
||
<span class="xs faint">09-14 18:22</span>
|
||
<span style="flex:1"></span>
|
||
<button class="btn btn-sm btn-ghost">编辑</button>
|
||
<button class="btn btn-sm btn-ghost">🗑</button></div>
|
||
</div></div>
|
||
<div class="card mt12"><div class="card-body" style="padding:14px 16px">
|
||
<div class="between"><div><div class="sm b">市场波动沟通话术</div>
|
||
<div class="xs muted mt8">近期市场震荡,建议主动联系…</div></div>
|
||
<span class="badge b-slate">草稿</span></div>
|
||
<div class="row mt12"><span class="badge b-indigo">dialogue-script</span>
|
||
<span class="xs faint">09-13 15:40</span></div>
|
||
</div></div>
|
||
</div>
|
||
<div class="drawer-foot">
|
||
<div class="row wrap" style="margin-bottom:10px">
|
||
<span class="chip">🔍 查客户数据</span><span class="chip">📊 基金分析</span>
|
||
<span class="chip">💬 生成话术</span><span class="chip">🔄 调仓再平衡</span>
|
||
</div>
|
||
<div class="row" style="align-items:flex-end">
|
||
<textarea rows="2" placeholder="描述你的问题,回车发送(Shift+Enter 换行)"
|
||
style="flex:1;resize:none"></textarea>
|
||
<button class="btn btn-primary">发送</button>
|
||
</div>
|
||
</div>
|
||
</aside>
|
||
</div>
|
||
|
||
<div id="cust-modal" style="display:none">
|
||
<div class="modal-mask" onclick="closeModal()">
|
||
<div class="modal" onclick="event.stopPropagation()">
|
||
<div class="modal-head"><div class="b">客户详情 · 王伟明</div>
|
||
<button class="btn btn-ghost btn-sm" onclick="closeModal()">✕</button></div>
|
||
<div class="modal-body">
|
||
<div class="subtabs">
|
||
<button class="on">基本资料</button><button>持仓</button><button>组合诊断</button><button>历史报告</button>
|
||
</div>
|
||
<div class="kv">
|
||
<div class="k">客户编号</div><div>#10231</div>
|
||
<div class="k">手机号</div><div>138****6721 <button class="btn btn-sm btn-ghost">查看</button></div>
|
||
<div class="k">客户等级</div><div><span class="badge b-blue">A</span></div>
|
||
<div class="k">风险等级</div><div><span class="badge b-amber">C3 稳健型</span></div>
|
||
<div class="k">风险评分</div><div>62 / 100</div>
|
||
<div class="k">总资产</div><div>¥ 1,284,600.00</div>
|
||
<div class="k">关系状态</div><div><span class="badge b-green">已签约</span></div>
|
||
<div class="k">签约时间</div><div>2024-03-11</div>
|
||
</div>
|
||
<div class="note mt16">查看完整手机号会写入审计日志,仅可用于本人名下客户的合规服务场景。</div>
|
||
</div>
|
||
<div class="modal-foot"><button class="btn" onclick="closeModal()">关闭</button></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ============ 客户 / 游客侧智能助手(全局挂载,后台不显示) ============ -->
|
||
<div id="client-agent" style="display:none">
|
||
<div class="ca-win" id="ca-win" style="display:none">
|
||
<div class="ca-head">
|
||
<div class="row" style="gap:10px">
|
||
<div class="brand-logo" style="width:34px;height:34px;font-size:15px">🤖</div>
|
||
<div><div class="t">华夏基金智能助手</div><div class="s" id="ca-state">在线为您提供基金信息服务</div></div>
|
||
</div>
|
||
<button class="btn btn-ghost btn-sm" style="color:#bfdbfe" onclick="closeCA()">✕</button>
|
||
</div>
|
||
<div class="ca-body">
|
||
<div id="ca-connecting" class="xs" style="color:#94a3b8;padding:6px 0">正在建立会话...</div>
|
||
<div id="ca-messages" style="display:none">
|
||
<div class="m bot"><div class="bl">您好,我是华夏基金智能助手。您可以咨询基金产品、风险等级和净值信息。</div></div>
|
||
<div class="m usr"><div class="bl">稳健型的我能买股票型基金吗?</div></div>
|
||
<div class="m bot"><div class="bl">风险等级 C2(保守型)通常不建议购买 R4 股票型基金,
|
||
两者风险等级不匹配。您可以关注 R2 债券型或 R3 混合型产品。<br><br>
|
||
<span class="faint xs">以上信息仅供参考,不构成投资建议。</span></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="ca-foot">
|
||
<input class="input" placeholder="输入您的问题">
|
||
<button class="btn btn-primary">发送</button>
|
||
</div>
|
||
</div>
|
||
<button class="fab" onclick="toggleCA()" title="华夏基金智能助手"
|
||
style="right:28px;bottom:20px">💬</button>
|
||
</div>
|
||
|
||
<!-- ============ 知识库管理(独立后台页,不在工作台壳层内) ============ -->
|
||
<div class="screen" id="screen-knowledge">
|
||
<div style="background:#f8fafc;min-height:100vh;padding:32px 24px">
|
||
<div style="max-width:960px;margin:0 auto">
|
||
<div class="xs navlink" style="color:#64748b" onclick="navTo('screen-admin')">← 返回统一工作台</div>
|
||
<h1 style="font-size:24px;font-weight:600;margin-top:18px">知识库管理</h1>
|
||
<p class="s" style="margin-top:6px">上传投顾 / 客服 Agent 可检索的文档,入库前可先预览切分效果</p>
|
||
|
||
<div class="card mt16"><div class="card-head"><div><div class="card-title">上传文档</div>
|
||
<div class="card-desc">先预览切分效果,确认无误后再入库</div></div></div>
|
||
<div class="card-body">
|
||
<div class="row" style="gap:12px">
|
||
<span class="btn btn-sm">选择文件</span>
|
||
<span class="s muted">投顾话术手册_v3.pdf</span>
|
||
</div>
|
||
<div class="grid g3 mt16" style="gap:12px">
|
||
<div><div class="xs muted mb8" style="margin-bottom:6px">标题</div>
|
||
<input class="input" value="投顾话术手册_v3.pdf"></div>
|
||
<div><div class="xs muted mb8" style="margin-bottom:6px">切分策略</div>
|
||
<select class="input"><option>默认(按段落递归切分)</option>
|
||
<option>固定长度切分</option><option>按句子切分</option></select></div>
|
||
<div class="row" style="gap:8px">
|
||
<div style="flex:1"><div class="xs muted" style="margin-bottom:6px">分片长度</div>
|
||
<input class="input" placeholder="留空用默认"></div>
|
||
<div style="flex:1"><div class="xs muted" style="margin-bottom:6px">重叠长度</div>
|
||
<input class="input" placeholder="留空用默认"></div>
|
||
</div>
|
||
</div>
|
||
<div class="row mt16" style="gap:8px">
|
||
<button class="btn btn-sm">预览切分</button>
|
||
<button class="btn btn-primary btn-sm">确认入库</button>
|
||
<button class="btn btn-ghost btn-sm">取消</button>
|
||
</div>
|
||
|
||
<div style="border:1px solid var(--border);background:#f8fafc;border-radius:8px;padding:14px;margin-top:16px">
|
||
<div class="row" style="gap:8px;flex-wrap:wrap">
|
||
<span class="badge b-info">default</span>
|
||
<span class="xs muted">分片 800</span><span class="xs muted">重叠 120</span>
|
||
<span class="xs" style="font-weight:600;color:#334155">共切出 42 段</span>
|
||
</div>
|
||
<div style="margin-top:10px;max-height:150px;overflow:auto">
|
||
<div class="bl" style="background:#fff;border:1px solid var(--border);border-radius:6px;
|
||
padding:8px 12px;font-size:12px;line-height:1.7;color:#475569;margin-bottom:6px">
|
||
第 1 段:本手册适用于一线投顾在客户沟通场景中使用,所有表述须通过合规校验后方可对外发送。</div>
|
||
<div class="bl" style="background:#fff;border:1px solid var(--border);border-radius:6px;
|
||
padding:8px 12px;font-size:12px;line-height:1.7;color:#475569;margin-bottom:6px">
|
||
第 2 段:风险揭示话术:任何基金产品均不承诺保本,历史业绩不代表未来表现,请在客户理解后确认。</div>
|
||
<div class="xs muted" style="padding:0 12px">仅展示前 20 段,共 42 段</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card mt16"><div class="card-head"><div><div class="card-title">已入库文档</div>
|
||
<div class="card-desc">共 3 篇</div></div></div>
|
||
<div class="card-body" style="padding:0">
|
||
<div class="table-wrap"><table>
|
||
<thead><tr><th>文档</th><th>集合</th><th>分段</th><th>入库时间</th><th></th></tr></thead>
|
||
<tbody>
|
||
<tr><td>投顾话术手册_v3.pdf</td><td>advisor_kb</td><td>42 段</td>
|
||
<td class="muted">2026-09-10 14:22</td><td class="muted">删除</td></tr>
|
||
<tr><td>基金产品说明书汇总.docx</td><td>product_kb</td><td>128 段</td>
|
||
<td class="muted">2026-09-08 09:41</td><td class="muted">删除</td></tr>
|
||
<tr><td>合规红线与禁语清单.md</td><td>compliance_kb</td><td>17 段</td>
|
||
<td class="muted">2026-09-02 16:05</td><td class="muted">删除</td></tr>
|
||
</tbody>
|
||
</table></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ============ 客户端各页 ============ -->
|
||
<div class="screen" id="screen-home"><div class="site">
|
||
<div class="site-nav"><div class="b lg">华夏基金</div>
|
||
<div class="links"><span onclick="navTo('screen-home')">首页</span><span onclick="navTo('screen-products')">基金产品</span><span onclick="toggleCA()">智能投顾</span><span onclick="navTo('screen-risk')">风险管理</span><span onclick="navTo('screen-admin')">员工工作台</span></div>
|
||
<div class="row"><button class="btn btn-sm" onclick="navTo('screen-login')">登录</button><button class="btn btn-primary btn-sm" onclick="navTo('screen-login')">开户</button></div>
|
||
</div>
|
||
<div class="hero">
|
||
<h1>让每一份长期信任,<br>变成清晰的选择。</h1>
|
||
<p>基于你的风险承受能力与投资目标,提供更合适的方案。</p>
|
||
<div class="row mt24"><button class="btn btn-primary" onclick="navTo('screen-risk')">开始风险测评</button>
|
||
<button class="btn" onclick="navTo('screen-products')">浏览基金产品</button></div>
|
||
</div>
|
||
<div class="section" style="padding-top:24px">
|
||
<div class="grid g3">
|
||
<div class="card"><div class="card-body"><div class="b">公募基金</div>
|
||
<div class="xs muted mt8">覆盖股票、债券、混合、指数等多类型产品。</div></div></div>
|
||
<div class="card"><div class="card-body"><div class="b">风险管理</div>
|
||
<div class="xs muted mt8">全流程风险识别与预警,守住投资底线。</div></div></div>
|
||
<div class="card"><div class="card-body"><div class="b">智能投顾</div>
|
||
<div class="xs muted mt8">数据驱动的持仓诊断与配置建议。</div></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" style="padding-top:0">
|
||
<h2>找到适合自己的基金。</h2><div class="lead">精选白名单产品,数据每日更新。</div>
|
||
<div class="grid g3 mt16">
|
||
<div class="card navlink" onclick="navTo('screen-detail')"><div class="card-body"><div class="xs faint">000001 · 混合型</div>
|
||
<div class="b mt8">华夏成长混合</div>
|
||
<div class="row mt12"><span class="price up">2.1840</span>
|
||
<span class="xs up">+1.24%</span></div></div></div>
|
||
<div class="card navlink" onclick="navTo('screen-detail')"><div class="card-body"><div class="xs faint">000311 · 股票型</div>
|
||
<div class="b mt8">华夏复兴股票</div>
|
||
<div class="row mt12"><span class="price down">3.0420</span>
|
||
<span class="xs down">-0.62%</span></div></div></div>
|
||
<div class="card navlink" onclick="navTo('screen-detail')"><div class="card-body"><div class="xs faint">001056 · 债券型</div>
|
||
<div class="b mt8">华夏稳健债券</div>
|
||
<div class="row mt12"><span class="price up">1.3260</span>
|
||
<span class="xs up">+0.18%</span></div></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="site-foot">基金投资有风险,过往业绩不代表未来表现。</div>
|
||
</div></div>
|
||
|
||
<div class="screen" id="screen-products"><div class="site">
|
||
<div class="site-nav"><div class="b lg">华夏基金</div>
|
||
<div class="links"><span onclick="navTo('screen-home')">首页</span><span onclick="navTo('screen-products')">基金产品</span><span onclick="toggleCA()">智能投顾</span><span onclick="navTo('screen-risk')">风险管理</span><span onclick="navTo('screen-admin')">员工工作台</span></div>
|
||
<div class="avatar navlink" onclick="navTo('screen-account')">李</div></div>
|
||
<div class="section" style="padding-bottom:0">
|
||
<h1 style="font-size:40px;font-weight:600">基金产品</h1>
|
||
<div class="row mt16 wrap">
|
||
<input class="input" style="max-width:320px" placeholder="搜索基金名称或代码">
|
||
<select class="select" style="max-width:150px"><option>全部类型</option></select>
|
||
<select class="select" style="max-width:150px"><option>全部风险等级</option></select>
|
||
</div>
|
||
</div>
|
||
<div class="section" style="padding-top:20px">
|
||
<div class="card"><div class="table-wrap"><table>
|
||
<thead><tr><th>基金代码</th><th>基金名称</th><th>类型</th><th>风险等级</th>
|
||
<th>单位净值</th><th>日涨跌</th><th>净值日期</th><th>基金经理</th><th></th></tr></thead>
|
||
<tbody>
|
||
<tr><td>000001</td><td class="b">华夏成长混合</td><td>混合型</td>
|
||
<td><span class="badge b-amber">R3</span></td><td>2.1840</td>
|
||
<td class="up">+1.24%</td><td>2026-09-13</td><td>张伟</td>
|
||
<td><button class="btn btn-sm btn-ghost" onclick="navTo('screen-detail')">详情</button></td></tr>
|
||
<tr><td>000311</td><td class="b">华夏复兴股票</td><td>股票型</td>
|
||
<td><span class="badge b-red">R4</span></td><td>3.0420</td>
|
||
<td class="down">-0.62%</td><td>2026-09-13</td><td>李娜</td>
|
||
<td><button class="btn btn-sm btn-ghost" onclick="navTo('screen-detail')">详情</button></td></tr>
|
||
<tr><td>001056</td><td class="b">华夏稳健债券</td><td>债券型</td>
|
||
<td><span class="badge b-green">R2</span></td><td>1.3260</td>
|
||
<td class="up">+0.18%</td><td>2026-09-13</td><td>王强</td>
|
||
<td><button class="btn btn-sm btn-ghost" onclick="navTo('screen-detail')">详情</button></td></tr>
|
||
</tbody></table></div></div>
|
||
</div>
|
||
</div></div>
|
||
|
||
<div class="screen" id="screen-detail"><div class="site">
|
||
<div class="site-nav"><div class="b lg">华夏基金</div>
|
||
<div class="links"><span onclick="navTo('screen-home')">首页</span><span onclick="navTo('screen-products')">基金产品</span><span onclick="toggleCA()">智能投顾</span><span onclick="navTo('screen-risk')">风险管理</span><span onclick="navTo('screen-admin')">员工工作台</span></div>
|
||
<div class="avatar navlink" onclick="navTo('screen-account')">李</div></div>
|
||
<div class="section" style="padding-bottom:0">
|
||
<div class="xs faint">000001 · 混合型 · R3</div>
|
||
<h1 style="font-size:34px;font-weight:600;margin-top:6px">华夏成长混合</h1>
|
||
<div class="row mt16" style="gap:32px">
|
||
<div><div class="xs muted">单位净值</div>
|
||
<div class="price up">2.1840</div></div>
|
||
<div><div class="xs muted">日涨跌</div><div class="lg b up">+1.24%</div></div>
|
||
<div><div class="xs muted">近一年</div><div class="lg b up">+18.62%</div></div>
|
||
<div><div class="xs muted">基金经理</div><div class="lg b">张伟</div></div>
|
||
</div>
|
||
<div class="row mt24"><button class="btn btn-primary">申购</button><button class="btn">赎回</button></div>
|
||
</div>
|
||
<div class="section" style="padding-top:24px">
|
||
<h2 style="font-size:22px">历史净值走势</h2>
|
||
<div class="card mt16"><div class="card-body">
|
||
<svg viewBox="0 0 800 220" style="width:100%;height:220px">
|
||
<polyline fill="none" stroke="#dc2626" stroke-width="2"
|
||
points="0,180 80,165 160,172 240,140 320,150 400,118 480,126 560,92 640,100 720,68 800,54"/>
|
||
<polyline fill="rgba(220,38,38,.08)" stroke="none"
|
||
points="0,180 80,165 160,172 240,140 320,150 400,118 480,126 560,92 640,100 720,68 800,54 800,220 0,220"/>
|
||
</svg>
|
||
<div class="row between xs faint"><span>2025-09</span><span>2026-03</span><span>2026-09</span></div>
|
||
</div></div>
|
||
<div class="note mt16">基金过往业绩不预示其未来表现,投资须谨慎。</div>
|
||
</div>
|
||
</div></div>
|
||
|
||
<div class="screen" id="screen-login">
|
||
<div class="auth">
|
||
<div class="auth-left">
|
||
<div class="b lg">华夏基金</div>
|
||
<h1 class="mt24">专业研究,<br>陪伴长期价值。</h1>
|
||
<p style="color:#94a3b8;margin-top:20px;max-width:320px">以长期视角管理每一笔托付,
|
||
用纪律与数据应对市场波动。</p>
|
||
</div>
|
||
<div class="auth-right"><div class="auth-box">
|
||
<h2>欢迎回来</h2>
|
||
<div class="xs muted mt8">请使用您的账号登录员工工作台或用户中心</div>
|
||
<div class="field"><label>用户名</label><input class="input" value=""></div>
|
||
<div class="field"><label>密码</label><input class="input" type="password" value=""></div>
|
||
<button class="btn btn-primary mt16" style="width:100%" onclick="navTo('screen-account')">登录</button>
|
||
<div class="between mt16 xs"><span class="muted">还没有账号?</span>
|
||
<span style="color:var(--indigo)">立即注册</span></div>
|
||
</div></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="screen" id="screen-risk"><div class="site">
|
||
<div class="site-nav"><div class="b lg">华夏基金</div>
|
||
<div class="links"><span onclick="navTo('screen-home')">首页</span><span onclick="navTo('screen-products')">基金产品</span><span onclick="navTo('screen-account')">用户中心</span><span onclick="navTo('screen-admin')">员工工作台</span></div>
|
||
<div class="avatar navlink" onclick="navTo('screen-account')">李</div></div>
|
||
<div class="section" style="max-width:720px;margin:0 auto;padding-bottom:0">
|
||
<div class="xs faint">投资前必做</div>
|
||
<h1 style="font-size:28px;font-weight:600;color:var(--navy)">风险承受能力测评</h1>
|
||
<div class="nav-line mt16"><i></i></div>
|
||
<div class="xs muted mt8">第 3 / 10 题 · 完成约需 2 分钟</div>
|
||
</div>
|
||
<div class="section" style="max-width:720px;margin:0 auto;padding-top:20px">
|
||
<div class="card"><div class="card-body">
|
||
<div class="b">您的投资期限通常是?</div>
|
||
<div class="xs muted mt8">单选,请选择最符合您实际情况的一项</div>
|
||
<div class="mt16">
|
||
<label class="row" style="padding:10px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px">
|
||
<input type="radio" name="q"> <span class="sm">1 年以内</span></label>
|
||
<label class="row" style="padding:10px;border:1px solid var(--indigo);border-radius:8px;margin-bottom:8px;background:#f5f7ff">
|
||
<input type="radio" name="q" checked> <span class="sm">1 - 3 年</span></label>
|
||
<label class="row" style="padding:10px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px">
|
||
<input type="radio" name="q"> <span class="sm">3 - 5 年</span></label>
|
||
<label class="row" style="padding:10px;border:1px solid var(--border);border-radius:8px">
|
||
<input type="radio" name="q"> <span class="sm">5 年以上</span></label>
|
||
</div>
|
||
<div class="between mt16"><button class="btn">上一题</button>
|
||
<button class="btn btn-primary">下一题</button></div>
|
||
</div></div>
|
||
<div class="note mt16">测评结果仅用于评估您的风险承受能力,不构成投资建议。</div>
|
||
</div>
|
||
</div></div>
|
||
|
||
<div class="screen" id="screen-account"><div class="site">
|
||
<div class="site-nav"><div class="b lg">华夏基金</div>
|
||
<div class="links"><span onclick="navTo('screen-home')">首页</span><span onclick="navTo('screen-products')">基金产品</span><span onclick="navTo('screen-account')">用户中心</span><span onclick="navTo('screen-admin')">员工工作台</span></div>
|
||
<div class="avatar navlink" onclick="navTo('screen-account')">李</div></div>
|
||
<div class="section" style="padding-bottom:0">
|
||
<div class="xs faint">Personal Account</div>
|
||
<h1 style="font-size:34px;font-weight:600;color:var(--navy)">用户中心</h1>
|
||
<div class="xs muted mt8">139****0041</div>
|
||
</div>
|
||
<div class="section" style="padding-top:20px">
|
||
<div class="row between" style="margin-bottom:16px">
|
||
<span class="navlink xs" onclick="navTo('screen-home')">← 返回首页</span>
|
||
<button class="btn btn-sm">刷新账户数据</button></div>
|
||
|
||
<div class="grid g3">
|
||
<div class="card stat" style="background:var(--navy);border-color:var(--navy)">
|
||
<div class="label" style="color:#bfdbfe">账户余额</div>
|
||
<div class="value" style="color:#fff">¥0.00</div>
|
||
<div class="sub" style="color:#93c5fd">该账户暂无余额记录</div></div>
|
||
<div class="card stat"><div class="label">持仓总金额</div>
|
||
<div class="value">¥6,740.45</div><div class="sub">共 1 只基金</div></div>
|
||
<div class="card stat"><div class="label">风险测评</div>
|
||
<div class="value" style="font-size:19px">待完成测评</div>
|
||
<div class="sub">当前后端仅提供提交接口</div></div>
|
||
</div>
|
||
|
||
<div class="grid g2 mt16">
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">我的持仓</div>
|
||
<div class="card-desc">点击任一行查看该基金详情</div></div></div>
|
||
<div class="table-wrap"><table>
|
||
<thead><tr><th>基金</th><th>持有份额</th><th>市值</th><th>盈亏</th></tr></thead>
|
||
<tbody>
|
||
<tr class="navlink" onclick="navTo('screen-detail')">
|
||
<td><div class="b sm">XX沪港深灵活配置</div>
|
||
<div class="xs faint">110011 · R4</div></td>
|
||
<td>3,910.0000</td><td>¥6,740.45</td><td class="down">-10.11</td></tr>
|
||
</tbody></table></div></div>
|
||
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">快捷操作</div></div></div>
|
||
<div class="card-body">
|
||
<div class="row wrap">
|
||
<button class="btn btn-primary">申购基金</button><button class="btn">赎回基金</button></div>
|
||
<div class="mt16 b sm">交易记录</div>
|
||
<div class="xs muted mt8">当前后端暂未提供交易记录查询接口,页面不会展示虚构数据。</div>
|
||
<div class="mt16 b sm">消息通知</div>
|
||
<div class="xs muted mt8">当前后端暂未提供用户消息查询接口。</div>
|
||
</div></div>
|
||
</div>
|
||
</div>
|
||
</div></div>
|
||
|
||
<!-- ============ 后台各分区模板 ============ -->
|
||
<template id="tpl-overview">
|
||
<div class="grid g4">
|
||
<div class="card stat"><div class="label">名下客户</div><div class="value">48</div>
|
||
<div class="sub">本月新增 3</div></div>
|
||
<div class="card stat"><div class="label">管理资产</div><div class="value">¥ 6,842 万</div>
|
||
<div class="sub">较上月 +4.2%</div></div>
|
||
<div class="card stat"><div class="label">客户流失率</div><div class="value">2.1%</div>
|
||
<div class="sub">低于团队均值</div></div>
|
||
<div class="card stat"><div class="label">待办事项</div><div class="value">7</div>
|
||
<div class="sub">2 项已逾期</div></div>
|
||
</div>
|
||
<div class="grid g2 mt16">
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">客户风险分层</div><div class="card-desc">按风险等级分布</div></div></div>
|
||
<div class="card-body">
|
||
<div class="bar-row"><span style="width:34px">C1</span>
|
||
<span class="bar-track"><span class="bar-fill" style="width:12%;background:#16a34a"></span></span>
|
||
<span class="muted" style="width:34px">6</span></div>
|
||
<div class="bar-row"><span style="width:34px">C2</span>
|
||
<span class="bar-track"><span class="bar-fill" style="width:28%;background:#65a30d"></span></span>
|
||
<span class="muted" style="width:34px">13</span></div>
|
||
<div class="bar-row"><span style="width:34px">C3</span>
|
||
<span class="bar-track"><span class="bar-fill" style="width:42%;background:#d97706"></span></span>
|
||
<span class="muted" style="width:34px">20</span></div>
|
||
<div class="bar-row"><span style="width:34px">C4</span>
|
||
<span class="bar-track"><span class="bar-fill" style="width:14%;background:#dc2626"></span></span>
|
||
<span class="muted" style="width:34px">7</span></div>
|
||
<div class="bar-row"><span style="width:34px">C5</span>
|
||
<span class="bar-track"><span class="bar-fill" style="width:4%;background:#991b1b"></span></span>
|
||
<span class="muted" style="width:34px">2</span></div>
|
||
</div></div>
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">待办提醒</div><div class="card-desc">按截止时间排序</div></div>
|
||
<button class="btn btn-sm btn-ghost" onclick="go('todos')">全部</button></div>
|
||
<div class="card-body">
|
||
<div class="between" style="padding:10px 0;border-bottom:1px solid var(--border-soft)">
|
||
<div><div class="sm b">回访提醒</div>
|
||
<div class="xs muted">客户 #10231 王伟明 · 截止 09-15</div></div>
|
||
<span class="badge b-red">高</span></div>
|
||
<div class="between" style="padding:10px 0;border-bottom:1px solid var(--border-soft)">
|
||
<div><div class="sm b">报告待发送</div>
|
||
<div class="xs muted">客户 #10245 陈晓琳 · 截止 09-18</div></div>
|
||
<span class="badge b-amber">中</span></div>
|
||
<div class="between" style="padding:10px 0">
|
||
<div><div class="sm b">签约跟进</div>
|
||
<div class="xs muted">客户 #10288 刘洋 · 截止 09-22</div></div>
|
||
<span class="badge b-slate">低</span></div>
|
||
</div></div>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="tpl-todos">
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">我的待办</div><div class="card-desc">投顾待办事项的处理与跟踪</div></div>
|
||
<div class="row"><select class="select" style="width:130px"><option>全部状态</option></select></div></div>
|
||
<div class="table-wrap"><table>
|
||
<thead><tr><th>待办类型</th><th>关联客户</th><th>优先级</th><th>状态</th>
|
||
<th>截止时间</th><th></th></tr></thead>
|
||
<tbody>
|
||
<tr><td class="b">回访提醒</td><td>#10231 王伟明</td>
|
||
<td><span class="badge b-red">高</span></td><td><span class="badge b-slate">待处理</span></td>
|
||
<td>2026-09-15</td><td><button class="btn btn-sm">处理</button></td></tr>
|
||
<tr><td class="b">报告待发送</td><td>#10245 陈晓琳</td>
|
||
<td><span class="badge b-amber">中</span></td><td><span class="badge b-slate">待处理</span></td>
|
||
<td>2026-09-18</td><td><button class="btn btn-sm">处理</button></td></tr>
|
||
<tr><td class="b">签约跟进</td><td>#10288 刘洋</td>
|
||
<td><span class="badge b-slate">低</span></td><td><span class="badge b-green">已完成</span></td>
|
||
<td>2026-09-22</td><td><button class="btn btn-sm" disabled>处理</button></td></tr>
|
||
</tbody></table></div></div>
|
||
</template>
|
||
|
||
<template id="tpl-customers">
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">客户管理</div><div class="card-desc">名下客户、持仓、诊断与签约状态</div></div>
|
||
<div class="row"><input class="input" style="width:200px" placeholder="搜索姓名或编号">
|
||
<select class="select" style="width:120px"><option>全部等级</option></select></div></div>
|
||
<div class="table-wrap"><table>
|
||
<thead><tr><th>客户</th><th>客户等级</th><th>风险等级</th><th>总资产</th>
|
||
<th>关系状态</th><th></th></tr></thead>
|
||
<tbody>
|
||
<tr><td class="b">#10231 王伟明</td><td><span class="badge b-blue">A</span></td>
|
||
<td><span class="badge b-amber">C3 稳健型</span></td><td>¥ 1,284,600</td>
|
||
<td><span class="badge b-green">已签约</span></td>
|
||
<td><button class="btn btn-sm" onclick="openModal()">查看</button></td></tr>
|
||
<tr><td class="b">#10245 陈晓琳</td><td><span class="badge b-blue">A</span></td>
|
||
<td><span class="badge b-red">C4 进取型</span></td><td>¥ 862,300</td>
|
||
<td><span class="badge b-green">已签约</span></td>
|
||
<td><button class="btn btn-sm" onclick="openModal()">查看</button></td></tr>
|
||
<tr><td class="b">#10288 刘洋</td><td><span class="badge b-slate">B</span></td>
|
||
<td><span class="badge b-green">C2 保守型</span></td><td>¥ 318,900</td>
|
||
<td><span class="badge b-amber">待签约</span></td>
|
||
<td><button class="btn btn-sm" onclick="openModal()">查看</button></td></tr>
|
||
</tbody></table></div>
|
||
<div class="between" style="padding:12px 18px">
|
||
<span class="xs muted">共 48 条</span>
|
||
<div class="row"><button class="btn btn-sm">上一页</button>
|
||
<span class="xs muted">1 / 4</span><button class="btn btn-sm">下一页</button></div></div>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="tpl-drafts">
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">草稿列表</div><div class="card-desc">建议草稿的编辑、发送与废弃</div></div>
|
||
<select class="select" style="width:130px"><option>全部状态</option></select></div>
|
||
<div class="card-body">
|
||
<div class="card" style="background:#f8fafc">
|
||
<div class="card-body" style="padding:14px 16px">
|
||
<div class="between"><div><div class="b">资产配置建议 · 王伟明</div>
|
||
<div class="xs muted mt8">建议将权益仓位由 62% 下调至 50%…</div></div>
|
||
<span class="badge b-amber">待发送</span></div>
|
||
<div class="row mt12"><span class="badge b-indigo">rebalance</span>
|
||
<span class="xs faint">更新于 09-14 18:22</span><span style="flex:1"></span>
|
||
<button class="btn btn-sm">编辑</button><button class="btn btn-sm btn-primary">发送</button>
|
||
<button class="btn btn-sm btn-danger">废弃</button></div>
|
||
</div></div>
|
||
<div class="card mt12" style="background:#f8fafc">
|
||
<div class="card-body" style="padding:14px 16px">
|
||
<div class="between"><div><div class="b">季度服务报告 · 陈晓琳</div>
|
||
<div class="xs muted mt8">本季度组合收益 4.8%,跑赢基准 1.2 个百分点…</div></div>
|
||
<span class="badge b-slate">草稿</span></div>
|
||
<div class="row mt12"><span class="badge b-indigo">report</span>
|
||
<span class="xs faint">更新于 09-13 11:05</span><span style="flex:1"></span>
|
||
<button class="btn btn-sm">编辑</button><button class="btn btn-sm btn-primary">发送</button>
|
||
<button class="btn btn-sm btn-danger">废弃</button></div>
|
||
</div></div>
|
||
</div></div>
|
||
</template>
|
||
|
||
<template id="tpl-visits">
|
||
<div class="grid g2">
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">历史回访</div><div class="card-desc">回访留痕与跟进</div></div>
|
||
<button class="btn btn-sm btn-primary">新增回访</button></div>
|
||
<div class="card-body">
|
||
<div style="padding:12px 0;border-bottom:1px solid var(--border-soft)">
|
||
<div class="between"><div class="b sm">王伟明 · 电话回访</div>
|
||
<span class="xs faint">09-12 15:20</span></div>
|
||
<div class="xs muted mt8">沟通市场波动,客户表示可接受短期回撤,暂不调仓。</div></div>
|
||
<div style="padding:12px 0;border-bottom:1px solid var(--border-soft)">
|
||
<div class="between"><div class="b sm">陈晓琳 · 线下拜访</div>
|
||
<span class="xs faint">09-08 10:00</span></div>
|
||
<div class="xs muted mt8">介绍新发债券基金,客户有意向配置 20 万。</div></div>
|
||
<div style="padding:12px 0">
|
||
<div class="between"><div class="b sm">刘洋 · 微信沟通</div>
|
||
<span class="xs faint">09-03 19:44</span></div>
|
||
<div class="xs muted mt8">解答赎回费率问题,客户已完成风险测评。</div></div>
|
||
</div></div>
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">合规话术库</div><div class="card-desc">按场景取用,发送前请核对合规要求</div></div></div>
|
||
<div class="card-body">
|
||
<div class="chip" style="display:block;margin-bottom:8px;text-align:left">
|
||
市场波动安抚 · 用于净值回撤期的主动沟通</div>
|
||
<div class="chip" style="display:block;margin-bottom:8px;text-align:left">
|
||
客户投诉应对 · 先共情后解释,避免承诺收益</div>
|
||
<div class="chip" style="display:block;margin-bottom:8px;text-align:left">
|
||
风控拦截说明 · 说明拦截依据与后续处理流程</div>
|
||
<div class="chip" style="display:block;text-align:left">
|
||
组合偏离告知 · 提示持仓偏离与再平衡建议</div>
|
||
<div class="note mt16">话术仅作参考,不得承诺收益或代客交易;涉及具体产品需先核对客户风险等级。</div>
|
||
</div></div>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="tpl-risk">
|
||
<div class="grid g3">
|
||
<div class="card stat"><div class="label">当前预警</div><div class="value">18</div></div>
|
||
<div class="card stat"><div class="label">本页高风险</div>
|
||
<div class="value" style="color:var(--red)">4</div></div>
|
||
<div class="card stat"><div class="label">待处置</div><div class="value">11</div></div>
|
||
</div>
|
||
<div class="card mt16"><div class="card-head"><div>
|
||
<div class="card-title">风险预警处置</div><div class="card-desc">待处置预警与人工处置通道</div></div>
|
||
<select class="select" style="width:130px"><option>未处理</option></select></div>
|
||
<div class="table-wrap"><table>
|
||
<thead><tr><th>预警类型</th><th>客户 / 订单</th><th>触发详情</th><th>级别</th>
|
||
<th>置信度</th><th>状态</th><th>创建时间</th><th></th></tr></thead>
|
||
<tbody>
|
||
<tr><td class="b">大额赎回</td><td>#10245 / ORD-8821</td>
|
||
<td class="muted">单日赎回占持仓 62%</td><td><span class="badge b-red">高</span></td>
|
||
<td>0.92</td><td><span class="badge b-amber">未处理</span></td><td>09-14 09:12</td>
|
||
<td class="row"><button class="btn btn-sm">放行</button>
|
||
<button class="btn btn-sm btn-danger">拦截</button>
|
||
<button class="btn btn-sm btn-danger">冻结</button></td></tr>
|
||
<tr><td class="b">异常登录</td><td>#10231 / —</td>
|
||
<td class="muted">异地设备 3 次失败</td><td><span class="badge b-amber">中</span></td>
|
||
<td>0.74</td><td><span class="badge b-amber">未处理</span></td><td>09-14 08:30</td>
|
||
<td class="row"><button class="btn btn-sm">放行</button>
|
||
<button class="btn btn-sm btn-danger">拦截</button>
|
||
<button class="btn btn-sm btn-danger">冻结</button></td></tr>
|
||
<tr><td class="b">持仓集中度</td><td>#10288 / —</td>
|
||
<td class="muted">单一产品占比 71%</td><td><span class="badge b-slate">低</span></td>
|
||
<td>0.61</td><td><span class="badge b-green">已放行</span></td><td>09-13 16:02</td>
|
||
<td><span class="xs faint">已处置</span></td></tr>
|
||
</tbody></table></div>
|
||
<div class="note" style="margin:14px 18px">放行 = 订单落账并排除预警;拦截 = 订单作废 + 站内信 + 可疑交易上报工单;
|
||
冻结 = 订单作废 + 客户冻结 + 冻结复核工单。操作前会二次确认。</div>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="tpl-workorders">
|
||
<div class="grid g3">
|
||
<div class="card stat"><div class="label">工单总数</div><div class="value">26</div></div>
|
||
<div class="card stat"><div class="label">本页待认领</div><div class="value">5</div></div>
|
||
<div class="card stat"><div class="label">本页待复核</div><div class="value">3</div></div>
|
||
</div>
|
||
<div class="card mt16"><div class="card-head"><div>
|
||
<div class="card-title">工单处理</div><div class="card-desc">认领、提交审核与复核闭环</div></div>
|
||
<select class="select" style="width:130px"><option>全部状态</option></select></div>
|
||
<div class="table-wrap"><table>
|
||
<thead><tr><th>工单号</th><th>类型</th><th>客户</th><th>当前节点</th><th>优先级</th>
|
||
<th>状态</th><th>创建时间</th><th></th></tr></thead>
|
||
<tbody>
|
||
<tr><td class="b">WO-20260914-003</td><td>可疑交易上报</td><td>#10245</td>
|
||
<td>待认领</td><td><span class="badge b-red">高</span></td>
|
||
<td><span class="badge b-slate">待处理</span></td><td>09-14 09:15</td>
|
||
<td><button class="btn btn-sm">认领</button></td></tr>
|
||
<tr><td class="b">WO-20260913-011</td><td>冻结复核</td><td>#10231</td>
|
||
<td>处理中</td><td><span class="badge b-amber">中</span></td>
|
||
<td><span class="badge b-blue">处理中</span></td><td>09-13 17:40</td>
|
||
<td><button class="btn btn-sm">提交审核</button></td></tr>
|
||
<tr><td class="b">WO-20260912-008</td><td>客户投诉</td><td>#10288</td>
|
||
<td>待复核</td><td><span class="badge b-slate">低</span></td>
|
||
<td><span class="badge b-indigo">待审核</span></td><td>09-12 14:20</td>
|
||
<td class="row"><button class="btn btn-sm">通过</button>
|
||
<button class="btn btn-sm btn-danger">驳回</button></td></tr>
|
||
</tbody></table></div></div>
|
||
</template>
|
||
|
||
<template id="tpl-funds">
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">基金数据</div><div class="card-desc">白名单产品与净值数据</div></div>
|
||
<div class="row"><input class="input" style="width:200px" placeholder="搜索名称或代码"></div></div>
|
||
<div class="table-wrap"><table>
|
||
<thead><tr><th>基金代码</th><th>基金名称</th><th>类型</th><th>风险等级</th>
|
||
<th>单位净值</th><th>净值日期</th><th>基金经理</th><th>状态</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>000001</td><td class="b">华夏成长混合</td><td>混合型</td>
|
||
<td><span class="badge b-amber">R3</span></td><td>2.1840</td>
|
||
<td>2026-09-13</td><td>张伟</td><td><span class="badge b-green">在售</span></td></tr>
|
||
<tr><td>000311</td><td class="b">华夏复兴股票</td><td>股票型</td>
|
||
<td><span class="badge b-red">R4</span></td><td>3.0420</td>
|
||
<td>2026-09-13</td><td>李娜</td><td><span class="badge b-green">在售</span></td></tr>
|
||
<tr><td>001056</td><td class="b">华夏稳健债券</td><td>债券型</td>
|
||
<td><span class="badge b-green">R2</span></td><td>1.3260</td>
|
||
<td>2026-09-13</td><td>王强</td><td><span class="badge b-slate">暂停申购</span></td></tr>
|
||
</tbody></table></div></div>
|
||
</template>
|
||
|
||
<template id="tpl-nl2sql">
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">智能问数</div>
|
||
<div class="card-desc">用自然语言提问,系统自动生成 SQL 并返回结果(受当前账号的数据权限约束)</div></div></div>
|
||
<div class="card-body">
|
||
<textarea rows="3" placeholder="例如:近一个月成交额排名前十的客户有哪些?"></textarea>
|
||
<div class="between mt12 wrap">
|
||
<div class="row wrap">
|
||
<span class="chip">近一个月成交额排名前十的客户有哪些?</span>
|
||
<span class="chip">统计各风险等级客户的数量</span>
|
||
<span class="chip">查询本月新增签约客户名单</span></div>
|
||
<div class="row"><span class="xs muted">返回上限</span>
|
||
<select class="select" style="width:90px"><option>200</option></select>
|
||
<button class="btn btn-primary">开始问数</button></div>
|
||
</div>
|
||
<div class="xs faint mt8">快捷键 Ctrl / ⌘ + Enter 直接提交</div>
|
||
</div></div>
|
||
<div class="card mt16"><div class="card-head"><div>
|
||
<div class="card-title">查询结果</div><div class="card-desc">共 10 行</div></div>
|
||
<span class="badge b-blue">耗时 318 ms</span></div>
|
||
<div class="card-body">
|
||
<div class="table-wrap"><table>
|
||
<thead><tr><th>customer_id</th><th>real_name</th><th>total_amount</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>10245</td><td>陈晓琳</td><td>¥ 862,300</td></tr>
|
||
<tr><td>10231</td><td>王伟明</td><td>¥ 684,100</td></tr>
|
||
<tr><td>10288</td><td>刘洋</td><td>¥ 318,900</td></tr>
|
||
</tbody></table></div>
|
||
</div></div>
|
||
<div class="card mt16">
|
||
<div class="card-head" style="border-bottom:0"><div>
|
||
<div class="card-title">▸ 权限与运维面板</div>
|
||
<div class="card-desc">只读展示 · 排查问题时展开(角色 / 表权限 / 列权限 / 敏感字段 / 运行指标 / 运维任务)</div>
|
||
</div><span class="badge b-slate">默认折叠</span></div>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="tpl-admin">
|
||
<div class="grid g2">
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">系统管理</div><div class="card-desc">NL2SQL 配置、知识库与数据管理</div></div></div>
|
||
<div class="card-body">
|
||
<div class="between" style="padding:12px 0;border-bottom:1px solid var(--border-soft)">
|
||
<div><div class="b sm">知识库文档</div>
|
||
<div class="xs muted">上传、索引与检索公司产品资料</div></div>
|
||
<button class="btn btn-sm" onclick="navTo('screen-knowledge')">前往</button></div>
|
||
<div class="between" style="padding:12px 0;border-bottom:1px solid var(--border-soft)">
|
||
<div><div class="b sm">NL2SQL 配置</div>
|
||
<div class="xs muted">运行配置、语义层与权限(只读)</div></div>
|
||
<button class="btn btn-sm" onclick="navSection('nl2sql')">前往</button></div>
|
||
<div class="between" style="padding:12px 0">
|
||
<div><div class="b sm">系统健康检查</div>
|
||
<div class="xs muted">/health 与 /health/ready</div></div>
|
||
<span class="badge b-green">正常</span></div>
|
||
</div></div>
|
||
<div class="card"><div class="card-head"><div>
|
||
<div class="card-title">权限说明</div><div class="card-desc">当前账号可见范围由服务端控制</div></div></div>
|
||
<div class="card-body">
|
||
<div class="kv">
|
||
<div class="k">账号</div><div>admin / 管理员</div>
|
||
<div class="k">工作台</div><div>全部模块</div>
|
||
<div class="k">NL2SQL</div><div>配置管理 + 查询</div>
|
||
<div class="k">知识库</div><div>读写</div>
|
||
<div class="k">客户数据</div><div>按表 / 列 / 敏感字段三级授权</div>
|
||
</div>
|
||
<div class="note mt16">前端仅做菜单显隐与提示,真正的鉴权在服务端 require_advisor / require_risk_officer。</div>
|
||
</div></div>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="tpl-denied">
|
||
<div class="card"><div class="card-body" style="padding:56px 24px;text-align:center">
|
||
<div style="font-size:36px">🔒</div>
|
||
<div class="lg b mt12">无权限访问「风险预警」</div>
|
||
<div class="sm muted mt8">该模块需要风控权限,当前账号不具备操作权限。</div>
|
||
<div class="xs faint mt8">你仍可使用其它有权限的模块。</div>
|
||
</div></div>
|
||
</template>
|
||
|
||
<script>
|
||
const ADMIN_SECTIONS = [
|
||
{id:"overview", zone:"概览", label:"工作台概览", icon:"▦", title:"工作台概览", sub:"按当前角色展示核心经营指标"},
|
||
{id:"todos", zone:"投顾作业", label:"我的待办", icon:"✓", title:"我的待办", sub:"投顾待办事项的处理与跟踪"},
|
||
{id:"customers", zone:"投顾作业", label:"客户管理", icon:"👥", title:"客户管理", sub:"名下客户、持仓、诊断与签约状态"},
|
||
{id:"drafts", zone:"投顾作业", label:"投顾草稿", icon:"✎", title:"投顾草稿", sub:"建议草稿的编辑、发送与废弃"},
|
||
{id:"visits", zone:"投顾作业", label:"客户回访", icon:"☎", title:"客户回访", sub:"回访留痕与合规话术参考"},
|
||
{id:"risk", zone:"风控处置", label:"风险预警", icon:"⚠", title:"风险预警", sub:"待处置预警与人工处置通道", lock:true},
|
||
{id:"workorders",zone:"风控处置", label:"工单处理", icon:"📄", title:"工单处理", sub:"认领、提交审核与复核闭环", lock:true},
|
||
{id:"funds", zone:"数据工具", label:"基金数据", icon:"🗄", title:"基金数据", sub:"白名单产品与净值数据"},
|
||
{id:"nl2sql", zone:"数据工具", label:"智能问数", icon:"✦", title:"智能问数", sub:"自然语言查数,自动生成 SQL 并返回结果"},
|
||
{id:"admin", zone:"系统管理", label:"系统管理", icon:"⚙", title:"系统管理", sub:"NL2SQL 配置、知识库与数据管理", lock:true},
|
||
{id:"denied", zone:"状态示例", label:"无权限态", icon:"🚫", title:"风险预警", sub:"无权限时的降级展示"},
|
||
];
|
||
/** 不显示客户/游客智能助手的页面 */
|
||
const NO_CLIENT_AGENT = ["screen-admin", "screen-knowledge"];
|
||
|
||
const nav = document.getElementById("side-nav");
|
||
let zone = "";
|
||
ADMIN_SECTIONS.forEach(s=>{
|
||
if (s.zone !== zone){ zone = s.zone;
|
||
const p = document.createElement("div"); p.className="zone-label"; p.textContent=zone; nav.appendChild(p); }
|
||
const b = document.createElement("button");
|
||
b.className="nav-item"; b.dataset.id=s.id;
|
||
b.innerHTML = `<span class="ico">${s.icon}</span>${s.label}${s.lock?'<span class="lock">无权限</span>':''}`;
|
||
b.onclick = ()=>go(s.id);
|
||
nav.appendChild(b);
|
||
});
|
||
|
||
/** 切到某个独立页面(官网 / 基金列表 / 登录 / 知识库管理 等) */
|
||
function navTo(id){ showScreen(id); window.scrollTo({top:0}); }
|
||
/** 切回后台工作台并定位到某个分区 */
|
||
function navSection(id){ showScreen("screen-admin"); go(id); window.scrollTo({top:0}); }
|
||
|
||
function showScreen(id){
|
||
document.querySelectorAll(".screen").forEach(s=>s.classList.toggle("active", s.id===id));
|
||
/* 客户/游客助手挂在全局 layout,后台不显示(后台用投顾助手悬浮球) */
|
||
document.getElementById("client-agent").style.display =
|
||
NO_CLIENT_AGENT.includes(id) ? "none" : "block";
|
||
closeCA();
|
||
}
|
||
/* 打开面板 = 先建会话(session/create),拿到会话号后才允许对话 */
|
||
function openCA(){
|
||
const w = document.getElementById("ca-win");
|
||
if (w.style.display !== "none") return;
|
||
w.style.display = "flex";
|
||
const state = document.getElementById("ca-state");
|
||
document.getElementById("ca-connecting").style.display = "block";
|
||
document.getElementById("ca-messages").style.display = "none";
|
||
state.textContent = "正在建立会话...";
|
||
clearTimeout(window.__caTimer);
|
||
window.__caTimer = setTimeout(()=>{
|
||
state.textContent = "会话 #" + Math.random().toString(16).slice(2,8) + " · 已接入您的账户数据";
|
||
document.getElementById("ca-connecting").style.display = "none";
|
||
document.getElementById("ca-messages").style.display = "block";
|
||
}, 700);
|
||
}
|
||
/* 关闭面板 = 结束会话(session/end),丢弃服务端上下文 */
|
||
function closeCA(){
|
||
const w = document.getElementById("ca-win");
|
||
if (w.style.display === "none") return;
|
||
w.style.display = "none";
|
||
clearTimeout(window.__caTimer);
|
||
document.getElementById("ca-state").textContent = "会话已结束";
|
||
}
|
||
function toggleCA(){
|
||
const w = document.getElementById("ca-win");
|
||
w.style.display === "none" ? openCA() : closeCA();
|
||
}
|
||
function go(id){
|
||
const sec = ADMIN_SECTIONS.find(s=>s.id===id);
|
||
showScreen("screen-admin");
|
||
document.getElementById("pg-title").textContent = sec.title;
|
||
document.getElementById("pg-sub").textContent = sec.sub;
|
||
document.querySelectorAll(".nav-item").forEach(n=>n.classList.toggle("active", n.dataset.id===id));
|
||
const tpl = document.getElementById("tpl-"+id);
|
||
document.getElementById("admin-content").innerHTML = tpl ? tpl.innerHTML : "";
|
||
window.scrollTo({top:0});
|
||
}
|
||
function openModal(){ document.getElementById("cust-modal").style.display="block"; }
|
||
function closeModal(){ document.getElementById("cust-modal").style.display="none"; }
|
||
document.getElementById("fab").onclick = ()=>{ document.getElementById("drawer-root").style.display="block"; };
|
||
function closeDrawer(){ document.getElementById("drawer-root").style.display="none"; }
|
||
function endSession(){
|
||
document.getElementById("dw-status").textContent = "已关闭,新会话已开启";
|
||
}
|
||
function switchDw(btn, id){
|
||
btn.parentElement.querySelectorAll("button").forEach(b=>b.classList.remove("on"));
|
||
btn.classList.add("on");
|
||
document.getElementById("dw-chat").style.display = id==="dw-chat"?"block":"none";
|
||
document.getElementById("dw-drafts").style.display = id==="dw-drafts"?"block":"none";
|
||
}
|
||
go("overview");
|
||
</script>
|
||
</body>
|
||
</html>
|