## 有哪些提醒
- 催办提醒
- 任务超时提醒
- 新任务提醒
## 自定义开发表单与流程对接
##### 流程对接步骤
#####(1)设计流程:【流程管理-流程设计-新建流程】创建流程

#####(2)表单挂接:流程设计完成后,选择流程【流程配置-业务管理-新增】增加表单关联

说明:
- 表单类型:选择自定义开发
- 表名:填写需要的对接的表单对应业务的表名,存在多种表时填写主表名
- 唯一编码:流程业务对接唯一编码,流程发起时需要用到该值,该值定义整个系统中不能重复,会根据表名生成一个默认编码,可自己修改, 例如:`dev_ext_biz_leave_001`
- 流程状态列名:记录流程状态的字段,在关联的Online表名指定的表中存在的字段,该字段用于接收,流程处理过程中回填过来的处理状态
- 标题表达式:流程提交后在,任务列表中展示的业务标题,例如:测试新流程【${name}】,其中表达式${name},取流程变量中的值
#####(3)表单流程发起代码实现:
申请单,进行流程发起
- 1、申请单列表增加按钮 ``提交流程 控制待提交状态下展示 `v-if="record.bpmStatus === '1'"`
- 2、提交流程,功能实现
```
1、data()中定义
flowCode:"dev_ext_biz_leave_001",
url: {
startProcess: "/act/process/extActProcess/startMutilProcess",
},
2、方法实现
startProcess: function(record){
var that = this;
this.$confirm({
title:"提示",
content:"确认提交流程吗?",
onOk: function(){
var param = {
flowCode:that.flowCode,
id:record.id,
formUrl:"modules/extbpm/biz/modules/ExtBizLeaveForm",
formUrlMobile:"modules/extbpm/biz/modules/ExtBizLeaveForm"
}
postAction(that.url.startProcess,param).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.loadData();
that.onClearSelected();
}else{
that.$message.warning(res.message);
}
});
}
});
},
```
说明:提交流程是需要传递四个参数
- flowCode:流程业务对接唯一编码
- id:表单数据id
- formUrl:pc端流程审批,默认展示的表单组件
- formUrlMobile:移动端流程审批,默认展示的表单组件
#####(4)流程对接完成,发布流程,然后申请单提交流程即可。
## Online表单与流程对接
##### 流程对接步骤
#####(1)设计流程:【流程管理-流程设计-新建流程】创建流程

#####(2)Online表单增加字段`bpm_status`,string类型,设置默认值1,字典code设置`bpm_status`


#####(3)表单挂接:流程设计完成后,选择流程【流程配置-业务管理-新增】增加表单关联
表单类型:选择Online表单,
表名:填写对接的Online表单表名
唯一编码:自动生成,不能修改
流程状态列表:默认值`bpm_status`,不能修改
标题表达式:通过表达式`${}`获取流程变量的值,组成一个标题

#####(4)表单流程发起:
流入申请单,点击提交流程按钮发起流程,在【个人办公-我的任务中进行流程审批办理】
## Online表单与流程对接(开发人员对接步骤)
##### 流程对接步骤
(1)设计流程:【流程管理-流程设计-新建流程】创建流程
(2)表单挂接:流程设计完成后,选择流程【流程配置-业务管理-新增】增加表单关联
说明:
- 唯一编码:流程业务对接唯一编码,流程发起时需要用到该值,该值定义整个系统中不能重复,对接Online表单时,该编码命名规则`ol_{Online表名}` 例如:`ol_ext_biz_leave`
- 业务名称:对接的业务名称
- 表单类型:选择 Online表单
- Online表名:对接的Online表名,例如:`ext_biz_leave`
- 标题表达式:流程提交后在,任务列表中展示的业务标题,例如:测试新流程【${name}】,其中表达式${name},取流程变量中的值
- 流程状态列名:记录流程状态的字段,默认`bpm_status`,在关联的Online表名指定的表中存在的字段,该字段用于接收,流程处理过程中回填过来的处理状态
(3)表单流程发起代码实现:
申请单,进行流程发起
- 1、申请单列表增加按钮 `提交流程` 控制待提交状态下展示 `v-if="record.bpm_status === '1'"`
- 2、提交流程,功能实现
```
1、data()中定义
flowCode:"ol_ext_biz_leave",
url: {
startProcess: "/act/process/extActProcess/startMutilProcess",
},
2、方法实现
startProcess: function(record){
var that = this;
this.$confirm({
title:"提示",
content:"确认提交流程吗?",
onOk: function(){
var param = {
flowCode:that.flowCode,
id:record.id,
formUrl:"modules/bpm/task/form/OnlineFormDetail",
formUrlMobile:"modules/bpm/task/form/OnlineFormDetail"
}
postAction(that.url.startProcess,param).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.loadData();
that.onClearSelected();
}else{
that.$message.warning(res.message);
}
});
}
});
},
```
说明:提交流程是需要传递四个参数
- flowCode:流程业务对接唯一编码
- id:表单数据id
- formUrl:pc端流程审批,默认展示的表单组件
- formUrlMobile:移动端流程审批,默认展示的表单组件
组件modules/bpm/task/form/OnlineFormDetail 为Online表单查看信息的表单
组件modules/bpm/task/form/OnlineFormOpt 为Online表单带可编辑的操作的表单
(4)流程对接完成,发布流程,然后申请单提交流程即可。
## 流程节点个性化表单设置
####一、表单设置说明
流程节点个性化表单设置,解决不同节点审批人查看或者处理不同表单的需求,具体设置【流程配置--流程节点】,选择需要个性化设置的节点编辑,配置“PC表单地址”

- 配置规则:
- (1)PC表单地址可配置组件或者第三表单地址(http/https开头)
- (2)配置组件地址:可对接自己开发的表单页面组件,也可以对接Online表单页面组件
自己开发的表单页面组件:开发方法见【流程节点对接表单页面开发方法】
选择views目录下开发页面
例如页面src/views/modules/extbpm/biz/modules/ExtBizLeaveForm.vue 则组件名为modules/extbpm/biz/modules/ExtBizLeaveForm
Online表单页面组件:
不带操作按钮的页面:modules/bpm/task/form/OnlineFormDetail
带操作按钮的页面:modules/bpm/task/form/OnlineFormOpt
- (3)配置第三表单地址(http/https开头),例如:http://www.test.com/formtest?dataId=${BPM_DATA_ID},其中${BPM_DATA_ID}去流程变量中的值。
流程变量固定值说明:
BPM_DATA_ID:表单数据id
BPM_FORM_KEY:表名
applyUserId:流程发起人
JG_LOCAL_PROCESS_ID:当前流程实例id
其他属性对应表单字段数据:例如表字段id,name,流程变量中也会存在
####流程节点对接表单页面开发方法
(1)在普通的列表表单页面改造,渠道 模态框
(2)页面引入
```
import { httpAction,getAction } from '@/api/manage'
```
(3)定义props
```
props: ['formData'],
```
(4)定义data
```
url: {
queryById: "",//填写表单的queryById请求地址
},
```
(5)created方法实现
```
created () {
console.log("form start");
console.log("formdata",this.formData);
var params = {id:this.formData.dataId};//查询条件
getAction(this.url.queryById,params).then((res)=>{
if(res.success){
console.log("获取流程节点信息",res);
this.edit (res.result);
}
})
},
```
(6)'formData'对象说明:
节点对接页面组件时通过定义的props: ['formData'],传入数据,该对象为流程节点和页面的数据传输对象,可根据其中的数据展示表单
formData对象属性如下:
dataId:表单数据id
taskId:当前环节任务id
taskDefKey:当前环节任务key
procInsId:流程实例id
tableName:表名
permissionList:节点权限配置
vars:流程变量
页面接收该对象数据后可根据数据信息通过接口获取相关的业务数据展示表单。
## 页面权限控制
### 显示隐藏控制
####一、用法
```
v-has="'name'"
```
代码示例:
```
```
####二、权限配置:

####三、使用说明
- `v-has="'name'"` 指令值“name”为授权标识,可对该授权标识进行“显示/访问”控制
- 权限编码在【系统管理--菜单管理】中配置,添加按钮类型的菜单数据,授权标识配置值“name”,策略选择显示/访问,状态选择有效
- 控制规则:
- (1)使用`v-has`指令后,菜单权限中若没有对应指令编码的配置,则不显示控件,
- (2)权限配置无效状态时,则不进行权限控制,有效状态时进行控制
- (3)策略:显示/访问,未授权时不显示,授权后显示
####四、流程节点权限
(1)说明:
- 节点权限配置优先级高于菜单权限配置
- 节点权限应用于使用组件方式加载的附加表单页面,并对附加表单页面进行权限控制
- 显示控制用法见上面用法描述
- 节点权限是通过 props: ['formData'],来传递给节点表单页面的,因此页面一定要定义这个,否则,节点配置的权限不生效
- 权限配置无效状态时,则不进行权限控制,有效状态时进行控制
(2)权限配置:
在【流程管理-流程设计】中找到需要配置的流程,进入【流程配置-流程节点】选择需要进行权限控制的节点,
点击【更多-权限设置】,新增/编辑 来配置权限。

### 禁用控制用法一
####一、用法
(1)页面引入混入代码
```
import {DisabledAuthFilterMixin} from '@/mixins/DisabledAuthFilterMixin'
```
```
mixins: [DisabledAuthFilterMixin],
```

(2)权限控制代码示例:
```
```
####二、权限配置:

####三、使用说明
- `:disabled="disabledAuth('name')" ` 调用方法disabledAuth,方法参数“name”为授权标识,该方法根据授权规则返回true/false,控制是否禁用
- 权限编码在【系统管理--菜单管理】中配置,添加按钮类型的菜单数据,授权标识配置值“name”,策略选择可编辑,状态选择有效
- 控制规则:
- (1)菜单权限中若没有对应指令编码的配置,则不进行禁用控制,
- (2)权限配置无效状态时,则不进行权限控制,有效状态时进行控制
- (3)策略:可编辑,未授权时控件禁用,授权后可编辑
####四、流程节点权限
(1)说明:
- 节点权限配置优先级高于菜单权限配置
- 节点权限应用于使用组件方式加载的附加表单页面,并对附加表单页面进行权限控制
- 显示控制用法见上面用法描述
- 节点权限是通过 props: ['formData'],来传递给节点表单页面的,因此页面一定要定义这个,否则,节点配置的权限不生效,节点表单开发方法见【流程节点对接表单页面开发方法】
- 权限配置无效状态时,则不进行权限控制,有效状态时进行控制
(2)权限配置:
在【流程管理-流程设计】中找到需要配置的流程,进入【流程配置-流程节点】选择需要进行权限控制的节点,
点击【更多-权限设置】,新增/编辑 来配置权限。

### 禁用控制用法二
####一、用法
(1)页面引入工具js
```
import { disabledAuthFilter } from "@/utils/authFilter"
```
(2)methods方法中实现:
```
disabledAuth(code){
return disabledAuthFilter(code);
},
```


(2)权限控制代码示例:
```
```
####二、权限配置:

####三、使用说明
- `:disabled="disabledAuth('name')" ` 调用方法disabledAuth,方法参数“name”为授权标识,该方法根据授权规则返回true/false,控制是否禁用
- 权限编码在【系统管理--菜单管理】中配置,添加按钮类型的菜单数据,授权标识配置值“name”,策略选择可编辑,状态选择有效
- 控制规则:
- (1)菜单权限中若没有对应指令编码的配置,则不进行禁用控制,
- (2)权限配置无效状态时,则不进行权限控制,有效状态时进行控制
- (3)策略:可编辑,未授权时控件禁用,授权后可编辑
####四、流程节点权限
(1)说明:
- 节点权限配置优先级高于菜单权限配置
- 节点权限应用于使用组件方式加载的附加表单页面,并对附加表单页面进行权限控制
- 显示控制用法见上面用法描述
- 节点权限是通过 props: ['formData'],来传递给节点表单页面的,因此页面一定要定义这个,否则,节点配置的权限不生效,节点表单开发方法见【流程节点对接表单页面开发方法】
- 权限配置无效状态时,则不进行权限控制,有效状态时进行控制
-
(2)methods方法中实现:
```
disabledAuth(code){
return disabledAuthFilter(code,this.formData);
},
```
(2)权限配置:
在【流程管理-流程设计】中找到需要配置的流程,进入【流程配置-流程节点】选择需要进行权限控制的节点,
点击【更多-权限设置】,新增/编辑 来配置权限。

## FineReport报表集成
##### 集成步骤
-(1)集成maven依赖
```
com.ifrp
fr-server-boot
6.5
com.ifrp
fr-third
6.5
```
-(2)创建报表模板目录 src/main/resources/fr/reportlets
-(3)创建报表配置文件 src/main/resources/fr/resources
```
下载配置
链接:https://pan.baidu.com/s/11DGREUOT-iti6RCVg49p5A
提取码:8yww
```
-(4)创建config集成报表Servlet
```
@Bean
public ServletRegistrationBean eventProperties() {
return new ServletRegistrationBean(new com.fr.web.ReportServlet(), "/ReportServer");
}
```