20260612-任务派发模块开发文档.md 28 KB

任务派发模块开发文档

一、模块概述

任务派发模块是湛江人社系统中用于实现市级向县区级、县区级向镇街级多层级任务流转的核心功能模块。业务流程覆盖任务的创建、派发、接收、回复以及跨层级协作等场景。

核心功能

  1. 任务管理:市级用户创建任务,可设置任务名称、优先级、下达时间、截止时间、任务内容,支持草稿保存与确认派发
  2. 附件管理:任务主表、县区接收、镇街接收均可上传附件,支持一键打包下载
  3. 多级接收:市级派发到县区 → 县区人员接收后,可将任务转发给镇街人员
  4. 任务回复:县区/镇街人员收到任务后可进行回复确认,上传回复附件
  5. 跨层级协作:各级人员可发起跨层级协作请求,上级可通过协作记录进行回复
  6. 我的任务:当前登录用户可查看自己所有待处理的任务

二、数据库表结构

2.1 任务派发信息表(TASK_DISPATCH)

字段 类型 说明
id String 主键ID(雪花算法生成)
task_name String 任务名称(必填)
priority String 任务优先级(高/中/低,字典表TaskPriority)
issue_time Date 下达时间(年月日时分,必填)
deadline Date 截止时间(年月日时分,必填)
task_content String 任务内容(富文本,必填)
initiator_id String 发起人ID(必填)
attachment String 附件
task_status String 任务状态(1-草稿/2-进行中/3-已结束,字典表TaskStatus)
create_by String 创建人
create_time Date 创建时间
update_by String 修改人
update_time Date 更新时间
sys_org_code String 组织机构编号

2.2 县区级接收情况表(TASK_DISTRICT_RECEIVE)

字段 类型 说明
id String 主键ID
task_id String 关联任务派发信息ID(必填)
receiver_id String 接收人ID(必填)
is_received String 是否已经接收(0-否/1-是,必填)
receive_time Date 接收时间
forward_time Date 转发下达时间(县区转发给镇街的时间)
reply_content String 回复内容(富文本)
reply_time Date 回复时间
attachment String 任务附件
create_by String 创建人
create_time Date 创建时间
update_by String 修改人
update_time Date 更新时间
sys_org_code String 组织机构编号

2.3 镇区接收情况表(TASK_TOWN_RECEIVE)

字段 类型 说明
id String 主键ID
task_id String 关联任务派发信息ID(必填)
parent_id String 上级接收记录ID(关联县区级接收情况表ID,市级直派则为空)
receiver_id String 接收人ID(必填)
is_received String 是否已经接收(0-否/1-是,必填)
receive_time Date 接收时间
reply_content String 回复内容(富文本)
reply_time Date 回复时间
attachment String 任务附件
create_by String 创建人
create_time Date 创建时间
update_by String 修改人
update_time Date 更新时间
sys_org_code String 组织机构编号

2.4 任务附件表(TASK_ATTACHMENT)

字段 类型 说明
id String 主键ID
biz_type String 业务类型(DISPATCH-任务派发/DISTRICT_RECEIVE-县区级接收/TOWN_RECEIVE-镇区级接收)
biz_id String 关联业务记录ID(对应上述三张表的主键)
file_name String 文件名称(必填)
file_path String 文件存储路径(必填)
file_size Integer 文件大小(字节)
file_type String 文件类型(如pdf/docx/jpg/png等)
sort_order Integer 排序序号
upload_by String 上传人ID
create_by String 创建人
create_time Date 创建时间
update_by String 修改人
update_time Date 更新时间
sys_org_code String 组织机构编号

2.5 跨层级协作记录表(TASK_COLLABORATION)

字段 类型 说明
id String 主键ID
task_id String 关联任务派发ID(必填)
requester_id String 发起人ID(必填)
requester_type String 发起方类型(DISTRICT-县区级/TOWN-镇街级,必填)
request_content String 协作请求内容(必填)
target_level String 请求目标层级(CITY-市级/DISTRICT-县区级,必填)
status String 状态(0-待处理/1-已处理/2-已关闭)
reply_content String 回复内容
reply_time Date 回复时间
reply_by String 回复人ID
create_by String 创建人
create_time Date 创建时间
update_by String 修改人
update_time Date 更新时间
sys_org_code String 组织机构编号

三、后端代码结构

3.1 项目目录结构

jeecg-module-zjrs/src/main/java/org/jeecg/modules/zjrs/task/
├── taskDispatch/                         # 任务派发模块
│   ├── controller/
│   │   └── TaskDispatchController.java   # 任务派发控制器
│   ├── entity/
│   │   └── TaskDispatch.java             # 任务派发实体
│   ├── mapper/
│   │   ├── TaskDispatchMapper.java       # Mapper接口
│   │   └── xml/TaskDispatchMapper.xml    # MyBatis XML映射
│   ├── service/
│   │   ├── ITaskDispatchService.java     # Service接口
│   │   └── impl/TaskDispatchServiceImpl.java # Service实现
│   └── vo/
│       └── TaskDispatchVO.java           # 视图对象(含发起人姓名、部门)
├── taskDistrictReceive/                  # 县区级接收模块
│   ├── controller/
│   │   └── TaskDistrictReceiveController.java
│   ├── entity/
│   │   └── TaskDistrictReceive.java
│   ├── mapper/
│   │   ├── TaskDistrictReceiveMapper.java
│   │   └── xml/TaskDistrictReceiveMapper.xml
│   ├── service/
│   │   ├── ITaskDistrictReceiveService.java
│   │   └── impl/TaskDistrictReceiveServiceImpl.java
│   └── vo/
│       └── TaskDistrictReceiveVO.java
├── taskTownReceive/                      # 镇区接收模块
│   ├── controller/
│   │   └── TaskTownReceiveController.java
│   ├── entity/
│   │   └── TaskTownReceive.java
│   ├── mapper/
│   │   ├── TaskTownReceiveMapper.java
│   │   └── xml/TaskTownReceiveMapper.xml
│   ├── service/
│   │   ├── ITaskTownReceiveService.java
│   │   └── impl/TaskTownReceiveServiceImpl.java
│   └── vo/
│       └── TaskTownReceiveVO.java
├── taskAttachment/                       # 附件模块
│   ├── controller/
│   │   └── TaskAttachmentController.java
│   ├── entity/
│   │   └── TaskAttachment.java
│   ├── mapper/
│   │   ├── TaskAttachmentMapper.java
│   │   └── xml/TaskAttachmentMapper.xml
│   ├── service/
│   │   ├── ITaskAttachmentService.java
│   │   └── impl/TaskAttachmentServiceImpl.java
│   └── vo/
│       └── TaskAttachmentVO.java
└── taskCollaboration/                    # 跨层级协作模块
    ├── controller/
    │   └── TaskCollaborationController.java
    ├── entity/
    │   └── TaskCollaboration.java
    ├── mapper/
    │   ├── TaskCollaborationMapper.java
    │   └── xml/TaskCollaborationMapper.xml
    ├── service/
    │   ├── ITaskCollaborationService.java
    │   └── impl/TaskCollaborationServiceImpl.java
    └── vo/
        └── TaskCollaborationVO.java

3.2 API 接口列表

任务派发(TaskDispatchController)

接口 方法 路径 说明
queryPageList GET /task/taskDispatch/list 分页列表查询(含发起人姓名和部门)
queryMyTaskList GET /task/taskDispatch/myTaskList 我的任务列表(从接收表反向查询)
add POST /task/taskDispatch/add 新增任务(返回新记录ID)
edit PUT/POST /task/taskDispatch/edit 编辑任务
delete DELETE /task/taskDispatch/delete 单条删除
deleteBatch DELETE /task/taskDispatch/deleteBatch 批量删除
queryById GET /task/taskDispatch/queryById 通过ID查询(含发起人姓名和部门)
updateStatus PUT /task/taskDispatch/updateStatus 修改任务状态
exportXls GET /task/taskDispatch/exportXls 导出Excel(字典值自动翻译)
importExcel POST /task/taskDispatch/importExcel 导入Excel
downloadAttachmentsZip GET /task/taskDispatch/downloadAttachmentsZip 一键打包下载任务所有附件

县区级接收(TaskDistrictReceiveController)

接口 方法 路径 说明
queryPageList GET /task/taskDistrictReceive/list 分页列表查询(含接收人姓名和部门)
add POST /task/taskDistrictReceive/add 新增接收记录
edit PUT/POST /task/taskDistrictReceive/edit 编辑接收记录
delete DELETE /task/taskDistrictReceive/delete 单条删除
deleteBatch DELETE /task/taskDistrictReceive/deleteBatch 批量删除
reply PUT/POST /task/taskDistrictReceive/reply 回复确认
updateForwardTime PUT/POST /task/taskDistrictReceive/updateForwardTime 更新转发时间
queryById GET /task/taskDistrictReceive/queryById 通过ID查询

镇区接收(TaskTownReceiveController)

接口 方法 路径 说明
queryPageList GET /task/taskTownReceive/list 分页列表查询
add POST /task/taskTownReceive/add 新增
edit PUT/POST /task/taskTownReceive/edit 编辑
delete DELETE /task/taskTownReceive/delete 单条删除
deleteBatch DELETE /task/taskTownReceive/deleteBatch 批量删除
reply PUT/POST /task/taskTownReceive/reply 回复确认
queryById GET /task/taskTownReceive/queryById 通过ID查询

附件(TaskAttachmentController)

接口 方法 路径 说明
queryPageList GET /task/taskAttachment/list 分页列表查询(含上传人名称)
add POST /task/taskAttachment/add 添加附件
edit PUT/POST /task/taskAttachment/edit 编辑附件
delete DELETE /task/taskAttachment/delete 删除附件
deleteBatch DELETE /task/taskAttachment/deleteBatch 批量删除
queryById GET /task/taskAttachment/queryById 通过ID查询

跨层级协作(TaskCollaborationController)

接口 方法 路径 说明
queryPageList GET /task/taskCollaboration/list 分页列表查询(含发起人姓名和回复人姓名)
add POST /task/taskCollaboration/add 新增协作
edit PUT/POST /task/taskCollaboration/edit 编辑协作
delete DELETE /task/taskCollaboration/delete 删除协作
deleteBatch DELETE /task/taskCollaboration/deleteBatch 批量删除
reply POST /task/taskCollaboration/reply 回复协作(更新状态、回复内容、回复人、回复时间)
queryById GET /task/taskCollaboration/queryById 通过ID查询

四、核心业务逻辑详解

4.1 任务派发流程

流程图:

市级人员创建任务 → 保存草稿(taskStatus=1) → 确认派发(taskStatus=2) → 任务进入"我的任务"
    ├── 可选:添加县区接收人
    └── 可选:添加镇街接收人(需先有县区接收记录作为parentId)

关键代码 - TaskDispatchForm.vue 保存与派发逻辑:

  • 保存为草稿(submitDraft):将 taskStatus 设为 '1'(草稿),保存后不关闭弹窗,允许继续编辑
  • 确认派发(submitAndConfirm):将 taskStatus 设为 '2'(进行中),保存后通过 emit('confirm') 通知父组件关闭弹窗
  • 两者都先经过表单校验(validate()),校验失败则滚动到第一个错误字段

4.2 我的任务列表查询逻辑

接口: GET /task/taskDispatch/myTaskList

这是模块中最复杂的查询逻辑,核心步骤:

  1. 获取当前登录用户ID:通过 Shiro 的 SecurityUtils.getSubject().getPrincipal() 获得当前用户

  2. 反向查找任务ID:分别查询县区接收表、镇街接收表中 receiverId=当前用户ID 的记录,收集对应的 taskId;同时查询当前用户为发起人的任务

  3. 排除草稿状态:查询条件中排除 taskStatus='1'(草稿),确保只展示已派发的任务

  4. 排序规则:使用自定义SQL排序 ORDER BY CASE WHEN task_status = '2' THEN 0 ELSE 1 END, issue_time DESC,实现"进行中优先,相同状态按发起时间最新在前"

  5. 标记来源信息:为每个任务VO设置 sourceTable(DISTRICT/TOWN/DISPATCH)和 sourceId,前端根据这两个字段决定操作权限:

    • DISTRICT:用户来自县区接收表,可进行回复、派发任务(转发镇街)
    • TOWN:用户来自镇街接收表,可进行回复
    • DISPATCH:用户是发起人/市级人员,不显示回复操作

4.3 用户信息批量查询(通用模式)

多个Service共用的设计模式,以解决N+1查询问题:

  1. 分页查询实体数据
  2. 收集所有用户ID(去重)
  3. 调用Mapper批量查询:通过 sys_user 左关联 sys_user_departsys_depart,一次性获取所有用户的姓名和部门信息
  4. 转换为VO:通过 BeanUtils.copyProperties 复制实体属性,再设置扩展字段
  5. 构建VO分页结果

用户姓名取值规则(SQL层面实现):

CASE WHEN su.REALNAME IS NOT NULL AND su.REALNAME != '' THEN su.REALNAME ELSE su.USERNAME END

优先取真实姓名(realname),若无则取用户名(username)

部门取值规则

  • 通过 sys_user_depart 取该用户关联的最小ID记录(SELECT MIN(t2.ID) FROM sys_user_depart t2 WHERE t2.USER_ID = su.ID),再关联 sys_depart 获取 depart_name

4.4 附件管理

附件上传

文件通过通用上传接口上传,返回文件路径后,在 TASK_ATTACHMENT 表创建记录:

  • bizType 区分业务类型:DISPATCH(任务主表)、DISTRICT_RECEIVE(县区接收)、TOWN_RECEIVE(镇街接收)
  • bizId 关联对应业务记录的主键
  • 上传时必须先保存主记录获得 id(表单提示:"请先保存任务后再上传附件")

附件一键打包下载

接口: GET /task/taskDispatch/downloadAttachmentsZip

步骤:

  1. 查询 TASK_ATTACHMENT 表中与任务关联的所有附件(主表 + 所有县区接收 + 所有镇街接收)
  2. 从服务器文件系统按 uploadPath + filePath 路径读取文件
  3. java.util.zip.ZipOutputStream 打包为zip,通过 HttpServletResponse 输出流返回
  4. 设置响应头 Content-Disposition: attachment 触发浏览器下载

4.5 Excel导出逻辑

接口: GET /task/taskDispatch/exportXls

导出字段:任务名称、任务优先级、下达时间、截止时间、发起人、发起部门、任务状态

步骤:

  1. 组装查询条件:支持按选中行导出(selections 参数)
  2. 字典字段翻译:调用 translateDictFields 方法,将 priorityTaskPriority 字典)和 taskStatusTaskStatus 字典)的值替换为中文标签
  3. 填充用户信息:调用 enrichUserInfo 方法,填充发起人姓名和部门名称
  4. AutoPoi导出:使用 Jeecg 框架的 JeecgEntityExcelView 导出 Excel

4.6 跨层级协作

协作场景:县区/镇街人员可向上级(市级/县区级)发起协作请求,上级人员可以回复。

发起方类型与控制逻辑:

  • sourceTable === 'TOWN'(镇街级用户)→ requesterType = 'TOWN',可选择 CITYDISTRICT 作为目标层级
  • sourceTable === 'DISTRICT'(县区级用户)→ requesterType = 'DISTRICT',只能选择 CITY 作为目标层级

协作回复:

  • 回复接口 /task/taskCollaboration/reply 会更新 status='1'(已处理)、replyContentreplyByreplyTime

4.7 任务回复逻辑

接口: POST /task/taskDistrictReceive/replyPOST /task/taskTownReceive/reply

回复时采用的更新策略:

  • 使用 MyBatis-Plus 的 lambdaUpdate() 链式调用,只更新指定字段(isReceivedreceiveTimereplyContentreplyTimeattachment),不修改其他字段
  • 使用 @RequestBody 接收参数,跳过 @Valid 校验,允许部分字段更新

4.8 县区转发镇街逻辑

当县区人员将任务转发给镇街人员时:

  1. DispatchTownModal 中新增镇街接收记录
  2. 点击"确定派发"时,调用 /task/taskDistrictReceive/updateForwardTime 将县区接收记录的 forwardTime 更新为当前时间
  3. 镇街接收记录的 parentId 关联对应的县区接收记录ID

五、前端代码结构

5.1 项目目录结构

jeecgboot-vue3/src/views/task/
├── taskDispatch/
│   ├── TaskDispatchList.vue          # 市级用户任务列表页
│   ├── MyTaskList.vue                # 县级/镇级用户"我的任务"列表页
│   ├── TaskDispatch.data.ts          # 表格列/搜索表单/编辑表单配置
│   ├── TaskDispatch.api.ts           # 所有API接口定义
│   └── components/
│       ├── TaskDispatchModal.vue     # 新增/编辑/详情弹窗容器
│       ├── TaskDispatchForm.vue      # 任务编辑表单(含子表)
│       ├── TaskDispatchDetailModal.vue # 任务详情弹窗
│       ├── TaskReplyModal.vue        # 任务回复弹窗
│       ├── DispatchTownModal.vue     # 派发镇街弹窗
│       ├── DistrictReceiveEditModal.vue # 县区接收编辑弹窗
│       ├── TownReceiveEditModal.vue  # 镇街接收编辑弹窗
│       ├── CollaborationAddModal.vue # 新增协作请求弹窗
│       └── CollaborationReplyModal.vue # 协作回复弹窗

5.2 前端页面说明

TaskDispatchList.vue(市级用户操作页)

  • 包含操作:新增、导出、批量删除、查看、修改(仅草稿状态)、结束任务、附件打包下载
  • 结束任务:调用 updateStatus 接口将 taskStatus 设为 '3'(已结束)
  • 使用 useListPage hook 进行表格数据管理与导出

MyTaskList.vue(县区/镇街用户操作页)

  • 包含操作:查看、派发任务(仅 sourceTable === 'DISTRICT'taskStatus === '2' 时显示)、回复确认(仅 taskStatus === '2' 时显示)、附件打包下载
  • 派发任务点击后打开 DispatchTownModal 弹窗
  • 回复确认点击后打开 TaskReplyModal 弹窗

TaskDispatchForm.vue(核心表单组件)

这是最复杂的单文件组件,包含:

  1. 主表表单:任务名称、优先级、发起人(自动填充)、发起部门(自动填充)、下达时间、截止时间、任务内容
  2. 附件子表:上传、删除附件(新增模式下需先保存任务)
  3. 县区接收子表:通过 DistrictReceiveEditModal 编辑,支持新增、编辑、删除
  4. 镇街接收子表:通过 TownReceiveEditModal 编辑,支持新增、编辑、删除
  5. 操作按钮:返回、保存(草稿)、确认派发

自动填充逻辑

  • initiatorIduseUserStore().getUserInfo 获取当前登录用户ID
  • 发起人姓名显示 realname || username
  • 部门名称通过 getUserDeparts() 接口获取用户所属部门的 departName

TaskReplyModal.vue(任务回复弹窗)

核心业务逻辑:

  1. 展示任务基本信息和附件(只读)
  2. 根据 sourceTable 类型控制:
    • DISPATCH:隐藏回复内容、回复附件、协作新增按钮
    • DISTRICT/TOWN:显示回复内容和上传附件
  3. 跨层级协作区域独立显示,自己发起的记录和匹配当前用户层级的目标记录
  4. 协作记录的回复按钮显示规则:当前用户层级匹配 targetLevel 时显示

5.3 前端数据流

  • 表格数据:通过 useListPage hook 管理,beforeFetch 中合并查询参数
  • 字典翻译:通过 useDict hook 加载字典,getDictText 进行值→标签翻译,getDictOptions 生成下拉选项
  • 用户信息:通过 useUserStore 获取当前登录用户(id、realname、username)
  • 文件上传:使用 Ant Design Vue 的 <a-upload> 组件,上传成功后调用附件保存接口

六、涉及的文件清单

后端文件(22个)

文件 说明
jeecg-module-zjrs/.../task/taskDispatch/controller/TaskDispatchController.java 任务派发控制器,包含核心CRUD、Excel导入导出、附件打包下载、任务状态修改
jeecg-module-zjrs/.../task/taskDispatch/entity/TaskDispatch.java 任务派发实体定义(TASK_DISPATCH表映射)
jeecg-module-zjrs/.../task/taskDispatch/mapper/TaskDispatchMapper.java 任务派发Mapper,定义批量查询用户信息方法
jeecg-module-zjrs/.../task/taskDispatch/mapper/xml/TaskDispatchMapper.xml MyBatis SQL映射,批量查询用户姓名+部门
jeecg-module-zjrs/.../task/taskDispatch/service/ITaskDispatchService.java 任务派发Service接口,定义分页VO查询、用户信息填充、字典翻译、状态修改、单条VO查询
jeecg-module-zjrs/.../task/taskDispatch/service/impl/TaskDispatchServiceImpl.java 任务派发Service实现,包含完整的VO转换逻辑和批量查询
jeecg-module-zjrs/.../task/taskDispatch/vo/TaskDispatchVO.java 任务派发VO,扩展发起人姓名、部门、来源表、来源ID字段
jeecg-module-zjrs/.../task/taskDistrictReceive/controller/TaskDistrictReceiveController.java 县区接收控制器,支持CRUD、回复确认、更新转发时间
jeecg-module-zjrs/.../task/taskDistrictReceive/entity/TaskDistrictReceive.java 县区接收实体定义
jeecg-module-zjrs/.../task/taskDistrictReceive/mapper/TaskDistrictReceiveMapper.java 县区接收Mapper
jeecg-module-zjrs/.../task/taskDistrictReceive/mapper/xml/TaskDistrictReceiveMapper.xml MyBatis SQL映射
jeecg-module-zjrs/.../task/taskDistrictReceive/service/ITaskDistrictReceiveService.java 县区接收Service接口
jeecg-module-zjrs/.../task/taskDistrictReceive/service/impl/TaskDistrictReceiveServiceImpl.java 县区接收Service实现
jeecg-module-zjrs/.../task/taskDistrictReceive/vo/TaskDistrictReceiveVO.java 县区接收VO
jeecg-module-zjrs/.../task/taskTownReceive/controller/TaskTownReceiveController.java 镇区接收控制器
jeecg-module-zjrs/.../task/taskTownReceive/entity/TaskTownReceive.java 镇区接收实体定义
jeecg-module-zjrs/.../task/taskTownReceive/mapper/TaskTownReceiveMapper.java 镇区接收Mapper
jeecg-module-zjrs/.../task/taskTownReceive/mapper/xml/TaskTownReceiveMapper.xml MyBatis SQL映射
jeecg-module-zjrs/.../task/taskTownReceive/service/ITaskTownReceiveService.java 镇区接收Service接口
jeecg-module-zjrs/.../task/taskTownReceive/service/impl/TaskTownReceiveServiceImpl.java 镇区接收Service实现
jeecg-module-zjrs/.../task/taskTownReceive/vo/TaskTownReceiveVO.java 镇区接收VO
jeecg-module-zjrs/.../task/taskCollaboration/controller/TaskCollaborationController.java 跨层级协作控制器,提供CRUD和回复接口
jeecg-module-zjrs/.../task/taskCollaboration/entity/TaskCollaboration.java 跨层级协作实体定义
jeecg-module-zjrs/.../task/taskCollaboration/mapper/TaskCollaborationMapper.java 跨层级协作Mapper
jeecg-module-zjrs/.../task/taskCollaboration/mapper/xml/TaskCollaborationMapper.xml MyBatis SQL映射(仅查询用户姓名)
jeecg-module-zjrs/.../task/taskCollaboration/service/ITaskCollaborationService.java 跨层级协作Service接口
jeecg-module-zjrs/.../task/taskCollaboration/service/impl/TaskCollaborationServiceImpl.java 跨层级协作Service实现
jeecg-module-zjrs/.../task/taskCollaboration/vo/TaskCollaborationVO.java 跨层级协作VO
jeecg-module-zjrs/.../task/taskAttachment/controller/TaskAttachmentController.java 附件控制器
jeecg-module-zjrs/.../task/taskAttachment/entity/TaskAttachment.java 附件实体定义
jeecg-module-zjrs/.../task/taskAttachment/mapper/TaskAttachmentMapper.java 附件Mapper
jeecg-module-zjrs/.../task/taskAttachment/mapper/xml/TaskAttachmentMapper.xml MyBatis SQL映射
jeecg-module-zjrs/.../task/taskAttachment/service/ITaskAttachmentService.java 附件Service接口
jeecg-module-zjrs/.../task/taskAttachment/service/impl/TaskAttachmentServiceImpl.java 附件Service实现
jeecg-module-zjrs/.../task/taskAttachment/vo/TaskAttachmentVO.java 附件VO

前端文件(13个)

文件 说明
jeecgboot-vue3/src/views/task/taskDispatch/TaskDispatchList.vue 市级用户任务列表页
jeecgboot-vue3/src/views/task/taskDispatch/MyTaskList.vue 县区/镇街用户"我的任务"列表页
jeecgboot-vue3/src/views/task/taskDispatch/TaskDispatch.data.ts 表格列配置、搜索表单配置、编辑表单配置
jeecgboot-vue3/src/views/task/taskDispatch/TaskDispatch.api.ts 所有API接口定义与调用方法
jeecgboot-vue3/src/views/task/taskDispatch/components/TaskDispatchModal.vue 任务新增/编辑/详情弹窗容器
jeecgboot-vue3/src/views/task/taskDispatch/components/TaskDispatchForm.vue 任务编辑表单(主表+附件+县区接收+镇街接收子表)
jeecgboot-vue3/src/views/task/taskDispatch/components/TaskDispatchDetailModal.vue 任务详情浏览弹窗(含所有子表数据)
jeecgboot-vue3/src/views/task/taskDispatch/components/TaskReplyModal.vue 任务回复弹窗(含协作记录、附件上传)
jeecgboot-vue3/src/views/task/taskDispatch/components/DispatchTownModal.vue 县区派发任务到镇街弹窗
jeecgboot-vue3/src/views/task/taskDispatch/components/DistrictReceiveEditModal.vue 县区接收记录编辑弹窗
jeecgboot-vue3/src/views/task/taskDispatch/components/TownReceiveEditModal.vue 镇街接收记录编辑弹窗
jeecgboot-vue3/src/views/task/taskDispatch/components/CollaborationAddModal.vue 新增跨层级协作弹窗
jeecgboot-vue3/src/views/task/taskDispatch/components/CollaborationReplyModal.vue 跨层级协作回复弹窗

七、技术要点

7.1 前后端使用的数据字典

字典编码 字典名称 使用场景
TaskPriority 任务优先级 任务派发表格的 priority 字段
TaskStatus 任务状态 任务派发表格的 taskStatus 字段

7.2 任务状态枚举

含义 说明
1 草稿 任务已保存但未派发,只有创建者可见
2 进行中 任务已派发,接收人可见
3 已结束 任务已完成/终止,不再操作

7.3 来源表枚举(sourceTable)

含义 说明
DISTRICT 县区接收表 当前用户是某个县区接收记录的接收人
TOWN 镇街接收表 当前用户是某个镇街接收记录的接收人
DISPATCH 任务主表 当前用户是发起人或市级用户

7.4 技术栈

  • 后端:Spring Boot + MyBatis-Plus + Jeecg Boot + Shiro
  • 前端:Vue 3 + TypeScript + Ant Design Vue + Jeecg Vue3 组件
  • 文件上传:Spring Boot 标准文件上传 + Ant Design Vue Upload 组件
  • Excel导出:Jeecg AutoPoi