按要求修改
This commit is contained in:
parent
48adb5b70a
commit
4dadedc6a6
@ -99,5 +99,12 @@ public class InvoiceController {
|
||||
ExcelUtils.write(response, "财务发票.xls", "数据", 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);
|
||||
}
|
||||
}
|
||||
|
@ -17,13 +17,13 @@ import java.time.LocalDateTime;
|
||||
public class OrderYsExportVO {
|
||||
|
||||
@Schema(description = "项目编号,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("项目编号")
|
||||
// @ExcelProperty("项目编号")
|
||||
private String code;
|
||||
|
||||
@Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
|
||||
@ExcelProperty("项目名称")
|
||||
private String projectName;
|
||||
@ExcelProperty(value = "生成日期", converter = TimestampToDateConvert.class)
|
||||
// @ExcelProperty(value = "生成日期", converter = TimestampToDateConvert.class)
|
||||
private LocalDateTime cgTime;
|
||||
@Schema(description = "客户名称", example = "王五")
|
||||
@ExcelProperty("客户名称")
|
||||
@ -38,8 +38,11 @@ public class OrderYsExportVO {
|
||||
@Schema(description = "已收金额")
|
||||
@ExcelProperty("已收金额")
|
||||
private BigDecimal cgYishou;
|
||||
@Schema(description = "是否回款完成")
|
||||
@ExcelProperty(value = "是否回款完成", converter = DictConvert.class)
|
||||
@Schema(description = "已开票金额")
|
||||
@ExcelProperty("已开票金额")
|
||||
private BigDecimal amount;
|
||||
@Schema(description = "回款状态")
|
||||
@ExcelProperty(value = "回款状态", converter = DictConvert.class)
|
||||
@DictFormat("heli_yingfu_money")
|
||||
private Integer cgTypee;
|
||||
@Schema(description = "备注")
|
||||
|
@ -1,5 +1,6 @@
|
||||
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 lombok.*;
|
||||
import java.util.*;
|
||||
@ -44,11 +45,12 @@ public class OrderYsRespVO {
|
||||
@Schema(description = "应收金额")
|
||||
@ExcelProperty("应收金额")
|
||||
private BigDecimal cgYs;
|
||||
|
||||
@Schema(description = "已收金额")
|
||||
@ExcelProperty("已收金额")
|
||||
private BigDecimal cgYishou;
|
||||
|
||||
@Schema(description = "已开票金额")
|
||||
@ExcelProperty("已开票金额")
|
||||
private BigDecimal amount;
|
||||
@Schema(description = "是否回款完成")
|
||||
@ExcelProperty("是否回款完成")
|
||||
private Integer cgTypee;
|
||||
@ -57,4 +59,14 @@ public class OrderYsRespVO {
|
||||
@ExcelProperty("备注")
|
||||
private String rem;
|
||||
|
||||
private BigDecimal shouFuKuanBiLi;
|
||||
|
||||
private BigDecimal twoFuKuanBiLi;
|
||||
|
||||
private BigDecimal threeFuKuanBiLi;
|
||||
|
||||
private BigDecimal fourFuKuanBiLi;
|
||||
private BigDecimal fiveFuKuanBiLi;
|
||||
private BigDecimal sixFuKuanBiLi;
|
||||
|
||||
}
|
@ -38,7 +38,7 @@ public class OrderYsDetailRespVO {
|
||||
|
||||
@Schema(description = "回款类型", example = "2")
|
||||
@ExcelProperty("回款类型")
|
||||
private String cgType;
|
||||
private Integer cgType;
|
||||
|
||||
@Schema(description = "应收id", example = "30630")
|
||||
@ExcelProperty("应收id")
|
||||
|
@ -38,11 +38,11 @@ public class TaskReportRespVO {
|
||||
private String projectSubName;
|
||||
|
||||
@Schema(description = "子项目编号")
|
||||
@ExcelProperty("子项目编号")
|
||||
// @ExcelProperty("子项目编号")
|
||||
private String projectSubCode;
|
||||
|
||||
@Schema(description = "派工单号")
|
||||
@ExcelProperty("派工单号")
|
||||
// @ExcelProperty("派工单号")
|
||||
private String dispatchCode;
|
||||
|
||||
@Schema(description = "零件名称")
|
||||
@ -50,7 +50,7 @@ public class TaskReportRespVO {
|
||||
private String materialName;
|
||||
|
||||
@Schema(description = "规格型号")
|
||||
@ExcelProperty("规格型号")
|
||||
// @ExcelProperty("规格型号")
|
||||
private String spec;
|
||||
|
||||
@Schema(description = "报工人")
|
||||
@ -70,11 +70,11 @@ public class TaskReportRespVO {
|
||||
private Integer amount;
|
||||
|
||||
@Schema(description = "开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("生产开始时间")
|
||||
// @ExcelProperty("生产开始时间")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
@Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("生产结束时间")
|
||||
// @ExcelProperty("生产结束时间")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
@Schema(description = "报工时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
|
@ -66,5 +66,22 @@ public class OrderYsDO extends BaseDO {
|
||||
* 备注
|
||||
*/
|
||||
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;
|
||||
|
||||
|
||||
|
||||
}
|
@ -62,4 +62,5 @@ public class PgMasterDO extends BaseDO {
|
||||
*/
|
||||
private LocalDateTime pgDatetime;
|
||||
|
||||
|
||||
}
|
@ -2,12 +2,21 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.orderys;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
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.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.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 com.chanko.yunxi.mes.module.heli.controller.admin.orderys.vo.*;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* 应收记录 Mapper
|
||||
@ -18,17 +27,40 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.orderys.vo.*;
|
||||
public interface OrderYsMapper extends BaseMapperX<OrderYsDO> {
|
||||
|
||||
default PageResult<OrderYsDO> selectPage(OrderYsPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<OrderYsDO>()
|
||||
.betweenIfPresent(OrderYsDO::getCreateTime, reqVO.getCreateTime())
|
||||
.eqIfPresent(OrderYsDO::getCode, reqVO.getCode())
|
||||
.likeIfPresent(OrderYsDO::getProjectName, reqVO.getProjectName())
|
||||
.betweenIfPresent(OrderYsDO::getCgTime, reqVO.getCgTime())
|
||||
.likeIfPresent(OrderYsDO::getCgKhname, reqVO.getCgKhname())
|
||||
.eqIfPresent(OrderYsDO::getCgYs, reqVO.getCgYs())
|
||||
.eqIfPresent(OrderYsDO::getCgYishou, reqVO.getCgYishou())
|
||||
.eqIfPresent(OrderYsDO::getCgTypee, reqVO.getCgTypee())
|
||||
.eqIfPresent(OrderYsDO::getRem, reqVO.getRem())
|
||||
.orderByDesc(OrderYsDO::getId));
|
||||
|
||||
MPJLambdaWrapper<OrderYsDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(OrderYsDO.class)
|
||||
.select("sum(i.amount) as amount")
|
||||
.leftJoin(
|
||||
"finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE'")
|
||||
.disableSubLogicDel()
|
||||
.groupBy(OrderYsDO::getId)
|
||||
.orderByDesc(OrderYsDO::getCreateTime);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
@ -27,7 +27,8 @@ public interface ProjectLeaderMapper extends BaseMapperX<ProjectLeaderDO> {
|
||||
MPJLambdaWrapper<ProjectLeaderDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(ProjectLeaderDO.class)
|
||||
.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());
|
||||
return selectPage(reqVO, query);
|
||||
|
||||
@ -38,6 +39,7 @@ public interface ProjectLeaderMapper extends BaseMapperX<ProjectLeaderDO> {
|
||||
query.selectAll(ProjectLeaderDO.class)
|
||||
.select("a.nickname as ownerName,a.username as userName")
|
||||
.leftJoin(AdminUserDO.class,"a",AdminUserDO::getId,ProjectLeaderDO::getOwner)
|
||||
.disableSubLogicDel()
|
||||
.orderByDesc( ProjectLeaderDO::getCreateTime)
|
||||
.last("limit 1");
|
||||
query.eq(ProjectLeaderDO::getType, type);
|
||||
|
@ -16,9 +16,11 @@ 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.Param;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@ -49,7 +51,6 @@ public interface TaskReportMapper extends BaseMapperX<TaskReportDO> {
|
||||
.leftJoin(AdminUserDO.class, "u2", AdminUserDO::getId, TaskReportDO::getUpdater)
|
||||
.orderByDesc(TaskReportDO::getId)
|
||||
.disableSubLogicDel();
|
||||
|
||||
query.eq(reqVO.getOwner() != null, TaskReportDO::getOwner, reqVO.getOwner())
|
||||
.like(!StringUtils.isEmpty(reqVO.getProjectCode()), ProjectOrderDO::getCode, reqVO.getProjectCode())
|
||||
.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.getOwnerName()), AdminUserDO::getNickname, reqVO.getOwnerName())
|
||||
.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);
|
||||
}
|
||||
public int deleteByDispatchDetailIds(List<Long> dispatchDetailIds);
|
||||
|
@ -1,7 +1,13 @@
|
||||
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.taskdispatch.TaskDispatchDetailDO;
|
||||
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 javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -34,6 +40,9 @@ public class BgMasterLineServiceImpl implements BgMasterLineService {
|
||||
private BgMasterLineMapper bgMasterLineMapper;
|
||||
@Resource
|
||||
private PgMasterLineMapper pgMasterLineMapper;
|
||||
@Resource
|
||||
private TaskDispatchDetailMapper taskDispatchDetailMapper;
|
||||
|
||||
|
||||
//结束本次报工
|
||||
@Override
|
||||
@ -72,8 +81,11 @@ public class BgMasterLineServiceImpl implements BgMasterLineService {
|
||||
pgMasterLineDO.setActive("END");
|
||||
pgMasterLineDO.setEntTime(currentDateTime);
|
||||
pgMasterLineMapper.updateById(pgMasterLineDO);
|
||||
//更新工时
|
||||
|
||||
//修改派工单明细表检验状态为Y
|
||||
LambdaUpdateWrapper<TaskDispatchDetailDO> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(TaskDispatchDetailDO::getId,pgMasterLineDO.getDispatchDetailId());
|
||||
wrapper.set(TaskDispatchDetailDO::getTestYn,"Y");
|
||||
taskDispatchDetailMapper.update(wrapper);
|
||||
}else{
|
||||
//不相等时只更新当前报工状态
|
||||
pgMasterLineDO.setActive("END");
|
||||
|
@ -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.framework.common.pojo.PageResult;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 财务发票 Service 接口
|
||||
*
|
||||
@ -52,4 +54,6 @@ public interface InvoiceService {
|
||||
PageResult<InvoiceDO> getInvoicePage(InvoicePageReqVO pageReqVO);
|
||||
|
||||
Long operate(InvoiceSaveReqVO operateReqVO);
|
||||
|
||||
List<InvoiceDO> getOrderYsInvoice(String code);
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
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.security.core.util.SecurityFrameworkUtils;
|
||||
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 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.module.heli.enums.ErrorCodeConstants.*;
|
||||
@ -103,4 +105,11 @@ public class InvoiceServiceImpl implements InvoiceService {
|
||||
return operateReqVO.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<InvoiceDO> getOrderYsInvoice(String code) {
|
||||
LambdaQueryWrapper<InvoiceDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(InvoiceDO::getOrderCode, code);
|
||||
return invoiceMapper.selectList(wrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ public class OrderYsServiceImpl implements OrderYsService {
|
||||
|
||||
@Override
|
||||
public OrderYsDO getOrderYs(Integer id) {
|
||||
return orderYsMapper.selectById(id);
|
||||
return orderYsMapper.selectOrderYsId(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -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.PlanSaveReqVO;
|
||||
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.plansub.PlanSubDO;
|
||||
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.taskreport.TaskReportMapper;
|
||||
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.serialnumber.SerialNumberService;
|
||||
import jodd.util.StringUtil;
|
||||
@ -102,8 +104,10 @@ public class PlanServiceImpl implements PlanService {
|
||||
private PlanTaskBomMapper planTaskBomMapper;
|
||||
@Resource
|
||||
private TaskDispatchMapper taskDispatchMapper;
|
||||
@Resource
|
||||
private TaskDispatchDetailMapper taskDispatchDetailMapper;
|
||||
@Resource
|
||||
private TaskDispatchDetailMapper taskDispatchDetailMapper;
|
||||
@Resource
|
||||
private CustomerService customerService;
|
||||
@Resource
|
||||
private TaskReportMapper taskReportMapper;
|
||||
@Override
|
||||
@ -229,21 +233,27 @@ private TaskReportMapper taskReportMapper;
|
||||
planDO.setChangeNum(0);
|
||||
// 设置生产计划状态
|
||||
planDO.setStatus(ProjectPlanStatusEnum.START.getCode());
|
||||
|
||||
ProjectOrderDO projectOrderDO = projectOrderMapper.selectById(projectId);
|
||||
CustomerDO customer = customerService.getCustomer(projectOrderDO.getCustomerId());
|
||||
// 月度流水号
|
||||
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
||||
serialNumberDO = serialNumberService.getSerialNumber(PROJECT_PLAN.name(), new SimpleDateFormat("yyyyMM").format(new Date()));
|
||||
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
||||
// SerialNumberDO serialNumberDO = new SerialNumberDO();
|
||||
// serialNumberDO = serialNumberService.getSerialNumber(PROJECT_PLAN.name(), new SimpleDateFormat("yyyyMM").format(new Date()));
|
||||
// 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();
|
||||
planDO.setCreator(userId.toString());
|
||||
planMapper.insert(planDO);
|
||||
// 回写序列记录
|
||||
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||
// serialNumberService.updateSerialNumber(serialNumberDO);
|
||||
|
||||
for(ProjectOrderSubDO item : projectOrderSubDOs){
|
||||
PlanSubDO planSubDO = new PlanSubDO();
|
||||
planSubDO.setProjectSubCode(customer.getBrief()+'-'+projectOrderDO.getProjectNameSim()+'-'+item.getNameSim());
|
||||
planSubDO.setProjectSubShortName(item.getNameSim());
|
||||
planSubDO.setProjectPlanId(planDO.getId());
|
||||
planSubDO.setProjectId(projectId);
|
||||
planSubDO.setProjectSubId(item.getId());
|
||||
|
@ -51,3 +51,7 @@ export const exportInvoice = async (params) => {
|
||||
export async function operateInvoice(data: InvoiceVO) {
|
||||
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 })
|
||||
}
|
||||
|
@ -42,3 +42,4 @@ export const deleteOrderYs = async (id: number) => {
|
||||
export const exportOrderYs = async (params) => {
|
||||
return await request.download({ url: `/heli/order-ys/export-excel`, params })
|
||||
}
|
||||
|
||||
|
@ -156,13 +156,13 @@ const detailDisabled = ref(false)
|
||||
|
||||
const formData: any = ref({
|
||||
id: undefined,
|
||||
businessType: "FINANCE_RECEIVE_INVOICE",
|
||||
businessType: businessType.value,
|
||||
orderId: undefined,
|
||||
number: undefined,
|
||||
type: undefined,
|
||||
type: "2",
|
||||
billingDate: undefined,
|
||||
amount: undefined,
|
||||
rate: undefined,
|
||||
rate: 13,
|
||||
remark: undefined,
|
||||
submitter: undefined,
|
||||
submitTime: undefined,
|
||||
@ -190,13 +190,13 @@ const formRules = reactive({
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
businessType: "FINANCE_RECEIVE_INVOICE",
|
||||
businessType: businessType.value,
|
||||
projectId: undefined,
|
||||
number: undefined,
|
||||
type: undefined,
|
||||
type:"2",
|
||||
billingDate: undefined,
|
||||
amount: undefined,
|
||||
rate: undefined,
|
||||
rate: 13,
|
||||
remark: undefined,
|
||||
submitter: undefined,
|
||||
submitTime: undefined,
|
||||
|
@ -10,11 +10,11 @@
|
||||
<el-row>
|
||||
|
||||
|
||||
<el-form-item label="项目编号" prop="code" width="200px">
|
||||
<el-input v-model="formData.code" placeholder="请输入项目编号" disabled class="!w-220px"/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="项目编号" prop="code" width="200px">-->
|
||||
<!-- <el-input v-model="formData.code" placeholder="请输入项目编号" disabled class="!w-220px"/>-->
|
||||
<!-- </el-form-item>-->
|
||||
<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 label="生成日期" prop="cgTime" >
|
||||
<el-date-picker
|
||||
@ -22,28 +22,32 @@
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择生成日期" disabled
|
||||
class="!w-220px"
|
||||
class="!w-230px"
|
||||
/>
|
||||
</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-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-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 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 label="已开票金额" prop="amount">
|
||||
<el-input v-model="formData.amount" placeholder="请输入已开票金额" disabled class="!w-230px"/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-form-item label="是否回款完成" prop="cgTypee" >
|
||||
<el-col :span="8" >
|
||||
<el-form-item label="回款状态" prop="cgTypee" >
|
||||
<el-select
|
||||
v-model="formData.cgTypee"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
class="!w-220px"
|
||||
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_YINGFU_MONEY)"
|
||||
@ -53,11 +57,61 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
<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-col>
|
||||
</el-row>
|
||||
</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">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">回款明细信息</span>
|
||||
@ -66,7 +120,7 @@
|
||||
<el-col>
|
||||
<el-card class="hl-incard">
|
||||
<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-form ref="OrderYsDetailSubFormRef" :model="formData.orderYsDetails" label-width="0" >
|
||||
<el-table :data="formData.orderYsDetails" class="hl-table" >
|
||||
@ -108,13 +162,13 @@
|
||||
<template #header> <span class="hl-table_header">*</span>回款金额 </template>
|
||||
<template #default="scope">
|
||||
<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>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="120" fixed="right">
|
||||
<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>
|
||||
</template>
|
||||
@ -135,12 +189,6 @@
|
||||
import * as OrderYsApi from '@/api/heli/orderys'
|
||||
import * as OrderYsDetailApi from '@/api/heli/orderysdetail'
|
||||
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 message = useMessage() // 消息弹窗
|
||||
@ -160,7 +208,13 @@ const formData = ref({
|
||||
cgTypee: undefined,
|
||||
orderYsDetails: [],
|
||||
rem: undefined,
|
||||
|
||||
amount:undefined,
|
||||
shouFuKuanBiLi:undefined,
|
||||
twoFuKuanBiLi:undefined,
|
||||
threeFuKuanBiLi:undefined,
|
||||
fourFuKuanBiLi:undefined,
|
||||
fiveFuKuanBiLi:undefined,
|
||||
sixFuKuanBiLi:undefined
|
||||
})
|
||||
// const subFormRules = reactive({
|
||||
// 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.cgYs&&formData.value.cgTypee==2){
|
||||
await message.confirm("已收金额小于应收金额,回款未完成,请确认")
|
||||
}else if (formData.value.cgYishou>=formData.value.cgYs&&formData.value.cgTypee==1){
|
||||
if (formData.value.cgYishou<formData.value.cgYs&&formData.value.cgTypee==1){
|
||||
await message.confirm("已收金额小于应收金额,回款未全部完成,请确认")
|
||||
}else if (formData.value.cgYishou>=formData.value.cgYs&&formData.value.cgTypee==2){
|
||||
await message.confirm("已收金额大于等于应收金额,回款已完成,请确认")
|
||||
}else if (formData.value.cgTypee==3){
|
||||
await message.confirm("已收金额不为0,不能选择未付款,请确认")
|
||||
}
|
||||
}else {
|
||||
if (formData.value.cgTypee==2){
|
||||
if (formData.value.cgTypee==2||formData.value.cgTypee==1){
|
||||
await message.confirm("未输入已收金额,回款未完成,请确认")
|
||||
}
|
||||
}
|
||||
|
@ -6,24 +6,24 @@
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="160px"
|
||||
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="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-240px"
|
||||
class="!w-200px"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
@ -33,10 +33,10 @@
|
||||
placeholder="请输入客户名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
class="!w-200px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否回款完成" prop="cgTypee">
|
||||
<el-form-item label="回款状态" prop="cgTypee">
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.cgTypee"-->
|
||||
<!-- placeholder="请输入是否回款完成"-->
|
||||
@ -48,7 +48,7 @@
|
||||
v-model="queryParams.cgTypee"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
class="!w-200px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_YINGFU_MONEY)"
|
||||
@ -87,13 +87,13 @@
|
||||
<ContentWrap>
|
||||
<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="cgTime"
|
||||
:formatter="dateFormatter"
|
||||
width="250px"
|
||||
/>
|
||||
<!-- <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="预计回款日期"
|
||||
@ -104,13 +104,14 @@
|
||||
/>
|
||||
<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="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">
|
||||
<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" width="120"/>
|
||||
<!-- <el-table-column label="项目编号" align="center" prop="code" width="180"/>-->
|
||||
<el-table-column label="备注" align="center" prop="rem" width="250"/>
|
||||
<el-table-column label="操作" align="center" width="180">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
@ -121,14 +122,14 @@
|
||||
>
|
||||
编辑
|
||||
</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>
|
||||
<!-- <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>
|
||||
|
@ -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' })
|
||||
|
||||
// 此处解决了当全局size为small的时候分页组件样式太大的问题
|
||||
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>
|
325
mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/record.vue
Normal file
325
mes-ui/mes-ui-admin-vue3/src/views/heli/orderys/record.vue
Normal 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>
|
@ -328,7 +328,7 @@ ref="subFormRef" :model="formData.projectPlanSubs" :rules="subFormRules"
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.projectSubShortName`" :rules="subFormRules.projectSubShortName" class="mb-0px!">
|
||||
<el-input
|
||||
v-model="row.projectSubShortName" placeholder="子项目简码"
|
||||
v-model="row.projectSubShortName" placeholder="子项目简码" disabled
|
||||
@change="(name) => handleSubCode(row, name)" />
|
||||
</el-form-item>
|
||||
</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">
|
||||
<template #default="{ row, $index }">
|
||||
<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"-->
|
||||
<!-- :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=='检验'||row.name=='预验收'">-->
|
||||
<!-- <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" />
|
||||
</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-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-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 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"/>-->
|
||||
</el-form-item>
|
||||
</template>
|
||||
@ -1456,7 +1489,7 @@ const handleCraftInfo = (val) =>{
|
||||
}
|
||||
}
|
||||
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) => {
|
||||
@ -1575,6 +1608,12 @@ const userInit2= ref()
|
||||
const userInit3= ref()
|
||||
const mergedArray= 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 mouldTypeList = ref()
|
||||
const customerInit = ref()
|
||||
@ -1584,7 +1623,6 @@ onMounted(async () => {
|
||||
userInit1.value = await UserApi.getDeptName("生产部")
|
||||
userInit2.value = await UserApi.getDeptName("检验部")
|
||||
userInit3.value=await UserApi.getDeptName("采购部")
|
||||
mergedArray.value = [...userInit1.value, ...userInit3.value];
|
||||
// 模具类型下拉列表数据
|
||||
mouldTypeList.value = await MouldTypeApi.getSimpList()
|
||||
// 设备信息下拉列表数据
|
||||
@ -1592,12 +1630,111 @@ onMounted(async () => {
|
||||
// 获取库存信息
|
||||
formData.value = await PlanApi.getPlan(query.id)
|
||||
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];
|
||||
if (zp) { // 自动过滤 null/undefined
|
||||
console.log(zp)
|
||||
mergedArray1.value.push({ id: zp.owner, username: zp.userName, nickname: zp.ownerName });
|
||||
console.log(mergedArray1.value)
|
||||
mergedArray2.value = [...userInit1.value, ...userInit3.value];
|
||||
mergedArray3.value = [...userInit1.value, ...userInit3.value];
|
||||
mergedArray4.value = [...userInit1.value, ...userInit3.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()
|
||||
var projectInit = await ProjectOrderApi.getProjectOrder(formData.value.projectId)
|
||||
@ -1651,10 +1788,67 @@ if (formData.value.editor==null||formData.value.editor==undefined){
|
||||
//装配的负责人
|
||||
const craftInfos = formData.value.craftInfos;
|
||||
for (var i = 0; i < craftInfos.length; i++) {
|
||||
if (craftInfos[i].name=='母模/毛坯'){
|
||||
if (craftInfos[i].owner==null||craftInfos[i].owner==undefined||craftInfos[i].owner==''){
|
||||
if (data&&data.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 (zp!=null){
|
||||
craftInfos[i].owner =zp.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) => {
|
||||
console.log("111"+currentIndex)
|
||||
formData.value.projectPlanSubs[currentIndex].blankOwner = newValue?.id
|
||||
}
|
||||
// 设备型号
|
||||
|
@ -75,15 +75,6 @@ class="!w-250px" :disabled="alterDisabled || detailDisabled || priceDisabled"
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</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-col :span="24">
|
||||
<el-form-item label="项目开始日期" prop="projectStartTime">
|
||||
@ -184,27 +175,13 @@ class="!w-250px" v-model="formData.businessMan"
|
||||
</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 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-col :span="24">
|
||||
 
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
 
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目结束日期" prop="projectEndTime">
|
||||
@ -275,10 +252,23 @@ class="!w-703px" :disabled="detailDisabled || priceDisabled"
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<!-- <el-row>-->
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item label="单据状态" prop="orderStatus">-->
|
||||
<!-- {{ getDictLabel(DICT_TYPE.HELI_PROJECT_ORDER_STATUS, formData.orderStatus) }}-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="单据状态" prop="orderStatus">
|
||||
{{ getDictLabel(DICT_TYPE.HELI_PROJECT_ORDER_STATUS, formData.orderStatus) }}
|
||||
<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>
|
||||
@ -294,12 +284,12 @@ class="!w-703px" :disabled="detailDisabled || priceDisabled"
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="性质" prop="property">
|
||||
<el-form-item label="所属业务线" prop="businessLine">
|
||||
<el-select
|
||||
class="!w-250px" :class="{ 'alter-class': fieldHasAlter('property') }"
|
||||
:disabled="detailDisabled || priceDisabled" v-model="formData.property" placeholder="请选择性质">
|
||||
class="!w-250px" v-model="formData.businessLine"
|
||||
placeholder="请选择所属业务线" :disabled="alterDisabled || detailDisabled">
|
||||
<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" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<template #header>
|
||||
<span>每日报工记录</span>
|
||||
</template>
|
||||
<ContentWrap>
|
||||
<ContentWrap class="fixed-search">
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
@ -12,13 +12,33 @@
|
||||
:inline="true"
|
||||
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-input
|
||||
v-model="queryParams.projectCode"
|
||||
placeholder="请输入项目编号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
class="!w-280px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
@ -27,7 +47,7 @@
|
||||
placeholder="请输入项目名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
class="!w-280px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="子项目名称" prop="projectSubName">
|
||||
@ -36,7 +56,7 @@
|
||||
placeholder="请输入子项目名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
class="!w-280px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="零件名称" prop="materialName">
|
||||
@ -45,7 +65,7 @@
|
||||
placeholder="请输入零件名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
class="!w-280px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="报工人" prop="OwnerName">
|
||||
@ -54,7 +74,7 @@
|
||||
placeholder="请输入报工人名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
class="!w-280px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item style="margin-left: 20px">
|
||||
@ -74,30 +94,30 @@
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table">
|
||||
<ContentWrap class="table-container">
|
||||
<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 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="projectSubName" width="180" />
|
||||
<!-- <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="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="procedureName" 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="startTime"
|
||||
width="400"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{formatDate(scope.row.startTime)+'~'+formatDate(scope.row.endTime)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- label="生产起止时间"-->
|
||||
<!-- align="center"-->
|
||||
<!-- prop="startTime"-->
|
||||
<!-- width="400"-->
|
||||
<!-- >-->
|
||||
<!-- <template #default="scope">-->
|
||||
<!-- {{formatDate(scope.row.startTime)+'~'+formatDate(scope.row.endTime)}}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
label="报工记录提交时间"
|
||||
align="center"
|
||||
@ -146,6 +166,7 @@ import {dateFormatter, formatDate} from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import * as TaskReportApi from '@/api/heli/taskreport'
|
||||
import TaskReportForm from './TaskReportForm.vue'
|
||||
import dayjs from "dayjs";
|
||||
|
||||
defineOptions({ name: 'TaskReport' })
|
||||
|
||||
@ -214,7 +235,17 @@ const handleDelete = async (id: number) => {
|
||||
await getList()
|
||||
} 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 () => {
|
||||
try {
|
||||
@ -240,6 +271,27 @@ const handleExport = async () => {
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
setDefaultDate()
|
||||
getList()
|
||||
})
|
||||
</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>
|
||||
|
Loading…
Reference in New Issue
Block a user