原迁移范围:只记录迁移范围外的问题,不修改 Web 或其他既有页面。2026-10-17 用户追加授权修复问题 1、4,问题 2、3 按要求忽略,保留记录但不修改对应功能。
web-admin/src/components/business/pl-plan-cert-upload-dialog/index.vue 的 handleSubmit 和保存按钮。hazardProducts.length 禁用;提交函数直接读取三个证书 URL。AttachmentUploadField 在上传完成后才同步 URL,虽暴露 hasUploading(),但原弹窗没有引用或检查它。hasUploading();上传中提示“附件正在上传,请稍候再保存”且不提交、不关闭。保存请求期间禁用附件编辑,加载中及重复提交也被拦截。web-admin/scripts/test-pl-plan-cert-upload-dialog.mjs。docs/web-admin-mp-webview-modules.md 的双权限说明引用 docs/sql/migrations/2026-09-14-mini-pl-plan-webview-menus.sql。docs/sql/ 文件检索也未找到同名脚本。backend/app/api/pl/plan.py 的 patch_plan_product_certs、patch_plan_hazard_cert_ready;权限工具在 backend/app/services/pl_plan_cert_perm.py。user_can_upload_plan_cert、user_can_manage_plan_cert_ready 在当前后端仅有定义、没有调用。Web 页显示按钮的检查不能代替服务端权限检查。backend/app/services/pl_plan_service.py 的 update_plan_product_certs。set_hazard_cert_ready 一样检查 follow_status == 'cancelled';前端 Web 的 canUploadCert 则禁止已取消计划操作。backend/tests/test_pl_plan_product_certs.py。docs/sql/shanxia2.0.sql 与 docs/sql/migrations/2026-10-15-mini-crm-*-webview-menus.sql、2026-10-17-mini-crm-customer-webview-menus.sql。MINI_CRM_* 菜单;客户、产品、报价、报价审批、合同、合同审批只存在于增量迁移。NOT EXISTS 仅检查 del_flag=0,但插入使用固定主键;若同主键记录已软删除,重新执行会触发主键冲突。客户迁移已使用 ON DUPLICATE KEY UPDATE del_flag=0,行为更稳健。bak/miniprogram-e2e/cases/01-crm.md。workbench-menus.js 中六个 CRM WebView 入口均已启用并受权限过滤。bak/mobile-ui/shanxia-mp-crm-pl-cert-style-align-demo.html 的危化品证「更多」示意字段。columnFilterDefs.ts 与计划列表 API 只有计划日期、送货时间、证书齐备状态等已生效条件,没有独立的证书上传时刻字段。venv/bin/python -m pytest tests/test_pl_plan_product_certs.py tests/test_pl_plan_cert_list_filters.py tests/test_pl_menu_badge_plan_cert.py tests/test_pl_plan_product_upsert.py tests/test_pl_plan_draft_save.py -q(在 backend/):17 项通过。node scripts/test-pl-plan-cert-upload-dialog.mjs(在 web-admin/,本地 Vite 默认端口 3006):通过。pnpm build 通过;保留原有组件重名和包体积警告。pnpm exec vue-tsc --noEmit 仍未通过,其输出与修复前基线完全一致,无本次新增类型错误。