提交质检

ccongli-dev-0920
tengxi 1 year ago
parent 19f36ef0f3
commit d254acfa37

@ -0,0 +1,102 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.common.pojo.CommonResult;
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
import com.yunxi.scm.module.xxjj.convert.qualityinspection.QualityInspectionConvert;
import com.yunxi.scm.module.xxjj.service.qualityinspection.QualityInspectionService;
@Tag(name = "管理后台 - 质检报告")
@RestController
@RequestMapping("/xxjj/quality-inspection")
@Validated
public class QualityInspectionController {
@Resource
private QualityInspectionService qualityInspectionService;
@PostMapping("/create")
@Operation(summary = "创建质检报告")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:create')")
public CommonResult<Long> createQualityInspection(@Valid @RequestBody QualityInspectionCreateReqVO createReqVO) {
return success(qualityInspectionService.createQualityInspection(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新质检报告")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:update')")
public CommonResult<Boolean> updateQualityInspection(@Valid @RequestBody QualityInspectionUpdateReqVO updateReqVO) {
qualityInspectionService.updateQualityInspection(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除质检报告")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:delete')")
public CommonResult<Boolean> deleteQualityInspection(@RequestParam("id") Long id) {
qualityInspectionService.deleteQualityInspection(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得质检报告")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:query')")
public CommonResult<QualityInspectionRespVO> getQualityInspection(@RequestParam("id") Long id) {
QualityInspectionDO qualityInspection = qualityInspectionService.getQualityInspection(id);
return success(QualityInspectionConvert.INSTANCE.convert(qualityInspection));
}
@GetMapping("/list")
@Operation(summary = "获得质检报告列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:query')")
public CommonResult<List<QualityInspectionRespVO>> getQualityInspectionList(@RequestParam("ids") Collection<Long> ids) {
List<QualityInspectionDO> list = qualityInspectionService.getQualityInspectionList(ids);
return success(QualityInspectionConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得质检报告分页")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:query')")
public CommonResult<PageResult<QualityInspectionRespVO>> getQualityInspectionPage(@Valid QualityInspectionPageReqVO pageVO) {
PageResult<QualityInspectionDO> pageResult = qualityInspectionService.getQualityInspectionPage(pageVO);
return success(QualityInspectionConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出质检报告 Excel")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:export')")
@OperateLog(type = EXPORT)
public void exportQualityInspectionExcel(@Valid QualityInspectionExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<QualityInspectionDO> list = qualityInspectionService.getQualityInspectionList(exportReqVO);
// 导出 Excel
List<QualityInspectionExcelVO> datas = QualityInspectionConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "质检报告.xls", "数据", QualityInspectionExcelVO.class, datas);
}
}

@ -0,0 +1,51 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class QualityInspectionBaseVO {
@Schema(description = "提交人")
private Set<Long> presenter;
@Schema(description = "提交类型", example = "2")
private String presenterType;
@Schema(description = "关联任务id", example = "16165")
private String associatedTaskId;
@Schema(description = "关联订单id", example = "25103")
private String relatedOrderId;
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "状态不能为空")
private String qualityStatus;
@Schema(description = "所属团队id", example = "25814")
private String teamId;
@Schema(description = "质检品名", example = "王五")
private String qualityName;
@Schema(description = "总结")
private String summarize;
@Schema(description = "附件图片")
private String pictures;
@Schema(description = "批阅人员id", example = "6566")
private String readOverId;
@Schema(description = "抄送人员id", example = "30999")
private String carbonCopyId;
}

@ -0,0 +1,14 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 质检报告创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class QualityInspectionCreateReqVO extends QualityInspectionBaseVO {
}

@ -0,0 +1,63 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yunxi.scm.framework.excel.core.annotations.DictFormat;
import com.yunxi.scm.framework.excel.core.convert.DictConvert;
/**
* Excel VO
*
* @author
*/
@Data
public class QualityInspectionExcelVO {
@ExcelProperty("编号")
private Long id;
@ExcelProperty("提交人")
private Set<Long> presenter;
@ExcelProperty(value = "提交类型", converter = DictConvert.class)
@DictFormat("presenter_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String presenterType;
@ExcelProperty("关联任务id")
private String associatedTaskId;
@ExcelProperty("关联订单id")
private String relatedOrderId;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String qualityStatus;
@ExcelProperty("所属团队id")
private String teamId;
@ExcelProperty("质检品名")
private String qualityName;
@ExcelProperty("总结")
private String summarize;
@ExcelProperty("附件图片")
private String pictures;
@ExcelProperty("批阅人员id")
private String readOverId;
@ExcelProperty("抄送人员id")
private String carbonCopyId;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,53 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 质检报告 Excel 导出 Request VO参数和 QualityInspectionPageReqVO 是一致的")
@Data
public class QualityInspectionExportReqVO {
@Schema(description = "提交人")
private Set<Long> presenter;
@Schema(description = "提交类型", example = "2")
private String presenterType;
@Schema(description = "关联任务id", example = "16165")
private String associatedTaskId;
@Schema(description = "关联订单id", example = "25103")
private String relatedOrderId;
@Schema(description = "状态", example = "2")
private String qualityStatus;
@Schema(description = "所属团队id", example = "25814")
private String teamId;
@Schema(description = "质检品名", example = "王五")
private String qualityName;
@Schema(description = "总结")
private String summarize;
@Schema(description = "附件图片")
private String pictures;
@Schema(description = "批阅人员id", example = "6566")
private String readOverId;
@Schema(description = "抄送人员id", example = "30999")
private String carbonCopyId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,55 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 质检报告分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class QualityInspectionPageReqVO extends PageParam {
@Schema(description = "提交人")
private Set<Long> presenter;
@Schema(description = "提交类型", example = "2")
private String presenterType;
@Schema(description = "关联任务id", example = "16165")
private String associatedTaskId;
@Schema(description = "关联订单id", example = "25103")
private String relatedOrderId;
@Schema(description = "状态", example = "2")
private String qualityStatus;
@Schema(description = "所属团队id", example = "25814")
private String teamId;
@Schema(description = "质检品名", example = "王五")
private String qualityName;
@Schema(description = "总结")
private String summarize;
@Schema(description = "附件图片")
private String pictures;
@Schema(description = "批阅人员id", example = "6566")
private String readOverId;
@Schema(description = "抄送人员id", example = "30999")
private String carbonCopyId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,19 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 质检报告 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class QualityInspectionRespVO extends QualityInspectionBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11682")
private Long id;
@Schema(description = "创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,18 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 质检报告更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class QualityInspectionUpdateReqVO extends QualityInspectionBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11682")
@NotNull(message = "编号不能为空")
private Long id;
}

@ -0,0 +1,34 @@
package com.yunxi.scm.module.xxjj.convert.qualityinspection;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
/**
* Convert
*
* @author
*/
@Mapper
public interface QualityInspectionConvert {
QualityInspectionConvert INSTANCE = Mappers.getMapper(QualityInspectionConvert.class);
QualityInspectionDO convert(QualityInspectionCreateReqVO bean);
QualityInspectionDO convert(QualityInspectionUpdateReqVO bean);
QualityInspectionRespVO convert(QualityInspectionDO bean);
List<QualityInspectionRespVO> convertList(List<QualityInspectionDO> list);
PageResult<QualityInspectionRespVO> convertPage(PageResult<QualityInspectionDO> page);
List<QualityInspectionExcelVO> convertList02(List<QualityInspectionDO> list);
}

@ -0,0 +1,82 @@
package com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection;
import com.yunxi.scm.framework.mybatis.core.type.JsonLongSetTypeHandler;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName(value = "xxjj_quality_inspection", autoResultMap = true)
@KeySequence("xxjj_quality_inspection_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QualityInspectionDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
// private String presenter;
@TableField(typeHandler = JsonLongSetTypeHandler.class)
private Set<Long> presenter;
/**
*
*
* {@link TODO presenter_type }
*/
private String presenterType;
/**
* id
*/
private String associatedTaskId;
/**
* id
*/
private String relatedOrderId;
/**
*
*
* {@link TODO status }
*/
private String qualityStatus;
/**
* id
*/
private String teamId;
/**
*
*/
private String qualityName;
/**
*
*/
private String summarize;
/**
*
*/
private String pictures;
/**
* id
*/
private String readOverId;
/**
* id
*/
private String carbonCopyId;
}

@ -0,0 +1,54 @@
package com.yunxi.scm.module.xxjj.dal.mysql.qualityinspection;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
import org.apache.ibatis.annotations.Mapper;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface QualityInspectionMapper extends BaseMapperX<QualityInspectionDO> {
default PageResult<QualityInspectionDO> selectPage(QualityInspectionPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<QualityInspectionDO>()
.eqIfPresent(QualityInspectionDO::getPresenter, reqVO.getPresenter())
.eqIfPresent(QualityInspectionDO::getPresenterType, reqVO.getPresenterType())
.eqIfPresent(QualityInspectionDO::getAssociatedTaskId, reqVO.getAssociatedTaskId())
.eqIfPresent(QualityInspectionDO::getRelatedOrderId, reqVO.getRelatedOrderId())
.eqIfPresent(QualityInspectionDO::getQualityStatus, reqVO.getQualityStatus())
.eqIfPresent(QualityInspectionDO::getTeamId, reqVO.getTeamId())
.likeIfPresent(QualityInspectionDO::getQualityName, reqVO.getQualityName())
.eqIfPresent(QualityInspectionDO::getSummarize, reqVO.getSummarize())
.eqIfPresent(QualityInspectionDO::getPictures, reqVO.getPictures())
.eqIfPresent(QualityInspectionDO::getReadOverId, reqVO.getReadOverId())
.eqIfPresent(QualityInspectionDO::getCarbonCopyId, reqVO.getCarbonCopyId())
.betweenIfPresent(QualityInspectionDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(QualityInspectionDO::getId));
}
default List<QualityInspectionDO> selectList(QualityInspectionExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<QualityInspectionDO>()
.eqIfPresent(QualityInspectionDO::getPresenter, reqVO.getPresenter())
.eqIfPresent(QualityInspectionDO::getPresenterType, reqVO.getPresenterType())
.eqIfPresent(QualityInspectionDO::getAssociatedTaskId, reqVO.getAssociatedTaskId())
.eqIfPresent(QualityInspectionDO::getRelatedOrderId, reqVO.getRelatedOrderId())
.eqIfPresent(QualityInspectionDO::getQualityStatus, reqVO.getQualityStatus())
.eqIfPresent(QualityInspectionDO::getTeamId, reqVO.getTeamId())
.likeIfPresent(QualityInspectionDO::getQualityName, reqVO.getQualityName())
.eqIfPresent(QualityInspectionDO::getSummarize, reqVO.getSummarize())
.eqIfPresent(QualityInspectionDO::getPictures, reqVO.getPictures())
.eqIfPresent(QualityInspectionDO::getReadOverId, reqVO.getReadOverId())
.eqIfPresent(QualityInspectionDO::getCarbonCopyId, reqVO.getCarbonCopyId())
.betweenIfPresent(QualityInspectionDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(QualityInspectionDO::getId));
}
}

@ -29,7 +29,8 @@ public interface ErrorCodeConstants {
ErrorCode WAREHOUSE_RECEIPT_NOT_EXISTS = new ErrorCode(1002025013, "入库单不存在");
// ========== 领料单 TODO 补充编号 ==========
ErrorCode WAREHOUSE_OUT_NOT_EXISTS = new ErrorCode(1002025014, "领料单不存在");
// ========== 质检报告 TODO 补充编号 ==========
ErrorCode QUALITY_INSPECTION_NOT_EXISTS = new ErrorCode(1002025114, "质检报告不存在");
// ========== 部门模块 1002004000 ==========
ErrorCode MaterialCategory_NAME_DUPLICATE = new ErrorCode(1002004000, "已经存在该名字的部门");

@ -0,0 +1,70 @@
package com.yunxi.scm.module.xxjj.service.qualityinspection;
import java.util.*;
import javax.validation.*;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
/**
* Service
*
* @author
*/
public interface QualityInspectionService {
/**
*
*
* @param createReqVO
* @return
*/
Long createQualityInspection(@Valid QualityInspectionCreateReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateQualityInspection(@Valid QualityInspectionUpdateReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteQualityInspection(Long id);
/**
*
*
* @param id
* @return
*/
QualityInspectionDO getQualityInspection(Long id);
/**
*
*
* @param ids
* @return
*/
List<QualityInspectionDO> getQualityInspectionList(Collection<Long> ids);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<QualityInspectionDO> getQualityInspectionPage(QualityInspectionPageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<QualityInspectionDO> getQualityInspectionList(QualityInspectionExportReqVO exportReqVO);
}

@ -0,0 +1,82 @@
package com.yunxi.scm.module.xxjj.service.qualityinspection;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.convert.qualityinspection.QualityInspectionConvert;
import com.yunxi.scm.module.xxjj.dal.mysql.qualityinspection.QualityInspectionMapper;
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class QualityInspectionServiceImpl implements QualityInspectionService {
@Resource
private QualityInspectionMapper qualityInspectionMapper;
@Override
public Long createQualityInspection(QualityInspectionCreateReqVO createReqVO) {
// 插入
QualityInspectionDO qualityInspection = QualityInspectionConvert.INSTANCE.convert(createReqVO);
qualityInspectionMapper.insert(qualityInspection);
// 返回
return qualityInspection.getId();
}
@Override
public void updateQualityInspection(QualityInspectionUpdateReqVO updateReqVO) {
// 校验存在
validateQualityInspectionExists(updateReqVO.getId());
// 更新
QualityInspectionDO updateObj = QualityInspectionConvert.INSTANCE.convert(updateReqVO);
qualityInspectionMapper.updateById(updateObj);
}
@Override
public void deleteQualityInspection(Long id) {
// 校验存在
validateQualityInspectionExists(id);
// 删除
qualityInspectionMapper.deleteById(id);
}
private void validateQualityInspectionExists(Long id) {
if (qualityInspectionMapper.selectById(id) == null) {
throw exception(QUALITY_INSPECTION_NOT_EXISTS);
}
}
@Override
public QualityInspectionDO getQualityInspection(Long id) {
return qualityInspectionMapper.selectById(id);
}
@Override
public List<QualityInspectionDO> getQualityInspectionList(Collection<Long> ids) {
return qualityInspectionMapper.selectBatchIds(ids);
}
@Override
public PageResult<QualityInspectionDO> getQualityInspectionPage(QualityInspectionPageReqVO pageReqVO) {
return qualityInspectionMapper.selectPage(pageReqVO);
}
@Override
public List<QualityInspectionDO> getQualityInspectionList(QualityInspectionExportReqVO exportReqVO) {
return qualityInspectionMapper.selectList(exportReqVO);
}
}

@ -0,0 +1,12 @@
<?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.yunxi.scm.module.xxjj.dal.mysql.qualityinspection.QualityInspectionMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,239 @@
package com.yunxi.scm.module.xxjj.service.qualityinspection;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
import com.yunxi.scm.module.xxjj.dal.mysql.qualityinspection.QualityInspectionMapper;
import com.yunxi.scm.framework.common.pojo.PageResult;
import javax.annotation.Resource;
import org.springframework.context.annotation.Import;
import java.util.*;
import java.time.LocalDateTime;
import static cn.hutool.core.util.RandomUtil.*;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
/**
* {@link QualityInspectionServiceImpl}
*
* @author
*/
@Import(QualityInspectionServiceImpl.class)
public class QualityInspectionServiceImplTest extends BaseDbUnitTest {
@Resource
private QualityInspectionServiceImpl qualityInspectionService;
@Resource
private QualityInspectionMapper qualityInspectionMapper;
@Test
public void testCreateQualityInspection_success() {
// 准备参数
QualityInspectionCreateReqVO reqVO = randomPojo(QualityInspectionCreateReqVO.class);
// 调用
Long qualityInspectionId = qualityInspectionService.createQualityInspection(reqVO);
// 断言
assertNotNull(qualityInspectionId);
// 校验记录的属性是否正确
QualityInspectionDO qualityInspection = qualityInspectionMapper.selectById(qualityInspectionId);
assertPojoEquals(reqVO, qualityInspection);
}
@Test
public void testUpdateQualityInspection_success() {
// mock 数据
QualityInspectionDO dbQualityInspection = randomPojo(QualityInspectionDO.class);
qualityInspectionMapper.insert(dbQualityInspection);// @Sql: 先插入出一条存在的数据
// 准备参数
QualityInspectionUpdateReqVO reqVO = randomPojo(QualityInspectionUpdateReqVO.class, o -> {
o.setId(dbQualityInspection.getId()); // 设置更新的 ID
});
// 调用
qualityInspectionService.updateQualityInspection(reqVO);
// 校验是否更新正确
QualityInspectionDO qualityInspection = qualityInspectionMapper.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, qualityInspection);
}
@Test
public void testUpdateQualityInspection_notExists() {
// 准备参数
QualityInspectionUpdateReqVO reqVO = randomPojo(QualityInspectionUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> qualityInspectionService.updateQualityInspection(reqVO), QUALITY_INSPECTION_NOT_EXISTS);
}
@Test
public void testDeleteQualityInspection_success() {
// mock 数据
QualityInspectionDO dbQualityInspection = randomPojo(QualityInspectionDO.class);
qualityInspectionMapper.insert(dbQualityInspection);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbQualityInspection.getId();
// 调用
qualityInspectionService.deleteQualityInspection(id);
// 校验数据不存在了
assertNull(qualityInspectionMapper.selectById(id));
}
@Test
public void testDeleteQualityInspection_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> qualityInspectionService.deleteQualityInspection(id), QUALITY_INSPECTION_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetQualityInspectionPage() {
// mock 数据
QualityInspectionDO dbQualityInspection = randomPojo(QualityInspectionDO.class, o -> { // 等会查询到
o.setPresenter(null);
o.setPresenterType(null);
o.setAssociatedTaskId(null);
o.setRelatedOrderId(null);
o.setQualityStatus(null);
o.setTeamId(null);
o.setQualityName(null);
o.setSummarize(null);
o.setPictures(null);
o.setReadOverId(null);
o.setCarbonCopyId(null);
o.setCreateTime(null);
});
qualityInspectionMapper.insert(dbQualityInspection);
// 测试 presenter 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPresenter(null)));
// 测试 presenterType 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPresenterType(null)));
// 测试 associatedTaskId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setAssociatedTaskId(null)));
// 测试 relatedOrderId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setRelatedOrderId(null)));
// 测试 qualityStatus 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setQualityStatus(null)));
// 测试 teamId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setTeamId(null)));
// 测试 qualityName 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setQualityName(null)));
// 测试 summarize 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setSummarize(null)));
// 测试 pictures 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPictures(null)));
// 测试 readOverId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setReadOverId(null)));
// 测试 carbonCopyId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setCarbonCopyId(null)));
// 测试 createTime 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setCreateTime(null)));
// 准备参数
QualityInspectionPageReqVO reqVO = new QualityInspectionPageReqVO();
reqVO.setPresenter(null);
reqVO.setPresenterType(null);
reqVO.setAssociatedTaskId(null);
reqVO.setRelatedOrderId(null);
reqVO.setQualityStatus(null);
reqVO.setTeamId(null);
reqVO.setQualityName(null);
reqVO.setSummarize(null);
reqVO.setPictures(null);
reqVO.setReadOverId(null);
reqVO.setCarbonCopyId(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<QualityInspectionDO> pageResult = qualityInspectionService.getQualityInspectionPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbQualityInspection, pageResult.getList().get(0));
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetQualityInspectionList() {
// mock 数据
QualityInspectionDO dbQualityInspection = randomPojo(QualityInspectionDO.class, o -> { // 等会查询到
o.setPresenter(null);
o.setPresenterType(null);
o.setAssociatedTaskId(null);
o.setRelatedOrderId(null);
o.setQualityStatus(null);
o.setTeamId(null);
o.setQualityName(null);
o.setSummarize(null);
o.setPictures(null);
o.setReadOverId(null);
o.setCarbonCopyId(null);
o.setCreateTime(null);
});
qualityInspectionMapper.insert(dbQualityInspection);
// 测试 presenter 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPresenter(null)));
// 测试 presenterType 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPresenterType(null)));
// 测试 associatedTaskId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setAssociatedTaskId(null)));
// 测试 relatedOrderId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setRelatedOrderId(null)));
// 测试 qualityStatus 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setQualityStatus(null)));
// 测试 teamId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setTeamId(null)));
// 测试 qualityName 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setQualityName(null)));
// 测试 summarize 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setSummarize(null)));
// 测试 pictures 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPictures(null)));
// 测试 readOverId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setReadOverId(null)));
// 测试 carbonCopyId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setCarbonCopyId(null)));
// 测试 createTime 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setCreateTime(null)));
// 准备参数
QualityInspectionExportReqVO reqVO = new QualityInspectionExportReqVO();
reqVO.setPresenter(null);
reqVO.setPresenterType(null);
reqVO.setAssociatedTaskId(null);
reqVO.setRelatedOrderId(null);
reqVO.setQualityStatus(null);
reqVO.setTeamId(null);
reqVO.setQualityName(null);
reqVO.setSummarize(null);
reqVO.setPictures(null);
reqVO.setReadOverId(null);
reqVO.setCarbonCopyId(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
List<QualityInspectionDO> list = qualityInspectionService.getQualityInspectionList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbQualityInspection, list.get(0));
}
}

@ -0,0 +1,54 @@
import request from '@/utils/request'
// 创建质检报告
export function createQualityInspection(data) {
return request({
url: '/xxjj/quality-inspection/create',
method: 'post',
data: data
})
}
// 更新质检报告
export function updateQualityInspection(data) {
return request({
url: '/xxjj/quality-inspection/update',
method: 'put',
data: data
})
}
// 删除质检报告
export function deleteQualityInspection(id) {
return request({
url: '/xxjj/quality-inspection/delete?id=' + id,
method: 'delete'
})
}
// 获得质检报告
export function getQualityInspection(id) {
return request({
url: '/xxjj/quality-inspection/get?id=' + id,
method: 'get'
})
}
// 获得质检报告分页
export function getQualityInspectionPage(query) {
return request({
url: '/xxjj/quality-inspection/page',
method: 'get',
params: query
})
}
// 导出质检报告 Excel
export function exportQualityInspectionExcel(query) {
return request({
url: '/xxjj/quality-inspection/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

@ -115,6 +115,10 @@ export const DICT_TYPE = {
SUPPLIER_TYPE: 'supplier_type', //供应商类型
SUPPLIER_NATURE1: 'supplier_nature', //供应商性质
// ============= QUALITY_INSPECTION 模块=================
PRESENTER_TYPE: 'presenter_type', //质检报告提交类型
QUALITY_STATUS: 'quality_status', //质检报告状态
}
/**

@ -0,0 +1,284 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="公告标题" prop="title">
<el-input v-model="queryParams.title" placeholder="请输入公告标题" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="公告状态" prop="status">
<el-select v-model="queryParams.status" placeholder="公告状态" clearable>
<el-option v-for="dict in statusDictDatas" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:notice:create']"s>新增</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="noticeList">
<el-table-column label="序号" align="center" prop="id" width="100" />
<el-table-column label="公告标题" align="center" prop="title" :show-overflow-tooltip="true"/>
<el-table-column label="公告类型" align="center" prop="type" width="100">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.SYSTEM_NOTICE_TYPE" :value="scope.row.type"/>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status" width="100">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="创建者" align="center" prop="createBy" width="100" />
<el-table-column label="创建时间" align="center" prop="createTime" width="100">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:notice:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:notice:delete']">删除</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)"
v-hasPermi="['system:notice:Detail']">详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<!-- 添加或修改公告对话框 -->
<el-dialog :title="title" :visible.sync="open" width="780px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="公告标题" prop="title">
<el-input v-model="form.title" placeholder="请输入公告标题" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="公告类型" prop="type">
<el-select v-model="form.type" placeholder="请选择">
<el-option
v-for="dict in noticeTypeDictDatas"
:key="parseInt(dict.value)"
:label="dict.label"
:value="parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="状态">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusDictDatas"
:key="parseInt(dict.value)"
:label="parseInt(dict.value)"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="内容">
<editor v-model="form.content" :min-height="192"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 详情-->
<el-dialog :title="title1" :visible.sync="open" width="780px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="24">
<el-form-item label="内容">
<editor v-model="form.content" :min-height="192"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<!-- <el-button type="primary" @click="submitForm"> </el-button>-->
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listNotice, getNotice, delNotice, addNotice, updateNotice } from "@/api/system/notice";
import Editor from '@/components/Editor';
import {CommonStatusEnum} from '@/utils/constants'
import { getDictDatas, DICT_TYPE } from '@/utils/dict'
export default {
name: "SystemNotice",
components: {
Editor
},
data() {
return {
//
loading: true,
//
showSearch: true,
//
total: 0,
//
noticeList: [],
//
title: "",
title1: "",
//
open: false,
//
queryParams: {
pageNo: 1,
pageSize: 10,
title: undefined,
title1: undefined,
status: undefined
},
//
form: {},
//
rules: {
title: [
{ required: true, message: "公告标题不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "公告类型不能为空", trigger: "change" }
]
},
//
CommonStatusEnum: CommonStatusEnum,
//
noticeTypeDictDatas: getDictDatas(DICT_TYPE.SYSTEM_NOTICE_TYPE),
statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS)
};
},
created() {
this.getList();
},
methods: {
/** 查询公告列表 */
getList() {
this.loading = true;
listNotice(this.queryParams).then(response => {
this.noticeList = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
title: undefined,
title1:undefined,
type: undefined,
content: undefined,
status: CommonStatusEnum.ENABLE
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加公告";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getNotice(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改公告";
});
},
handleDetail(row) {
this.reset();
const id = row.id || this.ids
getNotice(id).then(response => {
this.form = response.data;
this.open = true;
this.title1 = "详情公告";
});
},
/** 提交按钮 */
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id !== undefined) {
updateNotice(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addNotice(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids
this.$modal.confirm('是否确认删除公告编号为"' + ids + '"的数据项?').then(function() {
return delNotice(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
}
}
};
</script>

@ -13,7 +13,8 @@
</el-select>
</el-form-item>
<el-form-item label="统一结算主体" prop="unifiedSettlement">
<el-input v-model="queryParams.unifiedSettlement" placeholder="请输入统一结算主体" clearable @keyup.enter.native="handleQuery"/>
<el-input v-model="queryParams.unifiedSettlement" placeholder="请输入统一结算主体" clearable
@keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="客户性质" prop="customerNature">
<el-select v-model="queryParams.customerNature" placeholder="请选择客户性质" clearable size="small">
@ -28,7 +29,8 @@
</el-select>
</el-form-item>
<el-form-item label="隶属业务线" prop="linebusinessId">
<el-input v-model="queryParams.linebusinessId" placeholder="请输入隶属业务线" clearable @keyup.enter.native="handleQuery"/>
<el-input v-model="queryParams.linebusinessId" placeholder="请输入隶属业务线" clearable
@keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
@ -41,16 +43,21 @@
<!-- </el-form-item>-->
<el-form-item label="成员" prop="belongingPeople">
<el-input v-model="queryParams.belongingPeople" placeholder="请输入成员" clearable @keyup.enter.native="handleQuery"/>
<el-input v-model="queryParams.belongingPeople" placeholder="请输入成员" clearable
@keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"/>
</el-form-item>
<el-form-item label="更新时间" prop="updateTime">
<el-date-picker v-model="queryParams.updateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
<el-date-picker v-model="queryParams.updateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
@ -62,16 +69,20 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['xxjj:customer:create']">新增</el-button>
v-hasPermi="['xxjj:customer:create']">新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['xxjj:customer:export']">导出</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
:loading="exportLoading"
v-hasPermi="['xxjj:customer:export']">导出
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddwork"
v-hasPermi="['xxjj:customer:creatework']">新建工单</el-button>
v-hasPermi="['xxjj:customer:creatework']">新建工单
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
@ -80,7 +91,8 @@
<!-- 列表 -->
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" sortable border custom-column stripe>
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" sortable border custom-column
stripe>
<el-table-column type="selection" width="55" align=center></el-table-column>
<el-table-column label="编号" align="center" prop="id" v-if="columns[0].visible"/>
<el-table-column label="客户名称" align="center" prop="customerName" sortable v-if="columns[1].visible"/>
@ -135,14 +147,17 @@
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['xxjj:customer:update']">修改</el-button>
v-hasPermi="['xxjj:customer:update']">修改
</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleopen1close(scope.row)"
>{{scope.row.status == 0 ? '禁用' : '启用'}}</el-button>
>{{scope.row.status == 0 ? '禁用' : '启用'}}
</el-button>
<el-divider direction="vertical"></el-divider>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['xxjj:customer:delete']">删除</el-button>
v-hasPermi="['xxjj:customer:delete']">删除
</el-button>
</template>
</el-table-column>
@ -196,7 +211,8 @@
<el-form-item label="成员" prop="belongingPeople">
<el-select v-model="form.belongingPeople" multiple placeholder="请选择成员">
<el-option v-for="user in users" :key="parseInt(user.id)" :label="user.nickname" :value="parseInt(user.id)"/>
<el-option v-for="user in users" :key="parseInt(user.id)" :label="user.nickname"
:value="parseInt(user.id)"/>
</el-select>
</el-form-item>
@ -246,7 +262,8 @@
<el-form-item label="客户id" prop="customerId">
<el-select v-model="form.customerId" multiple placeholder="请选择客户id">
<el-option v-for="customer in cust" :key="parseInt(customer.id)" :label="customer.customerName" :value="parseInt(customer.id)"/>
<el-option v-for="customer in cust" :key="parseInt(customer.id)" :label="customer.customerName"
:value="parseInt(customer.id)"/>
</el-select>
</el-form-item>
@ -276,7 +293,8 @@
<el-form-item label="紧要程度" prop="criticality">
<el-radio-group v-model="form.criticality" size="small">
<el-radio-button v-for="(item, index) in field101Options" :key="index" :label="item.value"
:disabled="item.disabled" border>{{item.label}}</el-radio-button>
:disabled="item.disabled" border>{{item.label}}
</el-radio-button>
</el-radio-group>
</el-form-item>
@ -296,19 +314,27 @@
</template>
<script>
import { createCustomer, updateCustomer, deleteCustomer, getCustomer, getCustomerPage, exportCustomerExcel,listSimpleCustomerid } from "@/api/xxjj/customer";
import {customerstatus} from "@/utils/constants";
import {listSimpleDepts,} from "@/api/system/dept";
import {CommonStatusEnum, SystemDataScopeEnum} from "@/utils/constants";
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import {listSimpleUsers,listSimpleUserGroups11} from "@/api/system/user";
import {
createCustomer,
updateCustomer,
deleteCustomer,
getCustomer,
getCustomerPage,
exportCustomerExcel,
listSimpleCustomerid
} from '@/api/xxjj/customer'
import { customerstatus } from '@/utils/constants'
import { listSimpleDepts } from '@/api/system/dept'
import { CommonStatusEnum, SystemDataScopeEnum } from '@/utils/constants'
import { DICT_TYPE, getDictDatas } from '@/utils/dict'
import { listSimpleUsers, listSimpleUserGroups11 } from '@/api/system/user'
export default {
name: "Customer",
components: {
},
name: 'Customer',
components: {},
data() {
return {
activeTabs: "all",
activeTabs: 'all',
//
loading: true,
//
@ -320,8 +346,8 @@ export default {
//
list: [],
//
title: "",
title1: "",
title: '',
title1: '',
//
open: false,
open1: false,
@ -340,7 +366,7 @@ export default {
status: null,
belongingPeople: null,
createTime: [],
updateTime: [],
updateTime: []
},
//
form: {},
@ -358,31 +384,31 @@ export default {
//
rules: {
customerName: [{ required: true, message: "客户名称不能为空", trigger: "blur" }],
customerType: [{ required: true, message: "客户类型不能为空", trigger: "change" }],
customerNature: [{ required: true, message: "客户性质不能为空", trigger: "blur" }],
cooperationMode: [{ required: true, message: "合作模式不能为空", trigger: "blur" }],
status: [{ required: true, message: "状态不能为空", trigger: "blur" }],
customerName: [{ required: true, message: '客户名称不能为空', trigger: 'blur' }],
customerType: [{ required: true, message: '客户类型不能为空', trigger: 'change' }],
customerNature: [{ required: true, message: '客户性质不能为空', trigger: 'blur' }],
cooperationMode: [{ required: true, message: '合作模式不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
},
rules1: {
workorderName: [{ required: true, message: "工单标题不能为空", trigger: "blur" }],
customerId: [{ required: true, message: "客户不能为空", trigger: "blur" }],
workType: [{ required: true, message: "工单类型不能为空", trigger: "blur" }],
criticality: [{ required: true, message: "紧要程度不能为空", trigger: "blur" }],
workorderName: [{ required: true, message: '工单标题不能为空', trigger: 'blur' }],
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
workType: [{ required: true, message: '工单类型不能为空', trigger: 'blur' }],
criticality: [{ required: true, message: '紧要程度不能为空', trigger: 'blur' }]
},
//
field101Options: [{
"label": "重要",
"value": 0
'label': '重要',
'value': 0
}, {
"label": "紧急",
"value": 1
'label': '紧急',
'value': 1
}, {
"label": "普通",
"value": 2
'label': '普通',
'value': 2
}, {
"label": "较低",
"value": 3
'label': '较低',
'value': 3
}],
//
@ -397,42 +423,42 @@ export default {
{ key: 7, label: `状态`, visible: true },
{ key: 8, label: `归属人员`, visible: true },
{ key: 9, label: `创建时间`, visible: true },
{ key: 10, label: `更新时间`, visible: true },
{ key: 10, label: `更新时间`, visible: true }
],
deptExpand: true,
deptNodeAll: false,
deptNodeAll: false
};
}
},
created() {
this.getList();
this.getList()
//
listSimpleUsers().then(response => {
this.users = response.data;
this.users = response.data
})
//
listSimpleCustomerid().then(response => {
this.cust = response.data;
this.cust = response.data
})
},
methods: {
//
handleSelectionChange(val) {
this.multipleSelection = val;
this.multipleSelection = val
},
// tab
handleClick(val) {
if (val.name === "all") {
this.queryParams.status = undefined;
this.queryParams.alarmStock = undefined;
} else if (val.name === "open1") {
this.queryParams.status = customerstatus.OPEN1.status;
this.queryParams.alarmStock = undefined;
} else if (val.name === "close") {
this.queryParams.status = customerstatus.CLOSE.status;
this.queryParams.alarmStock = undefined;
if (val.name === 'all') {
this.queryParams.status = undefined
this.queryParams.alarmStock = undefined
} else if (val.name === 'open1') {
this.queryParams.status = customerstatus.OPEN1.status
this.queryParams.alarmStock = undefined
} else if (val.name === 'close') {
this.queryParams.status = customerstatus.CLOSE.status
this.queryParams.alarmStock = undefined
}
this.getList();
this.getList()
},
//
handleopen1close(row) {
@ -445,10 +471,10 @@ export default {
try {
row.status = 0
updateCustomer(row).then(response => {
this.$modal.msgSuccess("启用成功");
this.open = false;
this.getList();
});
this.$modal.msgSuccess('启用成功')
this.open = false
this.getList()
})
} catch (err) {
this.$message.error('启用失败')
}
@ -462,10 +488,10 @@ export default {
try {
row.status = 1
updateCustomer(row).then(response => {
this.$modal.msgSuccess("禁用成功");
this.open = false;
this.getList();
});
this.$modal.msgSuccess('禁用成功')
this.open = false
this.getList()
})
} catch (err) {
this.$message.error('禁用失败')
}
@ -475,29 +501,29 @@ export default {
/** 查询列表 */
getList() {
this.loading = true;
this.loading = true
//
getCustomerPage(this.queryParams).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
this.list = response.data.list
this.total = response.data.total
this.loading = false
})
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
this.open = false
this.reset()
},
cancelwork() {
this.open1 = false;
this.reset();
this.open1 = false
this.reset()
},
/** 表单重置 */
reset() {
this.menuCheckStrictly = true;
this.menuCheckStrictly = true
this.deptExpand = true;
this.deptNodeAll = false;
this.deptExpand = true
this.deptNodeAll = false
this.form = {
id: undefined,
customerName: undefined,
@ -508,42 +534,42 @@ export default {
linebusinessId: undefined,
status: undefined,
deptCheckStrictly: false,
belongingPeople: [],
};
this.resetForm("form");
belongingPeople: []
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
this.queryParams.pageNo = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
this.resetForm('queryForm')
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加客户信息";
this.reset()
this.open = true
this.title = '添加客户信息'
},
/** 新增工单操作 */
handleAddwork() {
this.reset();
this.open1 = true;
this.title1 = "新建工单";
this.reset()
this.open1 = true
this.title1 = '新建工单'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
this.reset()
const id = row.id
getCustomer(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改客户信息";
});
this.form = response.data
this.open = true
this.title = '修改客户信息'
})
// //
// // form name code
// this.form.id = row.id;
@ -567,85 +593,85 @@ export default {
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
this.$refs['form'].validate(valid => {
if (!valid) {
return;
return
}
//
if (this.form.id != null) {
updateCustomer(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
return;
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
return
}
//
createCustomer(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
});
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
})
},
/** 提交按钮工单 */
submitFormwork() {
this.$refs["form"].validate(valid => {
this.$refs['form'].validate(valid => {
if (!valid) {
return;
return
}
//
if (this.form.id != null) {
updateCustomer(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open1 = false;
this.getList();
});
return;
this.$modal.msgSuccess('修改成功')
this.open1 = false
this.getList()
})
return
}
//
createCustomer(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open1 = false;
this.getList();
});
});
this.$modal.msgSuccess('新增成功')
this.open1 = false
this.getList()
})
})
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
const id = row.id
this.$modal.confirm('是否确认删除客户信息编号为"' + id + '"的数据项?').then(function() {
return deleteCustomer(id);
return deleteCustomer(id)
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
//
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
let params = { ...this.queryParams }
params.pageNo = undefined
params.pageSize = undefined
this.$modal.confirm('是否确认导出所有客户信息数据项?').then(() => {
this.exportLoading = true;
return exportCustomerExcel(params);
this.exportLoading = true
return exportCustomerExcel(params)
}).then(response => {
this.$download.excel(response, '客户信息.xls');
this.exportLoading = false;
}).catch(() => {});
this.$download.excel(response, '客户信息.xls')
this.exportLoading = false
}).catch(() => {
})
},
//id
getUserNickname(userId) {
for (const user of this.users) {
if (user.id === userId) {
return user.nickname;
return user.nickname
}
}
return '未知(' + userId + ')';
},
return '未知(' + userId + ')'
}
// /
// handleCheckedTreeExpand(value, type) {
@ -680,7 +706,7 @@ export default {
// },
}
};
}
</script>
<style lang="scss">

@ -0,0 +1,371 @@
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="提交人" prop="presenter">
<el-input v-model="queryParams.presenter" placeholder="请输入提交人" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="提交类型" prop="presenterType">
<el-select v-model="queryParams.presenterType" placeholder="请选择提交类型" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.PRESENTER_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="关联任务id" prop="associatedTaskId">
<el-input v-model="queryParams.associatedTaskId" placeholder="请输入关联任务id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="关联订单id" prop="relatedOrderId">
<el-input v-model="queryParams.relatedOrderId" placeholder="请输入关联订单id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="状态" prop="qualityStatus">
<el-select v-model="queryParams.qualityStatus" placeholder="请选择状态" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.QUALITY_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="所属团队id" prop="teamId">
<el-input v-model="queryParams.teamId" placeholder="请输入所属团队id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="质检品名" prop="qualityName">
<el-input v-model="queryParams.qualityName" placeholder="请输入质检品名" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="批阅人员id" prop="readOverId">
<el-input v-model="queryParams.readOverId" placeholder="请输入批阅人员id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="抄送人员id" prop="carbonCopyId">
<el-input v-model="queryParams.carbonCopyId" placeholder="请输入抄送人员id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['xxjj:quality-inspection:create']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['xxjj:quality-inspection:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<!-- 列表 -->
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" sortable border custom-column stripe>
<el-table-column type="selection" width="55"align=center ></el-table-column>
<el-table-column label="编号" align="center" sortable prop="id" v-if="columns[0].visible" />
<!-- <el-table-column label="提交人" align="center" prop="presenter" v-if="columns[1].visible" />-->
<el-table-column label="提交人" align="center" v-if="columns[8].visible">
<template v-slot="scope">
<span v-for="userId in scope.row.presenter">
{{ getUserNickname(userId) }}
</span>
</template>
</el-table-column>
<el-table-column label="提交类型" align="center" prop="presenterType" v-if="columns[2].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.PRESENTER_TYPE" :value="scope.row.presenterType" />
</template>
</el-table-column>
<el-table-column label="关联任务id" align="center" prop="associatedTaskId" v-if="columns[3].visible" />
<el-table-column label="关联订单id" align="center" prop="relatedOrderId" v-if="columns[4].visible" />
<el-table-column label="状态" align="center" sortable prop="qualityStatus" v-if="columns[5].visible" >
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.QUALITY_STATUS" :value="scope.row.qualityStatus" />
</template>
</el-table-column>
<!-- <el-table-column label="所属团队id" align="center" prop="teamId" v-if="columns[6].visible" />-->
<!-- <el-table-column label="质检品名" align="center" prop="qualityName" v-if="columns[7].visible" />-->
<!-- <el-table-column label="总结" align="center" prop="summarize" v-if="columns[8].visible" />-->
<!-- <el-table-column label="附件图片" align="center" prop="pictures" v-if="columns[9].visible" />-->
<!-- <el-table-column label="批阅人员id" align="center" prop="readOverId" v-if="columns[10].visible" />-->
<!-- <el-table-column label="抄送人员id" align="center" prop="carbonCopyId" v-if="columns[11].visible" />-->
<el-table-column label="创建时间" align="center" prop="createTime" width="180" v-if="columns[12].visible">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['xxjj:quality-inspection:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['xxjj:quality-inspection:delete']">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="900px" v-dialogDrag append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<!-- <el-form-item label="提交人" prop="presenter">-->
<!-- <el-input v-model="form.presenter" placeholder="请输入提交人" />-->
<!-- </el-form-item>-->
<el-form-item label="提交人" prop="presenter">
<el-select v-model="form.presenter" multiple placeholder="请选择提交人">
<el-option v-for="user in users" :key="parseInt(user.id)" :label="user.nickname" :value="parseInt(user.id)"/>
</el-select>
</el-form-item>
<el-form-item label="提交类型" prop="presenterType">
<el-select v-model="form.presenterType" placeholder="请选择提交类型">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.PRESENTER_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="关联任务id" prop="associatedTaskId">
<el-input v-model="form.associatedTaskId" placeholder="请输入关联任务id" />
</el-form-item>
<el-form-item label="关联订单id" prop="relatedOrderId">
<el-input v-model="form.relatedOrderId" placeholder="请输入关联订单id" />
</el-form-item>
<el-form-item label="状态" prop="qualityStatus">
<el-select v-model="form.qualityStatus" placeholder="请选择状态">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.QUALITY_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="所属团队id" prop="teamId">
<el-input v-model="form.teamId" placeholder="请输入所属团队id" />
</el-form-item>
<el-form-item label="质检品名" prop="qualityName">
<el-input v-model="form.qualityName" placeholder="请输入质检品名" />
</el-form-item>
<el-form-item label="总结">
<editor v-model="form.summarize" :min-height="192"/>
</el-form-item>
<el-form-item label="附件图片">
<fileUpload v-model="form.pictures"/>
</el-form-item>
<el-form-item label="批阅人员id" prop="readOverId">
<el-input v-model="form.readOverId" placeholder="请输入批阅人员id" />
</el-form-item>
<el-form-item label="抄送人员id" prop="carbonCopyId">
<el-input v-model="form.carbonCopyId" placeholder="请输入抄送人员id" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { createQualityInspection, updateQualityInspection, deleteQualityInspection, getQualityInspection, getQualityInspectionPage, exportQualityInspectionExcel } from "@/api/xxjj/qualityInspection";
import FileUpload from '@/components/FileUpload';
import Editor from '@/components/Editor';
import { listSimpleUsers } from "@/api/system/user";
export default {
name: "QualityInspection",
components: {
FileUpload,
Editor,
},
data() {
return {
//
loading: true,
//
exportLoading: false,
//
showSearch: true,
//
total: 0,
//
list: [],
//
title: "",
//
open: false,
users: [],
//
queryParams: {
pageNo: 1,
pageSize: 10,
presenter: null,
presenterType: null,
associatedTaskId: null,
relatedOrderId: null,
qualityStatus: null,
teamId: null,
qualityName: null,
summarize: null,
pictures: null,
readOverId: null,
carbonCopyId: null,
createTime: [],
},
//
form: {},
//
rules: {
qualityStatus: [{ required: true, message: "状态不能为空", trigger: "change" }],
},
//
columns: [
{ key: 0, label: `编号`, visible: true },
{ key: 1, label: `提交人`, visible: true },
{ key: 2, label: `提交类型`, visible: true },
{ key: 3, label: `关联任务id`, visible: true },
{ key: 4, label: `关联订单id`, visible: true },
{ key: 5, label: `状态`, visible: true },
// { key: 6, label: `id`, visible: true },
// { key: 7, label: ``, visible: true },
// { key: 8, label: ``, visible: true },
// { key: 9, label: ``, visible: true },
// { key: 10, label: `id`, visible: true },
// { key: 11, label: `id`, visible: true },
{ key: 12, label: `创建时间`, visible: true },
],
};
},
created() {
this.getList();
//
listSimpleUsers().then(response => {
this.users = response.data;
})
},
methods: {
//id
getUserNickname(userId) {
for (const user of this.users) {
if (user.id === userId) {
return user.nickname;
}
}
return '未知(' + userId + ')';
},
/** 查询列表 */
getList() {
this.loading = true;
//
getQualityInspectionPage(this.queryParams).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
id: undefined,
presenter: undefined,
presenterType: undefined,
associatedTaskId: undefined,
relatedOrderId: undefined,
qualityStatus: undefined,
teamId: undefined,
qualityName: undefined,
summarize: undefined,
pictures: undefined,
readOverId: undefined,
carbonCopyId: undefined,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加质检报告";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
getQualityInspection(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改质检报告";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
//
if (this.form.id != null) {
updateQualityInspection(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
return;
}
//
createQualityInspection(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除质检报告编号为"' + id + '"的数据项?').then(function() {
return deleteQualityInspection(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
//
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
this.$modal.confirm('是否确认导出所有质检报告数据项?').then(() => {
this.exportLoading = true;
return exportQualityInspectionExcel(params);
}).then(response => {
this.$download.excel(response, '质检报告.xls');
this.exportLoading = false;
}).catch(() => {});
}
}
};
</script>
Loading…
Cancel
Save