@@ -0,0 +1,94 @@
|
||||
// 「教师时长」页独立预览入口 —— 仅用于本地视觉/交互验收,不参与业务构建
|
||||
//
|
||||
// 为什么需要它:
|
||||
// 业务 dev(8079) 打开设置页会经后端 CAS 过滤器跳 SSO,无登录态的自动化浏览器
|
||||
// 拿不到页面,导致「改完只能靠静态检查」。这里用mock 服务提供数据、独立 vite
|
||||
// 配置单独起实例,从而在无登录态下真实渲染 + 交互 + 截图。
|
||||
//
|
||||
// 用法(三条命令,两个终端):
|
||||
// node preview-ut/mock-server.mjs # 终端 1:mock 数据 8109
|
||||
// npx vite --config preview.vite.config.ts# 终端 2:预览服务 8099
|
||||
// 打开 http://localhost:8099/preview-ut.html
|
||||
//
|
||||
// 截图(无头 Edge,Windows):
|
||||
// msedge --headless=new --disable-gpu --hide-scrollbars --window-size=1500,880 \
|
||||
// --virtual-time-budget=16000 --screenshot=out.png http://localhost:8099/preview-ut.html
|
||||
import { createApp } from "vue";
|
||||
import ViewUIPlus from "view-ui-plus";
|
||||
import "view-ui-plus/dist/styles/viewuiplus.css";
|
||||
import "@/assets/styles/main.scss";
|
||||
import "@/assets/styles/layout.css";
|
||||
import "@/assets/styles/icons.css";
|
||||
import "virtual:svg-icons-register";
|
||||
import LeaveSetting from "@/views/leave/LeaveSetting.vue";
|
||||
|
||||
const app = createApp(LeaveSetting);
|
||||
app.use(ViewUIPlus);
|
||||
app.mount("#app");
|
||||
|
||||
/** 自动验收脚本:?probe=1 教师时长 / ?probe=flow 流程管理,结果写入 document.title 供 --dump-dom 读取 */
|
||||
const PROBE = new URLSearchParams(location.search).get("probe");
|
||||
|
||||
// 按 ?tab= 切换 tab(flow=流程管理 / 其他值按文案匹配),默认「教师时长」,便于截图核对
|
||||
setTimeout(() => {
|
||||
const want = new URLSearchParams(location.search).get("tab");
|
||||
const label = !want || want === "usertime" ? "教师时长" : want === "flow" ? "流程管理" : want;
|
||||
document.querySelectorAll(".sett-tabs .ivu-tabs-tab").forEach((t) => {
|
||||
if ((t.textContent || "").includes(label)) (t as HTMLElement).click();
|
||||
});
|
||||
const host = document.getElementById("app");
|
||||
if (host) {
|
||||
host.style.padding = "16px 20px 28px";
|
||||
host.style.minHeight = "100vh";
|
||||
host.style.boxSizing = "border-box";
|
||||
}
|
||||
}, 500);
|
||||
|
||||
if (PROBE === "flow") {
|
||||
// 流程管理自动验收:点第 4 行(通知流程,mock 默认「未启用」)的启用绑定开关,
|
||||
// 等 loadFlowManage 刷新后核对开关是否翻为选中态(链路:Switch → Enable 接口 → mock → List 刷新)。
|
||||
setTimeout(() => {
|
||||
const sw = document.querySelectorAll(".flow-table tbody tr")[3]?.querySelector(".ivu-switch");
|
||||
sw?.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
setTimeout(() => {
|
||||
const rows2 = document.querySelectorAll(".flow-table tbody tr");
|
||||
const sw2 = rows2[3]?.querySelector(".ivu-switch");
|
||||
document.title = [
|
||||
"flowProbe",
|
||||
"switches=" + document.querySelectorAll(".flow-table .ivu-switch").length,
|
||||
"enabledChecked=" + (sw2?.classList.contains("ivu-switch-checked") ? 1 : 0),
|
||||
].join(" | ");
|
||||
}, 1800);
|
||||
}, 1600);
|
||||
}
|
||||
|
||||
if (PROBE && PROBE !== "flow") {
|
||||
// 自动验收:点 +4 / +1 / -1,核对高亮行、调整后预览、底部统计、提交按钮启用态。
|
||||
// 注意:必须读原始数据源(userTimes)而非 DOM——view-ui-plus Table 传���cell 的
|
||||
// row 是深拷贝副本,DOM 上的值仅用于视觉,不反映真实状态。
|
||||
setTimeout(() => {
|
||||
const rows = document.querySelectorAll("tbody tr");
|
||||
const btnsOf = (r: Element) => Array.from(r.querySelectorAll(".q-btn"));
|
||||
const click = (i: number, b: number) => {
|
||||
const r = rows[i];
|
||||
const btn = r && btnsOf(r)[b];
|
||||
btn?.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
};
|
||||
click(0, 1); // 王雅静 +4
|
||||
click(1, 0); // 李国栋 +1
|
||||
click(2, 2); // 张明远 -1
|
||||
|
||||
setTimeout(() => {
|
||||
const q = (s: string) => Array.from(document.querySelectorAll(s)).map((e) => e.textContent).join(",");
|
||||
const foot = document.querySelector(".usertime-footer");
|
||||
document.title = [
|
||||
"editedRows=" + document.querySelectorAll("tr.row-edited").length,
|
||||
"pf=[" + q(".pf-num") + "]",
|
||||
"delta=[" + q(".pf-delta") + "]",
|
||||
"resetLinks=" + document.querySelectorAll(".act-link.reset").length,
|
||||
"submitDisabled=" + foot?.querySelector(".ivu-btn-primary")?.hasAttribute("disabled"),
|
||||
"footer=" + (foot?.textContent || "").replace(/\s+/g, " ").trim().slice(0, 80),
|
||||
].join(" | ");
|
||||
}, 1000);
|
||||
}, 1600);
|
||||
}
|
||||
Reference in New Issue
Block a user