按要求修改

This commit is contained in:
z 2025-06-05 19:27:00 +08:00
parent 48adb5b70a
commit 4dadedc6a6
26 changed files with 1031 additions and 207 deletions

View File

@ -99,5 +99,12 @@ public class InvoiceController {
ExcelUtils.write(response, "财务发票.xls", "数据", InvoiceRespVO.class, ExcelUtils.write(response, "财务发票.xls", "数据", InvoiceRespVO.class,
BeanUtils.toBean(list, InvoiceRespVO.class)); BeanUtils.toBean(list, InvoiceRespVO.class));
} }
@GetMapping("/getOrderYsInvoice")
@Operation(summary = "根据订单获得财务发票")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:invoice:query')")
public CommonResult<List<InvoiceDO>> getOrderYsInvoice(@RequestParam("code") String code) {
List<InvoiceDO> invoice = invoiceService.getOrderYsInvoice(code);
return success(invoice);
}
} }

View File

@ -17,13 +17,13 @@ import java.time.LocalDateTime;
public class OrderYsExportVO { public class OrderYsExportVO {
@Schema(description = "项目编号,唯一", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "项目编号,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("项目编号") // @ExcelProperty("项目编号")
private String code; private String code;
@Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@ExcelProperty("项目名称") @ExcelProperty("项目名称")
private String projectName; private String projectName;
@ExcelProperty(value = "生成日期", converter = TimestampToDateConvert.class) // @ExcelProperty(value = "生成日期", converter = TimestampToDateConvert.class)
private LocalDateTime cgTime; private LocalDateTime cgTime;
@Schema(description = "客户名称", example = "王五") @Schema(description = "客户名称", example = "王五")
@ExcelProperty("客户名称") @ExcelProperty("客户名称")
@ -38,8 +38,11 @@ public class OrderYsExportVO {
@Schema(description = "已收金额") @Schema(description = "已收金额")
@ExcelProperty("已收金额") @ExcelProperty("已收金额")
private BigDecimal cgYishou; private BigDecimal cgYishou;
@Schema(description = "是否回款完成") @Schema(description = "已开票金额")
@ExcelProperty(value = "是否回款完成", converter = DictConvert.class) @ExcelProperty("已开票金额")
private BigDecimal amount;
@Schema(description = "回款状态")
@ExcelProperty(value = "回款状态", converter = DictConvert.class)
@DictFormat("heli_yingfu_money") @DictFormat("heli_yingfu_money")
private Integer cgTypee; private Integer cgTypee;
@Schema(description = "备注") @Schema(description = "备注")

View File

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.orderys.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.orderys.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
@ -44,11 +45,12 @@ public class OrderYsRespVO {
@Schema(description = "应收金额") @Schema(description = "应收金额")
@ExcelProperty("应收金额") @ExcelProperty("应收金额")
private BigDecimal cgYs; private BigDecimal cgYs;
@Schema(description = "已收金额") @Schema(description = "已收金额")
@ExcelProperty("已收金额") @ExcelProperty("已收金额")
private BigDecimal cgYishou; private BigDecimal cgYishou;
@Schema(description = "已开票金额")
@ExcelProperty("已开票金额")
private BigDecimal amount;
@Schema(description = "是否回款完成") @Schema(description = "是否回款完成")
@ExcelProperty("是否回款完成") @ExcelProperty("是否回款完成")
private Integer cgTypee; private Integer cgTypee;
@ -57,4 +59,14 @@ public class OrderYsRespVO {
@ExcelProperty("备注") @ExcelProperty("备注")
private String rem; private String rem;
private BigDecimal shouFuKuanBiLi;
private BigDecimal twoFuKuanBiLi;
private BigDecimal threeFuKuanBiLi;
private BigDecimal fourFuKuanBiLi;
private BigDecimal fiveFuKuanBiLi;
private BigDecimal sixFuKuanBiLi;
} }

View File

@ -38,7 +38,7 @@ public class OrderYsDetailRespVO {
@Schema(description = "回款类型", example = "2") @Schema(description = "回款类型", example = "2")
@ExcelProperty("回款类型") @ExcelProperty("回款类型")
private String cgType; private Integer cgType;
@Schema(description = "应收id", example = "30630") @Schema(description = "应收id", example = "30630")
@ExcelProperty("应收id") @ExcelProperty("应收id")

View File

@ -38,11 +38,11 @@ public class TaskReportRespVO {
private String projectSubName; private String projectSubName;
@Schema(description = "子项目编号") @Schema(description = "子项目编号")
@ExcelProperty("子项目编号") // @ExcelProperty("子项目编号")
private String projectSubCode; private String projectSubCode;
@Schema(description = "派工单号") @Schema(description = "派工单号")
@ExcelProperty("派工单号") // @ExcelProperty("派工单号")
private String dispatchCode; private String dispatchCode;
@Schema(description = "零件名称") @Schema(description = "零件名称")
@ -50,7 +50,7 @@ public class TaskReportRespVO {
private String materialName; private String materialName;
@Schema(description = "规格型号") @Schema(description = "规格型号")
@ExcelProperty("规格型号") // @ExcelProperty("规格型号")
private String spec; private String spec;
@Schema(description = "报工人") @Schema(description = "报工人")
@ -70,11 +70,11 @@ public class TaskReportRespVO {
private Integer amount; private Integer amount;
@Schema(description = "开始时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("生产开始时间") // @ExcelProperty("生产开始时间")
private LocalDateTime startTime; private LocalDateTime startTime;
@Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("生产结束时间") // @ExcelProperty("生产结束时间")
private LocalDateTime endTime; private LocalDateTime endTime;
@Schema(description = "报工时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "报工时间", requiredMode = Schema.RequiredMode.REQUIRED)

View File

@ -66,5 +66,22 @@ public class OrderYsDO extends BaseDO {
* 备注 * 备注
*/ */
private String rem; private String rem;
@TableField(exist = false)
private BigDecimal amount;
@TableField(exist = false)
private BigDecimal shouFuKuanBiLi;
@TableField(exist = false)
private BigDecimal twoFuKuanBiLi;
@TableField(exist = false)
private BigDecimal threeFuKuanBiLi;
@TableField(exist = false)
private BigDecimal fourFuKuanBiLi;
@TableField(exist = false)
private BigDecimal fiveFuKuanBiLi;
@TableField(exist = false)
private BigDecimal sixFuKuanBiLi;
} }

View File

@ -62,4 +62,5 @@ public class PgMasterDO extends BaseDO {
*/ */
private LocalDateTime pgDatetime; private LocalDateTime pgDatetime;
} }

View File

@ -2,12 +2,21 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.orderys;
import java.util.*; import java.util.*;
import cn.hutool.core.collection.CollUtil;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; 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.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.invoice.InvoiceDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderys.OrderYsDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderys.OrderYsDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.dept.DeptDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.orderys.vo.*; import com.chanko.yunxi.mes.module.heli.controller.admin.orderys.vo.*;
import org.springframework.util.StringUtils;
/** /**
* 应收记录 Mapper * 应收记录 Mapper
@ -18,17 +27,40 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.orderys.vo.*;
public interface OrderYsMapper extends BaseMapperX<OrderYsDO> { public interface OrderYsMapper extends BaseMapperX<OrderYsDO> {
default PageResult<OrderYsDO> selectPage(OrderYsPageReqVO reqVO) { default PageResult<OrderYsDO> selectPage(OrderYsPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<OrderYsDO>()
.betweenIfPresent(OrderYsDO::getCreateTime, reqVO.getCreateTime()) MPJLambdaWrapper<OrderYsDO> query = new MPJLambdaWrapper<>();
.eqIfPresent(OrderYsDO::getCode, reqVO.getCode()) query.selectAll(OrderYsDO.class)
.likeIfPresent(OrderYsDO::getProjectName, reqVO.getProjectName()) .select("sum(i.amount) as amount")
.betweenIfPresent(OrderYsDO::getCgTime, reqVO.getCgTime()) .leftJoin(
.likeIfPresent(OrderYsDO::getCgKhname, reqVO.getCgKhname()) "finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE'")
.eqIfPresent(OrderYsDO::getCgYs, reqVO.getCgYs()) .disableSubLogicDel()
.eqIfPresent(OrderYsDO::getCgYishou, reqVO.getCgYishou()) .groupBy(OrderYsDO::getId)
.eqIfPresent(OrderYsDO::getCgTypee, reqVO.getCgTypee()) .orderByDesc(OrderYsDO::getCreateTime);
.eqIfPresent(OrderYsDO::getRem, reqVO.getRem())
.orderByDesc(OrderYsDO::getId)); query.like(!StringUtils.isEmpty(reqVO.getProjectName()), OrderYsDO::getProjectName, reqVO.getProjectName())
.like(!StringUtils.isEmpty(reqVO.getCgKhname()), OrderYsDO::getCgKhname, reqVO.getCgKhname())
.eq(!StringUtils.isEmpty(reqVO.getCgTypee()), OrderYsDO::getCgTypee, reqVO.getCgTypee());
// .eq(InvoiceDO::getType, "FINANCE_MAKE_INVOICE");
return selectPage(reqVO, query);
} }
default OrderYsDO selectOrderYsId(Integer id){
MPJLambdaWrapper<OrderYsDO> query = new MPJLambdaWrapper<>();
query.selectAll(OrderYsDO.class)
.select("sum(i.amount) as amount")
.select("p.shou_Fu_Kuan_Bi_Li as shouFuKuanBiLi","p.two_Fu_Kuan_Bi_Li as twoFuKuanBiLi","p.three_Fu_Kuan_Bi_Li as threeFuKuanBiLi")
.select("p.four_Fu_Kuan_Bi_Li as fourFuKuanBiLi","p.five_Fu_Kuan_Bi_Li as fiveFuKuanBiLi","p.six_Fu_Kuan_Bi_Li as sixFuKuanBiLi")
.leftJoin(
"finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE'")
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getCode, OrderYsDO::getCode)
.disableSubLogicDel();
query
.eq( OrderYsDO::getId, id);
// .eq(InvoiceDO::getType, "FINANCE_MAKE_INVOICE");
return selectOne(query);
}
} }

View File

@ -27,7 +27,8 @@ public interface ProjectLeaderMapper extends BaseMapperX<ProjectLeaderDO> {
MPJLambdaWrapper<ProjectLeaderDO> query = new MPJLambdaWrapper<>(); MPJLambdaWrapper<ProjectLeaderDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProjectLeaderDO.class) query.selectAll(ProjectLeaderDO.class)
.select("a.nickname as ownerName") .select("a.nickname as ownerName")
.leftJoin(AdminUserDO.class,"a",AdminUserDO::getId,ProjectLeaderDO::getOwner); .leftJoin(AdminUserDO.class,"a",AdminUserDO::getId,ProjectLeaderDO::getOwner)
.disableSubLogicDel();
query.eq(!StringUtils.isEmpty(reqVO.getType()), ProjectLeaderDO::getType, reqVO.getType()); query.eq(!StringUtils.isEmpty(reqVO.getType()), ProjectLeaderDO::getType, reqVO.getType());
return selectPage(reqVO, query); return selectPage(reqVO, query);
@ -38,6 +39,7 @@ public interface ProjectLeaderMapper extends BaseMapperX<ProjectLeaderDO> {
query.selectAll(ProjectLeaderDO.class) query.selectAll(ProjectLeaderDO.class)
.select("a.nickname as ownerName,a.username as userName") .select("a.nickname as ownerName,a.username as userName")
.leftJoin(AdminUserDO.class,"a",AdminUserDO::getId,ProjectLeaderDO::getOwner) .leftJoin(AdminUserDO.class,"a",AdminUserDO::getId,ProjectLeaderDO::getOwner)
.disableSubLogicDel()
.orderByDesc( ProjectLeaderDO::getCreateTime) .orderByDesc( ProjectLeaderDO::getCreateTime)
.last("limit 1"); .last("limit 1");
query.eq(ProjectLeaderDO::getType, type); query.eq(ProjectLeaderDO::getType, type);

View File

@ -16,9 +16,11 @@ import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -49,7 +51,6 @@ public interface TaskReportMapper extends BaseMapperX<TaskReportDO> {
.leftJoin(AdminUserDO.class, "u2", AdminUserDO::getId, TaskReportDO::getUpdater) .leftJoin(AdminUserDO.class, "u2", AdminUserDO::getId, TaskReportDO::getUpdater)
.orderByDesc(TaskReportDO::getId) .orderByDesc(TaskReportDO::getId)
.disableSubLogicDel(); .disableSubLogicDel();
query.eq(reqVO.getOwner() != null, TaskReportDO::getOwner, reqVO.getOwner()) query.eq(reqVO.getOwner() != null, TaskReportDO::getOwner, reqVO.getOwner())
.like(!StringUtils.isEmpty(reqVO.getProjectCode()), ProjectOrderDO::getCode, reqVO.getProjectCode()) .like(!StringUtils.isEmpty(reqVO.getProjectCode()), ProjectOrderDO::getCode, reqVO.getProjectCode())
.like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName()) .like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName())
@ -57,7 +58,12 @@ public interface TaskReportMapper extends BaseMapperX<TaskReportDO> {
.like(!StringUtils.isEmpty(reqVO.getMaterialName()), ProcessBomDetailDO::getMaterialName, reqVO.getMaterialName()) .like(!StringUtils.isEmpty(reqVO.getMaterialName()), ProcessBomDetailDO::getMaterialName, reqVO.getMaterialName())
.like(!StringUtils.isEmpty(reqVO.getOwnerName()), AdminUserDO::getNickname, reqVO.getOwnerName()) .like(!StringUtils.isEmpty(reqVO.getOwnerName()), AdminUserDO::getNickname, reqVO.getOwnerName())
.eq(!StringUtils.isEmpty(reqVO.getDispatchDetailId()),TaskReportDO::getDispatchDetailId,reqVO.getDispatchDetailId()); .eq(!StringUtils.isEmpty(reqVO.getDispatchDetailId()),TaskReportDO::getDispatchDetailId,reqVO.getDispatchDetailId());
if (reqVO.getStartTime() != null) {
query.between( TaskReportDO::getStartTime, reqVO.getStartTime()[0], reqVO.getStartTime()[1]);
}
if (reqVO.getStartTime() != null) {
query.between(TaskReportDO::getEndTime, reqVO.getEndTime()[0], reqVO.getEndTime()[1]);
}
return selectPage(reqVO, query); return selectPage(reqVO, query);
} }
public int deleteByDispatchDetailIds(List<Long> dispatchDetailIds); public int deleteByDispatchDetailIds(List<Long> dispatchDetailIds);

View File

@ -1,7 +1,13 @@
package com.chanko.yunxi.mes.module.heli.service.bgmasterline; package com.chanko.yunxi.mes.module.heli.service.bgmasterline;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterLineDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.pgmaster.PgMasterLineDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.pgmaster.PgMasterLineMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.pgmaster.PgMasterLineMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.pgmaster.PgMasterMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -34,6 +40,9 @@ public class BgMasterLineServiceImpl implements BgMasterLineService {
private BgMasterLineMapper bgMasterLineMapper; private BgMasterLineMapper bgMasterLineMapper;
@Resource @Resource
private PgMasterLineMapper pgMasterLineMapper; private PgMasterLineMapper pgMasterLineMapper;
@Resource
private TaskDispatchDetailMapper taskDispatchDetailMapper;
//结束本次报工 //结束本次报工
@Override @Override
@ -72,8 +81,11 @@ public class BgMasterLineServiceImpl implements BgMasterLineService {
pgMasterLineDO.setActive("END"); pgMasterLineDO.setActive("END");
pgMasterLineDO.setEntTime(currentDateTime); pgMasterLineDO.setEntTime(currentDateTime);
pgMasterLineMapper.updateById(pgMasterLineDO); pgMasterLineMapper.updateById(pgMasterLineDO);
//更新工时 //修改派工单明细表检验状态为Y
LambdaUpdateWrapper<TaskDispatchDetailDO> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(TaskDispatchDetailDO::getId,pgMasterLineDO.getDispatchDetailId());
wrapper.set(TaskDispatchDetailDO::getTestYn,"Y");
taskDispatchDetailMapper.update(wrapper);
}else{ }else{
//不相等时只更新当前报工状态 //不相等时只更新当前报工状态
pgMasterLineDO.setActive("END"); pgMasterLineDO.setActive("END");

View File

@ -5,6 +5,8 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.invoice.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.invoice.InvoiceDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.invoice.InvoiceDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import java.util.List;
/** /**
* 财务发票 Service 接口 * 财务发票 Service 接口
* *
@ -52,4 +54,6 @@ public interface InvoiceService {
PageResult<InvoiceDO> getInvoicePage(InvoicePageReqVO pageReqVO); PageResult<InvoiceDO> getInvoicePage(InvoicePageReqVO pageReqVO);
Long operate(InvoiceSaveReqVO operateReqVO); Long operate(InvoiceSaveReqVO operateReqVO);
List<InvoiceDO> getOrderYsInvoice(String code);
} }

View File

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.service.invoice; package com.chanko.yunxi.mes.module.heli.service.invoice;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils;
import com.chanko.yunxi.mes.module.heli.enums.InvoiceStatusEnum; import com.chanko.yunxi.mes.module.heli.enums.InvoiceStatusEnum;
@ -16,6 +17,7 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.module.heli.dal.mysql.invoice.InvoiceMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.invoice.InvoiceMapper;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
@ -103,4 +105,11 @@ public class InvoiceServiceImpl implements InvoiceService {
return operateReqVO.getId(); return operateReqVO.getId();
} }
@Override
public List<InvoiceDO> getOrderYsInvoice(String code) {
LambdaQueryWrapper<InvoiceDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(InvoiceDO::getOrderCode, code);
return invoiceMapper.selectList(wrapper);
}
} }

View File

@ -94,7 +94,7 @@ public class OrderYsServiceImpl implements OrderYsService {
@Override @Override
public OrderYsDO getOrderYs(Integer id) { public OrderYsDO getOrderYs(Integer id) {
return orderYsMapper.selectById(id); return orderYsMapper.selectOrderYsId(id);
} }
@Override @Override

View File

@ -12,6 +12,7 @@ import com.chanko.yunxi.mes.framework.web.core.util.WebFrameworkUtils;
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanSaveReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanSaveReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo.PlanSubPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo.PlanSubPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO; 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.plansub.PlanSubDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantask.PlanTaskDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantask.PlanTaskDO;
@ -35,6 +36,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetai
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskreport.TaskReportMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskreport.TaskReportMapper;
import com.chanko.yunxi.mes.module.heli.enums.*; import com.chanko.yunxi.mes.module.heli.enums.*;
import com.chanko.yunxi.mes.module.heli.service.customer.CustomerService;
import com.chanko.yunxi.mes.module.heli.service.projectorder.ProjectOrderService; import com.chanko.yunxi.mes.module.heli.service.projectorder.ProjectOrderService;
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
import jodd.util.StringUtil; import jodd.util.StringUtil;
@ -102,8 +104,10 @@ public class PlanServiceImpl implements PlanService {
private PlanTaskBomMapper planTaskBomMapper; private PlanTaskBomMapper planTaskBomMapper;
@Resource @Resource
private TaskDispatchMapper taskDispatchMapper; private TaskDispatchMapper taskDispatchMapper;
@Resource @Resource
private TaskDispatchDetailMapper taskDispatchDetailMapper; private TaskDispatchDetailMapper taskDispatchDetailMapper;
@Resource
private CustomerService customerService;
@Resource @Resource
private TaskReportMapper taskReportMapper; private TaskReportMapper taskReportMapper;
@Override @Override
@ -229,21 +233,27 @@ private TaskReportMapper taskReportMapper;
planDO.setChangeNum(0); planDO.setChangeNum(0);
// 设置生产计划状态 // 设置生产计划状态
planDO.setStatus(ProjectPlanStatusEnum.START.getCode()); planDO.setStatus(ProjectPlanStatusEnum.START.getCode());
ProjectOrderDO projectOrderDO = projectOrderMapper.selectById(projectId);
CustomerDO customer = customerService.getCustomer(projectOrderDO.getCustomerId());
// 月度流水号 // 月度流水号
SerialNumberDO serialNumberDO = new SerialNumberDO(); // SerialNumberDO serialNumberDO = new SerialNumberDO();
serialNumberDO = serialNumberService.getSerialNumber(PROJECT_PLAN.name(), new SimpleDateFormat("yyyyMM").format(new Date())); // serialNumberDO = serialNumberService.getSerialNumber(PROJECT_PLAN.name(), new SimpleDateFormat("yyyyMM").format(new Date()));
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); // serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
// planDO.setPlanNo(PROJECT_PLAN.getCode(serialNumberDO.getSerialNumber().toString()));
String code = projectOrderDO.getCode().replace("-", "");
planDO.setPlanNo("PP"+code);
planDO.setPlanNo(PROJECT_PLAN.getCode(serialNumberDO.getSerialNumber().toString()));
Long userId = WebFrameworkUtils.getLoginUserId(); Long userId = WebFrameworkUtils.getLoginUserId();
planDO.setCreator(userId.toString()); planDO.setCreator(userId.toString());
planMapper.insert(planDO); planMapper.insert(planDO);
// 回写序列记录 // 回写序列记录
serialNumberService.updateSerialNumber(serialNumberDO); // serialNumberService.updateSerialNumber(serialNumberDO);
for(ProjectOrderSubDO item : projectOrderSubDOs){ for(ProjectOrderSubDO item : projectOrderSubDOs){
PlanSubDO planSubDO = new PlanSubDO(); PlanSubDO planSubDO = new PlanSubDO();
planSubDO.setProjectSubCode(customer.getBrief()+'-'+projectOrderDO.getProjectNameSim()+'-'+item.getNameSim());
planSubDO.setProjectSubShortName(item.getNameSim());
planSubDO.setProjectPlanId(planDO.getId()); planSubDO.setProjectPlanId(planDO.getId());
planSubDO.setProjectId(projectId); planSubDO.setProjectId(projectId);
planSubDO.setProjectSubId(item.getId()); planSubDO.setProjectSubId(item.getId());

View File

@ -51,3 +51,7 @@ export const exportInvoice = async (params) => {
export async function operateInvoice(data: InvoiceVO) { export async function operateInvoice(data: InvoiceVO) {
return await request.post({ url: `/heli/invoice/operate`, data }) return await request.post({ url: `/heli/invoice/operate`, data })
} }
// 查询应收记录详情
export const getOrderYsInvoice = async (code: string) => {
return await request.get({ url: `/heli/invoice/getOrderYsInvoice?code=` + code })
}

View File

@ -42,3 +42,4 @@ export const deleteOrderYs = async (id: number) => {
export const exportOrderYs = async (params) => { export const exportOrderYs = async (params) => {
return await request.download({ url: `/heli/order-ys/export-excel`, params }) return await request.download({ url: `/heli/order-ys/export-excel`, params })
} }

View File

@ -156,13 +156,13 @@ const detailDisabled = ref(false)
const formData: any = ref({ const formData: any = ref({
id: undefined, id: undefined,
businessType: "FINANCE_RECEIVE_INVOICE", businessType: businessType.value,
orderId: undefined, orderId: undefined,
number: undefined, number: undefined,
type: undefined, type: "2",
billingDate: undefined, billingDate: undefined,
amount: undefined, amount: undefined,
rate: undefined, rate: 13,
remark: undefined, remark: undefined,
submitter: undefined, submitter: undefined,
submitTime: undefined, submitTime: undefined,
@ -190,13 +190,13 @@ const formRules = reactive({
const resetForm = () => { const resetForm = () => {
formData.value = { formData.value = {
id: undefined, id: undefined,
businessType: "FINANCE_RECEIVE_INVOICE", businessType: businessType.value,
projectId: undefined, projectId: undefined,
number: undefined, number: undefined,
type: undefined, type:"2",
billingDate: undefined, billingDate: undefined,
amount: undefined, amount: undefined,
rate: undefined, rate: 13,
remark: undefined, remark: undefined,
submitter: undefined, submitter: undefined,
submitTime: undefined, submitTime: undefined,

View File

@ -10,11 +10,11 @@
<el-row> <el-row>
<el-form-item label="项目编号" prop="code" width="200px"> <!-- <el-form-item label="项目编号" prop="code" width="200px">-->
<el-input v-model="formData.code" placeholder="请输入项目编号" disabled class="!w-220px"/> <!-- <el-input v-model="formData.code" placeholder="请输入项目编号" disabled class="!w-220px"/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="projectName">
<el-input v-model="formData.projectName" placeholder="请输入项目名称" disabled class="!w-220px"/> <el-input v-model="formData.projectName" placeholder="请输入项目名称" disabled class="!w-230px"/>
</el-form-item> </el-form-item>
<el-form-item label="生成日期" prop="cgTime" > <el-form-item label="生成日期" prop="cgTime" >
<el-date-picker <el-date-picker
@ -22,42 +22,96 @@
type="date" type="date"
value-format="x" value-format="x"
placeholder="选择生成日期" disabled placeholder="选择生成日期" disabled
class="!w-220px" class="!w-230px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="客户名称" prop="cgKhname" >
<el-input v-model="formData.cgKhname" placeholder="请输入客户名称" disabled class="!w-230px"/>
</el-form-item>
</el-row> </el-row>
<el-row> <el-row>
<el-form-item label="客户名称" prop="cgKhname" >
<el-input v-model="formData.cgKhname" placeholder="请输入客户名称" disabled class="!w-220px"/>
</el-form-item>
<el-form-item label="应收金额" prop="cgYs" > <el-form-item label="应收金额" prop="cgYs" >
<el-input v-model="formData.cgYs" placeholder="请输入应收金额" disabled class="!w-220px"/> <el-input v-model="formData.cgYs" placeholder="请输入应收金额" disabled class="!w-230px"/>
</el-form-item> </el-form-item>
<el-form-item label="已收金额" prop="cgYishou"> <el-form-item label="已收金额" prop="cgYishou">
<el-input v-model="formData.cgYishou" placeholder="请输入已收金额" disabled class="!w-220px"/> <el-input v-model="formData.cgYishou" placeholder="请输入已收金额" disabled class="!w-230px"/>
</el-form-item> </el-form-item>
<el-form-item label="已开票金额" prop="amount">
<el-input v-model="formData.amount" placeholder="请输入已开票金额" disabled class="!w-230px"/>
</el-form-item>
</el-row> </el-row>
<el-row> <el-row>
<el-form-item label="是否回款完成" prop="cgTypee" > <el-col :span="8" >
<el-select <el-form-item label="回款状态" prop="cgTypee" >
v-model="formData.cgTypee" <el-select
placeholder="请选择" v-model="formData.cgTypee"
clearable placeholder="请选择"
class="!w-220px" clearable
>
<el-option >
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_YINGFU_MONEY)" <el-option
:key="dict.value" v-for="dict in getIntDictOptions(DICT_TYPE.HELI_YINGFU_MONEY)"
:label="dict.label" :key="dict.value"
:value="dict.value" :label="dict.label"
/> :value="dict.value"
</el-select> />
</el-form-item> </el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="备注" prop="rem"> <el-form-item label="备注" prop="rem">
<el-input v-model="formData.rem" placeholder="请输入备注" class="!w-220px"/> <el-input type="textarea" :rows='3' v-model="formData.rem" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col>
</el-row> </el-row>
</el-form> </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-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="160px"
v-loading="formLoading"
>
<el-row>
<el-col :span="8">
<el-form-item label="首付款" prop="shouFuKuanBiLi" >
<el-input v-model="formData.shouFuKuanBiLi" placeholder="请输入应收金额" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="第二笔款" prop="twoFuKuanBiLi" >
<el-input v-model="formData.twoFuKuanBiLi" placeholder="请输入应收金额" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="第三笔款" prop="threeFuKuanBiLi" >
<el-input v-model="formData.threeFuKuanBiLi" placeholder="请输入应收金额" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="第四笔款" prop="fourFuKuanBiLi" >
<el-input v-model="formData.fourFuKuanBiLi" placeholder="请输入应收金额" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="第五笔款" prop="fiveFuKuanBiLi" >
<el-input v-model="formData.fiveFuKuanBiLi" placeholder="请输入应收金额" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="第六笔款" prop="sixFuKuanBiLi" >
<el-input v-model="formData.sixFuKuanBiLi" placeholder="请输入应收金额" disabled />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="hl-card-info"> <el-card class="hl-card-info">
<template #header> <template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">回款明细信息</span> <div class="hl-card-info-icona"></div><span class="hl-card-info-text">回款明细信息</span>
@ -66,7 +120,7 @@
<el-col> <el-col>
<el-card class="hl-incard"> <el-card class="hl-incard">
<el-col> <el-col>
<el-button type="primary" size="large" @click="onAddItem" v-if="formData.cgTypee==1">新增</el-button> <el-button type="primary" size="large" @click="onAddItem" v-if="formData.cgTypee==2||formData.cgTypee==3">新增</el-button>
</el-col> </el-col>
<el-form ref="OrderYsDetailSubFormRef" :model="formData.orderYsDetails" label-width="0" > <el-form ref="OrderYsDetailSubFormRef" :model="formData.orderYsDetails" label-width="0" >
<el-table :data="formData.orderYsDetails" class="hl-table" > <el-table :data="formData.orderYsDetails" class="hl-table" >
@ -108,13 +162,13 @@
<template #header> <span class="hl-table_header">*</span>回款金额 </template> <template #header> <span class="hl-table_header">*</span>回款金额 </template>
<template #default="scope"> <template #default="scope">
<el-form-item prop="cgYishou" > <el-form-item prop="cgYishou" >
<el-input v-model="scope.row.cgYishou" type="number" placeholder="请输入回款金额" @change="sum" :disabled="scope.row.id" /> <el-input v-model="scope.row.cgYishou" type="number" placeholder="请输入回款金额" @change="sum" :disabled="scope.row.id" min="0" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="120" fixed="right"> <el-table-column label="操作" align="center" width="120" fixed="right">
<template #default="scope"> <template #default="scope">
<el-button link type="danger" size="small" @click.prevent="onDeleteItem(scope.$index)" v-if="formData.cgTypee==1"> <el-button link type="danger" size="small" @click.prevent="onDeleteItem(scope.$index)" v-if="formData.cgTypee==2||formData.cgTypee==3">
删除 删除
</el-button> </el-button>
</template> </template>
@ -135,12 +189,6 @@
import * as OrderYsApi from '@/api/heli/orderys' import * as OrderYsApi from '@/api/heli/orderys'
import * as OrderYsDetailApi from '@/api/heli/orderysdetail' import * as OrderYsDetailApi from '@/api/heli/orderysdetail'
import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from "@/utils/dict"; import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from "@/utils/dict";
import CompositionSelect from "@/views/heli/hlvuestyle/compositionSelect.vue";
import EquipSelect from "@/views/heli/hlvuestyle/equipSelect.vue";
import * as ProjectOrderApi from "@/api/heli/projectorder";
import * as UserApi from "@/api/system/user";
import * as FpUserDetailApi from "@/api/heli/fpuserdetail";
import {number} from "vue-types";
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
@ -160,7 +208,13 @@ const formData = ref({
cgTypee: undefined, cgTypee: undefined,
orderYsDetails: [], orderYsDetails: [],
rem: undefined, rem: undefined,
amount:undefined,
shouFuKuanBiLi:undefined,
twoFuKuanBiLi:undefined,
threeFuKuanBiLi:undefined,
fourFuKuanBiLi:undefined,
fiveFuKuanBiLi:undefined,
sixFuKuanBiLi:undefined
}) })
// const subFormRules = reactive({ // const subFormRules = reactive({
// paymentDate: [{ // paymentDate: [{
@ -257,13 +311,15 @@ const submitForm = async () => {
} }
} }
if (formData.value.cgYishou!=''&&formData.value.cgYishou!=undefined&&formData.value.cgYishou!=null){ if (formData.value.cgYishou!=''&&formData.value.cgYishou!=undefined&&formData.value.cgYishou!=null){
if (formData.value.cgYishou<formData.value.cgYs&&formData.value.cgTypee==2){ if (formData.value.cgYishou<formData.value.cgYs&&formData.value.cgTypee==1){
await message.confirm("已收金额小于应收金额,回款未完成,请确认") await message.confirm("已收金额小于应收金额,回款未全部完成,请确认")
}else if (formData.value.cgYishou>=formData.value.cgYs&&formData.value.cgTypee==1){ }else if (formData.value.cgYishou>=formData.value.cgYs&&formData.value.cgTypee==2){
await message.confirm("已收金额大于等于应收金额,回款已完成,请确认") await message.confirm("已收金额大于等于应收金额,回款已完成,请确认")
}else if (formData.value.cgTypee==3){
await message.confirm("已收金额不为0,不能选择未付款,请确认")
} }
}else { }else {
if (formData.value.cgTypee==2){ if (formData.value.cgTypee==2||formData.value.cgTypee==1){
await message.confirm("未输入已收金额,回款未完成,请确认") await message.confirm("未输入已收金额,回款未完成,请确认")
} }
} }

View File

@ -6,24 +6,24 @@
:model="queryParams" :model="queryParams"
ref="queryFormRef" ref="queryFormRef"
:inline="true" :inline="true"
label-width="160px" label-width="100px"
> >
<el-form-item label="项目编号" prop="code"> <!-- <el-form-item label="项目编号" prop="code">-->
<el-input <!-- <el-input-->
v-model="queryParams.code" <!-- v-model="queryParams.code"-->
placeholder="请输入项目编号" <!-- placeholder="请输入项目编号"-->
clearable <!-- clearable-->
@keyup.enter="handleQuery" <!-- @keyup.enter="handleQuery"-->
class="!w-240px" <!-- class="!w-240px"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="projectName">
<el-input <el-input
v-model="queryParams.projectName" v-model="queryParams.projectName"
placeholder="请输入项目名称" placeholder="请输入项目名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-200px"
/> />
</el-form-item> </el-form-item>
@ -33,10 +33,10 @@
placeholder="请输入客户名称" placeholder="请输入客户名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-200px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="是否回款完成" prop="cgTypee"> <el-form-item label="回款状态" prop="cgTypee">
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="queryParams.cgTypee"--> <!-- v-model="queryParams.cgTypee"-->
<!-- placeholder="请输入是否回款完成"--> <!-- placeholder="请输入是否回款完成"-->
@ -48,7 +48,7 @@
v-model="queryParams.cgTypee" v-model="queryParams.cgTypee"
placeholder="请选择" placeholder="请选择"
clearable clearable
class="!w-240px" class="!w-200px"
> >
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_YINGFU_MONEY)" v-for="dict in getIntDictOptions(DICT_TYPE.HELI_YINGFU_MONEY)"
@ -87,13 +87,13 @@
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="项目名称" align="center" prop="projectName" width="150"/> <el-table-column label="项目名称" align="center" prop="projectName" width="150"/>
<el-table-column <!-- <el-table-column-->
label="生成日期" <!-- label="生成日期"-->
align="center" <!-- align="center"-->
prop="cgTime" <!-- prop="cgTime"-->
:formatter="dateFormatter" <!-- :formatter="dateFormatter"-->
width="250px" <!-- width="250px"-->
/> <!-- />-->
<el-table-column label="客户名称" align="center" prop="cgKhname" width="200px"/> <el-table-column label="客户名称" align="center" prop="cgKhname" width="200px"/>
<el-table-column <el-table-column
label="预计回款日期" label="预计回款日期"
@ -104,13 +104,14 @@
/> />
<el-table-column label="应收金额(元)" align="center" prop="cgYs" width="150"/> <el-table-column label="应收金额(元)" align="center" prop="cgYs" width="150"/>
<el-table-column label="已收金额(元)" align="center" prop="cgYishou" width="150"/> <el-table-column label="已收金额(元)" align="center" prop="cgYishou" width="150"/>
<el-table-column label="是否回款完成" align="center" prop="cgTypee" width="150" > <el-table-column label="已开票金额(元)" align="center" prop="amount" width="150"/>
<el-table-column label="回款状态" align="center" prop="cgTypee" width="150" >
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_YINGFU_MONEY" :value="scope.row.cgTypee" /> <dict-tag :type="DICT_TYPE.HELI_YINGFU_MONEY" :value="scope.row.cgTypee" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="项目编号" align="center" prop="code" width="180"/> <!-- <el-table-column label="项目编号" align="center" prop="code" width="180"/>-->
<el-table-column label="备注" align="center" prop="rem" width="120"/> <el-table-column label="备注" align="center" prop="rem" width="250"/>
<el-table-column label="操作" align="center" width="180"> <el-table-column label="操作" align="center" width="180">
<template #default="scope"> <template #default="scope">
<el-button <el-button
@ -121,14 +122,14 @@
> >
编辑 编辑
</el-button> </el-button>
<el-button v-if=" scope.row.cgYishou==null" <!-- <el-button v-if=" scope.row.cgYishou==null"-->
link <!-- link-->
type="danger" <!-- type="danger"-->
@click="handleDelete(scope.row.id)" <!-- @click="handleDelete(scope.row.id)"-->
v-hasPermi="['heli:order-ys:delete']" <!-- v-hasPermi="['heli:order-ys:delete']"-->
> <!-- >-->
删除 <!-- 删除-->
</el-button> <!-- </el-button>-->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@ -0,0 +1,87 @@
<!-- 基于 ruoyi-vue3 Pagination 重构核心是简化无用的属性并使用 ts 重写 -->
<template>
<el-pagination
v-show="total > 0"
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:background="true"
:page-sizes="[5,10, 20, 30, 50, 100]"
:pager-count="pagerCount"
:total="total"
:small="isSmall"
class="float-right mb-15px mt-15px"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</template>
<script lang="ts" setup>
import { computed, watchEffect } from 'vue'
import { useAppStore } from '@/store/modules/app'
defineOptions({ name: 'Pagination' })
// sizesmall
const appStore = useAppStore()
const layoutCurrentSize = computed(() => appStore.currentSize)
const isSmall = ref<boolean>(layoutCurrentSize.value === 'small')
watchEffect(() => {
isSmall.value = layoutCurrentSize.value === 'small'
})
const props = defineProps({
//
total: {
required: true,
type: Number
},
// pageNo
page: {
type: Number,
default: 1
},
// pageSize
limit: {
type: Number,
default: 20
},
//
// 5
pagerCount: {
type: Number,
default: document.body.clientWidth < 992 ? 5 : 7
}
})
const emit = defineEmits(['update:page', 'update:limit', 'pagination', 'pagination'])
const currentPage = computed({
get() {
return props.page
},
set(val) {
// update:page limit pageNo
emit('update:page', val)
}
})
const pageSize = computed({
get() {
return props.limit
},
set(val) {
// update:limit limit pageSize
emit('update:limit', val)
}
})
const handleSizeChange = (val) => {
// 1
if (currentPage.value * val > props.total) {
currentPage.value = 1
}
// pagination
emit('pagination', { page: currentPage.value, limit: val })
}
const handleCurrentChange = (val) => {
// pagination
emit('pagination', { page: val, limit: pageSize.value })
}
</script>

View File

@ -0,0 +1,325 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="100px"
>
<!-- <el-form-item label="项目编号" prop="code">-->
<!-- <el-input-->
<!-- v-model="queryParams.code"-->
<!-- placeholder="请输入项目编号"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="项目名称" prop="projectName">
<el-input
v-model="queryParams.projectName"
placeholder="请输入项目名称"
clearable
@keyup.enter="handleQuery"
class="!w-200px"
/>
</el-form-item>
<el-form-item label="客户名称" prop="cgKhname">
<el-input
v-model="queryParams.cgKhname"
placeholder="请输入客户名称"
clearable
@keyup.enter="handleQuery"
class="!w-200px"
/>
</el-form-item>
<el-form-item label="回款状态" prop="cgTypee">
<!-- <el-input-->
<!-- v-model="queryParams.cgTypee"-->
<!-- placeholder="请输入是否回款完成"-->
<!-- clearable-->
<!-- @keyup.enter="handleQuery"-->
<!-- class="!w-240px"-->
<!-- />-->
<el-select
v-model="queryParams.cgTypee"
placeholder="请选择"
clearable
class="!w-200px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_YINGFU_MONEY)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- @click="openForm('create')"-->
<!-- v-hasPermi="['heli:order-ys:create']"-->
<!-- >-->
<!-- <Icon icon="ep:plus" class="mr-5px" /> 新增-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- @click="handleExport"-->
<!-- :loading="exportLoading"-->
<!-- v-hasPermi="['heli:order-ys:export']"-->
<!-- >-->
<!-- <Icon icon="ep:download" class="mr-5px" /> 导出-->
<!-- </el-button>-->
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-click="rowClick" :row-class-name="tableRowClassName" highlight-current-row>
<el-table-column label="项目名称" align="center" prop="projectName" width="150"/>
<!-- <el-table-column-->
<!-- label="生成日期"-->
<!-- align="center"-->
<!-- prop="cgTime"-->
<!-- :formatter="dateFormatter"-->
<!-- width="250px"-->
<!-- />-->
<el-table-column label="客户名称" align="center" prop="cgKhname" width="200px"/>
<el-table-column
label="预计回款日期"
align="center"
prop="paymentDate"
:formatter="dateFormatter1"
width="200px"
/>
<el-table-column label="应收金额(元)" align="center" prop="cgYs" width="150"/>
<el-table-column label="已收金额(元)" align="center" prop="cgYishou" width="150"/>
<el-table-column label="已开票金额(元)" align="center" prop="amount" width="150"/>
<el-table-column label="回款状态" align="center" prop="cgTypee" width="150" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_YINGFU_MONEY" :value="scope.row.cgTypee" />
</template>
</el-table-column>
<!-- <el-table-column label="项目编号" align="center" prop="code" width="180"/>-->
<el-table-column label="备注" align="center" prop="rem" />
<!-- <el-table-column label="操作" align="center" width="180">-->
<!-- <template #default="scope">-->
<!-- <el-button-->
<!-- link-->
<!-- type="primary"-->
<!-- @click="openForm('update', scope.row.id)"-->
<!-- v-hasPermi="['heli:order-ys:update']"-->
<!-- >-->
<!-- 编辑-->
<!-- </el-button>-->
<!-- <el-button v-if=" scope.row.cgYishou==null"-->
<!-- link-->
<!-- type="danger"-->
<!-- @click="handleDelete(scope.row.id)"-->
<!-- v-hasPermi="['heli:order-ys:delete']"-->
<!-- >-->
<!-- 删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<!-- 分页 -->
<Paginations
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<div class="footer">
<el-table :data="OrderYsDetailLiat" highlight-current-row style="width: 50%; height: 100%">
<el-table-column prop="paymentDate" label="回款日期" :formatter="dateFormatter2"
/>
<el-table-column prop="cgType" label="回款类型" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_CGTYPE" :value="scope.row.cgType" />
</template>
</el-table-column>
<el-table-column prop="cgYishou" label="回款金额" />
</el-table>
<el-table :data="InvoiceList" class="ml-10" style="width: 50%;height: 100%">
<el-table-column label="发票编码" align="center" prop="number"/>
<el-table-column
label="开票日期"
align="center"
prop="billingDate"
:formatter="dateFormatter2"
/>
<el-table-column label="发票金额" align="center" prop="amount" />
<el-table-column label="发票类型" align="center" prop="type" width="160">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_INVOICE_TYPE" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column label="税率(%" align="center" prop="rate" width="140" />
</el-table>
</div>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<!-- <OrderYsForm ref="formRef" @success="getList" />-->
</template>
<script setup lang="ts">
import {dateFormatter, dateFormatter1, dateFormatter2} from '@/utils/formatTime'
import download from '@/utils/download'
import Paginations from './pagination.vue'
import * as OrderYsApi from '@/api/heli/orderys'
import OrderYsForm from './OrderYsForm.vue'
import {DICT_TYPE, getIntDictOptions} from "@/utils/dict";
import * as OrderYsDetailApi from "@/api/heli/orderysdetail";
import * as InvoiceApi from "@/api/heli/invoice";
defineOptions({ name: 'OrderYs' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref([]) //
const OrderYsDetailLiat = ref([]) //
const InvoiceList = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 5,
createTime: [],
code: undefined,
projectName: undefined,
cgTime: [],
cgKhname: undefined,
cgYs: undefined,
cgYishou: undefined,
cgTypee: undefined,
rem: undefined,
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await OrderYsApi.getOrderYsPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 处理某一行的点击 */
const rowClick = async (row) => {
OrderYsDetailLiat.value= await OrderYsDetailApi.getOrderYsDetails(row.id)
InvoiceList.value= await InvoiceApi.getOrderYsInvoice(row.code)
// OrderYsDetailLiat.value.map(item=>{item.cgTypee=Number(item.cgTypee)})
}
const tableRowClassName = ({ row }) => {
if (row.paymentDate!=null){
var endTime = new Date(row.paymentDate);
// Date
var currentTime = new Date();
// endTime currentTime
endTime.setHours(0, 0, 0, 0);
currentTime.setHours(0, 0, 0, 0);
if (endTime < currentTime){
console.log(1)
return 'warning-row1';
}else {
return ''
}
}
return ''
}
/** 重置按钮操作 */
const resetQuery = () => {
OrderYsDetailLiat.value=[]
InvoiceList.value=[]
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await OrderYsApi.deleteOrderYs(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await OrderYsApi.exportOrderYs(queryParams)
download.excel(data, '应收记录.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(() => {
getList()
})
</script>
<style>
.ml-10 {
>>> .el-scrollbar__wrap {
margin-left: 10px !important;
}
}
.footer {
margin-top: 10px;
height: 200px;
width: 100%;
flex-shrink: 0;
display: flex;
align-items: center;
.ml-10 {
margin-left: 10px;
}
}
.warning-row1 {
background-color:#F08080 !important;
}
</style>

View File

@ -328,7 +328,7 @@ ref="subFormRef" :model="formData.projectPlanSubs" :rules="subFormRules"
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.projectSubShortName`" :rules="subFormRules.projectSubShortName" class="mb-0px!"> <el-form-item :prop="`${$index}.projectSubShortName`" :rules="subFormRules.projectSubShortName" class="mb-0px!">
<el-input <el-input
v-model="row.projectSubShortName" placeholder="子项目简码" v-model="row.projectSubShortName" placeholder="子项目简码" disabled
@change="(name) => handleSubCode(row, name)" /> @change="(name) => handleSubCode(row, name)" />
</el-form-item> </el-form-item>
</template> </template>
@ -508,18 +508,51 @@ style="width: 100%" v-model="row.endDate" type="date" value-format="x"
<el-table-column min-width="150" label="责任人" align="center"> <el-table-column min-width="150" label="责任人" align="center">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.owner`" class="mb-0px!"> <el-form-item :prop="`${$index}.owner`" class="mb-0px!">
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name!='检验'&&row.name!='预验收'&&row.name!='装配'"> <!-- <el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name!='检验'&&row.name!='预验收'&&row.name!='装配'">-->
<el-option v-for="dict in mergedArray" :key="dict.id" <!-- <el-option v-for="dict in mergedArray" :key="dict.id"-->
:label="dict.username+' '+dict.nickname" :value="dict.id" /> <!-- :label="dict.username+' '+dict.nickname" :value="dict.id" />-->
</el-select> <!-- </el-select>-->
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='检验'||row.name=='预验收'"> <!-- <el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='检验'||row.name=='预验收'">-->
<el-option v-for="dict in userInit2" :key="dict.id" <!-- <el-option v-for="dict in userInit2" :key="dict.id"-->
<!-- :label="dict.username+' '+dict.nickname" :value="dict.id" />-->
<!-- </el-select>-->
<!-- <el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='装配'">-->
<!-- <el-option v-for="dict in mergedArray1" :key="dict.id"-->
<!-- :label="dict.username+' '+dict.nickname" :value="dict.id" />-->
<!-- </el-select>-->
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='母模/毛坯'">
<el-option v-for="dict in mergedArray" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" /> :label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select> </el-select>
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='装配'"> <el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='粗,精加工'">
<el-option v-for="dict in mergedArray1" :key="dict.id" <el-option v-for="dict in mergedArray1" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" /> :label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select> </el-select>
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='热处理'">
<el-option v-for="dict in mergedArray2" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select>
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='电火花'">
<el-option v-for="dict in mergedArray3" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select>
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='打孔/抛光'">
<el-option v-for="dict in mergedArray4" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select>
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='装配'">
<el-option v-for="dict in mergedArray5" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select>
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='预验收'">
<el-option v-for="dict in mergedArray6" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select>
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='检验'">
<el-option v-for="dict in mergedArray7" :key="dict.id"
:label="dict.username+' '+dict.nickname" :value="dict.id" />
</el-select>
<!-- <UserSelect v-model="row.owner" @update:new-value="handleSelectedUser9($index,$event)" class="!w-265px"/>--> <!-- <UserSelect v-model="row.owner" @update:new-value="handleSelectedUser9($index,$event)" class="!w-265px"/>-->
</el-form-item> </el-form-item>
</template> </template>
@ -1456,7 +1489,7 @@ const handleCraftInfo = (val) =>{
} }
} }
const handleSubCode = (row, name) => { const handleSubCode = (row, name) => {
row.projectSubCode = name.length==0?"" : (formData.value.projectCode + '-' + customerInit.value.brief + '-' + name) // row.projectSubCode = name.length==0?"" : (formData.value.projectCode + '-' + customerInit.value.brief + '-' + name)
} }
const handleMouldType = async (scope, mid) => { const handleMouldType = async (scope, mid) => {
@ -1575,6 +1608,12 @@ const userInit2= ref()
const userInit3= ref() const userInit3= ref()
const mergedArray= ref() const mergedArray= ref()
const mergedArray1= ref() const mergedArray1= ref()
const mergedArray2= ref()
const mergedArray3= ref()
const mergedArray4= ref()
const mergedArray5= ref()
const mergedArray6= ref()
const mergedArray7= ref()
const equipInit = ref() const equipInit = ref()
const mouldTypeList = ref() const mouldTypeList = ref()
const customerInit = ref() const customerInit = ref()
@ -1584,7 +1623,6 @@ onMounted(async () => {
userInit1.value = await UserApi.getDeptName("生产部") userInit1.value = await UserApi.getDeptName("生产部")
userInit2.value = await UserApi.getDeptName("检验部") userInit2.value = await UserApi.getDeptName("检验部")
userInit3.value=await UserApi.getDeptName("采购部") userInit3.value=await UserApi.getDeptName("采购部")
mergedArray.value = [...userInit1.value, ...userInit3.value];
// //
mouldTypeList.value = await MouldTypeApi.getSimpList() mouldTypeList.value = await MouldTypeApi.getSimpList()
// //
@ -1592,12 +1630,111 @@ onMounted(async () => {
// //
formData.value = await PlanApi.getPlan(query.id) formData.value = await PlanApi.getPlan(query.id)
formData.value.hasCraft = 1 formData.value.hasCraft = 1
const zp = await ProjectLeaderApi.getProjectLeaderType(4) const data = await ProjectLeaderApi.getProjectLeaderType(4)
const data1 = await ProjectLeaderApi.getProjectLeaderType(5)
const data2 = await ProjectLeaderApi.getProjectLeaderType(6)
const data3 = await ProjectLeaderApi.getProjectLeaderType(7)
const data4 = await ProjectLeaderApi.getProjectLeaderType(8)
const data5 = await ProjectLeaderApi.getProjectLeaderType(9)
const data6 = await ProjectLeaderApi.getProjectLeaderType(10)
const data7 = await ProjectLeaderApi.getProjectLeaderType(11)
mergedArray.value = [...userInit1.value, ...userInit3.value];
mergedArray1.value = [...userInit1.value, ...userInit3.value]; mergedArray1.value = [...userInit1.value, ...userInit3.value];
if (zp) { // null/undefined mergedArray2.value = [...userInit1.value, ...userInit3.value];
console.log(zp) mergedArray3.value = [...userInit1.value, ...userInit3.value];
mergedArray1.value.push({ id: zp.owner, username: zp.userName, nickname: zp.ownerName }); mergedArray4.value = [...userInit1.value, ...userInit3.value];
console.log(mergedArray1.value) mergedArray5.value = [...userInit1.value, ...userInit3.value];
mergedArray6.value = [...userInit2.value];
mergedArray7.value = [...userInit2.value];
if (data&&data.owner) { // null/undefined
// mergedArray1 id
const isOwnerExist = mergedArray.value.some(item => item.id === data.owner);
// push
if (!isOwnerExist) {
mergedArray.value.push({
id: data.owner,
username: data.userName,
nickname: data.ownerName
});
}
}
if (data1&&data1.owner) {
const isOwnerExist = mergedArray1.value.some(item => item.id === data1.owner);
// push
if (!isOwnerExist) {
mergedArray1.value.push({
id: data1.owner,
username: data1.userName,
nickname: data1.ownerName
});
}
}
if (data2&&data2.owner) {
const isOwnerExist = mergedArray2.value.some(item => item.id === data2.owner);
// push
if (!isOwnerExist) {
mergedArray2.value.push({
id: data2.owner,
username: data2.userName,
nickname: data2.ownerName
});
}
}
if (data3&&data3.owner) {
const isOwnerExist = mergedArray3.value.some(item => item.id === data3.owner);
// push
if (!isOwnerExist) {
mergedArray3.value.push({
id: data3.owner,
username: data3.userName,
nickname: data3.ownerName
});
}
}
if (data4&&data4.owner) {
const isOwnerExist = mergedArray4.value.some(item => item.id === data4.owner);
// push
if (!isOwnerExist) {
mergedArray4.value.push({
id: data4.owner,
username: data4.userName,
nickname: data4.ownerName
});
}
}
if (data5&&data5.owner) {
const isOwnerExist = mergedArray5.value.some(item => item.id === data5.owner);
// push
if (!isOwnerExist) {
mergedArray5.value.push({
id: data5.owner,
username: data5.userName,
nickname: data5.ownerName
});
}
}
if (data6&&data6.owner) {
const isOwnerExist = mergedArray6.value.some(item => item.id === data6.owner);
// push
if (!isOwnerExist) {
mergedArray6.value.push({
id: data6.owner,
username: data6.userName,
nickname: data6.ownerName
});
}
}
if (data7&&data7.owner) { // null/undefined
const isOwnerExist = mergedArray7.value.some(item => item.id === data7.owner);
// push
if (!isOwnerExist) {
mergedArray7.value.push({
id: data7.owner,
username: data7.userName,
nickname: data7.ownerName
});
}
} }
await handleInitPlanSub() await handleInitPlanSub()
var projectInit = await ProjectOrderApi.getProjectOrder(formData.value.projectId) var projectInit = await ProjectOrderApi.getProjectOrder(formData.value.projectId)
@ -1651,14 +1788,71 @@ if (formData.value.editor==null||formData.value.editor==undefined){
// //
const craftInfos = formData.value.craftInfos; const craftInfos = formData.value.craftInfos;
for (var i = 0; i < craftInfos.length; i++) { for (var i = 0; i < craftInfos.length; i++) {
if (craftInfos[i].name=='装配'){ if (craftInfos[i].name=='母模/毛坯'){
if (craftInfos[i].owner==null||craftInfos[i].owner==undefined||craftInfos[i].owner==''){ if (craftInfos[i].owner==null||craftInfos[i].owner==undefined||craftInfos[i].owner==''){
if (zp!=null){ if (data&&data.owner){
craftInfos[i].owner =zp.owner craftInfos[i].owner =data.owner
} }
} }
} }
if (craftInfos[i].name=='粗,精加工'){
if (craftInfos[i].owner==null||craftInfos[i].owner==undefined||craftInfos[i].owner==''){
if (data1&&data1.owner){
craftInfos[i].owner =data1.owner
}
}
}
if (craftInfos[i].name=='热处理'){
if (craftInfos[i].owner==null||craftInfos[i].owner==undefined||craftInfos[i].owner==''){
if (data2&&data2.owner){
craftInfos[i].owner =data2.owner
}
}
}
if (craftInfos[i].name=='电火花'){
if (craftInfos[i].owner==null||craftInfos[i].owner==undefined||craftInfos[i].owner==''){
if (data3&&data3.owner){
craftInfos[i].owner =data3.owner
}
}
}
if (craftInfos[i].name=='打孔/抛光'){
if (craftInfos[i].owner==null||craftInfos[i].owner==undefined||craftInfos[i].owner==''){
if (data4&&data4.owner){
craftInfos[i].owner =data4.owner
}
}
}
if (craftInfos[i].name=='装配'){
if (craftInfos[i].owner==null||craftInfos[i].owner==undefined||craftInfos[i].owner==''){
if (data5&&data5.owner){
craftInfos[i].owner =data5.owner
}
}
}
if (craftInfos[i].name=='预验收'){
if (craftInfos[i].owner==null||craftInfos[i].owner==undefined||craftInfos[i].owner==''){
if (data6&&data6.owner){
craftInfos[i].owner =data6.owner
}
}
}
if (craftInfos[i].name=='检验'){
if (craftInfos[i].owner==null||craftInfos[i].owner==undefined||craftInfos[i].owner==''){
if (data7&&data7.owner){
craftInfos[i].owner =data7.owner
}
}
}
} }
}) })
@ -1685,7 +1879,6 @@ const handleSelectedUser5 = (newValue: any) => {
} }
// //
const handleSelectedUser6 = (currentIndex,newValue: any) => { const handleSelectedUser6 = (currentIndex,newValue: any) => {
console.log("111"+currentIndex)
formData.value.projectPlanSubs[currentIndex].blankOwner = newValue?.id formData.value.projectPlanSubs[currentIndex].blankOwner = newValue?.id
} }
// //

View File

@ -75,15 +75,6 @@ class="!w-250px" :disabled="alterDisabled || detailDisabled || priceDisabled"
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="24">
<el-form-item label="项目简码" prop="projectNameSim">
<el-input
class="!w-250px" :disabled="alterDisabled || detailDisabled || priceDisabled"
v-model="formData.projectNameSim" placeholder="请输入项目简码" />
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="项目开始日期" prop="projectStartTime"> <el-form-item label="项目开始日期" prop="projectStartTime">
@ -182,27 +173,13 @@ class="!w-250px" v-model="formData.businessMan"
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="24">
<el-form-item label="所属业务线" prop="businessLine">
<el-select
class="!w-250px" v-model="formData.businessLine"
placeholder="请选择所属业务线" :disabled="alterDisabled || detailDisabled">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_BUSINESS_LINE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
&ensp; <el-form-item label="项目简码" prop="projectNameSim">
</el-col> <el-input
</el-row> class="!w-250px" :disabled="alterDisabled || detailDisabled || priceDisabled"
<el-row> v-model="formData.projectNameSim" placeholder="请输入项目简码" />
<el-col :span="24"> </el-form-item>
&ensp;
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -275,13 +252,26 @@ class="!w-703px" :disabled="detailDisabled || priceDisabled"
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-row> <!-- <el-row>-->
<el-col :span="24"> <!-- <el-col :span="24">-->
<el-form-item label="单据状态" prop="orderStatus"> <!-- <el-form-item label="单据状态" prop="orderStatus">-->
{{ getDictLabel(DICT_TYPE.HELI_PROJECT_ORDER_STATUS, formData.orderStatus) }} <!-- {{ getDictLabel(DICT_TYPE.HELI_PROJECT_ORDER_STATUS, formData.orderStatus) }}-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
</el-row> <!-- </el-row>-->
<el-row>
<el-col :span="24">
<el-form-item label="性质" prop="property">
<el-select
class="!w-250px" :class="{ 'alter-class': fieldHasAlter('property') }"
:disabled="detailDisabled || priceDisabled" 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" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="客户名称" prop="customerId"> <el-form-item label="客户名称" prop="customerId">
@ -292,19 +282,19 @@ class="!w-703px" :disabled="detailDisabled || priceDisabled"
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="性质" prop="property"> <el-form-item label="所属业务线" prop="businessLine">
<el-select <el-select
class="!w-250px" :class="{ 'alter-class': fieldHasAlter('property') }" class="!w-250px" v-model="formData.businessLine"
:disabled="detailDisabled || priceDisabled" v-model="formData.property" placeholder="请选择性质"> placeholder="请选择所属业务线" :disabled="alterDisabled || detailDisabled">
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PROPERTY)" v-for="dict in getStrDictOptions(DICT_TYPE.HELI_BUSINESS_LINE)"
:key="dict.value" :label="dict.label" :value="dict.value" /> :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="是否有价格" prop="hasPrice"> <el-form-item label="是否有价格" prop="hasPrice">

View File

@ -3,7 +3,7 @@
<template #header> <template #header>
<span>每日报工记录</span> <span>每日报工记录</span>
</template> </template>
<ContentWrap> <ContentWrap class="fixed-search">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form
class="-mb-15px" class="-mb-15px"
@ -12,13 +12,33 @@
:inline="true" :inline="true"
label-width="110px" label-width="110px"
> >
<el-form-item label="起始日期" prop="startTime">
<el-date-picker
v-model="queryParams.startTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
class="!w-280px"
/>
</el-form-item>
<el-form-item label="结束日期" prop="startTime">
<el-date-picker
v-model="queryParams.endTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
class="!w-280px"
/>
</el-form-item>
<el-form-item label="项目编号" prop="projectCode"> <el-form-item label="项目编号" prop="projectCode">
<el-input <el-input
v-model="queryParams.projectCode" v-model="queryParams.projectCode"
placeholder="请输入项目编号" placeholder="请输入项目编号"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-280px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="projectName">
@ -27,7 +47,7 @@
placeholder="请输入项目名称" placeholder="请输入项目名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-280px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="子项目名称" prop="projectSubName"> <el-form-item label="子项目名称" prop="projectSubName">
@ -36,7 +56,7 @@
placeholder="请输入子项目名称" placeholder="请输入子项目名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-280px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="零件名称" prop="materialName"> <el-form-item label="零件名称" prop="materialName">
@ -45,7 +65,7 @@
placeholder="请输入零件名称" placeholder="请输入零件名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-280px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="报工人" prop="OwnerName"> <el-form-item label="报工人" prop="OwnerName">
@ -54,7 +74,7 @@
placeholder="请输入报工人名称" placeholder="请输入报工人名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-280px"
/> />
</el-form-item> </el-form-item>
<el-form-item style="margin-left: 20px"> <el-form-item style="margin-left: 20px">
@ -74,30 +94,30 @@
</ContentWrap> </ContentWrap>
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap class="table-container">
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table" height="500px">
<el-table-column fixed type="index" width="100" label="序号" align="center" /> <el-table-column fixed type="index" width="100" label="序号" align="center" />
<el-table-column fixed label="项目编号" align="center" prop="projectCode" width="220" /> <el-table-column fixed label="项目编号" align="center" prop="projectCode" width="220" />
<el-table-column fixed label="项目名称" align="center" prop="projectName" width="180" /> <el-table-column fixed label="项目名称" align="center" prop="projectName" width="180" />
<el-table-column fixed label="子项目名称" align="center" prop="projectSubName" width="180" /> <el-table-column fixed label="子项目名称" align="center" prop="projectSubName" width="180" />
<!-- <el-table-column label="子项目编号" align="center" prop="projectSubCode" width="260" />--> <!-- <el-table-column label="子项目编号" align="center" prop="projectSubCode" width="260" />-->
<el-table-column label="派工单号" align="center" prop="dispatchCode" width="180" /> <!-- <el-table-column label="派工单号" align="center" prop="dispatchCode" width="180" />-->
<el-table-column label="零件名称" align="center" prop="materialName" width="180" /> <el-table-column label="零件名称" align="center" prop="materialName" width="180" />
<el-table-column label="规格型号" align="center" prop="spec" width="160" /> <!-- <el-table-column label="规格型号" align="center" prop="spec" width="160" />-->
<el-table-column label="报工人" align="center" prop="ownerName" /> <el-table-column label="报工人" align="center" prop="ownerName" />
<el-table-column label="报工工序" align="center" prop="procedureName" width="160" /> <el-table-column label="报工工序" align="center" prop="procedureName" width="160" />
<el-table-column label="报工工时" align="center" prop="workTime" width="160" /> <el-table-column label="报工工时" align="center" prop="workTime" width="160" />
<el-table-column label="报工数量" align="center" prop="amount" width="120" /> <el-table-column label="报工数量" align="center" prop="amount" width="120" />
<el-table-column <!-- <el-table-column-->
label="生产起止时间" <!-- label="生产起止时间"-->
align="center" <!-- align="center"-->
prop="startTime" <!-- prop="startTime"-->
width="400" <!-- width="400"-->
> <!-- >-->
<template #default="scope"> <!-- <template #default="scope">-->
{{formatDate(scope.row.startTime)+'~'+formatDate(scope.row.endTime)}} <!-- {{formatDate(scope.row.startTime)+'~'+formatDate(scope.row.endTime)}}-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<el-table-column <el-table-column
label="报工记录提交时间" label="报工记录提交时间"
align="center" align="center"
@ -146,6 +166,7 @@ import {dateFormatter, formatDate} from '@/utils/formatTime'
import download from '@/utils/download' import download from '@/utils/download'
import * as TaskReportApi from '@/api/heli/taskreport' import * as TaskReportApi from '@/api/heli/taskreport'
import TaskReportForm from './TaskReportForm.vue' import TaskReportForm from './TaskReportForm.vue'
import dayjs from "dayjs";
defineOptions({ name: 'TaskReport' }) defineOptions({ name: 'TaskReport' })
@ -214,7 +235,17 @@ const handleDelete = async (id: number) => {
await getList() await getList()
} catch {} } catch {}
} }
//
const setDefaultDate = () => {
queryParams.startTime = [
dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss'),
dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss')
]
queryParams.endTime = [
dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss'),
dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss')
]
}
/** 导出按钮操作 */ /** 导出按钮操作 */
const handleExport = async () => { const handleExport = async () => {
try { try {
@ -240,6 +271,27 @@ const handleExport = async () => {
/** 初始化 **/ /** 初始化 **/
onMounted(() => { onMounted(() => {
setDefaultDate()
getList() getList()
}) })
</script> </script>
<style scoped>
/* 固定搜索栏样式 */
.fixed-search {
position: sticky;
top: 0;
z-index: 1000;
background: white;
padding: 16px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
/* 表格容器预留顶部空间 */
.table-container {
margin-top: 20px;
}
/* 可选:调整搜索表单间距 */
.el-form-item {
margin-bottom: 16px;
}
</style>