Skip to content

d:/VOL源码 是 VOL Pro (vol.pro) 3.5.8 商业低代码/快速开发框架的完整源码(前端 web.vite,后端 api_sqlsugar,SQL 脚本 sqlserver/),自带的 ERP / MES / AI / dbtest 模块是框架官方示例(src/router/viewGird.js 末尾注释明确写着"Demo、MES、ERP 开头的都是示例菜单,可以任意删除"),不是甲方真实业务。默认数据库 SQL Server(appsettings.json 的 Connection.DBType=MsSql,连接串指向 101.132.125.215 的 vol_pro_main / vol_pro_service / vol_pro_test 三库)。

Why: 用户在这个框架上做二次开发。误把示例模块当成真实业务、或把自动生成的文件当成可随意手写的文件,是这块源码最容易踩的两个坑。

How to apply:

  • 不要手写自动生成区:前端业务扩展写在 src/extension/**/*.jsx(由 views/**/*.vue 顶部 import extend from "@/extension/..." 引入),后端业务扩展写在 Services/**/Partial/ 与 Controllers/**/Partial/。生成器重新生成时只覆盖骨架,不动这两处。
  • 路由是手写静态的:src/router/viewGird.js(约 150 条),没有 addRoute 动态注册;左侧菜单由后端 /api/getTreeMenu 下发,靠 path 与前端路由匹配。
  • 状态管理用 Vuex 4(src/store/index.js),pinia 虽在依赖里但未启用。
  • 跨域不走 vite 代理(vite.config.ts 里 proxy 全注释),靠后端 CORS;接口地址写死在 src/api/http.js:开发 http://localhost:9100/,生产 https://proapi.volcore.xyz/;前端 dev 端口 9000。
  • 审批按钮只看菜单权限,与 AuditStatus 列无关:工具栏「审核/反审」按钮来自 api/buttons.js 静态模板 + base.getButtons 权限过滤(store.permission 里该菜单的 permission 数组含 Audit/AntiAudit)。admin(Role_Id=1) 是 SuperAdmin,权限 = Sys_Menu.Auth 全集;普通角色 = 角色在 Sys_RoleAuth 勾选的 UserAuthArr(菜单 Auth 只是"可勾选项")。AuditStatus 列影响的是审核弹窗/流程列(initAuditColumn),不是按钮。
  • extension jsx 里改不了页面配置(会白屏):ViewGrid 的 setup 只 return ...props.extend.methods、detailMethods、dataConfig 等,没有暴露 editFormOptions/columns/editFormFields/searchFormOptions —— jsx 里 this.editFormOptions 是 undefined,onInit 一动就 TypeError,onBeforeMount 中断,initViewColumns/initDicKeys 全不执行 → 整页空白。运行时改字段/列的正确姿势是在页面 vue 文件(views/**/**.vue,手写区)里用 reactive(viewOptions()) 解构出的引用就地改(如 ERP_PurchaseIn.vue 的 adjustMainOptions)。proxy 上只有 detailOptions(来自 dataConfig)可用。
  • 同名钩子的执行顺序(ViewGrid.vue onBeforeMount):jsx.onInit → vue.onInit(props) → 框架初始化(initViewColumns/initBoxHeightWidth/initDicKeys) → jsx.onInited → vue.onInited;事件钩子(addBefore/updateBefore/modelOpenAfter)都是 proxy(jsx)先、props(vue)后。删主表字段必须晚于 vue.onInit 里对该字段的 getFormOption 访问,否则 undefined 赋值同样炸。
  • 可直接用 Invoke-Sqlcmd 改远程库(sqlcmd 也可用),连接串在 appsettings.json;DDL 改动要同步追加存档到 sqlserver/erp_slice_01_ddl.sql。
  • 直接改库刷新不了后端菜单/权限缓存:Sys_MenuService 用进程内 static _menus + CacheContext 版本号(key=inernalMenu,UseRedis=false 纯内存)。只有走菜单管理界面「保存」(Save 会刷新版本号并清 _menus)或重启后端才失效。改 Sys_Menu.Auth 后必须做其中之一,重新登录没用(登录只换 token,getTreeMenu 仍吐缓存)。
  • 改动前先确认目标是框架内核(VolPro.Core)还是业务模块(VolPro.ERP/Mes/AI/DbTest)——内核改动影响面远大于业务模块。