# 事项转待办-H5

## 组件效果
![](https://im.weaver.com.cn/server/index.php?s=/api/attachment/visitFile&sign=c9faee55869df4300b68aaa9cd3a17d8)

## 一般事项转待办

事项转待办，目前提供了两种对接方式，一种是直接跳转URL地址进行创建，另一种通过页面组件的方式

### 跳转URL

H5中可直接通过跳转页面地址的方式进入待办创建页面，页面地址如下

``` js
{host}/mobile/my/wait/editor/0/create/{module}/{entityId}/{entity_name}/{employeeId}
```

#### 示例：

https://weapp.yunteams.cn/mobile/my/wait/editor/0/create/workflow/653643329111744513/%E5%AE%A1%E6%89%B9%E6%B5%81%E7%A8%8B%E7%9A%84%E8%A1%A8%E5%8D%95--%E6%8F%90%E4%BA%A4%E5%AE%A1%E6%89%B9001

#### 参数说明

| 参数名      | 类型   | 是否必传 | 说明     |
|:------------|:-------|:---------|----------|
| module      | string | 是       | 模块     |
| entityId    | string 或 EntityItem[] | 是       | 事项 id，单个事项转待办时，只需传事项 id，批量时，需要传入事项数组，注意：传入数组时需要做下序列化  |
| entity_name | string | 是       | 事项名称，如有特殊字符，做下 URL encode |
| employeeId | string | 否       | 操作账号 id，用于支持次级账号 |
| EntityItem.entityId | string | 是       | 事项 id |
| EntityItem.module | string | 是       | 事项所属模块 |
| EntityItem.content | string | 是       | 事项名称 |

考虑到事项名称的丰富性，且由于React Router 路由传参的局限性，支持直接通过URL传参的方式获取事项名称，参数名称为: waitTitle，比如：

https://weapp.yunteams.cn/mobile/my/wait/editor/0/create/workflow/653643329111744513?waitTitle=%E5%AE%A1%E6%89%B9%E6%B5%81%E7%A8%8B%E7%9A%84%E8%A1%A8%E5%8D%95--%E6%8F%90%E4%BA%A4%E5%AE%A1%E6%89%B9001

如果通过这种方式传递事项名称，将优先使用，不传或传空，则使用路由设置的事项名称

另外支持通过URL传参 waitEntitys 设置转待办的事项，参数参考 entityId

### 页面组件

#### 示例

```js

render() {
    return <>
      <Button type='primary' onClick={this.openCreateWait}>打开转待办</Button>
      <CorsComponent app='@weapp/my' compName='MRouteMyWaitEditor' onChange={this.onChangeWait} />
    </>
}

openCreateWait = () => {
        // page： 页面名称， url 上的最后一层
		// module 模块名
		// entityId 事项 id
		// entity_name 事项 名称
        this.props.history.push(`${getParentPath(this.props)}/{page}/editor/0/create/{module}/{entityId}/{entity_name}`)
		// 示例一：https://weapp.yunteams.cn/info/message/demo/editor/0/create/workflow/653643329111744513/%E5%AE%A1%E6%89%B9%E6%B5%81%E7%A8%8B%E7%9A%84%E8%A1%A8%E5%8D%95--%E6%8F%90%E4%BA%A4%E5%AE%A1%E6%89%B9001
}

onChangeWait = (data: any, action: any) => {
	console.log('on change wait', data, action)
}
```

#### 参数说明
| 参数     | 说明                                                                                                       | 类型                                    | 是否必填 | 默认值 |
|:---------|:-----------------------------------------------------------------------------------------------------------|:----------------------------------------|:---------|:-------|
| onChange | 待办更新（标记完成、创建、修改）后的回调，waitData: 更新完成后的待办信息，action: FINISH 、 CRETTE 、 EDIT | (waitData: any, action: string) => void | 否       | -      |

## 消息转待办 

```js
{host}/mobile/my/wait/editor/0/create/msg/{msgIds}/{title}
```

### 参数说明

| 参数名 | 类型   | 是否必传 | 说明                                                      |
|:-------|:-------|:---------|-----------------------------------------------------------|
| msgIds | string | 是       | 消息id，多个消息使用 , 符号隔开                           |
| title  | string | 否       | 待办标题，不传，将默认使用第一条消息数据中的 content 字段 |

### 返回方式支持

鉴于APP中消息转待办完成后需返回，而 window.history.back 无法生效，所以提供额外的控制参数 *bt* 处理各情况下的返回，同时保证其他模块对接使用转待办组件不受影响，该参数以 url 参数的方式提供支持，参数说明如下：

``` js
enum WAIT_BACK_TYPE {
    /** 基础返回，走Browser或者APP Webview 的页面返回方式 */
    BASE = 0,
    /** APP中关闭当前WV页面 */
    APP_CLOSE = 1,
    /** 使用APP中的返回（预留） */
    APP = 2,
}
```

### 示例
https://weapp.yunteams.cn/mobile/my/wait/editor/0/create/msg/1640338834260100192,1640338834260100191/DEMO%E6%A0%87%E9%A2%98?bt=1
