diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/ehs/EhsIndexStatisticsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/ehs/EhsIndexStatisticsController.java new file mode 100644 index 0000000..f737667 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/ehs/EhsIndexStatisticsController.java @@ -0,0 +1,178 @@ +package com.ruoyi.web.controller.ehs; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.ehsEnterprise.domain.EhsEnterprise; +import com.ruoyi.ehsEnterprise.service.IEhsEnterpriseService; +import com.ruoyi.ehsIndexStatistics.service.EhsIndexStatisticsService; +import com.ruoyi.ehsIndexStatistics.vo.*; +import com.ruoyi.ehsMaterial.domain.EhsMaterial; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 首页统计分析接口 + * + * @author: 马腾达 + * @date: 2023年12月12日 11:10 + */ +@Api(tags = "首页统计分析接口") +@RestController +@RequestMapping("/ehs/indexStatistics") +public class EhsIndexStatisticsController extends BaseController { + + @Autowired + private EhsIndexStatisticsService ehsIndexStatisticsService; + + /** + * 查询首页上方文字数据 + */ + @GetMapping("/getEhsIndexStatistics") + public AjaxResult getEhsIndexStatistics() + { + EhsIndexStatistics ehsIndexStatistics = ehsIndexStatisticsService.getEhsIndexStatistics(); + return AjaxResult.success(ehsIndexStatistics); + } + /** + * 查询首页上方文字数据--汇总数据 + */ + @GetMapping("/getSuperviseAndHandle") + public AjaxResult getSuperviseAndHandle() + { + EhsIndexStatistics ehsIndexStatistics = ehsIndexStatisticsService.getSuperviseAndHandle(); + return AjaxResult.success(ehsIndexStatistics); + } + /** + * 查询首页上方文字数据----列表数据 + */ + @GetMapping("/getEhsIndexStatisticsList") + public AjaxResult getEhsIndexStatisticsList() + { + List<EhsIndexStatistics> list = ehsIndexStatisticsService.getEhsIndexStatisticsList(); + return AjaxResult.success(list); + } + + /** + * 查询首页上方文字数据点击详情 + */ + @GetMapping("/detailslist") + public TableDataInfo detailslist(HiddenDangerVo vo) + { + startPage(); + List<HiddenDangerVo> list = ehsIndexStatisticsService.getHiddenDangerVoList(vo); + return getDataTable(list); + } + + /** + * 隐患情况---按行政区域统计 + */ + @ApiOperation("隐患情况---按行政区域统计") + @GetMapping("/getHiddenDangerSituationList") + public AjaxResult getHiddenDangerSituationList() + { + List<HiddenDangerStatisticsVo> list = ehsIndexStatisticsService.getHiddenDangerSituationList(); + return AjaxResult.success(list); + } + + /** + * 隐患情况---按地址统计 + */ + @ApiOperation("按地址统计") + @GetMapping("/getHiddenDangerSituationByEnterpriseNameList") + public AjaxResult getHiddenDangerSituationByEnterpriseNameList() + { + List<HiddenDangerStatisticsVo> list = ehsIndexStatisticsService.getHiddenDangerSituationByEnterpriseNameList(); + return AjaxResult.success(list); + } + /** + * 上报隐患排名 + */ + @ApiOperation("上报隐患排名") + @GetMapping("/getHiddenDangerRankVoList") + public AjaxResult getHiddenDangerRankVoList() + { + List<HiddenDangerRankVo> list = ehsIndexStatisticsService.getHiddenDangerRankVoList(); + return AjaxResult.success(list); + } + /** + * 行业领域统计数量 + */ + @ApiOperation("行业领域统计数量") + @GetMapping("/getEnterpriseMapList") + public AjaxResult getEnterpriseMapList() + { + List<Map<String,Object>> list = ehsIndexStatisticsService.getEnterpriseMapList(); + return AjaxResult.success(list); + } + /** + * 经济类型统计数量 + */ + @ApiOperation("经济类型统计数量") + @GetMapping("/geteconomicTypeMapList") + public AjaxResult geteconomicTypeMapList() + { + List<Map<String,Object>> list = ehsIndexStatisticsService.geteconomicTypeMapList(); + return AjaxResult.success(list); + } + /** + * 企业规模统计数量 + */ + @ApiOperation("企业规模统计数量") + @GetMapping("/getenterpriseScaleMapList") + public AjaxResult getenterpriseScaleMapList() + { + List<Map<String,Object>> list = ehsIndexStatisticsService.getenterpriseScaleMapList(); + return AjaxResult.success(list); + } + /** + * 隐患类型分析统计 + */ + @ApiOperation("隐患类型分析统计") + @GetMapping("/getHiddenDangerTypeMapList") + public AjaxResult getHiddenDangerTypeMapList() + { + List<Map<String,Object>> list = ehsIndexStatisticsService.getHiddenDangerTypeMapList(); + return AjaxResult.success(list); + } + /** + * 隐患数据统计分析 + */ + @ApiOperation("隐患数据统计分析") + @GetMapping("/getHiddenDangerDataMapList") + public AjaxResult getHiddenDangerDataMapList(String year) + { + JSONArray row = new JSONArray(); + List<Map<String,Object>> list = ehsIndexStatisticsService.getHiddenDangerDataMapList(year); + if(StringUtils.isNotEmpty(list)){ + LinkedHashMap<Object, List<Map<String, Object>>> nameList = list.stream().collect(Collectors.groupingBy(e -> e.get("name"), LinkedHashMap::new, Collectors.toList())); + if(StringUtils.isNotEmpty(nameList)){ + for (Object key : nameList.keySet()) { + JSONObject obj = new JSONObject(); + System.out.println("map.get(" + key + ") = " + nameList.get(key)); + obj.put("name",key); + List<Object> dataList = nameList.get(key).stream().map(e -> e.get("dataNum")).collect(Collectors.toList()); + obj.put("data",dataList); + row.add(obj); + } + } + } + return AjaxResult.success(row); + } + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java index fb2ae21..c9511f5 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -8,7 +8,11 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.ZonedDateTime; +import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; +import java.util.List; + import org.apache.commons.lang3.time.DateFormatUtils; /** @@ -188,4 +192,38 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } + + /** + * 获取两个日期之间的所有月份 (年月) + * + * @param startTime + * @param endTime + * @return:YYYY-MM + */ + public static List<String> getMonthBetweenDate(String startTime, String endTime){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + // 声明保存日期集合 + List<String> list = new ArrayList<String>(); + try { + // 转化成日期类型 + Date startDate = sdf.parse(startTime); + Date endDate = sdf.parse(endTime); + + //用Calendar 进行日期比较判断 + Calendar calendar = Calendar.getInstance(); + while (startDate.getTime()<=endDate.getTime()){ + // 把日期添加到集合 + list.add(sdf.format(startDate)); + // 设置日期 + calendar.setTime(startDate); + //把日期增加一天 + calendar.add(Calendar.MONTH, 1); + // 获取增加后的日期 + startDate=calendar.getTime(); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return list; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/mapper/EhsIndexStatisticsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/mapper/EhsIndexStatisticsMapper.java new file mode 100644 index 0000000..89753a9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/mapper/EhsIndexStatisticsMapper.java @@ -0,0 +1,28 @@ +package com.ruoyi.ehsIndexStatistics.mapper; + +import com.ruoyi.ehsIndexStatistics.vo.EhsIndexStatistics; +import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerRankVo; +import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerStatisticsVo; +import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface EhsIndexStatisticsMapper { + + EhsIndexStatistics getEhsIndexStatistics(@Param("deptId") Long deptId); + EhsIndexStatistics getSuperviseAndHandle(@Param("deptId") Long deptId); + List<EhsIndexStatistics> getEhsIndexStatisticsList(@Param("deptId") Long deptId); + + List<HiddenDangerVo> getHiddenDangerVoList(@Param("vo") HiddenDangerVo vo); + + List<HiddenDangerStatisticsVo> getHiddenDangerSituationList(); + List<HiddenDangerStatisticsVo> getHiddenDangerSituationByEnterpriseNameList(); + List<HiddenDangerRankVo> getHiddenDangerRankVoList(); + List<Map<String,Object>> getEnterpriseMapList(@Param("deptId") Long deptId); + List<Map<String,Object>> geteconomicTypeMapList(@Param("deptId") Long deptId); + List<Map<String,Object>> getenterpriseScaleMapList(@Param("deptId") Long deptId); + List<Map<String,Object>> getHiddenDangerTypeMapList(@Param("deptId") Long deptId); + List<Map<String,Object>> getHiddenDangerDataMapList(@Param("yearStr") String yearStr,@Param("deptId") Long deptId); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/service/EhsIndexStatisticsService.java b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/service/EhsIndexStatisticsService.java new file mode 100644 index 0000000..71c431e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/service/EhsIndexStatisticsService.java @@ -0,0 +1,38 @@ +package com.ruoyi.ehsIndexStatistics.service; + +import com.ruoyi.ehsIndexStatistics.vo.EhsIndexStatistics; +import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerRankVo; +import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerStatisticsVo; +import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface EhsIndexStatisticsService { + + EhsIndexStatistics getEhsIndexStatistics(); + EhsIndexStatistics getSuperviseAndHandle(); + + List<EhsIndexStatistics> getEhsIndexStatisticsList(); + List<HiddenDangerVo> getHiddenDangerVoList(HiddenDangerVo vo); + + /** + * 按行政区域统计 + */ + List<HiddenDangerStatisticsVo> getHiddenDangerSituationList(); + /** + * 按公司统计 + */ + List<HiddenDangerStatisticsVo> getHiddenDangerSituationByEnterpriseNameList(); + /** + * 上报隐患排名 + */ + List<HiddenDangerRankVo> getHiddenDangerRankVoList(); + + List<Map<String,Object>> getEnterpriseMapList(); + List<Map<String,Object>> geteconomicTypeMapList(); + List<Map<String,Object>> getenterpriseScaleMapList(); + List<Map<String,Object>> getHiddenDangerTypeMapList(); + List<Map<String,Object>> getHiddenDangerDataMapList(String yearStr); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/service/impl/EhsIndexStatisticsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/service/impl/EhsIndexStatisticsServiceImpl.java new file mode 100644 index 0000000..9338eeb --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/service/impl/EhsIndexStatisticsServiceImpl.java @@ -0,0 +1,172 @@ +package com.ruoyi.ehsIndexStatistics.service.impl; + +import com.ruoyi.common.core.domain.entity.SysRole; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.ehsDocument.mapper.EhsDocumentMapper; +import com.ruoyi.ehsEnterprise.service.IEhsEnterpriseService; +import com.ruoyi.ehsIndexStatistics.mapper.EhsIndexStatisticsMapper; +import com.ruoyi.ehsIndexStatistics.service.EhsIndexStatisticsService; +import com.ruoyi.ehsIndexStatistics.vo.EhsIndexStatistics; +import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerRankVo; +import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerStatisticsVo; +import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 功能描述 + * + * @author: 马腾达 + * @date: 2023年12月12日 15:06 + */ +@Service +public class EhsIndexStatisticsServiceImpl implements EhsIndexStatisticsService { + @Autowired + private EhsIndexStatisticsMapper mapper; + @Override + public EhsIndexStatistics getEhsIndexStatistics() { + Long deptId = null; + // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文 + SysUser currentUser = SecurityUtils.getLoginUser().getUser(); + List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()); + Long deptParentId = currentUser.getDept().getParentId(); + if (!roleIds.contains(1L) && + deptParentId != null && + deptParentId.longValue() != 0) { + deptId = currentUser.getDept().getDeptId().longValue(); + } + return mapper.getEhsIndexStatistics(deptId); + } + @Override + public EhsIndexStatistics getSuperviseAndHandle() { + Long deptId = null; + // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文 + SysUser currentUser = SecurityUtils.getLoginUser().getUser(); + List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()); + Long deptParentId = currentUser.getDept().getParentId(); + if (!roleIds.contains(1L) && + deptParentId != null && + deptParentId.longValue() != 0) { + deptId = currentUser.getDept().getDeptId().longValue(); + } + return mapper.getSuperviseAndHandle(deptId); + } + @Override + public List<EhsIndexStatistics> getEhsIndexStatisticsList() { + Long deptId = null; + // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文 + SysUser currentUser = SecurityUtils.getLoginUser().getUser(); + List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()); + Long deptParentId = currentUser.getDept().getParentId(); + if (!roleIds.contains(1L) && + deptParentId != null && + deptParentId.longValue() != 0) { + deptId = currentUser.getDept().getDeptId().longValue(); + } + return mapper.getEhsIndexStatisticsList(deptId); + } + + @Override + public List<HiddenDangerVo> getHiddenDangerVoList(HiddenDangerVo vo) { + // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文 + SysUser currentUser = SecurityUtils.getLoginUser().getUser(); + List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()); + Long deptParentId = currentUser.getDept().getParentId(); + if (!roleIds.contains(1L) && + deptParentId != null && + deptParentId.longValue() != 0) { + vo.setDeptId(currentUser.getDept().getDeptId().longValue()); + } + return mapper.getHiddenDangerVoList(vo); + } + + @Override + public List<HiddenDangerStatisticsVo> getHiddenDangerSituationList() { + return mapper.getHiddenDangerSituationList(); + } + @Override + public List<HiddenDangerStatisticsVo> getHiddenDangerSituationByEnterpriseNameList() { + return mapper.getHiddenDangerSituationByEnterpriseNameList(); + } + + @Override + public List<HiddenDangerRankVo> getHiddenDangerRankVoList() { + return mapper.getHiddenDangerRankVoList(); + } + + @Override + public List<Map<String,Object>> getEnterpriseMapList() { + Long deptId = null; + // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文 + SysUser currentUser = SecurityUtils.getLoginUser().getUser(); + List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()); + Long deptParentId = currentUser.getDept().getParentId(); + if (!roleIds.contains(1L) && + deptParentId != null && + deptParentId.longValue() != 0) { + deptId = currentUser.getDept().getDeptId().longValue(); + } + return mapper.getEnterpriseMapList(deptId); + } + @Override + public List<Map<String,Object>> geteconomicTypeMapList() { + Long deptId = null; + // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文 + SysUser currentUser = SecurityUtils.getLoginUser().getUser(); + List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()); + Long deptParentId = currentUser.getDept().getParentId(); + if (!roleIds.contains(1L) && + deptParentId != null && + deptParentId.longValue() != 0) { + deptId = currentUser.getDept().getDeptId().longValue(); + } + return mapper.geteconomicTypeMapList(deptId); + } + @Override + public List<Map<String,Object>> getenterpriseScaleMapList() { + Long deptId = null; + // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文 + SysUser currentUser = SecurityUtils.getLoginUser().getUser(); + List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()); + Long deptParentId = currentUser.getDept().getParentId(); + if (!roleIds.contains(1L) && + deptParentId != null && + deptParentId.longValue() != 0) { + deptId = currentUser.getDept().getDeptId().longValue(); + } + return mapper.getenterpriseScaleMapList(deptId); + } + @Override + public List<Map<String,Object>> getHiddenDangerTypeMapList() { + Long deptId = null; + // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文 + SysUser currentUser = SecurityUtils.getLoginUser().getUser(); + List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()); + Long deptParentId = currentUser.getDept().getParentId(); + if (!roleIds.contains(1L) && + deptParentId != null && + deptParentId.longValue() != 0) { + deptId = currentUser.getDept().getDeptId().longValue(); + } + return mapper.getHiddenDangerTypeMapList(deptId); + } + @Override + public List<Map<String,Object>> getHiddenDangerDataMapList(String yearStr) { + Long deptId = null; + // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文 + SysUser currentUser = SecurityUtils.getLoginUser().getUser(); + List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()); + Long deptParentId = currentUser.getDept().getParentId(); + if (!roleIds.contains(1L) && + deptParentId != null && + deptParentId.longValue() != 0) { + deptId = currentUser.getDept().getDeptId().longValue(); + } + return mapper.getHiddenDangerDataMapList(yearStr,deptId); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/EhsIndexStatistics.java b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/EhsIndexStatistics.java new file mode 100644 index 0000000..7a35723 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/EhsIndexStatistics.java @@ -0,0 +1,56 @@ +package com.ruoyi.ehsIndexStatistics.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 功能描述 + * + * @author: 马腾达 + * @date: 2023年12月12日 13:22 + */ +@Data +public class EhsIndexStatistics { + + /** + * 名称 + */ + private String name; + + /** + * 单位数量 + */ + private Integer unitNum; + + /** + * 隐患数量 + */ + private Integer hiddenDangerNum; + + /** + * 已整改 + */ + private Integer haveRectifiedNum; + + /** + * 未整改 + */ + private Integer notRectifiedNum; + + /** + * 过期未整改 + */ + private Integer exceedNotRectifiedNum; + + /** + * 整改治理资金 + */ + private BigDecimal rectifyMoneySum; + + /** + * 整改率 + */ + private String rectifyRate; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/HiddenDangerRankVo.java b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/HiddenDangerRankVo.java new file mode 100644 index 0000000..58fab91 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/HiddenDangerRankVo.java @@ -0,0 +1,23 @@ +package com.ruoyi.ehsIndexStatistics.vo; + +import lombok.Data; + +/** + * 上报隐患排名 + * + * @author: 马腾达 + * @date: 2023年12月15日 9:08 + */ +@Data +public class HiddenDangerRankVo { + + /** + * 区域名称 + */ + private String areaName; + + /** + * 上报隐患数--当月 + */ + private Integer reportHiddenNum; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/HiddenDangerStatisticsVo.java b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/HiddenDangerStatisticsVo.java new file mode 100644 index 0000000..4c572e6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/HiddenDangerStatisticsVo.java @@ -0,0 +1,64 @@ +package com.ruoyi.ehsIndexStatistics.vo; + +import lombok.Data; + +/** + * 隐患统计 + * + * @author: 马腾达 + * @date: 2023年12月15日 9:01 + */ +@Data +public class HiddenDangerStatisticsVo { + + /** + * 名称 + */ + private String name; + + /** + * 企业注册数--当月 + */ + private Integer thisUnitNum; + + /** + * 企业注册数--累计 + */ + private Integer totalUnitNum; + /** + * 上报隐患数--当月 + */ + private Integer thisReportNum; + + /** + * 上报隐患数--累计 + */ + private Integer totalReportNum; + /** + * 已整改数量--当月 + */ + private Integer thisHaveNum; + + /** + * 已整改数量--累计 + */ + private Integer totalHaveNum; + /** + * 未整改数量--当月 + */ + private Integer thisNotNum; + + /** + * 未整改数量--累计 + */ + private Integer totalNotNum; + /** + * 整改率--当月 + */ + private String thisRate; + + /** + * 整改率--累计 + */ + private String totalRate; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/HiddenDangerVo.java b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/HiddenDangerVo.java new file mode 100644 index 0000000..2e126be --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/ehsIndexStatistics/vo/HiddenDangerVo.java @@ -0,0 +1,65 @@ +package com.ruoyi.ehsIndexStatistics.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * 隐患信息 + * + * @author: 马腾达 + * @date: 2023年12月14日 17:03 + */ +@Data +@ToString +@NoArgsConstructor +@Accessors(chain = true) +public class HiddenDangerVo extends BaseEntity { + private static final long serialVersionUID = 1L; + /** + * 隐患内容 + */ + private String hiddenDangerDesc; + + /** + * 单位名称 + */ + private String enterpriseName; + + /** + * 隐患类别 + */ + private String hiddenDangerType; + + /** + * 隐患级别 + */ + private String hiddenDangerGrade; + + /** + * 排查出隐患日期 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkTime; + + /** + * 整改期限 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date rectifyTermTime; + + /** + * 整改责任人 + */ + private String principalName; + /** + * 整改情况 + */ + private String status; + +} diff --git a/ruoyi-system/src/main/resources/mapper/ehs/EhsIndexStatisticsMapper.xml b/ruoyi-system/src/main/resources/mapper/ehs/EhsIndexStatisticsMapper.xml new file mode 100644 index 0000000..35e4683 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/ehs/EhsIndexStatisticsMapper.xml @@ -0,0 +1,294 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.ehsIndexStatistics.mapper.EhsIndexStatisticsMapper"> + <select id="getEhsIndexStatistics" resultType="com.ruoyi.ehsIndexStatistics.vo.EhsIndexStatistics"> + SELECT + count(distinct enterprise_name) unitNum, + count( 1 ) hiddenDangerNum, + sum( CASE WHEN STATUS = 10 THEN 1 ELSE 0 END ) haveRectifiedNum, + sum( CASE WHEN STATUS != 10 THEN 1 ELSE 0 END ) notRectifiedNum, + sum( CASE WHEN STATUS != 10 AND rectify_term_time < NOW() THEN 1 ELSE 0 END ) exceedNotRectifiedNum, + sum( rectify_money ) rectifyMoneySum, + CONCAT(round( + sum( CASE WHEN STATUS = 10 THEN 1 ELSE 0 END )/ sum( CASE WHEN STATUS != 10 THEN 1 ELSE 0 END ), + 2 + )*100,'%') rectifyRate + FROM + `ehs_hidden_danger` + <where> + <if test="deptId != null and deptId != ''">and dept_id = #{deptId}</if> + </where> + </select> + <select id="getSuperviseAndHandle" resultType="com.ruoyi.ehsIndexStatistics.vo.EhsIndexStatistics"> + SELECT + count( 1 ) hiddenDangerNum, + sum( CASE WHEN STATUS = 10 THEN 1 ELSE 0 END ) haveRectifiedNum, + sum( CASE WHEN STATUS != 10 THEN 1 ELSE 0 END ) notRectifiedNum, + sum( CASE WHEN STATUS != 10 AND rectify_term_time < NOW() THEN 1 ELSE 0 END ) exceedNotRectifiedNum, + sum( rectify_money ) rectifyMoneySum, + CONCAT(round( + sum( CASE WHEN STATUS = 10 THEN 1 ELSE 0 END )/ sum( CASE WHEN STATUS != 10 THEN 1 ELSE 0 END ), + 2 + )*100,'%') rectifyRate + FROM + `ehs_hidden_danger` + <where> + is_supervise = 1 + <if test="deptId != null and deptId != ''">and dept_id = #{deptId}</if> + </where> + </select> + <select id="getEhsIndexStatisticsList" resultType="com.ruoyi.ehsIndexStatistics.vo.EhsIndexStatistics"> + SELECT + r.hidden_danger_grade, + d.dict_label name, + sum( CASE WHEN r.hidden_danger_id is not null THEN 1 ELSE 0 END ) hiddenDangerNum, + sum( CASE WHEN r.STATUS = 10 THEN 1 ELSE 0 END ) haveRectifiedNum, + sum( CASE WHEN r.STATUS != 10 THEN 1 ELSE 0 END ) notRectifiedNum, + sum( CASE WHEN r.STATUS != 10 AND r.rectify_term_time < NOW() THEN 1 ELSE 0 END ) exceedNotRectifiedNum, + ifnull(sum( r.rectify_money ),0) rectifyMoneySum, + CONCAT(ifnull(round( + sum( CASE WHEN r.STATUS = 10 THEN 1 ELSE 0 END )/ sum( CASE WHEN r.STATUS != 10 THEN 1 ELSE 0 END ), + 2 + )* 100,0),'%') rectifyRate + FROM + sys_dict_data d + LEFT JOIN ehs_hidden_danger r ON r.hidden_danger_grade = d.dict_value + <where> + d.dict_type = 'hidden_danger_grade' + <if test="deptId != null and deptId != ''">and dept_id = #{deptId}</if> + </where> + GROUP BY + r.hidden_danger_grade + </select> + <select id="getHiddenDangerVoList" parameterType="com.ruoyi.ehsIndexStatistics.vo.HiddenDangerVo" resultType="com.ruoyi.ehsIndexStatistics.vo.HiddenDangerVo"> + SELECT + * + FROM + ehs_hidden_danger + <where> + <if test="vo.deptId != null and vo.deptId != ''">and dept_id = #{vo.deptId}</if> + <if test="vo.enterpriseName != null and vo.enterpriseName != ''">and enterprise_name like CONCAT('%',#{vo.enterpriseName},'%')</if> + <if test="vo.hiddenDangerGrade != null and vo.hiddenDangerGrade != ''">and hidden_danger_grade = #{vo.hiddenDangerGrade}</if> + <if test="vo.status != null and vo.status != ''">and status = #{vo.status}</if> + <if test="vo.params.qxStartTime != null and vo.params.qxStartTime != ''">and rectify_term_time >= #{vo.params.qxStartTime}</if> + <if test="vo.params.qxEndTime != null and vo.params.qxEndTime != ''">and rectify_term_time < #{vo.params.qxEndTime}</if> + <if test="vo.params.pcStartTime != null and vo.params.pcStartTime != ''">and check_time >= #{vo.params.pcStartTime}</if> + <if test="vo.params.pcEndTime != null and vo.params.pcEndTime != ''">and check_time < #{vo.params.pcEndTime}</if> + <if test="vo.params.wcStartTime != null and vo.params.wcStartTime != ''">and rectify_time >= #{vo.params.wcStartTime}</if> + <if test="vo.params.wcEndTime != null and vo.params.wcEndTime != ''">and rectify_time < #{vo.params.wcEndTime}</if> + </where> + </select> + <select id="getHiddenDangerSituationList" + resultType="com.ruoyi.ehsIndexStatistics.vo.HiddenDangerStatisticsVo"> + SELECT + d.dict_label 'name', + (select count(1) from ehs_enterprise e where e.area_id = d.dict_value and e.create_time>= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' )) thisUnitNum, + (select count(1) from ehs_enterprise e where e.area_id = d.dict_value) totalUnitNum, + sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.check_time >= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' ) THEN 1 ELSE 0 END ) 'thisReportNum', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL THEN 1 ELSE 0 END ) 'totalReportNum', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.check_time >= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' ) and r.status = 10 THEN 1 ELSE 0 END ) 'thisHaveNum', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.status = 10 THEN 1 ELSE 0 END ) 'totalHaveNum', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.check_time >= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' ) and r.status != 10 THEN 1 ELSE 0 END ) 'thisNotNum', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.status != 10 THEN 1 ELSE 0 END ) 'totalNotNum', + CONCAT(round(ifnull(sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.check_time >= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' ) and r.status = 10 THEN 1 ELSE 0 END )/sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.check_time >= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' ) THEN 1 ELSE 0 END ),0)*100,2),'%') 'thisRate', + CONCAT(round(ifnull(sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.status = 10 THEN 1 ELSE 0 END )/sum( CASE WHEN r.hidden_danger_id IS NOT NULL THEN 1 ELSE 0 END ),0)*100,2),'%') 'totalRate' + FROM + sys_dict_data d + LEFT JOIN ehs_hidden_danger r ON r.area_id = d.dict_value + WHERE + d.dict_type = 'area_id' + GROUP BY + r.area_id + </select> + <select id="getHiddenDangerSituationByEnterpriseNameList" + resultType="com.ruoyi.ehsIndexStatistics.vo.HiddenDangerStatisticsVo"> + SELECT + r.enterprise_name 'name', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.check_time >= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' ) THEN 1 ELSE 0 END ) 'thisReportNum', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL THEN 1 ELSE 0 END ) 'totalReportNum', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.check_time >= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' ) and r.status = 10 THEN 1 ELSE 0 END ) 'thisHaveNum', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.status = 10 THEN 1 ELSE 0 END ) 'totalHaveNum', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.check_time >= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' ) and r.status != 10 THEN 1 ELSE 0 END ) 'thisNotNum', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.status != 10 THEN 1 ELSE 0 END ) 'totalNotNum', + CONCAT(round(ifnull(sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.check_time >= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' ) and r.status = 10 THEN 1 ELSE 0 END )/sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.check_time >= DATE_FORMAT( now(), '%Y-%m-01 00:00:00' ) THEN 1 ELSE 0 END ),0)*100,2),'%') 'thisRate', + CONCAT(round(ifnull(sum( CASE WHEN r.hidden_danger_id IS NOT NULL and r.status = 10 THEN 1 ELSE 0 END )/sum( CASE WHEN r.hidden_danger_id IS NOT NULL THEN 1 ELSE 0 END ),0)*100,2),'%') 'totalRate' + FROM + ehs_hidden_danger r + GROUP BY + r.enterprise_name + </select> + <select id="getHiddenDangerRankVoList" + resultType="com.ruoyi.ehsIndexStatistics.vo.HiddenDangerRankVo"> + SELECT + s.* + FROM + ( + SELECT + d.dict_label 'areaName', + sum( CASE WHEN r.hidden_danger_id IS NOT NULL THEN 1 ELSE 0 END ) 'reportHiddenNum' + FROM + sys_dict_data d + LEFT JOIN ehs_hidden_danger r ON r.area_id = d.dict_value + WHERE + d.dict_type = 'area_id' + GROUP BY + r.area_id + ) s + ORDER BY + s.reportHiddenNum DESC + </select> + <select id="getEnterpriseMapList" + resultType="map"> + SELECT + ifnull(d.dict_label,'未知') 'name', + count( 1 ) 'value' + FROM + ehs_enterprise e + LEFT JOIN sys_dict_data d ON e.enterprise_type = d.dict_value + AND d.dict_type = 'enterprise_type' + <where> + <if test="deptId != null and deptId != ''">and dept_id = #{deptId}</if> + </where> + GROUP BY + e.enterprise_type + </select> + <select id="geteconomicTypeMapList" + resultType="map"> + SELECT + ifnull(d.dict_label,'未知') 'name', + count( 1 ) 'value' + FROM + ehs_enterprise e + LEFT JOIN sys_dict_data d ON e.economic_type = d.dict_value + AND d.dict_type = 'economic_type' + <where> + <if test="deptId != null and deptId != ''">and dept_id = #{deptId}</if> + </where> + GROUP BY + e.economic_type + </select> + <select id="getenterpriseScaleMapList" + resultType="map"> + SELECT + ifnull(d.dict_label,'未知') 'name', + count( 1 ) 'value' + FROM + ehs_enterprise e + LEFT JOIN sys_dict_data d ON e.enterprise_scale = d.dict_value + AND d.dict_type = 'enterprise_scale' + <where> + <if test="deptId != null and deptId != ''">and dept_id = #{deptId}</if> + </where> + GROUP BY + e.enterprise_scale + </select> + <select id="getHiddenDangerTypeMapList" + resultType="map"> + SELECT + ifnull(d.dict_label,'未知') 'name', + count( 1 ) 'value' + FROM + ehs_hidden_danger e + LEFT JOIN sys_dict_data d ON e.hidden_danger_type = d.dict_value + AND d.dict_type = 'hidden_danger_type' + <where> + <if test="deptId != null and deptId != ''">and dept_id = #{deptId}</if> + </where> + GROUP BY + e.hidden_danger_type + </select> + <select id="getHiddenDangerDataMapList" + resultType="map"> + SELECT + g.date_time 'dayStr', + g.dict_label 'name', + CAST(ifnull( h.value, 0 ) AS CHAR) 'dataNum' + FROM + ( + SELECT + s.date_time, + d.dict_code, + d.dict_label, + d.dict_value + FROM + ( + SELECT + DATE_FORMAT( date_add( CONCAT( #{yearStr}, '-01-01' ), INTERVAL ROW MONTH ), '%Y-%m' ) date_time + FROM + ( + SELECT + @ROW := @ROW + 1 AS ROW + FROM + ( + SELECT + 0 UNION ALL + SELECT + 1 UNION ALL + SELECT + 2 UNION ALL + SELECT + 3 UNION ALL + SELECT + 4 UNION ALL + SELECT + 5 UNION ALL + SELECT + 6 UNION ALL + SELECT + 7 UNION ALL + SELECT + 8 UNION ALL + SELECT + 9 + ) t, + ( + SELECT + 0 UNION ALL + SELECT + 1 UNION ALL + SELECT + 2 UNION ALL + SELECT + 3 UNION ALL + SELECT + 4 UNION ALL + SELECT + 5 UNION ALL + SELECT + 6 UNION ALL + SELECT + 7 UNION ALL + SELECT + 8 UNION ALL + SELECT + 9 + ) t2, + ( SELECT @ROW :=- 1 ) r + ) se + WHERE + DATE_FORMAT( date_add( CONCAT( #{yearStr}, '-01-01' ), INTERVAL ROW MONTH ), '%Y-%m' ) <= DATE_FORMAT( CONCAT( #{yearStr}, '-12-01' ), '%Y-%m' )) s, + sys_dict_data d + WHERE + d.dict_type = 'hidden_danger_grade' + ) g + LEFT JOIN ( + SELECT + DATE_FORMAT( r.check_time, '%Y-%m' ) date_time, + r.hidden_danger_grade, + sum( CASE WHEN r.hidden_danger_id IS NOT NULL THEN 1 ELSE 0 END ) 'value' + FROM + ehs_hidden_danger r + <where> + <if test="deptId != null and deptId != ''">and r.dept_id = #{deptId}</if> + </where> + GROUP BY + r.hidden_danger_grade, + DATE_FORMAT( r.check_time, '%Y-%m' )) h ON g.date_time = h.date_time + AND g.dict_value = h.hidden_danger_grade + ORDER BY + g.date_time, + g.dict_value + </select> +</mapper> \ No newline at end of file diff --git a/ruoyi-ui/src/views/ehs/ehsDocument/index.vue b/ruoyi-ui/src/views/ehs/ehsDocument/index.vue index 7793a7e..369454e 100644 --- a/ruoyi-ui/src/views/ehs/ehsDocument/index.vue +++ b/ruoyi-ui/src/views/ehs/ehsDocument/index.vue @@ -1,6 +1,13 @@ <template> <div class="app-container"> - <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> + <el-form + :model="queryParams" + ref="queryForm" + size="small" + :inline="true" + v-show="showSearch" + label-width="68px" + > <el-form-item label="公文名称" prop="docName"> <el-input v-model="queryParams.docName" @@ -10,7 +17,11 @@ /> </el-form-item> <el-form-item label="公文类型" prop="docType"> - <el-select v-model="queryParams.docType" placeholder="请选择公文类型" clearable> + <el-select + v-model="queryParams.docType" + placeholder="请选择公文类型" + clearable + > <el-option v-for="dict in dict.type.doc_type" :key="dict.value" @@ -20,8 +31,16 @@ </el-select> </el-form-item> <el-form-item> - <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> + <el-button + type="primary" + icon="el-icon-search" + size="mini" + @click="handleQuery" + >搜索</el-button + > + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" + >重置</el-button + > </el-form-item> </el-form> @@ -34,7 +53,7 @@ size="mini" @click="handleAdd" v-hasPermi="['ehs:ehsDocument:add']" - >公文登记 + >公文登记 </el-button> </el-col> @@ -47,7 +66,7 @@ :disabled="single" @click="handleUpdate" v-hasPermi="['ehs:ehsDocument:edit']" - >修改 + >修改 </el-button> </el-col> <el-col :span="1.5"> @@ -59,7 +78,7 @@ :disabled="multiple" @click="handleDelete" v-hasPermi="['ehs:ehsDocument:remove']" - >删除 + >删除 </el-button> </el-col> <el-col :span="1.5"> @@ -70,36 +89,52 @@ size="mini" @click="handleExport" v-hasPermi="['ehs:ehsDocument:export']" - >导出 + >导出 </el-button> </el-col> - <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + <right-toolbar + :showSearch.sync="showSearch" + @queryTable="getList" + ></right-toolbar> </el-row> - <el-table v-loading="loading" :data="ehsDocumentList" @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" align="center"/> + <el-table + v-loading="loading" + :data="ehsDocumentList" + @selection-change="handleSelectionChange" + > + <el-table-column type="selection" width="55" align="center" /> <!--<el-table-column label="主键" align="center" prop="id" />--> <el-table-column label="序号" align="center"> <template slot-scope="scope"> <span>{{ Number(scope.$index) + 1 }}</span> </template> </el-table-column> - <el-table-column label="公文名称" align="center" prop="docName"/> - <el-table-column label="公文字号" align="center" prop="docFont"/> - <el-table-column label="拟稿部门" align="center" prop="draftDept"/> + <el-table-column label="公文名称" align="center" prop="docName" /> + <el-table-column label="公文字号" align="center" prop="docFont" /> + <el-table-column label="拟稿部门" align="center" prop="draftDept" /> <el-table-column label="公文类型" align="center" prop="docType"> <template slot-scope="scope"> - <dict-tag :options="dict.type.doc_type" :value="scope.row.docType"/> + <dict-tag :options="dict.type.doc_type" :value="scope.row.docType" /> </template> </el-table-column> - <el-table-column label="公文编号" align="center" prop="docNumber"/> - <el-table-column label="收文日期" align="center" prop="receiveTime" width="180"> + <el-table-column label="公文编号" align="center" prop="docNumber" /> + <el-table-column + label="收文日期" + align="center" + prop="receiveTime" + width="180" + > <template slot-scope="scope"> - <span>{{ parseTime(scope.row.receiveTime, '{y}-{m}-{d}') }}</span> + <span>{{ parseTime(scope.row.receiveTime, "{y}-{m}-{d}") }}</span> </template> </el-table-column> - <el-table-column label="备注" align="center" prop="remark"/> - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> + <el-table-column label="备注" align="center" prop="remark" /> + <el-table-column + label="操作" + align="center" + class-name="small-padding fixed-width" + > <template slot-scope="scope"> <!-- <el-button size="mini" @@ -108,33 +143,34 @@ @click="handleUpdate(scope.row)" v-hasPermi="['ehs:ehsDocument:edit']" >修改</el-button>--> - <el-button v-show="scope.row.status==1" - type="primary" - plain - size="mini" - @click="handleLend(scope.row)" - >借出 + <el-button + v-show="scope.row.status == 1" + type="primary" + plain + size="mini" + @click="handleLend(scope.row)" + >借出 </el-button> - <el-button v-show="scope.row.status==0" - type="primary" - plain - size="mini" - @click="returnDoc(scope.row)" - >归还 + <el-button + v-show="scope.row.status == 0" + type="primary" + plain + size="mini" + @click="returnDoc(scope.row)" + >归还 </el-button> <el-button size="mini" type="primary" @click="transferRecord(scope.row)" - >流转记录 + >流转记录 </el-button> - </template> </el-table-column> </el-table> <pagination - v-show="total>0" + v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @@ -145,10 +181,10 @@ <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="公文名称" prop="docName"> - <el-input v-model="form.docName" placeholder="请输入公文名称"/> + <el-input v-model="form.docName" placeholder="请输入公文名称" /> </el-form-item> <el-form-item label="公文字号" prop="docFont"> - <el-input v-model="form.docFont" placeholder="请输入公文字号"/> + <el-input v-model="form.docFont" placeholder="请输入公文字号" /> </el-form-item> <!--<el-form-item label="拟稿部门" prop="draftDept"> <el-input v-model="form.draftDept" placeholder="请输入拟稿部门" /> @@ -179,19 +215,24 @@ </el-select> </el-form-item> <el-form-item label="公文编号" prop="docNumber"> - <el-input v-model="form.docNumber" placeholder="请输入公文编号"/> + <el-input v-model="form.docNumber" placeholder="请输入公文编号" /> </el-form-item> <el-form-item label="收文日期" prop="receiveTime"> - <el-date-picker clearable - v-model="form.receiveTime" - type="date" - value-format="yyyy-MM-dd" - placeholder="请选择收文日期" + <el-date-picker + clearable + v-model="form.receiveTime" + type="date" + value-format="yyyy-MM-dd" + placeholder="请选择收文日期" > </el-date-picker> </el-form-item> <el-form-item label="备注" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/> + <el-input + v-model="form.remark" + type="textarea" + placeholder="请输入内容" + /> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> @@ -200,51 +241,76 @@ </div> </el-dialog> <!--流转记录会话框--> - <el-dialog :title="title1" :visible.sync="open1" width="600px" append-to-body> + <el-dialog + :title="title1" + :visible.sync="open1" + width="600px" + append-to-body + > <el-table v-loading="loading" :data="ehsDocTransferList"> <el-table-column label="序号" align="center"> <template slot-scope="scope"> <span>{{ Number(scope.$index) + 1 }}</span> </template> </el-table-column> - <el-table-column label="流转人" align="center" prop="transferName"/> + <el-table-column label="流转人" align="center" prop="transferName" /> - <el-table-column label="流转时间" align="center" prop="transferTime" width="180"> + <el-table-column + label="流转时间" + align="center" + prop="transferTime" + width="180" + > <template slot-scope="scope"> - <span>{{ parseTime(scope.row.transferTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> + <span>{{ + parseTime(scope.row.transferTime, "{y}-{m}-{d} {h}:{i}:{s}") + }}</span> </template> </el-table-column> - <el-table-column label="流转状态" align="center" prop="docTransferStatus"> + <el-table-column + label="流转状态" + align="center" + prop="docTransferStatus" + > <template slot-scope="scope"> <span v-if="scope.row.docTransferStatus == '0'">借出</span> <span v-else>归还</span> </template> </el-table-column> - </el-table> - </el-dialog> <!--公文借出会话框--> - <el-dialog :title="title2" :visible.sync="open2" width="600px" append-to-body> - - <el-form :disabled="true" ref="form" :model="form" :rules="rules" label-width="80px"> + <el-dialog + :title="title2" + :visible.sync="open2" + width="600px" + append-to-body + > + <el-form + :disabled="true" + ref="form" + :model="form" + :rules="rules" + label-width="80px" + > <el-form-item label="公文名称" prop="documentName"> - <el-input v-model="form.documentName" placeholder="请输入公文名称"/> + <el-input v-model="form.documentName" placeholder="请输入公文名称" /> </el-form-item> <el-form label-width="80px" :model="form"> <el-form-item label="流转人" prop="transferName"> - <el-input v-model="form.transferName" placeholder="请输入流转人"/> - </el-form-item> + <el-input v-model="form.transferName" placeholder="请输入流转人" /> + </el-form-item> <el-form-item label="流转时间" prop="transferTime"> - <el-date-picker clearable - v-model="form.transferTime" - type="datetime" - value-format="yyyy-MM-dd HH:mm:ss" - placeholder="请选择流转时间" + <el-date-picker + clearable + v-model="form.transferTime" + type="datetime" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="请选择流转时间" > </el-date-picker> </el-form-item> @@ -257,7 +323,6 @@ </div> </el-dialog> </div> - </template> <script> @@ -269,15 +334,20 @@ import { updateEhsDocument, getAllDraftDept, getDocTransferById, - getEhsDocumentById -} from '@/api/ehs/ehsDocument' -import { addEhsDocTransfer, listEhsDocTransfer, lendEhsDoc, returnEhsDoc } from '@/api/ehs/ehsDocTransfer' -import { parseTime } from '../../../utils/ruoyi' -import dict from '@/utils/dict' + getEhsDocumentById, +} from "@/api/ehs/ehsDocument"; +import { + addEhsDocTransfer, + listEhsDocTransfer, + lendEhsDoc, + returnEhsDoc, +} from "@/api/ehs/ehsDocTransfer"; +import { parseTime } from "../../../utils/ruoyi"; +import dict from "@/utils/dict"; export default { - name: 'EhsDocument', - dicts: ['doc_type', 'doc_transfer_status'], + name: "EhsDocument", + dicts: ["doc_type", "doc_transfer_status"], data() { return { // 遮罩层 @@ -299,9 +369,9 @@ export default { // 公文流转记录数据 ehsDocTransferList: [], // 弹出层标题 - title: '', - title1: '', - title2: '', + title: "", + title1: "", + title2: "", // 是否显示弹出层 open: false, open1: false, @@ -311,45 +381,45 @@ export default { pageNum: 1, pageSize: 10, docName: null, - docType: null + docType: null, }, // 表单参数 form: {}, // 表单校验 - rules: {} - } + rules: {}, + }; }, created() { - this.getList() + this.getList(); // 获取拟稿部门下拉列表 - this.getAllDraftDept() + this.getAllDraftDept(); }, methods: { dict, parseTime, /** 查询公文管理列表 */ getList() { - this.loading = true - listEhsDocument(this.queryParams).then(response => { - this.ehsDocumentList = response.rows - this.total = response.total - this.loading = false - }) + this.loading = true; + listEhsDocument(this.queryParams).then((response) => { + this.ehsDocumentList = response.rows; + this.total = response.total; + this.loading = false; + }); }, /** 获取拟稿部门下拉列表 */ getAllDraftDept() { getAllDraftDept().then((res) => { - console.log(res) - this.ngbmInfo = res.data - }) + console.log(res); + this.ngbmInfo = res.data; + }); }, // 取消按钮 cancel() { - this.open = false - this.open1 = false - this.open2 = false - this.reset() + this.open = false; + this.open1 = false; + this.open2 = false; + this.reset(); }, // 表单重置 reset() { @@ -368,124 +438,130 @@ export default { remark: null, deptId: null, createUserId: null, - updateUserId: null - } - this.resetForm('form') + updateUserId: null, + }; + this.resetForm("form"); }, /** 搜索按钮操作 */ handleQuery() { - this.queryParams.pageNum = 1 - this.getList() + this.queryParams.pageNum = 1; + this.getList(); }, /** 重置按钮操作 */ resetQuery() { - this.resetForm('queryForm') - this.handleQuery() + this.resetForm("queryForm"); + this.handleQuery(); }, // 多选框选中数据 handleSelectionChange(selection) { - this.ids = selection.map(item => item.id) - this.single = selection.length !== 1 - this.multiple = !selection.length + this.ids = selection.map((item) => item.id); + this.single = selection.length !== 1; + this.multiple = !selection.length; }, /** 新增按钮操作 */ handleAdd() { - this.reset() - this.open = true - this.title = '公文登记' + this.reset(); + this.open = true; + this.title = "公文登记"; }, /** 修改按钮操作 */ handleUpdate(row) { - this.reset() - const id = row.id || this.ids - getEhsDocument(id).then(response => { - this.form = response.data - this.open = true - this.title = '修改公文' - }) + this.reset(); + const id = row.id || this.ids; + getEhsDocument(id).then((response) => { + this.form = response.data; + this.open = true; + this.title = "修改公文"; + }); }, /** 借出按钮操作 */ handleLend(row) { - this.reset() - const id = row.id || this.ids - getEhsDocumentById(id).then(response => { - this.form = response.data - this.open2 = true - this.title2 = '借出信息' - }) - + this.reset(); + const id = row.id || this.ids; + getEhsDocumentById(id).then((response) => { + this.form = response.data; + this.open2 = true; + this.title2 = "借出信息"; + }); }, /** 归还操作 */ returnDoc(row) { const id = row.id || this.ids; - returnEhsDoc(id).then(response => { - this.$modal.msgSuccess('归还成功') - this.getList() - }) + returnEhsDoc(id).then((response) => { + this.$modal.msgSuccess("归还成功"); + this.getList(); + }); }, /** 流转记录按钮操作 */ transferRecord(row) { - this.reset() - const id = row.id || this.ids + this.reset(); + const id = row.id || this.ids; /** 查询公文流转记录 */ - getDocTransferById(id).then(response => { - this.open1 = true - this.loading = true - this.title1 = '流转记录' - this.ehsDocTransferList = response.rows + getDocTransferById(id).then((response) => { + this.open1 = true; + this.loading = true; + this.title1 = "流转记录"; + this.ehsDocTransferList = response.rows; //this.total1 = response.total; - this.loading = false - }) + this.loading = false; + }); }, /** 提交按钮 */ submitForm() { - this.$refs['form'].validate(valid => { + this.$refs["form"].validate((valid) => { if (valid) { if (this.form.id != null) { - updateEhsDocument(this.form).then(response => { - this.$modal.msgSuccess('修改成功') - this.open = false - this.getList() - }) + updateEhsDocument(this.form).then((response) => { + this.$modal.msgSuccess("修改成功"); + this.open = false; + this.getList(); + }); } else { - addEhsDocument(this.form).then(response => { - this.$modal.msgSuccess('新增成功') - this.open = false - this.getList() - }) + addEhsDocument(this.form).then((response) => { + this.$modal.msgSuccess("新增成功"); + this.open = false; + this.getList(); + }); } } - }) + }); }, /** 提交借出信息 */ submitLendForm() { - this.$refs['form'].validate(valid => { - if (valid) { - lendEhsDoc(this.form).then(response => { - this.$modal.msgSuccess('借出成功') - this.open2 = false - this.getList() - }) - } - }) + this.$refs["form"].validate((valid) => { + if (valid) { + lendEhsDoc(this.form).then((response) => { + this.$modal.msgSuccess("借出成功"); + this.open2 = false; + this.getList(); + }); + } + }); }, /** 删除按钮操作 */ handleDelete(row) { - const ids = row.id || this.ids - this.$modal.confirm('是否确认删除公文管理编号为"' + ids + '"的数据项?').then(function() { - return delEhsDocument(ids) - }).then(() => { - this.getList() - this.$modal.msgSuccess('删除成功') - }).catch(() => { - }) + const ids = row.id || this.ids; + this.$modal + .confirm('是否确认删除公文管理编号为"' + ids + '"的数据项?') + .then(function () { + return delEhsDocument(ids); + }) + .then(() => { + this.getList(); + this.$modal.msgSuccess("删除成功"); + }) + .catch(() => {}); }, /** 导出按钮操作 */ handleExport() { - this.download('ehs/ehsDocument/export', { - ...this.queryParams - }, `ehsDocument_${new Date().getTime()}.xlsx`) - } - } -} + this.download( + "ehs/ehsDocument/export", + { + ...this.queryParams, + }, + `ehsDocument_${new Date().getTime()}.xlsx` + ); + }, + }, +}; </script> diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue index 97ec103..93a0d0a 100644 --- a/ruoyi-ui/src/views/index.vue +++ b/ruoyi-ui/src/views/index.vue @@ -2,958 +2,414 @@ <div class="app-container home"> <el-row :gutter="20"> <el-col :sm="24" :lg="24"> - <blockquote class="text-warning" style="font-size: 14px"> - 领取阿里云通用云产品1888优惠券 + <blockquote style="font-size: 14px"> + 本年度共有 + <el-button type="text" @click="haddenClick">{{ + yearData.unitNum + }}</el-button> + 家单位开展安全生产事故隐患排查治理,排查出隐患 + <el-button type="text" @click="haddenClick">{{ + yearData.hiddenDangerNum + }}</el-button> + 项,已整改 + <el-button type="text" @click="haddenClick">{{ + yearData.haveRectifiedNum + }}</el-button> + 项( 整改率为 + <el-button type="text" @click="haddenClick">{{ + yearData.rectifyRate + }}</el-button> + 未整改 + <el-button type="text" @click="haddenClick">{{ + yearData.notRectifiedNum + }}</el-button> + 项,超期未整改 + <el-button type="text" @click="haddenClick">{{ + yearData.exceedNotRectifiedNum + }}</el-button> + 项,累计落实整改治理资金 + <el-button type="text" @click="haddenClick">{{ + yearData.rectifyMoneySum + }}</el-button> + 万元。 <br /> - <el-link - href="https://www.aliyun.com/minisite/goods?userCode=brki8iof" - type="primary" - target="_blank" - >https://www.aliyun.com/minisite/goods?userCode=brki8iof</el-link - > - <br /> - 领取腾讯云通用云产品2860优惠券 <br /> - <el-link - href="https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console" - type="primary" - target="_blank" - >https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console</el-link - > + + <div v-for="(item, i) in hiddenList" :key="i"> + 累计排查出{{ item.name }} + <el-button type="text" @click="haddenClick">{{ + item.hiddenDangerNum + }}</el-button> + 项,已整改 + <el-button type="text" @click="haddenClick">{{ + item.haveRectifiedNum + }}</el-button> + 项(整改率为 + <el-button type="text" @click="haddenClick">{{ + item.rectifyRate + }}</el-button> + ),未整改 + <el-button type="text" @click="haddenClick">{{ + item.notRectifiedNum + }}</el-button> + 项,超期未整改 + <el-button type="text" @click="haddenClick">{{ + item.exceedNotRectifiedNum + }}</el-button> + 项 + <br /> + <br /> + </div> + + 其中,列入督办隐患治理项目 + <el-button type="text" @click="haddenClick">{{ + collectData.hiddenDangerNum + }}</el-button> + 项,已整改 + <el-button type="text" @click="haddenClick">{{ + collectData.haveRectifiedNum + }}</el-button> + 项(整改率为 + <el-button type="text" @click="haddenClick">{{ + collectData.rectifyRate + }}</el-button> + 未整改 + <el-button type="text" @click="haddenClick">{{ + collectData.notRectifiedNum + }}</el-button> + 项,超期未整改 + <el-button type="text" @click="haddenClick">{{ + collectData.exceedNotRectifiedNum + }}</el-button> + 项) <br /> - 阿里云服务器折扣区 - <el-link href="http://aly.ruoyi.vip" type="primary" target="_blank" - >>☛☛点我进入☚☚</el-link - > - 腾讯云服务器秒杀区 - <el-link href="http://txy.ruoyi.vip" type="primary" target="_blank" - >>☛☛点我进入☚☚</el-link - ><br /> - <h4 class="text-danger"> - 云产品通用红包,可叠加官网常规优惠使用。(仅限新用户) - </h4> </blockquote> - - <hr /> + <el-divider /> + <el-table :data="hiddenList" style="width: 100%"> + <el-table-column prop="name" align="center" label="隐患级别" /> + <el-table-column + prop="hiddenDangerNum" + align="center" + label="隐患事故" + /> + <el-table-column + prop="haveRectifiedNum" + align="center" + label="已整改" + /> + <el-table-column prop="rectifyRate" align="center" label="整改率" /> + <el-table-column + prop="notRectifiedNum" + align="center" + label="未整改" + /> + <el-table-column + prop="exceedNotRectifiedNum" + align="center" + label="整改超期" + /> + </el-table> </el-col> </el-row> - <el-row :gutter="20"> - <el-col :sm="24" :lg="12" style="padding-left: 20px"> - <h2>若依后台管理框架</h2> - <p> - 一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 - </p> - <p> - <b>当前版本:</b> <span>v{{ version }}</span> - </p> - <p> - <el-tag type="danger">¥免费开源</el-tag> - </p> - <p> + + <!--公文借出会话框--> + <el-dialog + title="隐患查询" + :visible.sync="open" + width="1200px" + append-to-body + > + <el-form + :model="queryParams" + ref="queryForm" + size="small" + :inline="true" + v-show="showSearch" + label-width="68px" + > + <el-form-item label="单位名称" prop="enterpriseName"> + <el-input + v-model="queryParams.enterpriseName" + placeholder="请输入单位名称" + clearable + /> + </el-form-item> + <el-form-item label="隐患等级" prop="hiddenDangerGrade"> + <el-select + v-model="queryParams.hiddenDangerGrade" + placeholder="请选择隐患等级" + clearable + > + <el-option + v-for="dict in dict.type.hidden_danger_grade" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + <el-form-item label="整改情况" prop="status"> + <el-select + v-model="queryParams.status" + placeholder="请选择整改情况" + clearable + > + <el-option + v-for="dict in dict.type.hidden_danger_status" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + <el-form-item label="整改期限"> + <el-date-picker + v-model="queryParams.params.qxStartTime" + type="date" + placeholder="选择开始时间" + format="yyyy-MM-dd" + value-format="yyyy-MM-dd 00:00:00" + > + </el-date-picker + >至 + <el-date-picker + v-model="queryParams.params.qxEndTime" + type="date" + placeholder="选择结束时间" + format="yyyy-MM-dd" + value-format="yyyy-MM-dd 23:59:59" + > + </el-date-picker> + </el-form-item> + <el-form-item label="排查日期"> + <el-date-picker + v-model="queryParams.params.pcStartTime" + type="date" + placeholder="选择开始时间" + format="yyyy-MM-dd" + value-format="yyyy-MM-dd 00:00:00" + > + </el-date-picker + >至 + <el-date-picker + v-model="queryParams.params.pcEndTime" + type="date" + placeholder="选择结束时间" + format="yyyy-MM-dd" + value-format="yyyy-MM-dd 23:59:59" + > + </el-date-picker> + </el-form-item> + <el-form-item label="整改完成日期"> + <el-date-picker + v-model="queryParams.params.wcStartTime" + type="date" + placeholder="选择开始时间" + format="yyyy-MM-dd" + value-format="yyyy-MM-dd 00:00:00" + > + </el-date-picker + >至 + <el-date-picker + v-model="queryParams.params.wcEndTime" + type="date" + placeholder="选择结束时间" + format="yyyy-MM-dd" + value-format="yyyy-MM-dd 23:59:59" + > + </el-date-picker> + </el-form-item> + <el-form-item> <el-button type="primary" + icon="el-icon-search" size="mini" - icon="el-icon-cloudy" - plain - @click="goTarget('https://gitee.com/y_project/RuoYi-Vue')" - >访问码云</el-button + @click="handleQuery" + >搜索</el-button > - <el-button - size="mini" - icon="el-icon-s-home" - plain - @click="goTarget('http://ruoyi.vip')" - >访问主页</el-button + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" + >重置</el-button > - </p> - </el-col> - - <el-col :sm="24" :lg="12" style="padding-left: 50px"> - <el-row> - <el-col :span="12"> - <h2>技术选型</h2> - </el-col> - </el-row> - <el-row> - <el-col :span="6"> - <h4>后端技术</h4> - <ul> - <li>SpringBoot</li> - <li>Spring Security</li> - <li>JWT</li> - <li>MyBatis</li> - <li>Druid</li> - <li>Fastjson</li> - <li>...</li> - </ul> - </el-col> - <el-col :span="6"> - <h4>前端技术</h4> - <ul> - <li>Vue</li> - <li>Vuex</li> - <li>Element-ui</li> - <li>Axios</li> - <li>Sass</li> - <li>Quill</li> - <li>...</li> - </ul> - </el-col> - </el-row> - </el-col> - </el-row> - <el-divider /> - <el-row :gutter="20"> - <el-col :xs="24" :sm="24" :md="12" :lg="8"> - <el-card class="update-log"> - <div slot="header" class="clearfix"> - <span>联系信息</span> - </div> - <div class="body"> - <p> - <i class="el-icon-s-promotion"></i> 官网:<el-link - href="http://www.ruoyi.vip" - target="_blank" - >http://www.ruoyi.vip</el-link - > - </p> - <p> - <i class="el-icon-user-solid"></i> QQ群:<s> 满937441 </s> <s> 满887144332 </s> - <s> 满180251782 </s> <s> 满104180207 </s> <s> 满186866453 </s> <s> 满201396349 </s> - <s> 满101456076 </s> <s> 满101539465 </s> <s> 满264312783 </s> <s> 满167385320 </s> - <s> 满104748341 </s> <s> 满160110482 </s> <s> 满170801498 </s> <s> 满108482800 </s> - <s> 满101046199 </s> <s> 满136919097 </s> <s> 满143961921 </s> <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=1HmEGh7zKA_CKI2E-pGInPTlC5jS9mc_&authKey=XaiUf1wfbSTEecm4lDMtIMsc6g%2BoETxjBm1BbZPr6IfuMGRj7oG4GEeu7jtzNaw%2F&noverify=0&group_code=174951577" target="_blank">174951577</a> - </p> - <p> - <i class="el-icon-chat-dot-round"></i> 微信:<a - href="javascript:;" - >/ *若依</a - > - </p> - <p> - <i class="el-icon-money"></i> 支付宝:<a - href="javascript:;" - class="支付宝信息" - >/ *若依</a - > - </p> - </div> - </el-card> - </el-col> - <el-col :xs="24" :sm="24" :md="12" :lg="8"> - <el-card class="update-log"> - <div slot="header" class="clearfix"> - <span>更新日志</span> - </div> - <el-collapse accordion> - <el-collapse-item title="v3.8.6 - 2023-06-30"> - <ol> - <li>支持登录IP黑名单限制</li> - <li>新增监控页面图标显示</li> - <li>操作日志新增消耗时间属性</li> - <li>屏蔽定时任务bean违规的字符</li> - <li>日志管理使用索引提升查询性能</li> - <li>日志注解支持排除指定的请求参数</li> - <li>支持自定义隐藏属性列过滤子对象</li> - <li>升级oshi到最新版本6.4.3</li> - <li>升级druid到最新版本1.2.16</li> - <li>升级fastjson到最新版2.0.34</li> - <li>升级spring-boot到最新版本2.5.15</li> - <li>升级element-ui到最新版本2.15.13</li> - <li>移除apache/commons-fileupload依赖</li> - <li>修复页面切换时布局错乱的问题</li> - <li>修复匿名注解Anonymous空指针问题</li> - <li>修复路由跳转被阻止时内部产生报错信息问题</li> - <li>修复isMatchedIp的参数判断产生空指针的问题</li> - <li>修复用户多角色数据权限可能出现权限抬升的情况</li> - <li>修复开启TopNav后一级菜单路由参数设置无效问题</li> - <li>修复DictTag组件value没有匹配的值时则展示value</li> - <li>优化文件下载出现的异常</li> - <li>优化选择图标组件高亮回显</li> - <li>优化弹窗后导航栏偏移的问题</li> - <li>优化修改密码日志存储明文问题</li> - <li>优化页签栏关闭其他出现的异常问题</li> - <li>优化页签关闭左侧选项排除首页选项</li> - <li>优化关闭当前tab页跳转最右侧tab页</li> - <li>优化缓存列表清除操作提示不变的问题</li> - <li>优化字符未使用下划线不进行驼峰式处理</li> - <li>优化用户导入更新时需获取用户编号问题</li> - <li>优化侧边栏的平台标题与VUE_APP_TITLE保持同步</li> - <li>优化导出Excel时设置dictType属性重复查缓存问题</li> - <li>连接池Druid支持新的配置connectTimeout和socketTimeout</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.8.5 - 2023-01-01"> - <ol> - <li>定时任务违规的字符</li> - <li>重置时取消部门选中</li> - <li>新增返回警告消息提示</li> - <li>忽略不必要的属性数据返回</li> - <li>修改参数键名时移除前缓存配置</li> - <li>导入更新用户数据前校验数据权限</li> - <li>兼容Excel下拉框内容过多无法显示的问题</li> - <li>升级echarts到最新版本5.4.0</li> - <li>升级core-js到最新版本3.25.3</li> - <li>升级oshi到最新版本6.4.0</li> - <li>升级kaptcha到最新版2.3.3</li> - <li>升级druid到最新版本1.2.15</li> - <li>升级fastjson到最新版2.0.20</li> - <li>升级pagehelper到最新版1.4.6</li> - <li>优化弹窗内容过多展示不全问题</li> - <li>优化swagger-ui静态资源使用缓存</li> - <li>开启TopNav没有子菜单隐藏侧边栏</li> - <li>删除fuse无效选项maxPatternLength</li> - <li>优化导出对象的子列表为空会出现[]问题</li> - <li>优化编辑头像时透明部分会变成黑色问题</li> - <li>优化小屏幕上修改头像界面布局错位的问题</li> - <li>修复代码生成勾选属性无效问题</li> - <li>修复文件上传组件格式验证问题</li> - <li>修复回显数据字典数组异常问题</li> - <li>修复sheet超出最大行数异常问题</li> - <li>修复Log注解GET请求记录不到参数问题</li> - <li>修复调度日志点击多次数据不变化的问题</li> - <li>修复主题颜色在Drawer组件不会加载问题</li> - <li>修复文件名包含特殊字符的文件无法下载问题</li> - <li>修复table中更多按钮切换主题色未生效修复问题</li> - <li>修复某些特性的环境生成代码变乱码TXT文件问题</li> - <li>修复代码生成图片/文件/单选时选择必填无法校验问题</li> - <li>修复某些特性的情况用户编辑对话框中角色和部门无法修改问题</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.8.4 - 2022-09-26"> - <ol> - <li>数据逻辑删除不进行唯一验证</li> - <li>Excel注解支持导出对象的子列表方法</li> - <li>Excel注解支持自定义隐藏属性列</li> - <li>Excel注解支持backgroundColor属性设置背景色</li> - <li>支持配置密码最大错误次数/锁定时间</li> - <li>登录日志新增解锁账户功能</li> - <li>通用下载方法新增config配置选项</li> - <li>支持多权限字符匹配角色数据权限</li> - <li>页面内嵌iframe切换tab不刷新数据</li> - <li>操作日志记录支持排除敏感属性字段</li> - <li>修复多文件上传报错出现的异常问题</li> - <li>修复图片预览组件src属性为null值控制台报错问题</li> - <li>升级oshi到最新版本6.2.2</li> - <li>升级fastjson到最新版2.0.14</li> - <li>升级pagehelper到最新版1.4.3</li> - <li>升级core-js到最新版本3.25.2</li> - <li>升级element-ui到最新版本2.15.10</li> - <li>优化任务过期不执行调度</li> - <li>优化字典数据使用store存取</li> - <li>优化修改资料头像被覆盖的问题</li> - <li>优化修改用户登录账号重复验证</li> - <li>优化代码生成同步后值NULL问题</li> - <li>优化定时任务支持执行父类方法</li> - <li>优化用户个人信息接口防止修改部门</li> - <li>优化布局设置使用el-drawer抽屉显示</li> - <li>优化没有权限的用户编辑部门缺少数据</li> - <li>优化日志注解记录限制请求地址的长度</li> - <li>优化excel/scale属性导出单元格数值类型</li> - <li>优化日志操作中重置按钮时重复查询的问题</li> - <li>优化多个相同角色数据导致权限SQL重复问题</li> - <li>优化表格上右侧工具条(搜索按钮显隐&右侧样式凸出)</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.8.3 - 2022-06-27"> - <ol> - <li>新增缓存列表菜单功能</li> - <li>代码生成树表新增(展开/折叠)</li> - <li>Excel注解支持color字体颜色</li> - <li>新增Anonymous匿名访问不鉴权注解</li> - <li>用户头像上传限制只能为图片格式</li> - <li>接口使用泛型使其看到响应属性字段</li> - <li>检查定时任务bean所在包名是否为白名单配置</li> - <li>添加页签openPage支持传递参数</li> - <li>用户缓存信息添加部门ancestors祖级列表</li> - <li>升级element-ui到最新版本2.15.8</li> - <li>升级oshi到最新版本6.1.6</li> - <li>升级druid到最新版本1.2.11</li> - <li>升级fastjson到最新版2.0.8</li> - <li>升级spring-boot到最新版本2.5.14</li> - <li>降级jsencrypt版本兼容IE浏览器</li> - <li>删除多余的salt字段</li> - <li>新增获取不带后缀文件名称方法</li> - <li>新增获取配置文件中的属性值方法</li> - <li>新增内容编码/解码方便插件集成使用</li> - <li>字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)</li> - <li>优化设置分页参数默认值</li> - <li>优化对空字符串参数处理的过滤</li> - <li>优化显示顺序orderNum类型为整型</li> - <li>优化表单构建按钮不显示正则校验</li> - <li>优化字典数据回显样式下拉框显示值</li> - <li>优化R响应成功状态码与全局保持一致</li> - <li>优化druid开启wall过滤器出现的异常问题</li> - <li>优化用户管理左侧树型组件增加选中高亮保持</li> - <li>优化新增用户与角色信息&用户与岗位信息逻辑</li> - <li>优化默认不启用压缩文件缓存防止node_modules过大</li> - <li>修复字典数据显示不全问题</li> - <li>修复操作日志查询类型条件为0时会查到所有数据</li> - <li>修复Excel注解prompt/combo同时使用不生效问题</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.8.2 - 2022-04-01"> - <ol> - <li>前端支持设置是否需要防止数据重复提交</li> - <li>开启TopNav没有子菜单情况隐藏侧边栏</li> - <li>侧边栏菜单名称过长悬停显示标题</li> - <li>用户访问控制时校验数据权限,防止越权</li> - <li>导出Excel时屏蔽公式,防止CSV注入风险</li> - <li>组件ImagePreview支持多图预览显示</li> - <li>组件ImageUpload支持多图同时选择上传</li> - <li>组件FileUpload支持多文件同时选择上传</li> - <li>服务监控新增运行参数信息显示</li> - <li>定时任务目标字符串过滤特殊字符</li> - <li>定时任务目标字符串验证包名白名单</li> - <li>代码生成列表图片支持预览</li> - <li>代码生成编辑修改打开新页签</li> - <li>代码生成新增Java类型Boolean</li> - <li>代码生成子表支持日期/字典配置</li> - <li>代码生成同步保留必填/类型选项</li> - <li>升级oshi到最新版本6.1.2</li> - <li>升级fastjson到最新版1.2.80</li> - <li>升级pagehelper到最新版1.4.1</li> - <li>升级spring-boot到最新版本2.5.11</li> - <li>升级spring-boot-mybatis到最新版2.2.2</li> - <li>添加遗漏的分页参数合理化属性</li> - <li>修改npm即将过期的注册源地址</li> - <li>修复分页组件请求两次问题</li> - <li>修复通用文件下载接口跨域问题</li> - <li>修复Xss注解字段值为空时的异常问题</li> - <li>修复选项卡点击右键刷新丢失参数问题</li> - <li>修复表单清除元素位置未垂直居中问题</li> - <li>修复服务监控中运行参数显示条件错误</li> - <li>修复导入Excel时字典字段类型为Long转义为空问题</li> - <li>修复登录超时刷新页面跳转登录页面还提示重新登录问题</li> - <li>优化加载字典缓存数据</li> - <li>优化IP地址获取到多个的问题</li> - <li>优化任务队列满时任务拒绝策略</li> - <li>优化文件上传兼容Weblogic环境</li> - <li>优化定时任务默认保存到内存中执行</li> - <li>优化部门修改缩放后出现的错位问题</li> - <li>优化Excel格式化不同类型的日期对象</li> - <li>优化菜单表关键字导致的插件报错问题</li> - <li>优化Oracle用户头像列为空时不显示问题</li> - <li>优化页面若未匹配到字典标签则返回原字典值</li> - <li>优化修复登录失效后多次请求提示多次弹窗问题</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.8.1 - 2022-01-01"> - <ol> - <li>新增Vue3前端代码生成模板</li> - <li>新增图片预览组件</li> - <li>新增压缩插件实现打包Gzip</li> - <li>自定义xss校验注解实现</li> - <li>自定义文字复制剪贴指令</li> - <li>代码生成预览支持复制内容</li> - <li>路由支持单独配置菜单或角色权限</li> - <li>用户管理部门查询选择节点后分页参数初始</li> - <li>修复用户分配角色属性错误</li> - <li>修复打包后字体图标偶现的乱码问题</li> - <li>修复菜单管理重置表单出现的错误</li> - <li>修复版本差异导致的懒加载报错问题</li> - <li>修复Cron组件中周回显问题</li> - <li>修复定时任务多参数逗号分隔的问题</li> - <li>修复根据ID查询列表可能出现的主键溢出问题</li> - <li>修复tomcat配置参数已过期问题</li> - <li>升级clipboard到最新版本2.0.8</li> - <li>升级oshi到最新版本v5.8.6</li> - <li>升级fastjson到最新版1.2.79</li> - <li>升级spring-boot到最新版本2.5.8</li> - <li>升级log4j2到2.17.1,防止漏洞风险</li> - <li>优化下载解析blob异常提示</li> - <li>优化代码生成字典组重复问题</li> - <li>优化查询用户的角色组&岗位组代码</li> - <li>优化定时任务cron表达式小时设置24</li> - <li>优化用户导入提示溢出则显示滚动条</li> - <li>优化防重复提交标识组合为(key+url+header)</li> - <li>优化分页方法设置成通用方便灵活调用</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.8.0 - 2021-12-01"> - <ol> - <li>新增配套并同步的Vue3前端版本</li> - <li>新增通用方法简化模态/缓存/下载/权限/页签使用</li> - <li>优化导出数据/使用通用下载方法</li> - <li>Excel注解支持自定义数据处理器</li> - <li>Excel注解支持导入导出标题信息</li> - <li>Excel导入支持@Excels注解</li> - <li>新增组件data-dict,简化数据字典使用</li> - <li>新增Jaxb依赖,防止jdk8以上出现的兼容错误</li> - <li>生产环境使用路由懒加载提升页面响应速度</li> - <li>修复五级以上菜单出现的404问题</li> - <li>防重提交注解支持配置间隔时间/提示消息</li> - <li>日志注解新增是否保存响应参数</li> - <li>任务屏蔽违规字符&参数忽略双引号中的逗号</li> - <li>升级SpringBoot到最新版本2.5.6</li> - <li>升级pagehelper到最新版1.4.0</li> - <li>升级spring-boot-mybatis到最新版2.2.0</li> - <li>升级oshi到最新版本v5.8.2</li> - <li>升级druid到最新版1.2.8</li> - <li>升级velocity到最新版本2.3</li> - <li>升级fastjson到最新版1.2.78</li> - <li>升级axios到最新版本0.24.0</li> - <li>升级dart-sass到版本1.32.13</li> - <li>升级core-js到最新版本3.19.1</li> - <li>升级jsencrypt到最新版本3.2.1</li> - <li>升级js-cookie到最新版本3.0.1</li> - <li>升级file-saver到最新版本2.0.5</li> - <li>升级sass-loader到最新版本10.1.1</li> - <li>升级element-ui到最新版本2.15.6</li> - <li>新增sendGet无参请求方法</li> - <li>禁用el-tag组件的渐变动画</li> - <li>代码生成点击预览重置激活tab</li> - <li>AjaxResult重写put方法,以方便链式调用</li> - <li>优化登录/验证码请求headers不设置token</li> - <li>优化用户个人信息接口防止修改用户名</li> - <li>优化Cron表达式生成器关闭时销毁避免缓存</li> - <li>优化注册成功提示消息类型success</li> - <li>优化aop语法,使用spring自动注入注解</li> - <li>优化记录登录信息,移除不必要的修改</li> - <li>优化mybatis全局默认的执行器</li> - <li>优化Excel导入图片可能出现的异常</li> - <li>修复代码生成模板主子表删除缺少事务</li> - <li>修复日志记录可能出现的转换异常</li> - <li>修复代码生成复选框字典遗漏问题</li> - <li>修复关闭xss功能导致可重复读RepeatableFilter失效</li> - <li>修复字符串无法被反转义问题</li> - <li>修复后端主子表代码模板方法名生成错误问题</li> - <li>修复xss过滤后格式出现的异常</li> - <li>修复swagger没有指定dataTypeClass导致启动出现warn日志</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.7.0 - 2021-09-13"> - <ol> - <li>参数管理支持配置验证码开关</li> - <li>新增是否开启用户注册功能</li> - <li>定时任务支持在线生成cron表达式</li> - <li>菜单管理支持配置路由参数</li> - <li>支持自定义注解实现接口限流</li> - <li>Excel注解支持Image图片导入</li> - <li>自定义弹层溢出滚动样式</li> - <li>自定义可拖动弹窗宽度指令</li> - <li>自定义可拖动弹窗高度指令</li> - <li>修复任意账户越权问题</li> - <li>修改时检查用户数据权限范围</li> - <li>修复保存配置主题颜色失效问题</li> - <li>新增暗色菜单风格主题</li> - <li>菜单&部门新增展开/折叠功能</li> - <li>页签新增关闭左侧&添加图标</li> - <li>顶部菜单排除隐藏的默认路由</li> - <li>顶部菜单同步系统主题样式</li> - <li>跳转路由高亮相对应的菜单栏</li> - <li>代码生成主子表多选行数据</li> - <li>日期范围支持添加多组</li> - <li>升级element-ui到最新版本2.15.5</li> - <li>升级oshi到最新版本v5.8.0</li> - <li>升级commons.io到最新版本v2.11.0</li> - <li>定时任务屏蔽ldap远程调用</li> - <li>定时任务屏蔽http(s)远程调用</li> - <li>补充定时任务表字段注释</li> - <li>定时任务对检查异常进行事务回滚</li> - <li>启用父部门状态排除顶级节点</li> - <li>富文本新增上传文件大小限制</li> - <li>默认首页使用keep-alive缓存</li> - <li>修改代码生成字典回显样式</li> - <li>自定义分页合理化传入参数</li> - <li>修复字典组件值为整形不显示问题</li> - <li>修复定时任务日志执行状态显示</li> - <li>角色&菜单新增字段属性提示信息</li> - <li>修复角色分配用户页面参数类型错误提醒</li> - <li>优化布局设置动画特效</li> - <li>优化异常处理信息</li> - <li>优化错误token导致的解析异常</li> - <li>密码框新增显示切换密码图标</li> - <li>定时任务新增更多操作</li> - <li>更多操作按钮添加权限控制</li> - <li>导入用户样式优化</li> - <li>提取通用方法到基类控制器</li> - <li>优化使用权限工具获取用户信息</li> - <li>优化用户不能删除自己</li> - <li>优化XSS跨站脚本过滤</li> - <li>优化代码生成模板</li> - <li>验证码默认20s超时</li> - <li>BLOB下载时清除URL对象引用</li> - <li>代码生成导入表按创建时间排序</li> - <li>修复代码生成页面数据编辑保存之后总是跳转第一页的问题</li> - <li>修复带safari浏览器无法格式化utc日期格式yyyy-MM-dd'T'HH:mm:ss.SSS问题</li> - <li>多图上传组件移除多余的api地址&验证失败导致图片删除问题&无法删除相应图片修复</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.6.0 - 2021-07-12"> - <ol> - <li>角色管理新增分配用户功能</li> - <li>用户管理新增分配角色功能</li> - <li>日志列表支持排序操作</li> - <li>优化参数&字典缓存操作</li> - <li>系统布局配置支持动态标题开关</li> - <li>菜单路由配置支持内链访问</li> - <li>默认访问后端首页新增提示语</li> - <li>富文本默认上传返回url类型</li> - <li>新增自定义弹窗拖拽指令</li> - <li>全局注册常用通用组件</li> - <li>全局挂载字典标签组件</li> - <li>ImageUpload组件支持多图片上传</li> - <li>FileUpload组件支持多文件上传</li> - <li>文件上传组件添加数量限制属性</li> - <li>富文本编辑组件添加类型属性</li> - <li>富文本组件工具栏配置视频</li> - <li>封装通用iframe组件</li> - <li>限制超级管理员不允许操作</li> - <li>用户信息长度校验限制</li> - <li>分页组件新增pagerCount属性</li> - <li>添加bat脚本执行应用</li> - <li>升级oshi到最新版本v5.7.4</li> - <li>升级element-ui到最新版本2.15.2</li> - <li>升级pagehelper到最新版1.3.1</li> - <li>升级commons.io到最新版本v2.10.0</li> - <li>升级commons.fileupload到最新版本v1.4</li> - <li>升级swagger到最新版本v3.0.0</li> - <li>修复关闭confirm提示框控制台报错问题</li> - <li>修复存在的SQL注入漏洞问题</li> - <li>定时任务屏蔽rmi远程调用</li> - <li>修复用户搜索分页变量错误</li> - <li>修复导出角色数据范围翻译缺少仅本人</li> - <li>修复表单构建选择下拉选择控制台报错问题</li> - <li>优化图片工具类读取文件</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.5.0 - 2021-05-25"> - <ol> - <li>新增菜单导航显示风格TopNav(false为左侧导航菜单,true为顶部导航菜单)</li> - <li>布局设置支持保存&重置配置</li> - <li>修复树表数据显示不全&加载慢问题</li> - <li>新增IE浏览器版本过低提示页面</li> - <li>用户登录后记录最后登录IP&时间</li> - <li>页面导出按钮点击之后添加遮罩</li> - <li>富文本编辑器支持自定义上传地址</li> - <li>富文本编辑组件新增readOnly属性</li> - <li>页签TagsView新增关闭右侧功能</li> - <li>显隐列组件加载初始默认隐藏列</li> - <li>关闭头像上传窗口还原默认图片</li> - <li>个人信息添加手机&邮箱重复验证</li> - <li>代码生成模板导出按钮点击后添加遮罩</li> - <li>代码生成模板树表操作列添加新增按钮</li> - <li>代码生成模板修复主子表字段重名问题</li> - <li>升级fastjson到最新版1.2.76</li> - <li>升级druid到最新版本v1.2.6</li> - <li>升级mybatis到最新版3.5.6 阻止远程代码执行漏洞</li> - <li>升级oshi到最新版本v5.6.0</li> - <li>velocity剔除commons-collections版本,防止3.2.1版本的反序列化漏洞</li> - <li>数据监控页默认账户密码防止越权访问</li> - <li>修复firefox下表单构建拖拽会新打卡一个选项卡</li> - <li>修正后端导入表权限标识</li> - <li>修正前端操作日志&登录日志权限标识</li> - <li>设置Redis配置HashKey序列化</li> - <li>删除操作日志记录信息</li> - <li>上传媒体类型添加视频格式</li> - <li>修复请求形参未传值记录日志异常问题</li> - <li>优化xss校验json请求条件</li> - <li>树级结构更新子节点使用replaceFirst</li> - <li>优化ExcelUtil空值处理</li> - <li>日志记录过滤BindingResult对象,防止异常</li> - <li>修改主题后mini类型按钮无效问题</li> - <li>优化通用下载完成后删除节点</li> - <li>通用Controller添加响应返回消息</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.4.0 - 2021-02-22"> - <ol> - <li>代码生成模板支持主子表</li> - <li>表格右侧工具栏组件支持显隐列</li> - <li>图片组件添加预览&移除功能</li> - <li>Excel注解支持Image图片导出</li> - <li>操作按钮组调整为朴素按钮样式</li> - <li>代码生成支持文件上传组件</li> - <li>代码生成日期控件区分范围</li> - <li>代码生成数据库文本类型生成表单文本域</li> - <li>用户手机邮箱&菜单组件修改允许空字符串</li> - <li>升级SpringBoot到最新版本2.2.13 提升启动速度</li> - <li>升级druid到最新版本v1.2.4</li> - <li>升级fastjson到最新版1.2.75</li> - <li>升级element-ui到最新版本2.15.0</li> - <li>修复IE11浏览器报错问题</li> - <li>优化多级菜单之间切换无法缓存的问题</li> - <li>修复四级菜单无法显示问题</li> - <li>修正侧边栏静态路由丢失问题</li> - <li>修复角色管理-编辑角色-功能权限显示异常</li> - <li>配置文件新增redis数据库索引属性</li> - <li>权限工具类增加admin判断</li> - <li>角色非自定义权限范围清空选择值</li> - <li>修复导入数据为负浮点数时丢失精度问题</li> - <li>移除path-to-regexp正则匹配插件</li> - <li>修复生成树表代码异常</li> - <li>修改ip字段长度防止ipv6地址长度不够</li> - <li>防止get请求参数值为false或0等特殊值会导致无法正确的传参</li> - <li>登录后push添加catch防止出现检查错误</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.3.0 - 2020-12-14"> - <ol> - <li>新增缓存监控功能</li> - <li>支持主题风格配置</li> - <li>修复多级菜单之间切换无法缓存的问题</li> - <li>多级菜单自动配置组件</li> - <li>代码生成预览支持高亮显示</li> - <li>支持Get请求映射Params参数</li> - <li>删除用户和角色解绑关联</li> - <li>去除用户手机邮箱部门必填验证</li> - <li>Excel支持注解align对齐方式</li> - <li>Excel支持导入Boolean型数据</li> - <li>优化头像样式,鼠标移入悬停遮罩</li> - <li>代码生成预览提供滚动机制</li> - <li>代码生成删除多余的数字float类型</li> - <li>修正转换字符串的目标字符集属性</li> - <li>回显数据字典防止空值报错</li> - <li>日志记录增加过滤多文件场景</li> - <li>修改缓存Set方法可能导致嵌套的问题</li> - <li>移除前端一些多余的依赖</li> - <li>防止安全扫描YUI出现的风险提示</li> - <li>修改node-sass为dart-sass</li> - <li>升级SpringBoot到最新版本2.1.18</li> - <li>升级poi到最新版本4.1.2</li> - <li>升级oshi到最新版本v5.3.6</li> - <li>升级bitwalker到最新版本1.21</li> - <li>升级axios到最新版本0.21.0</li> - <li>升级element-ui到最新版本2.14.1</li> - <li>升级vue到最新版本2.6.12</li> - <li>升级vuex到最新版本3.6.0</li> - <li>升级vue-cli到版本4.5.9</li> - <li>升级vue-router到最新版本3.4.9</li> - <li>升级vue-cli到最新版本4.4.6</li> - <li>升级vue-cropper到最新版本0.5.5</li> - <li>升级clipboard到最新版本2.0.6</li> - <li>升级core-js到最新版本3.8.1</li> - <li>升级echarts到最新版本4.9.0</li> - <li>升级file-saver到最新版本2.0.4</li> - <li>升级fuse.js到最新版本6.4.3</li> - <li>升级js-beautify到最新版本1.13.0</li> - <li>升级js-cookie到最新版本2.2.1</li> - <li>升级path-to-regexp到最新版本6.2.0</li> - <li>升级quill到最新版本1.3.7</li> - <li>升级screenfull到最新版本5.0.2</li> - <li>升级sortablejs到最新版本1.10.2</li> - <li>升级vuedraggable到最新版本2.24.3</li> - <li>升级chalk到最新版本4.1.0</li> - <li>升级eslint到最新版本7.15.0</li> - <li>升级eslint-plugin-vue到最新版本7.2.0</li> - <li>升级lint-staged到最新版本10.5.3</li> - <li>升级runjs到最新版本4.4.2</li> - <li>升级sass-loader到最新版本10.1.0</li> - <li>升级script-ext-html-webpack-plugin到最新版本2.1.5</li> - <li>升级svg-sprite-loader到最新版本5.1.1</li> - <li>升级vue-template-compiler到最新版本2.6.12</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.2.1 - 2020-11-18"> - <ol> - <li>阻止任意文件下载漏洞</li> - <li>代码生成支持上传控件</li> - <li>新增图片上传组件</li> - <li>调整默认首页</li> - <li>升级druid到最新版本v1.2.2</li> - <li>mapperLocations配置支持分隔符</li> - <li>权限信息调整</li> - <li>调整sql默认时间</li> - <li>解决代码生成没有bit类型的问题</li> - <li>升级pagehelper到最新版1.3.0</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v3.2.0 - 2020-10-10"> - <ol> - <li>升级springboot版本到2.1.17 提升安全性</li> - <li>升级oshi到最新版本v5.2.5</li> - <li>升级druid到最新版本v1.2.1</li> - <li>升级jjwt到版本0.9.1</li> - <li>升级fastjson到最新版1.2.74</li> - <li>修改sass为node-sass,避免el-icon图标乱码</li> - <li>代码生成支持同步数据库</li> - <li>代码生成支持富文本控件</li> - <li>代码生成页面时不忽略remark属性</li> - <li>代码生成添加select必填选项</li> - <li>Excel导出类型NUMERIC支持精度浮点类型</li> - <li>Excel导出targetAttr优化获取值,防止get方法不规范</li> - <li>Excel注解支持自动统计数据总和</li> - <li>Excel注解支持设置BigDecimal精度&舍入规则</li> - <li>菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)</li> - <li>允许用户分配到部门父节点</li> - <li>菜单新增是否缓存keep-alive</li> - <li>表格操作列间距调整</li> - <li>限制系统内置参数不允许删除</li> - <li>富文本组件优化,支持自定义高度&图片冲突问题</li> - <li>富文本工具栏样式对齐</li> - <li>导入excel整形值校验优化</li> - <li>修复页签关闭所有时固定标签路由不刷新问题</li> - <li>表单构建布局型组件新增按钮</li> - <li>左侧菜单文字过长显示省略号</li> - <li>修正根节点为子部门时,树状结构显示问题</li> - <li>修正调用目标字符串最大长度</li> - <li>修正菜单提示信息错误</li> - <li>修正定时任务执行一次权限标识</li> - <li>修正数据库字符串类型nvarchar</li> - <li>优化递归子节点</li> - <li>优化数据权限判断</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - - <el-collapse-item title="v3.1.0 - 2020-08-13"> - <ol> - <li>表格工具栏右侧添加刷新&显隐查询组件</li> - <li>后端支持CORS跨域请求</li> - <li>代码生成支持选择上级菜单</li> - <li>代码生成支持自定义路径</li> - <li>代码生成支持复选框</li> - <li>Excel导出导入支持dictType字典类型</li> - <li>Excel支持分割字符串组内容</li> - <li>验证码类型支持(数组计算、字符验证)</li> - <li>升级vue-cli版本到4.4.4</li> - <li>修改 node-sass 为 dart-sass</li> - <li>表单类型为Integer/Long设置整形默认值</li> - <li>代码生成器默认mapper路径与默认mapperScan路径不一致</li> - <li>优化防重复提交拦截器</li> - <li>优化上级菜单不能选择自己</li> - <li>修复角色的权限分配后,未实时生效问题</li> - <li>修复在线用户日志记录类型</li> - <li>修复富文本空格和缩进保存后不生效问题</li> - <li>修复在线用户判断逻辑</li> - <li>唯一限制条件只返回单条数据</li> - <li>添加获取当前的环境配置方法</li> - <li>超时登录后页面跳转到首页</li> - <li>全局异常状态汉化拦截处理</li> - <li>HTML过滤器改为将html转义</li> - <li>检查字符支持小数点&降级改成异常提醒</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - - <el-collapse-item title="v3.0.0 - 2020-07-20"> - <ol> - <li>单应用调整为多模块项目</li> - <li>升级element-ui版本到2.13.2</li> - <li>删除babel,提高编译速度。</li> - <li>新增菜单默认主类目</li> - <li>编码文件名修改为uuid方式</li> - <li>定时任务cron表达式验证</li> - <li>角色权限修改时已有权限未自动勾选异常修复</li> - <li>防止切换权限用户后登录出现404</li> - <li>Excel支持sort导出排序</li> - <li>创建用户不允许选择超级管理员角色</li> - <li>修复代码生成导入表结构出现异常页面不提醒问题</li> - <li>修复代码生成点击多次表修改数据不变化的问题</li> - <li>修复头像上传成功二次打开无法改变裁剪框大小和位置问题</li> - <li>修复布局为small者mini用户表单显示错位问题</li> - <li>修复热部署导致的强换异常问题</li> - <li>修改用户管理复选框宽度,防止部分浏览器出现省略号</li> - <li>IpUtils工具,清除Xss特殊字符,防止Xff注入攻击</li> - <li>生成domain 如果是浮点型 统一用BigDecimal</li> - <li>定时任务调整label-width,防止部署出现错位</li> - <li>调整表头固定列默认样式</li> - <li>代码生成模板调整,字段为String并且必填则加空串条件</li> - <li>代码生成字典Integer/Long使用parseInt</li> - <li> - 修复dict_sort不可update为0的问题&查询返回增加dict_sort升序排序 - </li> - <li>修正岗位导出权限注解</li> - <li>禁止加密密文返回前端</li> - <li>修复代码生成页面中的查询条件创建时间未生效的问题</li> - <li>修复首页搜索菜单外链无法点击跳转问题</li> - <li>修复菜单管理选择图标,backspace删除时不过滤数据</li> - <li>用户管理部门分支节点不可检查&显示计数</li> - <li>数据范围过滤属性调整</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - - <el-collapse-item title="v2.3.0 - 2020-06-01"> - <ol> - <li>升级fastjson到最新版1.2.70 修复高危安全漏洞</li> - <li>dev启动默认打开浏览器</li> - <li>vue-cli使用默认source-map</li> - <li>slidebar eslint报错优化</li> - <li>当tags-view滚动关闭右键菜单</li> - <li>字典管理添加缓存读取</li> - <li>参数管理支持缓存操作</li> - <li>支持一级菜单(和主页同级)在main区域显示</li> - <li>限制外链地址必须以http(s)开头</li> - <li>tagview & sidebar 主题颜色与element ui(全局)同步</li> - <li>修改数据源类型优先级,先根据方法,再根据类</li> - <li>支持是否需要设置token属性,自定义返回码消息。</li> - <li>swagger请求前缀加入配置。</li> - <li>登录地点设置内容过长则隐藏显示</li> - <li>修复定时任务执行一次按钮后不提示消息问题</li> - <li>修改上级部门(选择项排除本身和下级)</li> - <li>通用http发送方法增加参数 contentType 编码类型</li> - <li>更换IP地址查询接口</li> - <li>修复页签变量undefined</li> - <li>添加校验部门包含未停用的子部门</li> - <li>修改定时任务详情下次执行时间日期显示错误</li> - <li>角色管理查询设置默认排序字段</li> - <li>swagger添加enable参数控制是否启用</li> - <li>只对json类型请求构建可重复读取inputStream的request</li> - <li>修改代码生成字典字段int类型没有自动选中问题</li> - <li>vuex用户名取值修正</li> - <li>表格树模板去掉多余的)</li> - <li>代码生成序号修正</li> - <li>全屏情况下不调整上外边距</li> - <li>代码生成Date字段添加默认格式</li> - <li>用户管理角色选择权限控制</li> - <li>修复路由懒加载报错问题</li> - <li>模板sql.vm添加菜单状态</li> - <li>设置用户名称不能修改</li> - <li>dialog添加append-to-body属性,防止ie遮罩</li> - <li>菜单区分状态和显示隐藏功能</li> - <li>升级fastjson到最新版1.2.68 修复安全加固</li> - <li>修复代码生成如果选择字典类型缺失逗号问题</li> - <li>登录请求params更换为data,防止暴露url</li> - <li>日志返回时间格式处理</li> - <li>添加handle控制允许拖动的元素</li> - <li>布局设置点击扩大范围</li> - <li>代码生成列属性排序查询</li> - <li>代码生成列支持拖动排序</li> - <li>修复时间格式不支持ios问题</li> - <li>表单构建添加父级class,防止冲突</li> - <li>定时任务并发属性修正</li> - <li>角色禁用&菜单隐藏不查询权限</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> + </el-form-item> + </el-form> - <el-collapse-item title="v2.2.0 - 2020-03-18"> - <ol> - <li>系统监控新增定时任务功能</li> - <li>添加一个打包Web工程bat</li> - <li>修复页签鼠标滚轮按下的时候,可以关闭不可关闭的tag</li> - <li>修复点击退出登录有时会无提示问题</li> - <li>修复防重复提交注解无效问题</li> - <li>修复通知公告批量删除异常问题</li> - <li>添加菜单时路由地址必填限制</li> - <li>代码生成字段描述可编辑</li> - <li>修复用户修改个人信息导致缓存不过期问题</li> - <li>个人信息创建时间获取正确属性值</li> - <li>操作日志详细显示正确类型</li> - <li>导入表单击行数据时选中对应的复选框</li> - <li>批量替换表前缀逻辑调整</li> - <li>固定重定向路径表达式</li> - <li>升级element-ui版本到2.13.0</li> - <li>操作日志排序调整</li> - <li>修复charts切换侧边栏或者缩放窗口显示bug</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> + <el-table v-loading="loading" border :data="detailsList"> + <!--<el-table-column label="主键" align="center" prop="id" />--> + <el-table-column label="序号" align="center"> + <template slot-scope="scope"> + <span>{{ Number(scope.$index) + 1 }}</span> + </template> + </el-table-column> + <el-table-column + label="隐患内容" + align="center" + prop="hiddenDangerDesc" + /> + <el-table-column + label="单位名称" + align="center" + prop="enterpriseName" + /> + <el-table-column + label="隐患类别" + align="center" + prop="hiddenDangerType" + /> + <el-table-column + label="隐患级别" + align="center" + prop="hiddenDangerGrade" + /> + <el-table-column label="公文编号" align="center" prop="docNumber" /> + <el-table-column label="排查出隐患日期" align="center" prop="checkTime"> + <template slot-scope="scope"> + <span>{{ + parseTime(scope.row.checkTime, "{y}-{m}-{d} {h}:{i}:{s}") + }}</span> + </template> + </el-table-column> + <el-table-column label="整改期限" align="center" prop="rectifyTermTime"> + <template slot-scope="scope"> + <span>{{ + parseTime(scope.row.rectifyTermTime, "{y}-{m}-{d} {h}:{i}:{s}") + }}</span> + </template> + </el-table-column> + <el-table-column + label="整改责任人" + align="center" + prop="principalName" + /> + <el-table-column label="整改情况" align="center" prop="status" /> + </el-table> - <el-collapse-item title="v2.1.0 - 2020-02-24"> - <ol> - <li>新增表单构建</li> - <li>代码生成支持树表结构</li> - <li>新增用户导入</li> - <li>修复动态加载路由页面刷新问题</li> - <li>修复地址开关无效问题</li> - <li>汉化错误提示页面</li> - <li>代码生成已知问题修改</li> - <li>修复多数据源下配置关闭出现异常处理</li> - <li>添加HTML过滤器,用于去除XSS漏洞隐患</li> - <li>修复上传头像控制台出现异常</li> - <li>修改用户管理分页不正确的问题</li> - <li>修复验证码记录提示错误</li> - <li>修复request.js缺少Message引用</li> - <li>修复表格时间为空出现的异常</li> - <li>添加Jackson日期反序列化时区配置</li> - <li>调整根据用户权限加载菜单数据树形结构</li> - <li>调整成功登录不恢复按钮,防止多次点击</li> - <li>修改用户个人资料同步缓存信息</li> - <li>修复页面同时出现el-upload和Editor不显示处理</li> - <li>修复在角色管理页修改菜单权限偶尔未选中问题</li> - <li>配置文件新增redis密码属性</li> - <li>设置mybatis全局的配置文件</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - - <el-collapse-item title="v2.0.0 - 2019-12-02"> - <ol> - <li>新增代码生成</li> - <li>新增@RepeatSubmit注解,防止重复提交</li> - <li>新增菜单主目录添加/删除操作</li> - <li>日志记录过滤特殊对象,防止转换异常</li> - <li>修改代码生成路由脚本错误</li> - <li>用户上传头像实时同步缓存,无需重新登录</li> - <li>调整切换页签后不重新加载数据</li> - <li>添加jsencrypt实现参数的前端加密</li> - <li>系统退出删除用户缓存记录</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v1.1.0 - 2019-11-11"> - <ol> - <li>新增在线用户管理</li> - <li>新增按钮组功能实现(批量删除、导出、清空)</li> - <li>新增查询条件重置按钮</li> - <li>新增Swagger全局Token配置</li> - <li>新增后端参数校验</li> - <li>修复字典管理页面的日期查询异常</li> - <li>修改时间函数命名防止冲突</li> - <li>去除菜单上级校验,默认为顶级</li> - <li>修复用户密码无法修改问题</li> - <li>修复菜单类型为按钮时不显示权限标识</li> - <li>其他细节优化</li> - </ol> - </el-collapse-item> - <el-collapse-item title="v1.0.0 - 2019-10-08"> - <ol> - <li>若依前后端分离系统正式发布</li> - </ol> - </el-collapse-item> - </el-collapse> - </el-card> - </el-col> - <el-col :xs="24" :sm="24" :md="12" :lg="8"> - <el-card class="update-log"> - <div slot="header" class="clearfix"> - <span>捐赠支持</span> - </div> - <div class="body"> - <img - src="@/assets/images/pay.png" - alt="donate" - width="100%" - /> - <span style="display: inline-block; height: 30px; line-height: 30px" - >你可以请作者喝杯咖啡表示鼓励</span - > - </div> - </el-card> - </el-col> - </el-row> + <pagination + v-show="total > 0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + <div slot="footer" class="dialog-footer"> + <el-button @click="cancel">取 消</el-button> + </div> + </el-dialog> </div> </template> <script> +import { + getEhsIndexStatistics, + getSuperviseAndHandle, + getEhsIndexStatisticsList, + detailslist, +} from "@/api/ehs/IndexStatistics"; +import { parseTime } from "@/utils/ruoyi"; +import dict from "@/utils/dict"; export default { name: "Index", + dicts: ["hidden_danger_grade", "hidden_danger_status"], data() { return { - // 版本号 - version: "3.8.6" + showSearch: true, + // 遮罩层 + loading: true, + // 总条数 + total: 0, + // 查询参数 + queryParams: { + pageNum: 1, + pageSize: 10, + params: { + qxStartTime: null, + qxEndTime: null, + pcStartTime: null, + pcEndTime: null, + wcStartTime: null, + wcEndTime: null, + }, + }, + open: false, + yearData: { + unitNum: "", + hiddenDangerNum: "", + haveRectifiedNum: "", + notRectifiedNum: "", + exceedNotRectifiedNum: "", + rectifyMoneySum: "", + rectifyRate: "", + }, + collectData: { + hiddenDangerNum: "", + haveRectifiedNum: "", + notRectifiedNum: "", + exceedNotRectifiedNum: "", + rectifyMoneySum: "", + rectifyRate: "", + }, + hiddenList: [], + detailsList: [], + // 日期范围 + dateRange: [], }; }, + created() { + this.getIndexDetails(); + }, methods: { - goTarget(href) { - window.open(href, "_blank"); - } - } + dict, + parseTime, + /** 获取拟稿部门下拉列表 */ + getIndexDetails() { + getEhsIndexStatistics().then((res) => { + this.yearData.unitNum = res.data.unitNum; + this.yearData.hiddenDangerNum = res.data.hiddenDangerNum; + this.yearData.haveRectifiedNum = res.data.haveRectifiedNum; + this.yearData.notRectifiedNum = res.data.notRectifiedNum; + this.yearData.exceedNotRectifiedNum = res.data.exceedNotRectifiedNum; + this.yearData.rectifyMoneySum = res.data.rectifyMoneySum; + this.yearData.rectifyRate = res.data.rectifyRate; + }); + getSuperviseAndHandle().then((res) => { + this.collectData.hiddenDangerNum = res.data.hiddenDangerNum; + this.collectData.haveRectifiedNum = res.data.haveRectifiedNum; + this.collectData.notRectifiedNum = res.data.notRectifiedNum; + this.collectData.exceedNotRectifiedNum = res.data.exceedNotRectifiedNum; + this.collectData.rectifyRate = res.data.rectifyRate; + }); + getEhsIndexStatisticsList().then((res) => { + console.log(res); + this.hiddenList = res.data; + }); + }, + /** 搜索按钮操作 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + haddenClick() { + this.open = true; + this.handleQuery(); + }, + getList() { + this.loading = true; + console.log(this.queryParams); + detailslist(this.queryParams).then((response) => { + this.detailsList = response.rows; + this.total = response.total; + this.loading = false; + }); + }, + /** 重置按钮操作 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 取消按钮 + cancel() { + this.open = false; + }, + }, }; </script> @@ -1020,4 +476,3 @@ export default { } } </style> - diff --git a/ruoyi-ui/src/views/tool/swagger/index.vue b/ruoyi-ui/src/views/tool/swagger/index.vue index b8becc6..7ce1656 100644 --- a/ruoyi-ui/src/views/tool/swagger/index.vue +++ b/ruoyi-ui/src/views/tool/swagger/index.vue @@ -8,7 +8,7 @@ export default { components: { iFrame }, data() { return { - url: process.env.VUE_APP_BASE_API + "/swagger-ui/index.html" + url: process.env.VUE_APP_BASE_API + "/swagger-ui/index.html", }; }, };