|
|
@@ -129,6 +129,49 @@
|
|
|
startCarousel();
|
|
|
}
|
|
|
|
|
|
+ var demoOn = false;
|
|
|
+
|
|
|
+ function buildDemoData() {
|
|
|
+ var now = new Date();
|
|
|
+ function timeText(minutesAgo) {
|
|
|
+ var d = new Date(now.getTime() - minutesAgo * 60000);
|
|
|
+ return d.getFullYear() + "-" + pad(d.getMonth() + 1) + "-" + pad(d.getDate()) +
|
|
|
+ " " + pad(d.getHours()) + ":" + pad(d.getMinutes()) + ":" + pad(d.getSeconds());
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ summary: { pending: 6, repairing: 3, todayDone: 18, todayFail: 2 },
|
|
|
+ list: [
|
|
|
+ { sn: "SN20261014001", oprno: "OP080", itemTitle: "外观划伤", typeText: "外观", remark: "左侧钣金轻微划痕", state: "1", stateText: "待返修", createBy: "张三", createDate: timeText(35) },
|
|
|
+ { sn: "SN20261014002", oprno: "OP120", itemTitle: "螺丝松动", typeText: "装配", remark: "固定螺丝未拧紧", state: "1", stateText: "待返修", createBy: "李四", createDate: timeText(52) },
|
|
|
+ { sn: "SN20261014003", oprno: "OP150", itemTitle: "尺寸超差", typeText: "尺寸", remark: "孔位偏差 0.3mm", state: "2", stateText: "待检查", createBy: "王五", createDate: timeText(78) },
|
|
|
+ { sn: "SN20261014004", oprno: "OP060", itemTitle: "焊接气孔", typeText: "焊接", remark: "焊缝局部气孔", state: "1", stateText: "待返修", createBy: "赵六", createDate: timeText(95) },
|
|
|
+ { sn: "SN20261014005", oprno: "OP200", itemTitle: "标签错贴", typeText: "标识", remark: "型号标签贴反", state: "2", stateText: "待检查", createBy: "钱七", createDate: timeText(110) },
|
|
|
+ { sn: "SN20261014006", oprno: "OP090", itemTitle: "镀层脱落", typeText: "表面", remark: "边角镀层局部脱落", state: "1", stateText: "待返修", createBy: "孙八", createDate: timeText(128) },
|
|
|
+ { sn: "SN20261014007", oprno: "OP170", itemTitle: "功能异常", typeText: "功能", remark: "开关通断不稳定", state: "2", stateText: "待检查", createBy: "周九", createDate: timeText(145) },
|
|
|
+ { sn: "SN20261014008", oprno: "OP040", itemTitle: "毛刺残留", typeText: "外观", remark: "冲裁边毛刺未清理", state: "1", stateText: "待返修", createBy: "吴十", createDate: timeText(160) },
|
|
|
+ { sn: "SN20261014009", oprno: "OP210", itemTitle: "密封不良", typeText: "装配", remark: "密封圈安装不到位", state: "1", stateText: "待返修", createBy: "郑一", createDate: timeText(175) }
|
|
|
+ ]
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ function syncDemoButton() {
|
|
|
+ $("#demoToggle").toggleClass("is-on", demoOn).text(demoOn ? "退出演示" : "演示模式");
|
|
|
+ }
|
|
|
+
|
|
|
+ function setDemo(on) {
|
|
|
+ demoOn = !!on;
|
|
|
+ syncDemoButton();
|
|
|
+ if (state.refreshTimer) {
|
|
|
+ clearTimeout(state.refreshTimer);
|
|
|
+ state.refreshTimer = null;
|
|
|
+ }
|
|
|
+ if (demoOn) {
|
|
|
+ applyData(buildDemoData());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ loadData();
|
|
|
+ }
|
|
|
+
|
|
|
function showLoadError(message) {
|
|
|
renderSummary({});
|
|
|
state.items = [];
|
|
|
@@ -141,6 +184,9 @@
|
|
|
}
|
|
|
|
|
|
function loadData() {
|
|
|
+ if (demoOn) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
var apiUrl = config.apiUrl;
|
|
|
if (!apiUrl) {
|
|
|
showLoadError("未配置数据接口");
|
|
|
@@ -153,6 +199,9 @@
|
|
|
dataType: "json",
|
|
|
timeout: 20000
|
|
|
}).done(function (res) {
|
|
|
+ if (demoOn) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (res && (res.result === "true" || res.result === true) && res.data) {
|
|
|
applyData(res.data);
|
|
|
scheduleRefresh(config.refreshInterval || 60000);
|
|
|
@@ -161,6 +210,9 @@
|
|
|
scheduleRefresh(5000);
|
|
|
}
|
|
|
}).fail(function (xhr) {
|
|
|
+ if (demoOn) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
var msg = "数据加载失败";
|
|
|
if (xhr && xhr.status === 401) {
|
|
|
msg = "接口未授权,请检查匿名访问配置";
|
|
|
@@ -210,7 +262,11 @@
|
|
|
$("#screenTitle").text(config.title || "返修区看板");
|
|
|
updateClock();
|
|
|
setInterval(updateClock, 1000);
|
|
|
- loadData();
|
|
|
+ $("#demoToggle").on("click", function () {
|
|
|
+ setDemo(!demoOn);
|
|
|
+ });
|
|
|
+ var query = window.location.search || "";
|
|
|
+ setDemo(/(?:^|[?&])demo=1(?:&|$)/.test(query));
|
|
|
fitScreen();
|
|
|
$(window).on("resize", fitScreen);
|
|
|
}
|