modules/mainPart/src/main/java/com/zt/life/modules/project/controller/EnvironAnalysisController.java
New file @@ -0,0 +1,96 @@ package com.zt.life.modules.project.controller; import com.zt.common.annotation.LogOperation; import com.zt.common.constant.Constant; import com.zt.common.annotation.QueryParam; import com.zt.common.db.query.QueryFilter; import com.zt.common.servlet.Result; import com.zt.common.servlet.PageResult; import com.zt.common.validator.AssertUtils; import com.zt.common.validator.ValidatorUtils; import com.zt.common.validator.group.AddGroup; import com.zt.common.validator.group.DefaultGroup; import com.zt.common.validator.group.UpdateGroup; import com.zt.life.modules.project.model.EnvironAnalysis; import com.zt.life.modules.project.service.EnvironAnalysisService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * environ_analysis * * @author zt generator * @since 1.0.0 2023-11-17 */ @RestController @RequestMapping("/project/EnvironAnalysis/") @Api(tags="environ_analysis") public class EnvironAnalysisController { @Autowired private EnvironAnalysisService environAnalysisService; @GetMapping("page") @ApiOperation("分页") @ApiImplicitParams({ @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT), @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT), @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING), @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING), }) public PageResult<EnvironAnalysis> page(@ApiIgnore @QueryParam QueryFilter queryFilter){ return PageResult.ok(environAnalysisService.page(queryFilter)); } @GetMapping("{id}") @ApiOperation("信息") public Result<EnvironAnalysis> get(@PathVariable("id") Long id){ EnvironAnalysis data = environAnalysisService.get(id); return Result.ok(data); } @PostMapping @ApiOperation("新增") @LogOperation("新增") public Result insert(@RequestBody EnvironAnalysis environAnalysis){ //效验数据 ValidatorUtils.validateEntity(environAnalysis, AddGroup.class, DefaultGroup.class); environAnalysisService.insert(environAnalysis); return Result.ok(); } @PutMapping @ApiOperation("修改") @LogOperation("修改") public Result update(@RequestBody EnvironAnalysis environAnalysis){ //效验数据 ValidatorUtils.validateEntity(environAnalysis, UpdateGroup.class, DefaultGroup.class); environAnalysisService.update(environAnalysis); return Result.ok(); } @DeleteMapping @ApiOperation("删除") @LogOperation("删除") public Result delete(@RequestBody Long[] ids){ //效验数据 AssertUtils.isArrayEmpty(ids, "id"); environAnalysisService.delete(ids); return Result.ok(); } } modules/mainPart/src/main/java/com/zt/life/modules/project/controller/EnvironController.java
@@ -12,8 +12,12 @@ import com.zt.common.validator.group.AddGroup; import com.zt.common.validator.group.DefaultGroup; import com.zt.common.validator.group.UpdateGroup; import com.zt.life.modules.project.dto.SoftwareTestOrderDto; import com.zt.life.modules.project.model.Environ; import com.zt.life.modules.project.service.EnvironService; import com.zt.life.sys.dto.OssDto; import com.zt.life.sys.service.SysOssConfigService; import com.zt.modules.coderule.service.SysCodeRuleService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -23,7 +27,9 @@ import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.List; import java.util.Map; /** @@ -39,6 +45,13 @@ @Autowired private EnvironService environService; @Autowired private SysOssConfigService sysOssConfigService; @Autowired private SysCodeRuleService sysCodeRuleService; @GetMapping("page") @ApiOperation("分页") @ApiImplicitParams({ @@ -52,25 +65,34 @@ return PageResult.ok(environService.page(queryFilter)); } @GetMapping("{id}") @GetMapping("getDto") @ApiOperation("信息") public Result<Environ> get(@PathVariable("id") Long id){ Environ data = environService.get(id); public Result<SoftwareTestOrderDto> getDto(Long projectId, Long environId) { SoftwareTestOrderDto data = environService.getDto(environId, projectId); if (projectId != null) { OssDto ossDto = sysOssConfigService.getOssByBusiType(projectId, "environ"); if (ossDto != null) { data.setFiles(ossDto); } } return Result.ok(data); } @PostMapping @ApiOperation("新增") @LogOperation("新增") public Result insert(@RequestBody Environ environ){ public Result insert(@RequestBody SoftwareTestOrderDto softwareTestOrderDto) { //效验数据 ValidatorUtils.validateEntity(environ, AddGroup.class, DefaultGroup.class); environService.insert(environ); ValidatorUtils.validateEntity(softwareTestOrderDto, AddGroup.class, DefaultGroup.class); Map<String,String> map = new HashMap<>(); map.put("funCode","environ"); softwareTestOrderDto.getEnviron().setCode(sysCodeRuleService.getNewCode(map)); Boolean result = environService.save(softwareTestOrderDto); return Result.ok(); } @PutMapping @ApiOperation("修改") @LogOperation("修改") modules/mainPart/src/main/java/com/zt/life/modules/project/controller/EnvironHardwareResourcesController.java
New file @@ -0,0 +1,96 @@ package com.zt.life.modules.project.controller; import com.zt.common.annotation.LogOperation; import com.zt.common.constant.Constant; import com.zt.common.annotation.QueryParam; import com.zt.common.db.query.QueryFilter; import com.zt.common.servlet.Result; import com.zt.common.servlet.PageResult; import com.zt.common.validator.AssertUtils; import com.zt.common.validator.ValidatorUtils; import com.zt.common.validator.group.AddGroup; import com.zt.common.validator.group.DefaultGroup; import com.zt.common.validator.group.UpdateGroup; import com.zt.life.modules.project.model.EnvironHardwareResources; import com.zt.life.modules.project.service.EnvironHardwareResourcesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * environ_hardware_resources * * @author zt generator * @since 1.0.0 2023-11-17 */ @RestController @RequestMapping("/project/EnvironHardwareResources/") @Api(tags="environ_hardware_resources") public class EnvironHardwareResourcesController { @Autowired private EnvironHardwareResourcesService environHardwareResourcesService; @GetMapping("page") @ApiOperation("分页") @ApiImplicitParams({ @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT), @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT), @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING), @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING), }) public PageResult<EnvironHardwareResources> page(@ApiIgnore @QueryParam QueryFilter queryFilter){ return PageResult.ok(environHardwareResourcesService.page(queryFilter)); } @GetMapping("{id}") @ApiOperation("信息") public Result<EnvironHardwareResources> get(@PathVariable("id") Long id){ EnvironHardwareResources data = environHardwareResourcesService.get(id); return Result.ok(data); } @PostMapping @ApiOperation("新增") @LogOperation("新增") public Result insert(@RequestBody EnvironHardwareResources environHardwareResources){ //效验数据 ValidatorUtils.validateEntity(environHardwareResources, AddGroup.class, DefaultGroup.class); environHardwareResourcesService.insert(environHardwareResources); return Result.ok(); } @PutMapping @ApiOperation("修改") @LogOperation("修改") public Result update(@RequestBody EnvironHardwareResources environHardwareResources){ //效验数据 ValidatorUtils.validateEntity(environHardwareResources, UpdateGroup.class, DefaultGroup.class); environHardwareResourcesService.update(environHardwareResources); return Result.ok(); } @DeleteMapping @ApiOperation("删除") @LogOperation("删除") public Result delete(@RequestBody Long[] ids){ //效验数据 AssertUtils.isArrayEmpty(ids, "id"); environHardwareResourcesService.delete(ids); return Result.ok(); } } modules/mainPart/src/main/java/com/zt/life/modules/project/controller/EnvironSoftwareResourcesController.java
New file @@ -0,0 +1,96 @@ package com.zt.life.modules.project.controller; import com.zt.common.annotation.LogOperation; import com.zt.common.constant.Constant; import com.zt.common.annotation.QueryParam; import com.zt.common.db.query.QueryFilter; import com.zt.common.servlet.Result; import com.zt.common.servlet.PageResult; import com.zt.common.validator.AssertUtils; import com.zt.common.validator.ValidatorUtils; import com.zt.common.validator.group.AddGroup; import com.zt.common.validator.group.DefaultGroup; import com.zt.common.validator.group.UpdateGroup; import com.zt.life.modules.project.model.EnvironSoftwareResources; import com.zt.life.modules.project.service.EnvironSoftwareResourcesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * environ_software_resources * * @author zt generator * @since 1.0.0 2023-11-17 */ @RestController @RequestMapping("/project/EnvironSoftwareResources/") @Api(tags="environ_software_resources") public class EnvironSoftwareResourcesController { @Autowired private EnvironSoftwareResourcesService environSoftwareResourcesService; @GetMapping("page") @ApiOperation("分页") @ApiImplicitParams({ @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT), @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT), @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING), @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING), }) public PageResult<EnvironSoftwareResources> page(@ApiIgnore @QueryParam QueryFilter queryFilter){ return PageResult.ok(environSoftwareResourcesService.page(queryFilter)); } @GetMapping("{id}") @ApiOperation("信息") public Result<EnvironSoftwareResources> get(@PathVariable("id") Long id){ EnvironSoftwareResources data = environSoftwareResourcesService.get(id); return Result.ok(data); } @PostMapping @ApiOperation("新增") @LogOperation("新增") public Result insert(@RequestBody EnvironSoftwareResources environSoftwareResources){ //效验数据 ValidatorUtils.validateEntity(environSoftwareResources, AddGroup.class, DefaultGroup.class); environSoftwareResourcesService.insert(environSoftwareResources); return Result.ok(); } @PutMapping @ApiOperation("修改") @LogOperation("修改") public Result update(@RequestBody EnvironSoftwareResources environSoftwareResources){ //效验数据 ValidatorUtils.validateEntity(environSoftwareResources, UpdateGroup.class, DefaultGroup.class); environSoftwareResourcesService.update(environSoftwareResources); return Result.ok(); } @DeleteMapping @ApiOperation("删除") @LogOperation("删除") public Result delete(@RequestBody Long[] ids){ //效验数据 AssertUtils.isArrayEmpty(ids, "id"); environSoftwareResourcesService.delete(ids); return Result.ok(); } } modules/mainPart/src/main/java/com/zt/life/modules/project/dao/EnvironAnalysisDao.java
New file @@ -0,0 +1,23 @@ package com.zt.life.modules.project.dao; import com.zt.common.dao.BaseDao; import com.zt.life.modules.project.model.EnvironAnalysis; import org.apache.ibatis.annotations.Mapper; import java.util.List; import java.util.Map; /** * environ_analysis * * @author zt generator * @since 1.0.0 2023-11-17 */ @Mapper public interface EnvironAnalysisDao extends BaseDao<EnvironAnalysis> { List<EnvironAnalysis> getList(Map<String, Object> params); } modules/mainPart/src/main/java/com/zt/life/modules/project/dao/EnvironHardwareResourcesDao.java
New file @@ -0,0 +1,23 @@ package com.zt.life.modules.project.dao; import com.zt.common.dao.BaseDao; import com.zt.life.modules.project.model.EnvironHardwareResources; import org.apache.ibatis.annotations.Mapper; import java.util.List; import java.util.Map; /** * environ_hardware_resources * * @author zt generator * @since 1.0.0 2023-11-17 */ @Mapper public interface EnvironHardwareResourcesDao extends BaseDao<EnvironHardwareResources> { List<EnvironHardwareResources> getList(Map<String, Object> params); } modules/mainPart/src/main/java/com/zt/life/modules/project/dao/EnvironSoftwareResourcesDao.java
New file @@ -0,0 +1,23 @@ package com.zt.life.modules.project.dao; import com.zt.common.dao.BaseDao; import com.zt.life.modules.project.model.EnvironSoftwareResources; import org.apache.ibatis.annotations.Mapper; import java.util.List; import java.util.Map; /** * environ_software_resources * * @author zt generator * @since 1.0.0 2023-11-17 */ @Mapper public interface EnvironSoftwareResourcesDao extends BaseDao<EnvironSoftwareResources> { List<EnvironSoftwareResources> getList(Map<String, Object> params); } modules/mainPart/src/main/java/com/zt/life/modules/project/dto/SoftwareTestOrderDto.java
@@ -1,9 +1,6 @@ package com.zt.life.modules.project.dto; import com.zt.life.modules.project.model.Project; import com.zt.life.modules.project.model.SoftwareTestOrder; import com.zt.life.modules.project.model.SoftwareTestOrderDeliverable; import com.zt.life.modules.project.model.SoftwareTestOrderMeasured; import com.zt.life.modules.project.model.*; import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo; import com.zt.life.sys.dto.OssDto; import io.swagger.annotations.ApiModelProperty; @@ -16,11 +13,14 @@ public class SoftwareTestOrderDto { private Long id; private Long projectId; private Long orderId; @ApiModelProperty(value = "测试委托单记录") private SoftwareTestOrder softwareTestOrder; @ApiModelProperty(value = "测试项目基本信息") private Project project; @ApiModelProperty(value = "测试环境建立确认") private Environ environ; @ApiModelProperty(value = "测试机构信息") private TestAgencyInfo TestAgencyInfo; @ApiModelProperty(value = "测试委托单附件") @@ -30,5 +30,12 @@ private List<SoftwareTestOrderMeasured> measuredList = new ArrayList<>(); @ApiModelProperty(value = "交付件") private List<SoftwareTestOrderDeliverable> deliverableList = new ArrayList<>(); @ApiModelProperty(value = "软件资源") private List<EnvironSoftwareResources> softwareResourcesList = new ArrayList<>(); @ApiModelProperty(value = "硬件资源") private List<EnvironHardwareResources> hardwareResourcesList = new ArrayList<>(); @ApiModelProperty(value = "环境差异性分析") private List<EnvironAnalysis> environAnalysisList = new ArrayList<>(); } modules/mainPart/src/main/java/com/zt/life/modules/project/model/Environ.java
@@ -1,5 +1,6 @@ package com.zt.life.modules.project.model; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.zt.common.entity.BusiEntity; @@ -24,6 +25,9 @@ @ApiModelProperty(value = "编号") private String code; @ApiModelProperty(value = "项目ID") private Long projectId; @ApiModelProperty(value = "硬软件资源") private String hardSoftwareRes; @@ -60,4 +64,20 @@ @ApiModelProperty(value = "病毒库版本") private String virusDatabaseVersion; @TableField(exist = false) @ApiModelProperty(value = "专业实验室名称") private String agencyName; @TableField(exist = false) @ApiModelProperty(value = "测试地点") private String site; @TableField(exist = false) @ApiModelProperty(value = "被测软件") private String softwareName; @TableField(exist = false) @ApiModelProperty(value = "版本") private String softwareIdentity; } modules/mainPart/src/main/java/com/zt/life/modules/project/model/EnvironAnalysis.java
New file @@ -0,0 +1,45 @@ package com.zt.life.modules.project.model; import com.baomidou.mybatisplus.annotation.TableName; import com.zt.common.entity.BusiEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; /** * environ_analysis * * @author zt generator * @since 1.0.0 2023-11-17 */ @Data @EqualsAndHashCode(callSuper=false) @TableName("environ_analysis") public class EnvironAnalysis extends BusiEntity { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "环境测试单ID") private Long environId; @ApiModelProperty(value = "序号") private Integer no; @ApiModelProperty(value = "真实环境") private String realEnviron; @ApiModelProperty(value = "测试环境") private String testEnviron; @ApiModelProperty(value = "环境差异") private String environDifference; @ApiModelProperty(value = "对测试结果影响") private String resultImpact; @ApiModelProperty(value = "措施") private String measure; } modules/mainPart/src/main/java/com/zt/life/modules/project/model/EnvironHardwareResources.java
New file @@ -0,0 +1,45 @@ package com.zt.life.modules.project.model; import com.baomidou.mybatisplus.annotation.TableName; import com.zt.common.entity.BusiEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; /** * environ_hardware_resources * * @author zt generator * @since 1.0.0 2023-11-17 */ @Data @EqualsAndHashCode(callSuper=false) @TableName("environ_hardware_resources") public class EnvironHardwareResources extends BusiEntity { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "环境测试单ID") private Long environId; @ApiModelProperty(value = "序号") private Integer no; @ApiModelProperty(value = "硬件和固体项名称") private String itemName; @ApiModelProperty(value = "用途") private String usage; @ApiModelProperty(value = "状态") private String state; @ApiModelProperty(value = "数量") private Integer number; @ApiModelProperty(value = "提供单位") private String provideUnit; } modules/mainPart/src/main/java/com/zt/life/modules/project/model/EnvironSoftwareResources.java
New file @@ -0,0 +1,42 @@ package com.zt.life.modules.project.model; import com.baomidou.mybatisplus.annotation.TableName; import com.zt.common.entity.BusiEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; /** * environ_software_resources * * @author zt generator * @since 1.0.0 2023-11-17 */ @Data @EqualsAndHashCode(callSuper=false) @TableName("environ_software_resources") public class EnvironSoftwareResources extends BusiEntity { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "环境测试单ID") private Long environId; @ApiModelProperty(value = "序号") private Integer no; @ApiModelProperty(value = "软件项名称") private String itemName; @ApiModelProperty(value = "版本") private String version; @ApiModelProperty(value = "用途") private String usage; @ApiModelProperty(value = "提供单位") private String provideUnit; } modules/mainPart/src/main/java/com/zt/life/modules/project/service/EnvironAnalysisService.java
New file @@ -0,0 +1,48 @@ package com.zt.life.modules.project.service; import com.zt.common.service.BaseService; import com.zt.life.modules.project.dao.EnvironAnalysisDao; import com.zt.life.modules.project.model.EnvironAnalysis; import com.zt.life.modules.project.model.EnvironHardwareResources; import org.springframework.stereotype.Service; import com.zt.common.db.query.QueryFilter; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; /** * environ_analysis * * @author zt generator * @since 1.0.0 2023-11-17 */ @Service public class EnvironAnalysisService extends BaseService<EnvironAnalysisDao, EnvironAnalysis> { /** * 分页查询 * * @param queryFilter * @return */ public List<EnvironAnalysis> page(QueryFilter queryFilter) { return baseDao.getList(queryFilter.getQueryParams()); } /** * 删除 * * @param ids */ public void delete(Long[] ids) { super.deleteLogic(ids); } public List<EnvironAnalysis> getList(Long environId) { Map<String, Object> params = new HashMap<>(); params.put("environId",environId); return baseDao.getList(params); } } modules/mainPart/src/main/java/com/zt/life/modules/project/service/EnvironHardwareResourcesService.java
New file @@ -0,0 +1,48 @@ package com.zt.life.modules.project.service; import com.zt.common.service.BaseService; import com.zt.life.modules.project.dao.EnvironHardwareResourcesDao; import com.zt.life.modules.project.model.EnvironHardwareResources; import com.zt.life.modules.project.model.EnvironSoftwareResources; import org.springframework.stereotype.Service; import com.zt.common.db.query.QueryFilter; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; /** * environ_hardware_resources * * @author zt generator * @since 1.0.0 2023-11-17 */ @Service public class EnvironHardwareResourcesService extends BaseService<EnvironHardwareResourcesDao, EnvironHardwareResources> { /** * 分页查询 * * @param queryFilter * @return */ public List<EnvironHardwareResources> page(QueryFilter queryFilter) { return baseDao.getList(queryFilter.getQueryParams()); } /** * 删除 * * @param ids */ public void delete(Long[] ids) { super.deleteLogic(ids); } public List<EnvironHardwareResources> getList(Long environId) { Map<String, Object> params = new HashMap<>(); params.put("environId",environId); return baseDao.getList(params); } } modules/mainPart/src/main/java/com/zt/life/modules/project/service/EnvironService.java
@@ -2,11 +2,20 @@ import com.zt.common.service.BaseService; import com.zt.life.modules.project.dao.EnvironDao; import com.zt.life.modules.project.model.Environ; import com.zt.life.modules.project.dto.SoftwareTestOrderDto; import com.zt.life.modules.project.model.*; import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo; import com.zt.life.modules.sysBaseInfo.service.TestAgencyInfoService; import com.zt.life.sys.service.SysOssConfigService; import com.zt.modules.coderule.service.SysCodeRuleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zt.common.db.query.QueryFilter; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; /** @@ -17,6 +26,64 @@ */ @Service public class EnvironService extends BaseService<EnvironDao, Environ> { @Autowired private EnvironSoftwareResourcesService environSoftwareResourcesService; @Autowired private EnvironHardwareResourcesService environHardwareResourcesService; @Autowired private SoftwareTestOrderService softwareTestOrderService; @Autowired private SysCodeRuleService sysCodeRuleService; @Autowired private SysOssConfigService sysOssConfigService; @Autowired private EnvironAnalysisService environAnalysisService; @Autowired private ProjectService projectService; @Autowired private TestAgencyInfoService testAgencyInfoService; public SoftwareTestOrderDto getDto(Long projectId, Long environId) { SoftwareTestOrderDto data = new SoftwareTestOrderDto(); if (environId != null) { data.setId(environId); Environ environ = this.get(environId); data.setEnviron(environ); projectId = environ.getProjectId(); List<EnvironSoftwareResources> softwareResourcesList = environSoftwareResourcesService.getList(environId); data.setSoftwareResourcesList(softwareResourcesList); List<EnvironHardwareResources> hardwareResourcesList = environHardwareResourcesService.getList(environId); data.setHardwareResourcesList(hardwareResourcesList); List<EnvironAnalysis> environAnalysesList = environAnalysisService.getList(environId); data.setEnvironAnalysisList(environAnalysesList); } else { Project project = projectService.get(projectId); data.getEnviron().setSoftwareName(project.getSoftwareName()); data.getEnviron().setSoftwareIdentity(project.getSoftwareIdentity()); } if (data.getTestAgencyInfo() == null) data.getEnviron().setAgencyName(testAgencyInfoService.get(10000L).getAgencyName()); data.getEnviron().setSite(testAgencyInfoService.get(10000L).getSite()); if (projectId != null) { data.setOrderId(projectId); data.setSoftwareTestOrder(softwareTestOrderService.get(projectId)); } return data; } /** * 分页查询 @@ -37,4 +104,50 @@ super.deleteLogic(ids); } public Boolean save(SoftwareTestOrderDto softwareTestOrderDto) { Long environId = softwareTestOrderDto.getEnviron().getId(); if (environId != null) baseDao.updateById(softwareTestOrderDto.getEnviron()); else { Map<String, String> map = new HashMap<>(); map.put("funCode", "environ"); softwareTestOrderDto.getEnviron().setProjectId(softwareTestOrderDto.getProjectId()); softwareTestOrderDto.getEnviron().setCode(sysCodeRuleService.getNewCode(map)); baseDao.insert(softwareTestOrderDto.getEnviron()); environId = softwareTestOrderDto.getEnviron().getId(); } for (EnvironSoftwareResources environSoftwareResources : softwareTestOrderDto.getSoftwareResourcesList()) { environSoftwareResources.setEnvironId(environId); if (environSoftwareResources.getId() != null) { environSoftwareResourcesService.update(environSoftwareResources); } else { environSoftwareResources.setEnvironId(environId); environSoftwareResourcesService.insert(environSoftwareResources); } } for (EnvironHardwareResources environHardwareResources : softwareTestOrderDto.getHardwareResourcesList()) { environHardwareResources.setEnvironId(environId); if (environHardwareResources.getId() != null) { environHardwareResourcesService.update(environHardwareResources); } else { environHardwareResources.setEnvironId(environId); environHardwareResourcesService.insert(environHardwareResources); } } for (EnvironAnalysis environAnalysis : softwareTestOrderDto.getEnvironAnalysisList()) { environAnalysis.setEnvironId(environId); if (environAnalysis.getId() != null) { environAnalysisService.update(environAnalysis); } else { environAnalysis.setEnvironId(environId); environAnalysisService.insert(environAnalysis); } } sysOssConfigService.updateOss(softwareTestOrderDto.getId(), softwareTestOrderDto.getFiles());// 保存附件 return true; } } modules/mainPart/src/main/java/com/zt/life/modules/project/service/EnvironSoftwareResourcesService.java
New file @@ -0,0 +1,48 @@ package com.zt.life.modules.project.service; import com.zt.common.service.BaseService; import com.zt.life.modules.project.dao.EnvironSoftwareResourcesDao; import com.zt.life.modules.project.model.EnvironSoftwareResources; import com.zt.life.modules.project.model.SoftwareTestOrderMeasured; import org.springframework.stereotype.Service; import com.zt.common.db.query.QueryFilter; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; /** * environ_software_resources * * @author zt generator * @since 1.0.0 2023-11-17 */ @Service public class EnvironSoftwareResourcesService extends BaseService<EnvironSoftwareResourcesDao, EnvironSoftwareResources> { /** * 分页查询 * * @param queryFilter * @return */ public List<EnvironSoftwareResources> page(QueryFilter queryFilter) { return baseDao.getList(queryFilter.getQueryParams()); } /** * 删除 * * @param ids */ public void delete(Long[] ids) { super.deleteLogic(ids); } public List<EnvironSoftwareResources> getList(Long environId) { Map<String, Object> params = new HashMap<>(); params.put("environId",environId); return baseDao.getList(params); } } modules/mainPart/src/main/resources/mapper/project/EnvironAnalysisDao.xml
New file @@ -0,0 +1,20 @@ <?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.zt.life.modules.project.dao.EnvironAnalysisDao"> <select id="getList" resultType="com.zt.life.modules.project.model.EnvironAnalysis"> select a.* from environ_analysis a <where> a.is_delete = 0 <if test="whereSql!=null"> and ${whereSql} </if> </where> <if test="orderBySql!=null"> ORDER BY ${orderBySql} </if> </select> </mapper> modules/mainPart/src/main/resources/mapper/project/EnvironDao.xml
@@ -4,10 +4,11 @@ <mapper namespace="com.zt.life.modules.project.dao.EnvironDao"> <select id="getList" resultType="com.zt.life.modules.project.model.Environ"> select a.* from environ a SELECT a.*, p.* FROM software_test_order a INNER JOIN project p ON p.id = a.project_id <where> a.is_delete = 0 a.is_delete = 0 and p.is_delete = 0 <if test="whereSql!=null"> and ${whereSql} </if> modules/mainPart/src/main/resources/mapper/project/EnvironHardwareResourcesDao.xml
New file @@ -0,0 +1,20 @@ <?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.zt.life.modules.project.dao.EnvironHardwareResourcesDao"> <select id="getList" resultType="com.zt.life.modules.project.model.EnvironHardwareResources"> select a.* from environ_hardware_resources a <where> a.is_delete = 0 <if test="whereSql!=null"> and ${whereSql} </if> </where> <if test="orderBySql!=null"> ORDER BY ${orderBySql} </if> </select> </mapper> modules/mainPart/src/main/resources/mapper/project/EnvironSoftwareResourcesDao.xml
New file @@ -0,0 +1,20 @@ <?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.zt.life.modules.project.dao.EnvironSoftwareResourcesDao"> <select id="getList" resultType="com.zt.life.modules.project.model.EnvironSoftwareResources"> select a.* from environ_software_resources a <where> a.is_delete = 0 <if test="whereSql!=null"> and ${whereSql} </if> </where> <if test="orderBySql!=null"> ORDER BY ${orderBySql} </if> </select> </mapper> modules/mainPart/src/main/resources/mapper/sysBaseInfo/TestAgencyInfoDao.xml
@@ -7,10 +7,7 @@ select a.* from test_agency_info a <where> a.is_delete = 0 <if test="whereSql!=null"> and ${whereSql} </if> a.is_delete = 0 and a.ID = 10000 </where> <if test="orderBySql!=null"> ORDER BY ${orderBySql} web/src/views/modules/olderForm/confirmForm.vue
@@ -1,217 +1,294 @@ <!--<template>--> <!-- <div class="fa-card-a" style="max-height: calc(100vh - 130px);overflow-y: auto">--> <!-- <el-form ref="form" :inline="true" :model="form" label-width="120px" class="confirmFormAuto">--> <!-- <div class="DConfirmForm">--> <!-- <el-form-item label-width="60px" label="编号:" style="width: 99%">--> <!-- <span>{{form.code}}</span>--> <!-- </el-form-item>--> <!-- </div>--> <!-- <div class="confirmDAuto DConfirmForm">--> <!-- <el-form-item label="专业实验室名称" style="width: 49%">--> <!-- <el-input v-model="form.name" placeholder="请输入编号名称"></el-input>--> <!-- </el-form-item>--> <!-- <el-form-item label="测试地点" style="width: 49%">--> <!-- <el-input v-model="form.place" placeholder="请输入编号名称"></el-input>--> <!-- </el-form-item>--> <!-- <el-form-item label="被测软件" style="width: 49%">--> <!-- <el-input v-model="form.software" placeholder="请输入编号名称"></el-input>--> <!-- </el-form-item>--> <!-- <el-form-item label="版本" style="width: 49%">--> <!-- <el-input v-model="form.versions" placeholder="请输入编号名称"></el-input>--> <!-- </el-form-item>--> <!-- <div class="el-flex el-form-border">--> <!-- <div class="DFormWidth DAlign DHold">--> <!-- 硬软件资源--> <!-- </div>--> <!-- <div class="el-wt-border-left" style="padding-left:5px;width: calc(100% - 130px)">--> <!-- <div style="padding: 5px">软件资源:</div>--> <!-- <el-table class="el-software el-margin-top-bot" height="150" border :data="form.softwareData"--> <!-- stripe>--> <!-- <el-table-column prop="code" align="center" width="80" label="序号"></el-table-column>--> <!-- <el-table-column prop="name" min-width="300" label="软件项名称"></el-table-column>--> <!-- <el-table-column prop="versions" align="center" width="180" label="版本"></el-table-column>--> <!-- <el-table-column prop="use" align="center" width="180" label="用途"></el-table-column>--> <!-- <el-table-column prop="unit" label="提供单位" width="180" align="center"></el-table-column>--> <!-- </el-table>--> <!-- <div style="padding: 5px">硬件资源:</div>--> <!-- <el-table class="el-software el-margin-top-bot" height="150" border :data="form.hardwareData"--> <!-- stripe>--> <!-- <el-table-column prop="code" align="center" width="80" label="序号"></el-table-column>--> <!-- <el-table-column prop="name" min-width="300" label="硬件和固件项目名称"></el-table-column>--> <!-- <el-table-column prop="use" align="center" width="180" label="用途"></el-table-column>--> <!-- <el-table-column prop="number" align="center" width="80" label="数量"></el-table-column>--> <!-- <el-table-column prop="state" align="center" width="120" label="状态"></el-table-column>--> <!-- <el-table-column prop="unit" align="center" width="180" label="提供单位"></el-table-column>--> <!-- </el-table>--> <!-- </div>--> <!-- </div>--> <!-- <div class="el-flex el-B-border">--> <!-- <div class="DFormWidth DAlign DHold">--> <!-- 动态测试环境图--> <!-- </div>--> <!-- <div style="width: calc(100% - 120px);">--> <!-- <div style="height:150px" class="el-wt-border-left">--> <!-- </div>--> <!-- </div>--> <!-- </div>--> <!-- <div class="el-flex el-B-border">--> <!-- <div class="DFormWidth DAlign DHold">--> <!-- 环境差异性分析--> <!-- </div>--> <!-- <div class="el-wt-border-left" style="padding-left:5px;width: calc(100% - 130px)">--> <!-- <el-table class="el-software el-margin-top-bot" height="150" border :data="form.analyzeData"--> <!-- stripe>--> <!-- <el-table-column prop="code" align="center" width="80" label="序号"></el-table-column>--> <!-- <el-table-column prop="realEnvironment" min-width="300" label="真实环境"></el-table-column>--> <!-- <el-table-column prop="testEnvironment" align="center" width="100" label="测试环境"></el-table-column>--> <!-- <el-table-column prop="environmentalDifference" align="center" width="100" label="环境差异"></el-table-column>--> <!-- <el-table-column prop="influence" align="center" width="160" label="对测试结果影响"></el-table-column>--> <!-- <el-table-column prop="measure" align="center" width="180" label="措施"></el-table-column>--> <!-- </el-table>--> <!-- </div>--> <!-- </div>--> <!-- <div class="el-flex el-B-border">--> <!-- <div class="DFormWidth DAlign DHold">--> <!-- 环境建立--> <!-- </div>--> <!-- <div style="width: calc(100% - 120px)" class="DConfirmForm el-wt-border-left">--> <!-- <el-form-item label="人员" style="width: 49%">--> <!-- <el-input v-model="form.buildPersonnel" placeholder="请输入单位名称"></el-input>--> <!-- </el-form-item>--> <!-- <el-form-item label="日期" style="width: 48%">--> <!-- <el-input v-model="form.buildDate" placeholder="请输入联系人"></el-input>--> <!-- </el-form-item>--> <!-- <el-form-item label-width="160px" class="isKill" label="是否进行环境病毒查杀" style="width: 49%">--> <!-- <el-radio-group v-model="form.isKill">--> <!-- <el-radio :label="0">是</el-radio>--> <!-- <el-radio :label="1">否</el-radio>--> <!-- </el-radio-group>--> <!-- </el-form-item>--> <!-- <el-form-item label="病毒库版本" style="width: 48%">--> <!-- <el-input v-model="form.VirusLibraryVersion" placeholder="请输入病毒库版本"></el-input>--> <!-- </el-form-item>--> <!-- </div>--> <!-- </div>--> <!-- <div class="el-flex">--> <!-- <div class="DFormWidth DAlign DHold">--> <!-- 环境确认--> <!-- </div>--> <!-- <div style="width: calc(100% - 120px)" class="DConfirmForm el-wt-border-left">--> <!-- <!– 单位名称 –>--> <!-- <el-form-item label="人员" style="width: 49%">--> <!-- <el-input v-model="form.verifyPersonnel" placeholder="请输入单位名称"></el-input>--> <!-- </el-form-item>--> <!-- <!– 联系人 –>--> <!-- <el-form-item label="日期" style="width: 48%">--> <!-- <el-input v-model="form.verifyDate" placeholder="请输入联系人"></el-input>--> <!-- </el-form-item>--> <!-- </div>--> <!-- </div>--> <!-- </div>--> <!-- </el-form>--> <!-- </div>--> <!--</template>--> <template> <div class="fa-card-a" style="max-height: calc(100vh - 130px);overflow-y: auto"> <el-form ref="form" :inline="true" :model="form" label-width="120px" class="confirmFormAuto"> <div class="DConfirmForm"> <el-form-item label-width="60px" label="编号:" style="width: 99%"> <span>{{ form.code }}</span> </el-form-item> </div> <div class="confirmDAuto DConfirmForm"> <el-form-item label="专业实验室名称" style="width: 49%"> <el-input v-model="form.name" placeholder="请输入编号名称"></el-input> </el-form-item> <el-form-item label="测试地点" style="width: 49%"> <el-input v-model="form.place" placeholder="请输入编号名称"></el-input> </el-form-item> <el-form-item label="被测软件" style="width: 49%"> <el-input v-model="form.software" placeholder="请输入编号名称"></el-input> </el-form-item> <el-form-item label="版本" style="width: 49%"> <el-input v-model="form.versions" placeholder="请输入编号名称"></el-input> </el-form-item> <div class="el-flex el-form-border"> <div class="DFormWidth DAlign DHold"> 硬软件资源 </div> <div class="el-wt-border-left" style="padding-left:5px;width: calc(100% - 130px)"> <div style="padding: 5px">软件资源:</div> <div class="table-container"> <el-table style="position:relative;" class="el-software el-margin-top-bot" height="150" border :data="form.softwareData" stripe> <el-table-column prop="code" align="center" width="80" label="序号"></el-table-column> <el-table-column prop="name" min-width="300" label="软件项名称"> <!--<script>--> <!-- export default {--> <!-- name: 'confirmForm',--> <!-- data() {--> <!-- return {--> <!-- form: {--> <!-- code: '719G19804/P3A-09-20XX-00X',--> <!-- name: '',--> <!-- place: '',--> <!-- software: '',--> <!-- versions: '',--> <!-- buildPersonnel: '',--> <!-- buildDate: '',--> <!-- isKill:1,--> <!-- VirusLibraryVersion: '',--> <!-- verifyPersonnel: '',--> <!-- verifyDate: '',--> <!-- checkList: [1, 0],--> <!-- softwareData:[--> <!-- {code:'1',name:'awdas',versions:'1.3.1',use:'奥迪',unit:'单位1'},--> <!-- {code:'2',name:'阿尔法',versions:'1.3.1',use:'奥迪',unit:'单位2'},--> <!-- {code:'3',name:'awed',versions:'1.3.1',use:'奥迪',unit:'单位3'},--> <!-- {code:'4',name:'国土部',versions:'1.3.1',use:'奥迪',unit:'单位4'},--> <!-- ],--> <!-- hardwareData:[--> <!-- {code:'1',name:'awdas',use:'车上',number:'2',state:'21',unit:'单位1'},--> <!-- {code:'2',name:'qe',use:'515',number:'1',state:'21',unit:'单位2'},--> <!-- {code:'3',name:'123',use:'1234',number:'42',state:'11',unit:'单位4'},--> <!-- {code:'4',name:'1515',use:'123',number:'1',state:'21',unit:'单位51'},--> <!-- ],--> <!-- analyzeData:[--> <!-- {code:'1',realEnvironment:'真实环境1',testEnvironment:'测试环境1',environmentalDifference:'123',influence:'wu',measure:'12'},--> <!-- {code:'1',realEnvironment:'真实环境1',testEnvironment:'测试环境1',environmentalDifference:'123',influence:'wu',measure:'14'},--> <!-- {code:'1',realEnvironment:'真实环境1',testEnvironment:'测试环境1',environmentalDifference:'123',influence:'wu',measure:'15'},--> <!-- {code:'1',realEnvironment:'真实环境1',testEnvironment:'测试环境1',environmentalDifference:'123',influence:'wu',measure:'16'},--> <!-- ],--> <!-- },--> <!-- }--> <!-- },--> <!-- }--> <!--</script>--> </el-table-column> <el-table-column prop="versions" align="center" width="180" label="版本"> <!--<style>--> <!--.confirmFormAuto {--> <!-- width: 70%;--> <!-- margin: 0 auto;--> <!--}--> <!--.confirmDAuto{--> <!-- border: 1px solid;--> <!--}--> </el-table-column> <el-table-column prop="use" align="center" width="180" label="用途"> <!--.el-flex {--> <!-- display: flex;--> <!-- align-items: center;--> <!--}--> </el-table-column> <el-table-column prop="unit" label="提供单位" width="180" align="center"> <!--.DFormWidth {--> <!-- width: 120px;--> <!--}--> </el-table-column> </el-table> <div class="icon-container" @click="addRow()"> <!-- 放置固定的图标 --> <i class="el-icon-plus"></i> </div> </div> <div style="padding: 5px">硬件资源:</div> <el-table class="el-software el-margin-top-bot" height="150" border :data="form.hardwareData" stripe> <el-table-column prop="code" align="center" width="80" label="序号"></el-table-column> <el-table-column prop="name" min-width="300" label="硬件和固件项目名称"></el-table-column> <el-table-column prop="use" align="center" width="180" label="用途"></el-table-column> <el-table-column prop="number" align="center" width="80" label="数量"></el-table-column> <el-table-column prop="state" align="center" width="120" label="状态"></el-table-column> <el-table-column prop="unit" align="center" width="180" label="提供单位"></el-table-column> </el-table> </div> </div> <div class="el-flex el-B-border"> <div class="DFormWidth DAlign DHold"> 动态测试环境图 </div> <div style="width: calc(100% - 120px);"> <div style="height:150px" class="el-wt-border-left"> </div> </div> </div> <div class="el-flex el-B-border"> <div class="DFormWidth DAlign DHold"> 环境差异性分析 </div> <div class="el-wt-border-left" style="padding-left:5px;width: calc(100% - 130px)"> <el-table class="el-software el-margin-top-bot" height="150" border :data="form.analyzeData" stripe> <el-table-column prop="code" align="center" width="80" label="序号"></el-table-column> <el-table-column prop="realEnvironment" min-width="300" label="真实环境"></el-table-column> <el-table-column prop="testEnvironment" align="center" width="100" label="测试环境"></el-table-column> <el-table-column prop="environmentalDifference" align="center" width="100" label="环境差异"></el-table-column> <el-table-column prop="influence" align="center" width="160" label="对测试结果影响"></el-table-column> <el-table-column prop="measure" align="center" width="180" label="措施"></el-table-column> </el-table> </div> </div> <div class="el-flex el-B-border"> <div class="DFormWidth DAlign DHold"> 环境建立 </div> <div style="width: calc(100% - 120px)" class="DConfirmForm el-wt-border-left"> <el-form-item label="人员" style="width: 49%"> <el-input v-model="form.buildPersonnel" placeholder="请输入单位名称"></el-input> </el-form-item> <el-form-item label="日期" style="width: 48%"> <el-input v-model="form.buildDate" placeholder="请输入联系人"></el-input> </el-form-item> <el-form-item label-width="160px" class="isKill" label="是否进行环境病毒查杀" style="width: 49%"> <el-radio-group v-model="form.isKill"> <el-radio :label="0">是</el-radio> <el-radio :label="1">否</el-radio> </el-radio-group> </el-form-item> <el-form-item label="病毒库版本" style="width: 48%"> <el-input v-model="form.VirusLibraryVersion" placeholder="请输入病毒库版本"></el-input> </el-form-item> </div> </div> <div class="el-flex"> <div class="DFormWidth DAlign DHold"> 环境确认 </div> <div style="width: calc(100% - 120px)" class="DConfirmForm el-wt-border-left"> <!-- 单位名称 --> <el-form-item label="人员" style="width: 49%"> <el-input v-model="form.verifyPersonnel" placeholder="请输入单位名称"></el-input> </el-form-item> <!-- 联系人 --> <el-form-item label="日期" style="width: 48%"> <el-input v-model="form.verifyDate" placeholder="请输入联系人"></el-input> </el-form-item> </div> </div> </div> </el-form> </div> </template> <!--.DAlign {--> <!-- text-align: center;--> <!--}--> <script> export default { name: 'confirmForm', data() { return { form: { code: '719G19804/P3A-09-20XX-00X', name: '', place: '', software: '', versions: '', buildPersonnel: '', buildDate: '', isKill: 1, VirusLibraryVersion: '', verifyPersonnel: '', verifyDate: '', checkList: [1, 0], softwareData: [ {code: '1', name: 'awdas', versions: '1.3.1', use: '奥迪', unit: '单位1'}, {code: '2', name: '阿尔法', versions: '1.3.1', use: '奥迪', unit: '单位2'}, {code: '3', name: 'awed', versions: '1.3.1', use: '奥迪', unit: '单位3'}, {code: '4', name: '国土部', versions: '1.3.1', use: '奥迪', unit: '单位4'}, ], hardwareData: [ {code: '1', name: 'awdas', use: '车上', number: '2', state: '21', unit: '单位1'}, {code: '2', name: 'qe', use: '515', number: '1', state: '21', unit: '单位2'}, {code: '3', name: '123', use: '1234', number: '42', state: '11', unit: '单位4'}, {code: '4', name: '1515', use: '123', number: '1', state: '21', unit: '单位51'}, ], analyzeData: [ { code: '1', realEnvironment: '真实环境1', testEnvironment: '测试环境1', environmentalDifference: '123', influence: 'wu', measure: '12' }, { code: '1', realEnvironment: '真实环境1', testEnvironment: '测试环境1', environmentalDifference: '123', influence: 'wu', measure: '14' }, { code: '1', realEnvironment: '真实环境1', testEnvironment: '测试环境1', environmentalDifference: '123', influence: 'wu', measure: '15' }, { code: '1', realEnvironment: '真实环境1', testEnvironment: '测试环境1', environmentalDifference: '123', influence: 'wu', measure: '16' }, ], }, } }, methods:{ addRow(){ <!--.DConfirmForm {--> <!-- /*border-left: 1px solid;*/--> <!-- width: 100%;--> <!--}--> } }, } </script> <!--.DConfirmForm > .el-form-item > .el-form-item__content {--> <!-- width: calc(100% - 120px);--> <!--}--> <!--.DConfirmForm > .el-form-item.isKill > .el-form-item__content {--> <!-- width: calc(100% - 160px);--> <!--}--> <!--.el-form-border{--> <!-- border-top: 1px solid;--> <!-- border-bottom: 1px solid;--> <!--}--> <!--.el-B-border{--> <!-- border-bottom: 1px solid;--> <!--}--> <!--.el-margin-top-bot{--> <!-- margin-top:5px;--> <!-- margin-bottom:5px;--> <!--}--> <!--.el-wt-border-left{--> <!-- border-left:1px solid;--> <!--}--> <!--.zt .el-table.el-software th {--> <!-- background: transparent;--> <!--}--> <style> .confirmFormAuto { width: 70%; margin: 0 auto; } <!--.zt .el-table.el-software th > .cell {--> <!-- font-weight: 500;--> <!--}--> <!--.DHold{--> <!-- font-weight: 600;--> <!--}--> <!--.zt .el-table.el-software{--> <!-- font-size: 14px;--> <!--}--> <!--</style>--> .confirmDAuto { border: 1px solid; } .el-flex { display: flex; align-items: center; } .DFormWidth { width: 120px; } .DAlign { text-align: center; } .DConfirmForm { /*border-left: 1px solid;*/ width: 100%; } .DConfirmForm > .el-form-item > .el-form-item__content { width: calc(100% - 120px); } .DConfirmForm > .el-form-item.isKill > .el-form-item__content { width: calc(100% - 160px); } .el-form-border { border-top: 1px solid; border-bottom: 1px solid; } .el-B-border { border-bottom: 1px solid; } .el-margin-top-bot { margin-top: 5px; margin-bottom: 5px; } .el-wt-border-left { border-left: 1px solid; } .zt .el-table.el-software th { background: transparent; } .zt .el-table.el-software th > .cell { font-weight: 500; } .DHold { font-weight: 600; } .zt .el-table.el-software { font-size: 14px; } .table-container { position: relative; } .icon-container { position: absolute; bottom: -30px; left: 50%; width: 40px; height: 30px; text-align: center; line-height: 30px; transform: translateX(-50%); border: 1px solid #EBEEF5; background-color: #fafafa; box-shadow: 0 3px 6px 0 rgba(72, 119, 232, 0.14); border-radius: 2px; } </style> web/src/views/modules/project/Environ-AddOrUpdate.vue
@@ -1,42 +1,157 @@ <template> <zt-dialog ref="dialog" column="2" @confirm="formSubmit"> <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px"> <zt-form-item label="编号" prop="code" rules="required"> <el-input v-model="dataForm.code"></el-input> </zt-form-item> <zt-form-item label="硬软件资源" prop="hardSoftwareRes" rules="required"> <el-input v-model="dataForm.hardSoftwareRes"></el-input> </zt-form-item> <zt-form-item label="动态测试环境图" prop="testEnvirontDiagram" rules="required"> <el-input v-model="dataForm.testEnvirontDiagram"></el-input> </zt-form-item> <zt-form-item label="环境差异性分析" prop="environAnalysis" rules="required"> <el-input v-model="dataForm.environAnalysis"></el-input> </zt-form-item> <zt-form-item label="环境建立" prop="environEstablish" rules="required"> <el-input v-model="dataForm.environEstablish"></el-input> </zt-form-item> <zt-form-item label="环境建立人员" prop="establishStaff" rules="required"> <el-input v-model="dataForm.establishStaff"></el-input> </zt-form-item> <zt-form-item label="环境建立日期" prop="establishDate" rules="required"> <el-input v-model="dataForm.establishDate"></el-input> </zt-form-item> <zt-form-item label="环境确认" prop="environConfirmat" rules="required"> <el-input v-model="dataForm.environConfirmat"></el-input> </zt-form-item> <zt-form-item label="环境确认人员" prop="confirmatStaff" rules="required"> <el-input v-model="dataForm.confirmatStaff"></el-input> </zt-form-item> <zt-form-item label="环境确认日期" prop="confirmatDate" rules="required"> <el-input v-model="dataForm.confirmatDate"></el-input> </zt-form-item> <zt-form-item label="是否进行环境病毒查杀" prop="isVirusScan" rules="required"> <el-input v-model="dataForm.isVirusScan"></el-input> </zt-form-item> <zt-form-item label="病毒库版本" prop="virusDatabaseVersion" rules="required"> <el-input v-model="dataForm.virusDatabaseVersion"></el-input> </zt-form-item> <zt-dialog ref="dialog" column="2" @confirm="formSubmit" append-to-body title="测试环境建立确认表"> <el-form :model="dataForm" style="padding: 0" :inline="true" ref="dataForm" :disabled="dataForm.disabled" label-width="130px" class="confirmFormAuto"> <div class="DConfirmForm"> <el-form-item label-width="60px" label="编号:" style="width:100%;margin-bottom: 0"> <span>{{dataForm.code}}</span> </el-form-item> </div> <div style="border: 1px solid rgba(0,0,0,.2);width: 99%" class="confirmDAuto DConfirmForm"> <el-form-item class="marginTopAndMarginBottom" label="专业实验室名称" style="width: 49%"> <el-input v-model="dataForm.agencyName" placeholder="专业实验室名称"></el-input> </el-form-item> <el-form-item class="marginTopAndMarginBottom" label="测试地点" style="width: 49%"> <el-input v-model="dataForm.site" placeholder="测试地点"></el-input> </el-form-item> <el-form-item label="被测软件" style="width: 49%"> <el-input v-model="dataForm.softwareName" placeholder="被测软件"></el-input> </el-form-item> <el-form-item label="版本" style="width: 49%"> <el-input v-model="dataForm.softwareIdentity" placeholder="版本"></el-input> </el-form-item> <div class="el-flexConfigDialog el-form-border"> <div class="DFormWidth DAlign DHold"> 硬软件资源 </div> <div class="el-wt-border-left" style="padding-left:5px;width: calc(100% - 130px)"> <div style="padding: 5px">软件资源:</div> <div class="table-container"> <el-table class="el-software el-margin-top-bot" height="150" border :data="dataForm.softwareResourcesList" stripe> <el-table-column prop="code" align="center" width="80" label="序号"> <template slot-scope="scope"> <span v-html="indexFormat(scope.$index)"></span> </template> </el-table-column> <el-table-column prop="name" min-width="300" label="软件项名称"> <template v-slot="{ row }"> <el-input v-model="row.itemName" placeholder="软件项名称/版本"></el-input> </template> </el-table-column> <el-table-column prop="versions" align="center" width="180" label="版本"> <template v-slot="{ row }"> <el-input v-model="row.version" placeholder="版本"></el-input> </template> </el-table-column> <el-table-column prop="use" align="center" width="180" label="用途"> <template v-slot="{ row }"> <el-input v-model="row.usage" placeholder="用途"></el-input> </template> </el-table-column> <el-table-column prop="unit" label="提供单位" width="180" align="center"> <template v-slot="{ row }"> <el-input v-model="row.provideUnit" placeholder="提供单位"></el-input> </template> </el-table-column> </el-table> <div class="icon-container" @click="addSoftwareRow()"> <!-- 放置固定的图标 --> <i class="el-icon-plus"></i> </div> </div> <div style="padding: 5px">硬件资源:</div> <div class="table-container"> <el-table class="el-software el-margin-top-bot" height="150" border :data="dataForm.hardwareResourcesList" stripe> <el-table-column prop="code" align="center" width="80" label="序号"></el-table-column> <el-table-column prop="itemName" min-width="300" label="硬件和固件项目名称"></el-table-column> <el-table-column prop="usage" align="center" width="180" label="用途"></el-table-column> <el-table-column prop="number" align="center" width="80" label="数量"></el-table-column> <el-table-column prop="state" align="center" width="120" label="状态"></el-table-column> <el-table-column prop="provideUnit" align="center" width="180" label="提供单位"></el-table-column> </el-table> <div class="icon-container" @click="addHardwareRow()"> <!-- 放置固定的图标 --> <i class="el-icon-plus"></i> </div> </div> </div> </div> <div class="el-flexConfigDialog el-B-border"> <div class="DFormWidth DAlign DHold"> 动态测试环境图 </div> <div style="width: calc(100% - 120px);"> <div style="height:150px" class="el-wt-border-left"> <span>{{dataForm.testEnvirontDiagram}}</span> </div> </div> </div> <div class="el-flexConfigDialog el-B-border"> <div class="DFormWidth DAlign DHold"> 环境差异性分析 </div> <div class="el-wt-border-left" style="padding-left:5px;width: calc(100% - 130px)"> <div class="table-container"> <el-table class="el-software el-margin-top-bot" height="150" border :data="dataForm.environAnalysisList" stripe> <el-table-column prop="code" align="center" width="80" label="序号"></el-table-column> <el-table-column prop="realEnviron" min-width="300" label="真实环境"></el-table-column> <el-table-column prop="testEnviron" align="center" width="100" label="测试环境"></el-table-column> <el-table-column prop="environDifference" align="center" width="100" label="环境差异"></el-table-column> <el-table-column prop="resultImpact" align="center" width="160" label="对测试结果影响"></el-table-column> <el-table-column prop="measure" align="center" width="180" label="措施"></el-table-column> </el-table> <div class="icon-container" @click="addDiscrepancyRow()"> <!-- 放置固定的图标 --> <i class="el-icon-plus"></i> </div> </div> </div> </div> <div class="el-flexConfigDialog el-B-border"> <div class="DFormWidth DAlign DHold"> 环境建立 </div> <div style="width: calc(100% - 120px)" class="DConfirmForm el-wt-border-left"> <el-form-item class="marginTopAndMarginBottom" label="人员" style="width: 49%"> <el-input v-model="dataForm.establishStaff" placeholder="人员"></el-input> </el-form-item> <el-form-item class="marginTopAndMarginBottom" label="日期" style="width: 48%"> <el-date-picker v-model="dataForm.establishDate" type="date" placeholder="日期"> </el-date-picker> </el-form-item> <el-form-item label-width="180px" class="isKill" label="是否进行环境病毒查杀" style="width: 49%"> <zt-dict v-model="dataForm.isVirusScan" dict="is_or_not" :radio="true"></zt-dict> </el-form-item> <el-form-item label="病毒库版本" style="width: 48%"> <el-input v-model="dataForm.virusDatabaseVersion" placeholder="请输入病毒库版本"></el-input> </el-form-item> </div> </div> <div class="el-flexConfigDialog"> <div class="DFormWidth DAlign DHold"> 环境确认 </div> <div style="width: calc(100% - 120px)" class="DConfirmForm el-wt-border-left"> <!-- 单位名称 --> <el-form-item class="marginTopAndMarginBottom" label="人员" style="width: 49%"> <el-input v-model="dataForm.confirmatStaff" placeholder="人员"></el-input> </el-form-item> <!-- 联系人 --> <el-form-item class="marginTopAndMarginBottom" label="日期" style="width: 48%"> <el-date-picker v-model="dataForm.confirmatDate" type="date" placeholder="日期"> </el-date-picker> </el-form-item> </div> </div> </div> </el-form> </zt-dialog> </template> @@ -48,29 +163,57 @@ dataForm: { id: '', code: '', agencyName:'', site:'', softwareName:'', softwareIdentity:'', hardSoftwareRes: '', testEnvirontDiagram: '', environAnalysis: '', environEstablish: '', softwareResourcesList:[], hardwareResourcesList:[], environAnalysisList:[], establishStaff: '', establishDate: '', environAnalysis: '', environEstablish: '', environConfirmat: '', confirmatStaff: '', confirmatDate: '', isVirusScan: '', virusDatabaseVersion: '' virusDatabaseVersion: '', softwareData:[] } } }, methods: { init(id,row){ this.dataForm.id = row.id this.dataForm.projectId = row.projectId // this.dataForm.disabled this.getInfo() console.log(this.dataForm.id,this.dataForm.projectId,'params params') }, // 获取信息 async getInfo() { let res = await this.$http.get(`/project/Environ/${this.dataForm.id}`) let params = { orderId: this.dataForm.id, projectId: this.dataForm.projectId } let res = await this.$http.get(`/project/Environ/getDto`,{params: params}) this.dataForm = { ...this.dataForm, ...res.data } console.log(this.dataForm,'this.dataForm') }, indexFormat(index){ return index += 1 }, addSoftwareRow(){ this.dataForm.softwareData.push({}) }, addHardwareRow(){}, addDiscrepancyRow(){}, // 表单提交 async formSubmit() { let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/project/Environ/', this.dataForm) @@ -83,3 +226,96 @@ } } </script> <style> .confirmFormAuto { width: 70%; margin: 0 auto; } .confirmDAuto{ border: 1px solid rgba(0,0,0,.2); } .el-flexConfigDialog { display: flex; align-items: center; } .DFormWidth { width: 120px; } .DAlign { text-align: center; } .DConfirmForm { /*border-left: 1px solid;*/ width: 100%; } .DConfirmForm > .el-form-item > .el-form-item__content { width: calc(100% - 130px); } .DConfirmForm > .el-form-item.isKill > .el-form-item__content { width: calc(100% - 180px); } .el-form-border{ border-top: 1px solid rgba(0,0,0,.2); border-bottom: 1px solid rgba(0,0,0,.2); } .el-B-border{ border-bottom: 1px solid rgba(0,0,0,.2); } .el-margin-top-bot{ margin-top:5px; margin-bottom:5px; } .el-wt-border-left{ border-left:1px solid rgba(0,0,0,.2); } .zt .el-table.el-software th { background: transparent; } .zt .el-table.el-software th > .cell { font-weight: 500; } .DHold{ font-weight: 600; } .zt .el-table.el-software{ font-size: 14px; } .confirmFormAuto .marginTopAndMarginBottom { margin-top: 10px !important; margin-bottom: 0 !important; } .confirmFormAuto .marginTopAndMarginBottom2 { margin-top: -10px !important; margin-bottom: 10px !important; } .confirmFormAuto .marginTopAndMarginBottom3 { margin-top: 0 !important; margin-bottom: 10px !important; } .table-container { position: relative; } .icon-container { z-index: 1; position: absolute; bottom: -20px; left: 50%; width: 40px; height: 30px; text-align: center; line-height: 30px; transform: translateX(-50%); border: 1px solid #EBEEF5; background-color: #fafafa; box-shadow: 0 3px 6px 0 rgba(72, 119, 232, 0.14); border-radius: 2px; } </style> web/src/views/modules/project/Environ.vue
@@ -1,25 +1,32 @@ <template> <el-card shadow="never" class="aui-card--fill"> <div class="mod-project-environ}"> <zt-table-wraper query-url="/project/Environ/page" delete-url="/project/Environ" v-slot="{ table }"> <zt-table-wraper query-url="/project/Environ/page" delete-url="/project/Environ" v-slot="{ table }" @dataLoaded="dataLoaded"> <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()"> <el-form-item> <el-input v-model="dataForm.code" placeholder="请输入编号" clearable></el-input> </el-form-item> <el-form-item> <zt-button type="query" @click="table.query()"/> <!-- <zt-button type="query" @click="table.query()"/>--> <zt-button type="primary" class="el-icon-edit" perm="project:add" @click="add()">新增</zt-button> <zt-button type="add" perm="project:add" @click="table.editHandle()"/> <zt-button type="delete" perm="project:delete" @click="table.deleteHandle()"/> </el-form-item> </el-form> <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle"> <el-table-column type="selection" width="40"/> <el-table-column align="center" type="selection" width="40"/> <el-table-column prop="code" label="编号"/> <el-table-column prop="softwareName" label="软件名称"/> <el-table-column prop="softwareIdentity" label="标识"/> <zt-table-column-handle :table="table" edit-perm="project:update" delete-perm="project::delete"/> </el-table> <!-- 弹窗, 新增 / 修改 --> <add-or-update @refreshDataList="table.query"/> <add-or-update ref="addOrUpdate" @refreshDataList="table.query"/> <ProjectSelect ref="projectSelect" @refreshDataList="table.query" @setProjectInfo="openAddWin"> </ProjectSelect> </zt-table-wraper> </div> </el-card> @@ -27,6 +34,7 @@ <script> import AddOrUpdate from './Environ-AddOrUpdate' import ProjectSelect from "./Project-select.vue" export default { data() { return { @@ -36,7 +44,20 @@ } }, components: { AddOrUpdate AddOrUpdate, ProjectSelect }, methods:{ dataLoaded(data){ console.log(data,'data daraList') }, add() { this.$refs.projectSelect.$refs.dialog.init("environ") }, openAddWin(row) { console.log(row.id, 'row.id') this.$refs.addOrUpdate.$refs.dialog.init(null, {id: null, projectId: row.id}) }, } } </script>