# PLM **Repository Path**: bugwizard/plm ## Basic Information - **Project Name**: PLM - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-29 - **Last Updated**: 2025-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 功能介绍 ![输入图片说明](demo/%E4%BA%8C%E7%BB%B4%E7%A0%81.png) 企业办公审批小程序,适合各大公司,企业,机关部门办公审批流程,适用于请假审批,报销审批,外出审批,合同审批,采购审批,入职审批,其他审批等规划化审批流程。本系统分为管理员,员工,审批人员,三种角色;审批人员可以根据申请进行审批,并用微信消息提醒形式发送给申请者,其主要功能如下: - 1.发起申请: 员工填写各种申请单,包括个人资料,审批事项,附加图片,附加文档(PDF,word,ppt,excel等)。 - 2.审批流程: 各部门具有审批权限的人员,根据本类型的审批流程(可自定义),依次对审批进行审批,并把审批结果流转到下一审批人(微信通知),如果审批不通过,则直接驳回至申请人(微信通知) - 3.通知提醒:向相关人员发送审批通知,包括申请提交通知、审批结果通知等,确保审批流程的及时性和透明度; - 4.审批人角色:可以分配不同的部门,对本部门的申请进行审批,每个部门可以设置1人或者多人具有审批权限 - 5.审批记录与查询:记录审批流程中的每一步操作和审批结果,确保审批过程的可追溯性和安全性,员工随时查询自己的审批记录和当前审批进度。 - 6.后台可以按时间,按状态查询审批记录,并导出记录Excel文件 - 7.用户身份认证:后台可以添加员工白名单,只有白名单里的用户才可以正常注册,确保只有合法的员工可以提交和处理审批申请。 ![输入图片说明](demo/%E4%BC%81%E4%B8%9A%E5%AE%A1%E6%89%B9%20(2).jpg) ## 技术运用 - 本项目使用微信小程序平台进行开发。 - 使用腾讯专门的小程序云开发技术,云资源包含云函数,数据库,带宽,存储空间,定时器等,资源配额价格低廉,无需域名和服务器即可搭建。 - 小程序本身的即用即走,适合小工具的使用场景,也适合快速开发迭代。 - 云开发技术采用腾讯内部链路,没有被黑客攻击的风险,不会 DDOS攻击,节省防火墙费用,安全性高且免维护。 - 资源承载力可根据业务发展需要随时弹性扩展。 ## 作者 - 如有疑问,欢迎骚扰联系我:开发交流,技术分享,问题答疑,功能建议收集,版本更新通知,安装部署协助,小程序开发定制等。 - 俺的微信: ![输入图片说明](demo/wechat.png) ## 演示 ![输入图片说明](demo/%E4%BA%8C%E7%BB%B4%E7%A0%81.png) ## 安装 - 安装手册见源码包里的word文档 ## 截图 ![输入图片说明](demo/1-%E9%A6%96%E9%A1%B5.png) ![输入图片说明](demo/2%E5%AE%A1%E6%89%B9%E7%B1%BB%E5%9E%8B.png) ![输入图片说明](demo/3%E5%A1%AB%E5%86%99.png) ![输入图片说明](demo/4%20%E6%88%91%E7%9A%84.png) ![输入图片说明](demo/5%20%E8%AF%A6%E6%83%85.png) ![输入图片说明](demo/6%E6%8F%90%E4%BA%A4%E7%94%B3%E8%AF%B7.png) ![输入图片说明](demo/7%E7%94%B3%E8%AF%B7%E5%AE%8C%E6%88%90.png) ![输入图片说明](demo/8%20%E7%AE%A1%E7%90%86%E9%A6%96%E9%A1%B5.png) ![输入图片说明](demo/8%E7%94%B3%E8%AF%B7%E5%BE%AE%E4%BF%A1%E9%80%9A%E7%9F%A5.png) ![输入图片说明](demo/9%E5%AE%A1%E6%89%B9%E6%AD%A5%E9%AA%A4.png) ![输入图片说明](demo/10%E5%AE%A1%E6%89%B9%E6%84%8F%E8%A7%81.png) ![输入图片说明](demo/11%E5%BE%85%E5%AE%A1%E6%89%B9%E9%80%9A%E7%9F%A5.png) ![输入图片说明](demo/12%E6%88%91%E7%9A%84%E7%94%B3%E8%AF%B7.png) ![输入图片说明](demo/13%20%E6%88%91%E5%B7%B2%E5%AE%A1%E6%89%B9.png) ![输入图片说明](demo/14%20%E5%BE%85%E6%88%91%E5%AE%A1%E6%89%B9.png) ## 后台管理系统截图 - 后台超级管理员默认账号:admin,密码123456,请登录后台后及时修改密码和创建普通管理员。 ![输入图片说明](demo/81%E5%90%8E%E5%8F%B0-%E7%99%BD%E5%90%8D%E5%8D%95.png) ![输入图片说明](demo/83%E5%90%8E%E5%8F%B0-%E5%AE%A1%E6%89%B9%E7%AE%A1%E7%90%86.png) ![输入图片说明](demo/82%E5%90%8E%E5%8F%B0-%E7%99%BD%E5%90%8D%E5%8D%95.png) ![输入图片说明](demo/84%E5%90%8E%E5%8F%B0-%E5%AF%BC%E5%87%BA.png) # 帮助工具迁移记录 ## 迁移概述 本次迁移将 `miniprogram/helper` 目录重命名为 `miniprogram/helpers`,以采用更符合行业规范的命名约定(通常使用复数形式来表示组件集合)。 ## 迁移步骤 1. 创建新的 `helpers` 目录(已存在,无需创建) 2. 复制 `helper` 目录下所有文件到 `helpers` 目录 3. 创建脚本 `update_helper_paths.js` 批量替换项目中所有对旧路径的引用 4. 运行脚本,更新所有文件中的引用路径 5. 手动修复循环引用和自引用问题 6. 确认所有引用都已更新 7. 删除原 `helper` 目录 8. 验证项目功能正常 ## 迁移结果 - 成功将全部 helper 文件迁移到新的 helpers 目录 - 成功更新了所有对旧路径的引用 - 保留了原有的功能和行为 - 项目结构更加标准化 ## 注意事项 - 项目文档 `Manual` 目录下的文档中仍有旧路径引用,但这些不影响代码运行,未修改 - 如发现任何遗漏的引用,请手动更新 # 研发项目数据结构优化总结 ## 一、优化背景 当前系统的项目数据结构存在以下问题: 1. 字段命名不一致,混用大小写(如 `PROJECT_CODE`与 `priority`) 2. 存在多个表示相似概念的时间字段(如同时使用 `ADD_TIME`和 `createTime`) 3. 字段组织杂乱,相同类型的字段没有集中排列 ## 二、优化成果 ### 1. 命名规范统一 - 统一采用小驼峰命名方式(camelCase) - 例如:`PROJECT_CODE` → `projectCode`, `APPLICANT_NAME` → `applicantName` ### 2. 时间字段整合 - 统一基础时间字段:`createTime`(替代ADD_TIME), `updateTime`(替代EDIT_TIME) - 统一项目节点时间字段:`startDate`(替代PROJECT_START_DATE), `endDate`(替代PROJECT_END_DATE)等 ### 3. 字段分组与组织 按照逻辑关系将字段分为以下几组: - 基础标识信息:`id`, `projectCode`, `projectTitle`, `name`, `code` - 分类与描述信息:`projectType`, `projectTypeName`, `category`, `applicationType`, `description` - 人员信息:`customerName`, `applicantId`, `applicantName`, `projectManagerId`, `projectManagerName`, `teamMembers` - 项目管理与状态信息:`level1`, `level2`, `level3`, `level4`, `statusDesc`, `priority` - 时间信息:`createTime`, `updateTime`, `startDate`, `endDate`, `deadline`, `planStartDate`, `planEndDate`, `stateTime`, `stateExpireTime` - 样品信息:`hasSample`, `sampleCount`, `sampleImages` - 项目特有参数:电机控制类项目特有字段等 ### 4. 状态管理优化 - 采用四级状态体系:`level1`-`level4` - 一级状态(level1):项目主状态,如审批中、执行中、已完成等 - 二级状态(level2):子状态,如董事长审批、经理审批、规划阶段等 - 三级状态(level3):活动状态,如原理图设计、PCB设计、固件开发等 - 四级状态(level4):活动子状态,预留扩展 ## 三、优化实施 ### 1. 核心文件更新 已更新以下关键文件: - 后端模型:`cloudfunctions/mcloud/project/plm/model/research_project_model.js` - 前端模型:`miniprogram/projects/plm/model/research_project_model.js` - 数据处理:`miniprogram/projects/plm/store/modules/research/project_store.js` - 表单组件:`miniprogram/projects/plm/pages/research/create/index.js` ### 2. 重要功能更新 1. 后端模型: - 定义了完整的数据结构 - 实现了状态描述自动生成 - 统一了数据操作接口 2. 前端模型: - 与后端保持一致的字段定义 - 新增枚举常量和工具方法 - 完善字段校验规则 3. MobX Store: - 实现了数据标准化处理 - 提供了新旧字段映射和转换 - 支持特有参数的智能处理 4. 表单组件: - 遵循新的数据结构创建项目 - 自动生成项目编号 - 设置默认值和初始状态 ## 四、使用说明 ### 1. 创建新项目 新项目创建时将使用标准化的小驼峰字段结构,遵循以下规则: - 项目编号自动生成,格式为 `PRJ-yyyyMMdd-xxx` - 初始状态设置为审批中(level1=1)> 董事长(level2='director') - 时间字段统一使用Unix时间戳格式 - 根据应用类型自动填充项目类型和专有参数 ### 2. 数据转换 - 当读取旧数据时,Store会自动进行格式转换 - `standardizeProjectData`方法负责将任意格式数据转为标准格式 - 提供了完整的新旧字段映射表 ## 五、注意事项 1. 禁止使用兼容层或旧字段格式 2. 禁止在代码中使用大写字段名(如PROJECT_CODE) 3. 请严格遵循小驼峰命名规范 4. 新增字段时应遵循已有的分组规则 5. 状态变更时应使用level体系而非直接修改statusDesc 6. 日期时间统一使用时间戳格式,前端展示时再转换为可读格式 ## 六、后续工作 1. 更新相关的查询、列表和详情页面 2. 更新状态管理相关组件 3. 完善API接口文档 4. 进行全面测试确保稳定性 --- 本文档最后更新日期:2023年10月 # 项目路径引用优化方案 ## 问题背景 项目中存在路径重复引用问题,如: ```js const pathResolver = require('../config/path_resolver'); const pathResolver = require('../config/path_resolver'); // 重复引用导致错误 ``` ## 解决方案 1. 引入上下文感知的路径解析器,支持不同场景下的路径计算 2. 采用统一配置入口模式,通过path_import.js集中管理辅助模块引用 3. 开发自动化工具批量修复所有项目的路径问题 ## 使用方法 ### 页面模块 在页面模块中引用辅助工具时,使用path_import.js: ```js // 使用统一导入模块,避免重复声明pathResolver const pathImport = require('../helpers/path_import.js'); const { pageHelper, cloudHelper, requestHelper, timerHelper, cacheHelper } = pathImport; // 需要使用其他未包含在path_import中的辅助模块时 const otherHelper = require(pathImport.pathResolver.getRootHelperPath('other_helper.js', 'page')); ``` ### 服务模块 在服务模块中引用辅助工具时,显式指定'service'上下文: ```js const pathResolver = require('../../config/path_resolver'); const otherHelper = require(pathResolver.getRootHelperPath('other_helper.js', 'service')); ``` ## 自动化工具 使用以下命令修复项目中的路径问题: ```bash node tools/fix_pathResolvers.js ``` 此脚本会: 1. 更新所有path_resolver.js文件,使其支持上下文感知的路径计算 2. 为每个项目创建或更新path_import.js文件 3. 提供使用指南,帮助开发者正确引用模块 # 统一配置入口模式 为解决"主包不应存在未使用的JS文件"问题,项目采用了统一配置入口模式: 1. 创建了全局模块配置入口文件 `miniprogram/config/global_modules_config.js` 2. 在应用入口 `app.js` 中引入该配置文件 3. 配置文件中统一导出所有需要保留但未直接使用的JS文件 ### 维护方法 当有新的未使用文件报错时: 1. 检查该文件是否需要保留 2. 如需保留,在 `global_modules_config.js` 中添加引用 3. 如不需要保留,可以安全删除该文件 ### 检查工具 项目提供了两个批处理脚本用于检查文件状态和引用关系: - `tools/check_js_files.bat` - 检查文件是否存在 - `tools/find_js_references.bat` - 查找文件的引用关系 详细说明请参考 `注意.md` 文件。