一、采购链接 UI(list.vue 基础信息 / buyOdoo.vue 基础信息(Odoo))
各补齐 6 处:columns、permissionMap、列设置复选框、表格列、表单字段、compareFields。
· 表格列带双重守卫(columns.X.visible && hasColPermission),无权限者整列不渲染
· 表单字段套 hasFieldPermission('purchaseLink'),无权限者整项不显示
· ★ compareFields 必须加:编辑走的是「差异比对后只提交变更字段」,
漏了这一项则改了链接也不会被提交(静默失败,排查成本极高)
二、采购链接的 href 白名单
新增 safeHref():只放行 http/https。
★ 该字段由用户自由填写,直接绑到 href 上时 `javascript:` 伪协议会被浏览器
当成可执行链接 —— 点一下就执行脚本。非法值的行显示「格式无效」而非链接。
三、修复 Odoo 页「保存后列表变空、必须重新搜索才恢复」
根因:fetchOdooSummary() **无条件清空 groupCache**,却只在关键词变化时重置
activeCategories。保存编辑后关键词未变 → 分组仍显示为「已展开」、缓存却空了,
而 loadGroupItems 只由展开事件触发、不会重跑 —— 面板保持展开却无数据。
修法:关键词未变时,清缓存后把**仍展开的分组重新拉一遍**(与文件内批量操作
处既有的 delete + loadGroupItems 模式一致);关键词变了才折叠全部分组。
基础信息页(list.vue)不受影响:它的 getList 会完整带上 queryParams。
Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 <script setup> SFCs, check out the script setup docs to learn more.
Learn more about the recommended Project Setup and IDE Support in the Vue Docs TypeScript Guide.