从0到1:企业办公审批小程序开发笔记

可行性分析

企业办公审批小程序,适合各大公司,企业,机关部门办公审批流程,适用于请假审批,报销审批,外出审批,合同审批,采购审批,入职审批,其他审批等规划化审批流程。本系统分为管理员,员工,审批人员,三种角色;审批人员可以根据申请进行审批,并用微信消息提醒形式发送给申请者

功能设计

  • 1.发起申请: 员工填写各种申请单,包括个人资料,审批事项,附加图片,附加文档(PDF,word,ppt,excel等)。
  • 2.审批流程: 各部门具有审批权限的人员,根据本类型的审批流程(可自定义),依次对审批进行审批,并把审批结果流转到下一审批人(微信通知),如果审批不通过,则直接驳回至申请人(微信通知)
  • 3.通知提醒:向相关人员发送审批通知,包括申请提交通知、审批结果通知等,确保审批流程的及时性和透明度;
  • 4.审批人角色:可以分配不同的部门,对本部门的申请进行审批,每个部门可以设置1人或者多人具有审批权限
  • 5.审批记录与查询:记录审批流程中的每一步操作和审批结果,确保审批过程的可追溯性和安全性,员工随时查询自己的审批记录和当前审批进度。
  • 6.后台可以按时间,按状态查询审批记录,并导出记录Excel文件
  • 7.用户身份认证:后台可以添加员工白名单,只有白名单里的用户才可以正常注册,确保只有合法的员工可以提交和处理审批申请。

概要设计

在这里插入图片描述

数据库设计

FlowModel.DB_STRUCTURE = {
	_pid: 'string|true',
	FLOW_ID: 'string|true',

	FLOW_NO: 'int|true|default=0',

	FLOW_CATE_ID: 'string|true',
	FLOW_CATE_NAME: 'string|false',
	FLOW_DAY: 'string|false',

	FLOW_STATUS: 'int|true|default=1|comment=状态 1=审批中,8=驳回,9=完成',
	FLOW_DEPTS: 'array|true|default=[]|comment=审批流程',

	FLOW_USER_ID: 'string|true',
	FLOW_USER_NAME: 'string|true',
	FLOW_USER_DEPT: 'string|true',
	FLOW_FORMS: 'array|true|default=[]',
	FLOW_OBJ: 'object|true|default={}',
	FLOW_TIME: 'int|true|default=0',

	FLOW_TO_DEPT: 'string|true|comment=待处理的部门',
	FLOW_TO_NATIVE_DEPT: 'string|true|comment=待处理的部门',
	FLOW_TO_STEP: 'int|true|default=0|comment=待处理的步骤',

	FLOW_NOW_STEP: 'int|true|default=0|comment=当前步骤',
	FLOW_NOW_DEPT: 'string|false|comment=审批部门(不包含本部门)',
	FLOW_NOW_NATIVE_DEPT: 'string|false|comment=审批部门(包含本部门)',
	FLOW_NOW_USER_NAME: 'string|false',
	FLOW_NOW_USER_ID: 'string|false',
	FLOW_NOW_STATE: 'int|true|default=1',

	FLOW_LIST: 'array|true|default=[]',
	/*
	step:'int|false|default=0',
	dept: 'string|false',
	nativeDept: 'string|false',
	forms: 'array|false|default=[]',
	obj: 'object|false|default={}',
	time: 'int|false|default=0',
	userId: 'string|false',
	userName: 'string|false', 
	state: 'int|false|default=1|comment=状态 1=通过 8=驳回',
	*/

	FLOW_ADD_TIME: 'int|true',
	FLOW_EDIT_TIME: 'int|true',
	FLOW_ADD_IP: 'string|false',
	FLOW_EDIT_IP: 'string|false',
};

核心实现

/** 浏览资讯信息 */
	async viewNews(id) {

		let fields = '*';

		let where = {
			_id: id,
			NEWS_STATUS: 1
		}
		let news = await NewsModel.getOne(where, fields);
		if (!news) return null;



		return news;
	}


	/** 取得分页列表 */
	async getNewsList({
		cateId, 
		search, // 搜索条件
		sortType, // 搜索菜单
		sortVal, // 搜索菜单
		orderBy, // 排序 
		page,
		size,
		isTotal = true,
		oldTotal
	}) {

		orderBy = orderBy || {
			'NEWS_ORDER': 'asc',
			'NEWS_ADD_TIME': 'desc'
		};
		let fields = 'NEWS_PIC,NEWS_VIEW_CNT,NEWS_TITLE,NEWS_DESC,NEWS_CATE_ID,NEWS_ADD_TIME,NEWS_ORDER,NEWS_STATUS,NEWS_CATE_NAME,NEWS_OBJ';

		let where = {};
		where.and = {
			_pid: this.getProjectId() //复杂的查询在此处标注PID
		};
		where.and.NEWS_STATUS = 1; // 状态 

		if (cateId && cateId !== '0') where.and.NEWS_CATE_ID = cateId;

		if (util.isDefined(search) && search) {
			where.or = [
				{ NEWS_TITLE: ['like', search] },
			];
		} else if (sortType && util.isDefined(sortVal)) {
			// 搜索菜单
			switch (sortType) {
				case 'sort': {
					orderBy = this.fmtOrderBySort(sortVal, 'NEWS_ADD_TIME');
					break;
				}
				case 'cateId': {
					if (sortVal) where.and.NEWS_CATE_ID = String(sortVal);
					break;
				}
			}
		}

		return await NewsModel.getList(where, fields, orderBy, page, size, isTotal, oldTotal);
	}  

}

UI设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后台系统设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

git代码

git下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/690948.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于音乐播放器与系统功能联动功能梳理

主要实现功能: 一、通知栏播放显示和控制 二、系统下拉栏中播放模块显示同步 三、与其他播放器状态同步:本应用播放时暂停其他应用播放,进入其他应用播放时,暂停本应用的后台播放 通知栏播放的显示和控制: 通过Not…

RTKLIB之RTKPLOT画图工具

开源工具RTKLIB在业内如雷贯耳,其中的RTKPLOT最近正在学习,发现其功能之强大,前所未见,打开了新的思路。 使用思博伦GSS7000卫星导航模拟器,PosApp软件仿真一个载具位置 1,RTKPLOT支持DUT 串口直接输出的NMEA数据并…

基于深度学习的中文标点预测模型-中文标点重建(Transformer模型)【已开源】

基于深度学习的中文标点预测模型-中文标点重建(Transformer模型)提供模型代码和训练好的模型 前言 目前关于使用深度学习对文本自动添加标点符号的研究并不多见,已知的开源项目也较少,而对该领域的详细介绍更是稀缺。然而&#x…

苹果手机微信如何直接打印文件

在快节奏的工作和生活中,打印文件的需求无处不在。但你是否曾经遇到过这样的困扰:打印店价格高昂,让你望而却步?今天,我要给大家介绍一款神奇的微信小程序——琢贝云打印,让你的苹果手机微信直接变身移动打…

React Hooks路由传参

场景:如何把想要的参数带到跳转过去的页面里呢?很简单 上代码: 在你需要跳转的页面上 引入 Link用来跳转使用 Link跳转并携带参数 然后需要什么参数就带什么过去喽 这里record里面存的就是我的数据 我只需要id和state然后到你跳转过去的页面…

MySQL-备份(三)

备份作用:保证数据的安全和完整。 一 备份类别 类别物理备份 xtrabackup逻辑备份mysqldump对象数据库物理文件数据库对象(如用户、表、存储过程等)可移植性差,不能恢复到不同版本mysql对象级备份,可移植性强占用空间占…

【C语言】详解函数(上)(庖丁解牛版)

文章目录 1. 前言2. 函数的概念3.库函数3.1 标准库和头文件3.2 库函数的使用3.2.1 头文件的包含3.2.2 实践 4. 自定义函数4.1 自定义函数的语法形式4.2 函数的举例 5. 形参和实参5.1 实参5.2 形参5.3 实参和形参的关系 6. return 语句6. 总结 1. 前言 一讲到函数这块&#xff…

算法—字符串操作

394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:string longestCommonPrefix(vector<string>& strs) { string retstrs[0];//***1***记得先要初始化ret&#xff0c;作为第一个比较值for(int i0;i<strs.size();i){retfoundcom…

聪明人社交的基本顺序:千万别搞反了,越早明白越好

聪明人社交的基本顺序&#xff1a;千万别搞反了&#xff0c;越早明白越好 国学文化 德鲁克博雅管理 2024-03-27 17:00 作者&#xff1a;方小格 来源&#xff1a;国学文化&#xff08;gxwh001&#xff09; 导语 比一个好的圈子更重要的&#xff0c;是自己优质的能力。 唐诗宋…

视觉SLAM十四讲:从理论到实践(Chapter9:后端1)

前言 学习笔记&#xff0c;仅供学习&#xff0c;不做商用&#xff0c;如有侵权&#xff0c;联系我删除即可 一、目标 1.理解后端的概念。 2.理解以EKF为代表的滤波器后端的工作原理。 3.理解非线性优化的后端&#xff0c;明白稀疏性是如何利用的。 4.使用g2o和Ceres实际操作…

代码随想录算法训练营第36期DAY49

DAY49 139单词拆分 没有思路。 回溯法 回溯怎么做呢&#xff1a;拼接str&#xff0c;看能不能拼出来。注意每个单词能用多次&#xff0c;不是用了就没。 但是语法还是难写。 自己的思路不好&#xff0c;题解思路&#xff1a;枚举所有分割字符串&#xff0c;判断是否在字典…

史上最有趣嫁妆:晋公盘的传奇

在遥远的春秋时代&#xff0c;晋国的晋文公为他的女儿用心打造了一件独特的嫁妆——晋公盘。 晋公盘由青铜制成&#xff0c;形状独特&#xff0c;工艺精湛。在晋公盘内底中央&#xff0c;一对精美的浮雕龙盘绕成圆形&#xff0c;盘上饰有鸟、龟、鱼、蛙等多种动物&#xff0c;最…

利用R包“Phenotype”对表型值进行检查

首先&#xff0c;你需要确保你已经安装了R和RStudio&#xff08;如果你想用RStudio的话&#xff09;。然后&#xff0c;你可以按照以下步骤进行操作&#xff1a; 加载数据&#xff1a;首先&#xff0c;你需要加载你的表型数据。如果你的数据是以CSV、Excel等格式保存的&#x…

设计模式-中介者(调停者)模式(行为型)

中介者模式 中介者模式是一种行为型模式&#xff0c;又叫调停者模式&#xff0c;它是为了解决多个对象之间&#xff0c;多个类之间通信的复杂性&#xff0c;定义一个中介者对象来封装一些列对象之间的交互&#xff0c;使各个对象之间不同持有对方的引用就可以实现交互&#xf…

LabVIEW伺服电机测控系统

LabVIEW伺服电机测控系统 开发了一个基于LabVIEW的伺服电机测控系统。系统主要用于精确控制电机的运动&#xff0c;以达到高效率和高精度的要求。通过使用LabVIEW软件和配套的硬件&#xff0c;开发者能够实现对伺服电机的实时监控和控制&#xff0c;进而提高整个系统的性能和可…

Linux-常用命令-常用设置

1.帮助类命令 1.man命令-获得帮助信息 man [命令或配置文件]例&#xff1a;查看ls命令的帮助信息 man ls输入 ZZ 退出帮助2.服务管理类命令 1.centos7语法 1.1 临时开关服务命令 开启服务&#xff1a; systemctl start 服务名 关闭服务&#xff1a; systemctl stop 服务…

LDR6020一拖二快充线:高效充电的新选择

LDR6020一拖二快充线&#xff1a;高效充电的新选择 随着移动设备的普及和功能的日益增强&#xff0c;电池续航成为了用户关注的重点之一。为了满足用户对于快速充电的需求&#xff0c;各大厂商纷纷推出了各种快充技术和产品。在这个背景下&#xff0c;LDR6020一拖二快充线凭借…

2024年6月8日 (周六) 叶子游戏新闻

万能嗅探: 实测 网页打开 某视频号、某音、某红薯、某站&#xff0c;可以做到无水印的视频和封面下载功能哦&#xff0c;具体玩法大家自行发挥吧。 《丝之歌》粉丝又要失望&#xff1a;大概率不会亮相Xbox发布会即将于后天举行的 Xbox 发布会预计将会有许多令人兴奋的消息。早些…

Linux shell编程学习笔记57:lshw命令 获取cpu设备信息

0 前言 在Linux中&#xff0c;获取cpu信息的命令很多&#xff0c;除了我们已经研究的 cat /proc/cpuinfo、lscpu、nproc、hwinfo --cpu 命令&#xff0c;还有 lshw命令。 1 lshw命令的功能 lshw命令源自英文list hardware&#xff0c;即列出系统的硬件信息&#xff0c;这些硬…

C++ 11 【线程库】【包装器】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;C修炼之路⏪   &#x1f69a;代码仓库:C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 目录 前言 一、thread类的简单介绍 get_id…