库区,仓储,工艺页面
This commit is contained in:
parent
1eb9857142
commit
1e5fe980b4
@ -47,5 +47,6 @@ public class CheckItemPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "打印是否取平均值")
|
||||
private String printAvgValues;
|
||||
|
||||
@Schema(description = "编号")
|
||||
private String itemNo;
|
||||
}
|
||||
|
||||
@ -79,4 +79,12 @@ public class ProcController {
|
||||
return success(procService.getProcDropdown(keyWord));
|
||||
}
|
||||
|
||||
// 下拉框
|
||||
@GetMapping("/getProcList")
|
||||
@Operation(summary = "获得工序不分页")
|
||||
@PreAuthorize("@ss.hasPermission('biz:proc:query')")
|
||||
public CommonResult<List<ProcRespVO>> getProcList() {
|
||||
return success(procService.getProcList());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -38,5 +38,7 @@ public class ProcRespVO {
|
||||
@Schema(description = "备注", example = "你猜")
|
||||
@ExcelProperty("备注")
|
||||
private String remark;
|
||||
private String creatorName;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,95 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.controller.admin.storearea;
|
||||
|
||||
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.ningxia.yunxi.chemmes.framework.common.pojo.PageParam;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.CommonResult;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils;
|
||||
import static com.ningxia.yunxi.chemmes.framework.common.pojo.CommonResult.success;
|
||||
|
||||
import com.ningxia.yunxi.chemmes.framework.excel.core.util.ExcelUtils;
|
||||
|
||||
import com.ningxia.yunxi.chemmes.framework.operatelog.core.annotations.OperateLog;
|
||||
import static com.ningxia.yunxi.chemmes.framework.operatelog.core.enums.OperateTypeEnum.*;
|
||||
|
||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.storearea.vo.*;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.storearea.StoreAreaDO;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.service.storearea.StoreAreaService;
|
||||
|
||||
@Tag(name = "管理后台 - 库区主数据")
|
||||
@RestController
|
||||
@RequestMapping("/biz/store-area")
|
||||
@Validated
|
||||
public class StoreAreaController {
|
||||
|
||||
@Resource
|
||||
private StoreAreaService storeAreaService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建库区主数据")
|
||||
@PreAuthorize("@ss.hasPermission('biz:store-area:create')")
|
||||
public CommonResult<Integer> createStoreArea(@Valid @RequestBody StoreAreaSaveReqVO createReqVO) {
|
||||
return success(storeAreaService.createStoreArea(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新库区主数据")
|
||||
@PreAuthorize("@ss.hasPermission('biz:store-area:update')")
|
||||
public CommonResult<Boolean> updateStoreArea(@Valid @RequestBody StoreAreaSaveReqVO updateReqVO) {
|
||||
storeAreaService.updateStoreArea(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除库区主数据")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('biz:store-area:delete')")
|
||||
public CommonResult<Boolean> deleteStoreArea(@RequestParam("id") Integer id) {
|
||||
storeAreaService.deleteStoreArea(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得库区主数据")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('biz:store-area:query')")
|
||||
public CommonResult<StoreAreaRespVO> getStoreArea(@RequestParam("id") Integer id) {
|
||||
StoreAreaDO storeArea = storeAreaService.getStoreArea(id);
|
||||
return success(BeanUtils.toBean(storeArea, StoreAreaRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得库区主数据分页")
|
||||
@PreAuthorize("@ss.hasPermission('biz:store-area:query')")
|
||||
public CommonResult<PageResult<StoreAreaRespVO>> getStoreAreaPage(@Valid StoreAreaPageReqVO pageReqVO) {
|
||||
PageResult<StoreAreaDO> pageResult = storeAreaService.getStoreAreaPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, StoreAreaRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出库区主数据 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('biz:store-area:export')")
|
||||
@OperateLog(type = EXPORT)
|
||||
public void exportStoreAreaExcel(@Valid StoreAreaPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<StoreAreaDO> list = storeAreaService.getStoreAreaPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "库区主数据.xls", "数据", StoreAreaRespVO.class,
|
||||
BeanUtils.toBean(list, StoreAreaRespVO.class));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,45 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.controller.admin.storearea.vo;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageParam;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static com.ningxia.yunxi.chemmes.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 StoreAreaPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "创建人", example = "32562")
|
||||
private String fCreatorUserId;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
@Schema(description = "库区编码")
|
||||
private String storeAreCd;
|
||||
|
||||
@Schema(description = "库区名称", example = "芋艿")
|
||||
private String storeAreaName;
|
||||
|
||||
@Schema(description = "状态(1启用 2 未启用)", example = "1")
|
||||
private Integer enabledStatus;
|
||||
|
||||
@Schema(description = "备注", example = "你说的对")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "仓库id", example = "23515")
|
||||
private Integer storeHouseId;
|
||||
|
||||
@Schema(description = "仓库类型(1 原料库 2 在制品库 3 成品库)", example = "1")
|
||||
private String storeType;
|
||||
@Schema(description = "仓库名称")
|
||||
private String storeHouseName;
|
||||
|
||||
}
|
||||
@ -0,0 +1,57 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.controller.admin.storearea.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.util.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
import com.ningxia.yunxi.chemmes.framework.excel.core.annotations.DictFormat;
|
||||
import com.ningxia.yunxi.chemmes.framework.excel.core.convert.DictConvert;
|
||||
|
||||
@Schema(description = "管理后台 - 库区主数据 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class StoreAreaRespVO {
|
||||
|
||||
@Schema(description = "自增字段", requiredMode = Schema.RequiredMode.REQUIRED, example = "5665")
|
||||
@ExcelProperty("自增字段")
|
||||
private Integer id;
|
||||
|
||||
@Schema(description = "创建人", example = "32562")
|
||||
@ExcelProperty("创建人")
|
||||
private String fCreatorUserId;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "库区编码")
|
||||
@ExcelProperty("库区编码")
|
||||
private String storeAreCd;
|
||||
|
||||
@Schema(description = "库区名称", example = "芋艿")
|
||||
@ExcelProperty("库区名称")
|
||||
private String storeAreaName;
|
||||
|
||||
@Schema(description = "状态(1启用 2 未启用)", example = "1")
|
||||
@ExcelProperty(value = "状态(1启用 2 未启用)", converter = DictConvert.class)
|
||||
@DictFormat("system_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
|
||||
private Integer enabledStatus;
|
||||
|
||||
@Schema(description = "备注", example = "你说的对")
|
||||
@ExcelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "仓库id", example = "23515")
|
||||
@ExcelProperty("仓库id")
|
||||
private Integer storeHouseId;
|
||||
|
||||
@Schema(description = "仓库类型(1 原料库 2 在制品库 3 成品库)", example = "1")
|
||||
@ExcelProperty("仓库类型(1 原料库 2 在制品库 3 成品库)")
|
||||
private String storeType;
|
||||
|
||||
private String storeHouseName;
|
||||
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.controller.admin.storearea.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
import java.util.*;
|
||||
|
||||
@Schema(description = "管理后台 - 库区主数据新增/修改 Request VO")
|
||||
@Data
|
||||
public class StoreAreaSaveReqVO {
|
||||
|
||||
@Schema(description = "自增字段", requiredMode = Schema.RequiredMode.REQUIRED, example = "5665")
|
||||
private Integer id;
|
||||
|
||||
@Schema(description = "创建人", example = "32562")
|
||||
private String fCreatorUserId;
|
||||
|
||||
@Schema(description = "库区编码")
|
||||
private String storeAreCd;
|
||||
|
||||
@Schema(description = "库区名称", example = "芋艿")
|
||||
private String storeAreaName;
|
||||
|
||||
@Schema(description = "状态(1启用 2 未启用)", example = "1")
|
||||
private Integer enabledStatus;
|
||||
|
||||
@Schema(description = "备注", example = "你说的对")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "仓库id", example = "23515")
|
||||
private Integer storeHouseId;
|
||||
|
||||
@Schema(description = "仓库类型(1 原料库 2 在制品库 3 成品库)", example = "1")
|
||||
private String storeType;
|
||||
|
||||
}
|
||||
@ -91,5 +91,14 @@ public class StoreHouseController {
|
||||
ExcelUtils.write(response, "仓储主数据.xls", "数据", StoreHouseRespVO.class,
|
||||
BeanUtils.toBean(list, StoreHouseRespVO.class));
|
||||
}
|
||||
@GetMapping("/get-store-house-select")
|
||||
@Operation(summary = "获得仓储下拉框数据")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('biz:store-house:query')")
|
||||
public CommonResult<List<StoreHouseRespVO>> getStoreHouseSelect() {
|
||||
List<StoreHouseDO> list = storeHouseService.getStoreHouseSelect();
|
||||
return success(BeanUtils.toBean(list, StoreHouseRespVO.class));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -21,4 +21,7 @@ public class StoreHousePageReqVO extends PageParam {
|
||||
@Schema(description = "状态(1启用 2 未启用)", example = "1")
|
||||
private Integer enabledStatus;
|
||||
|
||||
private String storeType;
|
||||
|
||||
|
||||
}
|
||||
@ -35,5 +35,7 @@ public class TechProcRespVO {
|
||||
@Schema(description = "备注", example = "你猜")
|
||||
@ExcelProperty("备注")
|
||||
private String remark;
|
||||
private String nickname;
|
||||
|
||||
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.checkitem;
|
||||
|
||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.dataobject.BaseDOWithoutLogic;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
@ -20,7 +21,7 @@ import com.ningxia.yunxi.chemmes.framework.mybatis.core.dataobject.BaseDO;
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class CheckItemDO extends BaseDO {
|
||||
public class CheckItemDO extends BaseDOWithoutLogic {
|
||||
|
||||
/**
|
||||
* 自增字段
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.proc;
|
||||
|
||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.proc.vo.ProcRespVO;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
@ -45,5 +46,7 @@ public class ProcDO extends BaseDO {
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
@TableField(exist = false)
|
||||
private String creatorName;
|
||||
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.storearea;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
/**
|
||||
* 库区主数据 DO
|
||||
*
|
||||
* @author 管理员
|
||||
*/
|
||||
@TableName("tba_store_area")
|
||||
@KeySequence("tba_store_area_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class StoreAreaDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 自增字段
|
||||
*/
|
||||
@TableId
|
||||
private Integer id;
|
||||
/**
|
||||
* 库区编码
|
||||
*/
|
||||
private String storeAreCd;
|
||||
/**
|
||||
* 库区名称
|
||||
*/
|
||||
private String storeAreaName;
|
||||
/**
|
||||
* 状态(1启用 2 未启用)
|
||||
*
|
||||
* 枚举 {@link TODO system_status 对应的类}
|
||||
*/
|
||||
private Integer enabledStatus;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 仓库id
|
||||
*/
|
||||
private Integer storeHouseId;
|
||||
/**
|
||||
* 仓库类型(1 原料库 2 在制品库 3 成品库)
|
||||
*/
|
||||
private String storeType;
|
||||
@TableField(exist = false)
|
||||
private String storeHouseName;
|
||||
|
||||
}
|
||||
@ -41,5 +41,7 @@ public class TechProcDO extends BaseDO {
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
@TableField(exist = false)
|
||||
private String nickname;
|
||||
|
||||
}
|
||||
@ -17,9 +17,25 @@ import com.ningxia.yunxi.chemmes.module.biz.controller.admin.checkitem.vo.*;
|
||||
@Mapper
|
||||
public interface CheckItemMapper extends BaseMapperX<CheckItemDO> {
|
||||
|
||||
/**
|
||||
* 根据检验项类型和名称统计数量(用于重复校验)
|
||||
*
|
||||
* @param itemType 适用类型
|
||||
* @param itemName 检验项名称
|
||||
* @param excludeId 排除的ID(更新时使用)
|
||||
* @return 符合条件的记录数
|
||||
*/
|
||||
default Long selectCountByItemTypeAndItemName(String itemType, String itemName, Integer excludeId) {
|
||||
return selectCount(new LambdaQueryWrapperX<CheckItemDO>()
|
||||
.eq(CheckItemDO::getItemType, itemType)
|
||||
.eq(CheckItemDO::getItemName, itemName)
|
||||
.ne(excludeId != null, CheckItemDO::getId, excludeId));
|
||||
}
|
||||
|
||||
default PageResult<CheckItemDO> selectPage(CheckItemPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<CheckItemDO>()
|
||||
.likeIfPresent(CheckItemDO::getItemName, reqVO.getItemName())
|
||||
.likeIfPresent(CheckItemDO::getItemNo,reqVO.getItemNo())
|
||||
.eqIfPresent(CheckItemDO::getNature, reqVO.getNature())
|
||||
.likeIfPresent(CheckItemDO::getUnitName, reqVO.getUnitName())
|
||||
.eqIfPresent(CheckItemDO::getCheckMethod, reqVO.getCheckMethod())
|
||||
@ -31,7 +47,7 @@ public interface CheckItemMapper extends BaseMapperX<CheckItemDO> {
|
||||
.eqIfPresent(CheckItemDO::getTestNum, reqVO.getTestNum())
|
||||
.eqIfPresent(CheckItemDO::getFloatNum, reqVO.getFloatNum())
|
||||
.eqIfPresent(CheckItemDO::getPrintAvgValues, reqVO.getPrintAvgValues())
|
||||
.orderByDesc(CheckItemDO::getId));
|
||||
.orderByDesc(CheckItemDO::getCreateTime));
|
||||
}
|
||||
|
||||
}
|
||||
@ -33,4 +33,9 @@ public interface InspPlanItemMapper extends BaseMapperX<InspPlanItemDO> {
|
||||
.orderByDesc(InspPlanItemDO::getId));
|
||||
}
|
||||
|
||||
default Long selectByItemIdCount(Integer id){
|
||||
return selectCount(new LambdaQueryWrapperX<InspPlanItemDO>()
|
||||
.eq(InspPlanItemDO::getItemId, id));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,10 +1,13 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.dal.mysql.proc;
|
||||
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.proc.vo.ProcPageReqVO;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.proc.vo.ProcRespVO;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.proc.ProcDO;
|
||||
import com.ningxia.yunxi.chemmes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@ -35,4 +38,15 @@ public interface ProcMapper extends BaseMapperX<ProcDO> {
|
||||
|
||||
default ProcDO selectByProcCd(String procCd) {
|
||||
return selectOne(ProcDO::getProcCd, procCd);
|
||||
}}
|
||||
}
|
||||
|
||||
default List<ProcDO> getProcList(){
|
||||
MPJLambdaWrapper<ProcDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(ProcDO.class)
|
||||
.select("u.nickname as creatorName")
|
||||
.leftJoin(AdminUserDO.class,"u",AdminUserDO::getId,ProcDO::getCreator)
|
||||
.eq(ProcDO::getEnabledStatus, 0)
|
||||
.orderByAsc(ProcDO::getProcCd);
|
||||
return selectList(query);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.dal.mysql.storearea;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.storearea.StoreAreaDO;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.storehouse.StoreHouseDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.storearea.vo.*;
|
||||
|
||||
/**
|
||||
* 库区主数据 Mapper
|
||||
*
|
||||
* @author 管理员
|
||||
*/
|
||||
@Mapper
|
||||
public interface StoreAreaMapper extends BaseMapperX<StoreAreaDO> {
|
||||
|
||||
default PageResult<StoreAreaDO> selectPage(StoreAreaPageReqVO reqVO) {
|
||||
MPJLambdaWrapper<StoreAreaDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(StoreAreaDO.class)
|
||||
.select("s.store_house_name as storeHouseName")
|
||||
.leftJoin(StoreHouseDO.class, "s",StoreHouseDO::getId,StoreAreaDO::getStoreHouseId)
|
||||
.disableSubLogicDel();
|
||||
query.eq(ObjectUtil.isNotEmpty( reqVO.getStoreType()),StoreAreaDO::getStoreType, reqVO.getStoreType());
|
||||
query.like(ObjectUtil.isNotEmpty( reqVO.getStoreHouseName()),StoreHouseDO::getStoreHouseName, reqVO.getStoreHouseName());
|
||||
query.eq(ObjectUtil.isNotEmpty( reqVO.getEnabledStatus()),StoreAreaDO::getEnabledStatus, reqVO.getEnabledStatus());
|
||||
return selectPage(reqVO, query);
|
||||
}
|
||||
|
||||
default Long selectByStoreAreCodeCount(String storeAreCd, Integer id){
|
||||
return selectCount(new LambdaQueryWrapperX<StoreAreaDO>()
|
||||
.eq(StoreAreaDO::getStoreAreCd, storeAreCd).ne(ObjectUtil.isNotEmpty(id),StoreAreaDO::getId,id));
|
||||
}
|
||||
}
|
||||
@ -2,6 +2,7 @@ package com.ningxia.yunxi.chemmes.module.biz.dal.mysql.storehouse;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
@ -21,7 +22,17 @@ public interface StoreHouseMapper extends BaseMapperX<StoreHouseDO> {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<StoreHouseDO>()
|
||||
.likeIfPresent(StoreHouseDO::getStoreHouseName, reqVO.getStoreHouseName())
|
||||
.eqIfPresent(StoreHouseDO::getEnabledStatus, reqVO.getEnabledStatus())
|
||||
.eqIfPresent(StoreHouseDO::getStoreType, reqVO.getStoreType())
|
||||
.orderByDesc(StoreHouseDO::getId));
|
||||
}
|
||||
|
||||
default Long selectByStoreHouseCodeCount(String storeHouseCd,Integer id){
|
||||
return selectCount(new LambdaQueryWrapperX<StoreHouseDO>()
|
||||
.eq(StoreHouseDO::getStoreHouseCd, storeHouseCd).ne(ObjectUtil.isNotEmpty(id),StoreHouseDO::getId,id));
|
||||
}
|
||||
|
||||
default List<StoreHouseDO> getStoreHouseSelect(){
|
||||
return selectList(new LambdaQueryWrapperX<StoreHouseDO>()
|
||||
.eq(StoreHouseDO::getEnabledStatus, 0));
|
||||
}
|
||||
}
|
||||
@ -1,11 +1,14 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.dal.mysql.techproc;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.storearea.StoreAreaDO;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.techproc.TechProcDO;
|
||||
import com.ningxia.yunxi.chemmes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.techproc.vo.*;
|
||||
|
||||
@ -18,9 +21,21 @@ import com.ningxia.yunxi.chemmes.module.biz.controller.admin.techproc.vo.*;
|
||||
public interface TechProcMapper extends BaseMapperX<TechProcDO> {
|
||||
|
||||
default PageResult<TechProcDO> selectPage(TechProcPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<TechProcDO>()
|
||||
.eqIfPresent(TechProcDO::getEnabledStatus, reqVO.getEnabledStatus())
|
||||
.orderByDesc(TechProcDO::getId));
|
||||
MPJLambdaWrapper<TechProcDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(TechProcDO.class)
|
||||
.select("u.nickname as nickname")
|
||||
.leftJoin(AdminUserDO.class, "u",AdminUserDO::getId,TechProcDO::getCreator)
|
||||
.disableSubLogicDel();
|
||||
query.eq(ObjectUtil.isNotEmpty( reqVO.getEnabledStatus()),TechProcDO::getEnabledStatus, reqVO.getEnabledStatus());
|
||||
return selectPage(reqVO, query);
|
||||
}
|
||||
|
||||
default Long selectByTechProcCount(String techProc, Integer id){
|
||||
return selectCount(new MPJLambdaWrapper<TechProcDO>()
|
||||
.eq(TechProcDO::getTechProc, techProc)
|
||||
.eq(TechProcDO::getId, id)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -6,11 +6,16 @@ import com.ningxia.yunxi.chemmes.module.biz.controller.admin.checkitem.vo.CheckI
|
||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.checkitem.vo.CheckItemSaveReqVO;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.checkitem.CheckItemDO;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.checkitem.CheckItemMapper;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.inspplanitem.InspPlanItemMapper;
|
||||
import com.ningxia.yunxi.chemmes.module.system.dal.dataobject.dict.DictDataDO;
|
||||
import com.ningxia.yunxi.chemmes.module.system.dal.mysql.dict.DictDataMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
|
||||
/**
|
||||
* 检验项目 Service 实现类
|
||||
*
|
||||
@ -22,9 +27,15 @@ public class CheckItemServiceImpl implements CheckItemService {
|
||||
|
||||
@Resource
|
||||
private CheckItemMapper checkItemMapper;
|
||||
@Resource
|
||||
private InspPlanItemMapper inspPlanItemMapper;
|
||||
@Resource
|
||||
private DictDataMapper dictDataMapper;
|
||||
|
||||
@Override
|
||||
public Integer createCheckItem(CheckItemSaveReqVO createReqVO) {
|
||||
// 校验同类下检验项名称不重复
|
||||
validateItemNameUnique(null, createReqVO.getItemType(), createReqVO.getItemName());
|
||||
// 插入
|
||||
CheckItemDO checkItem = BeanUtils.toBean(createReqVO, CheckItemDO.class);
|
||||
checkItemMapper.insert(checkItem);
|
||||
@ -36,6 +47,8 @@ public class CheckItemServiceImpl implements CheckItemService {
|
||||
public void updateCheckItem(CheckItemSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateCheckItemExists(updateReqVO.getId());
|
||||
// 校验同类下检验项名称不重复
|
||||
validateItemNameUnique(updateReqVO.getId(), updateReqVO.getItemType(), updateReqVO.getItemName());
|
||||
// 更新
|
||||
CheckItemDO updateObj = BeanUtils.toBean(updateReqVO, CheckItemDO.class);
|
||||
checkItemMapper.updateById(updateObj);
|
||||
@ -43,18 +56,42 @@ public class CheckItemServiceImpl implements CheckItemService {
|
||||
|
||||
@Override
|
||||
public void deleteCheckItem(Integer id) {
|
||||
|
||||
// 校验存在
|
||||
validateCheckItemExists(id);
|
||||
Long count = inspPlanItemMapper.selectByItemIdCount(id);
|
||||
if (count > 0) {
|
||||
throw exception("该检验标准已做质检方案,不允许删除,请确认。");
|
||||
}
|
||||
// 删除
|
||||
checkItemMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validateCheckItemExists(Integer id) {
|
||||
if (checkItemMapper.selectById(id) == null) {
|
||||
// throw exception(CHECK_ITEM_NOT_EXISTS);
|
||||
throw exception("数据不存在");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验同类下检验项名称不重复
|
||||
*/
|
||||
private void validateItemNameUnique(Integer id, String itemType, String itemName) {
|
||||
Long count = checkItemMapper.selectCountByItemTypeAndItemName(itemType, itemName, id);
|
||||
if (count > 0) {
|
||||
String itemTypeName = getItemTypeName(itemType);
|
||||
throw exception(itemTypeName + "内已存在检验名称为" + itemName + "的检验项,请确认!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取适用类型名称
|
||||
*/
|
||||
private String getItemTypeName(String itemType) {
|
||||
DictDataDO dictData = dictDataMapper.selectByDictTypeAndValue("mat_type", itemType);
|
||||
return dictData != null ? dictData.getLabel() : itemType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CheckItemDO getCheckItem(Integer id) {
|
||||
return checkItemMapper.selectById(id);
|
||||
|
||||
@ -56,4 +56,5 @@ public interface ProcService {
|
||||
|
||||
List<ProcRespVO> getProcDropdown(String keyWord);
|
||||
|
||||
List<ProcRespVO> getProcList();
|
||||
}
|
||||
|
||||
@ -92,4 +92,10 @@ public class ProcServiceImpl implements ProcService {
|
||||
return BeanUtils.toBean(procDOS, ProcRespVO.class);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProcRespVO> getProcList() {
|
||||
List<ProcDO> procDOS = procMapper.getProcList();
|
||||
return BeanUtils.toBean(procDOS, ProcRespVO.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,55 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.service.storearea;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.storearea.vo.*;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.storearea.StoreAreaDO;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 库区主数据 Service 接口
|
||||
*
|
||||
* @author 管理员
|
||||
*/
|
||||
public interface StoreAreaService {
|
||||
|
||||
/**
|
||||
* 创建库区主数据
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Integer createStoreArea(@Valid StoreAreaSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新库区主数据
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateStoreArea(@Valid StoreAreaSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除库区主数据
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteStoreArea(Integer id);
|
||||
|
||||
/**
|
||||
* 获得库区主数据
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 库区主数据
|
||||
*/
|
||||
StoreAreaDO getStoreArea(Integer id);
|
||||
|
||||
/**
|
||||
* 获得库区主数据分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 库区主数据分页
|
||||
*/
|
||||
PageResult<StoreAreaDO> getStoreAreaPage(StoreAreaPageReqVO pageReqVO);
|
||||
|
||||
}
|
||||
@ -0,0 +1,83 @@
|
||||
package com.ningxia.yunxi.chemmes.module.biz.service.storearea;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.storearea.vo.*;
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.storearea.StoreAreaDO;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageParam;
|
||||
import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils;
|
||||
|
||||
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.storearea.StoreAreaMapper;
|
||||
|
||||
import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.ningxia.yunxi.chemmes.module.biz.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
* 库区主数据 Service 实现类
|
||||
*
|
||||
* @author 管理员
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class StoreAreaServiceImpl implements StoreAreaService {
|
||||
|
||||
@Resource
|
||||
private StoreAreaMapper storeAreaMapper;
|
||||
|
||||
@Override
|
||||
public Integer createStoreArea(StoreAreaSaveReqVO createReqVO) {
|
||||
Long count = storeAreaMapper.selectByStoreAreCodeCount(createReqVO.getStoreAreCd(),createReqVO.getId());
|
||||
if (count > 0) {
|
||||
throw exception("库区编码已存在,请重新输入!");
|
||||
}
|
||||
|
||||
// 插入
|
||||
StoreAreaDO storeArea = BeanUtils.toBean(createReqVO, StoreAreaDO.class);
|
||||
storeAreaMapper.insert(storeArea);
|
||||
// 返回
|
||||
return storeArea.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStoreArea(StoreAreaSaveReqVO updateReqVO) {
|
||||
Long count = storeAreaMapper.selectByStoreAreCodeCount(updateReqVO.getStoreAreCd(),updateReqVO.getId());
|
||||
if (count > 0) {
|
||||
throw exception("库区编码已存在,请重新输入!");
|
||||
}
|
||||
// 校验存在
|
||||
validateStoreAreaExists(updateReqVO.getId());
|
||||
// 更新
|
||||
StoreAreaDO updateObj = BeanUtils.toBean(updateReqVO, StoreAreaDO.class);
|
||||
storeAreaMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteStoreArea(Integer id) {
|
||||
// 校验存在
|
||||
validateStoreAreaExists(id);
|
||||
// 删除
|
||||
storeAreaMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validateStoreAreaExists(Integer id) {
|
||||
if (storeAreaMapper.selectById(id) == null) {
|
||||
throw exception("数据不存在");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public StoreAreaDO getStoreArea(Integer id) {
|
||||
return storeAreaMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<StoreAreaDO> getStoreAreaPage(StoreAreaPageReqVO pageReqVO) {
|
||||
return storeAreaMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
||||
@ -52,4 +52,5 @@ public interface StoreHouseService {
|
||||
*/
|
||||
PageResult<StoreHouseDO> getStoreHousePage(StoreHousePageReqVO pageReqVO);
|
||||
|
||||
List<StoreHouseDO> getStoreHouseSelect();
|
||||
}
|
||||
@ -11,6 +11,10 @@ import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
|
||||
/**
|
||||
* 仓储主数据 Service 实现类
|
||||
*
|
||||
@ -25,6 +29,11 @@ public class StoreHouseServiceImpl implements StoreHouseService {
|
||||
|
||||
@Override
|
||||
public Integer createStoreHouse(StoreHouseSaveReqVO createReqVO) {
|
||||
Long count = storeHouseMapper.selectByStoreHouseCodeCount(createReqVO.getStoreHouseCd(),null);
|
||||
if (count > 0) {
|
||||
throw exception("仓储编码已存在,请重新输入!");
|
||||
}
|
||||
|
||||
// 插入
|
||||
StoreHouseDO storeHouse = BeanUtils.toBean(createReqVO, StoreHouseDO.class);
|
||||
storeHouseMapper.insert(storeHouse);
|
||||
@ -34,8 +43,12 @@ public class StoreHouseServiceImpl implements StoreHouseService {
|
||||
|
||||
@Override
|
||||
public void updateStoreHouse(StoreHouseSaveReqVO updateReqVO) {
|
||||
Long count = storeHouseMapper.selectByStoreHouseCodeCount(updateReqVO.getStoreHouseCd(),updateReqVO.getId());
|
||||
if (count > 0) {
|
||||
throw exception("仓储编码已存在,请重新输入!");
|
||||
}
|
||||
// 校验存在
|
||||
validateStoreHouseExists(updateReqVO.getId());
|
||||
// validateStoreHouseExists(updateReqVO.getId());
|
||||
// 更新
|
||||
StoreHouseDO updateObj = BeanUtils.toBean(updateReqVO, StoreHouseDO.class);
|
||||
storeHouseMapper.updateById(updateObj);
|
||||
@ -51,7 +64,7 @@ public class StoreHouseServiceImpl implements StoreHouseService {
|
||||
|
||||
private void validateStoreHouseExists(Integer id) {
|
||||
if (storeHouseMapper.selectById(id) == null) {
|
||||
// throw exception(STORE_HOUSE_NOT_EXISTS);
|
||||
throw exception("数据不存在");
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,4 +78,9 @@ public class StoreHouseServiceImpl implements StoreHouseService {
|
||||
return storeHouseMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StoreHouseDO> getStoreHouseSelect() {
|
||||
return storeHouseMapper.getStoreHouseSelect();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -11,6 +11,8 @@ import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
|
||||
/**
|
||||
* 工艺流程主数据 Service 实现类
|
||||
*
|
||||
@ -25,6 +27,10 @@ public class TechProcServiceImpl implements TechProcService {
|
||||
|
||||
@Override
|
||||
public Integer createTechProc(TechProcSaveReqVO createReqVO) {
|
||||
Long count = techProcMapper.selectByTechProcCount(createReqVO.getTechProc(),null);
|
||||
if (count > 0) {
|
||||
throw exception("工艺流程已存在,请重新选择!");
|
||||
}
|
||||
// 插入
|
||||
TechProcDO techProc = BeanUtils.toBean(createReqVO, TechProcDO.class);
|
||||
techProcMapper.insert(techProc);
|
||||
@ -34,6 +40,10 @@ public class TechProcServiceImpl implements TechProcService {
|
||||
|
||||
@Override
|
||||
public void updateTechProc(TechProcSaveReqVO updateReqVO) {
|
||||
Long count = techProcMapper.selectByTechProcCount(updateReqVO.getTechProc(),updateReqVO.getId());
|
||||
if (count > 0) {
|
||||
throw exception("工艺流程已存在,请重新选择!");
|
||||
}
|
||||
// 校验存在
|
||||
validateTechProcExists(updateReqVO.getId());
|
||||
// 更新
|
||||
@ -51,7 +61,7 @@ public class TechProcServiceImpl implements TechProcService {
|
||||
|
||||
private void validateTechProcExists(Integer id) {
|
||||
if (techProcMapper.selectById(id) == null) {
|
||||
// throw exception(TECH_PROC_NOT_EXISTS);
|
||||
throw exception("数据不存在");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@ spring:
|
||||
redis:
|
||||
host: 218.95.153.170 # 地址
|
||||
port: 6379 # 端口
|
||||
database: 9 # 数据库索引
|
||||
database: 8 # 数据库索引
|
||||
password: 'qweasd,.123' # 密码,建议生产环境开启
|
||||
|
||||
--- #################### 定时任务相关配置 ####################
|
||||
|
||||
@ -59,7 +59,7 @@ spring:
|
||||
redis:
|
||||
host: localhost # 地址
|
||||
port: 6379 # 端口
|
||||
database: 9 # 数据库索引
|
||||
database: 8 # 数据库索引
|
||||
password: 'qweasd,.123' # 密码,建议生产环境开启
|
||||
|
||||
--- #################### 定时任务相关配置 ####################
|
||||
|
||||
@ -42,3 +42,7 @@ export const exportProc = async (params) => {
|
||||
export const getProcDropdown = async (params) => {
|
||||
return await request.get({ url: `/biz/proc/dropdown`, params })
|
||||
}
|
||||
// 获取工序下拉列表
|
||||
export const getProcList = async () => {
|
||||
return await request.get({ url: `/biz/proc/getProcList` })
|
||||
}
|
||||
|
||||
42
mes-ui/mes-ui-admin-vue3/src/api/biz/storearea/index.ts
Normal file
42
mes-ui/mes-ui-admin-vue3/src/api/biz/storearea/index.ts
Normal file
@ -0,0 +1,42 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
export interface StoreAreaVO {
|
||||
id: number
|
||||
fCreatorUserId: string
|
||||
storeAreCd: string
|
||||
storeAreaName: string
|
||||
enabledStatus: number
|
||||
remark: string
|
||||
storeHouseId: number
|
||||
storeType: string
|
||||
}
|
||||
|
||||
// 查询库区主数据分页
|
||||
export const getStoreAreaPage = async (params) => {
|
||||
return await request.get({ url: `/biz/store-area/page`, params })
|
||||
}
|
||||
|
||||
// 查询库区主数据详情
|
||||
export const getStoreArea = async (id: number) => {
|
||||
return await request.get({ url: `/biz/store-area/get?id=` + id })
|
||||
}
|
||||
|
||||
// 新增库区主数据
|
||||
export const createStoreArea = async (data: StoreAreaVO) => {
|
||||
return await request.post({ url: `/biz/store-area/create`, data })
|
||||
}
|
||||
|
||||
// 修改库区主数据
|
||||
export const updateStoreArea = async (data: StoreAreaVO) => {
|
||||
return await request.put({ url: `/biz/store-area/update`, data })
|
||||
}
|
||||
|
||||
// 删除库区主数据
|
||||
export const deleteStoreArea = async (id: number) => {
|
||||
return await request.delete({ url: `/biz/store-area/delete?id=` + id })
|
||||
}
|
||||
|
||||
// 导出库区主数据 Excel
|
||||
export const exportStoreArea = async (params) => {
|
||||
return await request.download({ url: `/biz/store-area/export-excel`, params })
|
||||
}
|
||||
@ -38,3 +38,7 @@ export const deleteStoreHouse = async (id: number) => {
|
||||
export const exportStoreHouse = async (params) => {
|
||||
return await request.download({ url: `/biz/store-house/export-excel`, params })
|
||||
}
|
||||
//获取仓储主数据下拉列表
|
||||
export const getStoreHouseSelect = async () => {
|
||||
return await request.get({ url: `/biz/store-house/get-store-house-select`})
|
||||
}
|
||||
|
||||
@ -131,7 +131,7 @@ export enum DICT_TYPE {
|
||||
SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type',
|
||||
SYSTEM_SOCIAL_TYPE = 'system_social_type',
|
||||
SYSTEM_STATUS = 'system_status',
|
||||
SYSTEM_IS_CELL = 'system_is_cell',
|
||||
SYSTEM_IS_CELL = 'system_is_cell',//是否
|
||||
|
||||
// ========== INFRA 模块 ==========
|
||||
INFRA_BOOLEAN_STRING = 'infra_boolean_string',
|
||||
|
||||
@ -1,45 +1,51 @@
|
||||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="800px" @close="cancel">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="100px"
|
||||
:rules="formData.itemType=='3'?formRules:formRules1"
|
||||
label-width="120px"
|
||||
v-loading="formLoading"
|
||||
:validate-on-rule-change="false"
|
||||
:key="formData.itemType"
|
||||
|
||||
>
|
||||
<el-form-item label="检验项编号" prop="itemNo">
|
||||
<el-input v-model="formData.itemNo" placeholder="请输入检验项编号" />
|
||||
<el-row :gutter="15">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="编号" prop="itemNo">
|
||||
<el-input v-model="formData.itemNo" placeholder="请输入检验项编号" class="!w-240px"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="检验项名称" prop="itemName">
|
||||
<el-input v-model="formData.itemName" placeholder="请输入检验项名称" />
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="名称" prop="itemName">
|
||||
<el-input v-model="formData.itemName" placeholder="请输入名称" class="!w-240px"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="性质,1 表示定性,2 表示定量" prop="nature">
|
||||
<el-input v-model="formData.nature" placeholder="请输入性质,1 表示定性,2 表示定量" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单位" prop="unitName">
|
||||
<el-input v-model="formData.unitName" placeholder="请输入单位" />
|
||||
</el-form-item>
|
||||
<el-form-item label="检验方法" prop="checkMethod">
|
||||
<el-input v-model="formData.checkMethod" placeholder="请输入检验方法" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-form-item label="适用类型,1表示原材料 2表示半成品 3表示成品" prop="itemType">
|
||||
<el-select v-model="formData.itemType" placeholder="请选择适用类型,1表示原材料 2表示半成品 3表示成品">
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.MAT_TYPE)"
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="15">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="性质" prop="nature">
|
||||
<el-radio-group v-model="formData.nature">
|
||||
<el-radio
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.NATURE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
:label="dict.value"
|
||||
>
|
||||
{{ dict.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="检验大类" prop="itemClass">
|
||||
<el-input v-model="formData.itemClass" placeholder="请输入检验大类" />
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="单位" prop="unitName">
|
||||
<el-input v-model="formData.unitName" placeholder="请输入单位" class="!w-240px"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="检验值类型( I -数字 T- 文本)" prop="itemValueType">
|
||||
<el-select v-model="formData.itemValueType" placeholder="请选择检验值类型( I -数字 T- 文本)">
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="15">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="检验值类型" prop="itemValueType">
|
||||
<el-select v-model="formData.itemValueType" placeholder="请选择检验值类型" @change="handleItemValueTypeChange">
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.TEST_VALUE_TYPE)"
|
||||
:key="dict.value"
|
||||
@ -48,30 +54,103 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="绑定输入文本(符合,不符合)" prop="itemContent">
|
||||
<Editor v-model="formData.itemContent" height="150px" />
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="适用类型" prop="itemType">
|
||||
<el-select v-model="formData.itemType" placeholder="请选择适用类型" @change="handleItemTypeChange">
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.MAT_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="15">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="检验值数量" prop="testNum">
|
||||
<el-input v-model="formData.testNum" placeholder="请输入检验值数量" />
|
||||
<el-input v-model="formData.testNum" placeholder="请输入检验值数量" class="!w-240px"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="绑定值" prop="itemContent">
|
||||
<el-input v-model="formData.itemContent" class="!w-240px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="15">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否取平均值" prop="printAvgValues">
|
||||
<el-radio-group v-model="formData.printAvgValues">
|
||||
<el-radio
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_IS_CELL)"
|
||||
:key="dict.value"
|
||||
:label="dict.value"
|
||||
>
|
||||
{{ dict.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="小数位数" prop="floatNum">
|
||||
<el-input v-model="formData.floatNum" placeholder="请输入小数位数" />
|
||||
<el-input v-model="formData.floatNum" placeholder="请输入小数位数" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="打印是否取平均值" prop="printAvgValues">
|
||||
<el-input v-model="formData.printAvgValues" placeholder="请输入打印是否取平均值" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="15">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="检验大类" prop="itemClass">
|
||||
<el-select v-model="formData.itemClass" placeholder="请选择检验大类" v-if="formData.itemType=='3'">
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.FINISHED_PRODUCT_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-select v-model="formData.itemClass" placeholder="请选择检验大类" v-if="formData.itemType=='1'">
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.RAW_MATERIALS_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-select v-model="formData.itemClass" placeholder="请选择检验大类" v-if="formData.itemType=='2'||!formData.itemType" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="15">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="检验方法" prop="checkMethod">
|
||||
<el-input type="textarea" :rows="4" v-model="formData.checkMethod" placeholder="请输入检验方法"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="15">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input type="textarea" :rows="4" v-model="formData.remark" placeholder="请输入备注"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import {getStrDictOptions, DICT_TYPE, getIntDictOptions} from '@/utils/dict'
|
||||
import * as CheckItemApi from '@/api/biz/checkitem'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const {t} = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
@ -79,22 +158,51 @@ const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
itemNo: undefined,
|
||||
itemName: undefined,
|
||||
nature: undefined,
|
||||
unitName: undefined,
|
||||
checkMethod: undefined,
|
||||
remark: undefined,
|
||||
itemType: undefined,
|
||||
itemClass: undefined,
|
||||
itemValueType: undefined,
|
||||
itemContent: undefined,
|
||||
testNum: undefined,
|
||||
floatNum: undefined,
|
||||
printAvgValues: undefined,
|
||||
id: undefined as number | undefined,
|
||||
itemNo: undefined as string | undefined,
|
||||
itemName: undefined as string | undefined,
|
||||
nature: undefined as string | undefined,
|
||||
unitName: undefined as string | undefined,
|
||||
checkMethod: undefined as string | undefined,
|
||||
remark: undefined as string | undefined,
|
||||
itemType: undefined as string | undefined,
|
||||
itemClass: undefined as string | undefined,
|
||||
itemValueType: undefined as string | undefined,
|
||||
itemContent: undefined as string | undefined,
|
||||
testNum: undefined as string | undefined,
|
||||
floatNum: undefined as number | string | undefined,
|
||||
printAvgValues: "0" as string | undefined,
|
||||
})
|
||||
const formRules = reactive({
|
||||
itemName: [
|
||||
{ required: true, message: '请输入名称', trigger: 'blur' }
|
||||
],
|
||||
nature: [
|
||||
{ required: true, message: '性质不能为空', trigger: 'change' }
|
||||
],
|
||||
itemType: [
|
||||
{ required: true, message: '请选择适用类型', trigger: 'change' }
|
||||
],
|
||||
itemContent: [
|
||||
{ pattern: /^[\w\u4e00-\u9fa5]+(,[\w\u4e00-\u9fa5]+)*$/, message: '格式错误', trigger: 'blur' }
|
||||
],
|
||||
itemClass: [
|
||||
{ required: true, message: '检验大类', trigger: 'change' }
|
||||
]
|
||||
})
|
||||
const formRules1 = reactive({
|
||||
itemName: [
|
||||
{ required: true, message: '请输入名称', trigger: 'blur' }
|
||||
],
|
||||
nature: [
|
||||
{ required: true, message: '性质不能为空', trigger: 'change' }
|
||||
],
|
||||
itemType: [
|
||||
{ required: true, message: '请选择适用类型', trigger: 'change' }
|
||||
],
|
||||
itemContent: [
|
||||
{ pattern: /^[\w\u4e00-\u9fa5]+(,[\w\u4e00-\u9fa5]+)*$/, message: '格式错误', trigger: 'blur' }
|
||||
]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
@ -114,13 +222,43 @@ const open = async (type: string, id?: number) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
defineExpose({open}) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
/** 适用类型变化 */
|
||||
const handleItemTypeChange = () => {
|
||||
formData.value.itemClass = undefined
|
||||
}
|
||||
|
||||
/** 检验值类型变化 */
|
||||
const handleItemValueTypeChange = (row: string) => {
|
||||
if (row === 'I') {
|
||||
formData.value.floatNum = 2
|
||||
} else {
|
||||
formData.value.floatNum = ''
|
||||
}
|
||||
}
|
||||
const cancel = async () => {
|
||||
dialogVisible.value = false
|
||||
emit('success')
|
||||
}
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
// 额外校验
|
||||
if (formData.value.itemValueType === 'I' && formData.value.itemContent != null && formData.value.itemContent !== '') {
|
||||
message.error('检验值类型为数字类型,绑定值必须为空,请确认')
|
||||
return
|
||||
}
|
||||
if (formData.value.itemValueType === 'T' && formData.value.floatNum != null && formData.value.floatNum !== '') {
|
||||
message.error('检验值类型为文本类型,小数位数必须为空,请确认')
|
||||
return
|
||||
}
|
||||
if (formData.value.itemValueType === 'I' && (formData.value.floatNum == null || formData.value.floatNum === '')) {
|
||||
message.error('检验值类型为数字类型,小数位数必须输入,请确认')
|
||||
return
|
||||
}
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
@ -156,7 +294,7 @@ const resetForm = () => {
|
||||
itemContent: undefined,
|
||||
testNum: undefined,
|
||||
floatNum: undefined,
|
||||
printAvgValues: undefined,
|
||||
printAvgValues: "0",
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
|
||||
@ -6,57 +6,12 @@
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
label-width="80px"
|
||||
>
|
||||
<el-form-item label="检验项名称" prop="itemName">
|
||||
<el-input
|
||||
v-model="queryParams.itemName"
|
||||
placeholder="请输入检验项名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="性质,1 表示定性,2 表示定量" prop="nature">
|
||||
<el-input
|
||||
v-model="queryParams.nature"
|
||||
placeholder="请输入性质,1 表示定性,2 表示定量"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="单位" prop="unitName">
|
||||
<el-input
|
||||
v-model="queryParams.unitName"
|
||||
placeholder="请输入单位"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="检验方法" prop="checkMethod">
|
||||
<el-input
|
||||
v-model="queryParams.checkMethod"
|
||||
placeholder="请输入检验方法"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input
|
||||
v-model="queryParams.remark"
|
||||
placeholder="请输入备注"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="适用类型,1表示原材料 2表示半成品 3表示成品" prop="itemType">
|
||||
<el-form-item label="适用类型" prop="itemType">
|
||||
<el-select
|
||||
v-model="queryParams.itemType"
|
||||
placeholder="请选择适用类型,1表示原材料 2表示半成品 3表示成品"
|
||||
placeholder="请选择适用类型"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
@ -68,52 +23,19 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="检验大类" prop="itemClass">
|
||||
<el-form-item label="编号" prop="itemNo">
|
||||
<el-input
|
||||
v-model="queryParams.itemClass"
|
||||
placeholder="请输入检验大类"
|
||||
v-model="queryParams.itemNo"
|
||||
placeholder="请输入编号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="检验值类型( I -数字 T- 文本)" prop="itemValueType">
|
||||
<el-select
|
||||
v-model="queryParams.itemValueType"
|
||||
placeholder="请选择检验值类型( I -数字 T- 文本)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.TEST_VALUE_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="检验值数量" prop="testNum">
|
||||
<el-form-item label="检验名称" prop="itemName">
|
||||
<el-input
|
||||
v-model="queryParams.testNum"
|
||||
placeholder="请输入检验值数量"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="小数位数" prop="floatNum">
|
||||
<el-input
|
||||
v-model="queryParams.floatNum"
|
||||
placeholder="请输入小数位数"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="打印是否取平均值" prop="printAvgValues">
|
||||
<el-input
|
||||
v-model="queryParams.printAvgValues"
|
||||
placeholder="请输入打印是否取平均值"
|
||||
v-model="queryParams.itemName"
|
||||
placeholder="请输入检验名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
@ -130,62 +52,51 @@
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['biz:check-item:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="自增字段" align="center" prop="id" />
|
||||
<el-table-column label="检验项编号" align="center" prop="itemNo" />
|
||||
<el-table-column label="检验项名称" align="center" prop="itemName" />
|
||||
<el-table-column label="性质,1 表示定性,2 表示定量" align="center" prop="nature">
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" border>
|
||||
<el-table-column type="index" label="序号" align="center" min-width="60" />
|
||||
<el-table-column label="名称" align="center" prop="itemName" width="180"/>
|
||||
<el-table-column label="性质" align="center" prop="nature" width="120">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.NATURE" :value="scope.row.nature" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位" align="center" prop="unitName" />
|
||||
<el-table-column label="检验方法" align="center" prop="checkMethod" />
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="适用类型,1表示原材料 2表示半成品 3表示成品" align="center" prop="itemType">
|
||||
<el-table-column label="检验大类" align="center" prop="itemClass" width="120">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.RAW_MATERIALS_TYPE" :value="scope.row.itemType" v-if="scope.row.itemType==1"/>
|
||||
<dict-tag :type="DICT_TYPE.FINISHED_PRODUCT_TYPE" :value="scope.row.itemType" v-if="scope.row.itemType==3"/>
|
||||
<span v-if="scope.row.itemType!=1 && scope.row.itemType!=3"></span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位" align="center" prop="unitName" width="120"/>
|
||||
<el-table-column label="检验方法" align="center" prop="checkMethod" width="200"/>
|
||||
<el-table-column label="适用类型" align="center" prop="itemType" width="120">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.MAT_TYPE" :value="scope.row.itemType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="检验大类" align="center" prop="itemClass" />
|
||||
<el-table-column label="检验值类型( I -数字 T- 文本)" align="center" prop="itemValueType">
|
||||
<el-table-column label="检验值类型" align="center" prop="itemValueType" width="120">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.TEST_VALUE_TYPE" :value="scope.row.itemValueType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="绑定输入文本(符合,不符合)" align="center" prop="itemContent" />
|
||||
<el-table-column label="检验值数量" align="center" prop="testNum" />
|
||||
<el-table-column label="小数位数" align="center" prop="floatNum" />
|
||||
<el-table-column label="打印是否取平均值" align="center" prop="printAvgValues" />
|
||||
<el-table-column label="操作" align="center">
|
||||
<el-table-column label="检验值数量" align="center" prop="testNum" width="120"/>
|
||||
<el-table-column label="绑定值" align="center" prop="itemContent" width="200"/>
|
||||
<el-table-column label="小数位数" align="center" prop="floatNum" width="120" />
|
||||
<el-table-column label="备注" align="center" prop="remark" width="200"/>
|
||||
<el-table-column label="编号" align="center" prop="itemNo" />
|
||||
<el-table-column label="操作" align="center" width="120" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.id)"
|
||||
v-hasPermi="['biz:check-item:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
@ -193,14 +104,13 @@
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['biz:check-item:delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
@ -215,8 +125,6 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import * as CheckItemApi from '@/api/biz/checkitem'
|
||||
import CheckItemForm from './CheckItemForm.vue'
|
||||
|
||||
@ -225,7 +133,7 @@ defineOptions({ name: 'CheckItem' })
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const loading = ref(false) // 列表的加载中
|
||||
const list = ref([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
@ -243,9 +151,9 @@ const queryParams = reactive({
|
||||
testNum: undefined,
|
||||
floatNum: undefined,
|
||||
printAvgValues: undefined,
|
||||
itemNo:undefined,
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
@ -290,23 +198,10 @@ const handleDelete = async (id: number) => {
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await CheckItemApi.exportCheckItem(queryParams)
|
||||
download.excel(data, '检验项目.xls')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getList()
|
||||
// getList()
|
||||
})
|
||||
</script>
|
||||
@ -0,0 +1,151 @@
|
||||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
@close="cancel"
|
||||
>
|
||||
|
||||
<el-form-item label="仓库" prop="storeHouseId">
|
||||
<el-select class="!w-240px" v-model="formData.storeHouseId" clearable filterable @change="handleStoreHouseChange">
|
||||
<el-option
|
||||
v-for="dict in storeHouseList"
|
||||
:key="dict.id"
|
||||
:label="dict.storeHouseName"
|
||||
:value="dict.id"
|
||||
/>
|
||||
</el-select> </el-form-item>
|
||||
<el-form-item label="库区编码" prop="storeAreCd">
|
||||
<el-input v-model="formData.storeAreCd" placeholder="请输入库区编码" class="!w-240px" :disabled="formData.id"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="库区名称" prop="storeAreaName">
|
||||
<el-input v-model="formData.storeAreaName" placeholder="请输入库区名称" class="!w-240px"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="enabledStatus">
|
||||
<el-select v-model="formData.enabledStatus" placeholder="请选择状态">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input type='textarea' :rows="4" v-model="formData.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import * as StoreAreaApi from '@/api/biz/storearea'
|
||||
import * as StoreHouseApi from '@/api/biz/storehouse'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
const storeHouseList = ref()
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
fCreatorUserId: undefined,
|
||||
storeAreCd: undefined,
|
||||
storeAreaName: undefined,
|
||||
enabledStatus: 0,
|
||||
remark: undefined,
|
||||
storeHouseId: undefined,
|
||||
storeType: undefined,
|
||||
})
|
||||
const formRules = reactive({
|
||||
storeHouseId: [{ required: true, message: '仓库不能为空', trigger: 'change' }],
|
||||
storeAreCd: [{ required: true, message: '库区编码不能为空', trigger: 'blur' }],
|
||||
storeAreaName: [{ required: true, message: '库区名称不能为空', trigger: 'blur' }],
|
||||
enabledStatus: [{ required: true, message: '状态不能为空', trigger: 'change' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
resetForm()
|
||||
storeHouseList.value = await StoreHouseApi.getStoreHouseSelect()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await StoreAreaApi.getStoreArea(id)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
const cancel = async () => {
|
||||
dialogVisible.value = false
|
||||
emit('success')
|
||||
|
||||
}
|
||||
/** 仓库选择变化事件 */
|
||||
const handleStoreHouseChange = (storeHouseId: number) => {
|
||||
if (!storeHouseId) {
|
||||
formData.value.storeType = undefined
|
||||
return
|
||||
}
|
||||
const selectedStore = storeHouseList.value.find((item: any) => item.id === storeHouseId)
|
||||
if (selectedStore) {
|
||||
formData.value.storeType = selectedStore.storeType
|
||||
}
|
||||
}
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
const data = formData.value as unknown as StoreAreaApi.StoreAreaVO
|
||||
if (formType.value === 'create') {
|
||||
await StoreAreaApi.createStoreArea(data)
|
||||
message.success(t('common.createSuccess'))
|
||||
} else {
|
||||
await StoreAreaApi.updateStoreArea(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
fCreatorUserId: undefined,
|
||||
storeAreCd: undefined,
|
||||
storeAreaName: undefined,
|
||||
enabledStatus: 0,
|
||||
remark: undefined,
|
||||
storeHouseId: undefined,
|
||||
storeType: undefined,
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
202
mes-ui/mes-ui-admin-vue3/src/views/biz/storearea/index.vue
Normal file
202
mes-ui/mes-ui-admin-vue3/src/views/biz/storearea/index.vue
Normal file
@ -0,0 +1,202 @@
|
||||
<template>
|
||||
<ContentWrap>
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="80px"
|
||||
>
|
||||
|
||||
<el-form-item label="仓库类型" prop="storeType">
|
||||
<el-select
|
||||
v-model="queryParams.storeType"
|
||||
placeholder="请选择仓库类型"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.WAREHOUSE_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="仓库名称" prop="storeHouseName">
|
||||
<el-input
|
||||
v-model="queryParams.storeHouseName"
|
||||
placeholder="请输入仓库名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="enabledStatus">
|
||||
<el-select
|
||||
v-model="queryParams.enabledStatus"
|
||||
placeholder="请选择状态"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create')"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" border>
|
||||
<el-table-column type="index" label="序号" align="center" min-width="60" />
|
||||
<el-table-column label="仓库名称" align="center" prop="storeHouseName" />
|
||||
<el-table-column label="仓库类型" align="center" prop="storeType" >
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.WAREHOUSE_TYPE" :value="scope.row.storeType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="库区编码" align="center" prop="storeAreCd" />
|
||||
<el-table-column label="库区名称" align="center" prop="storeAreaName" />
|
||||
<el-table-column label="状态" align="center" prop="enabledStatus">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.SYSTEM_STATUS" :value="scope.row.enabledStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
:formatter="dateFormatter2"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.id)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<!-- <el-button-->
|
||||
<!-- link-->
|
||||
<!-- type="danger"-->
|
||||
<!-- @click="handleDelete(scope.row.id)"-->
|
||||
<!-- v-hasPermi="['biz:store-area:delete']"-->
|
||||
<!-- >-->
|
||||
<!-- 删除-->
|
||||
<!-- </el-button>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<StoreAreaForm ref="formRef" @success="getList" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { dateFormatter2} from '@/utils/formatTime'
|
||||
import * as StoreAreaApi from '@/api/biz/storearea'
|
||||
import StoreAreaForm from './StoreAreaForm.vue'
|
||||
|
||||
defineOptions({ name: 'StoreArea' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(false) // 列表的加载中
|
||||
const list = ref([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
fCreatorUserId: undefined,
|
||||
createTime: [],
|
||||
storeAreCd: undefined,
|
||||
storeAreaName: undefined,
|
||||
enabledStatus: undefined,
|
||||
remark: undefined,
|
||||
storeHouseId: undefined,
|
||||
storeType: undefined,
|
||||
storeHouseName:undefined
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await StoreAreaApi.getStoreAreaPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 添加/修改操作 */
|
||||
const formRef = ref()
|
||||
const openForm = (type: string, id?: number) => {
|
||||
formRef.value.open(type, id)
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
// const handleDelete = async (id: number) => {
|
||||
// try {
|
||||
// // 删除的二次确认
|
||||
// await message.delConfirm()
|
||||
// // 发起删除
|
||||
// await StoreAreaApi.deleteStoreArea(id)
|
||||
// message.success(t('common.delSuccess'))
|
||||
// // 刷新列表
|
||||
// await getList()
|
||||
// } catch {}
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
// getList()
|
||||
})
|
||||
</script>
|
||||
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" @close="cancel">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
@ -7,28 +7,8 @@
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="仓储编码" prop="storeHouseCd">
|
||||
<el-input v-model="formData.storeHouseCd" placeholder="请输入仓储编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="仓储名称" prop="storeHouseName">
|
||||
<el-input v-model="formData.storeHouseName" placeholder="请输入仓储名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态(1启用 2 未启用)" prop="enabledStatus">
|
||||
<el-radio-group v-model="formData.enabledStatus">
|
||||
<el-radio
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.value"
|
||||
>
|
||||
{{ dict.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-form-item label="仓库类型(1 原料库 2 在制品库 3 成品库)" prop="storeType">
|
||||
<el-select v-model="formData.storeType" placeholder="请选择仓库类型(1 原料库 2 在制品库 3 成品库)">
|
||||
<el-form-item label="仓库类型" prop="storeType">
|
||||
<el-select v-model="formData.storeType" placeholder="请选择仓库类型">
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.WAREHOUSE_TYPE)"
|
||||
:key="dict.value"
|
||||
@ -37,15 +17,38 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="仓储编码" prop="storeHouseCd">
|
||||
<el-input v-model="formData.storeHouseCd" placeholder="请输入仓储编码" class="!w-240px" :disabled="formData.id"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="仓储名称" prop="storeHouseName">
|
||||
<el-input v-model="formData.storeHouseName" placeholder="请输入仓储名称" class="!w-240px" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态" prop="enabledStatus">
|
||||
<el-select v-model="formData.enabledStatus" placeholder="请选择状态">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input type="textarea" :rows="4" v-model="formData.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import {getStrDictOptions, DICT_TYPE, getIntDictOptions} from '@/utils/dict'
|
||||
import * as StoreHouseApi from '@/api/biz/storehouse'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
@ -59,11 +62,15 @@ const formData = ref({
|
||||
id: undefined,
|
||||
storeHouseCd: undefined,
|
||||
storeHouseName: undefined,
|
||||
enabledStatus: undefined,
|
||||
enabledStatus: 0,
|
||||
remark: undefined,
|
||||
storeType: undefined,
|
||||
})
|
||||
const formRules = reactive({
|
||||
storeType: [{ required: true, message: '仓库类型不能为空', trigger: 'change' }],
|
||||
storeHouseCd: [{ required: true, message: '仓储编码不能为空', trigger: 'blur' }],
|
||||
storeHouseName: [{ required: true, message: '仓储名称不能为空', trigger: 'blur' }],
|
||||
enabledStatus: [{ required: true, message: '状态不能为空', trigger: 'change' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
@ -84,7 +91,11 @@ const open = async (type: string, id?: number) => {
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
const cancel = async () => {
|
||||
dialogVisible.value = false
|
||||
emit('success')
|
||||
|
||||
}
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
@ -115,7 +126,7 @@ const resetForm = () => {
|
||||
id: undefined,
|
||||
storeHouseCd: undefined,
|
||||
storeHouseName: undefined,
|
||||
enabledStatus: undefined,
|
||||
enabledStatus: 0,
|
||||
remark: undefined,
|
||||
storeType: undefined,
|
||||
}
|
||||
|
||||
@ -6,21 +6,27 @@
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
label-width="80px"
|
||||
>
|
||||
<el-form-item label="仓储名称" prop="storeHouseName">
|
||||
<el-input
|
||||
v-model="queryParams.storeHouseName"
|
||||
placeholder="请输入仓储名称"
|
||||
<el-form-item label="仓库类型" prop="storeType">
|
||||
<el-select
|
||||
v-model="queryParams.storeType"
|
||||
placeholder="请选择仓库类型"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.WAREHOUSE_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态(1启用 2 未启用)" prop="enabledStatus">
|
||||
<el-form-item label="状态" prop="enabledStatus">
|
||||
<el-select
|
||||
v-model="queryParams.enabledStatus"
|
||||
placeholder="请选择状态(1启用 2 未启用)"
|
||||
placeholder="请选择状态"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
@ -39,65 +45,55 @@
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create')"
|
||||
v-hasPermi="['biz:store-house:create']"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['biz:store-house:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="自增字段" align="center" prop="id" />
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" border>
|
||||
<el-table-column type="index" label="序号" align="center" min-width="60" />
|
||||
<el-table-column label="仓库类型" align="center" prop="storeType">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.WAREHOUSE_TYPE" :value="scope.row.storeType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="仓储编码" align="center" prop="storeHouseCd" />
|
||||
<el-table-column label="仓储名称" align="center" prop="storeHouseName" />
|
||||
<el-table-column label="状态(1启用 2 未启用)" align="center" prop="enabledStatus">
|
||||
<el-table-column label="状态" align="center" prop="enabledStatus">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.SYSTEM_STATUS" :value="scope.row.enabledStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="仓库类型(1 原料库 2 在制品库 3 成品库)" align="center" prop="storeType">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.WAREHOUSE_TYPE" :value="scope.row.storeType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
:formatter="dateFormatter2"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.id)"
|
||||
v-hasPermi="['biz:store-house:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['biz:store-house:delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<!-- <el-button-->
|
||||
<!-- link-->
|
||||
<!-- type="danger"-->
|
||||
<!-- @click="handleDelete(scope.row.id)"-->
|
||||
<!-- v-hasPermi="['biz:store-house:delete']"-->
|
||||
<!-- >-->
|
||||
<!-- 删除-->
|
||||
<!-- </el-button>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -116,8 +112,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import { dateFormatter2} from '@/utils/formatTime'
|
||||
import * as StoreHouseApi from '@/api/biz/storehouse'
|
||||
import StoreHouseForm from './StoreHouseForm.vue'
|
||||
|
||||
@ -126,17 +121,17 @@ defineOptions({ name: 'StoreHouse' })
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const loading = ref(false) // 列表的加载中
|
||||
const list = ref([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
storeHouseName: undefined,
|
||||
storeType: undefined,
|
||||
enabledStatus: undefined,
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
@ -181,23 +176,10 @@ const handleDelete = async (id: number) => {
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await StoreHouseApi.exportStoreHouse(queryParams)
|
||||
download.excel(data, '仓储主数据.xls')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getList()
|
||||
// getList()
|
||||
})
|
||||
</script>
|
||||
@ -1,57 +1,91 @@
|
||||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="1200" @close="cancel">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
|
||||
>
|
||||
<el-form-item label="工艺流程" prop="techProc">
|
||||
<el-input v-model="formData.techProc" placeholder="请输入工艺流程" />
|
||||
<el-input v-model="techProcDisplay" placeholder="请输入工艺流程" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态(1启用 2 未启用)" prop="enabledStatus">
|
||||
<el-radio-group v-model="formData.enabledStatus">
|
||||
<el-radio
|
||||
<el-form-item label="状态" prop="enabledStatus">
|
||||
<el-select v-model="formData.enabledStatus" placeholder="请选择状态">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.value"
|
||||
>
|
||||
{{ dict.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" placeholder="请输入备注" />
|
||||
<el-input type="textarea" :rows="4" v-model="formData.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">工序信息</span>
|
||||
</template>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-card class="hl-incard">
|
||||
<el-form ref="OrderYsDetailSubFormRef" :model="procList" label-width="0" >
|
||||
<el-table ref="procTable" :data="procList" class="hl-table" @selection-change="handleProcSelectionChange" border>
|
||||
<el-table-column type="selection" width="55"/>
|
||||
<el-table-column prop="procCd" label="工序编码" align="center"/>
|
||||
<el-table-column prop="procName" label="工序名称" align="center"/>
|
||||
<el-table-column prop="remark" label="备注" align="center"/>
|
||||
<el-table-column prop="creatorName" label="创建人" align="center"/>
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" :formatter="dateFormatter2"/>
|
||||
</el-table>
|
||||
|
||||
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import * as TechProcApi from '@/api/biz/techproc'
|
||||
import { dateFormatter2 } from '@/utils/formatTime'
|
||||
import * as ProcApi from '@/api/biz/proc'
|
||||
import { nextTick } from 'vue'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const procList = ref<ProcApi.ProcVO[]>([])
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formLoading = ref(false)
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
techProc: undefined,
|
||||
enabledStatus: undefined,
|
||||
remark: undefined,
|
||||
id: undefined as number | undefined,
|
||||
techProc: undefined as string | undefined,
|
||||
enabledStatus: 0 as number,
|
||||
remark: undefined as string | undefined,
|
||||
procList: undefined as string[] | undefined,
|
||||
})
|
||||
const formRules = reactive({
|
||||
techProc: [{ required: true, message: '工艺流程不能为空', trigger: 'blur' }],
|
||||
enabledStatus: [{ required: true, message: '状态不能为空', trigger: 'change' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
const procTable = ref() // 工序表格 Ref
|
||||
const selectedProcs = ref<ProcApi.ProcVO[]>([]) // 选中的工序行
|
||||
const techProcDisplay = ref('') // 工序名称显示(按列表顺序)
|
||||
const PROC_SEPARATOR = '-'
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
@ -59,17 +93,81 @@ const open = async (type: string, id?: number) => {
|
||||
formType.value = type
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
procList.value=await ProcApi.getProcList()
|
||||
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await TechProcApi.getTechProc(id)
|
||||
// 编辑回显:工序名称显示
|
||||
techProcDisplay.value = convertCodeToName(formData.value.techProc)
|
||||
// 编辑回显:选中对应工序行
|
||||
setSelectedRows(formData.value.techProc)
|
||||
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
}
|
||||
defineExpose({ open }) // 提供 open、setSelectedRows 方法
|
||||
const cancel = async () => {
|
||||
dialogVisible.value = false
|
||||
emit('success')
|
||||
}
|
||||
/** 工序编码转名称 */
|
||||
const convertCodeToName = (codeStr: string | undefined) => {
|
||||
if (!codeStr) {
|
||||
return ''
|
||||
}
|
||||
const codes = codeStr.split(PROC_SEPARATOR)
|
||||
const names = codes.map(code => {
|
||||
const proc = procList.value.find(item => item.procCd === code)
|
||||
return proc ? proc.procName : code
|
||||
})
|
||||
return names.join(PROC_SEPARATOR)
|
||||
}
|
||||
/** 工序选择变化处理 - 按列表顺序排列 */
|
||||
const handleProcSelectionChange = (rows: ProcApi.ProcVO[]) => {
|
||||
selectedProcs.value = rows
|
||||
// 获取选中的编码集合
|
||||
const selectedCodes = new Set(rows.map(item => item.procCd))
|
||||
// 按列表顺序过滤选中的工序
|
||||
const sortedSelected = procList.value.filter(item => selectedCodes.has(item.procCd))
|
||||
// 显示用:工序名称拼接(按列表顺序)
|
||||
techProcDisplay.value = sortedSelected.map(item => item.procName).join(PROC_SEPARATOR)
|
||||
// 存储用:工序编码拼接(按列表顺序)
|
||||
formData.value.techProc = sortedSelected.map(item => item.procCd).join(PROC_SEPARATOR)
|
||||
// 保存选中的工序编码列表(按列表顺序)
|
||||
formData.value.procList = sortedSelected.map(item => item.procCd)
|
||||
}
|
||||
/** 设置表格选中行 */
|
||||
const setSelectedRows = (procCodes) => {
|
||||
if (!procCodes || !procTable.value || procList.value.length === 0) {
|
||||
return
|
||||
}
|
||||
let codes: string[] = []
|
||||
if (Array.isArray(procCodes)) {
|
||||
if (procCodes.length > 0 && typeof procCodes[0] === 'object') {
|
||||
codes = procCodes.map((item: any) => item.procCd || item.id || item)
|
||||
} else {
|
||||
codes = procCodes
|
||||
}
|
||||
} else if (typeof procCodes === 'string') {
|
||||
codes = procCodes.split(PROC_SEPARATOR)
|
||||
}
|
||||
procTable.value.clearSelection()
|
||||
if (codes.length > 0) {
|
||||
const codeSet = new Set(codes.map(c => String(c)))
|
||||
const rows = procList.value.filter(item => codeSet.has(String(item.procCd)))
|
||||
selectedProcs.value = rows
|
||||
nextTick(() => {
|
||||
rows.forEach(row => {
|
||||
procTable.value.toggleRowSelection(row, true)
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
@ -99,9 +197,11 @@ const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
techProc: undefined,
|
||||
enabledStatus: undefined,
|
||||
enabledStatus: 0,
|
||||
remark: undefined,
|
||||
procList: undefined,
|
||||
}
|
||||
techProcDisplay.value = ''
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
@ -8,10 +8,10 @@
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="状态(1启用 2 未启用)" prop="enabledStatus">
|
||||
<el-form-item label="状态" prop="enabledStatus">
|
||||
<el-select
|
||||
v-model="queryParams.enabledStatus"
|
||||
placeholder="请选择状态(1启用 2 未启用)"
|
||||
placeholder="请选择状态"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
@ -34,55 +34,44 @@
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['biz:tech-proc:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="自增字段" align="center" prop="id" />
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="工艺流程" align="center" prop="techProc" />
|
||||
<el-table-column label="状态(1启用 2 未启用)" align="center" prop="enabledStatus">
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" border>
|
||||
<el-table-column type="index" label="序号" align="center" min-width="60" />
|
||||
<el-table-column label="工艺流程" align="center" prop="techProcDisplay" width="300px"/>
|
||||
<el-table-column label="状态" align="center" prop="enabledStatus" width="100px">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.SYSTEM_STATUS" :value="scope.row.enabledStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center">
|
||||
<el-table-column
|
||||
label="创建人"
|
||||
align="center"
|
||||
prop="nickname"
|
||||
width="100px"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
:formatter="dateFormatter2" width="120px"
|
||||
/>
|
||||
<el-table-column label="操作" align="center" width="100px">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.id)"
|
||||
v-hasPermi="['biz:tech-proc:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['biz:tech-proc:delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -101,18 +90,21 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import { dateFormatter2} from '@/utils/formatTime'
|
||||
import * as TechProcApi from '@/api/biz/techproc'
|
||||
import TechProcForm from './TechProcForm.vue'
|
||||
import * as ProcApi from "@/api/biz/proc";
|
||||
|
||||
interface TechProcVOWithDisplay extends TechProcApi.TechProcVO {
|
||||
techProcDisplay?: string
|
||||
}
|
||||
|
||||
defineOptions({ name: 'TechProc' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
const procList = ref<ProcApi.ProcVO[]>([])
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref([]) // 列表的数据
|
||||
const loading = ref(false) // 列表的加载中
|
||||
const list = ref<TechProcVOWithDisplay[]>([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
@ -120,7 +112,7 @@ const queryParams = reactive({
|
||||
enabledStatus: undefined,
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
const PROC_SEPARATOR = '-'
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
@ -128,12 +120,26 @@ const getList = async () => {
|
||||
try {
|
||||
const data = await TechProcApi.getTechProcPage(queryParams)
|
||||
list.value = data.list
|
||||
list.value.forEach(item=>{
|
||||
item.techProcDisplay=convertCodeToName(item.techProc)
|
||||
})
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 工序编码转名称 */
|
||||
const convertCodeToName = (codeStr: string | undefined) => {
|
||||
if (!codeStr) {
|
||||
return ''
|
||||
}
|
||||
const codes = codeStr.split(PROC_SEPARATOR)
|
||||
const names = codes.map(code => {
|
||||
const proc = procList.value.find(item => item.procCd === code)
|
||||
return proc ? proc.procName : code
|
||||
})
|
||||
return names.join(PROC_SEPARATOR)
|
||||
}
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
@ -152,36 +158,13 @@ const openForm = (type: string, id?: number) => {
|
||||
formRef.value.open(type, id)
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
// 删除的二次确认
|
||||
await message.delConfirm()
|
||||
// 发起删除
|
||||
await TechProcApi.deleteTechProc(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await TechProcApi.exportTechProc(queryParams)
|
||||
download.excel(data, '工艺流程主数据.xls')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getList()
|
||||
onMounted(async () => {
|
||||
// getList()
|
||||
procList.value=await ProcApi.getProcList()
|
||||
})
|
||||
</script>
|
||||
Loading…
Reference in New Issue
Block a user