一、项目概述
系统定位 :面向雄华盛世定制生产的 ERP+MES 一体化系统,覆盖「客户订单 → 产品交期计划 → 订单生成 → 工艺流程 → 生产安排 → 生产报工 → 品质检验 → 不良处置 → 计件工资 → 产品出货」全链路。项目基于既有 ERP 雏形(已部署于 xhwork.top)二次开发,2026-08-06 起进入密集迭代期。
技术架构
后端 :PHP 8.2 + MySQL(PDO),单入口 index.php 按页面分发,action.php 统一处理写操作,autoPatchDB() 自动数据库迁移(db_patch_version 版本追踪)
前端 :Bootstrap 5 + 原生JS,无重前端框架,浏览器直接访问
双端 :PC端(pages/ 目录,53个页面)+ 移动端PDA(pda/ 目录,28个页面),两端业务规则保持一致,PDA 与移动端为同一概念
权限体系 :角色-模块权限(读/写),叠加部门管辖(班组长/主管/生产体系扩展 expandDeptScope)、人事专属页(isHR)、维修部只读、委外采购岗等特殊规则
部署环境 :linux+宝塔 已绑定域名:xhwork.top 生产部署,PHP 8.2.20 + OPcache(约2秒自动生效)
组织与角色
生产相关部门固定为 9 个:冲床、打蛋器、弹簧机、抛砂、碰焊滚焊、数控部、成品、搅拌杆、委外 (2026-08-25 起全站下拉统一口径)。组织架构以刘总为顶层,下设行政部(陆佩仪)、生产部(唐海钢/柯绍财)、品质部、仓储部(李强/张勇共管)、维修部等。
审批链(2026-08-24 确认):普通员工提交 → 班组长一审 → 主管二审 → 终审(刘总);班组长提交则一审主管、二审跳级终审;主管提交一审即终审。
二、发展时间线(全量)
第一阶段 · 起步与基建(08-06 ~ 08-08)项目初始安装包xhwork-install.zip(25M)衍生而来,安装打包体系、BOM/工艺流程基础打磨、质检模块扩充
2026-08-06
优化 工艺流程导图新增对齐选项(居中/左/右/分散),后改用 grid 等宽列槽布局确保同列节点中心严格共线,选择经 localStorage 持久化。
修复 BOM管理「编排」按钮无反应:补 bootstrap.Modal.show() 调用。
部署 首次打包安装版 xhwork-install.zip(53.67MB,119项)。因小皮面板 open_basedir 限制及 ZipArchive/shell_exec 被禁用,采用纯PHP脚本手写 ZIP32 二进制格式打包;含 install.php 安装器、.env 模板,装好后需删除 install.php,默认账号 admin/admin123。
新增 质检模块「首件确认」「样品管理」两个页面(含样品库位绑定)。
2026-08-07
优化 导航子菜单去图标统一小圆点前缀;BOM编辑弹窗多项UI修复。
新增 BOM「同步生成草稿」(弹窗内多选产品 + 未编排列表批量同步),后端 bom_sync / bom_batch_sync 接口(版本号自动升级、事务处理);后精简为弹窗内仅保留「同步生成草稿」一个同步入口。
修复 动态表单缺失 CSRF 隐藏域导致「安全验证失败」——后续全站 CSRF 体系的起点。
2026-08-08
部署 安装包数据核查与「带全量数据打包」方案确立 (背景:08-07 刚完成 xhwork-install.zip 53.8MB 首版安装包并验证安装流程,用户随即追问「现有数据是否已打包进安装文件」):
核查结论 :install/dump.sql 仅含全部 40+ 张表结构 + 少量初始数据(admin 用户、2个角色、2个示例产品),物料、BOM、客户、订单等业务数据全部为空 ;安装后仪表盘实测显示「产品总数 2、物料总数 0、有效 BOM 0」,证实业务数据未进包。
方案 :用 mysqldump 将 xhwork 数据库完整导出(含数据行)→ 替换 install/dump.sql → 走 _pack.php / _makezip.php 重新打包;安装包安装时导入该 SQL 即可还原全部业务数据。
影响 :该方案直接促成 08-11 首个「含全量数据完整安装包」(51张表、302行数据),并延续到 08-13/08-14「带完整真实数据安装包」(399行)的系列打包实践。
新增 PDA「访问PC端」免登录跳转按钮 (解决痛点:此前 PDA 点「访问PC端」会落到 PC 登录页,必须重新输入账号密码):
入口 :pda/includes/header.php 在导航栏「菜单」与「退出」按钮之间新增 bi-display 图标按钮,全部 PDA 页面顶部常驻可见。
实现 :pda.php 顶部新增 goto_pc 动作分支,经四道关卡后跳转 index.php——① 未登录踢回 pda_login.php;② canCrossPlatform('pda','pc') 跨端访问开关校验(未开放则拦截);③ 登录态兼容校验:当前 session_id 与 users.last_session_id 或 last_pda_session_id 任一匹配即放行 (即 PC/PDA 任一端登录都可用),账号非 active 或全不匹配则销毁会话并带 expired=1 踢回登录页;④ 核心同步语句 UPDATE users SET last_session_id=当前sid——把 PC 端会话指纹改写为当前 PDA 会话,PC 端 requireLogin() 校验直接通过。
关键技术认知 :系统 PDA 与 PC 使用不同的 session 指纹字段(last_pda_session_id / last_session_id)实现双端单会话互踢;「同步 last_session_id 为当前 session_id」即实现跨端免登录,此机制成为后续双端互通的基础设施。
后续演变 :该按钮在 08-22 移动端导航栏统一改版中保留并归入右上「访问PC端→用户名→返回」按钮组,成为移动端导航的长期标配。
当日为周六,工作记录集中于晚间短时段(约18:20起);次日晚间起进入高强度的样品管理、订单生成、车间总览等大批量功能开发(见 08-09 节,共 32 项话题)。08-08 的两项工作虽少,但均为基建性质:前者打通「数据随包走」的部署能力,后者打通「双端会话互通」的跨端能力。
第二阶段 · 核心业务大建设(08-09)订单规则确立、车间管理、仪表盘、人员测试数据
2026-08-09
新增 PDA「跳转PC端」按钮(session 同步免登录直达)。
新增 样品管理增强:自动生成样品草稿、借出/归还、分页、库位筛选。
新增 物料库存页「最后盘点时间」列(三色徽章)。
新增 产品图册页面(product_gallery.php)。
规则 订单号生成规则 :产品编码后四位 + 交期月日(后于 08-21 升级为后四位+月份+编号,保证交期/数量变动时单号稳定)。
规则 产品-客户绑定 :订单页选产品自动填客户(仅空时填充);客户管理删除 code/level 字段;新增客户产品关联页。
新增 订单批量审核(单条+批量,仅待确认可审)。
新增 订单管理 ↔ 订单交期数据互通 :订单管理新建的订单在交期页面按产品+交期分组累加,以绿色只读格子合并显示(mergeExistOrders),统计栏仅计新增数量。
优化 订单交期页面交互成型:点击产品名称选中整行(浅蓝高亮)、「删除选中行」按钮、本月/月周期互斥、表头仅显示日期(MM/DD)和星期。
新增 车间管理页面(workshops 表)及楼层字段。
新增 仪表盘拆分为「进度总览」(客户轮播+月周期交付进度表)与「车间总览」(楼层轮播/展开)。
修复 全站报错大扫除:products 表不存在的 spec/sort_order 列引发多页SQL报错,统一清除。
决策 删除旧版生产安排页面;确立报工规则:产品有订单即可报工,无派工单概念,「有单就做」 。
数据 批量创建 9 个生产组(A~I)90 名员工测试数据 + 对应账号(a001 等,密码 xh2026)。
优化 「在制品追踪」更名「产品进度」 ;进度总览页有订单数量的格子可点击直达该产品进度页(带产品筛选徽章)。
优化 订单交期日期格子改为可直接输入数字(inputmode=numeric,移动端弹数字键盘);删除「清空数量/复制上月」按钮,顶部仅保留新增产品行/删除选中行/生成订单草稿三按钮。
优化 进度总览页面配色统一为 steel 深蓝(#2e4a7d),客户chips/指示点/进度条不再随客户变色。
第三阶段 · 模式定型:去工单化与车间数字化(08-10 ~ 08-11)确立按订单生产、孪生大屏、流水线工艺、完整数据打包
2026-08-10
决策 删除全部工单功能 (work_orders 等6张表、相关页面与统计,含生产看板页、在制品追踪页):系统采用按订单生产模式,报工直接关联订单。此为系统架构最大的一次定型决策。
新增 系统设置「菜单管理」:按9个分组勾选自定义左侧导航。
新增 车间平面2D孪生画布:设备/工位卡片四种状态渲染、20px栅格拖拽布局、ws_layout_save 持久化。
新增 「新增楼层」功能(floor_list 存 system_settings,支持任意数量楼层)。
新增 全局主题 :5套预设主题(浅色清爽/深蓝科技/赛博朋克/深邃工业/海洋青蓝)+ 自定义7项颜色,后迁移至「个人设置」(个人主题优先、管理员可设全站默认)。
新增 BOM用量支持分数输入 (如纸箱 1/48):quantity_text 存原文,quantity 精度升至 decimal(15,8)。
修复 工艺流程导图箭头偏移:改用 offsetLeft/offsetTop 统一锚点计算。
数据 从线上 xhwork.top 同步物料14条、产品2条、BOM明细28条(cURL 抓取方案,脚本 sync_remote.php)。
新增 个人设置页面 (profile.php):账号信息/修改密码/界面风格三个Tab;users表新增 phone、ui_theme 字段;个人主题优先于全局默认,管理员可「应用为全站默认/恢复全局默认」。
修复 工单删除配套清扫:order_issue / ajax.php / report_share 改按订单状态判定「在生产」,v14补丁删6张工单表并清理各业务表 work_order_id 列及角色权限残留。
优化 车间导航定型:固定显示1-6楼大卡片(隐藏车间列表)、顺排/倒排图标按钮切换;导航公共组件(隐藏按钮/顶栏分隔线/主内容区)改CSS变量,跟随个人主题配色。
2026-08-11
修复 车间总览跨浏览器兼容(Firefox/Safari 不支持 body.zoom、backdrop-filter 前缀)。
新增 7种新设备类型(封边机/缩管机/滚焊机/碰焊机/打磨钻台/超声波清洗机/攻牙机)及SVG动画。
新增 流水线工艺 :工艺流程支持起点/终点标记,lines_def JSON 存储;「物料足够且为流水线起点」触发可生产提示(ProdControl::executableLines)。
修复 系统BUG一批:工时翻倍(重复累加)、订单状态枚举漏单、DFS 工序环死循环(visited 检查)。
部署 首个「含全量数据完整安装包」 xhwork-full-install-20260811_131843.zip(54.14MB,112个文件,51张表、302行数据)——落实 08-08 确立的「mysqldump 全量导出替换 dump.sql」方案:
包内结构 :源码目录(pages/、includes/、pda/ 等)+ 核心入口(action.php、index.php 等)+ 上传资源(uploads/ 图片与视频)+ 数据库全量导出文件 install/dump_full_with_data.sql + 配置文件(.env、.user.ini);打包时排除临时脚本与旧 zip 包。
部署流程 :解压到 Web 根目录 → 修改 .env 数据库配置 → 导入 SQL → 访问 install.php 检查环境 → 默认账号登录。
当日两连打包 :因下午又产生新数据,14:25 再次重打 xhwork-full-install-20260811_142519.zip(51表、305行)。
同日另产出增量补丁包 xhwork_patch_20260811_062209.zip(仅 6 个文件:process_flow.php 起终点UI、action.php lines_def 保存、workshop_overview.php 导航修复与右栏升级等),供已部署环境「解压覆盖」式更新——自此形成「完整安装包 + 增量补丁包」双轨交付模式 。
安全议题 :默认密码 admin/admin123 的提示文字随后于 08-18 从登录页移除。
修复 孪生画布栅格双轨统一:显示栅格40×40px与拖拽吸附20px不一致,改CSS变量 --grid-size 联动数据库 grid_size 字段。
修复 远程同步脚本 sync_remote.php 6处问题(登录判定、价格含¥符号转0、缺 customer_id/series 字段等),修复后物料/产品/BOM 再次全量同步成功。
第四阶段 · 生产执行链路成型(08-12 ~ 08-13)安排人员、多报溢出、委外入库、人事三件套
2026-08-12
新增 安排人员功能 :新增生产主管角色(prod_supervisor);「可生产」标签改为「安排人员」按钮,班组长可从本班/其他班组安排,主管可安排全部(production_assignments 表)。
新增 报工可多报 :超订单量部分按交期升序自动溢出分配给同产品后续订单,全部已满则记为超产。
新增 委外入库 :委外工序按钮改「委外入库」,移动端生成草稿单(OO-日期-序号),PC端委外订单页补供应商/单价。
新增 车间导航「委外工厂」卡片(按供应商+工序聚合,紧急度闪烁)。
修复 未关联物料的工序不再误判「缺料」。
优化 车间总览多项视觉调整:KPI卡片点击筛选、紧急闪烁动画分档(0.85s~1.6s);订单卡片新增特急/紧急/在产/待产四状态KPI(4×2网格);可执行工序行显示工序号徽章(如 [S01] 下料)。
数据 独立数据库导出(「只补数据」交付形态出现) :动机是云上已部署代码、只差数据,避免每次重复配置。先复用 08-11 的 xhwork-full-install-20260811_142519.zip(51表305行),随后按用户「单独要数据库文件」的要求导出纯净 SQL 文件 xhwork_db_full_20260811.sql,并提供云服务器三种导入方案 (SSH 命令行 mysql 导入 / phpMyAdmin 网页导入 / Navicat 客户端导入);确认该 SQL 含全部本地数据(用户、物料、产品、BOM、工艺流程、订单),可直接导入云服务器还原。打包交付自此细分为「完整安装包(代码+数据)/ 独立SQL(仅数据)/ 增量补丁包(仅代码变更)」三种形态 ,按目标环境状态选用。
2026-08-13
数据 人员数据扩充至 180 人(J~R 组补齐);账号规则扩展 A011~E020 共90个。
命名 系统名称定名「雄华盛世生产管理系统 」,全站标题、登录页统一。
新增 人事三件套上线:社保管理 (入职+2月提醒购买、离职+1月停保)、劳动合同 (老员工+11月续签、新员工+N月签订)、返聘管理 (女55/男60岁阈值)独立页面。
新增 人事档案:工资卡字段、身份证自动算年龄/性别、表头排序筛选。
新增 交付计划页(原交付进度):修复7项表格BUG,新增导出/上传Excel(导出→改数量→上传预览→确认提交闭环)。
讨论 VMI交付模式(客户VMI仓→工厂仓→生产链路)方案讨论后暂缓实施。
修复 委外入库外键冲突:outsource_orders.supplier_id 改为允许 NULL(外键 ON DELETE SET NULL),移动端草稿不再强制供应商,由PC端委外订单页补录。
优化 车间总览UI一轮密集调整:「安排人员」按钮顶替「可生产」标签位置;KPI按钮顺序定版(总工序/可生产/生产中/缺料);日期时间卡片改三行右对齐布局;人员卡片仅统计在职(新增试用期分类,删除总档案数/离职/停用);恢复「品牌+5卡片+时钟」单行布局。
优化 人事档案响应式紧凑化:小分辨率(1366×768)下11张KPI卡片按5档断点压缩,最多折两行;交付计划页新增近7天/近半月周期按钮、列宽与sticky偏移调优。
第五阶段 · 人事体系与权限细化(08-14 ~ 08-15)组织数据、预备产品、订单进度页、外购总览
2026-08-14
数据 19名管理员建档开号(XH2001起,刘总XH1001),总人数199;后补建柯绍财等管理员账号。
新增 报工订单可见权限 :管理员/主管看全部,班组长看本班组可生产订单,员工仅本人可生产订单;班组长/主管可「无订单直接生产」(order_id=NULL,后于08-16删除)。
新增 预备产品 页面:无需订单即可生产的产品管理(is_prep 标记、四Tab、直接报工入口;后于08-16全局删除)。
规则 半成品归物料 :产品端禁止新增半成品类型,物料端新增半成品快速分类。
新增 订单进度页面 (order_progress.php):左右分栏(订单列表+工艺流程导图+阶段工序进度),后演进为「生产进度」核心页。
新增 用户管理页面(当日即废弃,08-17 重做为「账号管理」);角色管理批量处理常驻工具栏;删除「物料关联」页面(product_bom)。
规则 人事档案状态与考勤状态分离 :档案状态仅在职/试用期/离职申请中/停用/已离职,请假旷工属考勤。
修复 人事档案删除失效(外键约束+操作列sticky);批量删除/筛选全选一批修复。
新增 班组长可设置下属在职状态(personnel:write 定向下放)。
部署 「带完整真实数据安装包」定型 xhwork-full-install-20260813_135932.zip(54.38MB,51张表、399行数据)——直接导火索是用户明确批评「上次打包因缺少数据无法使用」 ,并强调必须包含人员、角色、订单、工艺流程等全部资料:
数据量演变 :302行(08-11午)→ 305行(08-11晚)→ 399行(本包) 。增量来自 08-13 的数据大建设:人事档案 180 行(含补齐的90名J-R组员工)、系统账号 94 行(含90员工账号 + 19名XH工号管理员:刘总XH1001、柯绍财等)、角色 14 行。
包内结构 :install/dump.sql(全量数据)+ includes/、pages/、pda/ 源码目录 + uploads/ 上传资源 + 配置文件;部署方式简化为「解压 → 访问 install.php 自动导入数据」。
一键重打包脚本 _pack_full_real.php :固化「导出最新数据库 → 替换 dump.sql → 白名单复制源码 → 纯PHP ZIP打包」全流程,此后每次想出带最新数据的完整包只需访问该脚本一次,打包实践从手工操作升级为脚本化流水线 。
历史意义 :本包是 08-06 以来打包体系的成熟形态,此后 08-16 的常规安装包、08-20 数据库备份(去GTID/tablespaces 保证跨服务器兼容)、08-22 全量SQL(64表)、08-24 整包部署均沿用/扩展此模式。
优化 全站操作反馈补齐:13处后端AJAX接口补 msg 成功提示、4处前端由「静默刷新」改为先弹提示再刷新(覆盖上传成功场景)。
新增 生产报工「展开所有订单」:下拉选择/卡片网格双模式切换,订单卡片含状态徽章与交期紧急度标签(逾期🔴/特急≤1天🔴/紧急≤3天🟡/正常🟢)。
决策 工艺流程对齐方式收敛为强制左对齐 ,删除对齐按钮组(对齐选项自08-06引入至此退役);订单进度页修复日期硬过滤(改软排序,所有订单必显示)与不存在字段导致的PDO异常。
优化 人事模块五页面(档案/合同/社保/返聘/考勤)统一条件筛选+批量处理+成功提示机制,修复考勤参数不匹配、返聘规则字段不一致等一批BUG。
2026-08-15
新增 产品图册(product_gallery)与产品图片体系 (响应「页面卡片需显示产品图片、点击进入图片详情」的需求):
图册页面 :产品以卡片形式展示产品图片 + 图片数量角标;点击卡片弹出模态框,展示该产品全部图片并内置上传通道(仅 products:write 权限用户可见);配套后端接口 product_gallery_list 返回指定产品的全部图片。
图片上传交互体系定型 :产品管理页、物料管理页统一验证通过——上传进度卡片、Toast 成功/失败提示、控制台无 JS 报错;上传成功后隐藏域 existing_image 自动填充新文件名,形成「进度显示 → Toast 反馈 → 隐藏域回填」的标准上传交互规范。
修复 人事档案删除功能连环修复 :
批量删除失效根因 :action.php 中删除逻辑引用了不存在的表和错误列名 ;修正为正确的关联清扫——attendance(按姓名)、attendance_records(按 employee_id)、work_reports(按 created_by)。
J001 疑难档案清除 :用户反馈 J001 档案删除不掉,要求直接从数据库清除;全库搜索 51 张表的文本列确认 J001 已无残留、personnel 表清零,界面仍显示系浏览器缓存旧页面,强制刷新即消失。全库文本列搜索这一排查手段后来成为疑难数据残留问题的标准打法。
优化 菜单管理从系统设置独立为「系统」下同级子菜单 (用户明确要求移出系统设置页):
新建独立页面 menu_management.php:PC 菜单分组复选框 + 全选/全不选 + CSRF token,权限复用 roles.write。
system_settings.php 移除菜单管理卡片,仅保留公司信息、访问规则、移动端功能开关三块。
header.php「系统」分组新增「菜单管理」子菜单;同步更新 index.php 路由白名单、config.php 权限映射、action.php 保存后重定向。
浏览器三连验证通过:系统设置页只剩三个卡片、侧边栏菜单管理与系统设置同级、?page=menu_management 正常渲染。
新增 外购总览(purchase_overview)页面 :采购+委外订单统一视图,置于「采购」分组下:
6 张 KPI 卡 :采购订单、采购待处理、委外订单、委外待处理、待退货、在途金额。
合并列表 :采购与委外订单统一展示、按日期倒序,支持类型/状态筛选与关键字搜索。
状态口径 :待处理 = 采购(草稿/已确认/待来料检验)+ 委外(草稿/已发送/加工中);待退货 = purchase_items.qc_status='fail' 的采购明细。
配套路由/权限(复用 purchase 权限域)/菜单三件套更新,6 文件 php -l 通过,浏览器实测页面、筛选、菜单均正常。
优化 返聘管理页面瘦身 :删除顶部「规则设置」大卡片(保存规则按钮+对话框)及对应 .settings-bar 样式;到期提醒天数改从 system_settings 读取(默认30天),KPI 卡片与剩余天数判断逻辑不受影响。
决策 「订单管理」页面保留决议 :用户明确该页面有存在必要,不删除。
第六阶段 · 界面打磨与BUG清扫(08-16 ~ 08-17)细节打磨、部门绑定、PHP8兼容
2026-08-16
架构 系列工艺双段式架构确立 (用户决策:「先制作系列工艺流程导图,再做具体产品导图,前段显示系列编号和系列名,后段组装阶段显示具体产品编号和产品名」):
数据层 :process_flows 表新增 flow_type / series_code / series_name / series_flow_id 字段,区分系列前段与产品末段;系列编号如 HB21 对应编码 917222。
页面层 :process_flow.php 拆分为「产品工艺 / 系列工艺 / 未编辑产品」三个Tab;产品工艺 = 系列前段(蓝色背景 rgba(76,154,255,.08),显示系列编号与名称)+ 产品末段(橙色背景,「↓ 组装阶段 ↓」灰色分隔),系列工序在产品工艺中只读锁定。
去重逻辑 :产品工艺合并视图自动去重(移除系列中已有的工序)——HB21 去重后显示 31 个系列工序 + 16 个产品专属工序。
配套文档 :整理 series-process-architecture.md,含架构ASCII图、数据库1:N关系、后端数据流、双段式导图6步渲染流程、三个使用场景。
当日配套修复 :页面查询引用 flow_type 列报错(新列仅在 action.php 保存时动态添加)→ 页面顶部补自动迁移代码;静态代码块未设 isSeriesMode 变量导致 0502 工序仍错误关联 0601 → 补设并按 flow_type 更新显示。
新增 采购退货(purchase_returns.php)/ 委外退货(outsource_returns.php) 两个页面,位于「采购」分组:
退货单号 PR-/OR-日期-序号自动生成;可关联采购单/委外单自动带出供应商、物料/产品、工序。
每页含 4 张统计卡片、状态流转、新建/编辑/删除、时间范围筛选条、列显隐切换。
涉及 config.php(两张新表及权限映射)、action.php(6个新接口)、index.php 路由、header.php 菜单、menu_management.php 菜单配置;权限复用采购模块。
后于08-17明确规则:仅品质部有权限新增退货单(新增时必填存放位置,退货日期由采购填写),委外退货同规则。
新增 全站表头交互统一规范 (起因:用户要求「所有表格的分类/系列/客户/状态表头为下拉可选菜单,编码/时间/数量表头为顺排倒排按钮」):
抽离 includes/table_header.php 公共组件;排序列表头 data-sort="true"(悬停↕图标,点击循环升序/降序/默认),筛选列 data-filter="true"(悬停▾图标,点击弹出下拉多选,菜单内嵌 th 的 div.th-filter-menu);data-sort-value / data-filter-value 处理显示值与实际值不一致。
先改造物料/产品等 12 个页面,用户审核补充要求(部门/职位列加筛选、合格率/日期列加排序、电话列不交互、车间管理表保持不变)后,四阶段推进至 26个页面27张表格 。
订单发货/订单发料/MRP 支持父子行分组(data-row-group + getGroups(),排序整组移动、筛选整组显隐,toggleShipDetail 改用 data-row-group 选择器)。
同步修掉 personnel.php 旧自定义排序迁移、materials.php 顶部筛选栏重复、订单发货排序后父子行断连等问题。
决策 删除「无订单直接报工」 :所有报工必须关联订单(work_reports.order_id 不再允许 NULL),移除 PC 端(work_report.php、action.php)与 PDA 端(pda/work_report.php、pda_action.php)的直接模式变量、按钮、分支与 direct 字段;当晚引发 PDA 报工页第501行缺 endif 语法错误(内层 if 未闭合),次日零点修复。
决策 预备产品功能全局删除 (08-14上线试用后弃用):删除独立页面 pending_products.php、产品页预备Tab/星标按钮/预备字段、product_toggle_prep 与 product_save_prep 接口、ensureProductPrepFields 函数、products 表 is_prep/prep_qty/prep_remark 三字段,全局搜索确认无残留。
决策 删除销售合同页面(contracts.php,含路由/权限/菜单全量清理)与产品详情页(product_detail.php);「交付计划」更名「交付进度」(header.php、menu_management.php、dashboard.php、delivery_progress.php 标题菜单弹窗全量替换)。
优化 作业指导书「扫码报工」文字后不再拼产品编码(条码图片与扫码功能不变);工艺流程导图每列居中对齐;跨阶段箭头由侧边通道绕行改为「源工序底边中点直线向下 → 目标工序垂直中心高度处左/右转 → 指向目标工序左/右边中点」的单直角拐弯(process_flow.php 与 order_progress.php 同步);删除工序「工时(h)/工时测试」列、testDataModal 弹窗、「人均产量/h」列及流程图工时标注(0.5h 等),原工时数据转隐藏字段保留。
新增 产品图册封面与排序体系 :product_images 表新增 sort_order 字段(上传新图=当前最大值+1,按 sort_order ASC, id ASC 排序);新增 product_gallery_sort 接口;卡片封面优先取图册第一张、无图回退产品主图、再无则占位图;弹窗缩略图 HTML5 拖动排序(主图不参与),上传/拖拽/删除后自动同步封面。
新增 产品库存流水明细页 (product_stock_detail.php):点击产品编码跳转独立页面(首次实现误用向下展开交互,按用户要求改为跳转),含返回按钮、产品信息卡、统计卡片、流水明细表;后按用户要求对齐物料流水明细(吴丽奥流水明细)的统一风格——顶部导航、信息卡、统计药丸、状态/类型徽章、空数据提示全套对齐。
修复 交付进度/订单交期 3月模式连环BUG(4项) :① 统计栏单位标签在3月模式仍显示「天」→ updateStats() 动态切换「天/月」;② extractDateFromHeader() 无法识别 YYYY-MM 月份表头;③ Excel 导出筛选与预览不一致 → 统一 visibleDateSet 检查;④ 周期切换后日粒度键与月粒度键不兼容 → togglePeriod() 自动聚合。另修 renderTable/exportExcel/printView 定义在 DOMContentLoaded 内导致全局不可见 → 挂载 window 对象(波及 delivery_progress.php、order_generate.php、dashboard.php 三文件)。
修复 嵌套 script/style 标签系列故障 :renderTableHeaderJS() 输出的 script 被放在其他 script 内导致 10 个页面(materials/aftersales/bom 等)JS 解析失败;renderTableHeaderCSS() 自带 style 标签嵌套在外层 style 内导致 CSS 明文显示(products.php 的 .code-link 失效为首个案例,08-17 波及 bom.php、process_flow.php,08-19 全量清扫)。
数据 人事档案测试数据全量清空重建(J001 疑难档案全库51表文本列排查 + personnel 清零 + attendance_records/work_reports/attendance 级联清理 + users.employee_id 置空,详见08-15节)。
规则 订单交期/交付进度周期体系改造 :周期按钮调整为五档单选(本月/近7天/近15天/近30天/近3月,默认本月),「近3月」按月份汇总显示4个月份列(列头年月、数据格为汇总输入格),已有订单自动按月合并(生成草稿取当月最后一天为交期),周期提示「YYYY-MM ~ YYYY-MM,共4个月(按月份汇总)」;删除表格所有格子内竖线(仅保留横向分隔线);buildDateCols()/renderTable()/exportExcel() 同步适配。
新增 订单交期/交付进度页新增客户/分类/系列三个下拉筛选 :联合过滤产品(订单交期页修复产品SQL缺失category字段),生成订单草稿自动带入客户;筛选行定版布局「周期按钮 | 客户▾ | 分类▾ | 系列▾ | ☐仅显示有数量的行」,交付进度后端 SQL 关联 customers 表取客户名。
决策 删除「客户产品」页面 (08-09上线试用后弃用,含 customer_products.php 等6个文件全量清理);产品管理页同步瘦身——分类/系列/客户表头改下拉、产品名称改纯文本加粗、删除类型列、状态列改可筛选、删除顶部状态按钮组、操作列仅留「修改」;页面标题「产品管理」→「产品列表」。
优化 样品管理列结构改为关联产品维度 :删除样品编号/名称/类型/数量/保管人/入库日期/有效期/状态列,保留关联产品编号/名称/分类/系列/客户列 + 库位/借出/批次号/操作;新增产品主图列(56×56缩略图,取product_images第一张,点击看大图);右侧面板改显示产品主图(PRODUCT IMAGE)。期间修复 samples.php 直接引用 products.customer_name 不存在字段 → LEFT JOIN customers 别名取值。
优化 物料分类对话框改下拉菜单(末项为新增分类按钮);物料库存页恢复全部列并在顶部加分类/供应商/状态筛选与排序按钮(后整合入表头);工艺流程产品编码点击后的图片放大为表格同宽、高度按比例自适应;dashboard 统计卡片改造——删除右上彩色图标竖条,改四行结构(标签/进度百分比/数值/描述),进度=各状态订单数/总订单数。
评审 MRP计算逻辑评审 :确认含订单需求聚合、在途采购量、递归BOM展开(损耗率/子装配)、净需求分级(库存/在途/安全库存);识别两盲区——未考虑已领料未产出物料(可从 material_issues 补)、未按工序阶段拆分需求时间线(当前为全BOM齐套,可从 work_reports + steps.linked_materials 补动态齐套)。
约定 本地部署访问地址固定为 http://localhost:88(浏览器实测统一入口)。
2026-08-17
新增 工序绑定部门 (工艺流程「委外」复选框升级):
表头新增「部门」下拉选择器(含「委外」「质检」特殊选项,保留高亮样式)与「绑定部门」批量按钮;后端新增 step_bound_depts 字段,从 bound_depts 派生 is_outsourced 状态;部门数据来源于 personnel 表,流程图节点元信息行同步显示部门标签。
安排权限三级规则 (get_flow_for_order 接口下发 can_assign 字段):admin 可指派所有工序;生产主管(prod_supervisor)可指派本部门+下属部门;班组长(team_leader)仅指派本部门;工序未绑定部门时所有人可指派,已完成工序不可指派。无权限工序卡片显示虚线边框+紫色「🔒 非本部门工序」标签。
架构 采购/委外「先质检后入库」流程定型(方案A) (用户确认:委外订单需报工,采购订单需入库):
采购订单 创建→确认→待入库(pending_qc)→质检合格→入库加库存→received;委外订单 创建→发送→加工中→待入库(pending_qc)→质检合格→完成入库→completed;purchase_orders.status 与 outsource_orders.status 新增 pending_qc 枚举值。
涉及 action.php、purchase.php、quality.php、outsource_orders.php、pda/quality.php、pda_action.php 等文件。
配套修复4项 :① 采购入库重复加库存(action.php 增量计算逻辑);② PDA 入库状态错误(purchase_receive.php 全部收完后状态设为 pending_qc);③ 委外「待检验」按钮错误(改链接到质检页);④ 委外重复加库存(pending_qc 状态检查)。
新增 报工审核页上线 (work_report_review.php):work_reports 表新增 review_status 等审核字段,新建 process_step_assignments 表记录工序安排;员工仅能报班组长安排的工序(表校验),班组长/生产主管两级审核流程;页面支持状态筛选和搜索。
新增 生产安排 / 生产报工子菜单 在生产分组下重建(复用生产进度权限域,当时菜单结构:车间管理、生产安排、生产进度、计件工资),并确立前置规则:特急订单可无视上道工序直接安排;普通订单需上阶段工序开报后(默认1小时,可配置)方可安排 ;生产安排页点击工序卡片效果为「安排人员」,只能安排自己的下属。
修复 PHP 8 严格模式下 PDO::query() 数组参数致命错误 (action.php:1524,保存工艺流程时触发):旧写法 query($sql, $params) 在 PHP8+ 不再接受数组作为第二参数,全量改为 prepare() + execute($params) 标准写法。
新增 账号管理页面(users.php) :用户列表(账号/姓名/手机号)、新增/编辑/删除、重置密码、启用/禁用、角色分配、排序筛选;自动生成首字母头像、当前账号与管理员标识、安全保护(不可删除管理员和当前登录账号)、需 roles 模块 write 权限。期间修复编辑账号「用户名不能为空」报错(username 输入框 disabled 导致不提交 → 改 readonly)。
新增 BOM 系列BOM 功能 (优先处理 HB21 系列):数据层先解除 bom_headers.product_id 外键约束、唯一索引调整为 (product_id, series, version)、product_id 默认值 0;页面新增系列BOM Tab(系列卡片列表、模板创建/编辑/删除、一键同步);已创建 HB21 系列BOM 模板(V1.0,active,含1个物料项),install.php 与 SQL dump 同步更新。
规则 系列工艺规则细化 :系列工艺最后工序不关联下工序(后续属产品级工艺)——最后阶段「关联工序」按钮显示蓝色→产品徽章,流程图下方绿色虚线框提示「后续关联产品工艺工序」;系列工序编号=系列编码+0101式工序号(HB21→9172220101 管开料);系列报工进度跨订单聚合 (原仅同订单内共享,改为同系列所有产品跨订单聚合同步;实测 HB21-A 订单A目标100件报50 + HB21-B 订单B目标200件报30,两者均显示系列累计80件);系列工序进度条蓝色背景显示「系列累计:X / 本单目标:Y 已 Z%」,不标记完成状态。
数据 真实数据切换 :为陆佩仪、唐海钢等 20 位真实员工建档(可删除性保障:删除时关闭外键检查并清理 7 张关联子表);删除 74 个 b/i 开头测试账号(b001-b010、i001-i003 等,删除前自动解除员工关联,保留当前登录用户与 c 开头账号);系列导图节点点击弹出作业指导书修复。
部署 宝塔/CentOS 部署支援与打包日 :
36 个页面全功能回归测试(表头交互、上传下载、审批流、权限控制),核心功能全部正常。
安装包 xhwork-install.zip(55.79MB,含数据库、代码、产品图片、作业指导书视频);期间曾出现打包缺文件(pages 少17个页面、pda/outsource.php 缺失)后补全重打;_release/XHWork_ERP.zip(27.2MB,142目录128文件,修复 create_zip.php 的 pack() 格式字符串问题)。
部署知识沉淀:uploads 目录权限 chmod -R 755 + chown -R www:www;迁移部署(已有数据库备份)无需运行 install.php,解压代码→建库→导入备份→改 .env 即可;全新安装才需运行 install.php。
确认云服务器数据库导出报错 pc_menus 表不存在的排查(数据库备份实际已完成)。
修复 工艺流程系列BUG一批 :renderTableHeaderCSS 嵌套 style 标签导致 CSS 明文显示(bom.php、process_flow.php);考勤页调用未引入的 renderTableHeaderCSS() 致致命错误(改 require col_toggle.php + renderColToggleCSS());工艺流程「系列」列误显 series_name → 改取 products 表产品系列值(如 HB21)并纳入列显隐控制;生产安排页查询不存在的 bom 表致命错误 → 移除该查询仅用 process_flows;PDA 报工页缺 endif 语法错误(删除无订单报工遗留);0502 工序错误关联 0601(isSeriesMode 未设置);工序 0602/0702/0802 跑到第一列 → 按工序ID后两位设置 grid-column 定位;renderCombinedViewFlow 将系列和产品步骤分离导致定位错误 → 重写为统一阶段映射;产品工艺未按编辑内容显示(旧逻辑过滤产品共享工序改用系列数据)→ 以系列步骤为基础、产品数据覆盖同ID步骤、追加产品独有步骤。
架构 生产进度页完全重写 (order_progress.php):
左侧产品列表(产品编码/名称/状态标签/分类/系列/客户标签 + 周期订单数/数量/已报工数/进度条)+ 右侧详情面板(产品信息卡、周期统计、工艺流程图、周期内订单列表);顶部统计条含订单总数/今日订单数/周期内订单数及数量;搜索框移入「产品列表」表头形成胶囊样式。
详情面板直接使用工艺流程导图 :按阶段分组着色、工序节点显示工序号/名称/进度条/完成数量/目标数量/委外/质检标签,按工序ID后两位 grid-column 定位,drawFlowArrows 绘制 depends_on 显式依赖连线(同阶段水平/相邻阶段垂直/跨阶段折线);实测可正常显示 47 道工序。
新增 product_progress_detail 接口;期间修复:有订单产品不显示(work_reports 误用 order_item_id 字段 → 改 product_code)、数值计算错误(quantity/total_reported 转 float + 前端 Number() 转换)。
新增 移动端委外入库独立页面 (pda/outsource.php):概览统计栏、时间筛选、状态标签页、委外单卡片、状态流转按钮、新建/编辑表单;配套 pda_outsource_save / pda_outsource_status / pda_outsource_delete 三个接口与路由菜单配置;修复 PDO 参数绑定(compact() 键名与占位符不匹配改显式数组映射)、空日期转 NULL、数字格式化(fmtNum 保留2位小数)。
决策 删除「流程导图」页面(flow_chart.php 主文件 + 导航/权限/处理器/角色 permissions JSON 中 flow_chart 键 + settings 表 flow_stages 配置)与工艺流程「关联产品」搜索功能(selectedProducts 数组、同步按钮、多个 JS 函数移除,新增 updateFlowInfo() 统一信息显示);工艺导图节点按系列(半透明淡蓝)/产品(半透明淡绿)底色区分,产品工艺自动去重,禁用自动顺序连线仅保留显式依赖连线 ;删除「系列前段工艺/产品末段工艺」重复卡片,顶部一行标签「系列工艺 | HB21 · 917222」。
优化 人事档案预设部门下拉(冲床/碰焊滚焊/抛砂/打蛋器/搅拌杆/成品 6 个生产部门 datalist,批量改部门弹窗同步关联,为 08-25 九部门统一口径的前置);保存时按姓名(优先)或工号自动关联已有系统账号,batch_link_accounts.php 批量处理存量数据;修复添加员工/批量改部门对话框点击外部误关闭(data-bs-backdrop="static")。
优化 订单交期页视觉改造 (参考生产进度页风格):CSS 变量系统(--ink/--steel 等)、纸张网格纹理背景、钢蓝主色调、页头蓝色竖条标题+英文副标题、胶囊式统计条与周期按钮、卡片式容器+渐变表头+sticky 产品编码/名称列、特殊日期列高亮、区分新增/已有订单的数量输入框、圆角胶囊操作按钮、渐变背景统计栏与统一弹窗——原有功能全部保留。MRP 订单列表表格化 :卡片式改表格(复选框/订单号/客户/产品编码等列,sticky 定位与选中行高亮)、全选/取消/反选按钮、自动统计唯一订单数和产品行数;同步修复 MRP 客户筛选点击无反应(mrpInitCustomerFilter 绑定)、订单交期筛选事件冒泡(stopPropagation)、MRP 表单提交 XSS 风险(insertAdjacentHTML 拼接改 createElement+appendChild)。
第七阶段 · 系列工艺与移动端重构(08-18)系列报工、产能逻辑、CSRF全站加固
2026-08-18
新增 系列报工体系 (业务动因:「前段工序人员只知系列不知产品」):
产品列表增加系列卡片(HB21 等,显示系列下产品数/有订单数),前段工序人员直接点击系列卡片报工。
报工机制 :点击系列卡片报工,系统自动为系列下所有产品创建报工记录(config.php 新增 work_reports.series_code 字段、action.php 新增 get_series_products 接口);系列报工页含订单汇总表和前段工序列表。
进度同步 :product_progress_detail 接口改造为跨产品聚合查询,同系列所有产品的该系列工序进度同步更新。
期间连环修复:work_reports 缺 series_code 列致 SQL 报错(列存在性检测+降级查询)、if→else→elseif 错误结构致 PHP 语法错误(改 if→elseif→elseif)、rp_is_series 隐藏字段缺 name 属性。
作业指导书系列适配:产品编码改系列编码、产品名改系列名、扫码报工改系列报工、条码按「系列编码+工序号」生成(HB21 系列 917222 → 工序 9172220101 管开料,已验证显示与条码数据均正确)。
规则 系列工艺锁定规则 :系列工序只能在系列工艺页修改,产品工艺页只读锁定(点击/编辑系列工序弹出「这是系列工艺流程,请在【系列工艺页面】修改」提示并 readonly);action.php 新增 syncSeriesFlowToProducts 函数——系列工艺保存后自动同步到所有引用该系列的产品工艺(剔除旧系列工序、合并最新工序),产品工艺载入时也从 seriesFlowData 拉取最新系列工序锁定注入。
新增 产能逻辑 (用户规则:「上一道工序完成的量满足下一道工序1小时的产能即提示可生产」):工序表头新增「产能(件/时)」列(addStepToStage 新增 capacityPerHour 参数、保存 capacity_per_hour 字段);可生产判定=依赖工序完成量 ≥ 当前工序1小时产能 → 显示「✓ 可生产」,否则「⏳ 待料」。
新增 生产报工页全面重写 (work_report.php):时间筛选标签(当天/近7天/近15天/近30天/近3月,默认近7天)+ 产品卡片网格(该时间段内有订单的产品)+ 部门权限过滤(管理员/生产主管看所有、班组长看本部门、普通员工只看被安排工序的产品);order_id=0 时后端自动取该产品最早非取消订单;旧 $_filterPages 时间筛选移除;后经多轮紧凑化(卡片列宽 col-xl-2、内边距 10px、字号缩小)。
新增 移动端「我的报工」 页面(当前用户报工记录 + 当天/昨天/上周/本月时间筛选,明确报工修改需经审批并保留完整修改记录);操作记录页 (operation_logs.php,PC+PDA 双端,仅管理员可见,敏感操作日志:修改密码/重置密码/用户增删改/员工增删改/解除账号关联/批量离职/角色增删改/保存公司信息等,支持时间/模块/操作类型筛选与关键词搜索)。
新增 人事档案关联系统账号 (四大功能):关联已有账号(未关联账号下拉选择)、显示当前关联账号信息(账号名/角色/状态+解除按钮)、解除关联(账号保留但无法登录)、创建新账号(跳转同步创建区域);关联优先级=手动关联>自动关联>创建新账号。
安全 全站CSRF大加固 + 密码统一 (全页面并行检查,30+页面修复50+处问题):
高严重性 :40+ 处 CSRF 令牌缺失(所有 POST 表单补 csrf_field(),AJAX 补 _csrf 参数与 X-Requested-With 头);work_report.php SQL 逻辑错误;mrp.php 未定义变量;workshops.php 2处 GET 删除改 POST+CSRF;workshop_overview.php 3处 SQL 拼接改 PDO 预处理。
注入方式 :PDA 端经 pda/includes/footer.php 全局自动注入;PC 端逐表单注入;config.php validateCsrf() 支持白名单豁免。
密码统一 :全部 24 个账号密码改 xh2026(bcrypt 加密,前10位账号逐一验证通过)。
新增 产品/物料库存入库出库功能 :products 表新增 stock_qty/safety_stock 字段、inventory_logs 新增 product_id 字段;action.php 的 stock_in/stock_out 支持产品与物料两种类型(事务处理+库存校验);产品库存页与物料管理页顶部新增入库(绿)/出库(黄)按钮与模态框(当前库存显示、自动流水、单号备注选填、出库校验)。期间修复 autoPatchDB v20 补丁因放置位置错误未执行 → 调整补丁位置与缓存逻辑;product_stock_detail.php 产品流水明细与 stock_alert.php 产品预警Tab 同步完善。
规则 人事页面权限收紧 :新增 isHR() 函数(admin 或 hr 角色),index.php 对 personnel、employee_contracts、social_insurance、rehire_management 等人事页面拦截,非授权用户提示无权限跳首页。
新增 工艺流程「设备」绑定列 :action.php 新增 workshop_list(车间/班组列表)与 equipment_list(按车间筛选设备)两个 API;工序行「设备」按钮带绑定数量角标,弹窗先选车间(班组)再加载设备,支持跨车间多选(显示名称/编号/型号/状态),保存至 steps[].bound_equipments。
规则 人事档案规则三连 :① 状态简化为「在职/离职」两种(删除试用期/离职申请中/停用),选离职自动填今日离职日期、选在职清空;② 职位为「员工」默认不创建系统账号(updateCreateUserByPosition 控制区域显隐,入职日期默认当天);③ 单条保存与批量转离职联动停用/恢复系统账号。
新增 生产报工优先级排序体系 (PC+移动端同步):产品按特急>加急>普通排序(同级按最近订单日期倒序,SQL 新增 MAX(o.priority)、MAX(o.order_date));全部/特急/加急/正常四张统计卡片;特急卡片红框+脉冲动画badge、加急黄框+badge,显示产品交期剩余天数;含特急产品的系列卡片优先显示并变红框。
新增 移动端生产报工页重写 :由「显示订单」改「显示产品」,去掉弹窗改内嵌报工表单;产品列表表格化,点击展开当前部门工序列表(同一时间仅展开一个,筛选变化与报工提交后自动刷新);产品卡片与系列卡片样式统一(160px宽、蓝白渐变/橙边框、横向滚动布局,展开撑满宽度);PDA 端代码全量复制 PC 端 + zoom CSS 适配。
规则 生产进度布局定版 (用户确立理念:「系统以产品交付为中心、订单号仅为标识、生产报工可跨订单、生产进度按客户→分类→系列→产品查看」):左侧产品列表+右侧详情面板的稳定版布局,卡片统一 .uni-card 样式,双进度条(工序进度=各工序完成率均值、产量进度=报工量/订单目标),特急红色闪烁/加急黄色闪烁提示。
优化 删除登录页默认账号密码提示 (login.php 与 _release 版的「默认账号:admin / admin123」HTML,安全收敛);考勤页新增安排人员/撤销安排功能,权限规则:普通用户只能查看本人考勤,行政部主管和管理员可查看所有人(列表 SQL 过滤+后端写操作拦截双层);采购菜单组全面修复验证(KPI统计、状态映射、供应商筛选、删除保护,补修 purchase_overview 委外状态映射遗漏 pending_qc)。
数据 组织架构梳理与测试数据 :以刘总为顶层归纳 6 部门架构(生产部 3 位主管、仓储部李强/张勇共管);对比人事档案发现多处差异(主管无上级、归属错误、部门为空、碰焊滚焊车间更名、5人档案缺失)并生成字段修正+新增档案 SQL;为 6 位生产班长各创建 1 名测试员工(test02~test07,工号 TEST0211~TEST0221,员工职位不建账号规则验证)。
修复 当日BUG扫尾 :工序绑定部门后无法保存/回显(前端 encodeURIComponent 双重编码 json_decode 失败 → hidden input 改 HTML 实体转义,后端三级解码回退:直接 json_decode / rawurldecode / urldecode);BOM 管理编辑按钮失效(#seriesView 容器未闭合致 4 个模态框在 display:none 父容器内渲染 0×0 → 闭合容器+保底防御 CSS);产品/系列工艺表头不一致(三处手写表头 → 抽出 renderStageTableHead/buildStageGroup 统一 11 列);系列工艺无法编辑(setSeriesModeUI null 引用);订单交期生成失败(saveSchedule()/buildPayload()/模态框绑定)。
约定 确认「PDA 与移动端为同一概念」(代码与文档统一口径);系统定位确认为 ERP+MES 集成系统(本地 http://localhost:88/login.php,统一密码 xh2026)。
第八阶段 · 双端一致性攻坚(08-19 ~ 08-20)移动端对齐PC端、审批雏形、计件工资生成
2026-08-19
新增 计件工资从报工自动生成 (piece_wage.php + action.php + config.php v21迁移):
数据流 :查询 work_reports 中日期范围内、数量>0、审核通过且未关联工资的报工 → 按 product_code+step_id 匹配 process_flows.steps JSON 的 standard_price 工价 → 优先经 employee_id 匹配员工 → 事务生成并记录操作日志。
交互 :计件工资页新增「从生产报工生成」绿色按钮 → 日期范围弹窗 → 预览(明细+汇总,未设工价标黄、未匹配员工标红 )→ 确认提交生成;新增 preview/generate 接口。
新增 报工审核页管理员修改/删除报工 :work_reports 表新增 employee_id、leader_review_id/at/remark、manager_review_id/at/remark 等列(v21迁移),历史 review_status 为 approved/pass/空/NULL 的老报工自动转 manager_approved;新增 work_report_update(修改员工/订单等并记录操作日志)与 work_report_delete(永久删除并写日志)接口;页面每条报工新增编辑/删除按钮,列表增加备注摘要、不良数显示。
新增 移动端生产进度页 (pda/order_progress.php,参考 PC 端:周期筛选、系列筛选、统计卡片、产品卡片列表、详情视图)与导航简化 ($pdaSimpleNav 变量:生产报工/生产安排页仅显示返回主菜单按钮+标题,移除完整导航菜单)。
规则 报工三要素定型:人员、时间、数量(含不良) :报工对话框字段 employee_id(默认当前登录用户)、start_time/end_time(默认开始=当前-1h、结束=当前)、quantity(合格数)、defect_qty(不良数,校验≤报工数);数据库新增 start_time(datetime)、end_time(datetime)、employee_id(int)、defect_qty(decimal(15,4)) 四字段,PC/PDA 双端对话框结构一致。
新增 多人集体报工 (方案B:一条报工含多人、数量均分):人员选择由多选下拉改为勾选列表(仅显示人名、移除工号,移动端整行可点击+加大复选框+滚动容器);后端接收 employee_ids[] 数组按人数均分数量。
安全 仓库子菜单清扫 (7页面13问题):物料库存/产品出货/库存盘点/库存预警的启用停用、删除、快速采购 5 处 GET 请求改 POST+CSRF+确认框(action.php 兼容 POST 读取、新增 quick_purchase handler);4 处 renderTableHeaderCSS() 调用位置错误致 CSS 明文(移入 style 标签内);订单发料表单补 method/action/csrf_field。
优化 生产安排/生产报工双页大改造 :
生产安排新增筛选对话框(dept/leader GET参数,部门下拉取在职员工去重部门,班组长下拉按职位筛选,选部门则联动过滤班组长,班组长登录自动默认本班组);「全部班组长」改「班组」且下拉不显示工号。
报工页直接复制生产安排页 (PC 端唯一区别=卡片底部「安排人员」改「立即报工」即 openAssignedReportModal;PDA 端全量复制+zoom 适配)。
工序编号显示错误修复(解析 steps JSON 未展开 stages 结构 → _psFlattenSteps 辅助函数,编号与工艺编辑器/作业指导书/扫码报工一致)。
工序卡片放大1.3倍(minmax 170→221px、产品编码13→17px、工序名12→16px 等)。
系列/产品工序卡片去重 :系列工序存在时不再显示对应产品工序卡片;后修复兼容模式(严格匹配改模糊、产品工序查询排除系列流程、isset 改 !empty 判断)与未绑定部门工序被误过滤问题(仅对已绑定部门的工序做权限过滤)。
部署 数据库备份脚本化 :_db_backup.php(浏览器触发,优先 mysqldump --single-transaction --default-character-set=utf8mb4 --routines --triggers --events,不可用回退 PDO 逐表导出;生成带时间戳副本+固定名最新版 install/xhwork_full_backup.sql,191KB、61表)。
优化 清理 22 个临时/备份文件(_tmp_check*.php、test_wi.php、.env.prod.bak、cookies.txt 等)与整个 _release/ 目录(发现后台进程持续生成临时文件需先停止);修复移动端生产安排时间方向(原看历史下单时间 → 改未来交期正序:SQL 字段 order_date 改 delivery_date、排序改最早交期 ASC,与 PC 端一致,顶部保留5个时间筛选按钮默认近7天)。
规则 车间总览可执行生产卡片按角色权限过滤 :$viewableExecCards 过滤(用户有安排权限 + trigger='ready' + 部门校验通过),面板头部 meta 与 KPI 统计同步按权限计算,管理员/生产主管/班组长/普通员工四种口径。
新增 交付进度页「导出Excel」 (UTF-8 BOM CSV,文件名含周期「交付进度_起始日期_结束日期.csv」)与「打印」 (横向A4、隐藏非内容元素、强制打印单元格背景色)功能。
规则 系列工序「关联工序」下拉开放「关联产品工序」分区 (解决产品工艺无法保存/连线问题,修正系列末工序不可连线的早期规则):editFlow 不再过滤系列工序(以 isSeriesStep=true 加载)、markSeriesLastSteps() 调用顺序移至 restoreConnectsTo() 之前。
修复 当日BUG批 :BOM 管理编辑按钮失效(#seriesView 未闭合致模态框 0×0,详见08-18同类修复的后续完善);工艺流程「🔗 系列」badge 重复显示 + 系列工序箭头编辑页不可见(反向依赖转正向连接、setTimeout 改双重 requestAnimationFrame、drawDependsArrows 最多6帧自动重试);产品工艺只显示系列工序不见产品工序(collectSteps() 返回驼峰而 syncSeriesFlow 读蛇形 → 双命名格式返回);生产安排页 3 个变量定义顺序错误致 PHP 报错;产品库存页新增「添加产品」按钮(跳转产品管理);车间管理表头列宽固定(编码110px/名称180px/操作160px 等);移动端报工页补订单摘要卡片(最多3条+「+N 个订单」,与 PC 端对齐);报工人员下拉与 ensureAssignment 函数(未安排人员的报工强制填人员并补写安排记录);采购子菜单列显隐复选框失效(补 renderColToggleJS 调用)。
优化 生产进度工序进度改分数显示(「3/8」形式,进度条仍按百分比宽度);移动端报工页产品状态筛选改 1 排 4 个横向滚动按钮;PC 端报工工序卡片缩小参考生产安排卡片样式。
2026-08-20
新增 移动端设备维修 (device_repair.php,所有用户所有部门主菜单强制显示橙色「维修」卡片,不受部门菜单分配限制):
双Tab设计:「设备报修」(所有用户可提交,生成 WX+日期+序号 报修单,报修后设备状态置「故障」)+「维修记录」(管理员处理,待处理→维修中→已完成流转,维修中置「维护中」、完成后恢复「待机」)。
涉及 config.php(菜单注册+建表)、pda.php(强制可见+放行)、pda_action.php(报修提交+状态处理接口)。
修复 报工审批闭环第一批修复(4项) :
① 进度统计口径统一:仅 leader_rejected 和 manager_rejected 状态的报工不计入进度。
② 报工修改两级审批闭环:一审生产主管或管理员、终审仅管理员或刘总,终审通过自动回写报工数量。
③ 生产安排前置规则恢复:特急订单直接安排、普通订单需上阶段工序报工开始后(默认1小时,可配置)、排产计划负id订单不限制。
④ 封堵遗留越权接口 pda_work_report;提供回归测试工具 _cache/test_fix_batch.php,经 CLI 端到端测试+语法检查+页面冒烟验证。
修复 系列报工进度同步 :系列报工(series_code 非空)按系列聚合后同步到同系列所有产品的对应工序进度,产品自身报工排除系列记录、两级驳回不计入;共改 7 个文件(PC/PDA 的 work_report、production_schedule、order_progress + action.php);实测 HB21「管开料」报 50 件,同系列 3 个产品工序进度均同步为 50。
规则 移动端模板A定型 (确认代码完全符合并作为后续新页面标准):
顶部导航(深蓝渐变,标题+用户名+网络延迟+🖥️访问PC端+⏏退出,移除下拉/功能菜单)在 header.php;主页(问候卡片+宫格入口)在 pda/index.php;底部四标签(🏠主页/📅安排/📋报工/👤我的)在 footer.php;筛选条统一胶囊样式。
访问PC端免登录直达(兼容 PC/PDA 任一有效登录态);人员下拉统一不显示工号(5处页面)。
生产类部门(冲床/碰焊滚焊/抛砂/打蛋器/搅拌杆/成品/弹簧机/数控部)移动端菜单统一六项:生产进度、订单领料、作业指导书、工艺流程、产品图册、库存查询;底部「安排」标签仅班组长/主管可见。
优化 订单领料卡片化 (移动端+PC端):移动端顶部新增「待领料产品」卡片网格(产品编码+数量、产品名称、三色标签系列蓝/分类绿/客户紫、交期/已发料状态、青色渐变领料申请按钮,交期紧迫卡片红/黄渐变);PC端与移动端物料编码/产品编码旁新增图片展开按钮(ajax.php 接口新增物料 image 与产品 product_code/images 字段,图片懒加载,无图不显示按钮),按产品视图可展开横排产品图册。
优化 移动端卡片列数体系 :所有产品卡片页面支持 2/3/4 列切换(header.php 胶囊按钮 + footer.php 通用JS + localStorage 按页面记忆 key=pdaCols2_+gridId,默认3列);主页导航菜单卡片与「我的」快捷入口固定3列;生产安排/生产报工卡片改 repeat(3, minmax(0,1fr)) 三列等宽自适应(移除 PC 端 zoom 缩放技巧导致的容器溢出问题)。
规则 文案全局规范 :「PDA端」改「移动端」(6文件8处用户可见文案:登录页标题/工作台/跳转提示/访问限制/设置项/安装注释,不动 URL/变量/代码注释);「全部XX」下拉前缀去除(14文件28处,「全部客户」→「客户」等)。
修复 交付进度数据源统一 :原用独立 product_schedules 表与产品交期(order_items + orders.delivery_date)不同源致总数对不上 → 交付进度数据源改为与产品交期同源的订单数据;产品交期页产品编码下方新增周期订单数量总数(range_qty)与订单数(range_orders)显示。
规则 报工保存接口权限规则调整 (起因:班组长兰国忠报工被「无权限」拦截):原规则要求 order_progress 模块 write 权限,而班组长/员工角色仅 read → 调整为关联员工身份(employee_id>0)的登录用户直接放行报工,纯管理账号仍需 write 权限 ,保留部门/工序级后端校验兜底;PC 端同步修复。
优化 移动端生产报工权限收紧 :报工人员选择与工序卡片均按用户管辖范围过滤;修复模态框内容泄露与重置按钮跳转 BUG;筛选区改造——删除「全部」字样下拉与「全部优先级」框、删统计卡片整行与「全部班组」下拉(与部门筛选重复),新增特急(红)/加急(橙)/可生产(蓝)胶囊快捷按钮(可激活/取消、与其他条件组合);搜索框与快捷按钮同行。
修复 生产主管管辖范围扩展 expandDeptScope (起因:唐海钢、柯绍财看不到数控部/弹簧机工序):根因为数控部、弹簧机负责人上级被错误设置为刘总 → config.php 新增 expandDeptScope() 函数,生产部人员管辖范围自动扩展至整个生产体系(生产部/数控部/弹簧机等),接入 PC+移动端 7 个页面(生产安排/报工/车间总览/作业指导书/工艺流程);验证唐海钢、柯绍财可查看全部生产体系工序,安排人员仍严格限制只能安排自己的下属。
部署 数据库备份 xhwork_db_20260820.sql(62表、216.4KB,去 GTID 与 tablespace 保证跨服务器导入兼容;部署步骤:上传整个目录→宝塔/phpMyAdmin 导入→改 .env 线上配置,导入前备份旧数据,已含 v22 迁移字段无需再跑脚本)。
修复 当日杂项BUG批 :品质报告图标类名笔误(bi-file-earmark-bar-chart 与 bootstrap-icons 标准名 bar-graph 一字之差,config.php 菜单/footer.php 底栏/quality_reports.php 页面 3 处统一);报工对话框放大(PC 端 modal-sm→560px 垂直居中、人员列表 200→280px;移动端近全屏 宽-24px/高 100vh-24px 内部滚动);「⏳ 等待上道」文案改「⏳ 等前工序」(防截断);MRP 交期计划表表头与内容不对齐(表头改默认左对齐+勾选框列居中+数量列右对齐+内边距统一 8px);移动端作业指导书改 A4 文档版式(固定 794px 宽、JS 按屏幕宽等比缩放、保留双指缩放、视频改右上角二维码点击全屏播放)。
第九阶段 · 审批链与业务闭环(08-21 ~ 08-22)提交人/作业人分离、不良处置闭环、停工体系
2026-08-21
规则 提交人与作业人员分离 (起因:班组长选择员工报工时报工单不显示,仅选自己时可见):
work_reports 新增 submitted_by 字段区分提交人与 employee_id(作业人员),班组长可代员工报工,「我的报工」按 submitted_by 过滤并显示「某某 代报」。
审批按工序所属班组逐级上送:wrBuildReviewChainByDept() 由班组负责人一级审批后提交直属上级终审,提交人若为负责人则跳过自审,质检工序强制归属品质部。
多人报工支持「均分数量」和「按人填写」双模式(总数量自动汇总),弹窗改 flex 布局+内容区滚动保证提交按钮始终可见(默认按人填写,用户手动切换过则不自动变更)。
架构 报工审批链生成机制 (起因:用户反馈班组长报工后应由主管→管理员审批、员工报工由班组长→主管审批的审批流BUG):
config.php 新增 wrBuildReviewChain() 按人事档案直属上级自动生成审批链:员工报工→班组长→主管→管理员;班组长报工→主管→管理员;无主管则直送管理员。
action.php 报工保存和审核接口权限校验调整;PC/移动端审批状态显示优化;系统设置新增「报工审批流程自定义」设置卡片。
顺带修复 autoPatchDB 缓存版本标记检查旧版 v21 导致迁移缓存失效的问题。
新增 组织架构页面 (index.php?page=org_structure,权限同人事档案仅人事和管理员可见):
KPI 概览(在职员工/部门数量等4项)、按「直属上级」自动生成的层级架构树(节点含头像/姓名,支持展开收起)、按部门分卡片的人员一览、在职/离职切换。
共管组画法 :李强/张勇并排用横线相连,横线中点向下垂直连接共同下属(张泽辉、邹雪、向群、叶志波),下属只显示一次、人数徽标按人头去重;自动检测同部门同职位且有共同下属的主管成组,点击任一主管卡片可展开/收起共同下属。
防环保护(互为上级的脏数据自动提升为根节点)、未设置直属上级的负责人显示「未挂接」黄色标记;卡片铅笔编辑直属上级(org_set_manager 接口),权限复用人事档案域。
新增 返工报工独立功能 (由报工类型单选演化而来):
4步卡片式流程:搜索选产品 → 多选返工工序 → 多选人员 → 填写数量矩阵(多工序×多人员),事务原子性处理(rework_report_save 接口)。
普通报工移除「报工类型」单选,提交固定为 normal;PDA 主页宫格新增红色「返工报工」卡片,PC 报工页顶部新增入口按钮,与生产报工共享权限。
与不良返工工单联动 :品质部处置不良为「返工」时自动生成 RW-YYYYMMDD-NNN 工单号存入 defect_orders.rework_no;返工报工页顶部显示待执行返工工单列表,点击自动预填产品/工序/备注/数量提示;不良处理页显示工单号徽标和「去返工报工」按钮。
新增 不良处理闭环 (PC defect_handling.php + PDA 同名页):
自动汇集 :config.php 的 syncDefectOrders() 在页面加载时将报工不良自动生成待处理不良单(此前修复:INSERT 语句 9 个占位符需 8 个导致 MySQL 列数不匹配且被 catch 静默吞掉)。
处置闭环 :品质部操作四方式流转——返工需报工审批后自动闭环,报废/让步/退货直接闭环;PC 端统计卡+筛选+表格+处置弹窗,PDA 端状态Tab+卡片+处置。
规则 委外/质检工序分工规则 (用户明确):
所有委外工序由委外采购报工:config.php 新增 isOutsourceBuyer() 识别委外采购岗(职位含「采购」),委外工序仅采购岗和管理员可见可报工,生产部门不可见(10个文件修改)。
质检工序在生产安排和报工中直接跳过,仅工艺流程表体现:移除强制归属品质部逻辑、相关页面不显示质检工序卡片、前置规则剔除、进度统计不计入、提交质检报工被拒绝。
规则 计件/计时部门标记 (起因:计时部门报工不应计入计件工资):管理员通过计件工资页右上「计件/计时部门」齿轮按钮设置计时部门,pieceWageTimeDepts() 读取设置后页面查询与 CSV 导出同步排除。
架构 计件工资页重写为实时视图 (用户指定表头:工号/姓名/部门/产品名/工序等):由「预览后事务生成」改为自动从 work_reports 实时派生;未审批报工黄色字体、驳回红色字体;工号/姓名表头顺排倒排、部门下拉筛选、顶部日期搜索、下载筛选后表格(piece_wage_export 接口,UTF-8 BOM CSV 文件名含筛选条件);工序单价取工艺流程 steps JSON 的 standard_price。
新增 产品交期「上传覆盖」与订单号规则V2 :
上传覆盖两阶段流程(解析比对 → 确认执行),确保交期或数量变动时订单号不变;generateOrderNoV2 函数:订单号=产品编码后四位+月份+编号。
验证方式:上传同一份文件两次,第二次比对结果显示全部保持不变,证明订单号稳定。
新增 安排人员人员池升级 + 拼音查人 :
人员池由「档案直属下属」改为严格按组织架构权限确定的「管辖部门全员 ∪ 直属下属」:config.php 新增 orgSubordinateIds() 按「直属上级」逐级收集全组织树并应用共管归并规则,生产部3主管各自查看对应下属,与组织架构树完全一致。
config.php 新增 cnPinyinAbbr()(GBK区位码算法),人员池支持输入拼音首字母快速查找员工名字。
顺带修复 PC 端「安排人员」提交必失败的 BUG:action.php 新增 save_assignment case 代理到 pda_action.php,与 PDA 共用同一套保存+校验逻辑。
新增 全站编码点击看图体系 :
经排查确定 30 个需新增图片按钮的页面(生产/订单/仓储/品质四大场景),抽离公共 JS 函数 toggleCodeImg 与配置函数 ciProdImgMap/ciMatImgMap,统一按钮样式(无图不显示),共修改 33 个文件。
后按用户要求简化:点击产品编号按钮只显示图册第一张图片,PC/移动端均按原始宽高比例最大化显示(全屏黑色遮罩居中,点击遮罩或 Esc 关闭)。
物料管理页同步统一:删除表格图片列(14列减13列),物料编码设为图片按钮(有图青色描边/无图纯文本),确立全系统规则「点击编码看图片,点击名称进详情」。
新增 工序历史功能 (当日由弹窗演化为独立页面):
初版为生产安排页工序卡片点击弹出异常历史对话框:时间范围按钮(当天/前7天/前15天/前30天/前3月/所有)+「停工」「报工」双Tab(停工记录时长/开始时间,报工记录数量/产能)+ 下载按钮导出该工序历史CSV。
后改独立页面:新建 pages/production_step_history.php 与 pda/production_step_history.php(config/index/pda 注册路由与权限),卡片点击改跳转链接,删除弹窗代码;返回按钮保留 scheme 等筛选状态。
页面增加维修/缺料/品控/换线/报工分类按钮,停工/报工表格表头按端适配(移动端精简为姓名/日期/产能)并支持表头排序;期间修复 CSV 导出单引号未转义导致的全站接口瘫痪。
规则 生产安排停工体系上线 (方案2按钮状态三轮迭代定型):
按钮状态机:未开始=绿色「开始生产」(点击直接开始);生产中=绿色背景(点击弹出停工原因选择);停工中=黄色背景(点击直接恢复生产),按钮上方显示停工开始时间。
停工原因改可选按钮(换线停工绿色换线图标/维修停工橙色扳手图标,直接提交无需文字输入);停工状态条第一行停工时间、第二行已自动计算的已停工时长;卡片按钮显示「⟳ 换线停工」「🔧 维修停工」「⏸ 停工中」(历史数据);详情弹窗同步具体原因和图标。
前后端文案统一(pda_action.php 权限提示/原因校验消息),品控叫停仅品质部/管理员可操作(换线停工后于08-23删除)。
新增 移动端作业指导书流式自适应重做 (用户澄清:是工序页面自适应而非整页缩放):删除固定 210mm 宽度与 JS 整体缩放脚本,改 100% 流式宽度;抬头居中、二维码固定右上角 64px、Meta 信息流式换行、条形码独立居中;作业图片改横滑画廊(140×105 缩略图+水印,点击全屏);作业步骤由 4 列表格改卡片列表(序号徽标+步骤名,作业明细/关键参数两行);视频弹窗与灯箱保留。
新增 人事档案三项体验优化 :①「员工」职位时「同步创建系统登录账号」复选框不再隐藏、仅默认取消勾选;② 编辑已有账号未关联的员工时按「姓名→工号=用户名」规则自动匹配已有账号(绿色提示+保存自动关联),选中已有账号自动取消勾选「创建新账号」;③ 部门选择由文本输入+datalist 改 select 下拉单选(含预设与现有部门、字母排序、默认「- 请选择 -」)。
新增 移动端界面精简 :主菜单删除用户问候卡片(头像/姓名/日期/部门),宫格直接置于导航栏下;生产安排/生产报工工序卡片操作按钮固定底部、已安排人员简化为人名胶囊;时间周期按钮文案缩写(「近7天交期」→「近7天」)。
修复 当日BUG批 :
PC「撤销人员」接口补回(原仅 pda_action.php 存在):四类权限校验(管理员/安排人本人/班组长撤下属/主管撤管辖部门)+ 状态规则(已开始/已完成不可撤、重复撤销幂等返回)。
班组长杨好香审批「网络错误」:全局动作权限映射表对 work_report_review 执行 checkWrite('order_progress') 而班组长仅读权限 → 302 跳转致前端 JSON 解析失败;改由 case 内部双重校验(入口权限+记录级审批人验证)。
委外订单页面底部显示大段 JS 源码:renderColToggleJS() 输出裸 JS 未被 script 包裹(委外订单/委外退货/采购退货 3 页补包裹)。
订单领料「继续领料」二次领料路径检查(发完物料后的跳转逻辑);产品交期模板 Excel 日期列显示#######(列宽问题)。
决策 PC 生产安排删除班组下拉(功能由部门下拉覆盖,清理 leader 参数链路);移动端生产安排/生产报工/生产进度三页删除「系列」下拉(4列网格改3列、清理后端死代码),系列工序卡片等核心功能不受影响。
环境 宝塔部署认知沉淀 :确认宝塔 PHP 8.2.20(cgi-fcgi)OPcache 已开启(命中率97.96%),validate_timestamps=1 + revalidate_freq=2秒 → 代码改动最多2秒自动生效,无需手动重载;内联 style 块不受浏览器缓存影响,独立 CSS/JS 需 Ctrl+F5 强刷。
2026-08-22
新增 维修停工与报修单闭环 :工序绑定设备的维修停工(方案2)自动生成带「停工触发」徽标的维修类型报修单,恢复生产时自动完成该报修单并更新设备最后保养时间、解除设备故障标记;equipment_repairs 表新增 source / source_log_id 字段,统一使用 erNextRepairNo() 生成单号(涉及 pda_action.php / action.php / config.php)。当日配套:维修停工可见性修复 ——维修记录页原 INNER JOIN 设备表且 equipment_id>0,导致 8 条未绑定设备的维修停工「隐形」→ 改 LEFT JOIN 并放开限制,未绑定设备记录显示「-」并标注「未绑定设备」(PC维修记录页+PDA设备维修页);绑定设备的维修停工仍生成报修单,未绑定仅记录停工日志。
规则 工序卡片信息架构重构 (多轮迭代定型):
删除卡片顶部「X 单」订单数量徽章与「已报 X/Y 单位」独立栏,已报数量直接填充到订单行,格式为「[交期]【已报数量 / 订单数量 单位】完成率%」(已报数量蓝色加粗、灰色斜杠分隔),4页面同步。
第四行「班组/部门名+数字」改为「作业人数 N」(按 production_assignments.status='in_progress' 统计,蓝底填充图标);「已安排X人」信息与人员姓名chips列表(含撤销按钮)全部删除。
生产状态判定改以 production_status_log 最新日志为准(排序修正为 id DESC 防取错最新状态);「生产中0人」视为可生产(幽灵生产中修复:36张卡片中4张转正);有安排即显示「作业人数 N」(「待上岗」分支删除,「安排了」等同「上岗了」)。
生产进度页流程图节点同步显示作业人数(「🔧 正在生产(作业 X 人)」/「待上岗 X 人」),产能基准人数优先使用作业人数。
人员统计改按人员去重(修复「显示2人实际1人」:save_assignment 接口重复记录问题,4页面6处)。
规则 订单瀑布填充 (起因:用户提出已报工的工序需填充到订单进度):
已报总量(产品自身报工+系列报工之和)按交期升序从最近交期订单开始填充,填满后余量自动流向下一订单;完成率按填充量显示绿(已满)/黄(部分)/灰(未开始)三色。
原按 order_id 逐单查询报工量的逻辑废弃,不再依赖报工记录与具体订单的关联;4页面(PC/PDA × 生产安排/生产报工)同步。
规则 产能显示与可生产判定 :
所有工序卡片始终显示产能行:有人时「产能 100×3人=300/时」,无人时「产能 100件/时」,均未设置显示「产能 未设置」;未设置产能时按标准工时反推(悬停提示完整计算式),4文件同步。
可生产判定:前工序和物料至少满足1小时产能或当前订单量,不足分别显示「等前工序」/「等物料」;加急/特急工序不受限制 ,可直接点击「开始生产」跳过前工序和物料检查。
规则 计件工资可见范围三级 (用户特别申明):员工只看自己、班组长看本班组、生产主管看管辖班组;config.php 新增 pieceWageScope() 统一计算,页面主查询与 piece_wage_export 导出接口双端强制生效;4名有报工员工各自可见数与 admin 总数11完全吻合验证通过。
规则 员工自安排与按钮角色分流 (起因:员工点击「可生产」提示「未能获取员工信息」——pda 页误用不存在的 $_SESSION['user'] 键):
修复会话取值后实现按钮角色分流:管理人员「安排人员」、普通员工「加入生产」、已加入员工「退出生产」;非品控停工状态下员工可点击「加入生产」。
停工体系补全:停工按钮再次点击恢复为「可生产」,production_status_log 新增 action 枚举值 resume;恢复后需重新安排人员/加入生产才能启动;品控叫停仅品质部/管理员可操作;换线停工自动撤回已安排人员(该原因后于08-23删除,撤人机制保留在品控叫停等场景)。
退出生产自动停工修复:equipment_id(INT列)传空字符串触发 SQLSTATE[1366] → 改绑 0;「该工序已无人作业,自动停工」链路 Playwright 端到端验证通过。
新增 移动端导航栏统一改版 (11个文件):左侧标题、顶部居中网络延迟、右侧「访问PC端→用户名→返回」;返回按钮统一右上角(删除10个页面零散返回按钮),退出登录移入个人设置页;个人设置页新增修改手机号/修改密码(profile_update_phone / profile_change_password 接口)并移除快捷入口宫格;工序历史页返回按钮同步改右侧纯文字「返回」。
新增 报工弹窗UI定型 :
删除内容区开头「工序步骤」展示块;标题栏中间仅居中加粗显示工序名(如「贴片」),移除「生产报工」前缀和图标,关闭按钮绝对定位右上角。
多人报工仅支持集体报工:删除「均分数量/按人填写」切换与每行人员数量输入框,人员列表仅显示姓名+岗位,数量统一在「报工数量」框填写,固定提示「已选N人 · 报工数量X将均分给每人,每人Y」。
新增「生产日期」必填框(无年份、月-日格式、默认今天、多输入格式自动兼容、年份自动推断);开始时间晚于结束时间时结束时间自动落到次日(跨零点作业)。
规则 工序物料判定改按工序绑定物料 (起因:未绑定物料的工序被误判「待料中」):新增 psStepMatAvail() 按 steps.linked_materials 判定,未绑定物料的工序直接判可生产,不再回退整BOM齐套;生产中卡片有人显示「作业人数 N」(蓝底)、无人显示「作业人数 0」(灰色悬浮提示)。
修复 前工序判定重构 (起因:HB21系列0204碗介清洗工序无法开始):原逻辑采用扁平列表紧邻上一道工序的错误方式 → 改为优先使用工艺流程 JSON 的 depends_on 依赖(与生产进度页流程图箭头一一对应),多依赖时取瓶颈最小值,无依赖直接放行;工序历史页新增前工序按钮(depends_on 显示,单个直接跳/多个供选择)与绑定物料及库存状态显示(psStepContext())。
修复 前工序弹窗与JSON注入 :前工序点击改弹生产安排式工序卡片(production_card_detail 接口,含状态/时间范围/停工报工Tab,底部保留完整历史页链接);onclick 属性内嵌裸双引号 JSON 导致 HTML 截断 → 统一 htmlspecialchars(ENT_QUOTES) 转义(PC+PDA)。
修复 系列工艺无法编辑 :process_flows id=4 的 steps 被存为 JSON 对象格式而非标准数组 → 数据转标准数组 + normalizeStepsArray() 数组化容错 + 保存时强制 array_values 规范化 + psFlattenStepsJson 兼容混合格式;验证系列工艺自动同步到该系列全部产品(2个产品工艺均完整含30道工序)。
修复 人事档案创建账号失效 :action.php 原条件 !empty($_POST['create_user']) && $isNew 中 $isNew 仅新增员工时为 true,编辑时恒 false → 去掉 $isNew 限制,先检查已关联账号防重复,补用户名唯一性校验(重名提示「用户名已存在」)。
优化 系列BOM页面由三列卡片网格改表格布局(与产品BOM一致:系列/产品数/配置进度/模板状态/操作列),顶部新增系列名称搜索框;车间总览订单号格式去中横线(7777-08-02 → 7777-0802,悬停 title 保留完整单号);停工时间显示精简(第一行闹钟图标+停工开始时间,第二行「已停 X天/X小时 · 停工原因」)。
部署 服务器部署排障日 :上传项目后报 Table 'xhwork.users' doesn't exist —— 根因是 SQL 文件未成功导入(需在宝塔 phpMyAdmin 确认 64 张表存在、核对 .env 的 DB_NAME/DB_USER/DB_PASS 与宝塔一致);随后全量导出 xhwork_full_20260822.sql(64表247KB,含当日 resume 枚举与 source 字段等最新改动,自带 CREATE DATABASE 语句,含存储过程/触发器/事件),并需同步上传当日修改代码。
决策 采购订单PDF下载/打印功能开发后整体撤销(用户判断浏览器 Ctrl+P 足够):删除 action.php 的 po_pdf/po_print 接口、purchase.php 按钮与列宽恢复、includes/pdf_cn.php、assets/fonts/ 目录及测试脚本;生产进度页明确全员可见、不限部门 (PC/PDA一致,含残留引用清理)。
第十阶段 · 体验精修与功能收官(08-23)默认部门、单价掩码、收藏、领料增强
2026-08-23
规则 默认部门显示 (PC+移动端的生产安排/生产进度/生产报工统一):普通员工默认本部门工序、部门主管默认所管辖班组、管理员及非生产部门默认全部;新增 deptDefaultScope() 管辖范围计算,部门筛选支持三态(默认/全部/指定部门),下拉框增加「我的部门/我的管辖班组」与「全部部门」选项,移除旧班组长自动筛选逻辑。
规则 产量统计口径修正 (起因:用户指出生产进度卡片产量统计不准确):按最后一道工序(排除质检工序)报工计产量,流水线成员工序自动映射到首道工序报工;以 HB21 为例修正前产量 33010(所有工序报工总和),修正后按最后工序报工计算,3101 等流水线成员工序正确映射到 0602 报工(PC端 order_progress.php、action.php 进度详情接口、PDA端三处)。
新增 工序收藏功能 (共9个文件):
新建 step_favorites 表;工序历史页右上角星标收藏按钮(再次点击取消);action.php / pda_action.php 新增 step_favorite_toggle 接口;config.php 提供 psStepFavorites / psStepIsFavorite 函数。
生产安排与生产报工页(PC+PDA共4页)卡片排序规则调整为:收藏 → 特急 → 加急 → 普通 → 交期升序 ;收藏标记从「★ 收藏」文字改为红色实心星图标(红底红字配色),悬停提示「已收藏(可在工序历史页取消收藏)」。
收藏按员工个人隔离,产品工序和系列工序分别收藏。
新增 工序单价班组掩码 (用户要求各班组只见本班组工序单价):
config.php 新增 psPriceVisibleDepts / psStepPriceVisible / psMaskStepsPrice 三个统一函数。
三层堵漏 :前端堵住产品卡片/系列卡片 data-steps 属性与 seriesFlowData/flowEditData JS 变量的单价泄露(编辑表格不可见工序单价显示***只读置灰);后端 action.py 不可见工序提交掩码值自动还原数据库原价(防伪造修改);ajax.php 对 get_flow_steps 接口同步掩码。
PDA 工艺流程和作业指导书不显示单价无需改动;计件工资页显示本人/管辖范围报工单价属合理可见。
新增 报工记录趋势曲线图 (config.php 新增 pshReportChartSvg() 纯SVG生成,无图表库依赖):产量/产能/不良三趋势;先放报工记录表格上方,后改独立「曲线图」Tab;仅在生产报工页进入的报工记录视图显示($isReportView 条件控制),生产安排页进入的停工视图不渲染。
新增 订单领料增强 (用户需求:多次领料、超订单BOM领料、领料表头、BOM损耗率):
无需改表 :利用 material_issues 现有 issue_no(单据号)/operator(领料人)/created_at(时间)与 bom_items.loss_rate(损耗率)。
移动端移除「物料已全部发完」死胡同页面,保留已发完物料输入框并标注「已完·可超发」,解除超发数量 JS 限制,扫描枪可定位已发完物料;PC 端已齐物料行仍显示发料/损耗按钮(弹窗提示「本次为超额领料」);PDA 提交后跳回同一订单页方便连续领料。
领料记录:移动端订单头部下方折叠卡(单据号/类型/领料人/时间/状态,点开看明细),PC 端订单明细展开区底部表格;新增 get_order_issues 接口。
BOM 损耗率生效:需用量 = BOM用量 × 订单数量 × (1+损耗率%),物料行显示橙色「+N%」标签、超发量红色「超发」标签;顺带修复 PC 按产品视图待发量 int 截断与移动端产品卡片图片按钮 ID 错乱。
决策 删除换线停工 (与退出生产效果重复):删除 4 个页面相关 Tab/标签/图标/按钮映射及废弃样式;数据清理删除 production_status_log 中 10 条换线停工记录和 1 条换线历史记录,7 个工序回退「生产中(0人)」自动显示为可生产;全局验证按钮/弹窗/筛选/自动撤人无残留,停工原因定型为维修停工/缺料停工/品控叫停三种 。
优化 生产安排仅保留方案1 :强制 $scheme=1(注释标明方案2备用隐藏),删除方案切换条UI与CSS、URL 中 &scheme= 参数;方案2后端分支保留作死代码备用。移动端管理层分组合并:原9个生产相关分组(生产部/冲床/碰焊滚焊/抛砂/打蛋器/搅拌杆/成品/弹簧机/数控部)合并为一个「生产部(含全部生产班组)」(浅蓝底色),保存时自动同步配置到全部生产班组,存量数据统一为13项菜单并集。
新增 产品BOM复制到系列BOM :将产品「搅拌刀(黑色P四叶刀)」(7222751950)完整复制14条物料(304不锈钢带/四叶刀片/含油轴承/pe包装袋等,用量与损耗率不变)至系列BOM「HB21搅拌刀」模板(BOM #9,V1.0,启用状态),后续同系列新产品可「生草稿」或「一键同步」套用。
修复 全量BUG扫描 (135个PHP文件+四类已知陷阱模式深挖,3处):
生产进度卡片逐单明细完成率恒 0%(PC+PDA):product_code 列误传产品ID整数而非产品编码致查询静默返回空集。
报工审核页编辑按钮数据含撇号失效(work_report_review.php):onclick 裸拼 json_encode($r) 致 HTML 属性截断 → htmlspecialchars(ENT_QUOTES) 修复。
移动端不良品处置按钮同类问题(pda/defect_handling.php)同样修复。
评估 移动端打包安卓APP方案评估 :pda/*.php 本质是服务器渲染网页,打包仅添加 WebView 壳;对比 WebView壳APK(推荐)/PWA/重构原生三种方式,适配点(登录会话/返回逻辑/网络)已满足,需额外处理图片上传与服务器地址配置;用户决定暂缓执行 (页面未改完)。
新增 工序历史双视图 (起因:用户要求生产报工页卡片点击增加报工记录、删除生产安排页的报工记录按钮):
生产报工页点击卡片空白处(按钮除外,stopPropagation 防误触产品卡片展开/折叠,data-step-name 传参)→ 跳转「报工记录视图」(view=report,直显报工记录表格+曲线图Tab)。
生产安排页点击卡片 → 「停工视图」(默认,维修/缺料/品控停工记录Tab,删除报工Tab);两视图布局一致,前工序弹窗内容跟随视图。
PC 端返回按钮智能区分来源页面,PDA 端页面标题区分视图类型;期间修复 pda/production_step_history.php 第591行语法错误(endif 错位复用致 else 块未闭合)。
新增 前工序卡片化交互 (三轮用户反馈迭代定型:不应显示前工序名/应显示生产安排式卡片/其他部门只读):
点击前工序弹出生产安排式工序卡片(含工序进度、生产状态、部门标签、在产人数、停工/报工记录)。
非本班组前工序只读锁定 :前端锁定按钮+后端同步拦截双保险;本班组工序可正常操作(加入生产/停工/恢复/退出生产),PC 与移动端行为一致。
临时测试脚本与9个截图文件已清理。
新增 报工审核增强 :
修复生产主管移动端审核入口:isProductionManager() 的 role_code 列表缺 prod_supervisor 角色,导致唐海钢/柯绍财登录显示「报工」而非「审核」按钮;同步修复 PC 端审核权限。
新增「单价/工资」列与工资小计统计卡:config.php 新增 psStepPriceByReports() 批量查询报工对应工序单价,工资=单价×数量,自动套用班组掩码(其他班组显示***)。
报工审核卡片精简:仅保留姓名/时间段/产品名/系列名/工序/报工数量/不良数量/工价/提交时间(月-日 时:分),无详情按钮;删除订单号/交期/客户名/分类标签/工号职位;移动端按钮顺序左侧红色「驳回」、右侧绿色「通过/终审通过」。
修复 车间总览可执行卡片移除订单号徽章(头部栅格调两列)、产品编号按钮改深色青色系适配深色主题(页面级样式覆盖,同步影响物料明细与委外卡片编码);移动端操作记录页「总操作」改「全部」按钮,新增/修改/删除统计块改为可点击筛选按钮(保留配色、选中深蓝边框高亮、URL action 参数保留筛选状态、三类筛选可组合、PHP端过滤保证条数一致)。
部署 Windows+宝塔手动备份指引 :PowerShell 报「文件为空/Can't create/write to file」根因是未先建目录 → 先 New-Item -ItemType Directory -Force 再 mysqldump;密码明文警告属正常提示;推荐宝塔面板图形化备份与计划任务。
优化 组织架构页新增编辑入口:架构图继续由人事档案 manager_id/department/position 自动生成,人员卡片与部门一览行加铅笔按钮(org_set_manager 接口改直属上级+跳转人事档案),仅管理员/人事/有 personnel 写权限用户可见。
评估 全项目代码安全审计 (输出建议未整改,整改于 08-27深夜完成):审计覆盖约64张表、53个PC页+29个PDA页的PHP过程式单体——发现三项严重风险(打包/临时脚本无鉴权、代码中隐藏的管理员账号创建逻辑、ajax.php CSRF漏洞)及 .env 凭证/SQL备份/部署包可匿名下载、install.php 无安装锁等问题;同时确认 PDO 预处理、输出转义等安全实践良好,config.php 与 action.php 巨型文件为技术债;因当日优先功能开发,整改延至 08-27 深夜一次完成。
第十一阶段 · 文档体系与整包部署(08-24)操作说明书全体系、不良合并、权限红线、首次整包部署
2026-08-24(凌晨 · 文档体系建设)
完成《PC端操作说明书》(39张截图,覆盖登录/工作台/订单管理/生产管理等全部模块,每功能附分步骤说明与FAQ)与《移动端操作说明书》(24张手机截图、16章节、按角色区分说明);图片存 docs/guide_images,纯HTML+本地图片可直接浏览器打开,分发需连同图片文件夹。
编写《移动端操作说明书.md》(317行9大章节,含工序卡片8元素、9种按钮状态、报工弹窗6字段、单价掩码、颜色速查表、7条FAQ);期间因 IDE Write 工具故障改用 PHP CLI 分9段写入(解决超长命令截断与 PowerShell 中文引号问题,统一改用「」)。
PC端指导书深度扩充:产品交期页从4行简介扩为8小节(页面定位/统计条/周期筛选/操作按钮组/填写数量/生成订单草稿/批量导入/上传覆盖/自动保存与FAQ);7.3工艺流程章节扩为12小节(三Tab/编辑弹窗总览/阶段编排模型/工序表格10列/部门批量绑定/流水线绑定/关联设备物料弹窗/系列工艺详解),新增9张截图(pf_01~pf_09);补充客户管理、BOM管理、账号管理、系统设置字段表。
按部门分职位制作指导书体系:PC端 docs/department_guides/(00_索引 + 9册,含「09_行政人事 · 陆佩仪专册」)、移动端 docs/mobile_guides/(8册:生产部员工/班组长/主管、管理员、品质部、研发部、维修部、仓储部),每册含功能菜单表、底部标签栏、角色权限差异对比、分步操作流程、FAQ;新增「准备篇:登录与初始设置」(修改密码+列数设置解决卡片显示不全)。
指导书内容深度化:移动端24张截图重拍(iPhone UA+430宽视口、2列布局);新增卡片逐字段详解章节(工序卡片、报工弹窗、报工审核卡片,HTML复刻卡片样式+编号标注+字段对照表)。
2026-08-24(上午 · 移动端体验优化)
移动端主菜单「我的报工」统一进入个人报工记录页(Tab 默认 mine,领导级可切换「待我审批/我已审批」,底部「审核」按钮仅显式进入审批Tab时高亮);「我的计件工资」入口更名为「我的工资」。
生产报工卡片「不良」标签改为显示累计未处理不良(累计不良−已处理不良,未处理为0时不显示标签,PC+PDA)。
品牌文案统一:移动端浏览器标题与登录页「AERP」替换为「雄华盛世生产管理系统」(副标题「移动端工作台」),「PDA终端登录」改「移动终端登录」。
通用篇密码锁上线:部门密码规则 xh + 部门拼音首字母 + 2026 (生产部xhsc2026、品质部xhpz2026等,配置于 docs/guide_config.js,索引页免密;修改密码需清 localStorage;员工篇不设密码)。
维修部移动端生产安排卡片全部设为只读:根因是约19个未绑定部门的工序卡片对维修部显示为可点击按钮(点击后被服务端拒绝)→ 新增 isMaintDeptUser 判定并入只读条件(PC+PDA),悬浮提示「维修部仅可查看」,点击卡片看工序历史保留,班组长账号不受影响。
通用篇新增「怎么退出登录」章节(PC端顶部栏最右侧用户名旁/移动端底部「我的」→个人设置页最底部,配实拍截图);移动端360极速浏览器「添加收藏到主页」5张步骤图按序号补充部署。
指导书图片404排查:xhwork.top 域名指向的 Linux 服务器未部署 docs 目录导致 nginx 404 → 补充部署后 HTTP 200 验证通过;本地访问需 Ctrl+F5 强刷。
2026-08-24(下午 · 生产业务规则)
不良合并 (用户提出以减少品质工作量):
同一员工+同一工序(+同产品)的报工不良自动合并到同一张待处理卡片;已处置(返工中/闭环)卡片不并入;质检报告来源不良保持一单一卡。
数据层:defect_orders 表新增 employee_id/employee_name 列,新建 defect_order_sources 来源明细表记录所有合并来源报工;syncDefectOrders() 重写为优先查找同员工+同工序+同产品的待处理卡片累加数量、无则新建。
两端页面显示责任员工姓名、合并时间(首次 m-d H:i · 最近 m-d H:i)及合计数量;实测同员工同工序新报5件正确累加到已有卡片,测试数据已清理。
不良拆分处置 (用户确认返工和报废数量分别填写):
处置弹窗改造:4个方式卡片各带数量输入框(填数量自动高亮)、返工数量默认等于不良数量、实时显示分配进度(超量红色提示)、报废需填原因、让步需填批准人;支持组合拆分(如10个不良返工6报废4一次提交)。
后端 defect_disposition 接口改收4个方式数量:多方式时 disposition 存 'mixed',新增 disposition_detail 列存明细、rework_qty 列存返工数量(v24d迁移);返工工单数量取返工数量,含返工则状态为「返工处置中」,返工报工审批后自动闭环。
PC 列表/详情显示拆分明细并新增「混合处置(拆分)」筛选;PDA 卡片显示明细行;6份文档同步更新。
退出生产逻辑修正 :最后一名员工退出后工序回到「可生产」而非自动写「人员撤离停工」(品控叫停、维修停工除外——维修停工恢复需弹「已维修OK」确认框);退出后有人作业显示「生产中·人数」。
卡片视觉规范定型 :系列工序卡片改浅蓝描边(#90caf9)白底(原紫色边框影响紧急特效),「系列」「流水线」小标签浅蓝底蓝字;特急未完成工序红色闪烁边框、加急未完成黄色闪烁边框 (边框深浅交替+光晕呼吸,1.2秒循环);已完成工序(如0102刀轴开料6000订单)不闪烁——闪烁判定仅看紧急批次订单是否报满(特急交期≤明天或逾期、加急交期≤3天),已报量按交期就近瀑布填充。
等前工序交互 :员工可点击「等前工序」进入该状态,再次点击解除并回到「可生产」;停工中且无人作业的卡片按闲置状态渲染(可生产/等前工序/等物料,按实际条件重算,PC+PDA一致)。
换线停工清零 :用户确认文档相关内容清理完毕后,同步删除系统代码入口(pda/pages 的 production_schedule.php 显示层遗留),全项目「换线」相关内容清零。
生产部员工篇(05scyg.html)按指定目录重构:「一 初见」(顶部信息栏/主菜单按钮/底部导航栏)、「二 详情」(生产安排、生产报工等子项)、「三 我的工资」 ,新增锚点跳转与8张截图,旧版备份至 _tools/;删除「品质检验」章节(属品质部职能,保留查看性质的「品质报告」);工序收藏操作指引(点卡片中间→右上角收藏→返回排最前,含排序规则与取消方法)置于生产安排节最前;报工章节精简为「找卡片+填数量日期」两步并插入 yg5311/yg5312 截图。
2026-08-24(下午 · 订单与售后)
修复「订单选产品自动填客户」在重构中丢失的问题(orders.php 恢复 LEFT JOIN customers + onchange 联动),删除未绑定客户的测试产品 TEST-AUTO-003;明确产品-客户绑定规则:一个产品编码唯一绑定一个客户 。
订单管理页多项UI优化:产品编码按钮改纯下划线样式(includes/footer.php、pda/includes/footer.php、workshop_overview.php 三处 .code-text-btn 统一,解决额外占位);全选放开所有状态订单勾选限制并加大点击区域;订单产品明细只留产品编码(去掉数量后缀)、表头改「产品编码」+ table-layout:auto 列宽自适应;#tbl{width:auto}、收紧单元格内边距、统计卡片改弹性布局(d-flex flex-wrap gap-2)。
「售后服务」改造为「返工单」 :
页面标题/菜单/按钮全部改名;表格列调整为返工单号/产品编号/产品名称/数量/客户/主要问题/状态/创建时间(去掉原售后字段);新建弹窗含退回产品下拉(编码+名称)/数量/客户/主要问题/状态。
返工单号规则 = 产品编码后四位 + 0001起序号(不同产品独立计数);涉及 aftersales.php、action.php 保存逻辑与操作日志、config.php v24f 迁移及表结构、header.php 等4处菜单名称。
2026-08-24(晚间 · 权限收紧与打包部署)
人事主管权限红线 (用户明确):有账号管理权限,但不能修改管理员账号的密码。
计件工资单价强锁 :所有工序的计件工资仅管理员可修改——后端(action.php)非管理员提交的单价强锁为数据库原值,前端(process_flow.php)非管理员单价输入框置灰只读并提示,可见性收紧(非生产体系用户如人事看到的单价显示***)。
审批链核实(用户质疑审批顺序):以实际数据验证「员工提交→班组长一审→主管二审→终审」各级审批链正确(普通员工/班组长/主管三种提交路径);完成5个核心文件语法检查、数据库迁移(4新列+7审核状态枚举)、8个部门审批链验证,清理3个含数据库密码的临时调试脚本。
文档体系工程化收尾 :
生成21份PDF(与HTML手册一一对应,A4竖版、保留彩色背景与截图、底部页码、表格截图避免跨页截断、悬浮按钮隐藏):《PC端操作说明书.pdf》63页16.7MB、《移动端操作说明书.pdf》41页4.3MB、PC分部门册10份、移动端分部门册9份;PDF分发无需附带图片文件夹。
文件名统一拼音首字母(38个HTML+PDF,如「01 通用篇」→01ty.html、「03 生产部主管」→03sczg.html),同步更新20个文件引用;索引改 index.html 支持目录直接访问;删除9个早期 Markdown 草稿。
产品交期页操作说明升级:「上传覆盖」从危险操作改标注为每周三PMC常规作业 ;新增PMC标准作业流程章节(下载模板需先选周期、CSV UTF-8格式、Excel/WPS编辑要点、上传解析比对确认、收尾确认)与常见问题速查表(编码标红/Excel乱码等)。
docs 文档体系整体复制至 D:\wwwroot\xhsop 作为独立编辑副本(保持目录结构以维持相对路径引用,本地可双击预览,发布时以该副本为准覆盖回项目 docs 目录)。
项目规范确立 :文档、指导书、示例中一律不提王龙(生产部主管,试用期未转正),生产部主管举例只用唐海钢/柯绍财;处理完 03sczg.html、ins_q03.txt 及PDF,账号管理角色保留。
清理安全漏洞:删除 _cache 目录下23个历史测试文件(含伪造会话脚本与敏感信息)。
首次整包部署 :修复 work_report.php 末尾被注入的3行垃圾文本(system-reminder块致页面底部异常输出);118个PHP文件语法检查、53个PC页面渲染、28个PDA页面(2角色)测试及维修部只读权限回归全部通过;清理webroot下35个垃圾文件与install目录4个过时SQL dump(保留测试账号test02~test12);生成 D:\xhwork_deploy_20260824\(xhwork_deploy_20260824.zip 105MB + xhwork_db_full_20260824.sql 256KB,zip已验证路径兼容性与文件完整性);部署注意:导入SQL后删除服务器SQL文件、禁用install.php、改.env配置。另有 xhwork0824.zip 整包(含文档92张验证图片与 xhwork_db_20260824.sql,代码与SQL需同步更新)。
第十二阶段 · 口径统一与工资表(08-25)9部门统一口径、权限表重做、人事工资表上线
2026-08-25(早 · 车间总览与时间筛选)
车间总览时间筛选与卡片统一 :总工序KPI栏上方新增时间筛选按钮(当天/近7天/近15天/近30天/近3月);右栏工序卡片发现与生产安排页不一致 → 直接复用生产安排页的 $stepCards 数据实现一道工序一张卡(含产品编码/名称/工序信息/报量/交期/状态),并修复班组筛选功能(点击班组显示对应部门工序卡片)。
生产进度页同步改造 :新增与生产安排页相同的时间筛选选项按钮(样式与逻辑同步);删除整个班组下拉选项菜单(界面下拉框+后端相关参数与逻辑同步删除,部门筛选保留)。
搜索体系统一 :生产安排/生产报工/生产进度页删除部门筛选提示条及 clearDeptFilter() 函数;搜索框收窄至约180px固定宽度并新增搜索按钮(顺序:搜索框→搜索→重置,回车搜索保留);生产进度页在优先级下拉后新增同款搜索框,可按产品编码/名称/客户名过滤左侧产品列表(与其他筛选叠加生效、重置清除,原即时过滤搜索框保留)。
2026-08-25(上午 · 部门口径统一)
生产部门下拉统一 (用户要求固定9个):冲床、打蛋器、弹簧机、抛砂、碰焊滚焊、数控部、成品、搅拌杆、委外——config.php 新增 prodDeptOptions() 函数全站统一调用,PC端与移动端共7个页面的部门下拉改造完成,不再从人事表动态取部门。
周期文案统一 :按钮文案「XX交期」后缀全部去除,统一为今天/近7天/近15天/近30天/近3月(PC+移动端共7个页面)。
车间总览班组对齐 :班组导航卡片数量(7个)与生产安排页部门下拉(9个)不一致 → 修改为9张卡片与生产安排页保持一致(新增弹簧机、数控部、委外)。
委外混入修复 (用户反馈:生产安排页冲床部门混入委外工序卡片):原逻辑中委外工序跳过部门筛选 → 修复后委外工序仅在筛选范围含「委外」时显示;共修复8处(PC/PDA × 生产安排/生产报工 × 产品/系列工序卡片)。
2026-08-25(下午 · 权限表、工资表与收尾)
PC端角色权限表重做 (用户要求按侧边栏9个菜单分组排列):
权限模块按侧边栏9个分组重排,新增「覆盖页面」列标注各模块控制的实际页面(与 $_PAGE_MODULE_MAP 一致);删除无效模块「用户管理(users)」。
批量设权限弹窗同步更新为分组下拉;49个侧边栏页面权限域全覆盖。
人事·工资表上线 (仅管理员和人事/行政主管可见):
新增 salary 页面与 salary_sheets 表:按月管理、工资构成自动核算(应发=基本+津贴+奖金+加班+计件;实发=应发−社保−其他扣款)、计件工资一键带入、防重复(同一员工同一月份仅一条记录,唯一键生效)、员工信息自动带出。
改动文件:config.php(建表+权限配置)、salary.php(新页面)、action.php(save/delete接口)、index.php/header.php(注册与菜单入口)、roles.php/menu_management.php(权限与菜单配置);hr 角色自动获得 salary=write 权限(有 personnel 权限的角色自动补发);陆佩仪需退出重新登录可见菜单。
测试数据计算正确且唯一键生效,验证后已清理。
工资表统计口径确认 (用户询问bug后澄清):工资表统计的是生产作业时间段的工资而非报工时间——PC端工资表(piece_wage.php)、Excel导出(action.php)、PDA「我的计件工资」(pda/piece_wage.php)均按作业开始时间(start_time)统计,start_time 为空时回退按报工时间(created_at);现有13条报工记录验证新旧口径日期一致,页面顶部筛选栏可选作业时间段。
离职账号自动禁用确认 (用户询问):两处逻辑实现——单个员工编辑(action.php)与批量转离职时,员工状态改「已离职」自动执行 UPDATE users SET status='disabled' 停用登录账号,改回「在职」自动恢复 active;登录接口仅允许 active 用户登录(PC/PDA一致);离职员工再入职复用原档案改回「在职」即可自动恢复账号。
数据库例行备份:db_backup/xhwork_20260825.sql(67张表全部导出、35组INSERT数据、约258KB;--single-transaction 备份,PROCESS 权限警告不影响内容;恢复命令 mysql -u xhwork -p xhwork < xhwork_20260825.sql)。
第十三阶段 · 品质报告上线与巡检体系定型(08-26 ~ 08-27)双端品质报告新页、品控叫停改巡检、报废/让步照片留痕、报废三级审核链、工资表全自动生成与高温补贴、批量导入三件套、BOM能力矩阵(盘点/测算/导入导出/移动端查询)、全站弹窗遮罩修复、越权漏洞与提示词全站清扫、PDA质检三页独立、全站BUG检查与CSRF补强
2026-08-26(凌晨 · 编码与状态一致性修复)
修复 CSV上传乱码 (产品交期/交付进度表格上传中文乱码):order_generate.php、delivery_progress.php 共3处CSV上传入口,readAsText(file,'UTF-8') 改为 readAsArrayBuffer + decodeAuto() 智能编码识别(UTF-8 BOM检测 → 严格UTF-8解码 → GBK回退 → 失败提示);兼容 Excel 中文Windows默认GBK导出、WPS/Excel「CSV UTF-8」格式、纯英文CSV与TXT粘贴内容;PDA端无上传入口不受影响。
修复 管理员无法删除物料 :前端删除按钮 POST 提交(id 走 $_POST),后端 material_delete 等操作只读 $_GET['id'],导致 $id 恒为0——action.php 中 material_delete、material_toggle、personnel_delete 等6处改为 $_POST ?? $_GET 双兼容(product_delete 等原本 GET 提交的操作无需改动),CSRF 与权限控制不受影响。
修复 车间总览工序卡片状态与生产管理页不一致 (冲床两张卡片误显「维修停工」):根因是总览页状态判定仅两层(action+reason),生产安排页有5层降级逻辑决定 curState,老暂停记录未正确降级——workshop_overview.php 同步5层降级逻辑及按钮状态/颜色/图标/显示内容/权限/停工状态条;普通员工操作在本页完成,管理人员跳转生产安排页。
2026-08-26(上午 · 库存预警与报工审核修正)
修复 车间总览物料卡片数据不准 :SQL两处缺陷——①过滤掉了未设安全库存但库存为0的物料;②字符串数字比较导致字典序误判。修复后物料卡片数字与物料管理页警告标行数一致。
新增 库存预警全链路可视化 :车间总览物料KPI卡片与物料管理页增加红色边框闪烁、预警徽标、跳转筛选与表格行视觉分级;修复 stock_alert.php 漏数规则实现同口径;三处页面预警判定从「小于等于」统一改为「严格小于」(小于预警数才提示,等于不提示)。改动 workshop_overview.php、materials.php、stock_alert.php 三个文件。
修复 报工页功能定位错误 :审核功能误从「报工(生产报工)」页跳转,应从「报工审核」页进入;PDA my_reports.php Tab 重构——删除「我的报工」Tab,仅保留时间段筛选(当天/昨天/近7天/近15天/近30天)与审批状态筛选(待我审批/我已审批);班组长可查看本部门员工报工及状态。
2026-08-26(上午~中午 · 品质报告双端上线)
新增 PC端品质报告页 (pages/quality_reports.php,680+行,8大分析模块):KPI概览卡(6项)、30天趋势图、检验类型分布、缺陷来源环形图、缺陷帕累托分析(近30天,quality_defects 与 defect_orders.defect_category_id 合并去重)、责任部门缺陷分布柱状图、三大排行榜(产品合格率最低TOP10/工序不良率最高TOP15/质检员绩效TOP20)、底部快捷跳转栏;index.php 路由白名单与 header.php 菜单入口($qcPages)及时间筛选栏($_pcFilterPages)同步注册。
新增 移动端品质报告页 (pda/quality_reports.php):KPI仪表盘、缺陷帕累托图、双层Tab筛选、关键词搜索、报告卡片、全屏详情面板、分享弹窗与删除表单;配套 pda/includes/header.php(时间筛选白名单)、pda/includes/footer.php(QC tabbar入口)、action.php(quality_delete 跳转bug修复)。
修复 品质模块安全漏洞 (全项目BUG检查发现):
quality_share / quality_share_clear 缺权限校验(高危,信息泄露)→ 补 isQualityManager() 校验。
PDA品质报告AJAX详情接口越权访问 → ajax=detail 分支加 isQualityManager() 校验,非品质部人员返回403。
PC端 pages/quality.php 分享/删除按钮对非品质人员也显示 → 新增 $canManage 变量条件渲染隐藏。
遗留关注:分享token无过期机制(永久有效),建议后续加时效。
优化 PC端登录默认页改为车间总览 :index.php 默认页 dashboard → workshop_overview,登录成功跳转与已登录访问 login.php 的自动跳转均生效(其他无权限跳转仍回 dashboard)。
2026-08-26(中午~下午 · 考勤批量与提示词全站审查)
优化 PDA考勤管理批量填写 :列表布局改表格布局(按部门分栏:姓名/职位/小时输入框/状态下拉颜色区分/备注标记);新增批量工具栏「全填11h/全填10h/全填8h/全填0h」一键应用到所有员工(状态不变);保留原自定义小时+状态的「全部应用」;后端 attendance_pda_batch_save 接口不变。
修复 提示词逻辑修正 :批量记考勤全部失败仍显示绿色成功 → 改红色「保存失败:所选员工不在您的部门范围内」或黄色警告;内部术语「越权跳过」改「非本部门跳过」;请假提交成功提示补日期时段与时长(如「请假申请已提交(2026-08-26 13:00 ~ 2026-08-26 17:00,4 小时),等待审批」)。
修复 全项目提示词审查 (374处 setFlash 及全部 confirm/alert/JSON提示):①action.php 中11处 setFlash('error') 因 Bootstrap 无 alert-error 类导致报错显示为无色白框 → 改 setFlash('danger',…);②PDA header.php 原仅定义 success/danger 样式致 warning/info 提示透明不可见 → 补黄底warning与蓝底info样式。其余项(删除/停用成功提示、catch 输出、权限语义、confirm对应性)核查无问题。
2026-08-26(下午 · 权限收口与工资表增强)
修复 「等前工序」解除权限漏洞 (原逻辑任何登录员工都能解除限制并开始生产,前置校验形同虚设):
release_prev 接口收权:仅生产管理人员可操作,普通员工调用被拒并提示。
start 接口新增 checkStartPrereq() 校验:遍历活跃订单,任一符合特急/交期≤1天/已解除等条件即放行。
前端按钮普通员工灰禁并提示,管理人员保持可点击。
涉及6文件:action.php、pda_action.php、includes/prod_control.php、pages/production_schedule.php、pda/production_schedule.php、pages/workshop_overview.php;普通员工按钮禁用/接口被拒、管理人员可解除、特急与交期≤1天订单不受限三类场景验证通过。
新增 工资表餐补+高温补贴 :餐补按日考勤自动核算(出勤≥10小时24元/天、满4.5小时不足10小时12元/天、不足4.5小时或缺勤/请假0元,数据源 attendance_records 表);高温补贴手动录入;应发合计公式更新为含两项;db补丁缓存标记 v26→v27;改动 config.php(字段)、action.php(接收保存)、pages/salary.php(列/统计卡/弹窗)。
修复 pda_action.php 三个越权漏洞 (全项目BUG检查):①委外单 pda_outsource_draft/save/status/delete 接口缺 outsource_orders 模块写权限校验 → 补 hasPerm('outsource_orders','write');②报工修改申请 pda_report_mod_request 未校验报工归属 → 限本人/生产管理/管理员可提交;③报工详情 pda_report_detail 无归属校验致信息泄露 → 限本人/生产管理/品质部人员可查看。普通员工与有权限账号双端验证通过。
优化 工资表可见范围分级 :普通员工只看自己;班组长/生产主管及其他部门上级看自己和下属;人事/管理员看全部——config.php 新增 salaryViewScope()、index.php 将工资表移出hr-only页面清单、pages/salary.php SQL过滤+范围徽标、includes/header.php 全员显示菜单入口;普通员工/班组长/行政主管/人事·管理员四角色登录验证及直连编辑链接权限控制均通过。
优化 品控叫停记录增强 :品控叫停本就记入工序历史(pause → production_status_log,「品控」标签显示起止时间和时长),本次强制要求填写说明(qc_note)并上传现场照片(qc_images)——PC/PDA生产安排页新增品控叫停表单、action.php/pda_action.php 后端强制校验、工序历史表新增「说明/现场照片」列;涉及6文件(config.php、action.php、pda_action.php、pages/production_schedule.php、pda/production_schedule.php、pda/production_step_history.php)。
2026-08-26(晚间 · 发料批量填充与BOM弹窗修复)
新增 订单发料「按数量批量填充」 (pda/order_issue.php):数字对话框+确认按钮,按输入数量N批量填充物料领用量;初版公式含损耗率,按用户反馈修正——最终填充量 = N × BOM单件基础用量(不含损耗),BOM汇总视图与按产品视图两套计算统一(页面「需」量仍按含损耗口径:BOM用量×订单数量×(1+损耗率));数量输入框 step=any 支持小数。
修复 BOM编辑弹窗显示不全且未居中 (本地代码缺陷,线上版本无此问题):统一修复四个弹窗——BOM编辑弹窗、系列BOM弹窗、BOM结构树、快速新建物料;采用 flex 布局、自适应宽度与限高滚动方案。
2026-08-27(凌晨 · 报工审核页三项调整与主管管辖权限修正)
修复 报工审核页部门下拉数据源缺陷 :管理员账号原数据源只显示已有报工的部门(导致下拉仅见「冲床部」等个别部门)→ 改为从人事档案拉取全部部门(含暂无报工的部门);班组长仍只看本部门(权限设计不变)。
优化 部门口径统一与系列报工标签 :①部门下拉改用 config.php 统一 prodDeptOptions(),排除研发等非生产部门,仅显示含委外在内的9个生产部门;②报工审核列表「订单/产品」列——系列工序报工(series_code 非空)显示浅蓝「系列」标签+系列名(如 HB21),普通产品报工仍显示产品编码+名称;改动 work_report_review.php 两处,无数据库变更。
修复 主管管辖权限失效 (唐海钢反馈能看到冲床部):根因为判定式 hasPerm('order_progress','write') 把生产主管判为「可看全部」,导致管辖部门逻辑未执行——修正后班组长/生产主管即使有写权限也强制走组织架构限定,唐海钢仅见成品/搅拌杆/打蛋器三部门报工,柯绍财仅见抛砂/碰焊滚焊/冲床三部门报工。
2026-08-27(上午 · 工资表自动化与筛选体系重构)
优化 生产进度页产品列表取消高度限制 (pages/order_progress.php):移除 .op-list-panel 的 max-height:calc(100vh-220px) 与 position:sticky、.op-list 的 overflow-y:auto——产品/系列列表随内容自然撑开整页滚动,右侧详情区不受影响;PDA 端本无高度限制(仅部门下拉260px弹层属正常交互)。
新增 报工审核页筛选体系重构 (pages/work_report_review.php,08:45~12:39 六轮迭代):
时间范围筛选:全部/今天/昨天/前7天/前15天/前30天/前3月(按报工时间 created_at 过滤,状态保留,顶部统计卡联动)。
筛选栏三行布局:第一行日期按钮组 → 第二行审核状态按钮组 → 第三行搜索条件(订单号/产品编码搜索框 → 部门下拉 → 员工/工序 → 搜索 → 重置),搜索框支持订单号与产品编码模糊查询(OR 条件)。
月历选择对话框:「月/日」输入框点击弹出月历——默认定位当前月(已选过则定位所选位置)、支持跨年导航(«‹›»)、今天橙色边框、选日(月-日格式)或「选整月」(月格式)后自动提交查询、Esc/×/背景点击关闭不改变筛选;经「选择器→手动输入→月历对话框」三轮方案演进定型。
新增 全员工资表一键生成 (pages/salary.php + action.php salary_generate_all):遍历在职员工生成当月工资记录(计件工资+餐补自动带入),已有记录的员工自动跳过,事务写入保证一致性;后进一步升级为全自动生成 ——config.php 新增 autoGenerateSalarySheets() 公共函数,页面加载时自动补建(INSERT IGNORE 幂等防重,仅人事/管理员触发),删除手动生成按钮。
新增 全员高温补贴 (action.php salary_set_heat_all):工资表页新增「全员高温补贴」按钮(仅人事/管理员可见、当月无工资记录时禁用)——设置弹窗提供统一金额输入与「仅填充当前为0的记录」选项,金额校验(≥0且≤100万),完成后提示实际变更条数;夏季发放流程定型:生成全员记录→设置全员高温补贴→完成。
新增 工资表表头交互 (13列排序+部门筛选):应发合计/实发工资经 SQL 计算列(gross_calc/net_calc)排序保证金额准确;排序走 URL 参数刷新不丢状态、排序字段后端白名单校验防注入;部门列下拉筛选与顶部筛选栏联动(同一参数);行内编辑链接携带全部筛选/排序参数,保存后返回原视图;与列显示/隐藏功能兼容。
2026-08-27(中午 · 巡检体系定型与不良处置留痕)
修复+新增 报废/让步接收处置强制上传照片 :后端 action.php defect_disposition 接口校验——报废或让步接收数量>0 时必须至少上传1张照片(jpg/png/gif/webp、单张≤8MB、最多9张,与品控叫停同规格),否则拒绝提交;照片存 uploads/disp_* 路径,JSON 存入 defect_orders.disposition_images(config.php v24g 迁移自动建列);PC/PDA 处置弹窗均新增「现场照片」上传框与缩略图预览(随数量>0自动显示标红星、JS 前置校验),PC 列表/详情弹窗、PDA 已处置卡片均显示照片缩略图点击看大图;卡片提示更新为「需填写原因+照片」/「需填写批准人+照片」。
决策 品控叫停改为巡检体系 (PC+PDA 四文件):生产安排页工序卡片按钮由「生产中 · N人(品控叫停/巡检)」改为「巡检 今日次/订单次/工序累计次」——今日次=当天该产品/系列+工序巡检次数、订单次=该产品/系列+工序累计巡检次数、工序累计=该工序号跨所有产品/系列巡检总数;点击直接打开巡检表单;后端 action.php/pda_action.php 拒绝直接提交「pause+品控叫停」请求,唯一叫停路径为 ipqc_submit 巡检结论不合格自动写入停工日志 ;停工弹窗中「品控叫停」按钮及 qcStopForm 表单移除;解除叫停(恢复)按钮与维修/缺料停工流程不受影响。
新增 巡检不良率自动计算 (PC+PDA 六文件):不良率=不良数量÷抽检数量×100% 保留1位小数;>0 显示红色、0% 显示灰/绿色;巡检弹窗 UI 同步调整、巡检记录展示数据查询修复(原 $data['ipqc'] 从未被 psStepHistory() 返回)、CSV 导出更新、真实数据验证。
清理 PC端删除「新增物料」子菜单与页面 :删除 pages/add_material.php 页面文件、左侧导航仓库组子菜单链接、index.php 白名单、菜单管理可配置项、save_pc_menus 合法菜单键、config.php 权限映射(add_material→materials)、roles.php 模块描述、action.php material_batch_save 处理器——新增物料统一收敛到物料库存页「添加物料」弹窗(material_save 保留);PDA 端新增物料(pda_material_save)不受影响。
2026-08-27(下午前段 · 批量导入三件套与BOM能力矩阵)
新增 产品库存批量导入 (pages/product_stock.php + action.php product_import):导入弹窗支持文件选择/Excel复制粘贴/CSV模板下载三种输入,字段为产品编码、名称、客户、分类;「仅新增」与「新增并更新」两种模式(更新模式留空单元格保持原值);服务端二次校验(编码必填/字段长度/去重)+事务执行+操作日志;客户按名称精确匹配、不存在自动新建。
新增 物料批量导入 (pages/materials.php + action.php material_import):参照产品导入成熟模式,10列导入字段(编码/名称/分类/规格/单位/安全库存等),解析预览+新增/更新双模式+默认值设置+操作日志。
新增 库存盘点按产品BOM盘点 (pages/stocktake.php 重构 + config.php v25c 迁移):每行一个产品分别设置数量,BOM 递归展平到物料层(最深5层)+同物料跨产品自动汇总需求,「含损耗」开关精确计算用量,自动生成盘点明细及默认实盘数量;stocktake_items 新增 required_qty 列持久化需求量;顺带修复三个既有 bug——编辑盘点单实盘数量被覆盖、分类盘点漏取 category 字段、差异列 toFixed(0) 四舍五入。当前系统 7222751950/7222752403 两个产品有活跃 BOM 可测试。
新增 PDA物料库存「按BOM查」 (pda/stock_query.php):新增标签页——产品选择、BOM物料明细递归展开(深度上限10层)、计划生产数量计算、汇总统计;成品库存 tab 产品卡片增加「查BOM物料库存」跳转按钮;损耗率口径与 MRP 页一致。
新增 BOM物料导入/导出 (pages/bom.php,产品BOM与系列BOM通用):导入支持 Excel 复制粘贴/CSV/TXT 文件/CSV 模板,处理编码、名称、用量字段(编码优先匹配、未命中按半成品产品编码回退、分数用量如 1/48 解析、重复行三种处理模式)+解析预览;导出生成 UTF-8 带 BOM CSV(编码/名称/用量/类型/损耗率),导出文件可直接再导入形成闭环;40项冒烟测试+25项 Node DOM 测试通过。
新增 物料管理「BOM测算」 (pages/materials.php + ajax.php bom_capacity 接口):输入产品编码(支持联想)+可选「含损耗」口径→按启用 BOM 递归展平物料层,计算每种物料可支撑件数取最小值;结果含绿色/红色结论条、瓶颈物料标红、明细表(编码/名称/单位/单件用量/库存/可支撑件数);实测 7222751950 搅拌刀因12种核心物料负库存结论为 0 件(负库存物料红色高亮)。
2026-08-27(下午中段 · PDA质检三页独立与来料供应商口径)
优化 PDA端三个质检页面完全独立 (pda/quality.php + pda/includes/header.php,经三轮迭代):①「过程检验」统一更名「生产巡检」(pda/quality.php 与 pda/quality_reports.php 显示文字,URL 参数 type=process 与后端逻辑不变,PC端不受影响);②页面标题按检验类型动态显示(来料检验/生产巡检/成品检验),与首页菜单入口一致,顶部返回按钮优化无历史回退逻辑;③移除页内三类型切换标签栏,检验记录列表按本页类型隔离显示、记录区标题独立——三页从共用一页变为各自独立的完整页面。
优化 PC来料检验「部门」列改为「供应商」列 (pages/quality.php):业务确认来料检验与生产部门无关、检验员部门信息对查询无价值——列表「部门」列更名「供应商」(数据取物料对应采购单,同一物料多张采购单时取最近一张),搜索筛选栏部门下拉改为供应商下拉(取采购单 DISTINCT 供应商),列筛选菜单与列显示开关同步更新;PDA 端来料检验记录同步附供应商信息;生产巡检/成品检验页不受影响。
2026-08-27(下午后段 · 全站弹窗修复与功能增强收尾)
修复 全站弹窗遮罩黑色透明块 (影响约50个PC页面):弹窗弹出时左上角出现黑色透明块——根因为 Bootstrap modal-backdrop 遮罩层的 100vw/100vh 单位被全局 body.style.zoom 缩放机制二次缩小;修复方案为 includes/header.php 全局样式中让遮罩层使用 --fixed-sw/--fixed-vh 反缩放补偿变量,一次性解决全站所有弹窗与侧滑面板在非1920宽度窗口下的问题;全站排查确认所有 PC 页面共用 header.php 均已被覆盖,PDA(独立 header 无 zoom 机制)与独立页面(登录页/分享页无 zoom 脚本)不受影响,其余 vw/vh 用法不构成视觉 bug。
修复 BOM弹窗不居中与滑块问题 (pages/bom.php + includes/header.php,经三轮演进):弹窗不居中根因为 1920 设计稿等比缩放导致 fixed 定位弹窗容器二次缩小——通过 --fixed-sw/--fixed-vh 反缩放变量 + flex(align-items:center)+ margin:auto 实现全弹窗水平垂直居中,去掉 min(100vw,…) 钳制与高度限制使内容自然撑开、移除内部滑块改整窗滚动;修复 fixZoomedModal 的 display 属性隐患;1920×1080 大屏无回归,Playwright 实测通过(含 BOM 编辑/系列BOM/BOM结构树/快速新建物料四个弹窗)。
新增 产品库存「客户」列与筛选修复 :新增客户列(products.customer_id 关联客户表取名称,位置在产品名称后、分类前,无客户显示空白),列表头下拉筛选与分类/类型列交互一致;排查发现筛选功能实际已存在但因 JS 组件嵌套 script 标签语法错误无法使用(renderTableHeaderJS 自带 script 标签不能被包在 script 里、renderColToggleJS 输出裸 JS 必须位于已打开的 script 块内)——修复后分类/客户/类型列可筛选、编码等五列可排序;全站27个页面及PDA排查确认产品库存页是唯一一处且已修复。
新增 MRP物料需求分析按产品筛选 (pages/mrp.php):筛选栏新增「产品」筛选(客户筛选旁)——点击弹出带搜索框多选下拉(输入编码/名称实时过滤),显示产品编码、名称、计划条数、计划总量及涉及客户(多客户聚合),支持多选/全选(当前搜索可见项)/清除;products[] GET 参数经 ps.product_id IN(...) 过滤交期计划表,产品下拉随时间范围与客户筛选动态生成,顶部及底部统计联动;切换时间范围/应用客户筛选保留产品筛选,「重置」清除全部。
新增 质检四子菜单「昨天」时间选项 (includes/time_filter.php + header.php):来料检验/生产巡检/成品检验/首件确认四页日期按钮统一新增「昨天」选项;修复时间按钮切换时丢失子菜单参数(type)的问题。
新增 生产巡检页「工序巡检记录」卡片 (pages/quality.php type=process):数据来源 ipqc_records 表,表头统计+表格列(巡检时间/产品或系列/工序/部门等)+独立筛选栏(9生产部门);缩略图超4张显示+N点击看大图;不合格记录自动显示红色「已叫停」徽章;仅生产巡检页显示不影响其他质检页面。
确认 成品检验与巡检的部门口径 (业务确认非开发):唐海钢下属3个成品班组(成品/搅拌杆/打蛋器)为工艺流程最后一环,产出为成品检验对象;其他部门(抛砂/碰焊滚焊/冲床/弹簧机/数控部/委外)产出为半成品对应巡检;系统中成品检验报告部门列显示检验员所在品质部,与生产班组无关联。
2026-08-27(傍晚 · 全站BUG检查与CSRF补强)
修复 全站BUG检查:1个必现BUG + 5处加固性修复 (共6个文件):
必现BUG——PDA巡检照片上传路径错误 :pda_action.php 中上传目录指向站点外不存在的路径 → 改为与 PC 端 action.php 一致的 __DIR__ . '/uploads/';核查历史数据健康,无需迁移。
5处加固——手动构建 FormData 的 AJAX 提交显式注入 _csrf token (footer.php 的 fetch 覆写仅自动附加 X-CSRF-Token 请求头,手工 FormData 字段仍需显式携带):涉及 PC/PDA 不良处置提交、PC 工序历史页收藏切换、PDA 我的报工审核与修改审批;PDA 端同步补充 _pda=1 参数确保无 Referer 时正确鉴权;车间总览页 fetch 拦截器统一注入 _csrf(WS_CSRF 变量)。
验证 :6个改动文件 PHP 语法检查通过;Playwright 实测 8/8 处 token 注入生效、无 PHP 报错、端到端提交返回业务 JSON 且 CSRF 防护有效。
2026-08-27(晚间 · 报废审核链上线)
新增 不良单报废数量三级审核链 (续接前次中断任务完整交付,PC+PDA 双端):处置时报废数量>0 自动触发审核——一审品质主管 → 二审工序对应部门生产主管 → 终审刘总/管理员,状态流转 pending → qc_approved → prod_approved → approved;任一级驳回即报废作废(不冲减、不扣款,无返工在途则主单闭环)。
终审通过自动执行(事务) :①冲减该产品/系列工艺路线中不良工序之前的所有前工序生产进度数量——幂等 scrap_offset_done 标记防重复执行,明细写入 defect_scrap_offsets 新表;来源报工带 series_code 按系列维度、否则按产品维度;有工序号冲减其之前全部工序、成品检(无工序)冲减全部工序、来料检不冲减。②按终审扣款明细生成负数计件工资(piece_wages,数量/单价为0、金额为负,扣款人未带ID时按人事档案精确匹配,明细 JSON 存 scrap_deduct_final)。
二审人定位 :flowStepBoundDepts()(产品流程优先、系列流程兜底找工序绑定部门)+ scrapProdSupervisorIds()(班组长上级=生产主管、无班组长取部门主管本人);实测冲床→柯绍财、成品→唐海钢。
界面 :PC/PDA 不良处理页新增「报废审核」Tab(仅品质主管/生产主管/管理员可见)——卡片状态徽章(报废待一审(品质)/待二审(生产)/待终审(刘总))与各级审核信息、审核弹窗含终审扣款明细(可按比例分配)与冲减工序预览;处置提交含报废数量时提示「报废数量已提交审核:品质主管一审 → 工序生产主管二审 → 刘总终审(终审通过后扣款、冲减前工序)」。
涉及文件 :config.php(v24h 迁移:defect_orders 新增20个 scrap_* 列 + defect_scrap_offsets 冲减明细表 + scrapProdSupervisorIds/flowFlattenStepsJson/flowStepBoundDepts/scrapOffsetMap 四个辅助函数)、action.php(scrap_review 动作:审核级别与单据状态匹配校验+三级权限校验+终审冲减/扣款事务)、pages/defect_handling.php 与 pda/defect_handling.php(报废审核 Tab+弹窗;PDA 端审核弹窗 HTML 与 openScrapReview/submitScrapReview JS 为本次续接补齐,提交走 action.php 带 _pda=1)。
验证 :4文件 PHP 8.2 语法检查通过;DB 迁移生效(临时验证脚本 _tmp_check.php 验证后已删除,避免根目录遗留无鉴权脚本);组织架构定位与 BOM 展平(7222752403 45道工序)实测正常;待用户验收——PC+PDA 刷新即可使用:品质主管处置含报废数量的不良单 → 报废审核 Tab 三级审核。
第十四阶段 · 安全整改与流程深化(08-27深夜 ~ 08-30)审计三项严重风险整改下线、人事批量导入与社保/返聘/合同增强、领料两步流程、返工工单工序指定与工资开关、BOM迁移收尾修复、角色权限模块级→页面级改造、PDA巡检页工序化重构、来料检验照片留痕与轻量测试框架、移动端全面检查、维修主管角色上线、车间总览显示修复、产品交期页面清理、隐藏管理员账号恢复启用、订单导入生成链路攻坚(弹窗遮罩/去重累加/跨月视图/未匹配编码一键入库/批量删除)
2026-08-27(深夜 · 三项严重安全风险整改下线)
安全 08-23 安全审计三项严重风险全部整改 (服务器侧+本地代码同步,业务功能回归正常):
隐藏管理员账号下线 :移除 config.php 中自动创建隐藏管理员账号的代码逻辑;历史遗留隐藏账号在数据库中禁用(users.is_hidden)——账号管理列表原已过滤,本次补齐人事档案页关联账号下拉与姓名/工号自动匹配的过滤,隐藏账号全站不可见(可见账号31个)。
ajax.php CSRF 漏洞封堵 :POST 入口统一接入 validateCsrf();bom.php 前端提交补 CSRF token 与同源头请求头校验。
敏感文件与部署面收口 :删除服务器 install 目录(安装器无安装锁、可被覆写 .env);nginx 配置屏蔽 .env 凭证、全量 SQL 备份、部署包等敏感文件与目录的匿名访问(此前可被匿名下载),备份 nginx 配置后重启生效。
决策 返工损失处理方案讨论 (建议稿未实施):返工已有完整闭环但缺与报废对等的损失度量(实质为同一件支付两次工钱)——建议返工报工审批通过后自动汇总返工工资/工时记入不良单并进入品质统计报表,由刘总在月度工资审核时统一决定扣款,不为返工增设审核关卡拖慢产线;次日「返工工序指定+工资开关」先落地(见 08-28)。
2026-08-28(上午 · 人事批量导入与社保/返聘增强)
新增 人事档案批量导入 (pages/personnel.php + action.php personnel_import,端到端验证 20/20 项通过):针对「直接导入文本表格容易报错」痛点做防报错设计——Excel 复制粘贴/CSV/TXT 文件上传/CSV 模板下载三种输入,表头自动识别、分隔符自动识别、编码自动识别(UTF-8 BOM 检测/GBK 回退)、日期多格式解析、导入预览与分类统计;服务端二次校验+事务包裹+单次导入上限 1000 行;开发中顺带修复前端日期校验缺失(如 2026-13-05 非法日期原可提交)与更新模式下性别留空被默认值覆盖两处问题;测试账号、数据与临时脚本已清理。
优化 社保页面表头重构 (pages/social_insurance.php + config.php 社保公司编号列):原4个分区表合并为一张统一台账表,表头严格按指定顺序(工号/姓名/部门/岗位/身份证号/性别/状态/年龄/入职日期/扣保开始日期/扣保截至日期/社保所属公司编号,外加勾选列与操作列)——扣保起止日期对应原起缴/停缴月份数据;personnel 表新增 social_company_no 列 + social_company_no_save 行内编辑保存接口(人事写权限+CSRF 校验);状态双标签显示;年龄自动计算(支持 18 位/15 位身份证号);越权拦截测试通过;原有筛选/统计卡片/批量操作全部保留整合。
新增 返聘管理到龄提醒规则 (pages/rehire_management.php,8组边界场景+20项Playwright断言验证):女 50 周岁、男 60 周岁退休年龄提醒(出生日期取身份证号自动计算,支持18/15位证),与返聘合同到期提醒合并到同一张 KPI 卡片「即将到期/到龄(30天内)」;表格新增「性别/年龄」列;徽标分两档——「已到龄·女50/男60」(深橙)与「将满50岁·N天/将满60岁·N天」(橙色);到龄后办理返聘登记自动停止提醒、已离职人员不提醒;返聘合同已过期且到龄的人员在「已过期」徽标旁附加到龄提示;状态筛选新增「即将到期/到龄」选项;当前 30 名员工身份证号为空暂不触发提醒,需人事档案补录后生效。
2026-08-28(上午后段 · 领料两步流程与返工工单增强)
新增 领料两步流程:车间提交领料单 → 仓库照单发料 (action.php issue_material/issue_confirm + pda/order_issue.php,config.php 领料两步迁移:material_issues 新增 requester/confirmed_at 列、material_issue_items 新增 req_qty 列):
车间提交领料单生成「待发料」单据(MI 单号,status=pending,记录申请人与申请时间),提交不扣库存 ;仓库照单发料时按实发数量扣减库存并生成库存流水(operator=发料经手人、confirmed_at=确认时间);驳回/取消不影响库存。
PDA 端补齐功能缺口:首页「待发料领料单」列表(仓储部/管理员可见)、底部抽屉式照单发料确认弹层(openIssueConfirm 等三个函数)、领料记录展示单据号/申请人/申请时间;PC 与 PDA 两端界面一致。
新增 返工工单增强:返工工序多选 + 返工工资开关 (v24i 迁移:defect_orders.rework_steps/rework_paid、work_reports.wage_exempt,PC+PDA 共5文件):品质主管处置时返工数量>0 出现返工工序多选清单(来源=产品+系列工艺路线并集去重,默认勾选不良发生工序)与「返工工资:计件/不计件」单选(默认计件兼容旧行为);RW-YYYYMMDD-NNN 返工工单携带工序与工资标记;PDA 返工报工关联工单时只能报工单指定工序(前后端双重校验)、不计件工单报工标记 wage_exempt=1 免计件;计件工资预览/生成排除免计件报工;自动闭环升级——指定工序的工单须所有工序都有已终审返工报工才闭环(存量工单保持原逻辑);卡片与详情弹窗显示返工工序与工资标记,PDA 工单横幅显示工序数+计件状态。
修复 工序流程页「关联BOM物料」不加载 (action.php + pages/process_flow.php):根因为 08-27 BOM 管理改造后数据已迁入 bom_headers/bom_items、旧表 product_bom 已删除,但 bom_material_options 与 order_prep_bom_by_series 两处接口仍查旧表且 SQL 异常被 catch 吞掉返回空——改查新表(物料选项 key 改为物料 ID 并附 legacy_key 兼容旧格式关联键,备料聚合需求量按含损耗口径与 MRP 一致);process_flow.php 勾选回显同时匹配新旧键、空列表提示改指「BOM管理」;验证 7222751950 返回 14 项物料,全站已无 product_bom 活查询,保存后生产进度图备料闪烁提示恢复。
2026-08-28(上午中段 · 角色权限表全站重建与合同管理修复)
新增 角色管理权限表全站重建 (includes/config.php + pages/roles.php):此前映射表只显式登记 28 个页面、其余靠隐式回退,品质报告(quality_reports)模块未进权限编辑器导致除管理员外无人可授权。
$_PAGE_MODULE_MAP 重写为 54 条显式映射 (53 个权限控制 PC 页 + wi_view 独立入口),按侧边栏分组注释,表头注明三类例外(全员公共页 dashboard/workshops/workshop_overview/profile/leave_apply/salary、人事专属 5 页、个人页)。
roles.php moduleGroups 重建:31 个权限模块按 9 个菜单分组,每模块 note 列出覆盖页面;新增「全站页面权限覆盖总览」面板 ——56 个页面(55 pages/*.php + 根目录 wi_view.php)逐行列出页面文件/菜单名/权限模块/所属分组/访问控制徽章(权限控制/全员可见/人事专属/管理员),含自检告警(磁盘未登记页面或映射到未登记模块时红条提示)。
数据清理:director/sales 角色失效键 contracts→employee_contracts、删除 system_tools;验证 55 个磁盘页面全部登记、映射目标模块全部有效、自检零告警。
修复 劳动合同管理显示全部在职人员 (pages/employee_contracts.php,13项端到端验证):原页面仅显示「需续签」「需签订」两类待处理人员,「合同有效」只计入统计不显示,22 名既无入职日期又无签订日期人员被完全丢弃——修改后显示全部 30 名在职人员,按紧急程度排序(需续签→需签订→合同有效),无日期人员归入「需签订」并提示补录;新增「在职总人数」统计卡片;状态筛选新增「合同有效」选项;合同有效人员也带复选框支持批量续签。当前数据:需续签 0 人、需签订 22 人、合同有效 8 人。
修复 PDA 生产巡检/成品检验页 SQL 崩溃 (pda/quality.php):「最近检验记录」查询 SELECT 始终引用 po.supplier,但 po 表(purchase_orders)仅在来料检验类型下才 JOIN——生产巡检/成品检验类型下 PDO 抛 1054 Unknown column 整页崩溃。修复:新增 $supplierCol 变量按类型生成(来料取 po.supplier,其余 NULL AS po_supplier 占位);PC 端同名查询为无条件 LEFT JOIN 无此问题。CLI 模拟三类型会话渲染验证全部无异常。
2026-08-28(中午 · PDA巡检页工序化重构与移动端全面检查)
新增 PDA 生产巡检页工序化重构 (pda/quality.php type=process):原巡检页为「扫产品码+填数量」表单(quality_save 无工序维度,实际无人使用、qr type=process 记录为 0),正统工序巡检体系是 ipqc_records(生产安排页品质部巡检按钮、不合格自动品控叫停)——本次重构为工序导向:
数据层:近 7 天报工聚合(work_reports 排除被驳回)∪ 状态日志最新状态(production_status_log 每产品/系列+工序最新 action)∪ 今日巡检统计(ipqc_records,key 口径与生产安排页一致:系列工序 s_系列_工序 / 产品工序 p_产品id_工序);工序归属按系列流程(flow_type='series')聚合卡片,否则按产品,班组用 psStepBoundDepts 解析。
UI:顶部统计条(在产工序/今日未巡检/今日已巡检)→ 班组/产品/工序三筛选下拉 → 扫码定位 → 工序卡片(未巡检红色闪烁徽章置顶、已巡检绿色×N、停工橙色原因徽章、生产中蓝色,显示今日/7天报工量与最后报工时间)→ 点击弹巡检抽屉(抽检/合格/不良率自动/结论/说明/照片,不合格必填说明+照片且自动品控叫停)→ 提交走 pda_action.php ipqc_submit(fetch+CSRF 头)。
巡检按钮仅品质部用户(isQualityDeptUser)显示;「最近检验记录」区 process 类型改显 ipqc_records(工序/产品/班组/抽合不良/质检员/已叫停标记);CLI 冒烟渲染 5 张在产工序卡片(管开料/缩管/碗介冲压/刀罩成型/刀轴开料)验证就位。
修复 来料检验「开始检验」无反应 (pages/quality.php + action.php,21项端到端验证):两个叠加 BUG——「开始检验」按钮为仅含 po_id 的空链接无法触发表单;保存报告时 product_id 空串转 0 导致外键约束 Fatal error(且同物料在多张待检单时会误更新其他单据状态)。修复:PC 端实现专属检验面板(列出待检物料+检验表单);action.php 将 product_id/material_id 空值处理为 NULL、按 po_id 精准定位采购单并保留跳转参数。
新增 来料检验轻量测试框架 (tests/bootstrap.php + tests/quality_incoming_test.php,13/13 用例通过):通过 HTTP 层调用 action.php 入口(测试含 exit/redirect 遗留代码的可靠方式)+ 直查数据库验证,覆盖修复回归、po_id 定位、业务规则及安全防护;测试数据以 TSTQCU 前缀隔离、零残留——项目首个自动化测试基建。
修复 移动端全面 BUG 检查 (5维度:33个PDA文件语法、PHP/nginx错误日志、30页面+20参数变体实测、pda_action.php 29接口鉴权/CSRF/缺参容错、静态审查):修复 5 个真实 BUG——①品质报告 KPI 筛选失效(quality_reports.php SQL 漏 result 筛选条件);②系列卡片巡检次数恒为 0(production_schedule.php 改双键聚合,产品级巡检同时累加到系列键);③④⑤报工修改申请/详情 ID 混用(pda_action.php 中 work_reports.submitted_by 存员工 ID 但代码用账号 ID 比较,导致修改申请被拒、不出现在列表、详情弹窗异常——统一 employee_id 口径并对齐前端字段)。修复后 30 页面回归全部正常。
2026-08-28(下午 · 来料检验照片留痕与质检页统一纯工作台)
部署 数据库全量打包 :db_backup/ 生成 xhwork_full_20260828.sql(277.9KB)与 zip(36.7KB)——69 张表全量数据+存储过程+触发器,utf8mb4 编码、--single-transaction 一致性快照,尾部 Dump completed 标记验证完整;users 表 32 条、work_reports 表 13 条均已包含;db_backup 目录已被 nginx 屏蔽外部访问;注意 uploads 照片不在本次备份范围。
新增 来料检验现场照片上传(双端) :PDA 端 pda/quality.php 新增「现场照片」拍照上传(相机调起+相册选择,最多 9 张、单张≤8MB),不合格结论时照片红星并强制校验;PC 端 pages/quality.php 报告级「现场照片」区(不合格必传、列表缩略图);后端 action.php 与 config.php 双重强制校验(不合格无照片拒绝提交);照片存 uploads/iqc_ 目录;quality_reports 表新增 images 列(JSON 数组)。
修复 config.php v25f 权限迁移隐患 (全站 Fatal error 两轮修复):权限页面级改造引入的 v25f 迁移块漏加 global $_PAGE_MODULE_MAP 声明导致全站崩溃,首轮补声明+容错,第二轮发现半成品修复守卫写法仍有问题——彻底整改为映射表缺失时直接跳过迁移且不写完成标记、新增幂等保护、确认 $_PAGE_MODULE_MAP 为唯一引用自定义顶层变量的位置;删除迁移标记重跑在新代码下幂等安全;10/10 场景验证+13/13 回归测试通过。
优化 PDA 巡检卡片状态与生产安排页对齐 (pda/quality.php):原缺陷为巡检卡片除「停工」外一律显示「生产中」——修复后卡片徽章使用与生产安排页完全同一套状态机、左边框三态区分、按生产安排页口径统计作业人数(真实数据 HB21 系列交叉验证);等前工序/等物料/特急闪烁未复制到巡检页(需订单+BOM+瀑布报工量整套计算),等前工序卡片在巡检页归入「待生产」。
优化 PC 三检验页统一为「纯工作台」 (includes/header.php + pages/quality.php):①顶部日期按钮从公共顶栏移至各检验标题下方(切换日期保留类型参数);②生产巡检页删除订单号搜索栏(保留日期按钮与工序巡检记录筛选);③生产巡检页删除质检报告列表表与「全选」列切换栏;④成品检验页删除报告列表表与搜索面板——三个子页统一为「专属表+录入入口」的纯工作台,所有报告查询统一到「品质报告」页(手动新建的「生产巡检」类型报告仍可在总页查看);FQC 录入入口在生产安排页。
确认 双端三检验页数据同步核对 :来料检验两端支持拍照上传、不合格必传、校验口径一致;生产巡检两端同读 ipqc_records 表、同用 getTimeFilter 日期口径;成品检验两端同读 quality_reports 表、提交入口与口径一致;顺带修复 PDA 生产巡检记录照片显示问题;日期筛选粒度差异(PC 选项更多,PDA 传入不支持的 period 回落为当天)属正常设计。
2026-08-28(下午后段 · 权限体系页面级改造与维修主管上线)
新增 角色权限体系模块级→页面级改造 (v25f 迁移,config.php + action.php + roles.php):权限判定函数 hasPerm/canAccess/checkWrite 改用页面键判定;action.php $_ACTION_PERM_MAP 117 条映射改为提交页面的页面键;roles.php 权限设置弹窗改为 11 个分组、54 个页面逐页设置(无/只读/读写)+ 组内快捷按钮与批量操作;v25f 一次性把各角色模块键权限展开为页面键,旧会话自动回退模块键(无需强制重新登录),role_save 白名单过滤非法键;发现并修复权限弹窗漏登记 outsource_suppliers 页面、清理死条目 attendance_batch_delete;6 文件语法零错误、三种角色视角渲染正常、action 门禁场景测试通过。
修复 审批流程检查与角色清理 (15项回归验证):检查系统 4 条审批链,修复 2 个审批 BUG——report_mod_review 函数角色判断硬编码、work_report_review 函数审批兜底逻辑失效;发现系统曾存在两个生产主管角色(production 与 prod_supervisor),删除重复的 production 角色;新增维修主管角色(#60 maintenance_supervisor)。
新增 维修主管角色账号分配与权限验证 :维修部维修主管游广能(工号 EMP20260222)现有账号 yougn 从错挂的「研发」角色改挂 #60 maintenance_supervisor 角色(下次登录生效);模拟登录会话实测生成权限验证报告——维修记录读写、生产安排/进度/总览只读等 6 个页面访问 + 48 个无权限页面拦截,8 项验证全部通过,报告存站点根目录外 d:\wwwroot\reports\wxzg_qxyzbg.html(避免内部权限信息暴露公网);确认游广能作为维修部部门负责人因角色未含班组长/主管身份码无法审批任何请假单、PC 维修记录页为只读展示页(写权限预留后续功能)。
优化 维修主管车间管理权限提升 :车间管理页详情包含完整设备管理功能(设备台账/工位管理/车间平面图),写操作由 workshops 页面 write 权限控制——维修主管该页权限从只读提升为读写,验证通过且未影响无关功能。
2026-08-28(傍晚 · 车间总览显示修复)
修复 车间总览顶栏被遮挡 (pages/workshop_overview.php,7项浏览器实测):深色内容区 .screen 固定定位且 top 硬编码 56px,但顶栏实际底边为 65px(叠加全站 body zoom 等比缩放机制)——修复采用 CSS 兜底值 + JS 动态 fitScreenTop() 函数实时计算顶栏位置(DOMContentLoaded 与加载后各执行一次),多种分辨率与窗口缩放下验证通过。
修复 车间总览标题行底部裁切 (同文件,7种分辨率验证):根因为 .screen 网格首行高度固定 clamp(72px,9vh,96px) + .kpi-head overflow:hidden——标题行内容实际需要 98~110px,英文副标题被切 12~15px、人员卡状态点被切 6px;修复调整标题行高度为 auto、模块间距 14px,标题行与卡片显示完整、无回退无报错。
2026-08-29(晚间 · 产品交期页面清理与隐藏管理员账号恢复)
优化 产品交期页面冗余按钮清理 (pages/order_generate.php):删除不再使用的特定按钮及相关死代码,保留导入功能,减少页面干扰元素。
部署 隐藏管理员账号恢复启用 :08-27深夜安全整改中禁用的历史遗留隐藏超管账号(is_hidden=1)经用户决定重新启用——直接数据库操作置 status='active' 并重置密码;config.php autoPatchDB() 中自动重建该账号的代码确认已删除(08-27已移除,08-29复查无残留),临时操作脚本用后即删。
背景 :08-27深夜整改将该账号置 status='disabled'、删除 autoPatchDB 自动重建逻辑并限定登录 status='active' 实现踢出;08-29用户因运维需要决定恢复该账号。
安全状态 :账号可用但隐藏(is_hidden=1 不变,不出现在账号管理列表与人事档案关联账号下拉——WHERE is_hidden != 1 过滤不变);nginx 敏感文件屏蔽、CSRF 全站体系、install 目录删除等其他 08-27 整改措施不受影响。
当日工作较少但涉及一项安全决策调整:隐藏管理员账号的恢复启用是用户明确决定,08-27深夜「任何场景不得再引入该账号」的约束自 08-29 起以用户决定为准;其余安全整改措施保持不变。
2026-08-30(凌晨 · 订单草稿未生成排查与弹窗关闭修复)
修复 订单导入后页面被黑色半透明层挡住 (pages/order_generate.php):用户反馈在产品交期页完成导入操作后,页面被黑色遮罩覆盖无法继续操作,需退出或强制刷新。排查先编写 PHP CLI 诊断脚本完整复刻 order_generate_save 事务做全链路验证,确认后端逻辑本身正常——问题出在前端黑屏引发的连锁反应导致操作中断。
修复 Bootstrap 弹窗关闭失败根因 :脚本使用 bootstrap.Modal.getInstance() 获取实例,懒加载模式下该方法常返回 null,后续 .hide() 调用抛出 TypeError 使脚本中断,modal-backdrop 遮罩层与 body 残留样式未被移除。修复措施四件套:getInstance() 改 getOrCreateInstance()、hide 调用包 try-catch、监听 hidden.bs.modal 事件做 DOM 强制清理、alert 提示放入 setTimeout 避免阻塞关闭动画。
修复 领料页同类隐患排除 (pages/order_issue.php):排查发现 3 处相同的 getInstance() 隐患,统一改用 safeHideModal 安全关闭函数 + setTimeout 处理 alert,防止领料单操作后出现同样遮罩残留。
2026-08-30(上午 · 首批订单草稿成功生成)
上线 22 张订单草稿成功生成 :遮罩修复后导入流程跑通,草稿显示在「订单管理 → 待确认」列表。过程中连带解决 4 个问题。
排查 控制台 SyntaxError :Invalid or unexpected token 系 session 过期后接口重定向至 login.php,返回的 HTML 被浏览器当作脚本解析所致——重新登录即恢复,属会话过期现象而非代码缺陷。
修复 跨月数据在当月视图不可见 :导入 9 月交期数据后 8 月月历视图看不到变化,用户误以为导入失败——导入完成时自动切换到数据所在月份视图并给出提示。
新增 未匹配产品编码一键入库 :导入表格中 41 个产品编码未匹配产品库导致无法生成订单——预览区新增黄色警告条列出全部未匹配编码,并提供「一键添加未匹配编码到产品库」按钮,批量入库后自动重新解析。
2026-08-30(上午后段 · 订单去重与数量累加修正)
修复 mergeExistOrders() 去重失效 (pages/order_generate.php):函数未标记 existDates,导致已存在的订单无法被正确跳过,重复生成。补标记后与数据库已有订单比对恢复正常。
修复 长表格式 CSV 数量覆盖 :同一产品同一交期分多行录入时,后行数量直接覆盖先行而非累加——改为同键数量累加,符合长表录入习惯。
核查 178 张待确认订单分组核查 :逐一核对数据库订单,确认分组符合「一产品 × 一交期 = 一订单号」规则,张数与数量与导入数据一致。
2026-08-30(上午末 · 订单批量删除功能)
新增 订单管理批量删除 (pages/orders.php + action.php order_batch_delete,端到端验证通过):为清空此前误生成的待确认订单重新导入而加。
前端 :订单列表页顶部新增红色「批量删除」按钮(与批量审核并列);updateSel() 同步按钮启用/禁用状态;batchDelete() 弹二次确认;提交复用既有隐藏表单(含 CSRF)。
后端 :action.php 新增 order_batch_delete 分支,事务包裹删除 orders 表及关联 order_items 表数据保证原子性;$_ACTION_PERM_MAP 注册权限映射;记录操作日志。
验证 :测试订单删除成功,数据库无残留数据;随后可用该功能批量清掉误生成的待确认订单后重新生成。
2026-08-30(中午 · 订单导入链路其他 BUG 清扫)
修复 月视图导入交期被合并到月末 (order_generate.php):月模式下导入含具体交期(如 09-06)的数据时被错误合并成该月末统一交期,已修正为保留具体日期。
修复 localStorage 恢复后数量不生效 :页面刷新恢复已填数量后点生成无订单——根因为恢复流程清空了 dirtyDates 且丢弃 dayQtys,已补齐配套一致性处理。
修复 pid=0 幽灵条目导致预览虚高 :预览中出现无产品对应的空条目使数量统计偏高,已过滤。
清理 开发过程写入 localStorage 的测试数据已清理;全流程(批量删除旧草稿 → 重新导入 → 生成 → 核对)验证就绪。
当日为订单导入链路专项攻坚日:凌晨从前端遮罩黑屏入手,上午贯通「导入 → 匹配 → 生成」主链路并落地批量删除配套,中午收尾三处数据一致性缺陷。至此产品交期页导入生成的完整闭环(含去重、跨月、未匹配编码、批量清理)全部打通。
第十五阶段 · 标签打印模板体系与说明书定稿(08-31)产品级标签打印模板字段(delong 外箱标签卡 / supor 无订单标签卡)、德龙外箱标签卡 delong.html 1:1 复刻(字体/行高/条码/食品级图标抠图)、Code128 条码编码 BUG 修复、操作说明书定稿(操作指导书→操作说明书 + 22 份 PDF 重新导出)
2026-08-31(凌晨 ~ 上午 · 标签打印模板新功能与德龙外箱标签卡复刻)
新增 产品级标签打印模板 (pages/products.php 编辑弹窗 + includes/config.php v26b 迁移):products 新增 label_template 列(VARCHAR(20),delong=外箱标签卡/三钢德龙、supor=无订单标签卡/苏泊尔),产品编辑弹窗新增「标签打印模板」独立下拉字段(空=未设置);客户默认映射 三钢→delong、苏泊尔→supor。
优化 产品交期页打印按钮三级匹配 (pages/order_generate.php):行内打印按钮优先用产品资料设置的模板 → 未设置按客户名自动匹配(三钢/德龙→delong、苏泊尔→supor)→ 仍未匹配弹窗让用户手动选择(确定=delong 外箱标签卡、取消=supor 无订单标签卡)并提示「可在产品列表→编辑中设置」。
新增 德龙外箱标签卡 delong.html (站点根目录):1:1 复刻德龙产品外箱标签实物,纯本地 Code128B 条码生成 + C-Lodop 打印;反复精调字体字号/行高/条码位置/元素对齐——Item DL 行高 8.3mm→13.3mm、数字字段 1.3× 缩放(Qty 48→20.2pt、Item DL 号 7320003353→15pt)、Description 文本 10.5pt、条码编号 8pt;网格总高 52mm、底部 100mm 对齐。
新增 无订单标签卡 supor.html (站点根目录):苏泊尔标签模板,按物料编码+名称渲染(URL 传 materialCode/materialName),同样本地 Code128B 生成。
复刻 右下角食品级图标 (酒杯+叉子,欧盟 FCM 标准 EU 1935/2004):多次按标准 SVG 重绘(viewBox 60×40/60×48/200×170、酒杯碗口弧线/碗壁收窄/stem-foot 连接、叉子齿根弧线底托/柄尾圆头)始终与原标签存在差异——最终改用原标签照片抠图方案 (详见下一时段)。
2026-08-31(上午 · 食品级图标抠图定稿与底部网格精调)
复刻 右下角图标最终方案:原标签照片抠图 :从原标签照片中抠取图标 → 裁剪 → 二值化 → 去噪 → 补全截断部分 → 8 倍放大为 704×592 高清位图,以内联 data-URI 形式嵌入 delong.html 的 foodIconSVG() 函数,确保屏幕预览与 C-Lodop 打印效果完全一致(不再依赖 SVG 矢量重绘)。
优化 底部右侧网格列宽按原照片实测校准 :Rev 格 9mm、Rev.Date 格 26mm、Operator 格约 28mm、图标格 36mm,使渲染比例与原标签照片完全吻合。
优化 条码区上下居中 :条码容器 top=22mm、height=26mm,flex justify-content:center 使条块+编号在顶栏底与网格间垂直居中。
2026-08-31(上午 · 操作说明书定稿)
文档 操作说明书统一命名 :25 个 HTML 手册中「操作指导书」统一改为「操作说明书」(保留系统菜单名「作业指导书」不变),全量校验确认无旧标题残留。
文档 重新导出 22 份 PDF (docs/department_guides/ + docs/mobile_guides/ + pcsop/pdasop 总册):A4 竖版、保留彩色背景与截图、底部页码、隐藏悬浮「返回」按钮、屏蔽密码锁脚本;批量导出脚本 gen_pdfs.py 保留,方便后续更新。
2026-08-31(上午 · Code128 条码编码 BUG 修复)
修复 Code128B 条码显示不全 (delong.html、supor.html):C128 编码表中字符「0」的编码值错误(133122 应为 133112),导致每个「0」多 1 个模块,含多个「0」的条码总宽度偏宽(实测 475 模块 vs 标准 464 模块),打印时被裁切。已修正两文件的 C128 编码表。
优化 SVG 输出增强 (解决打印裁切):条码 SVG 添加 xmlns 命名空间、width/height=100%、shape-rendering 与 overflow 属性,确保 C-Lodop 打印时条码完整不裁切。
验证 条码内容完整、START/STOP 条柱可见、标签各元素排布正常;建议在实际 C-Lodop 环境打印实体标签并用扫描枪确认扫码内容。
当日为标签打印体系专项建设日:从「产品级模板字段 + 交期页打印按钮三级匹配」打通业务入口,到 delong/supor 两套标签卡的 1:1 实物复刻(字体/行高/条码/食品级图标抠图/网格列宽),再到 Code128 编码表 BUG 修复确保条码可扫,标签打印链路闭环;同期完成操作说明书定稿(统一命名 + 22 份 PDF 重新导出)。
三、功能模块清单(截至 2026-08-31)
模块组 页面 说明
仪表盘 进度总览、车间总览 车间总览含9班组导航与孪生画布、可执行生产工序KPI(08-26起为PC端登录默认页);进度总览按客户轮播月周期交付进度
订单 客户管理、订单管理、产品交期、交付进度、返工单 订单由产品交期页面上传表格生成(PMC每周三「上传覆盖」常规作业);订单号=产品编码后四位+月份+编号;返工单号=产品编码后四位+序号;导入生成链路闭环(08-30:去重跳过、同产品同交期数量累加、跨月数据自动切月视图、未匹配编码一键入库、订单批量删除)
采购 供应商、外协厂、外购总览、采购订单、委外订单、采购退货、委外退货、物料MRP 委外工序由委外采购(采购岗)报工,生成委外入库草稿;MRP支持按客户+产品多选筛选(08-27,含计划条数/总量/涉及客户聚合)
仓库 产品库存、物料库存、产品出货、订单发料、库存盘点、库存预警 支持多次领料、超发、损耗率;领料两步流程(08-28,车间提交领料单不扣库存→仓库照单发料按实发扣减);产品/物料批量导入(08-27,Excel粘贴/CSV/模板三输入);库存盘点按BOM递归展平+同物料汇总(08-27);物料管理BOM测算瓶颈分析(08-27);PDA订单发料按数量×BOM基础用量批量填充(08-26)+「按BOM查」(08-27);库存预警「严格小于才提示」口径全站统一(08-26);库存流水与最后盘点时间
研发 产品列表、BOM管理、产品图册、工艺流程 工艺流程支持阶段编排、部门批量绑定、流水线绑定、设备绑定、系列工艺(自动同步产品)、分数用量BOM;BOM物料导入/导出闭环(08-27,产品BOM与系列BOM通用);计件单价仅管理员可改且班组掩码;产品级标签打印模板(08-31,delong 外箱标签卡/ supor 无订单标签卡,产品编辑弹窗独立字段,交期页打印按钮按产品设置→客户名→手动选择三级匹配)
生产 生产安排、生产进度、生产报工、报工审核、计件工资、维修记录、工序历史 三级审批链;系列报工跨产品同步(审核页系列报工显「系列」标签+系列名,08-27);报工审核按组织架构限定管辖部门+月历时间筛选(08-27);瀑布填充;停工/恢复规则(品控叫停改由巡检不合格触发,08-27);工序收藏;多人集体报工
质检 来料/生产/成品检验、首件确认、样品管理、不良处理、品质报告(新,08-26) 三检验页纯工作台化(08-28,报告查询统一到品质报告页、日期按钮移标题下);来料检验现场照片双端+不合格必传(08-28,uploads/iqc_);PDA巡检页工序化重构:在产工序清单+班组/产品/工序筛选+未巡检红闪提示+巡检抽屉(08-28);巡检体系:工序卡片巡检按钮+不良率自动计算+生产巡检页工序巡检记录(08-27,不合格自动叫停);报废/让步处置强制上传照片(08-27);报废三级审核链(08-27,品质主管一审→工序生产主管二审→刘总终审,终审自动冲减前工序+负数工资扣款);返工工单指定工序(多选)+返工工资开关,免计件报工不进计件工资(08-28);PDA三检验页独立+来料检验供应商列(08-27);双端品质报告(KPI/趋势/帕累托/三大排行榜);分享/删除/详情仅品质部与管理员;不良合并+四方式拆分处置;返工工单闭环
人事 考勤管理、人事档案、组织架构、劳动合同、社保、返聘管理、工资表(新) 人事专属页面仅人事和管理员可见(工资表08-26起全员分级可见:自己/下属/全部);人事档案批量导入(08-28,三输入+表头/分隔符/编码自动识别);社保统一台账重构+社保所属公司编号行内编辑(08-28);劳动合同显示全部在职人员+批量续签(08-28);返聘管理到龄提醒女50/男60(08-28);工资表全自动生成+全员高温补贴+表头排序筛选(08-27);含餐补自动核算;PDA考勤支持批量填写;组织架构自动生成+共管归并
系统 账号管理、角色管理、系统设置、菜单管理、操作记录 角色权限页面级管控(08-28,54页面逐页无/只读/读写+全站覆盖总览自检);维修主管角色上线(08-28,游广能);人事主管可管账号但不能改管理员密码;操作记录仅管理员可见
四、关键业务规则沉淀
订单与报工
产品-客户绑定 :所有产品都是客户定制,一个产品编码唯一绑定一个客户;订单页选产品自动填客户(仅客户字段为空时填充)。
订单生成 :订单统一从产品交期页面上传表格生成;上传覆盖为每周三常规作业(CSV UTF-8格式)。
报工条件 :产品有订单即可报工,无派工单概念;所有报工必须关联订单(「无订单直接生产」模式已于08-16删除,未指定订单时后端自动取该产品最早非取消订单)。
报工三要素 :人员、时间、数量(含不良);多人集体报工数量均分;提交人与作业人员分离(submitted_by)。
报工审批链 :员工→班组长→主管→终审(刘总);班组长提交跳过一审;主管提交一审即终审;两级驳回不计入进度。
报工审核管辖 (08-27):班组长/生产主管即使持有 order_progress 写权限,报工审核页也强制按组织架构限定管辖部门(唐海钢仅见成品/搅拌杆/打蛋器,柯绍财仅见抛砂/碰焊滚焊/冲床);管理员从人事档案拉取全部门(含暂无报工的部门);部门下拉统一 prodDeptOptions() 9生产部门口径(排除研发等非生产部门)。
多报溢出 :报工可超订单量,溢出按交期升序自动分配给同产品后续订单;已报量按瀑布填充展示。
系列报工 :系列工序点击系列卡片报工,自动为系列下所有产品创建记录,进度按系列聚合同步;系列工序优先于产品工序卡片显示。
产量口径 :按最后一道工序(排除质检)报工计产量,流水线成员工序映射到首道工序。
生产安排与状态
可生产判定 :物料足够且上道工序完成量 ≥ 当前工序1小时产能;加急/特急工序可直接开始生产跳过检查;前工序判定用 depends_on(多依赖取瓶颈)。
产能显示 :单人产能×作业人数=总产能/时;未设置时按标准工时反推。
停工规则 :停工原因分维修停工/缺料停工/品控叫停三种(换线停工已删除);恢复由生产管理人员操作;维修停工与报修单闭环;最后一人退出后回到可生产(品控叫停、维修停工除外)。
等前工序解除 (08-26收权):仅生产管理人员可解除限制;开始生产经 checkStartPrereq() 校验(特急/交期≤1天订单不受限),普通员工按钮灰禁并接口拒答。
品控叫停留痕 (08-26增强,08-27升级为巡检触发):巡检结论不合格时强制填写说明并上传现场照片,自动写入停工日志与工序历史(起止时间/时长/说明/现场照片列);直接提交「品控叫停」的请求被后端拒绝,唯一叫停路径为 ipqc_submit 巡检不合格。
巡检口径 (08-27):工序卡片巡检按钮显示「今日次/订单次/工序累计次」三口径计数;不良率=不良数量÷抽检数量×100%(保留1位小数,>0红色);巡检入口在所有生产部门工序卡片均有。
成品检验与巡检部门口径 (08-27确认):成品/搅拌杆/打蛋器(唐海钢下属)三班组为工艺流程最后一环,产出对应成品检验 ;其余部门(抛砂/碰焊滚焊/冲床/弹簧机/数控部/委外)产出半成品对应巡检 ;系统中成品检验报告部门列显示检验员所在品质部,与生产班组无关联。
紧急度视觉 :特急未完成=红色闪烁边框,加急未完成=黄色闪烁边框,周期1.2秒;已完成不闪烁;判定仅看紧急批次订单是否报满。
工序收藏 :红色实心星标记,排序为收藏→特急→加急→普通→交期。
委外隔离 :委外工序仅委外采购和管理员可见,且部门筛选不含「委外」时不显示。
品质与工资
不良合并 :同员工+同工序+同产品的待处理不良合并为一张卡片;质检报告来源不良一单一卡不合并。
不良拆分处置 :返工/报废/让步/退货四方式可组合拆分一次提交;返工工单数量取返工数量,返工报工审批后自动闭环;报废/让步接收须上传现场照片(08-27,jpg/png/gif/webp、单张≤8MB、最多9张,JSON存 disposition_images)。
报废审核链 (08-27):处置报废数量>0 自动触发三级审核——一审品质主管、二审工序绑定部门生产主管(产品流程优先系列流程兜底定位工序部门,班组长上级=生产主管、无班组长取部门主管本人)、终审刘总/管理员;终审通过自动冲减不良工序之前所有工序进度(幂等防重复,明细入 defect_scrap_offsets)并按扣款明细生成负数计件工资(金额为负、数量/单价为0);任一级驳回报废作废(不冲减、不扣款);「报废审核」Tab 仅品质主管/生产主管/管理员可见。
返工工单工序与工资 (08-28):处置返工数量>0 时指定返工工序(多选,来源=产品+系列工艺路线并集去重,默认勾选不良发生工序)并选择返工工资(计件/不计件,默认计件);返工报工仅限工单指定工序(前后端双重校验);不计件工单报工标记 wage_exempt 不进计件工资;工单须所有指定工序都有已终审返工报工才自动闭环(存量工单保持原逻辑)。
来料检验照片 (08-28):检验结论为不合格时现场照片必传(PC+PDA+后端双重校验,最多9张、单张≤8MB,存 uploads/iqc_、JSON 存 quality_reports.images)。
巡检权限 (08-28):PDA 巡检提交按钮仅品质部用户(isQualityDeptUser)与管理员可操作,后端原有校验兜底。
计件工资可见范围 :员工只看自己、班组长看本班组、生产主管看管辖班组。
计时部门 :计时部门照常报工但不计计件工资(齿轮按钮配置)。
工资表统计口径 :按作业开始时间(start_time)统计,为空回退报工时间。
工资表可见范围 (08-26):普通员工只看自己;班组长/生产主管及其他部门上级看自己和下属;人事/管理员看全部(salaryViewScope())。
餐补 (08-26):按日考勤自动核算——日工时≥10小时24元/天、满4.5小时不足10小时12元/天、不足4.5小时或缺勤/请假0元;高温补贴手动录入。
工资表自动生成 (08-27):页面加载时 autoGenerateSalarySheets() 自动补建当月全员记录(INSERT IGNORE 幂等防重,计件工资+餐补自动带入);全员高温补贴一键设置(金额校验≥0且≤100万,可选仅填充为0记录),夏季流程=生成全员记录→设置全员高温补贴。
权限红线与口径
角色权限页面级管控 (08-28,v25f):角色 permissions JSON 的键=页面键(54 个 PC 页面逐页 none/read/write),hasPerm/canAccess/checkWrite 与 action.php 117 条动作映射均按页面键判定;旧会话自动回退模块键;roles.php 含全站 56 页面覆盖总览与自检告警。
维修主管角色 (08-28):#60 maintenance_supervisor(游广能/yougn)——维修记录读写、生产安排/进度/总览只读、车间管理读写(设备台账/工位/平面图);不可审批请假单(未含班组长/主管身份码);PC 维修记录页只读展示、写权限预留。
计件单价 :仅管理员可修改;班组间单价掩码(***);非生产体系用户不可见单价。
人事红线 :人事专属页仅人事和管理员可见;人事主管不能改管理员账号密码。
维修部 :生产安排卡片全只读,仅可点击查看工序历史;可见所有维修停工记录(含未绑定设备)。
部门口径 :生产相关下拉/班组导航统一9部门清单(prodDeptOptions()),单一数据源。
组织管辖 :生产部体系自动扩展含数控部/弹簧机(expandDeptScope);人员池=管辖部门全员∪直属下属;仓储共管组(李强/张勇)共享下属。
账号联动 :员工转离职自动停用账号,改回在职自动恢复。
库存预警口径 (08-26):库存严格小于安全库存数才提示(等于不提示),车间总览/物料管理/库存预警三页同口径。
品质报告权限 (08-26):分享/删除/AJAX详情仅品质部与管理员可操作;分享token暂无过期机制(遗留关注)。
领料两步 (08-28):车间提交领料单不扣库存;仓库(仓储部/管理员)照单发料按实发数量扣库存并生成流水;驳回/取消不影响库存。
返聘到龄提醒 (08-28):女50周岁、男60周岁(出生日期取身份证号);已办理返聘登记或已离职人员不再提醒。
隐藏账号与敏感文件 (08-27深夜):历史遗留隐藏管理员账号 08-27深夜禁用后于 08-29 经用户决定恢复启用(is_hidden=1 不变,前端界面不可见);账号管理与人事档案关联账号选择统一按 users.is_hidden 过滤;.env 凭证、SQL 备份、部署包等敏感文件经 nginx 屏蔽匿名访问;服务器 install 目录已删除。
五、技术演进要点
数据库迁移 :autoPatchDB() 版本补丁机制(v10~v27,08-26工资表餐补/高温补贴列 v26→v27;08-27不良处置照片列 v24g、盘点需求量列 v25c、报废审核链20列+defect_scrap_offsets冲减明细表 v24h;08-28返工工单三列 v24i(rework_steps/rework_paid/wage_exempt)、领料两步列(material_issues.requester/confirmed_at、material_issue_items.req_qty)、社保公司编号列、角色权限页面键迁移 v25f(模块键权限一次性展开为页面键,映射表缺失跳过+幂等保护)、来料检验照片列 quality_reports.images),新字段/新表自动创建,历史数据自动迁移(如报工审核状态回填)。
自动化测试基建 (08-28):tests/ 轻量测试框架(bootstrap.php)——HTTP 层调用 action.php 入口测试含 exit/redirect 遗留代码 + 直查数据库断言,TSTQCU 前缀隔离测试数据;首个用例集 quality_incoming_test.php 13 用例(来料检验修复回归/定位/规则/安全防护)。
安全加固 :全站CSRF(40+处表单+AJAX+PDA全局注入;08-27补强:手动FormData AJAX提交显式携带 _csrf 共8处——fetch覆写仅自动附加请求头、form字段仍需显式注入;08-27深夜:ajax.php POST入口统一接入 validateCsrf()、bom.php 前端提交补token+同源头请求头);GET写操作全改POST;PDO预处理替代拼接;删除测试/伪造会话脚本;临时验证脚本用后即删(_tmp_check.php);隐藏管理员账号自动创建逻辑移除(08-27深夜,08-29复查确认无残留);该账号08-27深夜禁用后于08-29经用户决定恢复启用(is_hidden=1不变,前端不可见);nginx屏蔽敏感文件匿名访问、服务器install目录删除(08-27深夜)。
兼容性 :PHP 8 严格模式适配(PDO参数类型);Firefox/Safari 跨浏览器(zoom/backdrop-filter);renderTableHeaderCSS 嵌套陷阱全站清扫。
JSON容错 :工艺流程 steps JSON 对象/数组双格式兼容;bound_depts 多重解码回退。
CSV编码兼容 (08-26):CSV上传改 readAsArrayBuffer + decodeAuto() 智能识别(UTF-8 BOM检测→严格UTF-8解码→GBK回退→失败提示),Excel/WPS双格式中文CSV全兼容。
提示体系修补 (08-26):374处 setFlash 全站审查——11处 alert-error 类改 danger、PDA补warning/info样式,消除无色白框与透明提示。
全站弹窗遮罩与居中 (08-27):1920 设计稿等比缩放(body.style.zoom)导致 modal-backdrop 的 100vw/100vh 被二次缩小出现左上角黑块、fixed 弹窗偏移——header.php 全局注入 --fixed-sw/--fixed-vh 反缩放补偿变量,遮罩层与弹窗容器统一引用,一次性修复约50个PC页面;弹窗居中方案=反缩放变量+flex+margin:auto、去钳制与限高。
JS组件规范 (08-27):renderTableHeaderJS 自带 script 标签(不可嵌套在 script 内)、renderColToggleJS 输出裸 JS(必须位于已打开的 script 块内)——产品库存页为全站唯一嵌套错误点,已修复并全站27页排查确认。
弹窗安全关闭规范 (08-30):Bootstrap Modal 一律用 getOrCreateInstance()(getInstance() 懒加载下常返回 null,后续 .hide() 抛 TypeError 中断脚本致 modal-backdrop 残余黑屏);hide 调用包 try-catch,监听 hidden.bs.modal 做 DOM 强制清理,同步 alert 放入 setTimeout 避免阻塞关闭动画;order_generate.php 修复后同法排查修复 order_issue.php 3 处隐患并沉淀 safeHideModal 安全关闭函数。
导入体系复用 (08-27):产品/物料/BOM 三处批量导入统一成熟模式——Excel复制粘贴/CSV/TXT/模板下载多输入+解析预览+仅新增/新增并更新双模式+服务端二次校验+事务+操作日志;BOM 导入导出形成回环;08-28 人事档案批量导入沿用该模式并升级防报错解析(表头/分隔符/编码自动识别、日期多格式解析)。
BOM数据模型迁移收尾 (08-28):BOM 数据迁入 bom_headers/bom_items、旧表 product_bom 删除后,关联物料选项(bom_material_options)与备料聚合(order_prep_bom_by_series)两接口改查新表——物料 key 换为物料 ID 并附 legacy_key 兼容历史「分类|名称|规格|单位」旧格式关联键,备料需求量按含损耗口径与 MRP 统一;全站已无 product_bom 活查询。
打包部署 :纯PHP ZIP32打包(绕过环境限制)→ 含全量数据安装包 → 整包部署(代码+SQL+验证);宝塔OPcache约2秒生效。
双端同步 :PDA端复用PC端逻辑与卡片结构,zoom适配已废弃改纯响应式;移动端模板A规范定型。
标签条码本地生成 (08-31):delong.html/supor.html 两套标签卡纯本地 Code128B 条码生成(不依赖第三方条码服务)+ C-Lodop 打印;修复 C128 编码表「0」位错值(133122→133112)致模块数偏多被裁切的 BUG;SVG 输出补 xmlns/width=100%/shape-rendering/overflow 防打印裁切;食品级图标采用原标签照片抠图→二值化→去噪→8×放大 704×592 位图→内联 data-URI 嵌入方案,规避矢量重绘偏差。
六、文档与部署体系
操作说明书 :docs/ 下 PC端总册(pcsop)+ 移动端总册(pdasop);docs/department_guides/(PC分部门9册+索引);docs/mobile_guides/(移动端分部门9册+索引);均配实拍截图(docs/guide_images/),分发时需连同图片文件夹整体拷贝。08-31 起「操作指导书」统一改称「操作说明书」(系统菜单名「作业指导书」不变)。
PDF版本 :22份PDF与HTML手册一一对应(A4竖版、保留彩色背景与截图、底部页码齐全、隐藏悬浮「返回」按钮、屏蔽密码锁脚本),可直接打印分发;08-31 重新导出全量 22 份,批量导出脚本 docs/_tools/gen_pdfs.py 保留。
文件命名 :拼音首字母(如 01ty.html 通用篇、03sczg.html 生产部主管、05scyg.html 生产部员工)。
指导书密码 :******************************************************************************
部署记录 :2026-08-06 首个安装包;2026-08-11 含数据完整安装包;2026-08-13/08-14 带完整真实数据安装包(51表399行);2026-08-20 数据库备份(去GTID);2026-08-22 全量SQL(64表)与服务器排障;2026-08-24 首次整包部署xhwork_deploy_20260824.zip+ 数据库快照);2026-08-25 例行备份(67表);2026-08-26 全天十余次小批量增量上传(CSV乱码/物料删除/车间总览/库存预警/品质报告双端/考勤批量/等前工序/工资表餐补/PDA越权/品控叫停/发料填充/BOM弹窗等,均为文件级改动上传即生效,无整库变更);2026-08-27 全天开发(巡检体系定型/批量导入三件套/全站弹窗修复/PDA质检三页独立/BUG检查/报废审核链,含 v24g/v24h/v25c 三次数据库迁移)为本地完成,待上传部署;2026-08-27深夜安全整改——服务器侧直接操作(删除install目录、nginx屏蔽敏感文件并重启生效)+ 本地代码修改(ajax.php CSRF入口/bom.php提交防护/personnel.php账号过滤)待同步上传;2026-08-28 全天开发(人事批量导入/社保重构/返聘到龄/劳动合同全量显示/领料两步/返工工单增强/BOM关联修复/角色权限表重建与页面级改造/PDA巡检页工序化重构/来料检验照片与开始检验修复/移动端全面检查/审批链修复与维修主管上线/车间总览显示修复,含 v24i、v25f、领料两步、社保公司编号、quality_reports.images 等迁移)为本地完成,待上传部署;2026-08-28 13:52 数据库全量打包 xhwork_full_20260828.sql/zip(69表,db_backup目录已nginx屏蔽)。部署时需导入SQL后删除服务器SQL文件、禁用install.php;2026-08-29 产品交期页面冗余按钮清理、隐藏管理员账号恢复启用(本地操作,待上传部署);2026-08-31 标签打印模板新功能(产品编辑弹窗「标签打印模板」字段 + 交期页打印按钮三级匹配 + products.label_template v26b 迁移)、delong.html/supor.html 两套标签卡模板(德龙外箱标签卡/苏泊尔无订单标签卡,Code128B 本地生成 + C-Lodop 打印,C128 编码表「0」位 BUG 修复)、操作说明书定稿(25 HTML 手册「操作指导书」→「操作说明书」+ 全量 22 份 PDF 重新导出)(本地完成,待上传部署)
历史部署包:xhwork-install.zip(08-06)、xhwork-full-install系列(08-11/08-13)、xhwork_deploy_20260824.zip(105MB)、xhwork0824.zip(含92张验证图与SQL)。更新文档后需同步覆盖服务器 docs 目录并重新导出PDF。
七、注意事项与待办
生产服务器(xhwork.top)部署时需开放图册文件夹权限,不然会导致上传失败
测试账号 test02~test12正式上线前视情况清理。
指导书文档体系有独立副本 sop.xhwork.top,修改后发布时以该副本为准覆盖。
移动端计划写个安卓APP利于方便操作,IOS不做规划,成本高审核麻烦
VMI交付模式(客户VMI仓)方案已讨论,暂缓实施。
服务器负载压力测试通过后方可正式上线
品质报告分享token无过期机制(永久有效,08-26检查发现),建议后续增加时效控制。
返工损失自动汇总方案为建议稿未实施(08-27提出):返工报工审批通过后自动汇总返工工资/工时记入不良单并进入品质统计报表,由刘总月度工资审核统一决定扣款。
本地根目录 install.php 仍存在(可匿名访问的数据库初始化脚本,08-28角色权限重建时再次发现),服务器侧 install 目录已删,本地文件待确认后删除。
游广能(维修主管)作为维修部部门负责人无法审批任何请假单(角色未含班组长/主管身份码,08-28确认),如需审批权限待决策。
PC 维修记录页为只读展示页,写权限为预留配置(08-28确认),维修记录编辑功能待后续开发。
数据库备份不含 uploads 照片附件(08-28打包时确认),如需完整容灾需另行打包附件目录。
游广能权限验证报告存于站点根目录外(d:\wwwroot\reports\),此类内部报告不得放入站点公开目录。
「产品编码+日期(如09-06)组合显示」需求表述待明确(08-26提出,具体页面与样式未定)。
雄华盛世生产管理系统 · 项目迭代开发历程 v3.2(全量历史第三轮核查版 + 08-26~08-31全量补录)· 2026-08-31 整理