From ab0c334f05e3a9bd5bc2e0c85456055df24f88e9 Mon Sep 17 00:00:00 2001 From: 86156 <823267011@qq.com> Date: Tue, 12 Nov 2024 21:32:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=AC=A0=E7=BC=BA?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SysOaTaskUserController.java | 108 +++++++++++++++++ .../com/ruoyi/oa/domain/SysOaTaskUser.java | 31 +++++ .../com/ruoyi/oa/domain/bo/SysOaTaskBo.java | 8 ++ .../ruoyi/oa/domain/bo/SysOaTaskUserBo.java | 37 ++++++ .../ruoyi/oa/domain/vo/SysOaTaskUserVo.java | 37 ++++++ .../com/ruoyi/oa/domain/vo/SysOaTaskVo.java | 8 +- .../ruoyi/oa/mapper/SysOaTaskUserMapper.java | 15 +++ .../oa/service/ISysOaTaskUserService.java | 48 ++++++++ .../oa/service/impl/SysOaTaskServiceImpl.java | 55 ++++++++- .../impl/SysOaTaskUserServiceImpl.java | 109 ++++++++++++++++++ .../mapper/oa/SysOaTaskUserMapper.xml | 13 +++ ruoyi-ui/src/views/oa/project/index.vue | 67 ++++++++++- 12 files changed, 530 insertions(+), 6 deletions(-) create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskUserController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskUser.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskUserBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskUserVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskUserMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskUserService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskUserServiceImpl.java create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskUserMapper.xml diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskUserController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskUserController.java new file mode 100644 index 0000000..c8ddf90 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaTaskUserController.java @@ -0,0 +1,108 @@ +package com.ruoyi.oa.controller; + +import java.util.List; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.core.validate.QueryGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; +import com.ruoyi.oa.domain.bo.SysOaTaskUserBo; +import com.ruoyi.oa.service.ISysOaTaskUserService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 任务工人 + * + * @author hdka + * @date 2024-11-09 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/oaTaskUser") +public class SysOaTaskUserController extends BaseController { + + private final ISysOaTaskUserService iSysOaTaskUserService; + + /** + * 查询任务工人列表 + */ + @SaCheckPermission("system:oaTaskUser:list") + @GetMapping("/list") + public TableDataInfo list(SysOaTaskUserBo bo, PageQuery pageQuery) { + return iSysOaTaskUserService.queryPageList(bo, pageQuery); + } + + /** + * 导出任务工人列表 + */ + @SaCheckPermission("system:oaTaskUser:export") + @Log(title = "任务工人", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysOaTaskUserBo bo, HttpServletResponse response) { + List list = iSysOaTaskUserService.queryList(bo); + ExcelUtil.exportExcel(list, "任务工人", SysOaTaskUserVo.class, response); + } + + /** + * 获取任务工人详细信息 + * + * @param taskId 主键 + */ + @SaCheckPermission("system:oaTaskUser:query") + @GetMapping("/{taskId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long taskId) { + return R.ok(iSysOaTaskUserService.queryById(taskId)); + } + + /** + * 新增任务工人 + */ + @SaCheckPermission("system:oaTaskUser:add") + @Log(title = "任务工人", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysOaTaskUserBo bo) { + return toAjax(iSysOaTaskUserService.insertByBo(bo)); + } + + /** + * 修改任务工人 + */ + @SaCheckPermission("system:oaTaskUser:edit") + @Log(title = "任务工人", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysOaTaskUserBo bo) { + return toAjax(iSysOaTaskUserService.updateByBo(bo)); + } + + /** + * 删除任务工人 + * + * @param taskIds 主键串 + */ + @SaCheckPermission("system:oaTaskUser:remove") + @Log(title = "任务工人", businessType = BusinessType.DELETE) + @DeleteMapping("/{taskIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] taskIds) { + return toAjax(iSysOaTaskUserService.deleteWithValidByIds(Arrays.asList(taskIds), true)); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskUser.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskUser.java new file mode 100644 index 0000000..04b9c70 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaTaskUser.java @@ -0,0 +1,31 @@ +package com.ruoyi.oa.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 任务工人对象 sys_oa_task_user + * + * @author hdka + * @date 2024-11-09 + */ +@Data +@TableName("sys_oa_task_user") +public class SysOaTaskUser { + + private static final long serialVersionUID=1L; + + /** + * 主键 + */ + private Long userId; + /** + * 任务键 + */ + @TableId(value = "task_id") + private Long taskId; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java index 46ea3ef..e15b7c0 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java @@ -9,6 +9,8 @@ import javax.validation.constraints.*; import java.util.Date; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseEntity; @@ -79,6 +81,12 @@ public class SysOaTaskBo extends BaseEntity { */ private String accessory; + + /** + * 工人id列表 + * */ + private List workerList; + /** * 备注 */ diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskUserBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskUserBo.java new file mode 100644 index 0000000..cfe57aa --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskUserBo.java @@ -0,0 +1,37 @@ +package com.ruoyi.oa.domain.bo; + +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 任务工人业务对象 sys_oa_task_user + * + * @author hdka + * @date 2024-11-09 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class SysOaTaskUserBo extends BaseEntity { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long userId; + + /** + * 任务键 + */ + @NotNull(message = "任务键不能为空", groups = { EditGroup.class }) + private Long taskId; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskUserVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskUserVo.java new file mode 100644 index 0000000..da11284 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskUserVo.java @@ -0,0 +1,37 @@ +package com.ruoyi.oa.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 任务工人视图对象 sys_oa_task_user + * + * @author hdka + * @date 2024-11-09 + */ +@Data +@ExcelIgnoreUnannotated +public class SysOaTaskUserVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long userId; + + /** + * 任务键 + */ + @ExcelProperty(value = "任务键") + private Long taskId; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java index 13c0bc5..879a910 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java @@ -6,9 +6,10 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.ruoyi.common.annotation.ExcelDictFormat; import com.ruoyi.common.convert.ExcelDictConvert; +import com.ruoyi.common.core.domain.entity.SysUser; import lombok.Data; import java.util.Date; - +import java.util.List; /** @@ -102,5 +103,10 @@ public class SysOaTaskVo { @ExcelProperty(value = "创建时间") private Date createTime; + /** + * 涉及工人列表 + * */ + private List workerList; + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskUserMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskUserMapper.java new file mode 100644 index 0000000..52c74a0 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaTaskUserMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.oa.mapper; + +import com.ruoyi.oa.domain.SysOaTaskUser; +import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 任务工人Mapper接口 + * + * @author hdka + * @date 2024-11-09 + */ +public interface SysOaTaskUserMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskUserService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskUserService.java new file mode 100644 index 0000000..b5f506c --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaTaskUserService.java @@ -0,0 +1,48 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; +import com.ruoyi.oa.domain.bo.SysOaTaskUserBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 任务工人Service接口 + * + * @author hdka + * @date 2024-11-09 + */ +public interface ISysOaTaskUserService { + + /** + * 查询任务工人 + */ + SysOaTaskUserVo queryById(Long taskId); + + /** + * 查询任务工人列表 + */ + TableDataInfo queryPageList(SysOaTaskUserBo bo, PageQuery pageQuery); + + /** + * 查询任务工人列表 + */ + List queryList(SysOaTaskUserBo bo); + + /** + * 新增任务工人 + */ + Boolean insertByBo(SysOaTaskUserBo bo); + + /** + * 修改任务工人 + */ + Boolean updateByBo(SysOaTaskUserBo bo); + + /** + * 校验并批量删除任务工人信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java index 6889413..52c7b79 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java @@ -14,8 +14,17 @@ import com.ruoyi.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.oa.domain.SysOaTaskUser; +import com.ruoyi.oa.domain.bo.SysOaTaskUserBo; +import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; +import com.ruoyi.oa.domain.vo.SysUserVo; +import com.ruoyi.oa.mapper.SysOaTaskUserMapper; +import com.ruoyi.oa.service.ISysOaTaskUserService; import com.ruoyi.system.service.ISysDictTypeService; +import com.ruoyi.system.service.ISysUserService; +import liquibase.pro.packaged.A; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.oa.domain.bo.SysOaTaskBo; import com.ruoyi.oa.domain.vo.SysOaTaskVo; @@ -40,6 +49,15 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { private final ISysDictTypeService dictTypeService; + @Autowired + private ISysOaTaskUserService taskUserService; + + @Autowired + private SysOaTaskUserMapper taskUserMapper; + + @Autowired + private ISysUserService userService; + /** * 查询任务管理 */ @@ -84,8 +102,6 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { ajax.put("color", "#cccccc"); objects.add(ajax); }); - System.out.println(objects); - //根据项目id获取任务列表类型属性最大的值 SysOaTaskBo task = new SysOaTaskBo(); task.setProjectId(pid); @@ -112,7 +128,21 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { LambdaQueryWrapper lqw = buildQueryWrapper(bo); lqw.eq(StringUtils.isNotEmpty(bo.getProjectId().toString()), SysOaTask::getProjectId, bo.getProjectId()); lqw.eq(StringUtils.isNotBlank(bo.getTaskType()),SysOaTask::getTaskType, bo.getTaskType()); - return baseMapper.selectVoList(lqw); + List sysOaTaskVos = baseMapper.selectVoList(lqw); + + // 添加负责人列表 + for (SysOaTaskVo sysOaTaskVo : sysOaTaskVos) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SysOaTaskUser::getTaskId, sysOaTaskVo.getTaskId()); + List sysOaTaskUserVos = taskUserMapper.selectVoList(lambdaQueryWrapper); + List sysUserList = new ArrayList<>(); + for (SysOaTaskUserVo sysOaTaskUserVo : sysOaTaskUserVos) { + SysUser sysUser = userService.selectUserById(sysOaTaskUserVo.getUserId()); + sysUserList.add(sysUser); + } + sysOaTaskVo.setWorkerList(sysUserList); + } + return sysOaTaskVos; } /** @@ -144,6 +174,13 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setTaskId(add.getTaskId()); + List workerIdList = bo.getWorkerList(); + for (Long userId : workerIdList) { + SysOaTaskUserBo sysOaTaskUserBo = new SysOaTaskUserBo(); + sysOaTaskUserBo.setUserId(userId); + sysOaTaskUserBo.setTaskId(add.getTaskId()); + taskUserService.insertByBo(sysOaTaskUserBo); + } } return flag; } @@ -154,6 +191,18 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { @Override public Boolean updateByBo(SysOaTaskBo bo) { SysOaTask update = BeanUtil.toBean(bo, SysOaTask.class); + + // 先将该任务底下所属的所有工人信息删除 + taskUserMapper.deleteById(update.getTaskId()); + + // 再进行重新新增 + List workerIdList = bo.getWorkerList(); + for (Long userId : workerIdList) { + SysOaTaskUserBo sysOaTaskUserBo = new SysOaTaskUserBo(); + sysOaTaskUserBo.setUserId(userId); + sysOaTaskUserBo.setTaskId(update.getTaskId()); + taskUserService.insertByBo(sysOaTaskUserBo); + } validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskUserServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskUserServiceImpl.java new file mode 100644 index 0000000..f214051 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskUserServiceImpl.java @@ -0,0 +1,109 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.SysOaTaskUserBo; +import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; +import com.ruoyi.oa.domain.SysOaTaskUser; +import com.ruoyi.oa.mapper.SysOaTaskUserMapper; +import com.ruoyi.oa.service.ISysOaTaskUserService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 任务工人Service业务层处理 + * + * @author hdka + * @date 2024-11-09 + */ +@RequiredArgsConstructor +@Service +public class SysOaTaskUserServiceImpl implements ISysOaTaskUserService { + + private final SysOaTaskUserMapper baseMapper; + + /** + * 查询任务工人 + */ + @Override + public SysOaTaskUserVo queryById(Long taskId){ + return baseMapper.selectVoById(taskId); + } + + /** + * 查询任务工人列表 + */ + @Override + public TableDataInfo queryPageList(SysOaTaskUserBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询任务工人列表 + */ + @Override + public List queryList(SysOaTaskUserBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysOaTaskUserBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getUserId() != null, SysOaTaskUser::getUserId, bo.getUserId()); + return lqw; + } + + /** + * 新增任务工人 + */ + @Override + public Boolean insertByBo(SysOaTaskUserBo bo) { + SysOaTaskUser add = BeanUtil.toBean(bo, SysOaTaskUser.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setTaskId(add.getTaskId()); + } + return flag; + } + + /** + * 修改任务工人 + */ + @Override + public Boolean updateByBo(SysOaTaskUserBo bo) { + SysOaTaskUser update = BeanUtil.toBean(bo, SysOaTaskUser.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysOaTaskUser entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除任务工人 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskUserMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskUserMapper.xml new file mode 100644 index 0000000..c26f2da --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaTaskUserMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/ruoyi-ui/src/views/oa/project/index.vue b/ruoyi-ui/src/views/oa/project/index.vue index 1fc510c..4aeca37 100644 --- a/ruoyi-ui/src/views/oa/project/index.vue +++ b/ruoyi-ui/src/views/oa/project/index.vue @@ -528,7 +528,7 @@ @@ -587,6 +587,7 @@ {{ item.beginTime }} 至 {{ item.finishTime }} +