diff --git "a/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\346\223\215\344\275\234\346\214\207\345\215\227/\345\267\245\344\275\234\346\265\201/\345\256\241\346\211\271\350\257\246\346\203\205\346\250\241\346\235\277\344\273\213\347\273\215/\345\256\241\346\211\271\350\257\246\346\203\205\351\241\265 UI \346\236\204\345\273\272.md" "b/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\346\223\215\344\275\234\346\214\207\345\215\227/\345\267\245\344\275\234\346\265\201/\345\256\241\346\211\271\350\257\246\346\203\205\346\250\241\346\235\277\344\273\213\347\273\215/\345\256\241\346\211\271\350\257\246\346\203\205\351\241\265 UI \346\236\204\345\273\272.md"
index 902fdbe385a0..43ea0d29d278 100644
--- "a/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\346\223\215\344\275\234\346\214\207\345\215\227/\345\267\245\344\275\234\346\265\201/\345\256\241\346\211\271\350\257\246\346\203\205\346\250\241\346\235\277\344\273\213\347\273\215/\345\256\241\346\211\271\350\257\246\346\203\205\351\241\265 UI \346\236\204\345\273\272.md"
+++ "b/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\346\223\215\344\275\234\346\214\207\345\215\227/\345\267\245\344\275\234\346\265\201/\345\256\241\346\211\271\350\257\246\346\203\205\346\250\241\346\235\277\344\273\213\347\273\215/\345\256\241\346\211\271\350\257\246\346\203\205\351\241\265 UI \346\236\204\345\273\272.md"
@@ -1,62 +1,99 @@
-数据初始化后已经拿到了足够的数据来进行界面构建了。界面基本布局已经在**审批详情页的基本结构**这一章节描述。以下进行具体模块的介绍。
+本文将针对审批页面中各个具体模块进行关于UI构建方面的介绍。
+> ? 这一环节是在审批详情页面数据初始化完毕的基础上进行。如果不了解这个过程,可参考**审批详情模板介绍** 下的【**审批详情页面数据初始化**】
## 基本信息
+
这个模块主要使用了**网格布局**组件和**文本**组件,主要呈现流程的基本信息,包含**发起人**、**发起时间**、**结束时间**、**流程状态**。
### 组件布局描述
+
模块主体是一个**网格布局**组件,其中设置**4**行。每一行有**2**列。每一行的第一列为**信息标题**。第二列为具体信息字段的值。
![](https://qcloudimg.tencent-cloud.cn/raw/fd836ecf94d9cef31ba43c1c1f1ed118.jpg)
### 具体信息字段取值
-- **发起人**
+
+#### 发起人
+
在基础属性 > 文本内容中,绑定 `$page.dataset.state?.processInstance` 变量中的 `StartedBy` 这个值。
+
```js
- $page.dataset.state?.processInstance?.StartedBy || "-";
+$page.dataset.state?.processInstance?.StartedBy || "-";
```
-- **发起时间**
+
+#### 发起时间
+
在基础属性 > 文本内容中,绑定 `$page.dataset.state?.processInstance` 变量中的 `StartTime` 这个值, 其中在表达式中需要通过 `DateText` 这个公式进行时间转换,并且做空值判断。
+
```js
- $page.dataset.state?.processInstance?.StartTime
- ? DateText(
- $page.dataset.state.processInstance?.StartTime,
- "YYYY-MM-DD HH:mm:ss"
- )
- : "-";
+$page.dataset.state?.processInstance?.StartTime
+ ? DateText(
+ $page.dataset.state.processInstance?.StartTime,
+ "YYYY-MM-DD HH:mm:ss"
+ )
+ : "-";
```
-- **结束时间**
+
+#### 结束时间
+
逻辑与发起时间相同,取值为 `EndTime`。
-- **流程状态**
+
+#### 流程状态
+
流程状态这个信息在 `$page.dataset.state?.processInstance` 这个变量中并未直接返回,需要通过 `$page.dataset.state?.processInstance` 这个变量中几个字段进行计算而来。计算方法为 **getProcessStatusInfo**,此方法返回 `text`(状态名称)和 `color`(状态字段颜色)。最终的文本内容绑定表达式如下:
+
```js
- $page.handler?.getProcessStatusInfo?.($page.dataset.state.processInstance)
- ?.text || "-";
+$page.handler?.getProcessStatusInfo?.($page.dataset.state.processInstance)
+ ?.text || "-";
```
+
然后给在流程状态文本组件中的样式 > 高级 > style 绑定中进行如下样式绑定。
+
```js
- ({
- color:
- $page.handler?.getProcessStatusInfo?.($page.dataset.state.processInstance)
- ?.color || "#000",
- });
+({
+ color:
+ $page.handler?.getProcessStatusInfo?.($page.dataset.state.processInstance)
+ ?.color || "#000",
+});
```
### 涉及到的方法
-#### getProcessStatusInfo
-计算当前流程的状态信息,入参为当前流程实例,出参为状态文本(text)和文本颜色(color)。
+
+
+
+
+ 操作名称
+ | UI组件组成
+ | 条件渲染规则
+ | 条件渲染表达式
+ |
+
+
+ 抄送 |
+
+ 抄送这一列放置了一个普通容器。其中包含一个按钮,一个成员选择组件。成员选择组件通过样式定位,覆盖在按钮之上。点击按钮其实是触发了成员选择弹窗。
+
+
+ |
+
+
+ - 当前的页面类型(变量
internalPageType )是 DRAFT(草稿)、CREATEFLOW(创建)、TODO(待办)中的一个。
+ - 审批页面详情(变量
approvalPageDetail )中的 Show 、ShowSubmitApp 、 ShowCarbonCopy 的值都为true。
+
+ |
+
```js
["DRAFT", "CREATEFLOW", "TODO"].includes(
@@ -199,11 +319,20 @@ $page.dataset.state.processCanvasInfo = processCanvasInfo;
$page.dataset.state.approvalPageDetail?.ShowCarbonCopy;
```
-#### 保存草稿
-##### 条件渲染规则
-- 当前的页面类型(变量 `internalPageType`)是 DRAFT(草稿)、CREATEFLOW(创建)中的一个。
-- 审批页面详情(变量 `approvalPageDetail`)中的 `Show`、`ShowSubmitApp` 的值都为**true**。
-- 审批实例(变量 `processInstance`) 中的 `CanDelete` 的值为**true**。
+ |
+
+
+
+ 保存草稿 |
+ 按钮 |
+
+
+ - 当前的页面类型(变量
internalPageType )是 DRAFT(草稿)、CREATEFLOW(创建)中的一个。
+ - 审批页面详情(变量
approvalPageDetail )中的 Show 、ShowSubmitApp 的值都 为 true。
+ - 审批实例(变量
processInstance ) 中的 CanDelete 的值为true。
+
+ |
+
```js
["DRAFT", "CREATEFLOW"].includes($page.dataset.state.internalPageType) &&
@@ -212,12 +341,21 @@ $page.dataset.state.processCanvasInfo = processCanvasInfo;
$page.dataset.state.processInstance?.CanDelete;
```
-#### 取消
-
-##### 条件渲染规则
-- 当前的页面类型(变量 `internalPageType`)是 DRAFT(草稿)、CREATEFLOW(创建)中的一个。
-- 审批页面详情(变量 `approvalPageDetail`)中的 `Show`、`ShowSubmitApp` 的值都为**true**。
-- 审批实例(变量 `processInstance`)中的 `CanDelete` 的值为**true**。
+ |
+
+
+
+ 取消 |
+ 按钮 |
+
+
+ - 当前的页面类型(变量
internalPageType )是 DRAFT(草稿)、CREATEFLOW(创建)中的一个。
+ - 审批页面详情(变量
approvalPageDetail )中的 Show 、ShowSubmitApp
+ 的值都为true。
+ - 审批实例(变量
processInstance )中的 CanDelete 的值为true。
+
+ |
+
```js
["DRAFT", "CREATEFLOW"].includes($page.dataset.state.internalPageType) &&
@@ -226,10 +364,20 @@ $page.dataset.state.processCanvasInfo = processCanvasInfo;
$page.dataset.state.processInstance?.CanDelete;
```
-#### 提交申请
-##### 条件渲染规则
-- 当前的页面类型(变量 `internalPageType`)是 DRAFT(草稿)、CREATEFLOW(创建)、TODO(待办)中的一个。
-- 审批页面详情(变量 `approvalPageDetail`)中的 `Show`、`ShowSubmitApp` 的值都为**true**。
+ |
+
+
+
+ 提交申请 |
+ 按钮 |
+
+
+ - 当前的页面类型(变量
internalPageType )是 DRAFT(草稿)、CREATEFLOW(创建)、TODO(待办)中的一个。
+ - 审批页面详情(变量
approvalPageDetail )中的 Show 、ShowSubmitApp
+ 的值都为true。
+
+ |
+
```js
["DRAFT", "CREATEFLOW", "TODO"].includes(
@@ -239,13 +387,21 @@ $page.dataset.state.processCanvasInfo = processCanvasInfo;
$page.dataset.state.approvalPageDetail?.ShowSubmitApp;
```
-#### 回退
-
-##### 条件渲染规则
-
-- 当前的页面类型(变量 `internalPageType`)是 TODO(待办)。
-- 审批页面详情(变量 `approvalPageDetail`)中的 `ShowRollBack` 的值都为 **true**, `ShowSubmitApp` 为 **false**。
-- 变量 `taskHasEnd` 的值为 **false**。
+ |
+
+
+
+ 回退 |
+ 按钮 |
+
+
+ - 当前的页面类型(变量
internalPageType )是 TODO(待办)。
+ - 审批页面详情(变量
approvalPageDetail )中的 ShowRollBack 的值都为 true,
+ ShowSubmitApp 为 false。
+ - 变量
taskHasEnd 的值为 false。
+
+ |
+
```js
$page.dataset.state.internalPageType === "TODO" &&
@@ -254,17 +410,21 @@ $page.dataset.state.internalPageType === "TODO" &&
!$page.dataset.state.taskHasEnd;
```
-#### 加签
-
-##### 构成
-
-加签的操作布局构成同抄送
-
-##### 条件渲染规则
-
-- 当前的页面类型(变量 `internalPageType`)是 TODO(待办)。
-- 审批页面详情(变量 `approvalPageDetail`)中的 `ShowAddAssignee` 的值都为 **true**, `ShowSubmitApp` 为 **false**。
-- 变量 `taskHasEnd` 的值为 **false**。
+ |
+
+
+
+ 加签 |
+ 加签的操作布局构成同抄送 |
+
+
+ - 当前的页面类型(变量
internalPageType )是 TODO(待办)。
+ - 审批页面详情(变量
approvalPageDetail )中的 ShowAddAssignee 的值都为 true,
+ ShowSubmitApp 为 false。
+ - 变量
taskHasEnd 的值为 false。
+
+ |
+
```js
$page.dataset.state.internalPageType === "TODO" &&
@@ -273,17 +433,21 @@ $page.dataset.state.internalPageType === "TODO" &&
!$page.dataset.state.taskHasEnd;
```
-#### 转办
-
-##### 构成
-
-转办的操作布局构成同抄送。
-
-##### 条件渲染规则
-
-- 当前的页面类型(变量 `internalPageType`)是 TODO(待办)。
-- 审批页面详情(变量 `approvalPageDetail`)中 `ShowTurnToPerson` 的值都为 **true**, `ShowSubmitApp` 为 **false**。
-- 变量 `taskHasEnd` 的值为 **false**。
+ |
+
+
+
+ 转办 |
+ 转办的操作布局构成同抄送 |
+
+
+ - 当前的页面类型(变量
internalPageType )是 TODO(待办)。
+ - 审批页面详情(变量
approvalPageDetail )中 ShowTurnToPerson 的值都为 true,
+ ShowSubmitApp 为 false。
+ - 变量
taskHasEnd 的值为 false。
+
+ |
+
```js
$page.dataset.state.internalPageType === "TODO" &&
@@ -292,14 +456,21 @@ $page.dataset.state.internalPageType === "TODO" &&
!$page.dataset.state.taskHasEnd;
```
-#### 拒绝
-
-##### 条件渲染规则
-
-- 当前的页面类型(变量 `internalPageType`)是 TODO(待办)。
-- 审批页面详情(变量 `approvalPageDetail`)中的 `ShowSubmitApp` 的值都为 **false**。
-- 审批实例(变量 `processInstance`)中的 `UserTaskType` 的值**不为 2**。
-- 变量 `taskHasEnd` 的值为 **false**。
+ |
+
+
+
+ 拒绝 |
+ 按钮 |
+
+
+ - 当前的页面类型(变量
internalPageType )是 TODO(待办)。
+ - 审批页面详情(变量
approvalPageDetail )中的 ShowSubmitApp 的值都为 false。
+ - 审批实例(变量
processInstance )中的 UserTaskType 的值不为 2。
+ - 变量
taskHasEnd 的值为 false。
+
+ |
+
```js
$page.dataset.state.internalPageType === "TODO" &&
@@ -308,14 +479,21 @@ $page.dataset.state.internalPageType === "TODO" &&
!$page.dataset.state.taskHasEnd;
```
-#### 同意
-
-##### 条件渲染规则
-
-- 当前的页面类型(变量 `internalPageType`)是 TODO(待办)。
-- 审批页面详情(变量 `approvalPageDetail`)中的 `ShowSubmitApp` 的值都为 **false**。
-- 审批实例(变量 `processInstance`)中的 `UserTaskType` 的值**不为 2**。
-- 变量 `taskHasEnd` 的值为 **false**。
+ |
+
+
+
+ 同意 |
+ 按钮 |
+
+
+ - 当前的页面类型(变量
internalPageType )是 TODO(待办)。
+ - 审批页面详情(变量
approvalPageDetail )中的 ShowSubmitApp 的值都为 false。
+ - 审批实例(变量
processInstance )中的 UserTaskType 的值不为 2。
+ - 变量
taskHasEnd 的值为 false。
+
+ |
+
```js
$page.dataset.state.internalPageType === "TODO" &&
@@ -324,14 +502,21 @@ $page.dataset.state.internalPageType === "TODO" &&
!$page.dataset.state.taskHasEnd;
```
-#### 处理
-
-##### 条件渲染规则
-
-- 当前的页面类型(变量 `internalPageType`)是 TODO(待办)。
-- 审批页面详情(变量 `approvalPageDetail`)中的 `ShowSubmitApp` 的值都为**false**。
-- 审批实例(变量 `processInstance`)中的 `UserTaskType` 的值**为 2**。
-- 变量 `taskHasEnd` 的值为 **false**。
+ |
+
+
+
+ 处理 |
+ 按钮 |
+
+
+ - 当前的页面类型(变量
internalPageType )是 TODO(待办)。
+ - 审批页面详情(变量
approvalPageDetail )中的 ShowSubmitApp 的值都为false。
+ - 审批实例(变量
processInstance )中的 UserTaskType 的值为 2。
+ - 变量
taskHasEnd 的值为 false。
+
+ |
+
```js
$page.dataset.state.internalPageType === "TODO" &&
@@ -340,102 +525,175 @@ $page.dataset.state.internalPageType === "TODO" &&
!$page.dataset.state.taskHasEnd;
```
-#### 撤销
-
-##### 条件渲染规则
-
-- 当前的页面类型(变量 `internalPageType`)是 CREATE(创建)、DONE(已办)中的一个。
-- 审批页面详情(变量 `approvalPageDetail`)中的 `ShowRevoke` 的值都为 **true**。
+ |
+
+
+
+ 撤销 |
+ 按钮 |
+
+
+ - 当前的页面类型(变量
internalPageType )是 CREATE(创建)、DONE(已办)中的一个。
+ - 审批页面详情(变量
approvalPageDetail )中的 ShowRevoke 的值都为 true。
+
+ |
+
```js
["CREATE", "DONE"].includes($page.dataset.state.internalPageType) &&
$page.dataset.state.approvalPageDetail?.ShowRevoke;
```
-### 涉及到的变量
-#### internalPageType
-页面类型。
-
-#### processInstance
-流程实例。
-
-#### approvalPageDetail
-审批详情。
+ |
+
+
-#### taskHasEnd
-审批任务是否已完成。
+### 涉及到的变量
+
@@ -55,45 +63,50 @@
taskHasEnd |
-
+ |
当前审批任务是否结束,将用于审批操作按钮条件展示判断中,避免出现任务已结束,但进入 pageType=TODO 的链接时还能操作的情况。
赋值逻辑:
+
```js
// 将任务是否结束变量赋值。如果获取到的页面类型即 pageType 是 TODO,且 TaskStatus > 1, 则将 taskHasEnd 置为 true
// $page.dataset.state.taskHasEnd 将用于审批操作按钮条件展示判断中
// 避免出现任务已结束,但进入 pageType = TODO 的链接时还能操作的情况
$page.dataset.state.taskHasEnd =
processInstance.TaskStatus > 1 && pageType === "TODO";
-``` |
+```
+
processInstance |
- 流程实例详情。数据来源于 getProcessMetaData 中返回的 processInstance。用于显示流程基本信息,以及利用其中的 InstanceId 作为参数进行流程操作。 |
+ 流程实例详情。数据来源于 getProcessMetaData 中返回的 processInstance 。用于显示流程基本信息,以及利用其中的 InstanceId 作为参数进行流程操作 |
approvalPageDetail |
- 审批详情信息变量。数据来源于 getProcessMetaData 中返回的 approvalPageDetail。其中包含流程变量信息,将会用于审批表单的回显。另外还包含一些控制按钮的显隐控制字段,例如是否抄送、是否加签等。 |
+ 审批详情信息变量。数据来源于 getProcessMetaData 中返回的 approvalPageDetail 。其中包含流程变量信息,将会用于审批表单的回显。另外还包含一些控制按钮的显隐控制字段,如是否抄送,是否加签等。 |
elementInfos |
- 批办过程数据。数据来源于 `getProcessMetaData 中返回的 elementInfos。用于渲染流程记录。 |
+ 批办过程数据。数据来源于 getProcessMetaData 中返回的 elementInfos 。用于渲染流程记录。 |
processCanvasInfo |
- 流程画布数据。数据来源于 getProcessMetaData 中返回的 processCanvasInfo。用于绘制流程图。 |
+ 流程画布数据。数据来源于 getProcessMetaData 中返回的 processCanvasInfo 。用于绘制流程图 |
internalPageType |
- 审批页面类型。来源于 initApprovalPage 入参。 TODO:待办 DONE:已办 CREATE:创建 CC:抄送 |
+ 审批页面类型。来源于 initApprovalPage 入参。
+
+ - TODO:待办
+ - DONE:已办
+ - CREATE:创建
+ - CC:抄送
+
+ |
internalFlowTaskId |
流程任务 ID。来源于 initApprovalPage 入参。 |
-
- XXXXX |
- XXXXX |
-
@@ -104,4 +117,4 @@ $page.dataset.state.taskHasEnd =
- [查询流程画布详情](https://cloud.tencent.com/document/product/1301/94470#.E6.9F.A5.E8.AF.A2.E6.B5.81.E7.A8.8B.E7.94.BB.E5.B8.83.E8.AF.A6.E6.83.85)
- [批办过程查询](https://cloud.tencent.com/document/product/1301/94470#.E6.89.B9.E5.8A.9E.E8.BF.87.E7.A8.8B.E6.9F.A5.E8.AF.A2)
-可以看到 initApprovalPage 内执行了一些关于 UI 渲染的变量赋值操作。有了这些变量,就可以进行 UI 的绘制以及后续的流程操作了。
+可以看到 `initApprovalPage` 内执行了一些关于 UI 渲染的变量赋值操作。有了这些变量,就可以进行 UI 的绘制以及后续的流程操作了。
diff --git "a/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\346\223\215\344\275\234\346\214\207\345\215\227/\345\267\245\344\275\234\346\265\201/\345\256\241\346\211\271\350\257\246\346\203\205\346\250\241\346\235\277\344\273\213\347\273\215/\345\256\241\346\211\271\350\257\246\346\203\205\351\241\265\351\235\242\350\260\203\350\257\225.md" "b/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\346\223\215\344\275\234\346\214\207\345\215\227/\345\267\245\344\275\234\346\265\201/\345\256\241\346\211\271\350\257\246\346\203\205\346\250\241\346\235\277\344\273\213\347\273\215/\345\256\241\346\211\271\350\257\246\346\203\205\351\241\265\351\235\242\350\260\203\350\257\225.md"
index c817f7877598..d2332ce2dcc0 100644
--- "a/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\346\223\215\344\275\234\346\214\207\345\215\227/\345\267\245\344\275\234\346\265\201/\345\256\241\346\211\271\350\257\246\346\203\205\346\250\241\346\235\277\344\273\213\347\273\215/\345\256\241\346\211\271\350\257\246\346\203\205\351\241\265\351\235\242\350\260\203\350\257\225.md"
+++ "b/product/\347\247\273\345\212\250\344\270\216\351\200\232\344\277\241/\344\272\221\345\274\200\345\217\221\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260/\346\223\215\344\275\234\346\214\207\345\215\227/\345\267\245\344\275\234\346\265\201/\345\256\241\346\211\271\350\257\246\346\203\205\346\250\241\346\235\277\344\273\213\347\273\215/\345\256\241\346\211\271\350\257\246\346\203\205\351\241\265\351\235\242\350\260\203\350\257\225.md"
@@ -16,13 +16,15 @@ const { flowTaskId = "1156279484831399042", pageType = "TODO" } = query;
- 管理员通过数据模型触发的审批任务。
## 开发调试步骤
-### 创建一个流程
+
+1-3步中具体操作可[参考](https://cloud.tencent.com/document/product/1301/83046)
+### 1.创建一个流程
创建好需要的流程,配置审批节点,以及变量等内容,单击审批节点配置中的新建,可以得到一个审批页面,然后保存。保存之后回到审批节点页面选择处选择所建立的页面。
-### 发布体验版页面
+### 2.发布体验版页面
在创建好一个页面后,可以现发个体验版用于测试。这样也保证能够创建出正确的数据。
-### 触发流程
+### 3.触发流程
发布好之后,以超级管理员身份登录企业工作台。
#### 超级管理员作为发起人
@@ -33,15 +35,20 @@ const { flowTaskId = "1156279484831399042", pageType = "TODO" } = query;
管理员也可以作为审批人或者抄送人,那么触发流程就可以不必是管理员,但管理员需要是作为审批节点的任务接收人、或者是抄送时抄送给了超级管理员。届时会在**我的待办**、**我已处理**、**抄送我的** 这三类列表中看到相应的数据。单击记录,跳转新页面,会在浏览器地址栏中看到 flowTaskId 的值,以及 pageType 信息。
-### 生命周期中赋值
+### 4.生命周期中赋值
拿到 flowTaskId 的值以及 pageType 信息之后,就可以在页面生命周期的 onPageLoad 方法中进行赋值了。
+
+生命周期配置窗口打开路径
+![](https://qcloudimg.tencent-cloud.cn/raw/dda2399f76d2975fdfdc61c32e60e591.jpg)
+
+设置结构默认值
```js
const { flowTaskId = "1156279484831399042", pageType = "TODO" } = query;
```
赋值之后保存。然后编辑器内的预览界面就会像运行态那样去运行一个页面了。
![](https://qcloudimg.tencent-cloud.cn/raw/e44f576a99d37bd067f77111c17e35ff.jpg)
-### 开发调试结束
+### 5.开发调试结束
开发调试结束后需要将默认值进行清除,还原回去。
```js
const { flowTaskId, pageType } = query;