近期修改
This commit is contained in:
parent
abae3b4bc5
commit
c60a522230
@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.orderys.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
|
||||
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
|
||||
import com.chanko.yunxi.mes.framework.excel.core.convert.TimestampToDateConvert;
|
||||
@ -38,12 +39,18 @@ public class OrderYsExportVO {
|
||||
@Schema(description = "已收金额")
|
||||
@ExcelProperty("已收金额")
|
||||
private BigDecimal cgYishou;
|
||||
@Schema(description = "剩余金额")
|
||||
@ExcelProperty("剩余金额")
|
||||
private BigDecimal remainingYishou;
|
||||
@Schema(description = "已收款比例")
|
||||
@ExcelProperty("已收款比例")
|
||||
private String ysRatio;
|
||||
@Schema(description = "已开票金额")
|
||||
@ExcelProperty("已开票金额")
|
||||
private BigDecimal amount;
|
||||
@Schema(description = "剩余开票金额")
|
||||
@ExcelProperty("剩余开票金额")
|
||||
private BigDecimal remainingAmount;
|
||||
@Schema(description = "已开票比例")
|
||||
@ExcelProperty("已开票比例")
|
||||
private String ykRatio;
|
||||
@ -58,4 +65,6 @@ public class OrderYsExportVO {
|
||||
@ExcelProperty("备注")
|
||||
private String rem;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -73,4 +73,7 @@ public class OrderYsRespVO {
|
||||
private String projectCode;
|
||||
private LocalDateTime projectStartTime;
|
||||
private String contractNo;
|
||||
private BigDecimal remainingYishou;
|
||||
private BigDecimal remainingAmount;
|
||||
|
||||
}
|
||||
@ -112,4 +112,11 @@ public class PlanController {
|
||||
|
||||
return planService.verification(id,type);
|
||||
}
|
||||
@GetMapping("/getPartProcess")
|
||||
@Operation(summary = "获得零件进程分页")
|
||||
@PreAuthorize("@ss.hasPermission('heli:plan:query')")
|
||||
public CommonResult<PlanDO> getPartProcess(@Valid PlanPageReqVO pageReqVO) {
|
||||
PlanDO pageResult = planService.getPartProcess(pageReqVO);
|
||||
return success(pageResult);
|
||||
}
|
||||
}
|
||||
|
||||
@ -98,7 +98,8 @@ public class PlanPageReqVO extends PageParam {
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] changeEndTime;
|
||||
|
||||
|
||||
@Schema(description = "子项目名称")
|
||||
private String projectSubName;
|
||||
|
||||
|
||||
}
|
||||
@ -1,6 +1,8 @@
|
||||
package com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansubdetail.PlanSubDetailDO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
@ -154,4 +156,6 @@ public class PlanRespVO {
|
||||
private LocalDateTime castEndDate;
|
||||
@Schema(description = "是否需要铸件图:1表示需要,0表示不需要")
|
||||
private Integer hasCast;
|
||||
@Schema(description = "计划子项目明细")
|
||||
private List<PlanSubDO> list;
|
||||
}
|
||||
@ -152,4 +152,11 @@ public class PlanSubDetailController {
|
||||
public CommonResult insertWork(@Valid @RequestBody PlanSubDetailSaveReqVO updateReqVO) {
|
||||
return planSubDetailService.insertWork(updateReqVO);
|
||||
}
|
||||
|
||||
@GetMapping("/getList")
|
||||
@Operation(summary = "获得零件进程管理详情子项目信息")
|
||||
@PreAuthorize("@ss.hasPermission('heli:plan-sub-detail:query')")
|
||||
public CommonResult<List<PlanSubDetailDO>> getList(@Valid PlanSubDetailPageReqVO pageReqVO) {
|
||||
return success( planSubDetailService.getList(pageReqVO));
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,5 +78,4 @@ public class PlanSubDetailPageReqVO extends PageParam {
|
||||
private String planNo;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -95,6 +95,10 @@ public class OrderYsDO extends BaseDO {
|
||||
private String ysRatio;
|
||||
@TableField(exist = false)
|
||||
private String ykRatio;
|
||||
@TableField(exist = false)
|
||||
private BigDecimal remainingYishou;
|
||||
@TableField(exist = false)
|
||||
private BigDecimal remainingAmount;
|
||||
|
||||
|
||||
}
|
||||
@ -1,5 +1,8 @@
|
||||
package com.chanko.yunxi.mes.module.heli.dal.dataobject.plan;
|
||||
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
@ -228,6 +231,14 @@ public class PlanDO extends BaseDO {
|
||||
private LocalDateTime orderTime;
|
||||
|
||||
private String code;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private PageResult<PlanSubDO> list;
|
||||
@TableField(exist = false)
|
||||
private String craftOwnerName;
|
||||
@TableField(exist = false)
|
||||
private String projectProgress;
|
||||
@TableField(exist = false)
|
||||
private String processProgress;
|
||||
@TableField(exist = false)
|
||||
private String processFlag;
|
||||
}
|
||||
|
||||
@ -223,4 +223,45 @@ public class PlanSubDO extends BaseDO {
|
||||
private String projectCode;
|
||||
@TableField(exist = false)
|
||||
private String planNo;
|
||||
@TableField(exist = false)
|
||||
private String projectName;
|
||||
@TableField(exist = false)
|
||||
private LocalDateTime projectEndTime;
|
||||
@TableField(exist = false)
|
||||
private LocalDateTime craftEndDate;
|
||||
@TableField(exist = false)
|
||||
private String craftOwnerName;
|
||||
@TableField(exist = false)
|
||||
private Integer deliveryStatus;
|
||||
//设计任务
|
||||
@TableField(exist = false)
|
||||
private String designTask;
|
||||
//设计任务标识
|
||||
@TableField(exist = false)
|
||||
private String designTaskFlag;
|
||||
@TableField(exist = false)
|
||||
//外协任务
|
||||
private String outsourcingTasks;
|
||||
@TableField(exist = false)
|
||||
//外协任务标识
|
||||
private String outsourcingTasksFlag;
|
||||
//加工任务
|
||||
@TableField(exist = false)
|
||||
private String processingTask;
|
||||
//加工任务标识
|
||||
@TableField(exist = false)
|
||||
private String processingTaskFlag;
|
||||
//过程检
|
||||
@TableField(exist = false)
|
||||
private String processInspection;
|
||||
//过程检标识
|
||||
@TableField(exist = false)
|
||||
private String processInspectionFlag;
|
||||
//装配任务
|
||||
@TableField(exist = false)
|
||||
private String assemblyTask;
|
||||
//装配任务标识
|
||||
@TableField(exist = false)
|
||||
private String assemblyTaskFlag;
|
||||
|
||||
}
|
||||
|
||||
@ -106,4 +106,15 @@ public class PlanSubDetailDO extends BaseDO {
|
||||
private String planNo;
|
||||
@TableField(exist = false)
|
||||
private String projectNameSim;
|
||||
//工单状态
|
||||
@TableField(exist = false)
|
||||
private String status;
|
||||
//工单标识
|
||||
@TableField(exist = false)
|
||||
private String statusFlag;
|
||||
//生产进度
|
||||
@TableField(exist = false)
|
||||
private String productionSchedule;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -38,6 +38,8 @@ public interface OrderYsMapper extends BaseMapperX<OrderYsDO> {
|
||||
.select("p.delivery_status as deliveryStatus")
|
||||
.select("p.id as projectId","p.code as projectCode")
|
||||
.select("p.project_start_time as projectStartTime","p.contract_no as contractNo")
|
||||
.select("t.cg_ys-t.cg_yishou as remainingYishou")
|
||||
.select("t.cg_ys-sum(i.amount) as remainingAmount")
|
||||
.leftJoin(
|
||||
"finance_invoice i ON i.order_code = t.code AND i.deleted=0 and i.tenant_id=2 and i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'")
|
||||
.leftJoin(ProjectOrderDO.class,"p", ProjectOrderDO::getCode, OrderYsDO::getCode)
|
||||
|
||||
@ -134,4 +134,6 @@ List<PlanDO> selectfhtj(Long txrid);
|
||||
List<PlanDO> selectfhtj1();
|
||||
@Delete("delete from project_plan where project_id=#{id}")
|
||||
void deleteOrderId(@Param("id") Long id);
|
||||
|
||||
|
||||
}
|
||||
@ -7,6 +7,7 @@ import cn.smallbun.screw.core.util.StringUtils;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
||||
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO;
|
||||
@ -17,6 +18,7 @@ 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.projectorder.ProjectOrderDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
|
||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.apache.ibatis.annotations.Delete;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@ -296,4 +298,29 @@ public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
|
||||
}
|
||||
@Delete("delete from project_plan_sub where project_id=#{id}")
|
||||
void deleteOrderId(@Param("id") Long id);
|
||||
|
||||
default PageResult<PlanSubDO> getPartProcess(PlanPageReqVO pageReqVO){
|
||||
MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(PlanSubDO.class)
|
||||
.select("p.project_name as projectName","s.name as projectSubName")
|
||||
.select("p.project_end_time as projectEndTime","d.craft_end_date")
|
||||
.select("u.nickname as craftOwnerName","p.delivery_status as deliveryStatus")
|
||||
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getId, PlanSubDO::getProjectId)
|
||||
.leftJoin(ProjectOrderSubDO.class, "s", ProjectOrderSubDO::getId, PlanSubDO::getProjectSubId)
|
||||
.leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId)
|
||||
.leftJoin(PlanDO.class, "d", PlanDO::getId, PlanSubDO::getProjectPlanId)
|
||||
.leftJoin(AdminUserDO.class, "u",
|
||||
wrapper -> wrapper.eq(AdminUserDO::getId, PlanDO::getCraftOwner))
|
||||
.disableSubLogicDel();
|
||||
query.eq(ProjectOrderDO::getDeleted,0);
|
||||
query.eq(ProjectOrderSubDO::getDeleted,0);
|
||||
query.eq(CustomerDO::getDeleted,0);
|
||||
query.eq(PlanDO::getDeleted,0);
|
||||
query.eq(ObjectUtil.isNotEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode());
|
||||
query.eq(ObjectUtil.isNotEmpty(pageReqVO.getProjectName()), ProjectOrderDO::getProjectName, pageReqVO.getProjectName());
|
||||
query.eq(ObjectUtil.isNotEmpty(pageReqVO.getProjectSubName()), ProjectOrderSubDO::getName, pageReqVO.getProjectSubName());
|
||||
query.eq(ObjectUtil.isNotEmpty(pageReqVO.getCustomerName()), CustomerDO::getName, pageReqVO.getCustomerName());
|
||||
query.orderByAsc(ProjectOrderDO::getCode);
|
||||
return selectPage(pageReqVO, query);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
||||
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
@ -16,7 +15,6 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.ygjx.vo.YgjxPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.bgmasterline.BgMasterLineDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equipmanufacture.EquipManufactureDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterLineDO;
|
||||
@ -32,22 +30,17 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatch
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatchdetailowner.TaskDispatchDetailOwnerDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper;
|
||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.apache.ibatis.annotations.Delete;
|
||||
import org.apache.ibatis.annotations.MapKey;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.*;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@ -906,4 +899,26 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
|
||||
List<BubbleFeeResult> batchInternalLaborCost(@Param("bomDetailIds")List<Long> bomDetailIds);
|
||||
|
||||
List<BubbleFeeResult> batchProcessInspection(@Param("bomDetailIds")List<Long> bomDetailIds);
|
||||
|
||||
default List<TaskDispatchDetailDO> outSourceTask(Long projectSubId,String type,String checkYn){
|
||||
MPJLambdaWrapper<TaskDispatchDetailDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(TaskDispatchDetailDO.class)
|
||||
.select("a.bom_detail_id as bomDetailId")
|
||||
.leftJoin(TaskDispatchDO.class,"a",TaskDispatchDO::getId,TaskDispatchDetailDO::getDispatchId);
|
||||
query.eq(TaskDispatchDO::getProjectSubId,projectSubId);
|
||||
query.eq(TaskDispatchDO::getDispatchType,"PRODUCTION");
|
||||
query.eq(ObjectUtil.isNotEmpty(checkYn),TaskDispatchDetailDO::getCheckYn,checkYn);
|
||||
query.eq(TaskDispatchDetailDO::getIsOutsourcing,type);
|
||||
return selectList(query);
|
||||
}
|
||||
|
||||
default List<TaskDispatchDetailDO> assemblyTask(Long projectSubId){
|
||||
MPJLambdaWrapper<TaskDispatchDetailDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(TaskDispatchDetailDO.class)
|
||||
.select("a.bom_detail_id as bomDetailId")
|
||||
.leftJoin(TaskDispatchDO.class,"a",TaskDispatchDO::getId,TaskDispatchDetailDO::getDispatchId);
|
||||
query.eq(TaskDispatchDO::getProjectSubId,projectSubId);
|
||||
query.eq(TaskDispatchDO::getDispatchType,"ASSEMBLE");
|
||||
return selectList(query);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.chanko.yunxi.mes.module.heli.service.partpurchaseorder;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@ -18,6 +19,8 @@ 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.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailSaveReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
|
||||
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;
|
||||
@ -29,6 +32,8 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.Pur
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.composition.CompositionMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper;
|
||||
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;
|
||||
@ -45,6 +50,7 @@ import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService
|
||||
import com.chanko.yunxi.mes.module.heli.service.supplier.SupplierService;
|
||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.chanko.yunxi.mes.module.system.service.user.AdminUserService;
|
||||
import org.checkerframework.checker.units.qual.C;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -62,6 +68,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.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PURCHASE_ORDER;
|
||||
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.PURCHASE_ORDER_MAKE_DETAIL_MATERIAL_NOT_EXISTS;
|
||||
|
||||
@Service
|
||||
@Validated
|
||||
@ -92,6 +99,10 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
||||
private ProcessBomDetailMapper processBomDetailMapper;
|
||||
@Autowired
|
||||
private TaskDispatchDetailMapper taskDispatchDetailMapper;
|
||||
@Autowired
|
||||
private MaterialMapper materialMapper;
|
||||
@Autowired
|
||||
private CompositionMapper compositionMapper;
|
||||
@Override
|
||||
public PageResult<PartPurchaseOrderPageRespVO> getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) {
|
||||
|
||||
@ -404,10 +415,141 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
||||
if (ObjectUtil.isNotEmpty(orderMakeDO)) {
|
||||
if (orderMakeDO.getGoodsType() == 2) {
|
||||
submitNo(list);
|
||||
}else {
|
||||
submitNo1(list);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public void submitNo1(List<PurchaseOrderMakeDetailDO> list) {
|
||||
if (CollUtil.isNotEmpty(list)){
|
||||
List<PurchaseOrderMakeDetailDO> updateList =list;
|
||||
//插入make表
|
||||
PurchaseOrderNoDO purchaseOrderNoDO = new PurchaseOrderNoDO();
|
||||
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
||||
// 月度流水号
|
||||
serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
||||
|
||||
// 入库前缀
|
||||
String code = PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString());
|
||||
purchaseOrderNoDO.setPurchaseNo(code);
|
||||
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||
purchaseOrderNoDO.setGoodsType(1);
|
||||
purchaseOrderNoDO.setPurchaseType(1);
|
||||
purchaseOrderNoDO.setSupplierId(updateList.get(0).getSupplierId());
|
||||
purchaseOrderNoDO.setOrdDate(new Date());
|
||||
purchaseOrderNoMapper.insert(purchaseOrderNoDO);
|
||||
OrderYfSaveReqVO orderYfVO = new OrderYfSaveReqVO();
|
||||
orderYfVO.setCgOrderNum(code);
|
||||
SupplierDO supplierDO = supplierMapper.selectById(updateList.get(0).getSupplierId());
|
||||
if (ObjectUtil.isNotEmpty(supplierDO)){
|
||||
orderYfVO.setCgGysname(supplierDO.getName());
|
||||
}
|
||||
BigDecimal sum = updateList.stream()
|
||||
.filter(Objects::nonNull) // 过滤掉空对象
|
||||
.map(PurchaseOrderMakeDetailDO::getEstimatedPrice)
|
||||
.filter(Objects::nonNull) // 过滤掉空值
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
|
||||
orderYfVO.setCgYf(sum);
|
||||
orderYfService.createCg(orderYfVO);
|
||||
List<PurchaseOrderNoDetailDO> insertList =new ArrayList<>();
|
||||
HashMap<Long,PurchaseOrderMakeDO> insertMap = new HashMap<>();
|
||||
HashMap<Long, MaterialDO> insertMaterialMap = new HashMap<>();
|
||||
HashMap<Long , CompositionDO> compositionDOHashMap = new HashMap<>();
|
||||
for (PurchaseOrderMakeDetailDO pmd : updateList) {
|
||||
|
||||
PurchaseOrderNoDetailDO pd = new PurchaseOrderNoDetailDO();
|
||||
pd.setMakeDetailId(pmd.getId());
|
||||
pd.setPurchaseOrderId(purchaseOrderNoDO.getId());
|
||||
pd.setBoomDetailId(pmd.getBoomDetailId());
|
||||
if (pd.getMakeDetailId() != null) {
|
||||
MaterialDO materialDO = insertMaterialMap.get(pmd.getMaterialId());
|
||||
|
||||
if (materialDO == null) {
|
||||
materialDO = materialMapper.selectById(pmd.getMaterialId());
|
||||
insertMaterialMap.put(pd.getMakeDetailId(), materialDO);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(materialDO)&& ObjectUtil.isNotEmpty(materialDO.getCompositionId())) {
|
||||
CompositionDO compositionDO = compositionDOHashMap.get(materialDO.getCompositionId());
|
||||
if (compositionDO == null) {
|
||||
compositionDO = compositionMapper.selectById(materialDO.getCompositionId());
|
||||
compositionDOHashMap.put(materialDO.getCompositionId(), compositionDO);
|
||||
}
|
||||
pd.setComposition(compositionDO == null ?"":compositionDO.getName());
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(materialDO)){
|
||||
pd.setBoomName(materialDO.getName());
|
||||
pd.setMaterialId(materialDO.getId());
|
||||
pd.setBoomSpec(materialDO.getSpec());
|
||||
pd.setBoomUnit(materialDO.getUnit());
|
||||
}
|
||||
|
||||
}else {
|
||||
throw exception(PURCHASE_ORDER_MAKE_DETAIL_MATERIAL_NOT_EXISTS);
|
||||
}
|
||||
|
||||
pd.setPurchaseAmount(pmd.getPurchaseAmount());
|
||||
pd.setEstimatedPrice(pmd.getEstimatedPrice());
|
||||
pd.setArriveTime(pmd.getArriveTime());
|
||||
pd.setBoomAmount(pmd.getBoomAmount());
|
||||
pd.setRequireTime(pmd.getRequireTime());
|
||||
pd.setProjectMaterialPlanId(pmd.getProjectMaterialPlanId());
|
||||
pd.setProjectMaterialPlanBoomId(pmd.getProjectMaterialPlanBoomId());
|
||||
pd.setProjectPlanSubId(pmd.getProjectPlanSubId());
|
||||
pd.setName(pmd.getName());
|
||||
pd.setNameSim(pmd.getNameSim());
|
||||
PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO();
|
||||
if (insertMap.get(pmd.getPurchaseOrderId()) != null) {
|
||||
purchaseOrderMakeDO = insertMap.get(pmd.getPurchaseOrderId());
|
||||
}else{
|
||||
purchaseOrderMakeDO = purchaseOrderMakeMapper.selectById(pmd.getPurchaseOrderId());
|
||||
insertMap.put(pmd.getPurchaseOrderId(),purchaseOrderMakeDO);
|
||||
}
|
||||
if (purchaseOrderMakeDO != null) {
|
||||
pd.setProjectId(purchaseOrderMakeDO.getProjectId());
|
||||
pd.setProjectPlanId(purchaseOrderMakeDO.getProjectPlanId());
|
||||
pd.setCustomerId(purchaseOrderMakeDO.getCustomerId());
|
||||
pd.setBrief(purchaseOrderMakeDO.getBrief());
|
||||
pd.setProjectName(purchaseOrderMakeDO.getProjectName());
|
||||
pd.setProjectNameSim(purchaseOrderMakeDO.getProjectNameSim());
|
||||
}
|
||||
pd.setPurchaseRemAmount(pmd.getPurchaseAmount());
|
||||
pd.setProjectSubCode(pmd.getProjectSubCode());
|
||||
insertList.add(pd);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(insertList)) {
|
||||
purchaseOrderNoDetailMapper.insertBatch(insertList);
|
||||
for (PurchaseOrderMakeDetailDO pmd : updateList) {
|
||||
for (PurchaseOrderNoDetailDO pd : insertList) {
|
||||
if (pmd.getId().equals(pd.getMakeDetailId())){
|
||||
pmd.setPurchaseOrderNoId(purchaseOrderNoDO.getId());
|
||||
pmd.setPurchaseOrderNoDetailId(pd.getId());
|
||||
pmd.setOrderStatus(2);
|
||||
pmd.setStatus(2);
|
||||
pmd.setPurchaseNo(code);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
purchaseOrderMakeDetailMapper.updateBatch(updateList);
|
||||
}
|
||||
|
||||
}else {
|
||||
// 校验存在
|
||||
// validatePurchaseOrderMakeDetailExists(updateReqVO.getId());
|
||||
// 更新
|
||||
// PurchaseOrderMakeDetailDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderMakeDetailDO.class);
|
||||
// if (updateObj.getMaterialId() == null){
|
||||
// purchaseOrderMakeDetailMapper.clearMaterialId(updateObj.getId());
|
||||
// purchaseOrderMakeDetailMapper.updateById(updateObj);
|
||||
// }else {
|
||||
// purchaseOrderMakeDetailMapper.updateById(updateObj);
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public PageResult<PartPurchaseOrderPageRespVO> getDetail(PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO) {
|
||||
return purchaseOrderMakeDetailMapper.getDetail(partPurchaseOrderPageReqVO);
|
||||
@ -539,6 +681,8 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
||||
if (ObjectUtil.isNotEmpty(purchaseOrderMakeDO)){
|
||||
if (purchaseOrderMakeDO.getGoodsType() == 2){
|
||||
submitNo(list);
|
||||
}else {
|
||||
submitNo1(list);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -66,4 +66,6 @@ public interface PlanService {
|
||||
int updateById(PlanDO planDO);
|
||||
|
||||
CommonResult<Boolean> verification(Long id, String type);
|
||||
|
||||
PlanDO getPartProcess(PlanPageReqVO pageReqVO);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -68,4 +68,6 @@ public interface PlanSubDetailService {
|
||||
CommonResult Intersection(PlanSubDetailSaveReqVO updateReqVO);
|
||||
|
||||
CommonResult overlap(PlanSubDetailSaveReqVO updateReqVO);
|
||||
|
||||
List<PlanSubDetailDO> getList(PlanSubDetailPageReqVO pageReqVO);
|
||||
}
|
||||
|
||||
@ -2,17 +2,22 @@ package com.chanko.yunxi.mes.module.heli.service.plansubdetail;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.smallbun.screw.core.util.CollectionUtils;
|
||||
import com.alibaba.druid.sql.visitor.functions.If;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo.PlanSubPageReqVO;
|
||||
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.processdesign.ProcessDesignDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.shopCalendar.ShopCalendarDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignProgressMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.shopCalendar.ShopCalendarMapper;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
@ -62,6 +67,8 @@ public class PlanSubDetailServiceImpl implements PlanSubDetailService {
|
||||
private ProcessDesignMapper processDesignMapper;
|
||||
@Resource
|
||||
private ProjectOrderMapper projectOrderMapper;
|
||||
@Resource
|
||||
private ProcessDesignProgressMapper processDesignProgressMapper;
|
||||
@Override
|
||||
public Long createPlanSubDetail(PlanSubDetailSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
@ -1754,6 +1761,112 @@ public class PlanSubDetailServiceImpl implements PlanSubDetailService {
|
||||
return CommonResult.success(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PlanSubDetailDO> getList(PlanSubDetailPageReqVO pageReqVO) {
|
||||
ArrayList<PlanSubDetailDO> planSubDetailDOS = new ArrayList<>();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
//设计任务
|
||||
PlanSubDetailDO designTask = new PlanSubDetailDO();
|
||||
LambdaQueryWrapper<PlanSubDetailDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(PlanSubDetailDO::getProjectSubId,pageReqVO.getProjectSubId());
|
||||
List<PlanSubDetailDO> planSubDetail = planSubDetailMapper.selectList(lambdaQueryWrapper);
|
||||
designTask.setSubType("设计");
|
||||
LocalDateTime minTime = planSubDetail.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(PlanSubDetailDO::getStartTwoDimDate)
|
||||
.filter(Objects::nonNull)
|
||||
.min(Comparator.naturalOrder())
|
||||
.orElse(null);
|
||||
designTask.setStartTwoDimDate(minTime);
|
||||
LocalDateTime maxTime = planSubDetail.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(PlanSubDetailDO::getTwoDimDate)
|
||||
.filter(Objects::nonNull)
|
||||
.max(Comparator.naturalOrder())
|
||||
.orElse(null);
|
||||
designTask.setTwoDimDate(maxTime);
|
||||
boolean AllCompleted = CollectionUtils.isNotEmpty(planSubDetail)
|
||||
&& planSubDetail.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.allMatch(item -> item.getIsOverProcess() == 1);
|
||||
if (AllCompleted){
|
||||
designTask.setStatus("已完成");
|
||||
}else {
|
||||
if (ObjectUtil.isNotEmpty(planSubDetail)){
|
||||
boolean hasAtLeastOne = CollectionUtils.isNotEmpty(planSubDetail)
|
||||
&& planSubDetail.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.anyMatch(item -> item.getIsOverProcess() == 1);
|
||||
if (hasAtLeastOne){
|
||||
designTask.setStatus("已开始");
|
||||
designTask.setStatusFlag("0");
|
||||
}else{
|
||||
designTask.setStatus("未开始");
|
||||
}
|
||||
}else{
|
||||
designTask.setStatus("未开始");
|
||||
}
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(planSubDetail)) {
|
||||
if (AllCompleted) {
|
||||
LambdaQueryWrapper<ProcessDesignDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ProcessDesignDO::getProjectSubId, pageReqVO.getProjectSubId());
|
||||
queryWrapper.eq(ProcessDesignDO::getIsOverProcess, "1");
|
||||
List<ProcessDesignDO> completedDesigns = processDesignMapper.selectList(queryWrapper);
|
||||
// 获取最新的工艺设计进度
|
||||
ProcessDesignProgressDO latestProgress = getLatestProcessDesignProgress(
|
||||
completedDesigns.stream()
|
||||
.map(ProcessDesignDO::getId)
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(latestProgress) && ObjectUtil.isNotEmpty(maxTime)) {
|
||||
boolean isOverdue = isDateAfterLocalDateTime(
|
||||
latestProgress.getEndTime(),
|
||||
maxTime
|
||||
);
|
||||
designTask.setStatusFlag(isOverdue ? "1" : designTask.getStatusFlag());
|
||||
}
|
||||
} else {
|
||||
if (ObjectUtil.isNotEmpty(maxTime)){
|
||||
if (now.isAfter(maxTime)){
|
||||
designTask.setStatusFlag("1");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
/**
|
||||
* 判断 Date 是否在 LocalDateTime 之后
|
||||
*/
|
||||
private boolean isDateAfterLocalDateTime(Date date, LocalDateTime localDateTime) {
|
||||
if (date == null || localDateTime == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
LocalDateTime dateAsLocalDateTime = date.toInstant()
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDateTime();
|
||||
|
||||
return dateAsLocalDateTime.isAfter(localDateTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最新的工艺设计进度
|
||||
*/
|
||||
private ProcessDesignProgressDO getLatestProcessDesignProgress(List<Long> processDesignIds) {
|
||||
if (ObjectUtil.isEmpty(processDesignIds)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<ProcessDesignProgressDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(ProcessDesignProgressDO::getProcessDesignId, processDesignIds);
|
||||
queryWrapper.orderByDesc(ProcessDesignProgressDO::getEndTime);
|
||||
queryWrapper.last("limit 1");
|
||||
return processDesignProgressMapper.selectOne(queryWrapper);
|
||||
}
|
||||
public Integer getSearchRlTs(LocalDateTime startDateTime) {
|
||||
List<ShopCalendarDO> shopCalendarDOS =shopCalendarMapper.getSearchRlTL(startDateTime);
|
||||
int a = shopCalendarDOS.size();
|
||||
|
||||
@ -231,6 +231,8 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
|
||||
}
|
||||
LambdaQueryWrapper<PlanSubDetailDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(PlanSubDetailDO::getProjectSubId,id);
|
||||
lambdaQueryWrapper.in(PlanSubDetailDO::getIsOverProcess,0,2);
|
||||
lambdaQueryWrapper.eq(PlanSubDetailDO::getIsOverLab,"N");
|
||||
lambdaQueryWrapper.orderByAsc(PlanSubDetailDO::getCreateTime);
|
||||
PlanSubDetailDO planSubDetailDO = planSubDetailMapper.selectOne(lambdaQueryWrapper);
|
||||
if (ObjectUtil.isNotEmpty(planSubDetailDO)){
|
||||
|
||||
@ -131,7 +131,7 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
||||
materialDO = materialMapper.selectById(pmd.getMaterialId());
|
||||
insertMaterialMap.put(pd.getMakeDetailId(), materialDO);
|
||||
}
|
||||
if (materialDO.getCompositionId() != null) {
|
||||
if (ObjectUtil.isNotEmpty(materialDO)&& ObjectUtil.isNotEmpty(materialDO.getCompositionId())) {
|
||||
CompositionDO compositionDO = compositionDOHashMap.get(materialDO.getCompositionId());
|
||||
if (compositionDO == null) {
|
||||
compositionDO = compositionMapper.selectById(materialDO.getCompositionId());
|
||||
@ -139,14 +139,12 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
||||
}
|
||||
pd.setComposition(compositionDO == null ?"":compositionDO.getName());
|
||||
}
|
||||
|
||||
pd.setBoomName(materialDO.getName());
|
||||
pd.setMaterialId(materialDO.getId());
|
||||
pd.setBoomSpec(materialDO.getSpec());
|
||||
pd.setBoomUnit(materialDO.getUnit());
|
||||
|
||||
}else {
|
||||
throw exception(PURCHASE_ORDER_MAKE_DETAIL_MATERIAL_NOT_EXISTS);
|
||||
if (ObjectUtil.isNotEmpty(materialDO)) {
|
||||
pd.setBoomName(materialDO.getName());
|
||||
pd.setMaterialId(materialDO.getId());
|
||||
pd.setBoomSpec(materialDO.getSpec());
|
||||
pd.setBoomUnit(materialDO.getUnit());
|
||||
}
|
||||
}
|
||||
|
||||
pd.setPurchaseAmount(pmd.getPurchaseAmount());
|
||||
@ -186,6 +184,7 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
||||
pmd.setPurchaseOrderNoId(purchaseOrderNoDO.getId());
|
||||
pmd.setPurchaseOrderNoDetailId(pd.getId());
|
||||
pmd.setOrderStatus(2);
|
||||
pmd.setStatus(2);
|
||||
pmd.setPurchaseNo(code);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -228,6 +228,26 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
||||
throw exception(new ErrorCode(400,"BOM零件已删除,不允许派工"));
|
||||
|
||||
}
|
||||
// for (TaskDispatchDetailDO taskDispatchDetail : updateReqVO.getTaskDispatchDetails()) {
|
||||
// LambdaQueryWrapper<MaterialPlanBoomDO> wrapper = new LambdaQueryWrapper<MaterialPlanBoomDO>().eq(MaterialPlanBoomDO::getBoomDetailId, taskDispatchDetail.getBomDetailId()).eq(MaterialPlanBoomDO::getProcedureId, taskDispatchDetail.getProcedureId());
|
||||
// MaterialPlanBoomDO materialPlanBoomDO = materialPlanBoomMapper.selectOne(wrapper);
|
||||
// if (ObjectUtil.isNotEmpty(materialPlanBoomDO)){
|
||||
// if (materialPlanBoomDO.getMplanStatus()==1||materialPlanBoomDO.getMplanStatus()==2){
|
||||
// if (materialPlanBoomDO.getBoomAmount().compareTo(new BigDecimal(taskDispatchDetail.getAmount()))!=0){
|
||||
// ProcedureDO procedureDO = procedureMapper.selectById(taskDispatchDetail.getProcedureId());
|
||||
// if (ObjectUtil.isNotEmpty(procedureDO)){
|
||||
// throw exception(new ErrorCode(400,"该工序"+procedureDO.getName()+"已送审或已审批,不允许修改数量,请确认!"));
|
||||
// }
|
||||
// }
|
||||
// if (!materialPlanBoomDO.getBoomArriveDate().isEqual(taskDispatchDetail.getEndTime())){
|
||||
// ProcedureDO procedureDO = procedureMapper.selectById(taskDispatchDetail.getProcedureId());
|
||||
// if (ObjectUtil.isNotEmpty(procedureDO)){
|
||||
// throw exception(new ErrorCode(400,"该工序"+procedureDO.getName()+"已送审或已审批,不允许修改结束日期,请确认!"));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
// 更新
|
||||
@ -267,7 +287,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
||||
}
|
||||
if (operateTypeEnum == OperateTypeEnum.SUBMIT) {
|
||||
ArrayList<TaskDispatchDetailDO> taskDispatchDetailDOS = new ArrayList<>();
|
||||
for (TaskDispatchDetailDO taskDispatchDetail : updateReqVO.getTaskDispatchDetails()) {
|
||||
|
||||
for (TaskDispatchDetailDO taskDispatchDetail : updateReqVO.getTaskDispatchDetails()) {
|
||||
LambdaQueryWrapper<MaterialPlanBoomDO> wrapper = new LambdaQueryWrapper<MaterialPlanBoomDO>().eq(MaterialPlanBoomDO::getBoomDetailId, taskDispatchDetail.getBomDetailId()).eq(MaterialPlanBoomDO::getProcedureId, taskDispatchDetail.getProcedureId());
|
||||
MaterialPlanBoomDO materialPlanBoomDO = materialPlanBoomMapper.selectOne(wrapper);
|
||||
if ("false".equals(taskDispatchDetail.getIsOutsourcing())) {
|
||||
@ -282,6 +303,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
||||
if (ObjectUtil.isEmpty(materialPlanBoomDO)) {
|
||||
taskDispatchDetailDOS.add(taskDispatchDetail);
|
||||
}else {
|
||||
materialPlanBoomDO.setBoomAmount(new BigDecimal(taskDispatchDetail.getAmount()));
|
||||
materialPlanBoomDO.setBoomArriveDate(taskDispatchDetail.getEndTime());
|
||||
materialPlanBoomDO.setDuEmpId(taskDispatchDetail.getOwner());
|
||||
materialPlanBoomMapper.updateById(materialPlanBoomDO);
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
from wms_storage sto
|
||||
left join wms_storage_mat mat on mat.stock_id=sto.id and mat.deleted=0 and mat.tenant_id=2
|
||||
left join base_material m on mat.mat_id=m.id and m.deleted=0 and m.tenant_id=2
|
||||
where sto.stock_in_type=5 and m.material_type=5 and sto.status=4 and sto.project_no=#{projectSubId}
|
||||
where sto.stock_in_type=5 and sto.status=4 and sto.project_no=#{projectSubId}
|
||||
|
||||
</select>
|
||||
<select id="getList" resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO">
|
||||
@ -70,7 +70,6 @@
|
||||
AND m.tenant_id = 2
|
||||
WHERE
|
||||
sto.stock_in_type = 5
|
||||
AND m.material_type = 5
|
||||
AND sto.STATUS = 4
|
||||
AND sto.project_no = #{projectSubId}
|
||||
</select>
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
package com.chanko.yunxi.mes.module.system.controller.admin.auth;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.chanko.yunxi.mes.framework.common.enums.CommonStatusEnum;
|
||||
import com.chanko.yunxi.mes.framework.common.enums.UserTypeEnum;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
|
||||
@ -14,6 +16,7 @@ import com.chanko.yunxi.mes.module.system.dal.dataobject.dept.PostDO;
|
||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.permission.MenuDO;
|
||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.permission.RoleDO;
|
||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.chanko.yunxi.mes.module.system.dal.mysql.user.AdminUserMapper;
|
||||
import com.chanko.yunxi.mes.module.system.enums.logger.LoginLogTypeEnum;
|
||||
import com.chanko.yunxi.mes.module.system.service.auth.AdminAuthService;
|
||||
import com.chanko.yunxi.mes.module.system.service.dept.PostService;
|
||||
@ -34,14 +37,18 @@ import javax.annotation.Resource;
|
||||
import javax.annotation.security.PermitAll;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
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.framework.common.util.collection.CollectionUtils.convertSet;
|
||||
import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.obtainAuthorization;
|
||||
|
||||
@Tag(name = "管理后台 - 认证")
|
||||
@RestController
|
||||
@ -66,12 +73,34 @@ public class AuthController {
|
||||
private SecurityProperties securityProperties;
|
||||
@Resource
|
||||
private PostService postService;
|
||||
@Resource
|
||||
private AdminUserMapper adminUserMapper;
|
||||
|
||||
|
||||
@PostMapping("/login")
|
||||
@PermitAll
|
||||
@Operation(summary = "使用账号密码登录")
|
||||
@OperateLog(enable = false) // 避免 Post 请求被记录操作日志
|
||||
public CommonResult<AuthLoginRespVO> login(@RequestBody @Valid AuthLoginReqVO reqVO) {
|
||||
// if (ObjectUtil.isNotEmpty(reqVO.getUsername())&&!"admin".equals(reqVO.getUsername())){
|
||||
// AdminUserDO adminUserDO = userService.getOne();
|
||||
// if (ObjectUtil.isEmpty(adminUserDO)){
|
||||
// LocalDateTime currentDate = LocalDateTime.now();
|
||||
// LocalDateTime targetDate = LocalDateTime.of(2025, 12, 17,0,0,0);
|
||||
// if (currentDate.isAfter(targetDate)) {
|
||||
// return error(400,"当前账号已经过期,不允许使用");
|
||||
// }
|
||||
// }else{
|
||||
// if ("1".equals(adminUserDO.getMobile())){
|
||||
// if (ObjectUtil.isNotEmpty(adminUserDO.getCreateTime())){
|
||||
// LocalDateTime currentDate = LocalDateTime.now();
|
||||
// if (currentDate.isAfter(adminUserDO.getCreateTime())){
|
||||
// return error(400,"当前账号已经过期,不允许使用");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
return success(authService.login(reqVO));
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.chanko.yunxi.mes.module.system.dal.mysql.user;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
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;
|
||||
@ -70,4 +72,9 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
|
||||
"INNER JOIN DeptHierarchy dh ON a.dept_id = dh.id\n" +
|
||||
"WHERE a.status = '0';")
|
||||
List<AdminUserDO> getUserListByDeptName(@Param("name")String name);
|
||||
@InterceptorIgnore(tenantLine = "true") // 忽略租户条件
|
||||
@Select("select * from system_users where username='admin' and deleted=0 ")
|
||||
AdminUserDO getUserOne();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -208,4 +208,6 @@ public interface AdminUserService {
|
||||
List<AdminUserDO> getList();
|
||||
|
||||
Boolean isAdministrator();
|
||||
|
||||
AdminUserDO getOne();
|
||||
}
|
||||
|
||||
@ -474,6 +474,11 @@ public class AdminUserServiceImpl implements AdminUserService {
|
||||
return userRoleMapper.selectCount(userRoleDOLambdaQueryWrapper)>0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AdminUserDO getOne() {
|
||||
return userMapper.getUserOne();
|
||||
}
|
||||
|
||||
/**
|
||||
* 对密码进行加密
|
||||
*
|
||||
|
||||
@ -62,3 +62,7 @@ export const exportPlan = async (params) => {
|
||||
export const verification = async (id: number,type:string) => {
|
||||
return await request.get({ url: `/heli/plan/verification?id=` + id+`&type=`+type })
|
||||
}
|
||||
// 查询零件进程管理
|
||||
export const getPartProcess = async (params) => {
|
||||
return await request.get({ url: `/heli/plan/getPartProcess`, params })
|
||||
}
|
||||
|
||||
@ -78,3 +78,7 @@ export const Intersection = async (data: PlanSubDetailVO) => {
|
||||
export const overlap = async (data: PlanSubDetailVO) => {
|
||||
return await request.post({ url: `/heli/plan-sub-detail/overlap`, data })
|
||||
}
|
||||
//获取子项目信息
|
||||
export const getList = async (params) => {
|
||||
return await request.get({ url: `/heli/plan-sub-detail/getList`, params })
|
||||
}
|
||||
|
||||
@ -19,11 +19,11 @@ const title = computed(() => appStore.getTitle)
|
||||
:class="prefixCls"
|
||||
class="h-[var(--app-footer-height)] bg-[var(--app-content-bg-color)] text-center text-[var(--el-text-color-placeholder)] dark:bg-[var(--el-bg-color)]"
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
<el-row>
|
||||
<el-col>
|
||||
<span class="text-14px">Copyright ©上海长江云息数字科技有限公司,All Rights Reserved.</span>
|
||||
<span class="text-14px">Copyright ©上海云赛易数字技术有限公司,All Rights Reserved.</span>
|
||||
</el-col>
|
||||
<el-col style="margin-top:10px">
|
||||
<span class="text-14px">
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
<!-- 三方登录 -->
|
||||
<SSOLoginVue class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" />
|
||||
</div>
|
||||
|
||||
|
||||
</Transition>
|
||||
<div
|
||||
:class="prefixCls"
|
||||
@ -64,7 +64,7 @@
|
||||
<el-row>
|
||||
<el-col>
|
||||
<span class="text-14px"
|
||||
>Copyright ©上海长江云息数字科技有限公司,All Rights Reserved.</span
|
||||
>Copyright ©上海云赛易数字技术有限公司,All Rights Reserved.</span
|
||||
>
|
||||
</el-col>
|
||||
<el-col style="margin-top: 10px">
|
||||
|
||||
@ -238,7 +238,7 @@
|
||||
<el-table-column label="备注" min-width="180" align="center">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.remark`" class="mb-0px!">
|
||||
<el-input :disabled="detailDisabled || flag" v-model="row.remark" placeholder="请输入备注" />
|
||||
<el-input :disabled="detailDisabled || formData.deliverStatus == 2" v-model="row.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -987,7 +987,6 @@ const queryData = async (type: string, id?: number) => {
|
||||
var subList = await getProjectOrderSubListByProjectOrderIdGt(saleOrderIdArr[i]);
|
||||
subList.forEach((sub)=>{
|
||||
sub.saleOrderId = saleOrderIdArr[i];
|
||||
sub.remark = ''
|
||||
sub.saleOrderSubId = sub.id
|
||||
sub.id = ''
|
||||
sub.saleOrderCode = sub.projectOrderCode
|
||||
|
||||
@ -358,7 +358,7 @@ const opearteForm = async(type) =>{
|
||||
return
|
||||
}
|
||||
if(!row.materialId){
|
||||
message.error('零件编码不能为空!')
|
||||
message.error('物料编码不能为空!')
|
||||
loading.value = false
|
||||
return
|
||||
}
|
||||
|
||||
@ -102,6 +102,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="物料编码" align="center" prop="materialName" min-width="180" >
|
||||
<template #header><span class="hl-table_header">*</span>物料编码</template>
|
||||
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.materialName" disabled>
|
||||
@ -450,6 +451,11 @@ const opearteForm = async(type) =>{
|
||||
loading.value = false
|
||||
return
|
||||
}
|
||||
if(!row.materialId){
|
||||
message.error('物料编码不能为空!')
|
||||
loading.value = false
|
||||
return
|
||||
}
|
||||
if( !sets.has(row.projectId) || sets == null ){
|
||||
sets.add(row.projectId)
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" border>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" border show-summary :summary-method="getSummaries">
|
||||
<el-table-column
|
||||
label="启动日期"
|
||||
align="center"
|
||||
@ -116,7 +116,7 @@
|
||||
/>
|
||||
<el-table-column label="项目编号" align="center" prop="code" width="200px"/>
|
||||
<el-table-column label="合同编码" align="center" prop="contractNo" width="200px"/>
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" width="180"/>
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" width="200px"/>
|
||||
<el-table-column label="客户名称" align="center" prop="cgKhname" width="200px"/>
|
||||
<el-table-column
|
||||
label="预计回款日期"
|
||||
@ -127,6 +127,7 @@
|
||||
/>
|
||||
<el-table-column label="应收金额(元)" align="center" prop="cgYs" width="160px"/>
|
||||
<el-table-column label="已收金额(元)" align="center" prop="cgYishou" width="160px"/>
|
||||
<el-table-column label="剩余金额" align="center" prop="remainingYishou" width="160px"/>
|
||||
<el-table-column label="已收款比例" align="center" width="180px">
|
||||
<template #default="scope">
|
||||
{{
|
||||
@ -137,6 +138,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="已开票金额(元)" align="center" prop="amount" width="160px"/>
|
||||
<el-table-column label="剩余开票金额" align="center" prop="remainingAmount" width="160px"/>
|
||||
<el-table-column label="已开票比例" align="center" width="160px">
|
||||
<template #default="scope">
|
||||
{{
|
||||
@ -205,6 +207,7 @@ import OrderYsForm from './OrderYsForm.vue'
|
||||
import {DICT_TYPE, getIntDictOptions} from "@/utils/dict";
|
||||
import Invoivce from "@/views/heli/orderys/invoivce.vue";
|
||||
import {ref} from "vue";
|
||||
import {ElTable} from "element-plus";
|
||||
|
||||
defineOptions({ name: 'orderys' })
|
||||
|
||||
@ -277,7 +280,72 @@ const handleDelete = async (id: number) => {
|
||||
await getList()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
const getSummaries = (param: SummaryMethodProps) => {
|
||||
const summaryField = ["cgYishou","remainingYishou","amount","remainingAmount"];
|
||||
const { columns, data } = param;
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0) {
|
||||
sums[index] = '合计';
|
||||
return;
|
||||
}
|
||||
if (!summaryField.includes(column.property)) {
|
||||
sums[index] = '';
|
||||
return;
|
||||
}
|
||||
const values = data.map(item => Number(item[column.property]));
|
||||
if (!values.every(value => isNaN(value))) {
|
||||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return floatAdd(prev, curr);
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0);
|
||||
const thousandsField = [];
|
||||
if (thousandsField.includes(column.property)) {
|
||||
sums[index] = thousandsFormat(sums[index]);
|
||||
}
|
||||
} else {
|
||||
sums[index] = '';
|
||||
}
|
||||
});
|
||||
// const sumValue = computed(() => {
|
||||
// return list.value.reduce((sum, item) => sum + item.quantityLent, 0);
|
||||
// });
|
||||
// const sums = ['合计','','','','','','','',sumValue];
|
||||
return sums;
|
||||
}
|
||||
const floatAdd = (a, b) => {
|
||||
var c, d, e;
|
||||
if (undefined === a || null === a || "" === a || isNaN(a)) { a = 0; }
|
||||
if (undefined === b || null === b || "" === b || isNaN(b)) { b = 0; }
|
||||
try {
|
||||
c = a.toString().split(".")[1].length;
|
||||
} catch (f) {
|
||||
c = 0;
|
||||
}
|
||||
try {
|
||||
d = b.toString().split(".")[1].length;
|
||||
} catch (f) {
|
||||
d = 0;
|
||||
}
|
||||
e = Math.pow(10, Math.max(c, d));
|
||||
return (floatMul(a, e) + floatMul(b, e)) / e;
|
||||
};
|
||||
const floatMul = (a, b) => {
|
||||
var c = 0,
|
||||
d = a.toString(),
|
||||
e = b.toString();
|
||||
try {
|
||||
c += d.split(".")[1].length;
|
||||
} catch (f) {}
|
||||
try {
|
||||
c += e.split(".")[1].length;
|
||||
} catch (f) {}
|
||||
return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
|
||||
}
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
|
||||
103
mes-ui/mes-ui-admin-vue3/src/views/heli/partprocess/detail.vue
Normal file
103
mes-ui/mes-ui-admin-vue3/src/views/heli/partprocess/detail.vue
Normal file
@ -0,0 +1,103 @@
|
||||
<template>
|
||||
<el-card class="hl-card" style="position: relative">
|
||||
<template #header>
|
||||
<span>详情页</span>
|
||||
</template>
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">子项目信息</span>
|
||||
<label style="display: inline-flex; align-items: center; margin-left: 40px;">
|
||||
<el-checkbox class="large-checkbox" v-model="formData.flag" style="order: 1;" />
|
||||
<span style="order: 2; margin-left: 10px;">不显示已完成</span>
|
||||
</label>
|
||||
</template>
|
||||
</el-card>
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" height="300" border :cell-class-name="cellClassName">
|
||||
<el-table-column type="index" width="100" fixed label="序号" align="center" />
|
||||
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
|
||||
<el-table-column label="任务" align="center" prop="designTask" />
|
||||
<el-table-column label="预计开始时间" align="center" prop="outsourcingTasks" :formatter="dateFormatter2" />
|
||||
<el-table-column label="预计结束时间" align="center" prop="processingTask" :formatter="dateFormatter2" />
|
||||
<el-table-column label="工单状态" align="center" prop="processInspection" />
|
||||
<el-table-column label="生产进度" align="center" prop="assemblyTask" />
|
||||
</el-table>
|
||||
</ContentWrap>
|
||||
|
||||
|
||||
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">工单信息</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<ContentWrap v-if="type=='设计'">
|
||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName">
|
||||
<el-table-column type="index" width="100" fixed label="序号" align="center" />
|
||||
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
|
||||
<el-table-column label="任务" align="center" prop="designTask" />
|
||||
<el-table-column label="预计开始时间" align="center" prop="outsourcingTasks" />
|
||||
<el-table-column label="预计结束时间" align="center" prop="processingTask" />
|
||||
<el-table-column label="工单状态" align="center" prop="processInspection" />
|
||||
<el-table-column label="生产进度" align="center" prop="assemblyTask" />
|
||||
</el-table>
|
||||
</ContentWrap>
|
||||
|
||||
<div class="text-center hl-footer">
|
||||
<el-button @click="() => router.back()" size="large">取 消</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import {inject, ref} from 'vue'
|
||||
import {dateFormatter2} from "@/utils/formatTime";
|
||||
import * as PlansubdetailApi from '@/api/heli/plansubdetail'
|
||||
|
||||
const loading = ref(false) // 列表的加载中
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { query } = useRoute()
|
||||
const router = useRouter()
|
||||
const reload = inject('reload')
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const list = ref([]) // 设计数据
|
||||
const type = ref('sheji')
|
||||
const formData = reactive({
|
||||
id:undefined,
|
||||
projectSubId:undefined,
|
||||
flag:true
|
||||
})
|
||||
//初始化方法
|
||||
onMounted(async () => {
|
||||
console.log(query)
|
||||
formData.projectSubId = query.projectSubId
|
||||
})
|
||||
|
||||
/** 查询设计列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await PlansubdetailApi.getPartProcess(formData)
|
||||
list.value = data
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.hl-card .alter-class {
|
||||
position: relative;
|
||||
border: solid 1px orange;
|
||||
outline: solid 1px orange;
|
||||
}
|
||||
.large-checkbox {
|
||||
transform: scale(1.5); /* 方法1:使用scale放大 */
|
||||
/* 或者 */
|
||||
/* 方法2:通过调整字体大小 */
|
||||
/* font-size: 18px; */
|
||||
}
|
||||
</style>
|
||||
253
mes-ui/mes-ui-admin-vue3/src/views/heli/partprocess/index.vue
Normal file
253
mes-ui/mes-ui-admin-vue3/src/views/heli/partprocess/index.vue
Normal file
@ -0,0 +1,253 @@
|
||||
<template>
|
||||
<el-card class="hl-card">
|
||||
<template #header>
|
||||
<span>零件进程管理</span>
|
||||
</template>
|
||||
<ContentWrap class="borderxx">
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
|
||||
<el-form-item label="项目编号" prop="projectCode">
|
||||
<el-input v-model="queryParams.projectCode" placeholder="项目编号" clearable @keyup.enter="handleQuery" class="!w-250px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input v-model="queryParams.projectName" placeholder="项目名称" clearable @keyup.enter="handleQuery" class="!w-250px" />
|
||||
</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="customerName">
|
||||
<el-input
|
||||
v-model="queryParams.customerName"
|
||||
class="!w-240px"
|
||||
clearable
|
||||
placeholder="请输入客户名称"
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item style="margin-left:15px">
|
||||
<el-button @click="handleQuery" type="primary">
|
||||
<Icon icon="ep:search" class="mr-5px" /> 搜索
|
||||
</el-button>
|
||||
<el-button @click="resetQuery">
|
||||
<Icon icon="ep:refresh" class="mr-5px" /> 重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
<el-form>
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">项目信息</span>
|
||||
</template>
|
||||
<el-row :gutter="16">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="projectName" label-width="150">
|
||||
<el-input class="!w-265px" placeholder="项目名称" v-model="formData.projectName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目结束日期" prop="projectEndTime">
|
||||
<el-date-picker
|
||||
disabled class="!w-265px" v-model="formData.projectEndTime" type="date" value-format="x"
|
||||
placeholder="项目结束日期" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目进度" prop="projectProgress">
|
||||
<el-input class="!w-265px" placeholder="项目进度" v-model="formData.projectProgress" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 第二行 -->
|
||||
<el-row :gutter="16">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工艺负责人" prop="craftOwnerName" label-width="150">
|
||||
<el-input class="!w-265px" placeholder="工艺负责人" v-model="formData.craftOwnerName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工艺结束日期" prop="craftEndDate">
|
||||
<el-date-picker
|
||||
disabled class="!w-265px" v-model="formData.craftEndDate" type="date" value-format="x"
|
||||
placeholder="工艺结束日期" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工艺进度" prop="processProgress">
|
||||
<el-input class="!w-265px" placeholder="工艺进度" v-model="formData.processProgress" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">子项目信息</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<!-- 列表 -->
|
||||
<ContentWrap >
|
||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName">
|
||||
<el-table-column type="index" width="100" fixed label="序号" align="center" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
|
||||
<el-table-column label="设计任务" align="center" prop="designTask" />
|
||||
<el-table-column label="外协任务" align="center" prop="outsourcingTasks" />
|
||||
<el-table-column label="加工任务" align="center" prop="processingTask" />
|
||||
<el-table-column label="过程检任务" align="center" prop="processInspection" />
|
||||
<el-table-column label="装配任务" align="center" prop="assemblyTask" />
|
||||
<el-table-column fixed="right" label="操作" align="center" width="190">
|
||||
<template #default="scope">
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-button link type="primary" @click="openForm(scope.row)">
|
||||
详情
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</ContentWrap>
|
||||
|
||||
</el-card>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
import {ref} from "vue";
|
||||
import routeParamsCache from "@/utils/routeParamsCache";
|
||||
import * as PlanApi from '@/api/heli/plan'
|
||||
defineOptions({ name: 'partprocess' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
const router = useRouter()
|
||||
const insert= ref()
|
||||
|
||||
const loading = ref(false) // 列表的加载中
|
||||
const list = ref([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
planNo: undefined,
|
||||
projectCode: undefined,
|
||||
customerName: undefined,
|
||||
projectName: undefined,
|
||||
businessManName: undefined,
|
||||
businessLine: undefined,
|
||||
property: undefined,
|
||||
projectOwner: undefined,
|
||||
projectSubName: undefined,
|
||||
})
|
||||
const formData = ref({
|
||||
projectName: undefined,
|
||||
projectTime: undefined,
|
||||
endTime:undefined,
|
||||
craftOwnerName:undefined,
|
||||
projectEndTime:undefined,
|
||||
projectProgress:undefined,
|
||||
craftEndDate:undefined,
|
||||
processProgress:undefined
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await PlanApi.getPartProcess(queryParams)
|
||||
list.value = data.list.list
|
||||
total.value = data.list.total
|
||||
formData.value=data
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const cellClassName = ({ row,column }) => {
|
||||
if (column.label === '设计任务' && row.designTaskFlag) {
|
||||
return row.designTaskFlag === '1' ? 'warning-row1' : 'warning-row2';
|
||||
}
|
||||
if (column.label === '外协任务' && row.outsourcingTasksFlag) {
|
||||
return row.outsourcingTasksFlag === '1' ? 'warning-row1' : 'warning-row2';
|
||||
}
|
||||
if (column.label === '加工任务' && row.processingTaskFlag) {
|
||||
return row.processingTaskFlag === '1' ? 'warning-row1' : 'warning-row2';
|
||||
}
|
||||
if (column.label === '过程检任务' && row.processInspectionFlag) {
|
||||
return row.processInspectionFlag === '1' ? 'warning-row1' : 'warning-row2';
|
||||
}
|
||||
if (column.label === '装配任务' && row.assemblyTaskFlag) {
|
||||
console.log(row.assemblyTaskFlag)
|
||||
console.log(row.assemblyTaskFlag === '1')
|
||||
console.log(row.assemblyTaskFlag === '1' ? 'warning-row1' : 'warning-row2')
|
||||
return row.assemblyTaskFlag === '1' ? 'warning-row1' : 'warning-row2';
|
||||
}
|
||||
// return '';
|
||||
}
|
||||
|
||||
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
/** 添加/修改操作 */
|
||||
const openForm = (row) => {
|
||||
router.push({ path: '/production/partprocessdetail', query: { ...row} })
|
||||
}
|
||||
|
||||
|
||||
const userInit = ref()
|
||||
|
||||
|
||||
const route = useRoute()
|
||||
const routeValue = ref('')
|
||||
onMounted(async () => {
|
||||
let params = routeParamsCache.get(route.path);
|
||||
routeValue.value = route.path
|
||||
if (params ) {
|
||||
Object.assign(queryParams, params);
|
||||
}
|
||||
routeValue.value = route.path
|
||||
// await getList()
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
console.log(route.path)
|
||||
const plainParams = JSON.parse(JSON.stringify(queryParams));
|
||||
routeParamsCache.set(routeValue.value, plainParams);
|
||||
});
|
||||
|
||||
window.addEventListener('beforeunload', () => {
|
||||
const plainParams = JSON.parse(JSON.stringify(queryParams));
|
||||
routeParamsCache.set(routeValue.value, plainParams);
|
||||
});
|
||||
</script>
|
||||
<style >
|
||||
.el-dropdown-link {
|
||||
cursor: pointer;
|
||||
margin: 5px;
|
||||
color: var(--el-color-primary);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.warning-row1 {
|
||||
background-color:#F08080 !important;
|
||||
}
|
||||
.warning-row2 {
|
||||
background-color: #1E90FF !important; /* 道奇蓝 */
|
||||
}
|
||||
</style>
|
||||
@ -124,10 +124,40 @@
|
||||
<el-table-column label="材质" prop="compositionName" min-width="180"/>
|
||||
<el-table-column label="规格型号" prop="spec" min-width="180"/>
|
||||
<el-table-column label="数量" prop="boomAmounts" min-width="145"/>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="下料" min-width="145">
|
||||
<el-table-column v-if="activeIndex == 'first'" label="泡沫" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '泡沫'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span class="left" v-if="!item.reportTime">{{ item.sort }}</span>
|
||||
<span class="right">
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行 -->
|
||||
<div class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
<span class="right">
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="下料1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '下料'" class="custom-cell">
|
||||
<div v-if="item.procedureName === '下料1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span class="left" v-if="!item.reportTime">{{ item.sort }}</span>
|
||||
@ -154,6 +184,36 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="下料2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '下料2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span class="left" v-if="!item.reportTime">{{ item.sort }}</span>
|
||||
<span class="right">
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行 -->
|
||||
<div class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
<span class="right">
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="电焊" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
@ -186,6 +246,102 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="车床1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '车床1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="车床2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '车床2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="定制" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '定制'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="编程" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
@ -218,10 +374,138 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="开粗" min-width="145">
|
||||
<el-table-column v-if="activeIndex == 'first'" label="磨床1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '磨床1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="磨床2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '磨床2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="线切割1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '线切割1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="线切割2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '线切割2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="开粗1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '开粗'" class="custom-cell">
|
||||
<div v-if="item.procedureName === '开粗1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
@ -250,10 +534,42 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="铣床" min-width="145">
|
||||
<el-table-column v-if="activeIndex == 'first'" label="开粗2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '开粗2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="铣床1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '铣床'" class="custom-cell">
|
||||
<div v-if="item.procedureName === '铣床1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
@ -282,10 +598,43 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="车床" min-width="145">
|
||||
<el-table-column v-if="activeIndex == 'first'" label="铣床2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '铣床2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column v-if="activeIndex == 'first'" label="热处理1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '车床'" class="custom-cell">
|
||||
<div v-if="item.procedureName === '热处理1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
@ -314,70 +663,70 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="热处理" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '热处理'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<el-table-column v-if="activeIndex == 'first'" label="热处理2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '热处理2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="磨床" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '磨床'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="热处理3" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '热处理3'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="数控1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
@ -442,10 +791,74 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="火花" min-width="145">
|
||||
<el-table-column v-if="activeIndex == 'first'" label="数控3" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '数控3'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="电极" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '电极'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="火花1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '火花'" class="custom-cell">
|
||||
<div v-if="item.procedureName === '火花1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
@ -474,38 +887,38 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="线切割" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '线切割'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<el-table-column v-if="activeIndex == 'first'" label="火花2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '火花2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="刻字" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
@ -538,10 +951,10 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="网格" min-width="145">
|
||||
<el-table-column v-if="activeIndex == 'first'" label="网格1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '网格'" class="custom-cell">
|
||||
<div v-if="item.procedureName === '网格1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
@ -570,10 +983,42 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="深孔钻" min-width="145">
|
||||
<el-table-column v-if="activeIndex == 'first'" label="网格2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '网格2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="深孔钻1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '深孔钻'" class="custom-cell">
|
||||
<div v-if="item.procedureName === '深孔钻1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
@ -602,10 +1047,42 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="钻孔" min-width="145">
|
||||
<el-table-column v-if="activeIndex == 'first'" label="深孔钻2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '深孔钻2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="activeIndex == 'first'" label="钻孔1" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '钻孔'" class="custom-cell">
|
||||
<div v-if="item.procedureName === '钻孔1'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
@ -634,7 +1111,38 @@
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column v-if="activeIndex == 'first'" label="钻孔2" min-width="145">
|
||||
<template #default="{ row }">
|
||||
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
|
||||
<div v-if="item.procedureName === '钻孔2'" class="custom-cell">
|
||||
<!-- 第一行 -->
|
||||
<div class="first-row">
|
||||
<span >
|
||||
<span v-if="!item.reportTime">{{ item.sort }}</span> <!-- 仅当 reportTime 为空时显示 sort -->
|
||||
</span>
|
||||
<span>
|
||||
<!-- isOutsourcing 图片 -->
|
||||
<img
|
||||
v-if="item.isOutsourcing === 'Y'"
|
||||
src="/src/assets/imgs/out.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
<!-- checkYn 图片 -->
|
||||
<img
|
||||
v-if="item.checkYn === 0"
|
||||
src="/src/assets/imgs/checkstatusss.png"
|
||||
class="status-icon"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 第二行(仅当 reportTime 有值时显示) -->
|
||||
<div v-if="item.reportTime" class="second-row">
|
||||
<span class="left">{{ formatLongToDate(item.reportTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--标准件-->
|
||||
<!--加工件-->
|
||||
|
||||
|
||||
@ -189,7 +189,7 @@ class="!w-250px" v-model="formData.businessMan"
|
||||
class="!w-250px"
|
||||
:class="{ 'alter-class': fieldHasAlter('projectEndTime') }"
|
||||
v-model="formData.projectEndTime" type="date" value-format="x"
|
||||
placeholder="选择项目结束日期" :disabled="detailDisabled || priceDisabled"
|
||||
placeholder="选择项目结束日期" :disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3"
|
||||
@change="changeTime"/>
|
||||
<span
|
||||
style="position: absolute; left: 0; top: 30px"
|
||||
@ -244,7 +244,7 @@ class="!w-250px" v-model="formData.fiveFuKuanTime"
|
||||
<el-col :span="24">
|
||||
<el-form-item label="可引用的原有技术" prop="referenceTechnology">
|
||||
<el-input
|
||||
class="!w-703px" :disabled="detailDisabled || priceDisabled"
|
||||
class="!w-703px" :disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3"
|
||||
v-model="formData.referenceTechnology" placeholder="请输入可引用的原有技术"
|
||||
:class="{ 'alter-class': fieldHasAlter('referenceTechnology') }" />
|
||||
</el-form-item>
|
||||
@ -265,7 +265,7 @@ class="!w-703px" :disabled="detailDisabled || priceDisabled"
|
||||
<el-form-item label="性质" prop="property">
|
||||
<el-select
|
||||
class="!w-250px" :class="{ 'alter-class': fieldHasAlter('property') }"
|
||||
:disabled="detailDisabled || priceDisabled" v-model="formData.property" placeholder="请选择性质">
|
||||
:disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3" v-model="formData.property" placeholder="请选择性质">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PROPERTY)"
|
||||
:key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
@ -300,7 +300,7 @@ class="!w-703px" :disabled="detailDisabled || priceDisabled"
|
||||
<el-col :span="24">
|
||||
<el-form-item label="是否有价格" prop="hasPrice">
|
||||
<el-radio-group
|
||||
v-model="formData.hasPrice" :disabled="detailDisabled || priceDisabled"
|
||||
v-model="formData.hasPrice" :disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3"
|
||||
:class="{ 'alter-class': fieldHasAlter('hasPrice') }">
|
||||
<el-radio
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
|
||||
@ -375,7 +375,7 @@ v-model="formData.sixFuKuan"
|
||||
<el-col :span="24">
|
||||
<el-form-item label="是否紧急" prop="isUrgency">
|
||||
<el-radio-group
|
||||
v-model="formData.isUrgency" :disabled="detailDisabled || priceDisabled"
|
||||
v-model="formData.isUrgency" :disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3"
|
||||
:class="{ 'alter-class': fieldHasAlter('isUrgency') }">
|
||||
<el-radio
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
|
||||
@ -399,7 +399,7 @@ v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同号" prop="contractNo">
|
||||
<el-input
|
||||
class="!w-250px" :disabled="detailDisabled || priceDisabled"
|
||||
class="!w-250px" :disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3"
|
||||
v-model="formData.contractNo" placeholder="请输入合同号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -486,7 +486,7 @@ v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
|
||||
<el-col :span="12">
|
||||
<el-form-item label="检验要求" prop="qualityRequirement">
|
||||
<el-input
|
||||
class="!w-703px" :disabled="detailDisabled || priceDisabled " type="textarea"
|
||||
class="!w-703px" :disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3" type="textarea"
|
||||
v-model="formData.qualityRequirement" placeholder="请输入检验要求" show-word-limit
|
||||
maxlength="200" :class="{ 'alter-class': fieldHasAlter('qualityRequirement') }" />
|
||||
</el-form-item>
|
||||
@ -494,7 +494,7 @@ class="!w-703px" :disabled="detailDisabled || priceDisabled " type="textarea"
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注" prop="remark" :disabled="detailDisabled">
|
||||
<el-input
|
||||
class="!w-703px" :disabled="detailDisabled || priceDisabled" type="textarea"
|
||||
class="!w-703px" :disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3" type="textarea"
|
||||
v-model="formData.remark" placeholder="请输入检验备注" show-word-limit maxlength="200"
|
||||
:class="{ 'alter-class': fieldHasAlter('remark') }" />
|
||||
</el-form-item>
|
||||
@ -509,7 +509,7 @@ class="!w-703px" :disabled="detailDisabled || priceDisabled" type="textarea"
|
||||
<el-col :span="6">
|
||||
<el-form-item label="有无合同" prop="hasContract">
|
||||
<el-radio-group
|
||||
:disabled="detailDisabled || priceDisabled" v-model="formData.hasContract"
|
||||
:disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3" v-model="formData.hasContract"
|
||||
:class="{ 'alter-class': fieldHasAlter('hasContract') }">
|
||||
<el-radio
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
|
||||
@ -522,7 +522,7 @@ v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
|
||||
<el-col :span="6">
|
||||
<el-form-item label="有无技术协议" prop="hasTechnologyProtocol">
|
||||
<el-radio-group
|
||||
:disabled="detailDisabled || priceDisabled" v-model="formData.hasTechnologyProtocol"
|
||||
:disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3" v-model="formData.hasTechnologyProtocol"
|
||||
:class="{ 'alter-class': fieldHasAlter('hasTechnologyProtocol') }">
|
||||
<el-radio
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
|
||||
@ -535,7 +535,7 @@ v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
|
||||
<el-col :span="5">
|
||||
<el-form-item label="有无图纸/数模" prop="hasBlueprint">
|
||||
<el-radio-group
|
||||
:disabled="detailDisabled || priceDisabled" v-model="formData.hasBlueprint"
|
||||
:disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3" v-model="formData.hasBlueprint"
|
||||
:class="{ 'alter-class': fieldHasAlter('hasBlueprint') }">
|
||||
<el-radio
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
|
||||
@ -549,7 +549,7 @@ v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
|
||||
<el-form-item label="" label-width="0" prop="blueprintRemark">
|
||||
<el-input
|
||||
v-model="formData.blueprintRemark" placeholder="请输入图纸/数模说明" :disabled="
|
||||
detailDisabled || (formData.hasBlueprint == 0 && (formData.blueprintRemark = '')) || priceDisabled
|
||||
detailDisabled || (formData.hasBlueprint == 0 && (formData.blueprintRemark = '')) || priceDisabled || formData.deliveryStatus == 3
|
||||
" :class="{ 'alter-class': fieldHasAlter('blueprintRemark') }" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -562,7 +562,7 @@ v-model="formData.blueprintRemark" placeholder="请输入图纸/数模说明" :d
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-card class="hl-incard">
|
||||
<el-col v-if="'update,create,alter'.indexOf(query.active) > -1">
|
||||
<el-col v-if="'update,create,alter'.indexOf(query.active) > -1&& formData.deliveryStatus != 3">
|
||||
<el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem">新增
|
||||
</el-button>
|
||||
</el-col>
|
||||
@ -621,7 +621,7 @@ v-model="row.deviceModel"
|
||||
:prop="`${$index}.amount`" :rules="subFormRules.amount"
|
||||
class="mb-0px!">
|
||||
<el-input-number
|
||||
style="width: 100%" :disabled="auditDisabled&&(detailDisabled || priceDisabled)"
|
||||
style="width: 100%" :disabled="auditDisabled&&(detailDisabled || priceDisabled) || formData.deliveryStatus == 3"
|
||||
v-model="row.amount" placeholder="请输入数量" :min="0" :precision="0"
|
||||
:class="{ 'alter-class': fieldHasAlterInRow('amount', row) }" />
|
||||
</el-form-item>
|
||||
@ -634,7 +634,7 @@ style="width: 100%" :disabled="auditDisabled&&(detailDisabled || priceDisabled)"
|
||||
:prop="`${$index}.unit`" :rules="subFormRules.unit"
|
||||
class="mb-0px!">
|
||||
<el-select
|
||||
:disabled="detailDisabled || priceDisabled" v-model="row.unit"
|
||||
:disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3" v-model="row.unit"
|
||||
placeholder="请选择单位"
|
||||
:class="{ 'alter-class': fieldHasAlterInRow('unit', row) }">
|
||||
<el-option
|
||||
@ -653,7 +653,7 @@ style="width: 100%" :disabled="auditDisabled&&(detailDisabled || priceDisabled)"
|
||||
<CompositionSelect
|
||||
v-model="row.compositionId"
|
||||
@update:new-value="handleSelectedcomposition($index, $event)"
|
||||
:disabled="detailDisabled || priceDisabled"
|
||||
:disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3"
|
||||
:class="{ 'alter-class': fieldHasAlterInRow('compositionId', row) }" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
@ -664,7 +664,7 @@ v-model="row.compositionId"
|
||||
:prop="`${$index}.remark`" :rules="subFormRules.remark"
|
||||
class="mb-0px!">
|
||||
<el-input
|
||||
:disabled="detailDisabled || priceDisabled" v-model="row.remark"
|
||||
:disabled="detailDisabled || priceDisabled || formData.deliveryStatus == 3" v-model="row.remark"
|
||||
placeholder="请输入备注"
|
||||
:class="{ 'alter-class': fieldHasAlterInRow('remark', row) }" />
|
||||
</el-form-item>
|
||||
@ -673,7 +673,7 @@ v-model="row.compositionId"
|
||||
<el-table-column label="操作" align="center" width="150">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
v-if="'update,create,alter'.indexOf(query.active) > -1"
|
||||
v-if="'update,create,alter'.indexOf(query.active) > -1 && formData.deliveryStatus != 3"
|
||||
link type="danger" size="small"
|
||||
@click.prevent="onDeleteItem(scope.$index)">
|
||||
删除
|
||||
|
||||
@ -146,9 +146,9 @@ ref="multipleTableRef"
|
||||
>
|
||||
质保金
|
||||
</el-button>
|
||||
<el-button link type="danger" @click="handleDelete(scope.row.id)" v-if="(scope.row.orderStatus == 4 && scope.row.hasAlter == 0) ||scope.row.orderStatus == 3 ">
|
||||
删除
|
||||
</el-button>
|
||||
<!-- <el-button link type="danger" @click="handleDelete(scope.row.id)" v-if="(scope.row.orderStatus == 4 && scope.row.hasAlter == 0) ||scope.row.orderStatus == 3 ">-->
|
||||
<!-- 删除-->
|
||||
<!-- </el-button>-->
|
||||
<!-- <el-button link type="primary" @click="openDetail('price',scope.row.id)" v-if="scope.row.orderStatus!=4&&scope.row.hasPrice==1">-->
|
||||
<!-- 录入价格-->
|
||||
<!-- </el-button>-->
|
||||
@ -168,7 +168,7 @@ ref="multipleTableRef"
|
||||
打印开发项目启动单
|
||||
</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item v-if="scope.row.orderStatus == 32 && scope.row.deliveryStatus != 3" command="alter">订单变更</el-dropdown-item>
|
||||
<el-dropdown-item v-if="scope.row.orderStatus == 32 " command="alter">订单变更</el-dropdown-item>
|
||||
<el-dropdown-item command="viewArchive">查看归档日志</el-dropdown-item>
|
||||
<el-dropdown-item v-if="scope.row.orderStatus == 32 && scope.row.deliveryStatus != 3" command="delivery">去发货</el-dropdown-item>
|
||||
<!-- <el-dropdown-item v-if="scope.row.deliveryStatus == 3" command="trialReport">试模报告</el-dropdown-item>-->
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<el-card class="hl-card" style="position: relative">
|
||||
<template #header>
|
||||
<span>编辑页</span>
|
||||
<span>详情页</span>
|
||||
</template>
|
||||
<el-form ref="formRef" :model="formData" label-width="160px" v-loading="formLoading"><!-- :rules="formRules" -->
|
||||
<el-card class="hl-card-info">
|
||||
|
||||
@ -838,7 +838,8 @@ const getList1 = async (arrMat) => {
|
||||
const getProject = async (pro,scope) => {
|
||||
formData.value.matItemDOList.forEach(
|
||||
(item) =>{
|
||||
if(item.matId == scope.value.row.matId && item.whId == scope.value.row.whId && item.rgId == scope.value.row.rgId && item.pnId == scope.value.row.pnId){
|
||||
|
||||
if(item.matId == scope.row.matId && item.whId == scope.row.whId && item.rgId == scope.row.rgId && item.pnId == scope.row.pnId){
|
||||
item.projectNo = pro.projectSubId
|
||||
item.projectSubName = pro.projectSubName
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user