|
|
@@ -707,7 +707,14 @@ body.bk-solo .bk-host { width: 1440px; }
|
|
|
.cv .tab .cnt { margin-left: 6px; font-size: 12px; color: var(--t3); font-family: var(--font-num); }
|
|
|
.cv .tab.on .cnt { color: var(--c-link); }
|
|
|
|
|
|
-/* ---------- 首页工作台 ---------- */
|
|
|
+/* ---------- 首页现状版(2026-10-08 按现状内容重画,默认):只有一张问候卡;工作台版的样式在下一段,整套保留 ---------- */
|
|
|
+.hm-now { display: flex; flex-direction: column; gap: 12px; }
|
|
|
+.hm-hello { display: flex; align-items: center; gap: 20px; padding: 24px 28px; }
|
|
|
+.hm-hello-t { min-width: 0; }
|
|
|
+.hm-hello-t b { display: block; font-size: 20px; line-height: 28px; font-weight: 600; color: var(--t1); }
|
|
|
+.hm-hello-t p { margin: 6px 0 0; font-size: 14px; line-height: 22px; color: var(--t2); }
|
|
|
+
|
|
|
+/* ---------- 首页工作台(保留,变体 work) ---------- */
|
|
|
.hm { display: grid; grid-template-columns: minmax(0, 1fr) 352px; grid-template-rows: auto minmax(0, 1fr); gap: 12px; height: 100%; min-height: 0; }
|
|
|
.hm .card-hd .sub b { color: var(--t1); font-weight: 600; }
|
|
|
.hm .card-hd .sub b.hot { color: var(--c-link); }
|
|
|
@@ -876,23 +883,6 @@ body.bk-solo .bk-host { width: 1440px; }
|
|
|
.lg-c-left { position: absolute; left: 72px; top: 0; bottom: 0; width: 440px; display: flex; flex-direction: column; justify-content: center; gap: 32px; }
|
|
|
.lg-c-sys { display: block; font-size: 32px; line-height: 40px; font-weight: 600; color: var(--t1); letter-spacing: .02em; }
|
|
|
.lg-c-ver { margin-top: 4px; font-size: 12px; color: var(--t3); font-family: var(--font-num); }
|
|
|
-.lg-mods-t { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; font-size: 12px; color: var(--t3); }
|
|
|
-.lg-mods-t span { font-family: var(--font-num); }
|
|
|
-.lg-chips { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
|
-.lg-chip { display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border: 1px solid var(--prim-bd); border-radius: var(--r-tag); background: var(--prim-bg); color: var(--prim-t); font-size: 12px; white-space: nowrap; }
|
|
|
-.lg-ents { display: flex; flex-direction: column; gap: 8px; }
|
|
|
-.lg-ents-t { display: flex; align-items: center; gap: 8px; margin-bottom: 2px; font-size: 12px; color: var(--t3); }
|
|
|
-.lg-ents-t span { color: var(--t4); }
|
|
|
-.lg-ent { display: flex; align-items: center; gap: 12px; height: 60px; padding: 0 14px; border-radius: var(--r-card); background: var(--bg-card); border: var(--card-bd); box-shadow: var(--card-sh); color: var(--t1); cursor: pointer; transition: box-shadow .15s, transform .15s; }
|
|
|
-.lg-ent:hover { box-shadow: var(--sh-pop); transform: translateX(2px); }
|
|
|
-.lg-ent.on { cursor: default; outline: 1.5px solid var(--c-primary); outline-offset: -1.5px; }
|
|
|
-.lg-ent.on:hover { box-shadow: var(--card-sh); transform: none; }
|
|
|
-.lg-ent-n { display: flex; flex-direction: column; min-width: 0; line-height: 18px; }
|
|
|
-.lg-ent-n b { font-size: 14px; font-weight: 600; white-space: nowrap; }
|
|
|
-.lg-ent-n small { font-size: 12px; color: var(--t3); white-space: nowrap; }
|
|
|
-.lg-ent-go { margin-left: auto; display: inline-flex; align-items: center; gap: 2px; font-size: 13px; color: var(--c-link); white-space: nowrap; }
|
|
|
-.lg-ent-go .ic { width: 14px; height: 14px; }
|
|
|
-.lg-ent.on .lg-ent-go { color: var(--t3); }
|
|
|
/* 右侧浮卡 */
|
|
|
.lg-card { position: relative; width: 440px; padding: 36px 40px 32px; background: var(--bg-dlg); border-radius: var(--r-dlg); box-shadow: var(--sh-dlg); color: var(--t1); }
|
|
|
.lg-card .lg-brand { margin-bottom: 24px; }
|
|
|
@@ -1596,7 +1586,10 @@ window.SPEC_DATA2 = (function () {
|
|
|
],
|
|
|
};
|
|
|
|
|
|
- /* ---------- 首页(工作台):数字为示例,上线需要后端提供按状态汇总的接口。字段全部来自各端列表页 ---------- */
|
|
|
+ /* ---------- 首页 ----------
|
|
|
+ * 现状版(默认):只有一张问候卡,文案取自改版前的 views/dashboard/index.vue(问候语按时段 + 昵称;天气那句是模板写死的)。
|
|
|
+ * 工作台版 home:2026-10-08 本稿首版的首页设计,整套保留(变体 work),等首页汇总接口完善后再切回去;数字为示例,字段全部来自各端列表页 */
|
|
|
+ const homeNow = { greeting: "下午好,系统管理员!", weather: "今日天气晴朗,气温在15℃至25℃之间,东南风。" };
|
|
|
const home = {
|
|
|
issue: {
|
|
|
noun: "订单", dictKey: "note_order_status", listKey: "共赢票据管理/订单管理",
|
|
|
@@ -1631,14 +1624,10 @@ window.SPEC_DATA2 = (function () {
|
|
|
pwdForm: [{ label: "原密码", type: "password", req: true, ph: "请输入原密码" }, { label: "新密码", type: "password", req: true, ph: "6~20 位,至少两类字符" }, { label: "确认密码", type: "password", req: true, ph: "请再次输入新密码" }],
|
|
|
};
|
|
|
|
|
|
- /* ---------- 登录页(views/login):文案取自 lang/package/zh-cn.json;三端入口的一句话职责取自各端菜单 ---------- */
|
|
|
+ /* ---------- 登录页(views/login):文案取自 lang/package/zh-cn.json ---------- */
|
|
|
const login = {
|
|
|
copy: { username: "用户名", password: "密码", captcha: "验证码", remember: "记住我", forget: "忘记密码?", login: "登 录", reset: "重置密码", email: "邮箱", enterEmail: "请输入您的邮箱地址", sendReset: "发送重置链接", think: "想起密码?", back: "返回登录", theme: "主题切换", lang: "语言切换" },
|
|
|
version: "v3.4.2",
|
|
|
- // 三端入口卡片上的系统名和一句话职责
|
|
|
- nodes: { sales: ["销售管理系统", "投资者 · 订单 · 资金"], issue: ["发行管理系统", "票据 · 对冲 · 清算"], trs: ["TRS管理系统", "通道 · 委托 · 风控"] },
|
|
|
- // 登录页上列出的本系统业务模块:取各端菜单的业务分组(运维与配置类不列)
|
|
|
- opsGroups: ["系统设置", "机构系统设置", "常驻工作进程", "计划任务中心", "通知和告警管理"],
|
|
|
};
|
|
|
|
|
|
/* ---------- 反馈类:文案尽量取自真实代码(command-result.ts、各页 ElMessageBox / el-empty / el-alert) ---------- */
|
|
|
@@ -1676,14 +1665,14 @@ window.SPEC_DATA2 = (function () {
|
|
|
{ key: "spec", group: "总览", title: "规范摘要", kind: "spec", sub: "选型结果、尺寸、颜色、12 类对应关系、待确认清单" },
|
|
|
{ key: "kit", group: "总览", title: "组件总览", kind: "kit", sub: "两套皮肤(浅色 F、深色 B 石墨灰)下的全部基础组件,顶栏「皮肤」切换",
|
|
|
src: "分项选型 · 基础视觉 F(晴空蓝 #3C8CFF、文字链接 #1668DC)", points: ["颜色、文字、按钮、输入控件、状态标签、表格、提示、键值、弹窗外观,全部读同一份令牌;换肤只换令牌取值,尺寸、圆角、字体、排布不变。", "深色皮肤 B 石墨灰(10-08 从三版候选里选定):中性灰、扁平、1px 描边、无渐变无投影,主按钮实心蓝,状态标签只描边。对照见「规范摘要 → 换肤」。", "主按钮是左上浅、右下深的渐变,下面有一层淡蓝投影;页面底色是蓝白渐变,右上角一团浅蓝光晕;卡片白底、14px 圆角、淡蓝投影。", "表头很淡的蓝底,行高 40px;状态是无描边的浅色圆角标签;中性色带蓝调;数字用 Inter。"], todo: ["深色默认跟随系统还是手动切换;切换后的选择记在账号还是本机。"] },
|
|
|
- { key: "login", group: "全局", title: "登录页", kind: "login", sub: "分项选型登录页 C:右侧浮卡·全幅底图 + 左侧三端入口", variants: [["login", "登录"], ["reset", "重置密码"]], ends: true,
|
|
|
+ { key: "login", group: "全局", title: "登录页", kind: "login", sub: "分项选型登录页 C:右侧浮卡·全幅底图;左侧只有系统名和版本号", variants: [["login", "登录"], ["reset", "重置密码"]], ends: true,
|
|
|
src: "分项选型 · 登录页 C(2026-10-07 选定);views/login/index.vue、components/Login.vue、ResetPwd.vue;文案取自 lang/package/zh-cn.json",
|
|
|
- points: ["整页是视觉 F 的蓝白渐变底色,叠一层很淡的网格、几条主色曲线和右上角两个圆(内联 SVG,不用图片文件)。", "左侧一列(垂直居中,和卡片对齐):系统名 32px 和版本号、本系统业务模块(取自本系统菜单的业务分组,不列运维配置类)、「三端系统」三张入口卡片——当前系统标「当前」,另外两个点一下跳到对应系统的登录页。", "右侧 440px 浮卡,离右边 96px:小标志+系统名、「登录」标题、用户名/密码/验证码标签在上,输入框按代码现状 40px(登录页 size=large),其余页面仍是 32px;记住我、忘记密码;登录按钮通宽。", "宽屏:左列和浮卡成一组,组宽按 1440 基准(左 72、列 440、间距 392、卡 440、右 96),窗口更宽时整组居中,两块间距保持 392px 不变;底图和右上角按钮仍铺满整屏。窗口放不下左列(1100 以下)时只留卡片居中。(2026-10-08 定)", "右上角的主题按钮可以点:在浅色和最近看过的深色皮肤之间来回切(月亮/太阳);语言切换只保留入口;「注册」组件代码里存在但登录页没有入口,本稿不画。", "画面里可以点:三端入口(切到那个系统)、忘记密码/返回登录、换一张验证码、显示密码、记住我。"],
|
|
|
- todo: ["验证码图片是示意;登录页的控件要不要也统一成 32px。", "三端入口是跳到各系统各自的登录地址,三个地址要放在前端配置里维护;跳转时要不要带上当前输入的用户名。", "三端登录页只换系统名、标志、模块清单和入口里的高亮,其余完全一样——是否需要三端不同的底色做区分(口径是三端完全一致,本稿没有区分)。"] },
|
|
|
- { key: "home", group: "全局", title: "整体框架 · 首页", kind: "shell", active: "首页", ends: true, sub: "框架 A 经典三段 + 首页工作台",
|
|
|
- src: "layouts/(侧栏、标签页、菜单搜索、通知、用户菜单、交易日);views/dashboard/index.vue 现状只有问候语",
|
|
|
- points: ["框架 A:浅色侧栏 220px 通高(白底微透、深灰字、选中项淡蓝块,标志是晴空蓝渐变;深色皮肤下是近黑侧栏),收起后是 64px 图标栏,悬停弹出二级菜单。白色顶栏 52px:折叠按钮、面包屑|营业日与两个 A 股交易日、菜单搜索、全屏、通知、用户(界面设置收进用户菜单)。标签页栏 38px,卡片式页签,右键有刷新、关闭其它、关闭所有。内容区四周留 16px。", "首页改成工作台:今日订单按状态的数字(需要处理的高亮)、待人工处理的订单表、快捷入口(取自本端菜单)。问候语保留,天气那句是模板里写死的假内容,去掉。", "三端同一结构:发行端看订单,销售端看订单,TRS 看委托;数字是示例,上线要后端提供按状态汇总的接口。", "面包屑和标签页都显示页面名(这是框架 A 的特点);页面内不再放标题。"],
|
|
|
- todo: ["「界面尺寸」切换已去掉(密度已锁定);「界面设置」收进用户菜单——请确认。", "首页的数字口径(今日=营业日当天?)和表格条数(本稿取前 6 条)。"] },
|
|
|
+ points: ["整页是视觉 F 的蓝白渐变底色,叠一层很淡的网格、几条主色曲线和右上角两个圆(内联 SVG,不用图片文件)。", "左侧一列(垂直居中,和卡片对齐):只有系统名 32px 和版本号。原来的「本系统业务模块」标签和「三端系统」三张入口卡片按 2026-10-08 的意见去掉,三端登录页之间不再互相链接。", "右侧 440px 浮卡,离右边 96px:小标志+系统名、「登录」标题、用户名/密码/验证码标签在上,输入框按代码现状 40px(登录页 size=large),其余页面仍是 32px;记住我、忘记密码;登录按钮通宽。", "宽屏:左列和浮卡成一组,组宽按 1440 基准(左 72、列 440、间距 392、卡 440、右 96),窗口更宽时整组居中,两块间距保持 392px 不变;底图和右上角按钮仍铺满整屏。窗口放不下左列(1100 以下)时只留卡片居中。(2026-10-08 定)", "右上角的主题按钮可以点:在浅色和最近看过的深色皮肤之间来回切(月亮/太阳);语言切换只保留入口;「注册」组件代码里存在但登录页没有入口,本稿不画。", "画面里可以点:忘记密码/返回登录、换一张验证码、显示密码、记住我。"],
|
|
|
+ todo: ["验证码图片是示意;登录页的控件要不要也统一成 32px。", "三端登录页只换系统名和标志,其余完全一样——是否需要三端不同的底色做区分(口径是三端完全一致,本稿没有区分)。"] },
|
|
|
+ { key: "home", group: "全局", title: "整体框架 · 首页", kind: "shell", active: "首页", ends: true, sub: "框架 A 经典三段 + 首页现状(问候卡);工作台版保留在变体里", variants: [["now", "现状首页"], ["work", "工作台(保留,待接口)"]],
|
|
|
+ src: "框架:分项选型框架 A。首页现状版:改版前的 views/dashboard/index.vue(头像、按时段的问候语 + 昵称、天气一句);工作台版:本稿 2026-10-08 首版的首页设计,整套保留",
|
|
|
+ points: ["框架 A:浅色侧栏 220px 通高(白底微透、深灰字、选中项淡蓝块,标志是晴空蓝渐变;深色皮肤下是近黑侧栏),收起后是 64px 图标栏,悬停弹出二级菜单。白色顶栏 52px:折叠按钮、面包屑|营业日与两个 A 股交易日、菜单搜索、全屏、通知、用户(界面设置收进用户菜单)。标签页栏 38px,卡片式页签,右键有刷新、关闭其它、关闭所有。内容区四周留 16px。", "首页按 2026-10-08 的现状内容重画(默认看到的就是这版):内容区只有一张问候卡——左边大头像(和个人中心同一个 88px 头像),右边问候语(按时段「上午好/下午好/晚上好」+ 昵称)和天气那句;卡片之下留空,不放数字、表格和入口。", "「工作台」版(今日订单按状态的数字、待人工处理的订单表、快捷入口)整套保留,在上方「工作台(保留,待接口)」里看;等首页汇总接口完善后再切回去。两版的侧栏、顶栏、标签页完全相同,只换内容区。", "三端同一结构:现状版三端只差系统名和菜单;工作台版发行端看订单,销售端看订单,TRS 看委托,数字是示例。", "面包屑和标签页都显示页面名(这是框架 A 的特点);页面内不再放标题。"],
|
|
|
+ todo: ["「界面尺寸」切换已去掉(密度已锁定);「界面设置」收进用户菜单——请确认。", "现状首页的天气那句是模板里写死的假内容,本稿按现状保留;要不要去掉,或换成营业日/交易日的一句提示——请确认。", "工作台版的数字口径(今日=营业日当天?)和表格条数(本稿取前 6 条),等接口完善、切回工作台时一并确认。"] },
|
|
|
{ key: "list", group: "全局", title: "列表页 · 搜索区 + 表格", kind: "shell", active: "home", ends: true, sub: "发行端订单管理、销售端订单管理、TRS 委托查询",
|
|
|
src: "views/issue/order、views/sales/order、views/trs/order;SearchForm 组件(固定 3 列、超过 2 行折叠)",
|
|
|
points: ["搜索区一张卡片:标签在左、3 列等宽,标签宽度按本页最长标签统一;条件超过两行时折叠,「展开」在按钮组末尾。查找是主按钮,重置、导出是次按钮。", "表格一张卡片:勾选列和操作列固定在左;表头 40px、行高 40px;数字右对齐;状态用字典标签;空值显示「--」。", "勾选后表格顶部出现浅蓝选择条,显示已选条数和「清空」。分页固定在卡片底部,左边是总数。", "点「详情」打开订单详情抽屉(抽屉 E);在抽屉里点「补录」会叠开补录弹窗(弹窗 J)。"],
|
|
|
@@ -1734,7 +1723,7 @@ window.SPEC_DATA2 = (function () {
|
|
|
todo: [] },
|
|
|
];
|
|
|
|
|
|
- return { dict, noteDetail, clearing, risk, home, profile, login, feedback, pages };
|
|
|
+ return { dict, noteDetail, clearing, risk, homeNow, home, profile, login, feedback, pages };
|
|
|
})();
|
|
|
|
|
|
</script>
|
|
|
@@ -2514,8 +2503,15 @@ window.UI = (function () {
|
|
|
const U = window.UI;
|
|
|
const { D, D2: P, T, esc, ic, CHECK, EMPTY, tag, ENDS, kv, tableHTML, btn, item, dgWrap, dgCard, sfDialog, stepper, closeX, btnCancel, drCard } = U;
|
|
|
|
|
|
- /* ================= 首页(工作台) ================= */
|
|
|
- U.pageRenderers.__home = function (st) {
|
|
|
+ /* ================= 首页 =================
|
|
|
+ * 现状版(默认):按 2026-10-08 的现状内容只画一张问候卡(头像、问候语、天气一句),卡片之下留空。
|
|
|
+ * 工作台版:本稿首版的首页设计整套保留(st.variant === "work",设计稿上方的变体按钮切),等首页汇总接口完善后切回去。
|
|
|
+ */
|
|
|
+ function homeNowHTML() {
|
|
|
+ const N = P.homeNow;
|
|
|
+ return `<div class="hm-now"><div class="card hm-hello"><span class="ava big">A</span><div class="hm-hello-t"><b>${esc(N.greeting)}</b><p>${esc(N.weather)}</p></div></div></div>`;
|
|
|
+ }
|
|
|
+ function homeWorkHTML(st) {
|
|
|
const e = ENDS[st.end];
|
|
|
const H = P.home[st.end];
|
|
|
const total = H.status.reduce((n, s) => n + s[1], 0);
|
|
|
@@ -2537,7 +2533,8 @@ window.UI = (function () {
|
|
|
};
|
|
|
const tblCard = `<div class="card tb-card hm-tb"><div class="tb-bar"><span class="ttl">${H.manualTitle}</span><span class="t3" style="font-size:12px">${H.manualSub};按下单时间倒序,最多 6 条</span><span class="sp"></span><span class="btn txt" data-act="leaf" data-k="${H.listKey}">查看全部${ic("right")}</span></div>${tableHTML(cols, rows, { cell, keep: "hm-tbl", empty: "没有需要处理的" + H.noun })}</div>`;
|
|
|
return `<div class="hm">${statusCard}${scCard}${tblCard}</div>`;
|
|
|
- };
|
|
|
+ }
|
|
|
+ U.pageRenderers.__home = (st) => (st.variant === "work" ? homeWorkHTML(st) : homeNowHTML(st));
|
|
|
|
|
|
/* ================= 页内标签页 ================= */
|
|
|
// 页面级(ptabs)或卡片内(tabs)的页签条;选中项记在 st.tab[g]
|
|
|
@@ -2719,7 +2716,7 @@ window.UI = (function () {
|
|
|
U.pageRenderers["401"] = (st) => errHTML("401", st);
|
|
|
|
|
|
/* ================= 登录页:分项选型登录页 C「右侧浮卡·全幅底图」(2026-10-07 选定) =================
|
|
|
- * 整页是视觉 F 的渐变底色叠一层淡线条装饰;左侧一列:系统名、本系统业务模块、三端入口;右侧 440px 浮卡放表单。
|
|
|
+ * 整页是视觉 F 的渐变底色叠一层淡线条装饰;左侧一列只有系统名和版本号(10-08 去掉了业务模块和三端入口);右侧 440px 浮卡放表单。
|
|
|
* 画布规格 sp 上记临时状态:cap(验证码种子)、showPw、remember。
|
|
|
*/
|
|
|
const CAPCH = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
|
|
|
@@ -2742,11 +2739,8 @@ window.UI = (function () {
|
|
|
const L = P.login;
|
|
|
const c = L.copy;
|
|
|
const v = sp.v || "login";
|
|
|
- const groups = D.menus[end].map((g) => g[0]).filter((n) => !L.opsGroups.includes(n));
|
|
|
- const mods = `<div class="lg-mods"><div class="lg-mods-t">本系统业务模块<span>${groups.length}</span></div><div class="lg-chips">${groups.map((n) => `<span class="lg-chip">${esc(n)}</span>`).join("")}</div></div>`;
|
|
|
- // 三端入口:当前系统标「当前」,另外两个点一下跳到对应系统的登录页(本稿里是切到那个系统)
|
|
|
- const ents = `<div class="lg-ents"><div class="lg-ents-t">三端系统<span>点击前往对应系统的登录页</span></div>${Object.entries(ENDS).map(([x, ex]) => `<div class="lg-ent ${x === end ? "on" : ""}" data-act="sys" data-end="${x}"${x === end ? "" : ` title="跳到${esc(ex.sys)}的登录地址"`}><span class="lg-logo sm">${ex.logo}</span><span class="lg-ent-n"><b>${esc(ex.sys)}</b><small>${L.nodes[x][1]}</small></span><span class="lg-ent-go">${x === end ? "当前系统" : `前往登录${ic("right")}`}</span></div>`).join("")}</div>`;
|
|
|
- const left = `<div class="lg-c-left"><div><b class="lg-c-sys">${esc(e.sys)}</b><div class="lg-c-ver">${L.version}</div></div>${mods}${ents}</div>`;
|
|
|
+ // 左侧一列只放系统名和版本号(2026-10-08 去掉了「本系统业务模块」和「三端系统」入口)
|
|
|
+ const left = `<div class="lg-c-left"><div><b class="lg-c-sys">${esc(e.sys)}</b><div class="lg-c-ver">${L.version}</div></div></div>`;
|
|
|
const field = (label, inner) => `<div class="lg-fi"><label>${label}</label>${inner}</div>`;
|
|
|
const pw = sp.showPw ? "123456" : "••••••";
|
|
|
let form;
|
|
|
@@ -2887,6 +2881,7 @@ window.UI = (function () {
|
|
|
const st = U.newCanvasState(end, p.key === "err" ? v : p.active);
|
|
|
st.ovls = [...(p.ovl || [])];
|
|
|
if (p.key === "profile" && v === "pwd") st.ovls = ["pwd"];
|
|
|
+ if (p.key === "home") st.variant = v; // 首页:now 现状问候卡(默认)/work 工作台(保留,待接口)
|
|
|
CS[key] = st;
|
|
|
}
|
|
|
return CS[key];
|
|
|
@@ -2914,15 +2909,6 @@ window.UI = (function () {
|
|
|
writeHash(); renderAll();
|
|
|
return false;
|
|
|
};
|
|
|
- // 登录页左侧三端入口:点了切到那个系统(相当于跳到对应系统的登录页),同步上方「看哪一端」
|
|
|
- U.extraActions.sys = (host, sp, el) => {
|
|
|
- if (el.dataset.end === curEnd(page())) return false;
|
|
|
- S.end = el.dataset.end;
|
|
|
- if (!$("#bkBar")) { sp.end = S.end; return true; } // 单独模式:没有外壳,直接改画布
|
|
|
- writeHash(); renderBar(); renderStage();
|
|
|
- if (!$("#bkFull").hidden) renderFull();
|
|
|
- return false;
|
|
|
- };
|
|
|
|
|
|
/* ---------------- 规范摘要 ---------------- */
|
|
|
function specHTML() {
|
|
|
@@ -2931,7 +2917,7 @@ window.UI = (function () {
|
|
|
["整体框架", "A", "经典三段", "浅色侧栏 220px 通高(白底微透、深灰字,深色皮肤下近黑);白色顶栏 52px 放折叠按钮、面包屑、营业日与两个 A 股交易日、菜单搜索、全屏、通知、用户;下面 38px 卡片式标签页;内容区四周留 16px。", "home"],
|
|
|
["弹窗", "J", "卡片分区", "长表单 920px:内容区灰底,每一组一张白卡片,标签在上、双列,卡片标题右侧显示已填/必填。短表单改按 10-08 给的下单弹窗布局:标签在左、单列,顶部高亮信息块,底部灰色结果块(补录 640px、修改密码 480px、TRS 下单 880px 加右侧行情栏)。", "dlg-fill"],
|
|
|
["抽屉", "E", "卡片+描述表", "宽 1040px;头部是编号、状态标签和一行关键信息;灰底上排卡片,键值用带边框的描述表(灰底标签格,一行 3 对);汇总做成数字卡片。", "drawer"],
|
|
|
- ["登录页", "C", "右侧浮卡·全幅底图", "整页蓝白渐变底色叠淡线条装饰;表单卡片 440px 靠右浮着,输入框按代码现状 40px;左侧一列是系统名、本系统业务模块和三张三端入口卡片,点入口跳到对应系统的登录页。(10-07 追加的分项选型类别,选 C。)", "login"],
|
|
|
+ ["登录页", "C", "右侧浮卡·全幅底图", "整页蓝白渐变底色叠淡线条装饰;表单卡片 440px 靠右浮着,输入框按代码现状 40px;左侧只放系统名和版本号(10-08 去掉了本系统业务模块和三端入口)。(10-07 追加的分项选型类别,选 C。)", "login"],
|
|
|
["深色皮肤", "B", "石墨灰", "中性暗灰不偏蓝;扁平,卡片靠 1px 描边分区,没有渐变、光晕和投影;主按钮实心蓝;状态标签只描边不铺底。尺寸、圆角、字体、排布和浅色完全相同,只换令牌取值。(10-08 三版深色候选里选 B;A 夜空蓝、C 极光玻璃未选。)", "kit"],
|
|
|
];
|
|
|
const dims = [
|
|
|
@@ -2941,15 +2927,15 @@ window.UI = (function () {
|
|
|
["侧栏与顶栏", "侧栏 220px 浅色(深色皮肤下近黑),收起后 64px;顶栏 52px;标签页栏 38px;内容区四周留 16px,卡片间距 12px"], ["页签", "框架标签页 28px 卡片式,当前页带主色圆点;页面级页签 40px 无底色;卡片内页签 48px 在卡片标题栏里;抽屉内页签 42px"],
|
|
|
["弹窗宽度", "短表单 640px、长表单 920px、确认框 420px、修改密码 480px、TRS 下单 880px"], ["抽屉宽度", "1040px(订单详情、票据详情)"],
|
|
|
["搜索区", "一张卡片,3 列等宽,标签在左、按本页最长标签统一宽度;超过 2 行折叠"], ["描述表", "标签格 116px 灰底,一行 3 对;标签长的分组一行 2 对(标签格 190px);单列 132px"],
|
|
|
- ["不放的东西", "页面标题(面包屑和标签页已有页面名)、天气问候、界面尺寸切换"],
|
|
|
+ ["不放的东西", "页面标题(面包屑和标签页已有页面名)、界面尺寸切换;首页现状版按现状保留了天气那句(待确认),工作台版不放"],
|
|
|
];
|
|
|
const swatches = T.palette.map(([g, items]) => `<div class="sp-grp"><h4>${g}</h4><div class="sp-sw">${items.map(([l, k]) => `<div class="sp-swc"><i style="background:${T.tokens[k]}"></i><b>${l}</b><span>${T.tokens[k]}</span></div>`).join("")}</div></div>`).join("");
|
|
|
const map = [
|
|
|
- ["基础视觉", "F 晴空渐变", ["kit"]], ["整体框架", "A 经典三段", ["home", "list"]], ["登录页", "C 右侧浮卡·全幅底图 + 左侧三端入口", ["login"]],
|
|
|
+ ["基础视觉", "F 晴空渐变", ["kit"]], ["整体框架", "A 经典三段", ["home", "list"]], ["登录页", "C 右侧浮卡·全幅底图;左侧只有系统名和版本号", ["login"]],
|
|
|
["搜索区", "3 列标签在左,可折叠;无标签时只放占位", ["list", "tabs"]], ["表格", "固定列、选择条、分页、空状态、加载态", ["list", "clearing", "drawer-note", "feedback"]],
|
|
|
["弹窗", "长表单 J 卡片分区;短表单标签在左+信息块+结果块(10-08 布局);TRS 下单同一布局加行情栏", ["dlg-fill", "dlg-investor", "dlg-trs", "profile"]], ["抽屉", "E 卡片+描述表", ["drawer", "drawer-note"]],
|
|
|
["详情展示", "带边框描述表 + 数字卡片", ["drawer", "drawer-note", "profile", "dlg-trs"]], ["页内标签页", "页面级/卡片内/抽屉内三种位置", ["tabs", "clearing", "drawer-note", "dlg-trs"]],
|
|
|
- ["反馈类", "确认框、提示、通知、空状态、加载、结果、校验", ["confirm", "feedback"]], ["首页", "工作台:状态数字、待处理表、快捷入口", ["home"]], ["其他页", "个人中心、404 / 401", ["profile", "err"]],
|
|
|
+ ["反馈类", "确认框、提示、通知、空状态、加载、结果、校验", ["confirm", "feedback"]], ["首页", "现状:一张问候卡(头像、问候语、天气一句);工作台版(状态数字、待处理表、快捷入口)整套保留在变体里,等首页接口完善后切回", ["home"]], ["其他页", "个人中心、404 / 401", ["profile", "err"]],
|
|
|
];
|
|
|
const go = (k) => `<a class="sp-go" href="#p/${k}">${esc(byKey[k].title)}</a>`;
|
|
|
const themes = T.order.map((k) => T.all[k]);
|