添加批量审批
This commit is contained in:
parent
ee32488786
commit
c114c17a99
@ -269,6 +269,20 @@ public class ProcessBomController {
|
||||
public CommonResult<Boolean> withdraw(@RequestParam("code") String code) {
|
||||
return processBomService.withdraw(code);
|
||||
}
|
||||
@GetMapping("/updateById")
|
||||
@Operation(summary = "修改生产任务单")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
|
||||
public CommonResult<Boolean> updateById(@RequestParam("code") String code) {
|
||||
return processBomService.updateById(code);
|
||||
}
|
||||
@GetMapping("/selectPlanTaskStatus")
|
||||
@Operation(summary = "查看生产任务单状态")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
|
||||
public CommonResult<Boolean> selectPlanTaskStatus(@RequestParam("id") String id) {
|
||||
return processBomService.selectPlanTaskStatus(id);
|
||||
}
|
||||
@GetMapping("/exportStandard")
|
||||
@Operation(summary = "导出标准件物料需求计划Excel")
|
||||
@OperateLog(type = EXPORT)
|
||||
|
@ -171,9 +171,9 @@ public class PurchaseOrderMakeController {
|
||||
public CommonResult<Boolean> rejects(@RequestParam("id") Long id) {
|
||||
return success(partPurchaseOrderService.rejects(id));
|
||||
}
|
||||
@GetMapping("/approvals")
|
||||
@PostMapping("/approvals")
|
||||
@Operation(summary = "采购单批准")
|
||||
public CommonResult<Boolean> approvals(@RequestParam("id") Long id) {
|
||||
return success(partPurchaseOrderService.approvals(id));
|
||||
public CommonResult<Boolean> approvals(@Valid @RequestBody List<PurchaseOrderMakeDetailDO> list) {
|
||||
return success(partPurchaseOrderService.approvals(list));
|
||||
}
|
||||
}
|
||||
|
@ -139,15 +139,19 @@ public class DeliverOrderServiceImpl implements DeliverOrderService {
|
||||
// 校验存在
|
||||
DeliverOrderDO oldDO = validateDeliverOrderExists(updateReqVO.getId());
|
||||
OperateTypeEnum operateTypeEnum = OperateTypeEnum.valueOf(updateReqVO.getActive());
|
||||
if(!oldDO.canOperate(operateTypeEnum)){
|
||||
throw exception(INVALID_OPERATE);
|
||||
}
|
||||
// 超额校验
|
||||
overageDeliverValidate(updateReqVO.getSaleOrderIds(), updateReqVO.getDeliverOrderSubs());
|
||||
// if(!oldDO.canOperate(operateTypeEnum)){
|
||||
// throw exception(INVALID_OPERATE);
|
||||
// }
|
||||
|
||||
// 更新
|
||||
DeliverOrderDO updateObj = BeanUtils.toBean(updateReqVO, DeliverOrderDO.class);
|
||||
updateObj.setDeliverStatus(DeliverOrderStatusEnum.valueOf(updateReqVO.getActive()).getCode());
|
||||
if (oldDO.getDeliverStatus()==2){
|
||||
updateObj.setDeliverStatus(2);
|
||||
}else {
|
||||
// 超额校验
|
||||
overageDeliverValidate(updateReqVO.getSaleOrderIds(), updateReqVO.getDeliverOrderSubs());
|
||||
}
|
||||
deliverOrderMapper.updateById(updateObj);
|
||||
updateReqVO.setDeliverStatus(updateObj.getDeliverStatus());
|
||||
|
||||
|
@ -7,6 +7,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.Pa
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PurchaseOrderMakeSaveReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -68,7 +69,7 @@ public interface PartPurchaseOrderService {
|
||||
|
||||
Long countReview();
|
||||
|
||||
Boolean approvals(Long id);
|
||||
Boolean approvals(List<PurchaseOrderMakeDetailDO> list);
|
||||
|
||||
Boolean rejects(Long id);
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
|
||||
@ -29,6 +30,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper;
|
||||
@ -50,10 +52,8 @@ import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||
@ -84,6 +84,8 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
||||
private OrderYfService orderYfService;
|
||||
@Autowired
|
||||
private SupplierMapper supplierMapper;
|
||||
@Autowired
|
||||
private ProcessBomDetailMapper processBomDetailMapper;
|
||||
|
||||
@Override
|
||||
public PageResult<PartPurchaseOrderPageRespVO> getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) {
|
||||
@ -190,16 +192,41 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
||||
|
||||
@Override
|
||||
public boolean updatePartCheckStatusNo(PurchaseOrderMakeSaveReqVO updateReqVO) {
|
||||
PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO();
|
||||
purchaseOrderMakeDO.setId(updateReqVO.getId());
|
||||
purchaseOrderMakeDO.setStatus(3);
|
||||
purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO);
|
||||
purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO);
|
||||
|
||||
LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, updateReqVO.getId());
|
||||
purchaseOrderMakeDetailMapper.delete(wrapper);
|
||||
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId());
|
||||
// PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO();
|
||||
// purchaseOrderMakeDO.setId(updateReqVO.getId());
|
||||
// purchaseOrderMakeDO.setStatus(3);
|
||||
// purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO);
|
||||
// purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO);
|
||||
//
|
||||
// LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaUpdateWrapper<>();
|
||||
// wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, updateReqVO.getId());
|
||||
// purchaseOrderMakeDetailMapper.delete(wrapper);
|
||||
// List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId());
|
||||
// materialPlanBoomDOs.forEach(materialPlanBoom -> {
|
||||
// UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
|
||||
// updateWrapper.eq("id", materialPlanBoom.getId())
|
||||
// .set("mplan_status", 3)
|
||||
// .set("project_purchase_order_make_id", null)
|
||||
// .set("purchase_no", null)
|
||||
// .set("project_purchase_order_make_detail_id", null)
|
||||
// .set("rej_remark", updateReqVO.getReason());
|
||||
// materialPlanBoomMapper.update(updateWrapper);
|
||||
// });
|
||||
// return true;
|
||||
PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(updateReqVO.getId());
|
||||
if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){
|
||||
if (orderMakeDetailDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!"));
|
||||
PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(orderMakeDetailDO.getPurchaseOrderId());
|
||||
purchaseOrderMakeDetailMapper.deleteById(orderMakeDetailDO);
|
||||
if (ObjectUtil.isNotEmpty(orderMakeDO)){
|
||||
LambdaQueryWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, orderMakeDO.getId());
|
||||
if (purchaseOrderMakeDetailMapper.selectCount(wrapper) == 0){
|
||||
purchaseOrderMakeMapper.deleteById(orderMakeDO.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_detail_id", updateReqVO.getId());
|
||||
materialPlanBoomDOs.forEach(materialPlanBoom -> {
|
||||
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.eq("id", materialPlanBoom.getId())
|
||||
@ -207,11 +234,14 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
||||
.set("project_purchase_order_make_id", null)
|
||||
.set("purchase_no", null)
|
||||
.set("project_purchase_order_make_detail_id", null)
|
||||
.set("rej_remark", updateReqVO.getReason());
|
||||
.set("estimated_price", BigDecimal.ZERO)
|
||||
.set("supplier_id", null)
|
||||
.set("rej_remark", updateReqVO.getReason())
|
||||
.set("mat_rest",null);
|
||||
materialPlanBoomMapper.update(updateWrapper);
|
||||
});
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -307,7 +337,20 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
||||
purchaseOrderMakeMapper.insert(purchaseOrderMakeDO);
|
||||
long purchaseOrderMakeId = purchaseOrderMakeDO.getId();
|
||||
String purchaseOrderMakeDOPurchaseNo = purchaseOrderMakeDO.getPurchaseNo();
|
||||
|
||||
Map<Long, String> groupedResult = updateReqVOs.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
MaterialPlanBoomDO::getBoomDetailId, // 根据 boomDetailId 分组
|
||||
Collectors.collectingAndThen(
|
||||
Collectors.toList(), // 将同组元素收集为 List
|
||||
list -> list.get(0).getBoomSpec() // 取第一个元素的 boomSpec
|
||||
)
|
||||
));
|
||||
groupedResult.forEach((boomDetailId, boomSpec) -> {
|
||||
LambdaUpdateWrapper<ProcessBomDetailDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(ProcessBomDetailDO::getId,boomDetailId);
|
||||
lambdaUpdateWrapper.set(ProcessBomDetailDO::getSpec, boomSpec);
|
||||
processBomDetailMapper.update(lambdaUpdateWrapper);
|
||||
});
|
||||
updateReqVOs.forEach(updateReq -> {
|
||||
createPurchaseOrderMakeAndDetail(updateReq,purchaseOrderMakeId, purchaseOrderMakeDOPurchaseNo,planDO.getId());
|
||||
});
|
||||
@ -357,23 +400,32 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean approvals(Long id) {
|
||||
PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(id);
|
||||
if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){
|
||||
if (orderMakeDetailDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!"));
|
||||
orderMakeDetailDO.setStatus(2);
|
||||
orderMakeDetailDO.setAuditTime(LocalDateTime.now());
|
||||
orderMakeDetailDO.setAuditor(getLoginUser().getId());
|
||||
purchaseOrderMakeDetailMapper.updateById(orderMakeDetailDO);
|
||||
public Boolean approvals(List<PurchaseOrderMakeDetailDO> list) {
|
||||
if (ObjectUtil.isNotEmpty( list)){
|
||||
List<Long> ids = list.stream().map(PurchaseOrderMakeDetailDO::getId).collect(Collectors.toList());
|
||||
LambdaQueryWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(PurchaseOrderMakeDetailDO::getId, ids);
|
||||
wrapper.ne(PurchaseOrderMakeDetailDO::getStatus,1);
|
||||
if (purchaseOrderMakeDetailMapper.selectCount(wrapper) > 0) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!"));
|
||||
LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.in(PurchaseOrderMakeDetailDO::getId, ids);
|
||||
updateWrapper.set(PurchaseOrderMakeDetailDO::getStatus,2);
|
||||
updateWrapper.set(PurchaseOrderMakeDetailDO::getAuditTime, LocalDateTime.now());
|
||||
updateWrapper.set(PurchaseOrderMakeDetailDO::getAuditor, getLoginUser().getId());
|
||||
purchaseOrderMakeDetailMapper.update(updateWrapper);
|
||||
LambdaUpdateWrapper<MaterialPlanBoomDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.in(MaterialPlanBoomDO::getProjectPurchaseOrderMakeDetailId, ids);
|
||||
lambdaUpdateWrapper.set(MaterialPlanBoomDO::getMplanStatus,2);
|
||||
materialPlanBoomMapper.update(lambdaUpdateWrapper);
|
||||
// List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_detail_id", id);
|
||||
// materialPlanBoomDOs.forEach(materialPlanBoomDO -> {
|
||||
// MaterialPlanBoomDO materialPlanBoom = new MaterialPlanBoomDO();
|
||||
// materialPlanBoom.setId(materialPlanBoomDO.getId());
|
||||
// materialPlanBoom.setMplanStatus(2);
|
||||
// materialPlanBoomMapper.updateById(materialPlanBoom);
|
||||
// });
|
||||
}
|
||||
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_detail_id", id);
|
||||
materialPlanBoomDOs.forEach(materialPlanBoomDO -> {
|
||||
MaterialPlanBoomDO materialPlanBoom = new MaterialPlanBoomDO();
|
||||
materialPlanBoom.setId(materialPlanBoomDO.getId());
|
||||
materialPlanBoom.setMplanStatus(2);
|
||||
materialPlanBoomMapper.updateById(materialPlanBoom);
|
||||
});
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -116,4 +116,8 @@ public interface ProcessBomService {
|
||||
BigDecimal assemblyLaborCost(Long id, Long projectSubId);
|
||||
|
||||
CommonResult<Boolean> delMaterialPlan(Long id, String projectMaterialPlanNo);
|
||||
|
||||
CommonResult<Boolean> updateById(String code);
|
||||
|
||||
CommonResult<Boolean> selectPlanTaskStatus(String id);
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ 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.excel.core.util.ExcelUtils;
|
||||
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
|
||||
import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService;
|
||||
import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomImportExcelVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO;
|
||||
@ -29,6 +30,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantask.PlanTaskDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantaskbom.PlanTaskBomDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.shenhe.ShenheDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO;
|
||||
@ -51,6 +53,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskreport.TaskReportMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
|
||||
import com.chanko.yunxi.mes.module.heli.enums.ProcessBomStatusEnum;
|
||||
import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum;
|
||||
import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoService;
|
||||
@ -65,6 +68,7 @@ import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.chanko.yunxi.mes.module.system.dal.mysql.dict.DictDataMapper;
|
||||
import com.chanko.yunxi.mes.module.system.service.user.AdminUserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.core.parameters.P;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -85,6 +89,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.error;
|
||||
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
|
||||
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.MATERIAL_PLAN;
|
||||
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
||||
|
||||
@ -486,10 +491,13 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
||||
List<PlanTaskBomDO> planTaskBomDOS = planTaskBomMapper.selectList(wrapper);
|
||||
if (ObjectUtil.isNotEmpty(planTaskBomDOS)){
|
||||
List<Long> collect = planTaskBomDOS.stream().map(PlanTaskBomDO::getTaskId).distinct().collect(Collectors.toList());
|
||||
LambdaQueryWrapper<PlanTaskDO> planTaskDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
planTaskDOLambdaQueryWrapper.in(PlanTaskDO::getId, collect);
|
||||
planTaskDOLambdaQueryWrapper.eq(PlanTaskDO::getStatus, 2);
|
||||
if (planTaskMapper.selectCount(planTaskDOLambdaQueryWrapper) > 0) throw exception(new ErrorCode(1_007_9999,"该生产任务单状态已提交,请先取消再修改BOM"));
|
||||
if (ObjectUtil.isNotEmpty( collect)){
|
||||
LambdaQueryWrapper<PlanTaskDO> planTaskDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
planTaskDOLambdaQueryWrapper.in(PlanTaskDO::getId, collect);
|
||||
planTaskDOLambdaQueryWrapper.eq(PlanTaskDO::getStatus, 2);
|
||||
if (planTaskMapper.selectCount(planTaskDOLambdaQueryWrapper) > 0) throw exception(new ErrorCode(1_007_9999,"该生产任务单状态已提交,请先取消再修改BOM"));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
//标准件不管材质,非标准件材质必填
|
||||
@ -559,14 +567,22 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
||||
List<TaskDispatchDO> list = taskDispatchMapper.selectList(queryWrapper);
|
||||
if (ObjectUtil.isNotEmpty(list)){
|
||||
List<Long> collect = list.stream().map(TaskDispatchDO::getId).distinct().collect(Collectors.toList());
|
||||
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(TaskDispatchDetailDO::getDispatchId, collect);
|
||||
List<TaskDispatchDetailDO> detailDOS = taskDispatchDetailMapper.selectList(wrapper);
|
||||
List<Long> collect1 = detailDOS.stream().map(TaskDispatchDetailDO::getId).distinct().collect(Collectors.toList());
|
||||
LambdaQueryWrapper<TaskReportDO> taskReportDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
taskReportDOLambdaQueryWrapper.in(TaskReportDO::getDispatchDetailId, collect1);
|
||||
if (taskReportMapper.selectCount(taskReportDOLambdaQueryWrapper)>0) throw exception(new ErrorCode(1_007_9988,"物料"+po.getMaterialName()+"已报工,不允许修改零件名称"));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty( collect)) {
|
||||
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(TaskDispatchDetailDO::getDispatchId, collect);
|
||||
List<TaskDispatchDetailDO> detailDOS = taskDispatchDetailMapper.selectList(wrapper);
|
||||
if (ObjectUtil.isNotEmpty(detailDOS)) {
|
||||
List<Long> collect1 = detailDOS.stream().map(TaskDispatchDetailDO::getId).distinct().collect(Collectors.toList());
|
||||
if (ObjectUtil.isNotEmpty(collect1)) {
|
||||
LambdaQueryWrapper<TaskReportDO> taskReportDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
taskReportDOLambdaQueryWrapper.in(TaskReportDO::getDispatchDetailId, collect1);
|
||||
if (taskReportMapper.selectCount(taskReportDOLambdaQueryWrapper) > 0)
|
||||
throw exception(new ErrorCode(1_007_9988, "物料" + po.getMaterialName() + "已报工,不允许修改零件名称"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if (!vo.getBlueprintNo().equals(po.getBlueprintNo())) {
|
||||
LambdaQueryWrapper<MaterialPlanBoomDO> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
@ -578,13 +594,18 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
||||
List<TaskDispatchDO> list = taskDispatchMapper.selectList(queryWrapper);
|
||||
if (ObjectUtil.isNotEmpty(list)){
|
||||
List<Long> collect = list.stream().map(TaskDispatchDO::getId).distinct().collect(Collectors.toList());
|
||||
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(TaskDispatchDetailDO::getDispatchId, collect);
|
||||
List<TaskDispatchDetailDO> detailDOS = taskDispatchDetailMapper.selectList(wrapper);
|
||||
List<Long> collect1 = detailDOS.stream().map(TaskDispatchDetailDO::getId).distinct().collect(Collectors.toList());
|
||||
LambdaQueryWrapper<TaskReportDO> taskReportDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
taskReportDOLambdaQueryWrapper.in(TaskReportDO::getDispatchDetailId, collect1);
|
||||
if (taskReportMapper.selectCount(taskReportDOLambdaQueryWrapper)>0) throw exception(new ErrorCode(1_007_9988,"物料"+po.getMaterialName()+"已报工,不允许修改图号"));
|
||||
if (ObjectUtil.isNotEmpty(collect)){
|
||||
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(TaskDispatchDetailDO::getDispatchId, collect);
|
||||
List<TaskDispatchDetailDO> detailDOS = taskDispatchDetailMapper.selectList(wrapper);
|
||||
List<Long> collect1 = detailDOS.stream().map(TaskDispatchDetailDO::getId).distinct().collect(Collectors.toList());
|
||||
if (ObjectUtil.isNotEmpty(collect1)){
|
||||
LambdaQueryWrapper<TaskReportDO> taskReportDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
taskReportDOLambdaQueryWrapper.in(TaskReportDO::getDispatchDetailId, collect1);
|
||||
if (taskReportMapper.selectCount(taskReportDOLambdaQueryWrapper)>0) throw exception(new ErrorCode(1_007_9988,"物料"+po.getMaterialName()+"已报工,不允许修改图号"));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
vo.setBomEditStatus(BomEditStatusEnum.HAS_EDIT.getStatus());
|
||||
}
|
||||
@ -595,10 +616,12 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
||||
List<TaskDispatchDO> list = taskDispatchMapper.selectList(queryWrapper);
|
||||
if (ObjectUtil.isNotEmpty(list)){
|
||||
List<Long> collect = list.stream().map(TaskDispatchDO::getId).distinct().collect(Collectors.toList());
|
||||
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(TaskDispatchDetailDO::getDispatchId, collect);
|
||||
wrapper.eq(TaskDispatchDetailDO::getProcedureStatus, 2);
|
||||
if (taskDispatchDetailMapper.selectCount(wrapper)>0) throw exception(new ErrorCode(1_007_9998,"该零件"+po.getMaterialName()+"工序已报工完成,不允许修改"));
|
||||
if (ObjectUtil.isNotEmpty( collect)){
|
||||
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(TaskDispatchDetailDO::getDispatchId, collect);
|
||||
wrapper.eq(TaskDispatchDetailDO::getProcedureStatus, 2);
|
||||
if (taskDispatchDetailMapper.selectCount(wrapper)>0) throw exception(new ErrorCode(1_007_9998,"该零件"+po.getMaterialName()+"工序已报工完成,不允许修改"));
|
||||
}
|
||||
}
|
||||
vo.setBomEditStatus(BomEditStatusEnum.HAS_EDIT.getStatus());
|
||||
}
|
||||
@ -1530,6 +1553,26 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
||||
return CommonResult.error(400,"boom明细不存在,请刷新页面");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> updateById(String code) {
|
||||
LambdaUpdateWrapper<PlanTaskDO> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(PlanTaskDO::getProcessBomId, code);
|
||||
wrapper.set(PlanTaskDO ::getStatus,1);
|
||||
planTaskMapper.update(wrapper);
|
||||
return success( true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> selectPlanTaskStatus(String id) {
|
||||
LambdaQueryWrapper<PlanTaskDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(PlanTaskDO::getProcessBomId, id);
|
||||
PlanTaskDO planTaskDO = planTaskMapper.selectOne(lambdaQueryWrapper);
|
||||
if (ObjectUtil.isNotEmpty(planTaskDO)){
|
||||
if (planTaskDO.getStatus()==2) return CommonResult.success(true);
|
||||
}
|
||||
return success(false);
|
||||
}
|
||||
|
||||
|
||||
private void createProcessBomDetailList(String bomCode,Long bomId, List<ProcessBomDetailDO> list,Integer num) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
@ -73,6 +73,6 @@ export const obtainReviewDetails = async (id:number) => {
|
||||
export const rejects = async (id:number) => {
|
||||
return await request.get({ url: `/heli/purchase-order-make/rejects?id=` +id })
|
||||
}
|
||||
export const approvals = async (id: number) => {
|
||||
return await request.get({ url: `/heli/purchase-order-make/approvals?id=` + id })
|
||||
export const approvals = async (data) => {
|
||||
return await request.post({ url: `/heli/purchase-order-make/approvals`,data })
|
||||
}
|
||||
|
@ -104,3 +104,9 @@ export const planBZJPage = async (params) => {
|
||||
export const delMaterialPlan = async (id: number,projectMaterialPlanNo:string) => {
|
||||
return await request.delete({ url: `/heli/process-bom/delMaterialPlan?id=` + id+"&projectMaterialPlanNo="+projectMaterialPlanNo})
|
||||
}
|
||||
export const updateById = async (code) => {
|
||||
return await request.get({ url: `/heli/process-bom/updateById?code=` + code })
|
||||
}
|
||||
export const selectPlanTaskStatus = async (id) => {
|
||||
return await request.get({ url: `/heli/process-bom/selectPlanTaskStatus?id=` + id })
|
||||
}
|
||||
|
@ -243,7 +243,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" min-width="100">
|
||||
<template #default="scope">
|
||||
<el-button v-if="'update,create,deliver'.indexOf(active) > -1" link type="danger" size="small" @click.prevent="onDeleteItem(scope.$index)">
|
||||
<el-button v-if="'update,create,deliver'.indexOf(active) > -1 &&formData.deliverStatus != 2" link type="danger" size="small" @click.prevent="onDeleteItem(scope.$index)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
@ -344,7 +344,7 @@
|
||||
<el-table-column prop="createTime" align="center" label="上传时间" :formatter="dateFormatter" />
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="scope">
|
||||
<el-button v-if="'update,create,deliver'.indexOf(active) > -1" link type="danger" size="small" @click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)">
|
||||
<el-button v-if="'update,create,deliver'.indexOf(active) > -1 && formData.deliverStatus != 2" link type="danger" size="small" @click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-if="!!scope.row.id" link type="primary" size="small" @click="downloadAttachment(scope.row.name, scope.row.url)">
|
||||
@ -362,9 +362,9 @@
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">操作日志</span>
|
||||
<el-button @click="goback" size="large" style="margin-left: 5rem">取 消</el-button>
|
||||
<el-button v-if="active != 'detail' && formData.deliverStatus == 1" @click="submitForm('SAVE')" type="success" :disabled="formLoading" size="large">保 存</el-button>
|
||||
<el-button v-if="active != 'detail'" @click="submitForm('SAVE')" type="success" :disabled="formLoading" size="large">保 存</el-button>
|
||||
<el-button v-if="(((active != 'detail' && formData.id) || active == 'deliver') && formData.deliverStatus == 1)" @click="submitForm('DELIVER')" type="primary" :disabled="formLoading" size="large">发 货</el-button>
|
||||
<el-button v-if="active == 'detail' && formData.deliverStatus == 2 && formData.id" type="primary" @click="printHandle" :disabled="formLoading" size="large">打印发货单</el-button>
|
||||
<el-button v-if=" formData.id" type="primary" @click="printHandle" :disabled="formLoading" size="large">打印发货单</el-button>
|
||||
</template>
|
||||
<el-row>
|
||||
<el-col>
|
||||
@ -912,7 +912,7 @@ const queryData = async (type: string, id?: number) => {
|
||||
dialogTitle.value = t('action.' + type)
|
||||
// 修改时,设置数据
|
||||
formLoading.value = true
|
||||
formData.value.deliverDate = new Date().getTime()
|
||||
// formData.value.deliverDate = new Date().getTime()
|
||||
try {
|
||||
if (id) {
|
||||
formData.value = await DeliverOrderApi.getDeliverOrder(id)
|
||||
|
@ -0,0 +1,80 @@
|
||||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" @close="cancel">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="驳回原因" prop="reason">
|
||||
<el-input type="textarea" :rows="5" v-model="formData.reason" 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 PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
|
||||
import {updatePurchaseOrderMakeNo} from "@/api/heli/partpurchaseorder";
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
reason: undefined,
|
||||
})
|
||||
const formRules = reactive({
|
||||
reason: [{ required: true, message: '驳回原因不能为空', trigger: 'blur' }],
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (id?: number) => {
|
||||
dialogVisible.value = true
|
||||
resetForm()
|
||||
formData.value.id=id
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const cancel = async () => {
|
||||
dialogVisible.value = false
|
||||
emit('success')
|
||||
}
|
||||
const submitForm = async () => {
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
|
||||
dialogVisible.value = false
|
||||
await PartPurchaseOrderApi.updatePurchaseOrderMakeNo(formData.value)
|
||||
// 发送操作成功的事件
|
||||
message.success("驳回成功");
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
reason:undefined,
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
@ -64,16 +64,23 @@
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table" show-summary :summary-method="getSummaries">
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<el-button style="margin-left: 20px" @click="approves()" type="success" size="large">全部审核</el-button>
|
||||
</template>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-form ref="multipleTable" :model="list" v-loading="formLoading" label-width="0" >
|
||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" show-summary :summary-method="getSummaries" @selection-change="handleSelectionChange" :row-class-name="tableRowClassName">
|
||||
<el-table-column type="selection" width="70"/>
|
||||
<el-table-column label="序号" type="index" align="center" fixed min-width="70px" />
|
||||
<el-table-column label="送审日期" align="center" prop="createTime" min-width="150px" :formatter="dateFormatter1"/>
|
||||
<el-table-column label="客户简称" align="center" prop="brief" min-width="100px" />
|
||||
<!-- <el-table-column label="客户简称" align="center" prop="brief" min-width="100px" />-->
|
||||
<el-table-column label="子项目编码" align="center" prop="projectSubCode" min-width="250px" />
|
||||
<el-table-column label="图号" align="center" prop="blueprintNo" min-width="120px" />
|
||||
<el-table-column label="零件名称" align="center" prop="boomName" min-width="180px" />
|
||||
<el-table-column label="规格" align="center" prop="boomSpec" min-width="120px" />
|
||||
<el-table-column label="材料" align="center" prop="composition" min-width="120px" />
|
||||
<el-table-column label="工序" align="center" prop="procedureName" min-width="120px" />
|
||||
<el-table-column label="需求数量" align="center" prop="boomAmount" min-width="100px" />
|
||||
<el-table-column label="采购数量" align="center" prop="purchaseAmount" min-width="100px" fixed="right" />
|
||||
@ -93,11 +100,11 @@
|
||||
v-if="scope.row.status != 2"
|
||||
link
|
||||
type="primary"
|
||||
@click="approve(scope.row.id)"
|
||||
@click="approve(scope.row)"
|
||||
>
|
||||
审核
|
||||
</el-button>
|
||||
<el-button link type="danger" @click="reject(scope.row.id)" v-if="scope.row.status != 2">
|
||||
<el-button link type="danger" @click="openForm(scope.row.id)" v-if="scope.row.status != 2">
|
||||
驳回
|
||||
</el-button>
|
||||
</template>
|
||||
@ -106,22 +113,32 @@
|
||||
<!-- 分页 -->
|
||||
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
</ContentWrap>
|
||||
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
<Form ref="formRef" @success="getList" />
|
||||
</el-card>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
|
||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||
import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
|
||||
import Form from "./Form.vue"
|
||||
import {dateFormatter1} from "@/utils/formatTime";
|
||||
import {approvals, review} from "@/api/heli/partpurchaseorder";
|
||||
import {ref} from "vue";
|
||||
import {ElTable, ElTableColumn} from "element-plus";
|
||||
defineOptions({ name: 'PartPurchaseCheck' })
|
||||
const router = useRouter()
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
|
||||
const updateParams = reactive({
|
||||
id: undefined,
|
||||
reason: undefined
|
||||
})
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref([]) // 列表的数据
|
||||
@ -155,6 +172,7 @@ const queryParams = reactive({
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
const multipleTable = ref<InstanceType<typeof ElTable>>()
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
@ -162,27 +180,77 @@ const getList = async () => {
|
||||
try {
|
||||
const data = await PartPurchaseOrderApi.getPartCheckPages(queryParams)
|
||||
list.value = data.list
|
||||
list.value.forEach(item=>{
|
||||
item.isSelected=false
|
||||
})
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
const approve = async (id:number) => {
|
||||
await PartPurchaseOrderApi.approvals(id)
|
||||
message.success("审批成功");
|
||||
getList();
|
||||
const approve = async (row) => {
|
||||
multipleTable.value=[]
|
||||
multipleTable.value.push(row)
|
||||
approves();
|
||||
}
|
||||
const approves = async () => {
|
||||
try{
|
||||
const list = multipleTable.value|| []; // 安全获取数据
|
||||
// 1. 检查空数据
|
||||
if (!list || list.length==null) {
|
||||
message.error("提交明细不能为空,请确认");
|
||||
return;
|
||||
}
|
||||
formLoading.value = true;
|
||||
|
||||
// 5. 提交数据(添加超时处理)
|
||||
const res = await Promise.race([
|
||||
PartPurchaseOrderApi.approvals(list),
|
||||
new Promise((_, reject) =>
|
||||
setTimeout(() => reject(new Error("请求超时")), 30000)
|
||||
)
|
||||
]);
|
||||
message.success("审批成功");
|
||||
getList(); // 确保刷新完成
|
||||
|
||||
emit('success');
|
||||
} catch (error) {
|
||||
console.error("提交失败:", error);
|
||||
} finally {
|
||||
formLoading.value = false;
|
||||
}
|
||||
const reject = async (id:number) => {
|
||||
await PartPurchaseOrderApi.rejects(id)
|
||||
message.success("驳回成功");
|
||||
getList();
|
||||
}
|
||||
|
||||
/** 添加/修改操作 */
|
||||
const formRef = ref()
|
||||
const openForm = (id?: number) => {
|
||||
formRef.value.open( id)
|
||||
}
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
const handleSelectionChange = (val) => {
|
||||
// 第一步:重置所有行的 isSelected 为 false
|
||||
list.value.forEach(row => {
|
||||
row.isSelected = false;
|
||||
});
|
||||
|
||||
// 第二步:将当前选中行的 isSelected 设为 true
|
||||
val.forEach(selectedRow => {
|
||||
// 找到对应行并更新状态(通过唯一标识符匹配更准确)
|
||||
const targetRow = list.value.find(row => row.id === selectedRow.id);
|
||||
if (targetRow) {
|
||||
targetRow.isSelected = true;
|
||||
}
|
||||
});
|
||||
multipleTable.value=val
|
||||
}
|
||||
|
||||
const tableRowClassName = ({ row }) => {
|
||||
return row.isSelected ? 'selected-row' : '';
|
||||
}
|
||||
const getSummaries = (param: SummaryMethodProps) => {
|
||||
const summaryField = ["boomAmount","purchaseAmount","estimatedPrice"];
|
||||
const { columns, data } = param;
|
||||
@ -256,28 +324,28 @@ const floatMul = (a, b) => {
|
||||
}
|
||||
/** 添加/修改操作 */
|
||||
|
||||
const openForm = (type: string, id?: number) => {
|
||||
|
||||
switch (type) {
|
||||
case 'create':
|
||||
router.push({ path: '/purchase/materialplanadd', query: { id: id } })
|
||||
break;
|
||||
case 'update':
|
||||
router.push({ path: '/purchase/materialplanedit', query: { id: id } })
|
||||
break;
|
||||
case 'detail':
|
||||
router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} })
|
||||
// window.open(`/purchase/PartPurchaseCheckDetail?id=${id}&type=${encodeURIComponent(type)}`, '_self');
|
||||
break;
|
||||
case 'check':
|
||||
router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} })
|
||||
// window.open(`/purchase/PartPurchaseCheckDetail?id=${id}&type=${encodeURIComponent(type)}`, '_self');
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
// const openForm = (type: string, id?: number) => {
|
||||
//
|
||||
// switch (type) {
|
||||
// case 'create':
|
||||
// router.push({ path: '/purchase/materialplanadd', query: { id: id } })
|
||||
// break;
|
||||
// case 'update':
|
||||
// router.push({ path: '/purchase/materialplanedit', query: { id: id } })
|
||||
// break;
|
||||
// case 'detail':
|
||||
// router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} })
|
||||
// // window.open(`/purchase/PartPurchaseCheckDetail?id=${id}&type=${encodeURIComponent(type)}`, '_self');
|
||||
// break;
|
||||
// case 'check':
|
||||
// router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} })
|
||||
// // window.open(`/purchase/PartPurchaseCheckDetail?id=${id}&type=${encodeURIComponent(type)}`, '_self');
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
@ -297,7 +365,12 @@ const userInit = ref()
|
||||
/** 初始化 **/
|
||||
onMounted(async () => {
|
||||
//用户列表数据
|
||||
// userInit.value = await UserApi.getSimpleUserList()
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
<style>
|
||||
.selected-row {
|
||||
background-color: #ffe6cc !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
@ -5,15 +5,15 @@
|
||||
<table border="2" cellspacing="0" id="table" style="height: 27.2cm;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<td colspan="2" >
|
||||
<div style="width: 100px; text-align: center">
|
||||
<img :src="logoDataUrl" style="width: 100%" alt="" />
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="6">
|
||||
<td colspan="6" >
|
||||
<span style="font-size: 20px; font-weight: 700">模具生产计划单</span>
|
||||
</td>
|
||||
<td colspan="2" style="padding: 5px 0">
|
||||
<td colspan="2" style="padding: 5px 0;" >
|
||||
<div style="border-bottom: 1px solid #666; padding-bottom: 5px;font-size: 16px" >项目编号</div>
|
||||
<div style="padding-top: 5px; font-size: 16px" >{{ formData.code }}</div>
|
||||
</td>
|
||||
@ -22,10 +22,9 @@
|
||||
<tbody class="masterClass">
|
||||
<tr>
|
||||
<td colspan="2" style="font-size: 16px"> 客户名称 </td>
|
||||
<td colspan="5">
|
||||
<span style="font-size: 16px">{{ formData.customerName }}</span>
|
||||
<td colspan="6">
|
||||
<span style="font-size: 16px">{{ formData.customerName }}({{ formData.customer.brief}})</span>
|
||||
</td>
|
||||
<td colspan="1" style="font-size: 16px">{{ formData.customer.brief }}</td>
|
||||
<td style="font-size: 16px"> 编码: </td>
|
||||
<td style="font-size: 16px">{{ formData.customer.code }} </td>
|
||||
</tr>
|
||||
@ -41,12 +40,12 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="font-size: 16px"> 项目工期 </td>
|
||||
<td colspan="1" style="padding: 0 5px"> 起 </td>
|
||||
<td colspan="1" style="min-width: 70px;">{{ formatDate(new Date(formData.projectStartTime), 'YYYY-MM-DD') }}</td>
|
||||
<td colspan="1" style="padding: 0 5px; width: 40px"> 起 </td>
|
||||
<td colspan="1" style="min-width: 90px; font-size: 16px">{{ formatDate(new Date(formData.projectStartTime), 'YYYY-MM-DD') }}</td>
|
||||
<td colspan="1" style="min-width: 70px;">至</td>
|
||||
<td colspan="1" style="min-width: 70px;">{{ formatDate(new Date(formData.projectEndTime), 'YYYY-MM-DD') }}</td>
|
||||
<td colspan="1" style="min-width: 90px; font-size: 16px ">{{ formatDate(new Date(formData.projectEndTime), 'YYYY-MM-DD') }}</td>
|
||||
<td style="min-width: 70px;">天数</td>
|
||||
<td colspan="1">{{ betweenDay(new Date(formData.projectStartTime), new Date(formData.projectEndTime)) +1 }}</td>
|
||||
<td colspan="1" width="60px">{{ betweenDay(new Date(formData.projectStartTime), new Date(formData.projectEndTime)) +1 }}</td>
|
||||
<td colspan="1"> 是否有价格: </td>
|
||||
<td colspan="1">{{ getDictLabel(DICT_TYPE.HELI_COMMON_IS_OR_NOT, formData.hasPrice) }} </td>
|
||||
</tr>
|
||||
@ -117,17 +116,25 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="xh"> 序号 </td>
|
||||
<td colspan="3"> 名称/编号 </td>
|
||||
<td colspan="2"> 名称 </td>
|
||||
<td> 设备型号 </td>
|
||||
<td> 数量 </td>
|
||||
<td> 主要材料 </td>
|
||||
<td style="width:160px"> 毛坯日期 </td>
|
||||
<td colspan="2"> 毛坯日期 </td>
|
||||
<td> 2D/日期 </td>
|
||||
<td> 3D/日期 </td>
|
||||
<!-- <td class="xh" style="width:10%" > 序号 </td>-->
|
||||
<!-- <td colspan="3" style="width: 15%"> 名称/编号 </td>-->
|
||||
<!-- <td style="width: 10%"> 设备型号 </td>-->
|
||||
<!-- <td style="width: 10%"> 数量 </td>-->
|
||||
<!-- <td style="width: 10%"> 主要材料 </td>-->
|
||||
<!-- <td style="width: 50%"> 毛坯日期 </td>-->
|
||||
<!-- <td style="width: 10%"> 2D/日期 </td>-->
|
||||
<!-- <td style="width: 10%"> 3D/日期 </td>-->
|
||||
</tr>
|
||||
<tr v-for="(item,idx) in formData.projectOrderSubs.slice(0, 6)" :key="idx">
|
||||
<tr v-for="(item,idx) in formData.projectOrderSubs" :key="idx">
|
||||
<td class="xh"> {{ idx+1 }} </td>
|
||||
<td colspan="3" style="padding: 0 0">
|
||||
<td colspan="2" style="padding: 0 0">
|
||||
<div style="display: flex; flex-direction: column; justify-content: space-between">
|
||||
<span> {{item.name}} </span>
|
||||
<!-- <span style="border-bottom: 1px solid #666"> {{item.name}} </span>-->
|
||||
@ -138,7 +145,7 @@
|
||||
<td>{{equipInit.find((equip) => equip.id == item.equipId)?.name}} </td>
|
||||
<td>{{item.amount}} </td>
|
||||
<td>{{ item.compositionName }} </td>
|
||||
<td>
|
||||
<td colspan="2">
|
||||
<span v-if="!item.blankDate"> </span>
|
||||
<span v-else>{{ formatDate(new Date(item.blankDate), 'YYYY-MM-DD') }} </span>
|
||||
</td>
|
||||
@ -167,27 +174,26 @@
|
||||
<tbody v-if="formData.projectOrderSubs.length<6">
|
||||
<tr v-for="item in (6-formData.projectOrderSubs.length)" :key="item">
|
||||
<td> {{item+(formData.projectOrderSubs.length)}}</td>
|
||||
<td colspan="3"> </td>
|
||||
<td colspan="2"> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td colspan="2"> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="masterClass">
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="xh"> 序号 </td>
|
||||
<td colspan="2" style="width: 200px"> 工艺流程 </td>
|
||||
<td class="xhs"> 序号 </td>
|
||||
<td colspan="2"> 工艺流程 </td>
|
||||
<td colspan="2"> 开始日期 </td>
|
||||
<td colspan="2"> 结束日期 </td>
|
||||
<td> 责任人 </td>
|
||||
<td colspan="2"> 备注 </td>
|
||||
</tr>
|
||||
<tr v-for="(its,index) in planData.craftInfos" :key="its.index">
|
||||
<td class="xh"> {{ index+1 }} </td>
|
||||
<td class="xhs"> {{ index+1 }} </td>
|
||||
<td colspan="2"> {{ its.name }}</td>
|
||||
|
||||
<td colspan="2">
|
||||
@ -215,7 +221,7 @@ style="
|
||||
">
|
||||
<span>说明:</span>
|
||||
<span>1.每个项目的零部件制作工艺,材料材质,硬度要求必须统一,出现任何问题,各工程师负责!</span>
|
||||
<span>2.模具调试,试模需要根据客户要求,自己安排调试,我司根据需要安排人员参与配合。</span>
|
||||
<!-- <span>2.模具调试,试模需要根据客户要求,自己安排调试,我司根据需要安排人员参与配合。</span>-->
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@ -259,9 +265,9 @@ style="
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div v-if="formData.projectOrderSubs.length>6">
|
||||
<!-- 附页是否开启需要判断 根据子项目信息-->
|
||||
<table border="2" cellspacing="0" id="table" style="height:27.2cm;">
|
||||
<!-- <div v-if="formData.projectOrderSubs.length>6">-->
|
||||
<!-- <!– 附页是否开启需要判断 根据子项目信息–>-->
|
||||
<!-- <table border="2" cellspacing="0" id="table" style="height:27.2cm;">-->
|
||||
<!-- <tbody >-->
|
||||
<!-- <tr>-->
|
||||
<!-- <td colspan="2">-->
|
||||
@ -318,24 +324,24 @@ style="
|
||||
<!-- </td>-->
|
||||
<!-- </tr>-->
|
||||
|
||||
<tbody >
|
||||
<tr>
|
||||
<td colspan="10" style="height: 30px">
|
||||
<div style="text-align: left; width: 100%">子项目信息:</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="xh" style="width:20%" > 序号 </td>
|
||||
<td colspan="3" style="width: 25%"> 名称/编号 </td>
|
||||
<td style="width: 10%"> 设备型号 </td>
|
||||
<td style="width: 10%"> 数量 </td>
|
||||
<td style="width: 10%"> 主要材料 </td>
|
||||
<td style="width: 10%"> 毛坯日期 </td>
|
||||
<td style="width: 10%"> 2D/日期 </td>
|
||||
<td style="width: 10%"> 3D/日期 </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<!-- <tbody >-->
|
||||
<!-- <tr>-->
|
||||
<!-- <td colspan="10" style="height: 30px">-->
|
||||
<!-- <div style="text-align: left; width: 100%">子项目信息:</div>-->
|
||||
<!-- </td>-->
|
||||
<!-- </tr>-->
|
||||
<!-- <tr>-->
|
||||
<!-- <td class="xh" style="width:20%" > 序号 </td>-->
|
||||
<!-- <td colspan="3" style="width: 25%"> 名称/编号 </td>-->
|
||||
<!-- <td style="width: 10%"> 设备型号 </td>-->
|
||||
<!-- <td style="width: 10%"> 数量 </td>-->
|
||||
<!-- <td style="width: 10%"> 主要材料 </td>-->
|
||||
<!-- <td style="width: 10%"> 毛坯日期 </td>-->
|
||||
<!-- <td style="width: 10%"> 2D/日期 </td>-->
|
||||
<!-- <td style="width: 10%"> 3D/日期 </td>-->
|
||||
<!-- </tr>-->
|
||||
<!-- </tbody>-->
|
||||
<!-- <tbody>-->
|
||||
<!-- <tr v-for="(item, idx) in formData.projectOrderSubs.slice(6)" :key="idx">-->
|
||||
<!-- <td class="xh"> {{ idx+7 }} </td>-->
|
||||
<!-- <td colspan="3" style="padding: 0 0">-->
|
||||
@ -373,56 +379,56 @@ style="
|
||||
<!-- </div>-->
|
||||
<!-- </td>-->
|
||||
<!-- </tr>-->
|
||||
<tr v-for="(item,idx) in formData.projectOrderSubs.slice(6)" :key="idx" >
|
||||
<td class="xh"> {{ idx+7 }} </td>
|
||||
<td colspan="3" style="padding: 0 0">
|
||||
<div style="display: flex; flex-direction: column; justify-content: space-between">
|
||||
<span> {{item.name}} </span>
|
||||
<!--<tr v-for="(item,idx) in formData.projectOrderSubs.slice(6)" :key="idx" >-->
|
||||
<!-- <td class="xh"> {{ idx+7 }} </td>-->
|
||||
<!-- <td colspan="3" style="padding: 0 0">-->
|
||||
<!-- <div style="display: flex; flex-direction: column; justify-content: space-between">-->
|
||||
<!-- <span> {{item.name}} </span>-->
|
||||
<!-- <span style="border-bottom: 1px solid #666"> {{item.name}} </span>-->
|
||||
<!-- <span v-if="!item.projectSubShortName"> </span>-->
|
||||
<!-- <span v-else style="font-size: 10px">{{ formData.code+'-'+formData.customer.code+'-'+ item.projectSubShortName}}</span>-->
|
||||
</div>
|
||||
</td>
|
||||
<td>{{equipInit.find((equip) => equip.id == item.equipId)?.name}} </td>
|
||||
<td>{{item.amount}} </td>
|
||||
<td>{{ item.compositionName }} </td>
|
||||
<td>
|
||||
<span v-if="!item.blankDate"> </span>
|
||||
<span v-else>{{ formatDate(new Date(item.blankDate), 'YYYY-MM-DD') }} </span>
|
||||
</td>
|
||||
<td style="padding: 0 0">
|
||||
<div style="display: flex; flex-direction: column; justify-content: space-between;width: 100px">
|
||||
<span v-if="!item.twoDimDate" style="border-bottom: 1px solid #666"> </span>
|
||||
<span v-else style="border-bottom: 1px solid #666"> {{ formatDate(new Date(item.twoDimDate), 'YYYY-MM-DD') }} </span>
|
||||
<span v-if="userInit.find((user) => user.id === item.twoDimOwner)?.nickname">{{ userInit.find((user) => user.id == item.twoDimOwner)?.nickname }}</span>
|
||||
<span v-else> </span>
|
||||
</div>
|
||||
</td>
|
||||
<td style="padding: 0 0">
|
||||
<div style="display: flex; flex-direction: column; justify-content: space-between;width: 100px">
|
||||
<span v-if="!item.threeDimDate" style="border-bottom: 1px solid #666"> </span>
|
||||
<!-- </div>-->
|
||||
<!-- </td>-->
|
||||
<!-- <td>{{equipInit.find((equip) => equip.id == item.equipId)?.name}} </td>-->
|
||||
<!-- <td>{{item.amount}} </td>-->
|
||||
<!-- <td>{{ item.compositionName }} </td>-->
|
||||
<!-- <td>-->
|
||||
<!-- <span v-if="!item.blankDate"> </span>-->
|
||||
<!-- <span v-else>{{ formatDate(new Date(item.blankDate), 'YYYY-MM-DD') }} </span>-->
|
||||
<!-- </td>-->
|
||||
<!-- <td style="padding: 0 0">-->
|
||||
<!-- <div style="display: flex; flex-direction: column; justify-content: space-between;width: 100px">-->
|
||||
<!-- <span v-if="!item.twoDimDate" style="border-bottom: 1px solid #666"> </span>-->
|
||||
<!-- <span v-else style="border-bottom: 1px solid #666"> {{ formatDate(new Date(item.twoDimDate), 'YYYY-MM-DD') }} </span>-->
|
||||
<!-- <span v-if="userInit.find((user) => user.id === item.twoDimOwner)?.nickname">{{ userInit.find((user) => user.id == item.twoDimOwner)?.nickname }}</span>-->
|
||||
<!-- <span v-else> </span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </td>-->
|
||||
<!-- <td style="padding: 0 0">-->
|
||||
<!-- <div style="display: flex; flex-direction: column; justify-content: space-between;width: 100px">-->
|
||||
<!-- <span v-if="!item.threeDimDate" style="border-bottom: 1px solid #666"> </span>-->
|
||||
|
||||
<span v-else style="border-bottom: 1px solid #666"> {{ formatDate(new Date(item.threeDimDate), 'YYYY-MM-DD') }} </span>
|
||||
<span v-if="userInit.find((user) => user.id === item.threeDimOwner)?.nickname">
|
||||
{{ userInit.find((user) => user.id === item.threeDimOwner)?.nickname }}
|
||||
</span>
|
||||
<span v-else> </span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr v-for="item in num" :key="item">
|
||||
<td> {{item+(formData.projectOrderSubs.length)}}</td>
|
||||
<td colspan="3"> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<!-- <span v-else style="border-bottom: 1px solid #666"> {{ formatDate(new Date(item.threeDimDate), 'YYYY-MM-DD') }} </span>-->
|
||||
<!-- <span v-if="userInit.find((user) => user.id === item.threeDimOwner)?.nickname">-->
|
||||
<!-- {{ userInit.find((user) => user.id === item.threeDimOwner)?.nickname }}-->
|
||||
<!-- </span>-->
|
||||
<!-- <span v-else> </span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </td>-->
|
||||
<!--</tr>-->
|
||||
<!-- </tbody>-->
|
||||
<!-- <tbody>-->
|
||||
<!-- <tr v-for="item in num" :key="item">-->
|
||||
<!-- <td> {{item+(formData.projectOrderSubs.length)}}</td>-->
|
||||
<!-- <td colspan="3"> </td>-->
|
||||
<!-- <td> </td>-->
|
||||
<!-- <td> </td>-->
|
||||
<!-- <td> </td>-->
|
||||
<!-- <td> </td>-->
|
||||
<!-- <td> </td>-->
|
||||
<!-- <td> </td>-->
|
||||
<!-- </tr>-->
|
||||
<!-- </tbody>-->
|
||||
|
||||
<!-- <tbody>-->
|
||||
<!-- <tr>-->
|
||||
@ -480,8 +486,8 @@ style="
|
||||
<!-- </td>-->
|
||||
<!-- </tr>-->
|
||||
<!-- </tbody>-->
|
||||
</table>
|
||||
</div>
|
||||
<!-- </table>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
<template #footer>
|
||||
<!-- 【打印】 -->
|
||||
@ -589,7 +595,10 @@ const onPrint = () => {
|
||||
width: 50px !important;
|
||||
}
|
||||
.xh {
|
||||
height: 20px !important;
|
||||
height: 40px !important;
|
||||
}
|
||||
.xhs {
|
||||
height: 20px !important;
|
||||
}
|
||||
.checkbox {
|
||||
border: 2px solid #999;
|
||||
@ -613,7 +622,6 @@ const onPrint = () => {
|
||||
document.body.removeChild(newIframe) // 移除打印内框架,下次打印下次再挂载
|
||||
dialogVisible.value = false
|
||||
}, 100)
|
||||
|
||||
}
|
||||
// const onPrint = () => {
|
||||
// const printNode = document.querySelector('.print-wrap');
|
||||
|
@ -367,23 +367,21 @@
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { DICT_TYPE, getDictLabel, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
|
||||
import { dateFormatter, formatDate } from '@/utils/formatTime'
|
||||
import { dateFormatter} from '@/utils/formatTime'
|
||||
import BomImportForm from './bomImportForm.vue'
|
||||
import { ref } from 'vue'
|
||||
import { inject } from 'vue'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import { useCommonStore } from '@/store/modules/common'
|
||||
import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue'
|
||||
import CompositionSelect from '@/views/heli/hlvuestyle/compositionSelect.vue'
|
||||
import * as ProcessBomApi from '@/api/heli/processbom'
|
||||
import * as storageApi from '@/api/heli/storage'
|
||||
import { getOperateLogPage } from '@/api/system/operatelog'
|
||||
import { deleteProcessBomDetail } from "@/api/heli/processbom";
|
||||
import printDialog from './printDialog.vue'
|
||||
import { UploadUserFile } from 'element-plus'
|
||||
import { getAccessToken, getTenantId } from '@/utils/auth'
|
||||
import { deleteFileLogic, downloadFile, getFilePage } from '@/api/infra/file'
|
||||
import { Row } from 'element-plus/es/components/table-v2/src/components'
|
||||
import {selectBomStatus, selectPlanTaskStatus} from "@/api/heli/processbom";
|
||||
|
||||
defineOptions({ name: 'ProcessBomDetail' })
|
||||
|
||||
@ -438,7 +436,17 @@ const formRef = ref() // 表单 Ref
|
||||
const subFormRef = ref()
|
||||
//20250601新增
|
||||
const importFormRef = ref()
|
||||
const handleImport = () => {
|
||||
const handleImport = async () => {
|
||||
if (formData.value.processBomDetails!=null){
|
||||
var status
|
||||
await ProcessBomApi.selectPlanTaskStatus(formData.value.id).then(data=>{
|
||||
status=data
|
||||
});
|
||||
if (status){
|
||||
await message.confirm("是否取消提交生产任务单")
|
||||
await ProcessBomApi.updateById(formData.value.id)
|
||||
}
|
||||
}
|
||||
importFormRef.value.open(formData.value.id)
|
||||
}
|
||||
|
||||
|
@ -35,6 +35,7 @@ import DOMPurify from 'dompurify';
|
||||
defineOptions({ name: 'BomImportForm' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
import * as ProcessBomApi from '@/api/heli/processbom'
|
||||
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
@ -72,7 +73,7 @@ const submitForm = async () => {
|
||||
|
||||
/** 文件上传成功 */
|
||||
const emits = defineEmits(['success'])
|
||||
const submitFormSuccess = (response: any) => {
|
||||
const submitFormSuccess = async (response: any) => {
|
||||
if (response.code == 500) {
|
||||
uploadRef.value!.clearFiles()
|
||||
let formattedMsg = response.msg
|
||||
@ -89,11 +90,10 @@ const submitFormSuccess = (response: any) => {
|
||||
showClose: false,
|
||||
center: true
|
||||
});
|
||||
}else {
|
||||
}else{
|
||||
|
||||
message.error(response.msg)
|
||||
}
|
||||
|
||||
|
||||
formLoading.value = false
|
||||
return
|
||||
}
|
||||
|
@ -110,7 +110,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="零件采购订单" prop="planStatus" min-width="180" align="center">
|
||||
<template #default="{ row }">
|
||||
{{ row.receivingStatus ?(row.receivingStatus== 1?'已生成':(row.receivingStatus == 2? '部分收货':(row.planStatus == 3? '已收货':''))):''}}
|
||||
{{ row.receivingStatus ?(row.receivingStatus== 1?'已生成':(row.receivingStatus == 2? '部分收货':(row.receivingStatus == 3? '已收货':''))):''}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'second'" label="生产报工" prop="procedureStatus" min-width="180" align="center">
|
||||
@ -182,7 +182,11 @@ const handleClick = async(tab: TabsPaneContext, event: Event) => {
|
||||
var tabIndex = tab.props.name;
|
||||
queryParams.pageNo = 1;
|
||||
activeIndex.value = tabIndex;
|
||||
await getList(tabIndex);
|
||||
if (allConditionsEmpty.value) {
|
||||
message.error("必须输入查询条件查询")
|
||||
}else{
|
||||
await getList(tabIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/** 查询列表 */
|
||||
|
Loading…
Reference in New Issue
Block a user