时序图

接口地址:http://39.108.55.230:30011/workbench-portal-api/doc.html#/home

核心接口

发起待办

用于业务发起任务后,同步调用该接口发起一条待办。

  • 接口地址 POST /workbench-portal-api/dealMine
  • 重要参数说明
参数名称 参数说明 是否必填
taskTitle 任务标题
taskContent 任务内容
appId 详情微应用id (根据实际业务传递前端页面微应用id)
businessTypeId 业务类型id (通过接口workbench-portal-api/dealBusinessType/page 获取业务类型列表,根据实际业务选择相应的业务类型id)
dealLabel 待办标签 (根据实际业务传递相应的标签,需求文档也有相应描述)
detailParam 跳转到任务详情页所需参数
sourceId 业务数据表主键id,当前业务数据的唯一标识,后续场景可能需要通过业务id查询待办信息
lastDealBy 下个节点办理人的名称(多个用逗号隔开)
lastDealById 下个节点办理人id(多个用逗号隔开)
limitedDate 限办时间
  • 请求示例
    {
    "appId": "1742846641149734912",
    "businessTypeId": "1744248061471305730",
    "dealLabel": "信息表更审核",
    "detailParam": "/components/activeDetail?id=1744928332678533121",
    "lastDealBy": "张三",
    "lastDealById": "1434717712146767873",
    "sourceId": "000100101022222",
    "taskContent": "发布审核",
    "taskTitle": "测试待办消息",
    }

处理待办

用于办理任务后,同步调用该接口办理一条待办,根据是否传递下一个任务办理人决定是跳到一个节点还是结办任务。

  • 接口地址 PUT workbench-portal-api/dealInfo
  • 重要参数说明
参数名称 参数说明 是否必填
limitedDate 限办时间(如果有下个节点则填写)
nextDealById 下个节点办理人id,多选逗号隔开(如果有下个节点则填写)
sourceId 业务源id,通过它查询待办信息
taskCode 任务唯一编号,通过它查询待办信息

Tip : sourceId和taskCode选择一个即可

  • 请求实例
{
  "limitedDate": "2024-02-03",
  "nextDealById": "1398846289516564480,1434717712146767873",
  "sourceId": "1744928332678533121",
  "taskCode": ""
}

业务类型查询
用于发起待办时,查询业务类型列表数据,选择和业务相匹配的业务类型,传递数据id.
接口地址 workbench-portal-api/dealBusinessType/page
重要参数说明

参数名称 参数说明 是否必填
typeName 业务事项名称
page 默认1
size 默认10

feign接口调用示例

feign接口

@FeignClient(name = "pai-workbench-portal", fallbackFactory = RemoteDealMineFallbackFactory.class)
public interface IDealMineService {

    /**
     * 发起待办消息
     * @return Reply<DealMineVO>
     */
    @PostMapping(value = "/dealMine")
    Reply<DealMineVO> postToDoMessage(@RequestBody DealMineSaveVO vo, @RequestHeader(SecurityConstants.FROM) String from);

    /**
     *办理待办
     * @return
     */
    @PutMapping(value = "/dealInfo")
    Reply<DealInfoVO> dealToDoMessage(@RequestBody DealInfoUpdateVO vo, @RequestHeader(SecurityConstants.FROM) String from);

    /**
     * 查询业务分类
     * @param page
     * @param size
     * @param typeName
     * @return
     */
    @GetMapping(value = "/dealBusinessType/page")
    Reply<Page<DealBusinessTypeVO>> getDealBusinessTypePage(@RequestParam("page")int page
            ,@RequestParam("size")int size,@RequestParam(required = false,value = "typeName")String typeName);

}

请求实体类

@ApiModel("我的待办")
public class DealMineSaveVO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty(value = "主键" )
    private String id;
    /**
     * 任务唯一编号
     */
    @ApiModelProperty(value = "任务唯一编号" )
    @Size(max = 50)
    @InvalidCode(value = "5201", message = "{invalid.code.5201}", desc = "任务唯一编号")
    private String taskCode;
    /**
     * 下个节点办理人,(多个用逗号隔开)
     */
    @ApiModelProperty(value = "下个节点办理人(多个用逗号隔开)" )
    @Size(max = 50)
    @InvalidCode(value = "55201", message = "{invalid.code.55201}", desc = "下个节点办理人")
    @NotNull
    private String lastDealBy;

    /**
     * 下个节点办理人id,(多个用逗号隔开)
     */
    @ApiModelProperty(value = "下个节点办理人id(多个用逗号隔开)" )
    @Size(max = 50)
    @InvalidCode(value = "55202", message = "{invalid.code.55202}", desc = "下个节点办理人ID")
    @NotNull
    private String lastDealById;

    /**
     * 限制办理时间
     */
    @ApiModelProperty(value = "限制办理时间" )
    private Date limitedDate;
    /**
     * 任务标题
     */
    @ApiModelProperty(value = "任务标题" )
    @Size(max = 50)
    @NotNull
    @InvalidCode(value = "5202", message = "{invalid.code.5202}", desc = "任务标题")
    private String taskTitle;
    /**
     * 任务内容
     */
    @ApiModelProperty(value = "任务内容" )
    @Size(max = 65535)
    @InvalidCode(value = "5203", message = "{invalid.code.5203}", desc = "任务内容")
    private String taskContent;
    /**
     * 企业id
     */
    @ApiModelProperty(value = "企业id" )
    @Size(max = 50)
    @InvalidCode(value = "5204", message = "{invalid.code.5204}", desc = "企业id")
    private String entId;
    /**
     * 企业名称
     */
    @ApiModelProperty(value = "企业名称" )
    @Size(max = 50)
    @InvalidCode(value = "5205", message = "{invalid.code.5205}", desc = "企业名称")
    private String entName;
    /**
     * 业务数据表主键id
     */
    @ApiModelProperty(value = "业务数据表主键id" )
    @Size(max = 50)
    @InvalidCode(value = "5206", message = "{invalid.code.5206}", desc = "业务数据表主键id")
    private String sourceId;
    /**
     * 详情微应用id
     */
    @ApiModelProperty(value = "详情微应用id" )
    @Size(max = 50)
    @InvalidCode(value = "5207", message = "{invalid.code.5207}", desc = "详情微应用id")
    private String appId;
    /**
     * 详情页参数
     */
    @ApiModelProperty(value = "详情页参数" )
    @Size(max = 500)
    @InvalidCode(value = "5208", message = "{invalid.code.5208}", desc = "详情页参数")
    private String detailParam;
    /**
     * 列表页微应用id
     */
    @ApiModelProperty(value = "列表页微应用id" )
    @Size(max = 50)
    @InvalidCode(value = "5209", message = "{invalid.code.5209}", desc = "列表页微应用id")
    private String listAppId;
    /**
     * 列表页参数
     */
    @ApiModelProperty(value = "列表页参数" )
    @Size(max = 50)
    @InvalidCode(value = "5210", message = "{invalid.code.5210}", desc = "列表页参数")
    private String listParam;
    /**
     * 业务类型id
     */
    private String businessTypeId;
    /**
     * 创建人名称
     */
    @ApiModelProperty(value = "创建人名称" )
    @Size(max = 50)
    @InvalidCode(value = "5211", message = "{invalid.code.5211}", desc = "创建人名称")
    private String createName;
    /**
     * 租户ID
     */
    @ApiModelProperty(value = "租户ID" )
    @Size(max = 32)
    @InvalidCode(value = "5212", message = "{invalid.code.5212}", desc = "租户ID")
    private String tenantId;
    /**
     * 园区ID
     */
    @ApiModelProperty(value = "园区ID" )
    @Size(max = 32)
    @InvalidCode(value = "5213", message = "{invalid.code.5213}", desc = "园区ID")
    private String parkId;
    /**
     * 是否已删除(0:否 1:是)
     */
    @ApiModelProperty(value = "是否已删除(0:否 1:是)" )
    @Digits(integer = 10, fraction = 0)
    @InvalidCode(value = "5214", message = "{invalid.code.5214}", desc = "是否已删除(0:否 1:是)")
    private Integer isDeleted;
    /**
     * 状态
     */
    @ApiModelProperty(value = "状态" )
    @Digits(integer = 10, fraction = 0)
    @InvalidCode(value = "5215", message = "{invalid.code.5215}", desc = "状态")
    private Integer status;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人" )
    @Size(max = 32)
    @InvalidCode(value = "5216", message = "{invalid.code.5216}", desc = "创建人")
    private String createBy;
    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间" )
    private Date createTime;
    /**
     * 修改人
     */
    @ApiModelProperty(value = "修改人" )
    @Size(max = 32)
    @InvalidCode(value = "5217", message = "{invalid.code.5217}", desc = "修改人")
    private String updateBy;
    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间" )
    private Date updateTime;

    @ApiModelProperty(value = "待办标签" )
    private String dealLabel;
@ApiModel("待办信息-更新状态")
public class DealInfoUpdateVO implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 限制办理时间
     */
    @ApiModelProperty(value = "限制办理时间" )
    private Date limitedDate;
    /**
     * 任务唯一标识
     */
    @ApiModelProperty(value = "任务唯一标识" )
    @Size(max = 50)
    @InvalidCode(value = "5304", message = "{invalid.code.5304}", desc = "任务唯一标识")
    @NotNull
    private String taskCode;


    /**
     * 最近环节办理人岗位
     */
    @ApiModelProperty(value = "下一个办理人id,多个用逗号分割" )
    @Size(max = 50)
    @InvalidCode(value = "5309", message = "{invalid.code.5309}", desc = "下一个办理人id,多个用逗号分割")
    private String nextDealById;

    @ApiModelProperty(value = "业务id(任务源id)" )
    private String sourceId;

请求示例

    //需要审核,发送待办消息
    Reply<Page<DealBusinessTypeVO>> typePage = dealMineService.getDealBusinessTypePage(1, 1, PLAN_INFO);
    if (typePage.getData().getRecords().size() <= 0) {
    throw new CommonException("6001", "请先配置地块信息待办消息业务分类!");
    }

    DealMineSaveVO dealMineSaveVO = new DealMineSaveVO();
    //业务类型id
    dealMineSaveVO.setBusinessTypeId(typePage.getData().getRecords().get(0).getId());
    //微应用id
    dealMineSaveVO.setAppId("1725412005553532928");
    //跳转后缀参数
    dealMineSaveVO.setDetailParam("/detail?id=" + vo.getId());
    dealMineSaveVO.setLastDealBy(names);
    dealMineSaveVO.setLastDealById(auditUsers);
    dealMineSaveVO.setSourceId(vo.getId());
    dealMineSaveVO.setTaskTitle(vo.getLandName());
    dealMineSaveVO.setTaskContent("请尽快进行审核,事件由"+SecurityUtils.getLoginUser().getDeptName()
    +"的"+SecurityUtils.getLoginUser().getNickName()+"于"+ DateUtil.now()+"提交申请,已停留");
    dealMineSaveVO.setDealLabel("发布审核");
    dealMineService.postToDoMessage(dealMineSaveVO, SecurityConstants.FROM);

如何把需要待办的页面添加到待办列表

获取对应的微应用id

  • 前往自己团队的应用中心
  • 选中自己页面所在的项目
  • 进入微应用管理(如图所示)
  • 打开开发者工具进入network查看接口
  • 选中想要展示的待办页面审核应用获取id(如图所示)
  • 把具体审核页面路径地址和进入审核页面除了路径之外还需要附带的参数和把第五步获取到的微应用id给后端配置

待办页面获取全部的待办信息

async loadList() {
        this.doList = this.doList.map((o, i) => ({ ...o, list: [], active: true }))
        // this.loading = true
        let query = {
          ...this.$attrs.searchParams,
          ...this.queryParams,
        }
        try {
          let {
            data: { total, records },
          } = await this.$REQUEST({
            url: `/workbench-portal-api/dealMine/msgpage`,
            method: 'POST',
            data: query,
          })
          // this.active === 'todo' && (this.total = total)
          // this.list = records || []
          this.$emit('update:total', total)
          let now = Date.now()
          records.forEach((item) => {
            let time = new Date(item.todoTime).getTime()
            if (now - time < this.doList[0].interval) {
              this.doList[0].list.push(item)
            } else if (now - time < this.doList[1].interval) {
              this.doList[1].list.push(item)
            } else if (now - time < this.doList[2].interval) {
              this.doList[2].list.push(item)
            } else {
              this.doList[3].list.push(item)
            }
          })
        } catch (e) {
          console.log(e, '获取待办列表出错!')
        } finally {
          this.loading = false
        }
      },

点击具体的待办信息

  • 点击具体的待办信息需要传递具体选中某一条的信息,然后用appId去调用微应用的接口查询具界面路径
  • 获取到审核界面路径之后结合之前传递的具体信息拼接成可以进入你想要的审核页面(由service+${data.microAppWebEntrance}${item.detailParam}&taskCode=${item.taskCode}&linkType=1&token=${token} 拼接而成)其中taskCode一定要传递后续审核界面会根据此判断是待办审核还是普通审核从而进行不同操作
  • 把生成好的路径放入iframe框架里面进行弹窗展示(代码如下)。
    async linkTo(item) {
          let { data } = await this.$REQUEST({
            url: `/open-api/develop/v2/package/micro/app/info`,
            method: 'GET',
            params: { id: item.appId },
          })
          let token = this.$store.state.token || Cookies.get(process.env.TOKEN_KEY)
          // token = window.btoa(token).split('').reverse().join('')
          const service = process.env.NODE_ENV === 'development' ? process.env.SERVER_URL : location.origin
          this.iframeUrl = service + `${data.microAppWebEntrance}${item.detailParam}&taskCode=${item.taskCode}&linkType=1&token=${token}`
          this.drawer = true
          // this.urlTo({ name: '待办', url: url })
        },
      },

审核页面进行判断操作

  • 在原先的审核页面要加一个获取taskCode操作针对有taskCode或者没有taskCode做不同的操作
  •  
  • 在审核页面进行操作完之后在对有无taskCode进行操作;如果有taskCode则调用待办主窗口的关闭弹窗方法。如果没有taskCode则是普通的审核则调用返回上一层
文档更新时间: 2024-07-16 16:23   作者:欧阳少海