Merge remote-tracking branch 'origin/main'

This commit is contained in:
z 2025-01-15 15:37:22 +08:00
commit 5f6844bfa6
22 changed files with 857 additions and 93 deletions

View File

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.pgmaster;
import com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo.PlanSubRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDispatchDetailPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.zjpgmaster.vo.ZjPgMasterSaveReqVO;
@ -126,6 +127,14 @@ public class PgMasterController {
PageResult<PgMasterLineDO> pageResult = pgMasterService.getTaskDispatchDetailPage(pageReqVO);
return success(pageResult);
}
@GetMapping("/task-dispatch-detail/pages")
@Operation(summary = "获得质量派工单过程检验行分页")
@PreAuthorize("@ss.hasPermission('heli:pg-master-line:query')")
public CommonResult<PageResult<PgMasterLineDO>> getPgMasterLinePages(@Valid PgMasterLinePageReqVO pageReqVO) {
PageResult<PgMasterLineDO> pageResult = pgMasterService.getPgMasterLinePages(pageReqVO);
return success(BeanUtils.toBean(pageResult, PgMasterLineDO.class));
}
@GetMapping("/task-dispatch-detail/get")
@Operation(summary = "获得派工明细分页")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')")

View File

@ -107,4 +107,17 @@ public class PgMasterLinePageReqVO extends PageParam {
@Schema(description = "派工状态")
private Integer dispatchStatus;
@Schema(description = "生产计划单号")
private String taskNo;
@Schema(description = "生产计划id", example = "25586")
private Long taskId;
@Schema(description = "项目id", example = "20270")
private Long projectId;
@Schema(description = "报工状态")
private String active;
}

View File

@ -62,7 +62,7 @@ public interface PgMasterLineMapper extends BaseMapperX<PgMasterLineDO> {
.orderByAsc(PgMasterLineDO::getTaskNo,PgMasterLineDO::getPgNumber)
.disableSubLogicDel();
query.eq(reqVO.getDetilUser() != null, PgMasterLineDO::getDetilUser, reqVO.getDetilUser())
query.eq(reqVO.getDetilUser() != null&&reqVO.getDetilUser() != 0, PgMasterLineDO::getDetilUser, reqVO.getDetilUser())
.eq(reqVO.getPgType() != null, PgMasterLineDO::getPgType, reqVO.getPgType())
.eq(reqVO.getDispatchStatus() != null, PgMasterLineDO::getDispatchStatus, reqVO.getDispatchStatus())
@ -72,4 +72,85 @@ public interface PgMasterLineMapper extends BaseMapperX<PgMasterLineDO> {
return selectPage(reqVO, query);
}
default PageResult<PgMasterLineDO> selectPages(PgMasterLinePageReqVO reqVO) {
MPJLambdaWrapper<PgMasterLineDO> query = new MPJLambdaWrapper<>();
query.select("t.id,t.task_no as taskNo,t.project_name as projectName,t.project_sub_name as projectSubName, " +
"t.material_name as materialName, t.blueprint_no as blueprintNo, t.amount, t.spec ,t.unit, t.detil_user as detilUser, " +
"t.pg_number as pgNumber ,t.start_time as startTime ,t.ent_time as entTime ,t.dispatch_status as dispatchStatus,t.pg_type as pgType ")
.orderByAsc(PgMasterLineDO::getTaskNo,PgMasterLineDO::getPgNumber)
;
query.eq(reqVO.getCreateTime()!= null, PgMasterLineDO::getCreateTime, reqVO.getCreateTime())
.eq(reqVO.getBomId()!= null, PgMasterLineDO::getBomId, reqVO.getBomId())
.eq(reqVO.getBomNumber()!= null, PgMasterLineDO::getBomNumber, reqVO.getBomNumber())
.like(reqVO.getBomName()!= null, PgMasterLineDO::getBomName, reqVO.getBomName())
.eq(reqVO.getBomNo()!= null, PgMasterLineDO::getBomNo, reqVO.getBomNo())
.eq(reqVO.getProjectSubId()!= null, PgMasterLineDO::getProjectSubId, reqVO.getProjectSubId())
.like(reqVO.getProjectSubName()!= null, PgMasterLineDO::getProjectSubName, reqVO.getProjectSubName())
.eq(reqVO.getProjectSubNumber()!= null, PgMasterLineDO::getProjectSubNumber, reqVO.getProjectSubNumber())
.eq(reqVO.getType()!= null, PgMasterLineDO::getType, reqVO.getType())
.eq(reqVO.getMaterialId()!= null, PgMasterLineDO::getMaterialId, reqVO.getMaterialId())
.eq(reqVO.getMaterialCode()!= null, PgMasterLineDO::getMaterialCode, reqVO.getMaterialCode())
.like(reqVO.getMaterialName()!= null, PgMasterLineDO::getMaterialName, reqVO.getMaterialName())
.eq(reqVO.getCompositionId()!= null, PgMasterLineDO::getCompositionId, reqVO.getCompositionId())
.eq(reqVO.getSpec()!= null, PgMasterLineDO::getSpec, reqVO.getSpec())
.eq(reqVO.getUnit()!= null, PgMasterLineDO::getUnit, reqVO.getUnit())
.eq(reqVO.getBlueprintNo()!= null, PgMasterLineDO::getBlueprintNo, reqVO.getBlueprintNo())
.eq(reqVO.getAmount()!= null, PgMasterLineDO::getAmount, reqVO.getAmount())
.eq(reqVO.getDetilUser()!= null, PgMasterLineDO::getDetilUser, reqVO.getDetilUser())
.eq(reqVO.getGongShi()!= null, PgMasterLineDO::getGongShi, reqVO.getGongShi())
.eq(reqVO.getZlPgId()!= null, PgMasterLineDO::getZlPgId, reqVO.getZlPgId())
.eq(reqVO.getPgType()!= null, PgMasterLineDO::getPgType, reqVO.getPgType())
.eq(reqVO.getStartTime()!= null, PgMasterLineDO::getStartTime, reqVO.getStartTime())
.eq(reqVO.getEntTime()!= null, PgMasterLineDO::getEntTime, reqVO.getEntTime())
.eq(reqVO.getDispatchStatus()!= null, PgMasterLineDO::getDispatchStatus, reqVO.getDispatchStatus())
.eq(reqVO.getTaskNo()!= null, PgMasterLineDO::getTaskNo, reqVO.getTaskNo())
.eq(reqVO.getTaskId()!= null, PgMasterLineDO::getTaskId, reqVO.getTaskId())
.eq(reqVO.getProjectId()!= null, PgMasterLineDO::getProjectId, reqVO.getProjectId())
.like(reqVO.getProjectName()!= null, PgMasterLineDO::getProjectName, reqVO.getProjectName())
.eq(reqVO.getPgNumber()!= null, PgMasterLineDO::getPgNumber, reqVO.getPgNumber())
.eq(reqVO.getActive()!= null, PgMasterLineDO::getActive, reqVO.getActive())
.orderByDesc(PgMasterLineDO::getId)
;
return selectPage(reqVO, query);
/*return selectPage(reqVO, new LambdaQueryWrapperX<PgMasterLineDO>()
.betweenIfPresent(PgMasterLineDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(PgMasterLineDO::getBomId, reqVO.getBomId())
.eqIfPresent(PgMasterLineDO::getBomNumber, reqVO.getBomNumber())
.likeIfPresent(PgMasterLineDO::getBomName, reqVO.getBomName())
.eqIfPresent(PgMasterLineDO::getBomNo, reqVO.getBomNo())
.eqIfPresent(PgMasterLineDO::getProjectSubId, reqVO.getProjectSubId())
.likeIfPresent(PgMasterLineDO::getProjectSubName, reqVO.getProjectSubName())
.eqIfPresent(PgMasterLineDO::getProjectSubNumber, reqVO.getProjectSubNumber())
.eqIfPresent(PgMasterLineDO::getType, reqVO.getType())
.eqIfPresent(PgMasterLineDO::getMaterialId, reqVO.getMaterialId())
.eqIfPresent(PgMasterLineDO::getMaterialCode, reqVO.getMaterialCode())
.likeIfPresent(PgMasterLineDO::getMaterialName, reqVO.getMaterialName())
.eqIfPresent(PgMasterLineDO::getCompositionId, reqVO.getCompositionId())
.eqIfPresent(PgMasterLineDO::getSpec, reqVO.getSpec())
.eqIfPresent(PgMasterLineDO::getUnit, reqVO.getUnit())
.eqIfPresent(PgMasterLineDO::getBlueprintNo, reqVO.getBlueprintNo())
.eqIfPresent(PgMasterLineDO::getAmount, reqVO.getAmount())
.eqIfPresent(PgMasterLineDO::getDetilUser, reqVO.getDetilUser())
.eqIfPresent(PgMasterLineDO::getGongShi, reqVO.getGongShi())
.eqIfPresent(PgMasterLineDO::getZlPgId, reqVO.getZlPgId())
.eqIfPresent(PgMasterLineDO::getPgType, reqVO.getPgType())
.betweenIfPresent(PgMasterLineDO::getStartTime, reqVO.getStartTime())
.betweenIfPresent(PgMasterLineDO::getEntTime, reqVO.getEntTime())
.eqIfPresent(PgMasterLineDO::getDispatchStatus, reqVO.getDispatchStatus())
.eqIfPresent(PgMasterLineDO::getTaskNo, reqVO.getTaskNo())
.eqIfPresent(PgMasterLineDO::getTaskId, reqVO.getTaskId())
.eqIfPresent(PgMasterLineDO::getProjectId, reqVO.getProjectId())
.likeIfPresent(PgMasterLineDO::getProjectName, reqVO.getProjectName())
.eqIfPresent(PgMasterLineDO::getPgNumber, reqVO.getPgNumber())
.eqIfPresent(PgMasterLineDO::getActive, reqVO.getActive())
.orderByDesc(PgMasterLineDO::getId));*/
}
}

View File

@ -74,9 +74,9 @@ public interface ProcessDesignMapper extends BaseMapperX<ProcessDesignDO> {
.or()
.apply("u5.id = {0} and t.process_design_type = {1}", reqVO.getOwner(), ProcessDesignTypeEnum.BLUEPRINT_3D.name()));
}
/*if(reqVO.getUncompletedDesign() != null && reqVO.getUncompletedDesign()){
if(reqVO.getUncompletedDesign() != null && reqVO.getUncompletedDesign()){
query.and(QueryWrapper -> QueryWrapper.apply("COALESCE(z.progress, 0) < {0}", 100).ne(PlanDO::getStatus, ProjectPlanStatusEnum.TERMINATE.getCode()));
}*/
}
if(reqVO.getPgType() != null){
if(reqVO.getPgType()==0){
query.and(QueryWrapper -> QueryWrapper.apply("z.progress < {0}" , 100).or().apply("z.progress is null"));

View File

@ -68,7 +68,7 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
default boolean judgeHasOver(Long id){
MPJLambdaWrapper<TaskDispatchDetailDO> query = new MPJLambdaWrapper<>();
query.eq(TaskDispatchDetailDO::getDispatchId,id)
.eq(TaskDispatchDetailDO::getStatus,2);
.eq(TaskDispatchDetailDO::getProcedureStatus,2);
Long aLong = selectCount(query);
return aLong.compareTo(Long.valueOf(0))>0;
}
@ -162,9 +162,14 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
.leftJoin(TaskReportDO.class, "f", TaskReportDO::getDispatchDetailId, TaskDispatchDetailDO::getId)
.ne(ProjectOrderDO::getStatus,6)
.groupBy(TaskDispatchDetailDO::getId)
.orderByAsc(TaskDispatchDetailDO::getId)
.disableSubLogicDel();
if (reqVO.getProcedureStatusList().size()==1 && reqVO.getProcedureStatusList().get(0)==2){
//完工降序
query.orderByDesc(TaskDispatchDO::getCode);
}else {
//未完工升序
query.orderByAsc(TaskDispatchDO::getCode);
}
if (CollUtil.isNotEmpty(postIds)) {
query.and(i -> i
.and(j -> j.in(TaskDispatchDetailDO::getPostId, postIds))

View File

@ -57,7 +57,7 @@ public interface ZjPgMasterLineMapper extends BaseMapperX<ZjPgMasterLineDO> {
.orderByDesc(ZjPgMasterLineDO::getId)
.disableSubLogicDel();
query.eq(reqVO.getDetilUser() != null, ZjPgMasterLineDO::getDetilUser, reqVO.getDetilUser())
query.eq(reqVO.getDetilUser() != null&&reqVO.getDetilUser() != 0, ZjPgMasterLineDO::getDetilUser, reqVO.getDetilUser())
.eq(reqVO.getPgType() != null, ZjPgMasterLineDO::getPgType, reqVO.getPgType())
.eq(reqVO.getDispatchStatus()!=null,ZjPgMasterLineDO::getDispatchStatus, reqVO.getDispatchStatus())

View File

@ -66,6 +66,8 @@ public interface PgMasterService {
PageResult<PgMasterLineDO> getTaskDispatchDetailPage(PgMasterLinePageReqVO pageReqVO);
PageResult<PgMasterLineDO> getPgMasterLinePages(PgMasterLinePageReqVO pageReqVO);
PgMasterLineDO getTaskDispatchDetail(PgMasterLinePageReqVO pageReqVO);
/**
* 获得质量派工单过程检验行列表

View File

@ -233,6 +233,11 @@ public class PgMasterServiceImpl implements PgMasterService {
// ==================== 子表质量派工单过程检验行 ====================
@Override
public PageResult<PgMasterLineDO> getPgMasterLinePages(PgMasterLinePageReqVO pageReqVO) {
return pgMasterLineMapper.selectPages(pageReqVO);
}
@Override
public PageResult<PgMasterLineDO> getTaskDispatchDetailPage(PgMasterLinePageReqVO pageReqVO) {
return pgMasterLineMapper.selectPage(pageReqVO);

View File

@ -345,7 +345,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
List<TaskDispatchDetailDO> list = taskDispatchDetailDOPageResult.getList();
List<TaskDispatchDetailDO> afterList = new ArrayList<>();
if (CollUtil.isNotEmpty(list)){
Map<Long, List<TaskDispatchDetailDO>> collect = list.stream().collect(Collectors.groupingBy(TaskDispatchDetailDO::getId));
Map<String, List<TaskDispatchDetailDO>> collect = list.stream().collect(Collectors.groupingBy(TaskDispatchDetailDO::getDispatchCode));
collect.forEach((code,list2)->{
list2.sort(Comparator.comparing(TaskDispatchDetailDO::getSort, Comparator.nullsLast(Integer::compareTo)));
afterList.addAll(list2);
@ -468,34 +468,90 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
crossOrderManager.generateStockInOrder(taskDispatchDetailDO.getDispatchId(), now, lastReportDO.getAmount());
break;
case FINISH:
taskDispatchDetailDO.setProcedureStatus(TaskDispatchProcedureStatusEnum.COMPLETED.getCode());
// TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(taskDispatchDetailDO.getDispatchId());
List<TaskDispatchDO> taskDispatchDOS = taskDispatchMapper.selectList(TaskDispatchDO::getPlanId, taskDispatchDO.getPlanId());
if(CollUtil.isNotEmpty(taskDispatchDOS)){
List<Long> ids = taskDispatchDOS.stream()
.map(TaskDispatchDO::getId)
.collect(Collectors.toList());
List<TaskDispatchDetailDO> taskDispatchDetailList = taskDispatchDetailMapper.selectList(new LambdaQueryWrapper<TaskDispatchDetailDO>()
.in(TaskDispatchDetailDO::getDispatchId, ids));
boolean isOver = true;
for (TaskDispatchDetailDO dispatchDetailDO : taskDispatchDetailList) {
if (dispatchDetailDO.getId() != taskDispatchDetailDO.getId()){
if (dispatchDetailDO.getProcedureStatus()!= TaskDispatchProcedureStatusEnum.COMPLETED.getCode()){
isOver = false;
break;
}
}
}
if (isOver){
planDO.setStatus(3);
planMapper.updateById(planDO);
if(taskDispatchDO.getDispatchType().equals("ASSEMBLE")){
zjPgMasterService.insertZjList(planDO.getId(),planDO.getProjectId());
} else if (taskDispatchDO.getDispatchType().equals("PRODUCTION")) {
pgMasterService.insertPgList(planDO.getId(),planDO.getProjectId());
//子项目装配是否完成
List<TaskDispatchDO> taskDispatchAssembleOverList = taskDispatchMapper.selectList(
new LambdaQueryWrapper<TaskDispatchDO>()
.eq(TaskDispatchDO::getProjectSubId, taskDispatchDO.getProjectSubId())
.eq(TaskDispatchDO::getDispatchType,"ASSEMBLE"));
//零件是否生产完成
List<TaskDispatchDetailDO> taskDispatchDetailDOS = taskDispatchDetailMapper.selectListByDispatchId(taskDispatchDO.getId());
List<TaskDispatchDetailDO> productionList = taskDispatchDetailDOS.stream().filter(e -> e.getDispatchType().equals("PRODUCTION") && !e.getId().equals(taskDispatchDetailDO.getId())).collect(Collectors.toList());
//过程检 零件所有生产派工完成生成
boolean isBomDetailProductionOver = true;
//终检 子项目装配派工都完成
boolean isProjectSubAssembleOver = true;
//生产零件派工判断是否生成过程检
if (CollUtil.isNotEmpty(productionList)){
for (TaskDispatchDetailDO dispatchDetailDO : productionList) {
if (dispatchDetailDO.getProcedureStatus() !=TaskDispatchProcedureStatusEnum.COMPLETED.getCode()){
isBomDetailProductionOver = false;
break;
}
}
}
if (CollUtil.isNotEmpty(productionList)){
for (TaskDispatchDetailDO dispatchDetailDO : productionList) {
if (!dispatchDetailDO.getId().equals(taskDispatchDetailDO.getId()) &&
dispatchDetailDO.getProcedureStatus() !=TaskDispatchProcedureStatusEnum.COMPLETED.getCode()){
//如果其他的有未完成的
isProjectSubAssembleOver = false;
break;
}
}
}
if (taskDispatchDO.getDispatchType().equals("PRODUCTION") && isBomDetailProductionOver){
pgMasterService.insertPgList(planDO.getId(),planDO.getProjectId());
}else if (taskDispatchDO.getDispatchType().equals("ASSEMBLE") && isProjectSubAssembleOver){
zjPgMasterService.insertZjList(planDO.getId(),planDO.getProjectId());
}
// // TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(taskDispatchDetailDO.getDispatchId());
// List<Long> idsProduction = new ArrayList<>();
// List<Long> idsAssemble = new ArrayList<>();
// //生产计划是否完成 查所有
// List<TaskDispatchDO> taskDispatchDOS = taskDispatchMapper.selectList(new LambdaQueryWrapper<TaskDispatchDO>()
// .eq(TaskDispatchDO::getPlanId, taskDispatchDO.getPlanId()));
// if(CollUtil.isNotEmpty(taskDispatchDOS)){
// idsAssemble = taskDispatchDOS.stream().filter(e-> e.getDispatchType().equals("ASSEMBLE"))
// .map(TaskDispatchDO::getId)
// .collect(Collectors.toList());
// idsProduction = taskDispatchDOS.stream().filter(e-> e.getDispatchType().equals("PRODUCTION"))
// .map(TaskDispatchDO::getId)
// .collect(Collectors.toList());
// List<TaskDispatchDetailDO> taskDispatchDetailAssembleList = taskDispatchDetailMapper.selectList(new LambdaQueryWrapper<TaskDispatchDetailDO>()
// .in(TaskDispatchDetailDO::getDispatchId, idsAssemble));
// List<TaskDispatchDetailDO> taskDispatchDetailProductionList = taskDispatchDetailMapper.selectList(new LambdaQueryWrapper<TaskDispatchDetailDO>()
// .in(TaskDispatchDetailDO::getDispatchId, idsProduction));
//
// boolean isProductionOver = true;
// boolean isAssembleOver = true;
// for (TaskDispatchDetailDO dispatchDetailDO : taskDispatchDetailAssembleList) {
// if (dispatchDetailDO.getId() != taskDispatchDetailDO.getId()){
// if (dispatchDetailDO.getProcedureStatus()!= TaskDispatchProcedureStatusEnum.COMPLETED.getCode()){
// isAssembleOver = false;
// break;
// }
// }
// }
// for (TaskDispatchDetailDO dispatchDetailDO : taskDispatchDetailProductionList) {
// if (dispatchDetailDO.getId() != taskDispatchDetailDO.getId()){
// if (dispatchDetailDO.getProcedureStatus()!= TaskDispatchProcedureStatusEnum.COMPLETED.getCode()){
// isProductionOver = false;
// break;
// }
// }
// }
// if (taskDispatchDO.getDispatchType().equals("PRODUCTION") && isProductionOver){
// pgMasterService.insertPgList(planDO.getId(),planDO.getProjectId());
// }else if (taskDispatchDO.getDispatchType().equals("ASSEMBLE") && isAssembleOver){
// zjPgMasterService.insertZjList(planDO.getId(),planDO.getProjectId());
// }
// if (isProductionOver&&isAssembleOver){
// planDO.setStatus(3);
// planMapper.updateById(planDO);
// }
// }
taskDispatchDetailMapper.updateById(taskDispatchDetailDO);
break;
}

View File

@ -18,6 +18,13 @@ export const getSearchBomMx = async (task_id: number,project_id: number) => {
}
// 查询质量派工单过程检验行分页
export const getPgMasterLinePage = async (params) => {
return await request.get({ url: `/heli/pg-master/task-dispatch-detail/pages`, params })
}
// 查询质量过程检派工单主分页
export const getPgMasterPage = async (params) => {
return await request.get({ url: `/heli/pg-master/page`, params })

View File

@ -0,0 +1,244 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="bomID" prop="bomId">
<el-input v-model="formData.bomId" placeholder="请输入bomID" />
</el-form-item>
<el-form-item label="bom编号" prop="bomNumber">
<el-input v-model="formData.bomNumber" placeholder="请输入bom编号" />
</el-form-item>
<el-form-item label="bom名称" prop="bomName">
<el-input v-model="formData.bomName" placeholder="请输入bom名称" />
</el-form-item>
<el-form-item label="bom版本号" prop="bomNo">
<el-input v-model="formData.bomNo" placeholder="请输入bom版本号" />
</el-form-item>
<el-form-item label="子项目id" prop="projectSubId">
<el-input v-model="formData.projectSubId" placeholder="请输入子项目id" />
</el-form-item>
<el-form-item label="子项目名称" prop="projectSubName">
<el-input v-model="formData.projectSubName" placeholder="请输入子项目名称" />
</el-form-item>
<el-form-item label="子项目编号" prop="projectSubNumber">
<el-input v-model="formData.projectSubNumber" placeholder="请输入子项目编号" />
</el-form-item>
<el-form-item label="是否标准件" prop="type">
<el-select v-model="formData.type" placeholder="请选择是否标准件">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="物料id" prop="materialId">
<el-input v-model="formData.materialId" placeholder="请输入物料id" />
</el-form-item>
<el-form-item label="物料编码" prop="materialCode">
<el-input v-model="formData.materialCode" placeholder="请输入物料编码" />
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="formData.materialName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="材质id" prop="compositionId">
<el-input v-model="formData.compositionId" placeholder="请输入材质id" />
</el-form-item>
<el-form-item label="规格" prop="spec">
<el-input v-model="formData.spec" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="单位" prop="unit">
<el-input v-model="formData.unit" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="图号" prop="blueprintNo">
<el-input v-model="formData.blueprintNo" placeholder="请输入图号" />
</el-form-item>
<el-form-item label="数量" prop="amount">
<el-input v-model="formData.amount" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="检验人" prop="detilUser">
<el-input v-model="formData.detilUser" placeholder="请输入检验人" />
</el-form-item>
<el-form-item label="预计工时" prop="gongShi">
<el-input v-model="formData.gongShi" placeholder="请输入预计工时" />
</el-form-item>
<el-form-item label="质量派工id" prop="zlPgId">
<el-input v-model="formData.zlPgId" placeholder="请输入质量派工id" />
</el-form-item>
<el-form-item label="是否完成 0未完成 1已完成" prop="pgType">
<el-select v-model="formData.pgType" placeholder="请选择是否完成 0未完成 1已完成">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="开始日期" prop="startTime">
<el-date-picker
v-model="formData.startTime"
type="date"
value-format="x"
placeholder="选择开始日期"
/>
</el-form-item>
<el-form-item label="结束日期" prop="entTime">
<el-date-picker
v-model="formData.entTime"
type="date"
value-format="x"
placeholder="选择结束日期"
/>
</el-form-item>
<el-form-item label="派工状态 已保存|已提交|已终止 1|2|3" prop="dispatchStatus">
<el-radio-group v-model="formData.dispatchStatus">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="生产计划单号" prop="taskNo">
<el-input v-model="formData.taskNo" placeholder="请输入生产计划单号" />
</el-form-item>
<el-form-item label="生产计划id" prop="taskId">
<el-input v-model="formData.taskId" placeholder="请输入生产计划id" />
</el-form-item>
<el-form-item label="项目id" prop="projectId">
<el-input v-model="formData.projectId" placeholder="请输入项目id" />
</el-form-item>
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="formData.projectName" placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="派工单号" prop="pgNumber">
<el-input v-model="formData.pgNumber" placeholder="请输入派工单号" />
</el-form-item>
<el-form-item label="报工状态" prop="active">
<el-input v-model="formData.active" 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>
</template>
</Dialog>
</template>
<script setup lang="ts">
import * as PgMasterApi from '@/api/heli/pgmaster'
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
bomId: undefined,
bomNumber: undefined,
bomName: undefined,
bomNo: undefined,
projectSubId: undefined,
projectSubName: undefined,
projectSubNumber: undefined,
type: undefined,
materialId: undefined,
materialCode: undefined,
materialName: undefined,
compositionId: undefined,
spec: undefined,
unit: undefined,
blueprintNo: undefined,
amount: undefined,
detilUser: undefined,
gongShi: undefined,
zlPgId: undefined,
pgType: undefined,
startTime: undefined,
entTime: undefined,
dispatchStatus: undefined,
taskNo: undefined,
taskId: undefined,
projectId: undefined,
projectName: undefined,
pgNumber: undefined,
active: undefined,
})
const formRules = reactive({
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
//
if (id) {
formLoading.value = true
try {
formData.value = await PgMasterLineApi.getPgMasterLine(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as PgMasterLineApi.PgMasterLineVO
if (formType.value === 'create') {
await PgMasterLineApi.createPgMasterLine(data)
message.success(t('common.createSuccess'))
} else {
await PgMasterLineApi.updatePgMasterLine(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
bomId: undefined,
bomNumber: undefined,
bomName: undefined,
bomNo: undefined,
projectSubId: undefined,
projectSubName: undefined,
projectSubNumber: undefined,
type: undefined,
materialId: undefined,
materialCode: undefined,
materialName: undefined,
compositionId: undefined,
spec: undefined,
unit: undefined,
blueprintNo: undefined,
amount: undefined,
detilUser: undefined,
gongShi: undefined,
zlPgId: undefined,
pgType: undefined,
startTime: undefined,
entTime: undefined,
dispatchStatus: undefined,
taskNo: undefined,
taskId: undefined,
projectId: undefined,
projectName: undefined,
pgNumber: undefined,
active: undefined,
}
formRef.value?.resetFields()
}
</script>

View File

@ -0,0 +1,357 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="160px"
>
<!-- <el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item> -->
<el-form-item label="生产计划单号" prop="taskNo">
<el-input
v-model="queryParams.taskNo"
placeholder="请输入生产计划单号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="项目名称" prop="projectName">
<el-input
v-model="queryParams.projectName"
placeholder="请输入项目名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="子项目名称" prop="projectSubName">
<el-input
v-model="queryParams.projectSubName"
placeholder="请输入子项目名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="派工单号" prop="pgNumber">
<el-input
v-model="queryParams.pgNumber"
placeholder="请输入派工单号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="检验人" prop="detilUser">
<el-input
v-model="queryParams.detilUser"
placeholder="请输入检验人"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据状态" prop="pgType">
<el-select
v-model="queryParams.pgType"
placeholder="请选择是否完成 0未完成 1已完成"
clearable
class="!w-240px"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<!-- <el-form-item label="开始日期" prop="startTime">
<el-date-picker
v-model="queryParams.startTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="结束日期" prop="entTime">
<el-date-picker
v-model="queryParams.entTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="报工状态" prop="active">
<el-input
v-model="queryParams.active"
placeholder="请输入报工状态"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</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')"
v-hasPermi="['heli:pg-master-line:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['heli:pg-master-line: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" class="hl-table" :show-overflow-tooltip="true">
<el-table-column v-if="false" label="主键" align="center" prop="id" />
<el-table-column v-if="false"
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="生产计划单号" align="center" prop="taskNo" />
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
<el-table-column label="物料名称" align="center" prop="materialName" />
<el-table-column label="图号" align="center" prop="blueprintNo" />
<el-table-column label="数量" align="center" prop="amount" />
<el-table-column label="规格" align="center" prop="spec" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="检验人" align="center" prop="detilUser" />
<el-table-column label="派工单号" align="center" prop="pgNumber" />
<el-table-column
label="开始日期"
align="center"
prop="startTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column
label="结束日期"
align="center"
prop="entTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="派工状态" align="center" prop="dispatchStatus" />
<el-table-column label="是否完成" align="center" prop="pgType" />
<!-- <el-table-column label="bomID" align="center" prop="bomId" />
<el-table-column label="bom编号" align="center" prop="bomNumber" />
<el-table-column label="bom名称" align="center" prop="bomName" />
<el-table-column label="bom版本号" align="center" prop="bomNo" />
<el-table-column label="子项目id" align="center" prop="projectSubId" />
<el-table-column label="子项目编号" align="center" prop="projectSubNumber" />
<el-table-column label="是否标准件" align="center" prop="type" />
<el-table-column label="物料id" align="center" prop="materialId" />
<el-table-column label="物料编码" align="center" prop="materialCode" />
<el-table-column label="材质id" align="center" prop="compositionId" />
<el-table-column label="预计工时" align="center" prop="gongShi" />
<el-table-column label="质量派工id" align="center" prop="zlPgId" />
<el-table-column label="生产计划id" align="center" prop="taskId" />
<el-table-column label="项目id" align="center" prop="projectId" />
<el-table-column label="报工状态" align="center" prop="active" /> -->
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['heli:pg-master-line:update']"
>
查看
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['heli:pg-master-line: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>
<!-- 表单弹窗添加/修改 -->
<PgMasterLineForm ref="formRef" @success="getList" />
</template>
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import * as PgMasterApi from '@/api/heli/pgmaster'
import PgMasterLineForm from './PgMasterLineForm.vue'
defineOptions({ name: 'PgMasterLine' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
createTime: [],
bomId: undefined,
bomNumber: undefined,
bomName: undefined,
bomNo: undefined,
projectSubId: undefined,
projectSubName: undefined,
projectSubNumber: undefined,
type: undefined,
materialId: undefined,
materialCode: undefined,
materialName: undefined,
compositionId: undefined,
spec: undefined,
unit: undefined,
blueprintNo: undefined,
amount: undefined,
detilUser: undefined,
gongShi: undefined,
zlPgId: undefined,
pgType: undefined,
startTime: [],
entTime: [],
dispatchStatus: undefined,
taskNo: undefined,
taskId: undefined,
projectId: undefined,
projectName: undefined,
pgNumber: undefined,
active: undefined,
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await PgMasterApi.getPgMasterLinePage(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 PgMasterApi.deletePgMasterLine(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await PgMasterApi.exportPgMasterLine(queryParams)
download.excel(data, '质量派工单过程检验行.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(() => {
getList()
})
</script>

View File

@ -448,7 +448,7 @@ v-if="formData.dispatchStatus == 2" @click="printHandle(formData.id)" :disabled=
</el-table>
</el-dialog>
<!-------------取消提交弹框---------------->
<el-dialog v-model="centerDialogVisible" title="Warning" width="30%" center>
<el-dialog v-model="centerDialogVisible" title="提示" width="30%" center>
<span>
该派工单存在报工完数据是否继续
</span>
@ -859,6 +859,7 @@ const centerDialogVisible = ref(false);
const isSureCancle = ref(false)
const sureToCancle = () =>{
isSureCancle.value = true;
centerDialogVisible.value = false;
submitForm('CANCEL_SUBMIT');
}
const submitForm = async (operate) => {

View File

@ -453,7 +453,7 @@ v-if="formData.dispatchStatus == 2" @click="printHandle(formData.id)" :disabled=
</el-dialog>
<!-------------取消提交弹框---------------->
<el-dialog v-model="centerDialogVisible" title="Warning" width="30%" center>
<el-dialog v-model="centerDialogVisible" title="提示" width="30%" center>
<span>
该派工单存在报工完数据是否继续
</span>
@ -1030,6 +1030,7 @@ const queryData = async (id?: number) => {
const isSureCancle = ref(false)
const sureToCancle = () =>{
isSureCancle.value = true;
centerDialogVisible.value = false;
submitForm('CANCEL_SUBMIT');
}
const submitForm = async (operate) => {

View File

@ -11,7 +11,7 @@ import {
getFileAPI,
getLogAPI,
} from '@/services/approveOrder'
import {Base64} from '@/utils/base64.js';
import {Base64} from '@/uni_modules/base64/base64.js';
const popup = ref<UniHelper.UniPopupInstance>()
@ -209,32 +209,10 @@ const handleDownload = (pdfUrl: any) => {
window.open(fileUrl.value);
// #endif
//#ifdef MP-WEIXIN
uni.showLoading({
title: '正在加载中..'
})
uni.downloadFile({
url: pdfUrl,
success: function(res) {
var filePath = res.tempFilePath;
uni.openDocument({
filePath: filePath,
showMenu: true,
success: function(res) {
console.log('打开文档成功');
uni.hideLoading()
},
});
},
complete: function(r) {
uni.hideLoading()
}
});
// fileUrl.value = 'https://star.hz-hl.com/FileServer/onlinePreview?url='+encodeURIComponent(Base64.encode(pdfUrl));
// uni.navigateTo({
// url: './components/showFileWx?fileUrl=' + encodeURIComponent(fileUrl.value)
// });
// #endif
uni.navigateTo({
url: './components/showFileWx?fileUrl=' + encodeURIComponent(Base64.encode(pdfUrl))
});
//#endif
// showFile.value = true;
// if (pdfUrl) {

View File

@ -1,30 +1,38 @@
<template>
<view>
<web-view :src="showUrl"></web-view>
</view>
<view>
<web-view :src="showUrl" />
</view>
</template>
<script>
import {
onLoad,
onShow
} from '@dcloudio/uni-app'
import {
ref
} from 'vue';
const fileUrl = ref("");
const showUrl = ref("");
onLoad((options) => {
fileUrl.value = options.fileUrl;
if (fileUrl.value) {
try {
showUrl.value = decodeURIComponent(fileUrl.value);
} catch (error) {
console.error('Error parsing picture data:', error);
}
}
})
import { ref, onMounted, onUnmounted } from 'vue';
import { onLoad } from '@dcloudio/uni-app';
export default {
setup() {
const showUrl = ref('');
// 使 onLoad
onLoad((options) => {
console.log('页面加载中...');
console.log(options.fileUrl);
if (options.fileUrl) {
showUrl.value = `https://star.hz-hl.com/FileServer/onlinePreview?url=${options.fileUrl}`;
console.log(showUrl.value);
}
});
// 使 onMounted onLoad
onMounted(() => {
console.log('Vue 组件挂载完成');
});
return {
showUrl,
};
},
};
</script>
<style>
<style scoped>
/* 你的样式 */
</style>

View File

@ -27,7 +27,7 @@ const isLoading = ref(false)
const queryParams: Required<any> = {
pageNo: 1,
pageSize: 5,
detilUser: null,
detilUser: 0,
//
pgType: 0,
//

View File

@ -27,7 +27,7 @@ const isLoading = ref(false)
const queryParams: Required<any> = {
pageNo: 1,
pageSize: 5,
detilUser: null,
detilUser: 0,
//
pgType: 0,
//
@ -39,8 +39,6 @@ dispatchStatus:2
}
const dataList = ref([])
const getListData = async () => {
console.log("props.orderState");
console.log(props.orderState);
queryParams.pgType = props.orderState;
// 退
if (isLoading.value) return

View File

@ -10,5 +10,5 @@
// export const serviceDomain = 'https://star.hz-hl.com'
// export const serviceDomain = 'http://222.71.165.187:9010'
export const serviceDomain = 'http://localhost:8080'
// export const serviceDomain = 'https://nxhs.cjyx.cc'
// export const serviceDomain = 'http://localhost:8080'
export const serviceDomain = 'https://nxhs.cjyx.cc'

View File

@ -86,7 +86,6 @@ export const http = <T>(options: UniApp.RequestOptions) => {
...options,
// 响应成功
success(res) {
console.log(res)
// 状态码 2xx axios 就是这样设计的
if (res.statusCode >= 200 && res.statusCode < 300) {
if (res.data?.code == 0) {