diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java index a6c5141..e3877dc 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java @@ -184,7 +184,13 @@ public class TaskDispatchController { taskDispatchService.operateDetail(operateReqVO); return success(null); } - + @GetMapping("/task-dispatch-detail/judgeHasOver") + @Operation(summary = "判断是否有已完成的派工任务") + @Parameter(name = "id", description = "派工单id", required = true) + @PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')") + public CommonResult judgeHasOver(@RequestParam("id") Long id) { + return success(taskDispatchService.judgeHasOver(id)); + } @GetMapping("/task-dispatch-detail/pageTotal") @Operation(summary = "获得派工明细数据") @PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskDispatchRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskDispatchRespVO.java index 4483e66..81e5636 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskDispatchRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/vo/TaskDispatchRespVO.java @@ -122,5 +122,5 @@ public class TaskDispatchRespVO { @Schema(description = "要求完成日期") private LocalDateTime requiredEndDate; - + private Integer projectSubAmount; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java index fc08472..aba7142 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDO.java @@ -136,7 +136,8 @@ public class TaskDispatchDO extends BaseDO { @TableField(exist = false) private String craftContent; - + @TableField(exist = false) + private Integer projectSubAmount; public boolean canSave(){ return TaskDispatchStatusEnum.SAVE.getCode() == this.dispatchStatus.intValue(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index b907e0f..c00b372 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -65,7 +65,13 @@ public interface TaskDispatchDetailMapper extends BaseMapperX query = new MPJLambdaWrapper<>(); + query.eq(TaskDispatchDetailDO::getDispatchId,id) + .eq(TaskDispatchDetailDO::getStatus,2); + Long aLong = selectCount(query); + return aLong.compareTo(Long.valueOf(0))>0; + } default TaskDispatchDetailDO selectGet(TaskDispatchDetailPageReqVO reqVO) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(TaskDispatchDetailDO.class) @@ -138,7 +144,47 @@ public interface TaskDispatchDetailMapper extends BaseMapperX selectPageWx(TaskDispatchDetailPageReqVO reqVO , Set postIds) { + // 假设reqVO中包含了页码(page)和每页数量(limit) + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(TaskDispatchDetailDO.class) + .select("a.code as dispatchCode") + .select("b.code as projectCode", "b.project_name as projectName", "c.name as projectSubName") + .select("d.material_name as materialName") + .select("e.name as procedureName") + .selectSum(TaskReportDO::getAmount, "totalReportAmount") + .selectSum(TaskReportDO::getWorkTime, "totalWorkTime") + .leftJoin(TaskDispatchDO.class, "a", TaskDispatchDO::getId, TaskDispatchDetailDO::getDispatchId) + .leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, TaskDispatchDO::getProjectId) + .leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, TaskDispatchDO::getProjectSubId) + .leftJoin(ProcessBomDetailDO.class, "d", ProcessBomDetailDO::getId, TaskDispatchDO::getBomDetailId) + .leftJoin(ProcedureDO.class, "e", ProcedureDO::getId, TaskDispatchDetailDO::getProcedureId) + .leftJoin(TaskReportDO.class, "f", TaskReportDO::getDispatchDetailId, TaskDispatchDetailDO::getId) + .ne(ProjectOrderDO::getStatus,6) + .groupBy(TaskDispatchDetailDO::getId) + .orderByAsc(TaskDispatchDetailDO::getId) + .disableSubLogicDel(); + if (CollUtil.isNotEmpty(postIds)) { + query.and(i -> i + .and(j -> j.in(TaskDispatchDetailDO::getPostId, postIds)) + .and(j -> j.isNull(TaskDispatchDetailDO::getOwner)) + .or(k-> k.eq(reqVO.getOwner() != null, TaskDispatchDetailDO::getOwner, reqVO.getOwner())) + ); + }else{ + query.eq(reqVO.getOwner() != null, TaskDispatchDetailDO::getOwner, reqVO.getOwner()); + } + + query + .in(CollUtil.isNotEmpty(reqVO.getProcedureStatusList()), TaskDispatchDetailDO::getProcedureStatus, reqVO.getProcedureStatusList()) + .eq(reqVO.getIsReport() != null, ProcedureDO::getIsReport, reqVO.getIsReport()) + .eq(!StringUtils.isEmpty(reqVO.getDispatchType()), TaskDispatchDO::getDispatchType, reqVO.getDispatchType()) + .eq(reqVO.getTaskId() != null, TaskDispatchDO::getTaskId, reqVO.getTaskId()) + .eq(reqVO.getBomDetailId() != null, TaskDispatchDO::getBomDetailId, reqVO.getBomDetailId()) + ; + + return selectPage(reqVO, query); + } default List selectListByDispatchId(Long dispatchId) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(TaskDispatchDetailDO.class) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java index e801792..88e9d7b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java @@ -87,4 +87,5 @@ public interface TaskDispatchService { void convertAssembleProcedure(TaskDispatchDO taskDispatchDO); List> getOwner(Long id,Long type); + boolean judgeHasOver(Long id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java index 852c452..7bd66a8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.chanko.yunxi.mes.framework.common.exception.ErrorCode; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -140,6 +141,10 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } }); }else if (operateTypeEnum == OperateTypeEnum.CANCEL_SUBMIT){ + PlanDO planDO = planMapper.selectById(updateReqVO.getPlanId()); + if (planDO.getStatus() == 3){ + throw exception(new ErrorCode(1_000_099,"计划已完成,不允许取消提交")); + } updateReqVO.getTaskDispatchDetails().forEach(taskDispatchDetailDO -> { taskDispatchDetailDO.setProcedureStatus(TaskDispatchProcedureStatusEnum.DEFAULT.getCode()); }); @@ -198,6 +203,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { public TaskDispatchDO getTaskDispatch(Long id) { TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(id); Integer num = projectOrderSubMapper.selectById(taskDispatchDO.getProjectSubId()).getAmount(); + taskDispatchDO.setProjectSubAmount(num); taskDispatchDO.setAmount(num*taskDispatchDO.getAmount()); convertAssembleProcedure(taskDispatchDO); return taskDispatchDO; @@ -335,7 +341,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { for (FpUserDetailDO fpUserDetailDO : fpUserDetailDOS) { postIds.add(fpUserDetailDO.getPostId()); } - PageResult taskDispatchDetailDOPageResult = taskDispatchDetailMapper.selectPage(pageReqVO, postIds); + PageResult taskDispatchDetailDOPageResult = taskDispatchDetailMapper.selectPageWx(pageReqVO, postIds); List list = taskDispatchDetailDOPageResult.getList(); List afterList = new ArrayList<>(); if (CollUtil.isNotEmpty(list)){ @@ -357,13 +363,15 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { .eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDetailDO.getDispatchId()) .eq(TaskDispatchDetailDO::getProcedureStatus, 2) ); + if (taskDispatchDetailDO1 == null){ - taskDispatchDetailDO.setBeforeProcedureStatus(1); - }else{ + //查不出来上一道工序已完工就代表它没完成 taskDispatchDetailDO.setBeforeProcedureStatus(0); + }else{ + taskDispatchDetailDO.setBeforeProcedureStatus(1); } }else{ - taskDispatchDetailDO.setBeforeProcedureStatus(0); + taskDispatchDetailDO.setBeforeProcedureStatus(1); } return taskDispatchDetailDO; } @@ -424,7 +432,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } } } - + TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(taskDispatchDetailDO.getDispatchId()); + PlanDO planDO = planMapper.selectById(taskDispatchDO.getPlanId()); // 执行 switch (operate){ case START: @@ -437,6 +446,11 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { }else{ lastReportDO.setOwner(taskDispatchDetailDO.getOwner()); } + //更新生产计划单 + if (planDO.getStatus() != 2 && planDO.getStatus()!=3){ + planDO.setStatus(2); + planMapper.updateById(planDO); + } taskReportMapper.insert(lastReportDO); break; case END: @@ -455,7 +469,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { break; case FINISH: taskDispatchDetailDO.setProcedureStatus(TaskDispatchProcedureStatusEnum.COMPLETED.getCode()); - TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(taskDispatchDetailDO.getDispatchId()); + // TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(taskDispatchDetailDO.getDispatchId()); List taskDispatchDOS = taskDispatchMapper.selectList(TaskDispatchDO::getPlanId, taskDispatchDO.getPlanId()); if(CollUtil.isNotEmpty(taskDispatchDOS)){ List ids = taskDispatchDOS.stream() @@ -473,9 +487,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } } if (isOver){ - PlanDO planDO = planMapper.selectById(taskDispatchDO.getTaskId()); planDO.setStatus(3); - planMapper.updateBatch(planDO); + planMapper.updateById(planDO); if(taskDispatchDO.getDispatchType().equals("ASSEMBLE")){ zjPgMasterService.insertZjList(planDO.getId(),planDO.getProjectId()); } else if (taskDispatchDO.getDispatchType().equals("PRODUCTION")) { @@ -531,7 +544,10 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } return PageResult.empty(); } - + @Override + public boolean judgeHasOver(Long id){ + return taskDispatchDetailMapper.judgeHasOver(id); + } private void createTaskDispatchDetailList(Long dispatchId, List list) { list.forEach(o -> o.setDispatchId(dispatchId)); // 分组更新与插入 diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileRespVO.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileRespVO.java index d49933f..ebde2ed 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileRespVO.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileRespVO.java @@ -32,7 +32,8 @@ public class FileRespVO { @Schema(description = "文件 URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/mes.jpg") private String url; - + @Schema(description = "文件预览URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/mes.jpg") + private String previewUrl; @Schema(description = "文件MIME类型", example = "application/octet-stream") private String type; diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/dataobject/file/FileConfigDO.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/dataobject/file/FileConfigDO.java index 1665478..4616128 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/dataobject/file/FileConfigDO.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/dataobject/file/FileConfigDO.java @@ -55,4 +55,6 @@ public class FileConfigDO extends BaseDO { @TableField(typeHandler = JacksonTypeHandler.class) private FileClientConfig config; + private String operationSystem; + } diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/dataobject/file/FileDO.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/dataobject/file/FileDO.java index a4b2bbc..42751e0 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/dataobject/file/FileDO.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/dataobject/file/FileDO.java @@ -63,5 +63,8 @@ public class FileDO extends BaseDO { * 文件大小 */ private Integer size; - + /** + * 预览地址 + */ + private String previewUrl; } diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/mysql/file/FileConfigMapper.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/mysql/file/FileConfigMapper.java index 1174b20..ddd1703 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/mysql/file/FileConfigMapper.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/dal/mysql/file/FileConfigMapper.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.infra.dal.mysql.file; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -19,7 +20,14 @@ public interface FileConfigMapper extends BaseMapperX { } default FileConfigDO selectByMaster() { - return selectOne(FileConfigDO::getMaster, true); + String os = System.getProperty("os.name").toLowerCase(); + if (os.contains("win")) { + return selectOne(new LambdaQueryWrapper().eq(FileConfigDO::getMaster, true) + .eq(FileConfigDO::getOperationSystem, "WIN")); + }else { + return selectOne(new LambdaQueryWrapper().eq(FileConfigDO::getMaster, true) + .eq(FileConfigDO::getOperationSystem, "LINUX")); + } } } diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileServiceImpl.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileServiceImpl.java index 398429e..76b1f15 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileServiceImpl.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileServiceImpl.java @@ -65,6 +65,7 @@ public class FileServiceImpl implements FileService { file.setName(name); file.setPath(path); file.setUrl(url); + file.setPreviewUrl(url.replace("/admin-api/infra/file/5/get/","/fileview/")); file.setType(type); file.setSize(content.length); fileMapper.insert(file); diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts index 4bcc3d3..fdb77df 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts @@ -71,4 +71,9 @@ export const getTaskDispatchDetailListByWorkTime = async (params) => { } export const getOwnerList = async(id:number,type:number)=>{ return await request.get({url:`/heli/task-dispatch/task-dispatch-detail/getOwner?id=`+id+`&type=`+type}) -} \ No newline at end of file +} + + +export const judgeHasOver = async(id:number)=>{ + return await request.get({url:`/heli/task-dispatch/task-dispatch-detail/judgeHasOver?id=`+id}) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue index 1db018c..0c09aa4 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue @@ -181,7 +181,7 @@ v-for="dict in getIntDictOptions(DICT_TYPE.HELI_DISPATCH_STATUS)" :key="dict.val - + @@ -447,6 +447,20 @@ v-if="formData.dispatchStatus == 2" @click="printHandle(formData.id)" :disabled= + + + + 该派工单,存在报工完数据,是否继续? + + + @@ -532,6 +546,7 @@ const formData = ref({ id: undefined, code: undefined, amount: undefined, + projectSubAmount:undefined, dispatchType: undefined, taskId: undefined, planId: undefined, @@ -763,6 +778,7 @@ const resetForm = () => { id: undefined, code: undefined, amount: undefined, + projectSubAmount:undefined, dispatchType: undefined, taskId: undefined, planId: undefined, @@ -839,7 +855,12 @@ const queryData = async (id?: number) => { } } } - +const centerDialogVisible = ref(false); +const isSureCancle = ref(false) +const sureToCancle = () =>{ + isSureCancle.value = true; + submitForm('CANCEL_SUBMIT'); +} const submitForm = async (operate) => { formData.value.active = operate // 校验子表单 @@ -847,6 +868,17 @@ const submitForm = async (operate) => { // 提交请求 formLoading.value = true try { + if(operate == 'CANCEL_SUBMIT'){ + //如果是取消提交 + if(!isSureCancle.value){ + //如果没确认过//判断是否存在已报工完的派工 + var hasOver = await TaskDispatchApi.judgeHasOver(formData.value.id); + if(hasOver){ + centerDialogVisible.value = true; + return; + } + } + } // 提交明细不能为空 if (operate == 'SUBMIT') { if (!formData.value.taskDispatchDetails || formData.value.taskDispatchDetails.length == 0) { @@ -924,7 +956,7 @@ const onAddItem = () => { procedureStatus: 0, dispatchId: undefined, } - row.amount = formData.value.amount + row.amount = formData.value.projectSubAmount row.dispatchId = formData.value.id formData.value.taskDispatchDetails.push(row) } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue index 4bf45fa..4833c78 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue @@ -451,6 +451,21 @@ v-if="formData.dispatchStatus == 2" @click="printHandle(formData.id)" :disabled= + + + + + 该派工单,存在报工完数据,是否继续? + + + @@ -501,7 +516,7 @@ import { ElButton } from 'element-plus'; import { error } from 'console'; - +const centerDialogVisible = ref(false); const queryParams = { pageNo: 1, pageSize: 99, @@ -1012,7 +1027,11 @@ const queryData = async (id?: number) => { } } } - +const isSureCancle = ref(false) +const sureToCancle = () =>{ + isSureCancle.value = true; + submitForm('CANCEL_SUBMIT'); +} const submitForm = async (operate) => { formData.value.active = operate // 校验子表单 @@ -1027,6 +1046,17 @@ const submitForm = async (operate) => { // return // } // } + if(operate == 'CANCEL_SUBMIT'){ + //如果是取消提交 + if(!isSureCancle.value){ + //如果没确认过//判断是否存在已报工完的派工 + var hasOver = await TaskDispatchApi.judgeHasOver(formData.value.id); + if(hasOver){ + centerDialogVisible.value = true; + return; + } + } + } if(operate == 'SUBMIT'||operate == 'SAVE'){ if (!formData.value.taskDispatchDetails || formData.value.taskDispatchDetails.length == 0) { message.error('派工明细不能为空') diff --git a/mes-ui/mini-app/src/pages.json b/mes-ui/mini-app/src/pages.json index e69fd77..9d75b3a 100644 --- a/mes-ui/mini-app/src/pages.json +++ b/mes-ui/mini-app/src/pages.json @@ -48,6 +48,12 @@ "navigationBarTitleText": "品质异常通知单图片" } }, + { + "path": "pages/approveOrder/components/showFileWx", + "style": { + "navigationBarTitleText": "合同文件预览" + } + }, { "path": "pages/productionReport/productionReport-detail", "style": { diff --git a/mes-ui/mini-app/src/pages/approveOrder/approveOrder-detail.vue b/mes-ui/mini-app/src/pages/approveOrder/approveOrder-detail.vue index e07c723..539be3b 100644 --- a/mes-ui/mini-app/src/pages/approveOrder/approveOrder-detail.vue +++ b/mes-ui/mini-app/src/pages/approveOrder/approveOrder-detail.vue @@ -11,6 +11,7 @@ import { getFileAPI, getLogAPI, } from '@/services/approveOrder' +import {Base64} from '@/utils/base64.js'; const popup = ref() @@ -196,17 +197,46 @@ const openReport = (url: any) => { }, }) } + + + // 下载 const showFile = ref(false) const fileUrl = ref('') const handleDownload = (pdfUrl: any) => { //#ifndef MP-WEIXIN - fileUrl.value = 'https://star.hz-hl.com/FileServer/onlinePreview?url='+encodeURIComponent(btoa(unescape(encodeURIComponent(pdfUrl)))) - // #endif - //#ifdef MP-WEIXIN - fileUrl.value = 'https://star.hz-hl.com/FileServer/onlinePreview?url='+encodeURIComponent(wx.arrayBufferToBase64(wx.base64ToArrayBuffer(encodeURIComponent(pdfUrl)))) + fileUrl.value = 'https://star.hz-hl.com/FileServer/onlinePreview?url='+encodeURIComponent(Base64.encode(pdfUrl)) + window.open(fileUrl.value); // #endif - showFile.value = true; + //#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 + + // showFile.value = true; // if (pdfUrl) { // switch (uni.getSystemInfoSync().platform) { // case 'android': @@ -302,7 +332,7 @@ const handleDownload = (pdfUrl: any) => { {{ item.businessFileType }} {{ item.createTime }} - 查看 + 查看 @@ -341,7 +371,7 @@ const handleDownload = (pdfUrl: any) => { - + diff --git a/mes-ui/mini-app/src/pages/approveOrder/components/showFileWx.vue b/mes-ui/mini-app/src/pages/approveOrder/components/showFileWx.vue new file mode 100644 index 0000000..adb542d --- /dev/null +++ b/mes-ui/mini-app/src/pages/approveOrder/components/showFileWx.vue @@ -0,0 +1,30 @@ + + + + + \ No newline at end of file diff --git a/mes-ui/mini-app/src/pages/assembleReport/components/dataItem.vue b/mes-ui/mini-app/src/pages/assembleReport/components/dataItem.vue index f93f58d..1694ed3 100644 --- a/mes-ui/mini-app/src/pages/assembleReport/components/dataItem.vue +++ b/mes-ui/mini-app/src/pages/assembleReport/components/dataItem.vue @@ -1,7 +1,7 @@