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

news2024/11/28 11:00:59

可行性分析

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

功能设计

  • 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下载

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Qt开发环境部署

我总结了在Qt中搭建Android开发两个要点: 1.JDK一定要是JDK1.8的 2.要下载目标Android版本的SDK,可以在Android studio SDK查看对应Android SDK版本 下面我们开发搭建。首先需要JDK,链接如下:链接:https://pan.baidu.…

★pwn 24.04环境搭建保姆级教程★

★pwn 24.04环境搭建保姆级教程★ 🌸前言🌺Ubuntu 24.04虚拟机🌷VM🌷Ubuntu 24.04镜像 🌺工具🌷可能出现的git clone错误🌷复制粘贴问题🌷攻击🌷编题 🌺美化&…

【CS.DB】从零到精通:这可能是全网最全面最强大的SQL入门教程

文章目录 1. 什么是SQL?1.1 SQL的历史1.1.1 SQL的标准化过程 2. SQL基础语法2.1 数据库操作2.1.1 创建数据库2.1.2 删除数据库 2.2 表操作2.2.1 创建表2.2.2 删除表2.2.3 修改表 2.3 数据操作2.3.1 插入数据2.3.2 更新数据2.3.3 删除数据 2.4 查询数据2.4.1 基本查询…

【Linux】进程4——进程状态

1.进程状态 什么是状态? 每个人都有状态——颓废,阳光,积极向上。。。。 进程也有状态 在操作系统中,由于进程的数量是非常多的,而系统的资源又非常少,所以不可能每一个进程在每时每刻都会处于上处理机运…

【 技术栈】技术方案到底怎么写?

文章目录 一、背景二、技术方案重要性三、常见的技术方案有哪些内容1、系统用例2、功能整体链路2.1、核心业务流程 3、数据库设计4、接口设计5、非功能设计5.1、性能与稳定性5.2、监控 7、系统风险点评估 四、总结 一、背景 工作中,有一些需求或者技术改造&#xf…

计算机网络--应用层

计算机网络–计算机网络概念 计算机网络–物理层 计算机网络–数据链路层 计算机网络–网络层 计算机网络–传输层 计算机网络–应用层 1. 概述 因为不同的网络应用之间需要有一个确定的通信规则。 1.1 两种常用的网络应用模型 1.1.1 客户/服务器模型(Client/Se…

Java面试八股之什么是反射,实现原理是什么

Java中什么是反射,实现原理是什么 Java中的反射(Reflection)是一种强大的特性,它允许程序在运行时检查和操作类、接口、字段和方法的信息。简而言之,反射机制使得程序能够在运行时动态地了解和使用自身或其他程序集中…

python文件:py,ipynb, pyi, pyc, pyd, pyo都是什么文件?

1、Python文件类型介绍 📁 1.1 .py 文件:源代码基础 .py 文件是 Python 最基本的源代码文件格式,用于存储纯文本形式的 Python 代码。它是开发者编写程序的主要场所,包含函数、类、变量定义以及执行逻辑。Python 解释器直接读取…

【排序算法】总结篇

✨✨这些 排序算法都是指的 需要进行比较的排序算法 ✨✨下面都是略微讲解一下思路,如果需要详细了解哪一个排序,点击👉链接即可 ✨✨对于时间、空间复杂度、稳定性,希望你🧑‍🎓能够理解记忆🧑…

MyBatisPlus插件生成代码

文章目录 概要安装插件使用插件 概要 MyBatis-Plus 是 MyBatis 的增强工具,旨在简化 MyBatis 的开发。MyBatis-Plus 代码生成器插件可以自动生成项目中常见的代码,如实体类、Mapper 接口、Service 接口和实现类、Controller 等,从而减少手动…

python代码中参数的默认值

python中的函数,可以给形参指定默认值。 带有默认值的参数,可以在调用的时候不传参。 如上图所示,在给函数设定形参的时候可以给函数形参设定默认值,当然默认参数的形参应该在非默认形参的后面。 如果在调用函数的时候&#xff…

SpringBoot整合SpringSecurit(二)通过token进行访问

在文章:SpringBoot整合SpringSecurit(一)实现ajax的登录、退出、权限校验-CSDN博客 里面,使用的session的方式进行保存用户信息的,这一篇文章就是使用token的方式。 在其上进行的改造,可以先看SpringBoot…

ctfshow-web入门-命令执行(web41_exp与分析)

过滤不严,命令执行 preg_match(/[0-9]|[a-z]|\^|\|\~|\$|\[|\]|\{|\}|\&|\-/i, $c) 过滤掉了数字、字母以及一些符号,之前接触过的无字母 rce 是取反编码再取反,采用不可见字符去绕过正则,但是这里取反符号被过滤掉了&#x…

还在为线上BUG苦苦找寻?试试IntelliJ IDEA远程调试线上Java程序

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

VMware导入小白分享的MacOS版本之后,无法开机的解决方案

前言 这段时间陆续有小伙伴找到小白,说:导入小白分享的MacOS版本之后,出现无法开机的问题。 遇到这个问题,并不是说明分享版本有问题,因为大部分小伙伴导入之后都没有出现类似的问题,都是导入之后开机&…

VBA经典应用69例应用5:使用VBA冻结窗格

《VBA经典应用69例》(版权10178981),是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便…

PaddleSpeech MFA:阿米娅中文音色复刻计划

PaddleSpeech:阿米娅中文音色复刻计划 本篇项目是对iterhui大佬项目[PaddleSpeech 原神] 音色克隆之胡桃的复刻,使用的PaddleSpeech的版本较新,也针对新版本的PaddleSpeech做了许多配置之上的更新并加入了自己对语音的对齐、配置、训练其它任…

Buildroot和Debian文件系统修改方法

本文档主要介绍在没有编译环境的情况下,如何修改buildroot和debian文件系统方法,如在buildroot文件系统中添加文件、修改目录等文件操作,在debian文件系统中,安装软件库、工具、扩大文件系统空间等等操作。 1.Debian文件系统 …

Java | Leetcode Java题解之第137题只出现一次的数字II

题目: 题解: class Solution {public int singleNumber(int[] nums) {int a 0, b 0;for (int num : nums) {b ~a & (b ^ num);a ~b & (a ^ num);}return b;} }

AndroidStudio无法识别连接夜神模拟器

方法一(无法从根本上解决) ①进入夜神模拟器安装路径下的bin路径(安装路径可以带有中文路径) ②打开cmd窗口,输入以下代码(一定要打开模拟器) nox_adb.exe connect 127.0.0.1:62001 方法二(根本上解决) 原因:Android Studio的adb版本与夜神模拟器的adb版本不一致 ①打开And…