# 一、流程列表页签说明

## 1.1 待办

| tabid | 名称 | 维度标识 | 对应维度下的SQL条件 |
| --- | --- | --- | --- |
| 0 | 全部 | todo | |
| 1 | 未读 | todo | (t1.viewdatetime is null) |
| 2 | 新反馈 | todo | (t1.needwfback = 1 and t1.last_comment_time > t1.viewdatetime and  t1.viewdatetime is not null and t1.lastfeedbackoperator != t1.userid) |
| 3 | 已查阅 | todo | (t1.viewdatetime is not null) |
| 7 | 待处理（待办中排除掉待阅的数据） | todo | (t1.isremark in (0,1,5,6,10,11)) |
| 5 | 待阅（转发+抄送+传阅） | todo | (t1.isremark in (20,21,30,31,40,41,50,51,60,61,70,71,80,81)) |
| 6 | 超时 | todo | (t1.isremark in (5,6) or (t1.minovertime < #curDateTime)) |
| 8 | 被退回 | todo | (t1.isbereject = 1) |
| 4 | 转发 | todo | (t1.isremark in (40,41,80,81)) |
| 11 | 传阅 | todo | (t1.isremark in (20,21,60,61)) |
| 9 | 抄送 | todo | (t1.isremark in (30,31,70,71)) |
| 10 | 关注 | todo | t1.requestid in (select target_id from {$publicdb}.watch where watcher=#userId and tenant_key=#tenantKey and module='workflow' and delete_type=0) |
| 12 | 被督办 | todo | t1.requestid in (select requestid from wfc_supervise_operate_log sup where tenant_key = #tenantKey and userid = #userId and sup.requestid = t1.requestid and t1.receivedatetime <= sup.create_time) |
| 13 | 被转办 | todo | t1.user_source in (4,5) |
| 14 | 草稿 | todo | |


## 1.2 已办

| tabid | 名称 | 维度标识 | 对应维度下的SQL条件 |
| --- | --- | --- | --- |
| 50 | 全部 | done | |
| 52 | 审批中 | done | (t1.flowstatus in (0,1,2,6)) |
| 53 | 已处理（和待办的待处理对应） | done | (t1.isremark not in (150,151,152)) |
| 54 | 已阅（和待办的待阅对应） | done | (t1.isremark in (150,151,152)) |
| 55 | 抄送 | done | (t1.preisremark in (30,31,33,70,71)) |
| 56 | 转发 | done | (t1.preisremark in (40,41,80,81)) |
| 57 | 传阅 | done | (preisremark in (20,21,60,61)) |
| 58 | 超时已办 | done | ((t1.isprocessed is null or t1.isprocessed in (0,4,5,6) ) and planfinishdatetime is not null and operatedatetime > planfinishdatetime) |
| 59 | 超时自动处理 | done | (t1.isprocessed in (1, 2, 3)) |
| 60 | 待回复 | done | (isremark in (120,121,130,131)) |
| 63 | 关注 | done | t1.requestid in (select target_id from {$publicdb}.watch where watcher=#userId and tenant_key=#tenantKey and module='workflow' and delete_type=0) |
| 64 | 已审批（（自己实际操作进已办的数据，如A、B、C非会签，A操作后进已办，A的该菜单下会显示对应数据，B、C该菜单下不会）） | done | ( t1.isremark in (100,101,110,111) and exists(select 1 from wfc_operate wfo where wfo.tenant_key =#tenantKey and wfo.id = t1.cid and t1.userid  = wfo.processuser and wfo.delete_type = 0 )) |


## 1.3 我发起的

| tabid | 名称 | 维度标识 | 对应维度下的SQL条件 |
| --- | --- | --- | --- |
| 100 | 全部 | mine | |
| 101 | 新反馈 | mine | (t1.needwfback = 1 and t1.last_comment_time > t1.viewdatetime and  t1.viewdatetime is not null and t1.lastfeedbackoperator != t1.userid) |
| 102 | 未结束 | mine | (t1.flowstatus in(0,1,2,6)) |
| 103 | 已结束 | mine | (t1.flowstatus in(3,4,5)) |
| 104 | 未读 | mine | (t1.viewdatetime is null) |
| 105 | 关注 | mine | t1.requestid in (select target_id from {$publicdb}.watch where watcher=#userId and tenant_key=#tenantKey and module='workflow' and delete_type=0) |
| 51 | 已结束 | done | (t1.flowstatus in (3,4,5)) |
| 61 | 未读 | done | (viewdatetime is null) |
| 62 | 新反馈 | done | ((needwfback = 1 and last_comment_time > viewdatetime and  viewdatetime is not null and lastfeedbackoperator != userid)) |
| 65 | 待退回 | done | t1.requestid in (select requestid from wfc_return_apply wfra where wfra.creator =#userId and wfra.status=0 and wfra.tenant_key=#tenantKey and wfra.delete_type=0) |


# 二、单页地址
## 2.1 PC端单页地址
| 列表 | 地址 |
| --- | --- |
| **待办流程** | /sp/workflow/list/todo |
| **已办流程** | /sp/workflow/list/done |
| **我发起的** | /sp/workflow/list/mine |
| **全部流程** | /sp/workflow/list/all |
| **共享流程** | /sp/workflow/list/share |
| **关注流程** | /sp/workflow/list/attention |
| **下属待办** | /sp/workflow/list/subordinates |
| **草稿流程** | /sp/workflow/list/draft |

## 2.2 移动端单页地址(2602基线后支持)
| 列表 | 地址 |
| --- | --- |
| **待办流程** | /mobile/workflow/list/todo?singlePage=1 |
| **已办流程** | /mobile/workflow/list/done?singlePage=1 |
| **我发起的** | /mobile/workflow/list/mine?singlePage=1 |
| **全部流程** | /mobile/workflow/list/all?singlePage=1 |
| **共享流程** | /mobile/workflow/list/share?singlePage=1 |
| **关注流程** | /mobile/workflow/list/attention?singlePage=1 |
| **下属待办** | /mobile/workflow/list/subordinate?singlePage=1 |
| **草稿流程** | /mobile/workflow/list/draft?singlePage=1 |

## 2.3 tabids参数用法
### 场景：客户待办有很多抄送的数据，和需要真正处理的数据混在一起，想单独显示待处理和未读的数据
此时只需要在待办原有地址上新增tabids【对应的ID具体值见上述1.1】参数即可，如需要多个用英文逗号隔开

例：

PC端：对应地址：[OA地址/sp/workflow/list/todo?tabids=7,1]

![](${appMdRes}/1770021947-image.png)

移动端：对应地址：[OA地址/mobile/workflow/list/todo?singlePage=1&tabids=7,1]

![](${appMdRes}/1770022398-image.png)

如上图所示，待办地址后面拼上tabids参数7-待处理,1-未读后，待办就只会显示特定的tab分类

**<font style="color:#DF2A3F;">注意：</font>**

**<font style="color:rgb(51,51,51);">当且仅当传递的维度属于当前</font>****<font style="color:rgb(51,51,51);">url</font>****<font style="color:rgb(51,51,51);">的维度，并且对应</font>****<font style="color:rgb(51,51,51);">tab</font>****<font style="color:rgb(51,51,51);">的</font>****<font style="color:rgb(51,51,51);">isshow</font>****<font style="color:rgb(51,51,51);">等于</font>****<font style="color:rgb(51,51,51);">1</font>****<font style="color:rgb(51,51,51);">时，才会显示指定维度数据，否 </font>**

**<font style="color:rgb(51,51,51);">则默认显示全部维度的数据。数据是有效维度的集合。（例：待办传递已办的tabid是不生效的）</font>**

# 三、如何新增自定义的tab页
**<font style="color:rgb(51,51,51);">tab相关数据都存在wfc_dimension表中。
  如果想添加自定义维度数据， 
  可以通过在这张表中插入数据，直接添加。
	加完之后，页面上会显示新增的自定义tab，数据显示范围为：当前列表原始数据  and  sqlwhere条件后的查询结果
</font>**
### 3.1 表结构
```sql
CREATE TABLE `wfc_dimension` (
  `id` bigint NOT NULL,
  `tabid` int NOT NULL COMMENT 'tabid,用来区分不同的tab页',
  `tabkey` varchar(20) DEFAULT NULL,
  `tablabel` bigint DEFAULT NULL COMMENT '多语言标签',
  `sqlwhere` varchar(1000) DEFAULT NULL COMMENT '维度条件，可使用wfc_operate_todo中字段',
  `iut_sqlwhere` varchar(1000) DEFAULT NULL COMMENT '统一待办数据sqlwhere条件',
  `dsporder` int DEFAULT NULL COMMENT 'tab页排序字段',
  `dimension` varchar(20) DEFAULT NULL COMMENT '列表维度-对应',
  `delete_type` int DEFAULT '0' COMMENT '0-有效数据 其他-无效数据',
  `defaultlabel` varchar(299) DEFAULT NULL COMMENT 'tab显示名默认值',
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='流程列表维度'
```
| 字段 | 说明 |
| --- | --- |
| **dimension** | 待办：todo、已办：done、我发起的：mine |
| **tabid** | 需要10000以上的值，如：10001、10002，且和表里已有数据不能重复 |
| **tabkey** | 和表里已有数据不能重复 |
| **tablabel** | 多语言标签 |
| **sqlwhere** |自定义的SQLwhere条件 |
| **iut_sqlwhere** |自定义的SQLwhere条件（对应统一待办数据） |
| **dsporder** | 默认顺序 |
| **defaultlabel** | 和【tablabel】字段对应，为默认的tab显示名（国际化读不到数据的时候会显示这个字段的值） |
| **delete_type** | 逻辑删除标识，为0表示有效数据，其他值都代表这条记录是无效的 |

### 3.2 示例
### 场景二：如何配置一个自定义的tab页（目前只支持待办、已办、我发起的列表）
#### 3.2.1 如：待办需要配置一个名为【出差申请审核】tab，该tab下只显示工作流："出差申请"下，且需要本人审批的的数据，出差申请已知workflowid为：600560329197436929
```sql
#1、固定工作流条件
workflowid in (600560329197436929)
#2、实际需要本人审批，实际就是待处理条件,直接复用标准的
(t1.isremark in (0,1,5,6,10,11)) 
#最终条件
workflowid in (600560329197436929) and (t1.isremark in (0,1,5,6,10,11))
#isremark字段是流程节点操作者身份标识，具体对应关系见附件

```

自定义多语言标签：

![](${appMdRes}/1770029015-image.png)


```sql
多语言ID：-1084847703326007297
INSERT INTO wfc_dimension (id, tabid, tabkey, tablabel, showcount, groupcolor, sqlwhere, typesetingjstr,
                           showcountjstr, dsporder, isshow, dimension, customclass, dataurl, treeurl, conditionurl,
                           isdeftab, taborder, showdimension, create_time, update_time, creator, delete_type,
                           tenant_key, defaultlabel, def_show, set_module)
VALUES (999, 999, 'flowDoing4OOffBs', -1084847703326007297, 0, '#000000', '', '', null, 0, 1, 'todo', '', '', '', '', 1, '',
        'todo',
        '2025-01-28 12:00:00', '2025-01-28 12:00:00', 0, 0, 'all_teams', '出差申请审核', 1, 0);


```

效果如下：

![](${appMdRes}/1770029038-image.png)

_**<font style="color:#DF2A3F;">注意点：</font>**_

+ id字段为主键，需要保证和原有数据不重复
+ tabid，自定义tab页的唯一标识，需保证和数据库已有的不重复
+ create_time,update_time字段放实际插入的时间

SQL执行成功后，直接到前台验证即可。