编辑页面

修改后将从当前时间重新计算过期时间
`], part: ["配件信息", "维护配件基础资料、库存和供货商", `
`], claim: ["索赔订单", "客户、车辆、供货商与索赔商品信息", `
索赔单与车辆档案共用 VIN 主键,选择或输入 VIN 后会同步车牌、车型、客户和电话。
${vehicleFields("cl")}
`], vehicle: ["车辆档案", "首次进站创建,后续按 VIN 自动带出", `
`], claimSettings: ["索赔设置", "配置索赔业务规则、VIN 建档规则、导入导出模板与数据字典", `

业务规则

索赔级
首次进站强制创建车辆档案

维修、保养、索赔任一业务录入 VIN 时触发。

低库存自动预警

库存低于安全线时提醒仓库管理员与采购。

索赔订单提交前校验图片凭证

缺少故障照片、配件照片或维修记录时不允许提交。

导出文件加水印

客户资料、VIN、手机号等敏感字段导出时留痕。

数据字典

配件订单状态待派工 / 维修中 / 待结算 / 已完工
配件类型原厂件 / 品牌件 / 再制造件
索赔状态待提交 / 待审核 / 已通过 / 已驳回
车辆业务类型维修 / 保养 / 索赔
`], customer: ["用户信息", "留存用户资料并绑定车辆档案", `
用户与车辆通过 VIN 建立绑定关系;录入 VIN 后可同步车辆基础档案,并在配件订单、保养、索赔场景中复用。
${vehicleFields("cu")}
`], repairManual: ["维修手册", "维护诊断、拆装和质检标准", `
`], maintenanceManual: ["保养手册", "维护保养周期、项目和材料清单", `
`] }; const config = map[type] || map.workorder; document.getElementById("drawerTitle").textContent = config[0]; document.getElementById("drawerSub").textContent = config[1]; document.getElementById("drawerBody").innerHTML = config[2]; document.getElementById("drawerMask").classList.add("open"); refreshIcons(); ["wo", "cl", "cu"].forEach(prefix => { const input = document.getElementById(`${prefix}vinInput`); const vehicle = input ? findVehicleByVin(input.value) : null; if (vehicle) fillVehicleFields(prefix, vehicle); }); } document.addEventListener("click", (event) => { const navButton = event.target.closest("[data-view]"); if (navButton) switchView(navButton.dataset.view); const drawerButton = event.target.closest("[data-open-drawer]"); if (drawerButton) openDrawer(drawerButton.dataset.openDrawer); if (event.target.closest("[data-close-drawer]")) { document.getElementById("drawerMask").classList.remove("open"); } const save = event.target.closest("#saveDrawer"); if (save) { const drawerTitle = document.getElementById("drawerTitle").textContent; document.getElementById("drawerMask").classList.remove("open"); showToast(drawerTitle === "索赔设置" ? "索赔设置已保存" : "保存成功,列表已更新为演示状态"); } const toastButton = event.target.closest("[data-toast]"); if (toastButton) showToast(toastButton.dataset.toast); const toggle = event.target.closest("[data-toggle]"); if (toggle) { toggle.classList.toggle("on"); showToast(toggle.classList.contains("on") ? "规则已启用" : "规则已停用"); } const exportButton = event.target.closest("[data-export]"); if (exportButton) showToast(`${exportButton.dataset.export} 已生成导出文件`); const importButton = event.target.closest("[data-import]"); if (importButton) showToast(`${importButton.dataset.import} 导入模板已打开`); if (event.target.closest("[data-batch-delete]")) showToast("已删除选中的索赔订单"); const deleteButton = event.target.closest("[data-delete]"); if (deleteButton) showToast("已删除当前演示记录"); const showVehicleButton = event.target.closest("[data-show-vehicle]"); if (showVehicleButton) showVehicle(vehicles[Number(showVehicleButton.dataset.showVehicle)]); const fillVinButton = event.target.closest("[data-fill-vin]"); if (fillVinButton) { const prefix = fillVinButton.dataset.fillVin; const vin = document.getElementById(`${prefix}vinInput`).value; const v = findVehicleByVin(vin); if (v) { fillVehicleFields(prefix, v); showToast(`已带出 ${v.owner} 的车辆和客户信息`); } else { showToast("VIN 不存在,将按首次进站流程建档"); } } }); document.querySelectorAll("[data-search]").forEach(button => { button.addEventListener("click", () => { const scope = button.dataset.search; const filters = [...document.querySelectorAll(`[data-filter-scope="${scope}"] [data-filter]`)] .map(el => String(el.value).trim().toLowerCase()) .filter(Boolean); const rowTargets = { workorders: "workorderRows", parts: "partRows", claims: "claimRows", customers: "customerRows", repairManuals: "repairManualRows", maintenanceManuals: "maintenanceManualRows" }; const rows = document.querySelectorAll(`#${rowTargets[scope]} tr`); let count = 0; rows.forEach(row => { const hay = row.dataset.search.toLowerCase(); const ok = filters.every(filter => hay.includes(filter)); row.style.display = ok ? "" : "none"; if (ok) count += 1; }); showToast(`查询完成,共 ${count} 条匹配记录`); }); }); document.getElementById("globalVinBtn").addEventListener("click", () => { lookupVin(document.getElementById("globalVin").value, { openIfMissing: true }); }); document.getElementById("globalVin").addEventListener("keydown", (event) => { if (event.key === "Enter") lookupVin(event.currentTarget.value, { openIfMissing: true }); }); document.querySelectorAll(".tabs button").forEach(button => { button.addEventListener("click", () => { button.parentElement.querySelectorAll("button").forEach(el => el.classList.remove("active")); button.classList.add("active"); }); }); renderTables(); refreshIcons();
取消
访问码: btsciix9