一个二级审批流程的具体实现(4)
审批/备案
首先看审批流程。如果用户不是 hr,显示一个审批对话框,如果用户是 hr,则显示备案对话框。其实,无论审批还是备案,都不过是调用服务器的相应接口而已。无非是 hr 没有驳回操作而已。所以我们都用一个 approve 方法来处理:
approve(task, username, agree) {let params = {};params.username = username;params.taskId = task.taskId;params.agree = agree;if (username == task.leader) {_leaderApprove(params).then(res => {if (res.data.success == true) {this.$Message.success("审批成功");this.todoList();}else{this.$Message.error("出错了");}});} else if (username == task.director) {_directorApprove(params).then(res => {if (res.data.success == true) {this.$Message.success("审批成功");this.todoList();}else{this.$Message.error("出错了");}});} else if (username == task.hr) {_hrRecord(params).then(res => {if (res.data.success == true) {this.$Message.success("备案成功");this.todoList();}else{this.$Message.error("出错了");}});}},
在这里,对用户身份进行判断,从而调用不同的后台接口来进行审批、驳回、备案处理。
重新提交
重新提交时,有可能用户会对原来的表单进行修改,比如修改请假天数。因此,如果用户要重新提交,需要显示一张表单,允许用户编辑请假信息。这里我们使用了 Drawer 组件。
首先定义自己的 Drawer,自定义 Drawer 和一般的组件没有太大区别。新建一个 Edit.vue 文件,内容如下:
<template><div><!-- <router-view/> --><Drawer :closable="true" width="90" v-model="isShow"><br/><br/><Row style="margin-bottom:1%;border-top:1px solid #ccc;padding-top:2%"><Col span="12" style="font-size:16px">请假事由</Col><Col span="12"><i-input v-model="task.reason" placeholder="请假的原因" style="width:200px;outline:none"></i-input></Col></Row><Row style="margin-bottom:1%"><Col span="12" style="font-size:16px">开始日期</Col><Col span="12"><DatePickertype="date"v-model="task.date"placeholder="从哪天开始请假"format="yyyy-MM-dd"style="width: 200px"></DatePicker></Col></Row><Row style="margin-bottom:1%;"><Col span="12" style="font-size:16px">请假天数</Col><Col span="12"><i-input v-model="task.days" placeholder="0" style="width:200px;outline:none"></i-input></Col></Row><Row style="margin-bottom:1%;border-top:1px solid #ccc;padding-top:2%"><Col span="24"><i-button type="default" @click="submitApplication()">提交</i-button></Col></Row></Drawer></div>
</template>
<script>
import { _submitApplication } from "@/api/data";
export default {name: "edit",data() {return {isShow: false,task: {}};},isLogin() {let username = this.$store.state.username;if (username == null || username === "") {this.$Message.error({content: "无效的用户名,请重新登录",duration: 4,closable: true});return false;} else {return true;}},methods: {isLogin() {let username = this.$store.state.username;if (username == null || username === "") {this.$Message.error({content: "无效的用户名,请重新登录",duration: 4,closable: true});return false;} else {return true;}},show(task) {this.task = task;this.isShow = true;},//提交submitApplication() {let username = this.$store.state.username;if (this.isLogin() == false) {// 如果未登录this.$Message.error("请先登录");return;}if (username == this.task.assignee && username == this.task.applicant) {_submitApplication(this.task).then(res => {if (res.data.success == true) {this.$Message.success("请假提交成功");// 子组件向父组件发送 onSubmit 事件this.$emit('onSubmit',this.task);this.isShow = false;} else {this.$Message.error("出错了");}});} else {this.$Message.error("没有权限操作");this.isShow = false;}}}
};
</script>
首先是 isShow 这个变量,它绑定到了 Drawer 的 v-modal 属性,可以用它来控制 Drawer 的显示与隐藏。然后是 show 方法,这个方法用于给父组件(即主页面)调用并显示 Drawer,同时将主页面中的参数(比如 Task)传递给 Drawer。当用户点击提交按钮,调用 submitApplication 方法,在这个方法请求服务器接口。注意,当请求成功后,会调用 this.$emit 发送一个 onSubmit 事件。我们可以在父组件 Main.vue 中监听这个事件。通过这种方式,子组件就能和父组件通讯。
接下来在主页面 Main.vue 中引入这个 Drawer 组件:
import edit from "@/views/Edit.vue";export default {components:{edit},
同时在模板中使用 edit 标签:
<edit ref="drawer" @onSubmit="todoList()"/>
ref 属性定义 drawer 组件的引用名。方便我们通过 this.$refs 来引用这个组件。
这里的 @onSubmit 是 Drawer 中自定义的事件。这表示当 Drawer 发生 onSubmit 事件时,父组件会调用 todoList 方法。也就是说,如果用户重新提交申请成功,待办列表会被刷新。
当用户点击待办列表中的“办理”按钮时,如果用户身份是 hr,则会调用 showEdit 方法。在 showEdit 方法中,调用 drawer 中定义的 show 方法,从而显示出 Drawer 组件并将待办任务作为参数传递给 Drawer:
showEdit(task) {console.log('1235:',task)this.$refs.drawer.show(task);
},
一个二级审批流程的具体实现(4)相关推荐
- JIRA中的并联审批流程定制
JIRA号称可以跟踪任何事务,让JIRA的流程来匹配团队的工作流程,而不是让你的团队适应JIRA的工作流程.但是在实践中,有些有些流程用JIRA还是比较困难的,比如并联审批流程,一个并联审批流程需求大 ...
- 一个简单的审批流程系统设计
一个简单的审批流程系统设计 1 背景 最近在做一个企业管理系统的外包,该管理系统主要分为两个端,管理端(web端)和生产端(移动端).管理端的功能有人员管理.项目管理.工作量管理.审批流程管理等, ...
- 制造业采购审批流程设计示例
随着中国企业管理水平的不断提高,OA办公软件的使用越来越广泛了.办公软件实际上是一种管理思想的体现,只有具备了正确的管理思想才能有正确的软件.下面举一个具体的例子来谈谈如何开发OA办公系统的审批流程. ...
- 通用用户权限管理系统组件V3.8功能改进说明 - 行政审批流程组件的改进
其实早在接近10年前就在公司的ERP系统里与审批流程组件,那时候代码是用vb写的,只能按人员进行流转,后来一直想实现一套.NET的行政审批流程组件,一直没精力去写,平时工作上又有很多事情需要处理,一直 ...
- 审批流程展示html,Web企业在线审批流程系统
每天记录学习,每天会有好心情.*^_^* 最近了解了基于Web的企业在线审批流程系统项目,在这个平台记录一下这个基于Web的企业在线审批流程系统项目,方便以后再次使用或学习的时候能够及时的翻阅.在完成 ...
- 教程干货——零基础创建简单的在线审批流程
简介:[零起点入门系列教程]将会带给大家从业务视角出发由浅入深地学习用宜搭实现应用搭建.即便是没有任何代码基础的新手只要跟着系列课程,从0开始慢慢修炼,也能找到成功搭建应用的乐趣.今天第三讲,分步教学 ...
- 自动行政审批流程组件的审批流程节点定义【民间称为工作流组件、官方称为审批流程组件】...
我们在上一篇文章 多年一直想完善的自由行政审批流程组件[2002年PHP,2008年.NET,2010年完善数据设计.代码实现] 中讲述了"自由行政审批流程组件"的用法及设计参考, ...
- 自定义审批流程表设计
我想开发一个OA的自定义审批流程,但对表的设计感觉怎么也设不好,好像达不到想要的效果. 我把表设计贴出来,大家帮忙看看,给点好建议. 流程模块表,我会在后台手动建立,就是那个表的资料要进来审批,那就要 ...
- 解析approvalFlow——仿钉钉后台审批流程
文章目录 1. approval介绍 1.1 功能应用 1.2 项目地址 2. jsxPreview.vue应用 2.1 页面结构 2.2 表单解析 3. 功能拓展 3.1 数据回显 3.2 拓展样式 ...
- 使用O2OA二次开发搭建企业办公平台(十三)流程开发篇:报销审批流程表单开发...
本博客为O2OA系列教程.O2OA使用手册,教程目录和各章节天梯将在连载完后更新. 使用O2OA二次开发搭建企业办公平台(一)平台部署篇:平台下载和部署 使用O2OA二次开发搭建企业办公平台(二)平台 ...
最新文章
- 普通平键的主要尺寸有_快来收下这份家装尺寸表,衣柜不再鸡肋
- Windows UWP开发系列 – 3D变换
- 拖动去掉边框的JFrame
- java进行md5运算(Java类函数调用)
- Important table for SEGW
- [翻译] 学习iOS开发的建议:如何从菜鸟到专家
- POJ3126 Prime Path(BFS)
- Python自动关机GUI程序
- 编译DPDK遇到make: *** /lib/modules/3.10.0-693.el7.x86_64/build: no such file or dirortory
- VS隐藏菜单插件 Hide Main Menu
- 手机邮箱如何注册?邮箱格式如何填写?
- MySQL 事务隔离级别
- 小红书去水印源码算法
- 杨辉三角 118.杨辉三角 119.杨辉三角Ⅱ(数学解法)
- java影射射射...
- office Excel 加载加载项时出错 解决办法
- 职场5大潜规则不可不知
- 基于.net开发chrome核心浏览器【四】
- REVIT中一次性导出项目里的族及“项目族管理”操作
- 通过 Chainlink Proof of Reserve 来验证质押资产