需求原型：http://pd.e-cology.com.cn/pd/E10/ly/dbsx/#id=pgtpqa&p=%E5%AE%A1%E6%89%B9&g=1
## 1、需求说明
  e10待办事项，支持自行创建待办，及将系统事项添加为待办的功能，并支持提醒。支持文档、审批、IM消息、邮件、报销和公文模块，考虑依据为这些模块数据本身没有到期时间概念，添加到待办中，赋一个到期时间属性，可将普通事项转化为简单即时任务，结束即完成。（项目、任务、日程、会议等本身就有到期时间属性的事项，此次未加入）
## 2、实现逻辑
### （1）待办相关接口
依赖为：
```xml
<dependency>
<groupId>com.weaver</groupId>
<artifactId>weaver-my-api</artifactId>
</dependency>
```
订阅服务为：weaver-my-service
各个模块需要通过事项ID查询事项是否已经设为待办 故本模块提供了rpc接口用于查询是否已经设为待办；
dubbo接口为：com.weaver.my.api.wait.rest.WaitRest#isWaitEntity。
接口说明：入参为 
```java
public class BatchWaitEntityDTO implements Serializable {
    private String module;
    /**
     * 事项ID集合
     */
    private List<Long> entityIds;
    /**
     * 当前用户
     */
    private Long employeeId;
    /**
     *
     */
    private String tenantKey;}
```
返回参数为 WeaResult<List<Long>>，list中为已经设为待办的事项ID集合。
### （2）待办相关组件
为了减少各个模块开发成本，故本模块统一设置了新建待办的组件以及待办详情的组件 
原型如下：
<center> ![](http://192.168.7.199:4999/server/index.php?s=/api/attachment/visitFile/sign/68bc7cb4f8989f2f026e64157d73e3c9)</center>
<center>    待办详情（MyWaitCard）</center>
<center>![](http://192.168.7.199:4999/server/index.php?s=/api/attachment/visitFile/sign/2dc7a19f45a3fe381242b5c52f04e8e0)
新建待办（MyWaitCreate）</center>
各个模块只需要直接调用组件就能快速事项创建待办以及查看待办卡片。
## 3、调用方式DEMO
说明：新建待办的组件名称为：MyWaitCreate;  待办卡片的组件名称为: MyWaitCard

调用方式已新建为例：

```html
render() {
    return (<div>
     {<CorsComponent weId={`${this.props.weId || ''}_4s0xx7`}
 app={"@weapp/my"}
 compName={"MyWaitCreate"} 
 visible={attentionVisible}
 entitys={[{entityId:'1',content:'adas',module:"workflow",formId:"12345"}]}
 successCallBack={this.attentionCallback}
 failCallBack={this.attentionCallback}
 onClose={this.attentionCancel}

 ></CorsComponent>}
    </div>)
```
**MyWaitCreate组件参数说明：**


| 参数       | 说明                 | 类型                             | 是否必填 | 默认值 |
|:-----------|:---------------------|:---------------------------------|:---------|:-------|
| visible   | 控制弹窗显示关闭 | boolean | 是       | -      |
| entitys | 设为待办的事项信息 （IM消息忽略）            | EntityData[]              | 是      | -      |
| disabledAutoReply   | 是否关闭IM消息的自动回复功能 | boolean | 否       | -      |
| successCallBack |  创建成功的时候回调 {canAutoReply: true, autoReplyContent: "收到，我稍后处理"}            | (waitInfo?: WaitInfo) => void             | 否       | -      |
| failCallBack |  创建失败的时候回调             | () => void             | 否       | -      |
| onClose |  点击取消的时候调用             | () => void             | 否       | -      |
| msgDTOS |  消息信息（IM专用）             | MsgDTO[]           | 是      | -      |
| module |  模块（IM专用IM模块传入“msg”）             | string          | 是      | -      |


```javascript
export interface EntityData {
    /** 事项ID */
    entityId: string;
    /** 事项内容 */
    content: string;
    /**
     * 模块（如果是eb构建出来的应用模块标识前统一加 "ebuilder_"标识）
     */
    module: string;
	/**
     * 表单id
     */
	formId:string;
}

export interface MsgDTO {
    /**
     * 消息id
     */
    id: String;
    /**
     * 消息内容
     */
    content: String;
    /**
     * 消息类型
     */
    msgType: string;

    /**
     * 消息发送时间 给当前的时间戳
     */
    createTime: number;
    /**
     * 消息发送人信息
     */
    sender: WatchMsgSenderDTO;
    /**
     * 消息
     */
    msg: any;
    /**
     * 消息来源类型
     */
    sourceType: number;
    /**
     * 消息来源为单人时的用户
     */
    user?: WatchMsgSenderDTO;
    /**
     * 消息来源为群组时的群组
     */
    group?: WatchMsgGroupDTO;
    /**
     * 是否为匿名消息
     */
    isAnonymous?: boolean;
	   /**
     * 会话名称
     */
  sessionName?: string;

}

export interface WatchMsgSenderDTO {
    /**
     * 发送人 uid
     */
    uid: string;
    /**
     * 发送人 cid
     */
    cid: string;
    /**
     * 发送人姓名
     */
    name: string;
}

export interface WatchMsgGroupDTO {
    /**
     * 群组 id
     */
    id: string;
    /**
     * 群组名称
     */
    name: string;
}
```
**MyWaitCard组件参数说明：**
该组件集成了Trigger 使用时候直接在需要的位置引入

| 参数       | 说明                 | 类型                             | 是否必填 | 默认值 |
|:-----------|:---------------------|:---------------------------------|:---------|:-------|
| visible   | 控制弹窗显示关闭 | boolean | 是       | -      |
| entityId | 事项ID             | string             | 是      | -      |
| module | 模块ID             | string             | 是      | -      |
| deleteSuccessCallBack |  删除待办成功回调            | () => void             | 否       | -      |
| finshSuccessCallBack |  结束待办成功回调             | () => void             | 否       | -      |
| editSuccessCallBack |  编辑待办成功回调             | () => void             | 否       | -      |
| onPopupVisibleChange |  Trigger 状态变化时候回调             |(visible: boolean) => void;  | 否       | -      |
| popupPlacement |  Trigger 弹窗位置             |string  | 否       | leftTop    |
| haveIcon |  是否有待办图标当不传的时候默认有待办图标 '0'表示不需要             |string  | 否       | -   |
| size |       图标大小        |string  | 否       | xs    |
| isDialog |       是否为弹窗传1的时候代表弹窗        |string  | 否       | -    |
## 其他
由于是跨模块引入组件 导致要测试的话需要放到test环境才能使用 为了方便本地调试 我这边将前端文件打了一个包
需要的可以下载解压后放到自己本地的build文件夹后就能在本地直接调试 下载链接：[my.zip](http://192.168.7.199:4999/server/index.php?s=/api/attachment/visitFile/sign/285e90e76b5cf551f449a853147b18e9 "[my.zip")
**待办卡片点击编辑出现的日期面板不能正常关闭解决方案：http://10.12.101.12/FRONTEND/weapp-ui/-/issues/2729  在list设置属性isStopMouseDown=true**
