应收应付修改
This commit is contained in:
parent
185322296c
commit
f51339f806
@ -58,7 +58,7 @@ public class InvoiceController {
|
|||||||
@OperateLog(enable = false)
|
@OperateLog(enable = false)
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public CommonResult operate(@Valid @RequestBody InvoiceSaveReqVO operateReqVO) {
|
public CommonResult operate(@Valid @RequestBody InvoiceSaveReqVO operateReqVO) {
|
||||||
return success(invoiceService.operate(operateReqVO));
|
return invoiceService.operate(operateReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("/delete")
|
@DeleteMapping("/delete")
|
||||||
|
@ -87,4 +87,6 @@ public class InvoiceRespVO {
|
|||||||
|
|
||||||
@Schema(description = "订单编号")
|
@Schema(description = "订单编号")
|
||||||
private String orderCode;
|
private String orderCode;
|
||||||
|
@Schema(description = "订单编号")
|
||||||
|
private Long cgOrderIdId;
|
||||||
}
|
}
|
||||||
|
@ -142,5 +142,10 @@ public class ProcessDesignRespVO {
|
|||||||
private String reReason;
|
private String reReason;
|
||||||
@Schema(description = "返工日期")
|
@Schema(description = "返工日期")
|
||||||
private LocalDateTime reTime;
|
private LocalDateTime reTime;
|
||||||
|
private String blankDeferred;
|
||||||
|
private String deferred3d;
|
||||||
|
private String deferred2d;
|
||||||
|
private String blankDelayReason;
|
||||||
|
private String delayReason2d;
|
||||||
|
private String delayReason3d;
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ public class InvoiceDO extends BaseDO {
|
|||||||
*
|
*
|
||||||
* 枚举 {@link TODO heli_invoice_type 对应的类}
|
* 枚举 {@link TODO heli_invoice_type 对应的类}
|
||||||
*/
|
*/
|
||||||
private String type;
|
private Integer type;
|
||||||
/**
|
/**
|
||||||
* 开票日期
|
* 开票日期
|
||||||
*/
|
*/
|
||||||
|
@ -157,4 +157,21 @@ public class ProcessDesignDO extends BaseDO {
|
|||||||
|
|
||||||
private String reReason;
|
private String reReason;
|
||||||
private LocalDateTime reTime;
|
private LocalDateTime reTime;
|
||||||
|
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String blankDeferred;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String deferred3d;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String deferred2d;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String blankDelayReason;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String delayReason2d;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String delayReason3d;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ public interface OrderYfMapper extends BaseMapperX<OrderYfDO> {
|
|||||||
" ELSE 2 " + // 其他情况
|
" ELSE 2 " + // 其他情况
|
||||||
"END AS receivingStatus")
|
"END AS receivingStatus")
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
"finance_invoice i ON i.order_code = t.cg_order_num AND i.business_type = 'FINANCE_RECEIVE_INVOICE' AND i.status !='3'")
|
"finance_invoice i ON i.order_code = t.cg_order_num AND i.deleted=0 and i.tenant_id=2 and i.business_type = 'FINANCE_RECEIVE_INVOICE' AND i.status !='3'")
|
||||||
.leftJoin(PurchaseOrderNoDO.class,"p", PurchaseOrderNoDO::getPurchaseNo, OrderYfDO::getCgOrderNum)
|
.leftJoin(PurchaseOrderNoDO.class,"p", PurchaseOrderNoDO::getPurchaseNo, OrderYfDO::getCgOrderNum)
|
||||||
.leftJoin(PurchaseOrderNoDetailDO.class,"d", PurchaseOrderNoDetailDO::getPurchaseOrderId, PurchaseOrderNoDO::getId)
|
.leftJoin(PurchaseOrderNoDetailDO.class,"d", PurchaseOrderNoDetailDO::getPurchaseOrderId, PurchaseOrderNoDO::getId)
|
||||||
.disableSubLogicDel()
|
.disableSubLogicDel()
|
||||||
@ -57,7 +57,7 @@ public interface OrderYfMapper extends BaseMapperX<OrderYfDO> {
|
|||||||
.select("sum(i.amount) as amount")
|
.select("sum(i.amount) as amount")
|
||||||
.select("p.id as projectId","p.purchase_no as projectCode")
|
.select("p.id as projectId","p.purchase_no as projectCode")
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
"finance_invoice i ON i.order_code = t.cg_order_num AND i.business_type = 'FINANCE_RECEIVE_INVOICE' AND i.status !='3'")
|
"finance_invoice i ON i.order_code = t.cg_order_num AND i.deleted=0 and i.tenant_id=2 and i.business_type = 'FINANCE_RECEIVE_INVOICE' AND i.status !='3'")
|
||||||
.leftJoin(PurchaseOrderNoDO.class,"p", PurchaseOrderNoDO::getPurchaseNo, OrderYfDO::getCgOrderNum)
|
.leftJoin(PurchaseOrderNoDO.class,"p", PurchaseOrderNoDO::getPurchaseNo, OrderYfDO::getCgOrderNum)
|
||||||
.disableSubLogicDel();
|
.disableSubLogicDel();
|
||||||
query
|
query
|
||||||
|
@ -33,7 +33,7 @@ public interface OrderYsMapper extends BaseMapperX<OrderYsDO> {
|
|||||||
.select("sum(i.amount) as amount")
|
.select("sum(i.amount) as amount")
|
||||||
.select("p.delivery_status as deliveryStatus")
|
.select("p.delivery_status as deliveryStatus")
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
"finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'")
|
"finance_invoice i ON i.order_code = t.code AND i.deleted=0 and i.tenant_id=2 and i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'")
|
||||||
.leftJoin(ProjectOrderDO.class,"p", ProjectOrderDO::getCode, OrderYsDO::getCode)
|
.leftJoin(ProjectOrderDO.class,"p", ProjectOrderDO::getCode, OrderYsDO::getCode)
|
||||||
.disableSubLogicDel()
|
.disableSubLogicDel()
|
||||||
.groupBy(OrderYsDO::getId)
|
.groupBy(OrderYsDO::getId)
|
||||||
@ -56,7 +56,7 @@ public interface OrderYsMapper extends BaseMapperX<OrderYsDO> {
|
|||||||
.select("p.four_Fu_Kuan as fourFuKuan","p.five_Fu_Kuan as fiveFuKuan","p.six_Fu_Kuan as sixFuKuan")
|
.select("p.four_Fu_Kuan as fourFuKuan","p.five_Fu_Kuan as fiveFuKuan","p.six_Fu_Kuan as sixFuKuan")
|
||||||
.select("p.code as projectCode,p.id as projectId")
|
.select("p.code as projectCode,p.id as projectId")
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
"finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'")
|
"finance_invoice i ON i.order_code = t.code AND i.deleted=0 and i.tenant_id=2 and i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'")
|
||||||
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getCode, OrderYsDO::getCode)
|
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getCode, OrderYsDO::getCode)
|
||||||
.disableSubLogicDel();
|
.disableSubLogicDel();
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.service.invoice;
|
package com.chanko.yunxi.mes.module.heli.service.invoice;
|
||||||
|
|
||||||
import javax.validation.*;
|
import javax.validation.*;
|
||||||
|
|
||||||
|
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
|
||||||
import com.chanko.yunxi.mes.module.heli.controller.admin.invoice.vo.*;
|
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;
|
||||||
@ -53,7 +55,7 @@ public interface InvoiceService {
|
|||||||
*/
|
*/
|
||||||
PageResult<InvoiceDO> getInvoicePage(InvoicePageReqVO pageReqVO);
|
PageResult<InvoiceDO> getInvoicePage(InvoicePageReqVO pageReqVO);
|
||||||
|
|
||||||
Long operate(InvoiceSaveReqVO operateReqVO);
|
CommonResult operate(InvoiceSaveReqVO operateReqVO);
|
||||||
|
|
||||||
List<InvoiceDO> getOrderYsInvoice(String code);
|
List<InvoiceDO> getOrderYsInvoice(String code);
|
||||||
|
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.service.invoice;
|
package com.chanko.yunxi.mes.module.heli.service.invoice;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
|
||||||
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.dal.dataobject.orderysdetail.OrderYsDetailDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.orderysdetail.OrderYsDetailMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.enums.InvoiceStatusEnum;
|
import com.chanko.yunxi.mes.module.heli.enums.InvoiceStatusEnum;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -16,8 +20,11 @@ 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.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
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.*;
|
||||||
@ -33,6 +40,9 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private InvoiceMapper invoiceMapper;
|
private InvoiceMapper invoiceMapper;
|
||||||
|
@Resource
|
||||||
|
private OrderYsDetailMapper orderYsDetailMapper;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createInvoice(InvoiceSaveReqVO createReqVO) {
|
public Long createInvoice(InvoiceSaveReqVO createReqVO) {
|
||||||
@ -88,7 +98,7 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long operate(InvoiceSaveReqVO operateReqVO) {
|
public CommonResult operate(InvoiceSaveReqVO operateReqVO) {
|
||||||
OperateTypeEnum operateTypeEnum = OperateTypeEnum.valueOf(operateReqVO.getActive());
|
OperateTypeEnum operateTypeEnum = OperateTypeEnum.valueOf(operateReqVO.getActive());
|
||||||
if(operateTypeEnum == OperateTypeEnum.SUBMIT){
|
if(operateTypeEnum == OperateTypeEnum.SUBMIT){
|
||||||
operateReqVO.setSubmitter(SecurityFrameworkUtils.getLoginUser().getId())
|
operateReqVO.setSubmitter(SecurityFrameworkUtils.getLoginUser().getId())
|
||||||
@ -97,12 +107,47 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
operateReqVO.setCanceller(SecurityFrameworkUtils.getLoginUser().getId())
|
operateReqVO.setCanceller(SecurityFrameworkUtils.getLoginUser().getId())
|
||||||
.setCancelTime(LocalDateTime.now());
|
.setCancelTime(LocalDateTime.now());
|
||||||
}
|
}
|
||||||
|
System.out.println("FINANCE_MAKE_INVOICE".equals(operateReqVO.getBusinessType()));
|
||||||
|
if ("FINANCE_MAKE_INVOICE".equals(operateReqVO.getBusinessType())){
|
||||||
|
if (ObjectUtil.isNotEmpty(operateReqVO.getCgOrderIdId())) {
|
||||||
|
OrderYsDetailDO orderYsDetailDO = orderYsDetailMapper.selectById(operateReqVO.getCgOrderIdId());
|
||||||
|
if (ObjectUtil.isNotEmpty(orderYsDetailDO)){
|
||||||
|
LambdaQueryWrapper<InvoiceDO> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(InvoiceDO::getCgOrderIdId, operateReqVO.getCgOrderIdId());
|
||||||
|
if (ObjectUtil.isNotEmpty(operateReqVO.getId())) {
|
||||||
|
wrapper.ne(InvoiceDO::getId, operateReqVO.getId());
|
||||||
|
List<InvoiceDO> invoiceDOS = invoiceMapper.selectList(wrapper);
|
||||||
|
BigDecimal sum = invoiceDOS.stream()
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空对象
|
||||||
|
.map(InvoiceDO::getAmount)
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空值
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
|
||||||
|
if (sum.add(operateReqVO.getAmount()).compareTo(orderYsDetailDO.getCgYishou())>0){
|
||||||
|
return CommonResult.error(400,"已开发票"+sum.setScale(2, RoundingMode.HALF_UP)+"+本次开票"+operateReqVO.getAmount().setScale(2, RoundingMode.HALF_UP)+">回款金额"+orderYsDetailDO.getCgYishou().setScale(2, RoundingMode.HALF_UP)+"请确认!");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
List<InvoiceDO> invoiceDOS = invoiceMapper.selectList(wrapper);
|
||||||
|
BigDecimal sum=BigDecimal.ZERO;
|
||||||
|
if (ObjectUtil.isNotEmpty(invoiceDOS)){
|
||||||
|
sum = invoiceDOS.stream()
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空对象
|
||||||
|
.map(InvoiceDO::getAmount)
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空值
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
|
||||||
|
}
|
||||||
|
if (sum.add(operateReqVO.getAmount()).compareTo(orderYsDetailDO.getCgYishou())>0){
|
||||||
|
return CommonResult.error(400,"已开发票"+sum+"+本次开票"+operateReqVO.getAmount()+">回款金额"+orderYsDetailDO.getCgYishou().setScale(2, RoundingMode.HALF_UP)+"请确认!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if(operateReqVO.getId() == null){
|
if(operateReqVO.getId() == null){
|
||||||
operateReqVO.setId(createInvoice(operateReqVO));
|
operateReqVO.setId(createInvoice(operateReqVO));
|
||||||
}else{
|
}else{
|
||||||
updateInvoice(operateReqVO);
|
updateInvoice(operateReqVO);
|
||||||
}
|
}
|
||||||
return operateReqVO.getId();
|
return CommonResult.success(operateReqVO.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.service.orderyfdetail;
|
package com.chanko.yunxi.mes.module.heli.service.orderyfdetail;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderyf.OrderYfDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderys.OrderYsDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderysdetail.OrderYsDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderysdetail.OrderYsDetailDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.orderyf.OrderYfMapper;
|
||||||
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;
|
||||||
@ -30,6 +33,8 @@ public class OrderYfDetailServiceImpl implements OrderYfDetailService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private OrderYfDetailMapper orderYfDetailMapper;
|
private OrderYfDetailMapper orderYfDetailMapper;
|
||||||
|
@Resource
|
||||||
|
private OrderYfMapper orderYfMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer createOrderYfDetail(OrderYfDetailSaveReqVO createReqVO) {
|
public Integer createOrderYfDetail(OrderYfDetailSaveReqVO createReqVO) {
|
||||||
@ -53,6 +58,10 @@ public class OrderYfDetailServiceImpl implements OrderYfDetailService {
|
|||||||
public void deleteOrderYfDetail(Integer id) {
|
public void deleteOrderYfDetail(Integer id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateOrderYfDetailExists(id);
|
validateOrderYfDetailExists(id);
|
||||||
|
OrderYfDetailDO orderYfDetailDO = orderYfDetailMapper.selectById(id);
|
||||||
|
OrderYfDO orderYfDO = orderYfMapper.selectById(orderYfDetailDO.getCgId());
|
||||||
|
orderYfDO.setCgYifu(orderYfDO.getCgYifu().subtract(orderYfDetailDO.getCgYifu()));
|
||||||
|
orderYfMapper.updateById(orderYfDO);
|
||||||
// 删除
|
// 删除
|
||||||
orderYfDetailMapper.deleteById(id);
|
orderYfDetailMapper.deleteById(id);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.service.orderysdetail;
|
package com.chanko.yunxi.mes.module.heli.service.orderysdetail;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.orderys.OrderYsDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.orderys.OrderYsMapper;
|
||||||
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;
|
||||||
@ -29,6 +31,8 @@ public class OrderYsDetailServiceImpl implements OrderYsDetailService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private OrderYsDetailMapper orderYsDetailMapper;
|
private OrderYsDetailMapper orderYsDetailMapper;
|
||||||
|
@Resource
|
||||||
|
private OrderYsMapper orderYsMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer createOrderYsDetail(OrderYsDetailSaveReqVO createReqVO) {
|
public Integer createOrderYsDetail(OrderYsDetailSaveReqVO createReqVO) {
|
||||||
@ -52,6 +56,10 @@ public class OrderYsDetailServiceImpl implements OrderYsDetailService {
|
|||||||
public void deleteOrderYsDetail(Integer id) {
|
public void deleteOrderYsDetail(Integer id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateOrderYsDetailExists(id);
|
validateOrderYsDetailExists(id);
|
||||||
|
OrderYsDetailDO orderYsDetailDO = orderYsDetailMapper.selectById(id);
|
||||||
|
OrderYsDO orderYsDO = orderYsMapper.selectById(orderYsDetailDO.getCgId());
|
||||||
|
orderYsDO.setCgYishou(orderYsDO.getCgYishou().subtract(orderYsDetailDO.getCgYishou()));
|
||||||
|
orderYsMapper.updateById(orderYsDO);
|
||||||
// 删除
|
// 删除
|
||||||
orderYsDetailMapper.deleteById(id);
|
orderYsDetailMapper.deleteById(id);
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignPro
|
|||||||
import com.chanko.yunxi.mes.module.heli.enums.ProcessDesignTypeEnum;
|
import com.chanko.yunxi.mes.module.heli.enums.ProcessDesignTypeEnum;
|
||||||
import com.chanko.yunxi.mes.module.heli.enums.WarningEnum;
|
import com.chanko.yunxi.mes.module.heli.enums.WarningEnum;
|
||||||
import com.chanko.yunxi.mes.module.heli.vo.WarningMessageVO;
|
import com.chanko.yunxi.mes.module.heli.vo.WarningMessageVO;
|
||||||
|
import org.apache.commons.lang3.time.DateUtils;
|
||||||
import org.springframework.security.access.method.P;
|
import org.springframework.security.access.method.P;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -34,7 +35,9 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -271,6 +274,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
|
|||||||
if(ProcessDesignTypeEnum.BLUEPRINT_WORKBLANK.name().equals(processDesign.getProcessDesignType())){
|
if(ProcessDesignTypeEnum.BLUEPRINT_WORKBLANK.name().equals(processDesign.getProcessDesignType())){
|
||||||
processDesignDO.setBlankDate(processDesign.getBlankDate())
|
processDesignDO.setBlankDate(processDesign.getBlankDate())
|
||||||
.setStartBlankDate(processDesign.getStartBlankDate())
|
.setStartBlankDate(processDesign.getStartBlankDate())
|
||||||
|
.setBlankDelayReason(processDesign.getDelayReason())
|
||||||
.setBlankOwnerName(processDesign.getBlankOwnerName());
|
.setBlankOwnerName(processDesign.getBlankOwnerName());
|
||||||
LambdaQueryWrapper<ProcessDesignProgressDO> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ProcessDesignProgressDO> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId());
|
wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId());
|
||||||
@ -284,9 +288,39 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
|
|||||||
processDesignDO.setProgressBlank("进行中");
|
processDesignDO.setProgressBlank("进行中");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ObjectUtil.isNotEmpty(processDesign.getBlankDate())){
|
||||||
|
if (processDesign.getIsOverProcess()==1){
|
||||||
|
LambdaQueryWrapper<ProcessDesignProgressDO> wrapper1 = new LambdaQueryWrapper<>();
|
||||||
|
wrapper1.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId());
|
||||||
|
wrapper1.orderByDesc(ProcessDesignProgressDO::getEndTime);
|
||||||
|
wrapper1.last("limit 1");
|
||||||
|
ProcessDesignProgressDO processDesignProgressDO1 = processDesignProgressMapper.selectOne(wrapper1);
|
||||||
|
if (compareDateParts(processDesignProgressDO1.getEndTime().toInstant()
|
||||||
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDateTime(),processDesign.getBlankDate())>0){
|
||||||
|
processDesignDO.setBlankDeferred("是");
|
||||||
|
}else {
|
||||||
|
processDesignDO.setBlankDeferred("否");
|
||||||
|
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if (compareDateParts(LocalDateTime.now(),processDesign.getBlankDate())>0){
|
||||||
|
processDesignDO.setBlankDeferred("是");
|
||||||
|
}else {
|
||||||
|
processDesignDO.setBlankDeferred("否");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
processDesignDO.setBlankDeferred("否");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}else if(ProcessDesignTypeEnum.BLUEPRINT_3D.name().equals(processDesign.getProcessDesignType())){
|
}else if(ProcessDesignTypeEnum.BLUEPRINT_3D.name().equals(processDesign.getProcessDesignType())){
|
||||||
processDesignDO.setThreeDimDate(processDesign.getThreeDimDate())
|
processDesignDO.setThreeDimDate(processDesign.getThreeDimDate())
|
||||||
.setStartThreeDimDate(processDesign.getStartThreeDimDate())
|
.setStartThreeDimDate(processDesign.getStartThreeDimDate())
|
||||||
|
.setDelayReason3d(processDesign.getDelayReason())
|
||||||
.setThreeDimOwnerName(processDesign.getThreeDimOwnerName());
|
.setThreeDimOwnerName(processDesign.getThreeDimOwnerName());
|
||||||
LambdaQueryWrapper<ProcessDesignProgressDO> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ProcessDesignProgressDO> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId());
|
wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId());
|
||||||
@ -301,9 +335,37 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
|
|||||||
processDesignDO.setProgress3d("进行中");
|
processDesignDO.setProgress3d("进行中");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (ObjectUtil.isNotEmpty(processDesign.getThreeDimDate())){
|
||||||
|
if (processDesign.getIsOverProcess()==1){
|
||||||
|
LambdaQueryWrapper<ProcessDesignProgressDO> wrapper1 = new LambdaQueryWrapper<>();
|
||||||
|
wrapper1.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId());
|
||||||
|
wrapper1.orderByDesc(ProcessDesignProgressDO::getEndTime);
|
||||||
|
wrapper1.last("limit 1");
|
||||||
|
ProcessDesignProgressDO processDesignProgressDO1 = processDesignProgressMapper.selectOne(wrapper1);
|
||||||
|
if (compareDateParts(processDesignProgressDO1.getEndTime().toInstant()
|
||||||
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDateTime(),processDesign.getThreeDimDate())>0){
|
||||||
|
processDesignDO.setDeferred3d("是");
|
||||||
|
}else {
|
||||||
|
processDesignDO.setDeferred3d("否");
|
||||||
|
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if (compareDateParts(LocalDateTime.now(),processDesign.getThreeDimDate())>0){
|
||||||
|
processDesignDO.setDeferred3d("是");
|
||||||
|
}else {
|
||||||
|
processDesignDO.setDeferred3d("否");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
processDesignDO.setDeferred3d("否");
|
||||||
|
}
|
||||||
|
|
||||||
}else if(ProcessDesignTypeEnum.BLUEPRINT_2D.name().equals(processDesign.getProcessDesignType())){
|
}else if(ProcessDesignTypeEnum.BLUEPRINT_2D.name().equals(processDesign.getProcessDesignType())){
|
||||||
processDesignDO.setTwoDimDate(processDesign.getTwoDimDate())
|
processDesignDO.setTwoDimDate(processDesign.getTwoDimDate())
|
||||||
.setStartTwoDimDate(processDesign.getStartTwoDimDate())
|
.setStartTwoDimDate(processDesign.getStartTwoDimDate())
|
||||||
|
.setDelayReason2d(processDesign.getDelayReason())
|
||||||
.setTwoDimOwnerName(processDesign.getTwoDimOwnerName());
|
.setTwoDimOwnerName(processDesign.getTwoDimOwnerName());
|
||||||
LambdaQueryWrapper<ProcessDesignProgressDO> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ProcessDesignProgressDO> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId());
|
wrapper.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId());
|
||||||
@ -317,6 +379,31 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
|
|||||||
processDesignDO.setProgress2d("进行中");
|
processDesignDO.setProgress2d("进行中");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (ObjectUtil.isNotEmpty(processDesign.getTwoDimDate())){
|
||||||
|
if (processDesign.getIsOverProcess()==1){
|
||||||
|
LambdaQueryWrapper<ProcessDesignProgressDO> wrapper1 = new LambdaQueryWrapper<>();
|
||||||
|
wrapper1.eq(ProcessDesignProgressDO::getProcessDesignId, processDesign.getId());
|
||||||
|
wrapper1.orderByDesc(ProcessDesignProgressDO::getEndTime);
|
||||||
|
wrapper1.last("limit 1");
|
||||||
|
ProcessDesignProgressDO processDesignProgressDO1 = processDesignProgressMapper.selectOne(wrapper1);
|
||||||
|
if (compareDateParts(processDesignProgressDO1.getEndTime().toInstant()
|
||||||
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDateTime(),processDesign.getTwoDimDate())>0){
|
||||||
|
processDesignDO.setDeferred2d("是");
|
||||||
|
}else {
|
||||||
|
processDesignDO.setDeferred2d("否");
|
||||||
|
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if (compareDateParts(LocalDateTime.now(),processDesign.getTwoDimDate())>0){
|
||||||
|
processDesignDO.setDeferred2d("是");
|
||||||
|
}else {
|
||||||
|
processDesignDO.setDeferred2d("否");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
processDesignDO.setDeferred2d("否");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -338,6 +425,14 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
|
|||||||
}
|
}
|
||||||
return processDesignDOPageResult;
|
return processDesignDOPageResult;
|
||||||
}
|
}
|
||||||
|
public int compareDateParts(LocalDateTime dt1, LocalDateTime dt2) {
|
||||||
|
// 提取日期部分
|
||||||
|
LocalDate date1 = dt1.toLocalDate();
|
||||||
|
LocalDate date2 = dt2.toLocalDate();
|
||||||
|
|
||||||
|
// 使用compareTo比较
|
||||||
|
return date1.compareTo(date2);
|
||||||
|
}
|
||||||
|
|
||||||
// ==================== 子表(工艺设计进度) ====================
|
// ==================== 子表(工艺设计进度) ====================
|
||||||
|
|
||||||
|
@ -24,10 +24,11 @@
|
|||||||
</select>
|
</select>
|
||||||
<select id="StandardPartsCost" resultType="java.math.BigDecimal">
|
<select id="StandardPartsCost" resultType="java.math.BigDecimal">
|
||||||
|
|
||||||
SELECT ROUND(sum(o.estimated_price*ROUND( bd.amount/ o.purchase_amount, 2)),2) cost
|
SELECT ROUND(sum(o.estimated_price * ROUND((bd.amount*d.amount) / o.purchase_amount, 2)), 2) cost
|
||||||
FROM pro_process_bom bom
|
FROM pro_process_bom bom
|
||||||
left join pro_process_bom_detail bd on bd.bom_id=bom.id and bd.deleted=0 and bd.tenant_id=2
|
left join pro_process_bom_detail bd on bd.bom_id=bom.id and bd.deleted=0 and bd.tenant_id=2
|
||||||
left join project_purchase_order_no_detail o on o.boom_detail_id=bd.id and o.deleted=0 and o.tenant_id=2
|
left join project_purchase_order_no_detail o on o.boom_detail_id=bd.id and o.deleted=0 and o.tenant_id=2
|
||||||
|
left join project_sale_order_sub d on d.id=bom.project_sub_id and d.deleted = 0 AND d.tenant_id = 2
|
||||||
where bom.deleted=0 and bd.type=1 and bom.project_id=#{id} and bom.project_sub_id=#{projectSubId}
|
where bom.deleted=0 and bd.type=1 and bom.project_id=#{id} and bom.project_sub_id=#{projectSubId}
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
@ -16,6 +16,7 @@ export interface InvoiceVO {
|
|||||||
canceller: number
|
canceller: number
|
||||||
cancelTime: Date
|
cancelTime: Date
|
||||||
status: number
|
status: number
|
||||||
|
cgOrderIdId:number
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询财务发票分页
|
// 查询财务发票分页
|
||||||
|
@ -106,7 +106,7 @@
|
|||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button link type="primary" size="small" @click.prevent="invoices(scope.row.id)" >
|
<el-button link type="primary" size="small" @click.prevent="invoices(scope.row.id)" >
|
||||||
开票
|
发票
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -118,7 +118,7 @@
|
|||||||
</el-card>
|
</el-card>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
<Invoivce ref="formRefs" @success="getList" />
|
<Invoivce ref="formRefs" @success="getList" />
|
||||||
@ -129,6 +129,7 @@ import * as OrderYfApi from '@/api/heli/orderyf'
|
|||||||
import * as OrderYfDetailApi from '@/api/heli/orderyfdetail'
|
import * as OrderYfDetailApi from '@/api/heli/orderyfdetail'
|
||||||
import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from "@/utils/dict";
|
import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from "@/utils/dict";
|
||||||
import Invoivce from "@/views/heli/orderyf/invoivce.vue";
|
import Invoivce from "@/views/heli/orderyf/invoivce.vue";
|
||||||
|
import * as InvoiceApi from "@/api/heli/invoice";
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
@ -230,15 +231,32 @@ const onAddItem = () => {
|
|||||||
|
|
||||||
formData.value.orderYfDetails.push(row)
|
formData.value.orderYfDetails.push(row)
|
||||||
}
|
}
|
||||||
|
const queryParams = reactive({
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
id:undefined,
|
||||||
|
type:undefined,
|
||||||
|
})
|
||||||
/** 删除子项操作 */
|
/** 删除子项操作 */
|
||||||
const onDeleteItem = async (index) => {
|
const onDeleteItem = async (index) => {
|
||||||
if (index!=formData.value.orderYfDetails.length-1){
|
if (index!=formData.value.orderYfDetails.length-1){
|
||||||
message.error(`请从最后一条数据开始删除`)
|
message.error(`请从最后一条数据开始删除`)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
let deletedItems = formData.value.orderYfDetails.splice(index, 1)
|
let id = formData.value.orderYfDetails[index].id;
|
||||||
let id = deletedItems[0].id;
|
if (id){
|
||||||
if (id) await OrderYfDetailApi.deleteOrderYfDetail(id)
|
queryParams.id=id
|
||||||
|
queryParams.type="FINANCE_RECEIVE_INVOICE"
|
||||||
|
const data=await InvoiceApi.getInvoicePages(queryParams)
|
||||||
|
if (data.total>0){
|
||||||
|
message.error(`该付款发票已接收,不允许删除`)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
await OrderYfDetailApi.deleteOrderYfDetail(id)
|
||||||
|
}
|
||||||
|
formData.value.orderYfDetails.splice(index, 1)
|
||||||
|
|
||||||
|
|
||||||
formData.value.cgYifu=formData.value.orderYfDetails.reduce((sum, item) => sum + Number(item.cgYifu), 0);
|
formData.value.cgYifu=formData.value.orderYfDetails.reduce((sum, item) => sum + Number(item.cgYifu), 0);
|
||||||
}
|
}
|
||||||
const sum = async () => {
|
const sum = async () => {
|
||||||
@ -246,6 +264,11 @@ const sum = async () => {
|
|||||||
}
|
}
|
||||||
/** 提交表单 */
|
/** 提交表单 */
|
||||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||||
|
const cancel = async () => {
|
||||||
|
dialogVisible.value = false
|
||||||
|
emit('success')
|
||||||
|
|
||||||
|
}
|
||||||
const submitForm = async () => {
|
const submitForm = async () => {
|
||||||
// 校验表单
|
// 校验表单
|
||||||
// await formRef.value.validate()
|
// await formRef.value.validate()
|
||||||
|
@ -100,7 +100,7 @@
|
|||||||
width="180px"
|
width="180px"
|
||||||
v-if="false"
|
v-if="false"
|
||||||
/>
|
/>
|
||||||
<el-table-column label="采购订单编号" align="center" prop="cgOrderNum" />
|
<el-table-column label="采购订单编号" align="center" prop="cgOrderNum" width="180"/>
|
||||||
<!-- <el-table-column-->
|
<!-- <el-table-column-->
|
||||||
<!-- label="生成日期"-->
|
<!-- label="生成日期"-->
|
||||||
<!-- align="center"-->
|
<!-- align="center"-->
|
||||||
|
@ -134,7 +134,11 @@
|
|||||||
width="140"
|
width="140"
|
||||||
/>
|
/>
|
||||||
<el-table-column label="发票金额" align="center" prop="amount" />
|
<el-table-column label="发票金额" align="center" prop="amount" />
|
||||||
<el-table-column label="发票类型" align="center" prop="type" />
|
<el-table-column label="发票类型" align="center" prop="type" >
|
||||||
|
<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" />
|
<el-table-column label="税率(%)" align="center" prop="rate" />
|
||||||
<el-table-column label="订单" align="center" prop="orderCode" />
|
<el-table-column label="订单" align="center" prop="orderCode" />
|
||||||
<el-table-column label="备注" align="center" prop="remark" />
|
<el-table-column label="备注" align="center" prop="remark" />
|
||||||
@ -267,6 +271,7 @@ const resetForm = () => {
|
|||||||
|
|
||||||
// formRef.value?.resetFields()
|
// formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
const flag = ref(true)
|
||||||
const getList = async (id) => {
|
const getList = async (id) => {
|
||||||
queryParams.id=id
|
queryParams.id=id
|
||||||
queryParams.type="FINANCE_RECEIVE_INVOICE"
|
queryParams.type="FINANCE_RECEIVE_INVOICE"
|
||||||
@ -275,6 +280,8 @@ const getList = async (id) => {
|
|||||||
const data=await InvoiceApi.getInvoicePages(queryParams)
|
const data=await InvoiceApi.getInvoicePages(queryParams)
|
||||||
list.value = data.list
|
list.value = data.list
|
||||||
total.value = data.total
|
total.value = data.total
|
||||||
|
flag.value=true
|
||||||
|
uploadFiles.value=[]
|
||||||
} finally {
|
} finally {
|
||||||
loading1.value = false
|
loading1.value = false
|
||||||
}
|
}
|
||||||
@ -282,7 +289,6 @@ const getList = async (id) => {
|
|||||||
const emits = async () => {
|
const emits = async () => {
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
emit('success')
|
emit('success')
|
||||||
|
|
||||||
}
|
}
|
||||||
const queryData = async (id?: number) => {
|
const queryData = async (id?: number) => {
|
||||||
resetForm()
|
resetForm()
|
||||||
@ -321,6 +327,7 @@ const submitForm = async () => {
|
|||||||
|
|
||||||
// 上传附件
|
// 上传附件
|
||||||
if (uploadFiles.value.length > 0) {
|
if (uploadFiles.value.length > 0) {
|
||||||
|
flag.value=false
|
||||||
uploadData.value.businessId = dataId
|
uploadData.value.businessId = dataId
|
||||||
await uploadRef.value!.submit()
|
await uploadRef.value!.submit()
|
||||||
message.success(t('common.operationSuccess'))
|
message.success(t('common.operationSuccess'))
|
||||||
@ -329,6 +336,7 @@ const submitForm = async () => {
|
|||||||
commonStore.setStore('active', jumpActive)
|
commonStore.setStore('active', jumpActive)
|
||||||
commonStore.setStore('businessType', "FINANCE_RECEIVE_INVOICE")
|
commonStore.setStore('businessType', "FINANCE_RECEIVE_INVOICE")
|
||||||
resetForm();
|
resetForm();
|
||||||
|
uploadFiles.value=[]
|
||||||
getList(detailId.value)
|
getList(detailId.value)
|
||||||
}else{
|
}else{
|
||||||
message.success(t('common.operationSuccess'))
|
message.success(t('common.operationSuccess'))
|
||||||
@ -368,7 +376,7 @@ const handleAvatarSuccess: UploadProps['onSuccess'] = async (
|
|||||||
businessFileType:"FINANCE_RECEIVE_INVOICE"
|
businessFileType:"FINANCE_RECEIVE_INVOICE"
|
||||||
}
|
}
|
||||||
uploading.value = true;
|
uploading.value = true;
|
||||||
formData.value.attachments = (await getFilePage(attParams)).list
|
// formData.value.attachments = (await getFilePage(attParams)).list
|
||||||
// await reload()
|
// await reload()
|
||||||
uploading.value = false;
|
uploading.value = false;
|
||||||
|
|
||||||
@ -385,8 +393,6 @@ const uploadChange = (file, files) => {
|
|||||||
uploadFiles.value = files
|
uploadFiles.value = files
|
||||||
refreshAttachments(files)
|
refreshAttachments(files)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const open = async (id?: number,projectId,projectCode) => {
|
const open = async (id?: number,projectId,projectCode) => {
|
||||||
resetForm()
|
resetForm()
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
@ -396,6 +402,7 @@ const open = async (id?: number,projectId,projectCode) => {
|
|||||||
formData.value.orderId = projectId
|
formData.value.orderId = projectId
|
||||||
formData.value.orderCode = projectCode
|
formData.value.orderCode = projectCode
|
||||||
formData.value.cgOrderIdId=id
|
formData.value.cgOrderIdId=id
|
||||||
|
uploadFiles.value=[]
|
||||||
getList(id)
|
getList(id)
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -416,17 +423,18 @@ const handleDelete = async (id: number) => {
|
|||||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
|
||||||
const refreshAttachments = (files) => {
|
const refreshAttachments = (files) => {
|
||||||
formData.value.attachments = formData.value.attachments.filter((value, index, array) => {
|
if (flag.value){
|
||||||
return value.id
|
formData.value.attachments = formData.value.attachments.filter((value, index, array) => {
|
||||||
})
|
return value.id
|
||||||
|
})
|
||||||
for (let i = 0; i < files.length; i++) {
|
for (let i = 0; i < files.length; i++) {
|
||||||
let file = files[i]
|
let file = files[i]
|
||||||
file.createTime = new Date()
|
file.createTime = new Date()
|
||||||
formData.value.attachments.push(file)
|
formData.value.attachments.push(file)
|
||||||
|
}
|
||||||
|
// 排序
|
||||||
|
formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime)
|
||||||
}
|
}
|
||||||
// 排序
|
|
||||||
formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除附件
|
// 删除附件
|
||||||
|
@ -71,7 +71,7 @@
|
|||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-click="rowClick" highlight-current-row>
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-click="rowClick" highlight-current-row>
|
||||||
<el-table-column label="采购订单编号" align="center" prop="cgOrderNum"/>
|
<el-table-column label="采购订单编号" align="center" prop="cgOrderNum" width="180px"/>
|
||||||
|
|
||||||
<el-table-column label="供应商名称" align="center" prop="cgGysname" />
|
<el-table-column label="供应商名称" align="center" prop="cgGysname" />
|
||||||
<!-- <el-table-column-->
|
<!-- <el-table-column-->
|
||||||
@ -83,12 +83,35 @@
|
|||||||
<!-- />-->
|
<!-- />-->
|
||||||
<el-table-column label="应付金额(元)" align="center" prop="cgYf" />
|
<el-table-column label="应付金额(元)" align="center" prop="cgYf" />
|
||||||
<el-table-column label="已付金额(元)" align="center" prop="cgYifu" />
|
<el-table-column label="已付金额(元)" align="center" prop="cgYifu" />
|
||||||
|
<el-table-column label="已付款比例" align="center" >
|
||||||
|
<template #default="scope">
|
||||||
|
{{
|
||||||
|
scope.row.cgYifu&&scope.row.cgYf
|
||||||
|
? (Number(scope.row.cgYifu) * 100 / Number(scope.row.cgYf)).toFixed(0)
|
||||||
|
: '0'
|
||||||
|
}}%
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="已开票金额(元)" align="center" prop="amount" />
|
<el-table-column label="已开票金额(元)" align="center" prop="amount" />
|
||||||
|
<el-table-column label="已开票比例" align="center" >
|
||||||
|
<template #default="scope">
|
||||||
|
{{
|
||||||
|
scope.row.cgYf&&scope.row.cgYf
|
||||||
|
? (Number(scope.row.amount) * 100 / Number(scope.row.cgYf)).toFixed(0)
|
||||||
|
: '0'
|
||||||
|
}}%
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="付款状态" align="center" prop="cgTypee" >
|
<el-table-column label="付款状态" align="center" prop="cgTypee" >
|
||||||
<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="receivingStatus" min-width="150">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.HELI_PURCHASE_RECEIVING_STATUS" :value="scope.row.receivingStatus" />
|
||||||
|
</template>
|
||||||
|
</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" />
|
<el-table-column label="备注" align="center" prop="rem" />
|
||||||
<!-- <el-table-column label="操作" align="center" width="180">-->
|
<!-- <el-table-column label="操作" align="center" width="180">-->
|
||||||
|
@ -186,7 +186,7 @@
|
|||||||
</el-card>
|
</el-card>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
<Invoivce ref="formRefs" @success="getList" />
|
<Invoivce ref="formRefs" @success="getList" />
|
||||||
@ -198,12 +198,18 @@ import * as OrderYsDetailApi from '@/api/heli/orderysdetail'
|
|||||||
import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from "@/utils/dict";
|
import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from "@/utils/dict";
|
||||||
import Invoivce from "@/views/heli/orderys/invoivce.vue";
|
import Invoivce from "@/views/heli/orderys/invoivce.vue";
|
||||||
import {ref} from "vue";
|
import {ref} from "vue";
|
||||||
|
import * as InvoiceApi from "@/api/heli/invoice";
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const formRefs = ref()
|
const formRefs = ref()
|
||||||
const ids = ref()
|
const ids = ref()
|
||||||
|
const queryParams = reactive({
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
id:undefined,
|
||||||
|
type:undefined,
|
||||||
|
})
|
||||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
const dialogTitle = ref('') // 弹窗的标题
|
const dialogTitle = ref('') // 弹窗的标题
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
@ -294,9 +300,18 @@ const onDeleteItem = async (index) => {
|
|||||||
message.error(`请从最后一条数据开始删除`)
|
message.error(`请从最后一条数据开始删除`)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
let deletedItems = formData.value.orderYsDetails.splice(index, 1)
|
let id = formData.value.orderYsDetails[index].id;
|
||||||
let id = deletedItems[0].id;
|
if (id){
|
||||||
if (id) await OrderYsDetailApi.deleteOrderYsDetail(id)
|
queryParams.id=id
|
||||||
|
queryParams.type="FINANCE_MAKE_INVOICE"
|
||||||
|
const data=await InvoiceApi.getInvoicePages(queryParams)
|
||||||
|
if (data.total>0){
|
||||||
|
message.error(`该回款已开票,不允许删除`)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
await OrderYsDetailApi.deleteOrderYsDetail(id)
|
||||||
|
}
|
||||||
|
formData.value.orderYsDetails.splice(index, 1)
|
||||||
formData.value.cgYishou=formData.value.orderYsDetails.reduce((sum, item) => sum + Number(item.cgYishou), 0);
|
formData.value.cgYishou=formData.value.orderYsDetails.reduce((sum, item) => sum + Number(item.cgYishou), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -325,7 +340,12 @@ const sum = async () => {
|
|||||||
formData.value.cgYishou=formData.value.orderYsDetails.reduce((sum, item) => sum + Number(item.cgYishou), 0);
|
formData.value.cgYishou=formData.value.orderYsDetails.reduce((sum, item) => sum + Number(item.cgYishou), 0);
|
||||||
}
|
}
|
||||||
/** 提交表单 */
|
/** 提交表单 */
|
||||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||||
|
const cancel = async () => {
|
||||||
|
dialogVisible.value = false
|
||||||
|
emit('success')
|
||||||
|
|
||||||
|
}
|
||||||
const submitForm = async () => {
|
const submitForm = async () => {
|
||||||
// 校验表单
|
// 校验表单
|
||||||
// await formRef.value.validate()
|
// await formRef.value.validate()
|
||||||
@ -343,7 +363,36 @@ const submitForm = async () => {
|
|||||||
message.error('第'+(i+1)+'行回款金额不能为空')
|
message.error('第'+(i+1)+'行回款金额不能为空')
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (formData.value.orderYsDetails[i].cgType==1&&formData.value.shouFuKuan==null){
|
||||||
|
message.error('付款类型跟订单不一致,不允许添加')
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
if (formData.value.orderYsDetails[i].cgType==2&&formData.value.twoFuKuan==null){
|
||||||
|
message.error('付款类型跟订单不一致,不允许添加')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (formData.value.orderYsDetails[i].cgType==3&&formData.value.threeFuKuan==null){
|
||||||
|
message.error('付款类型跟订单不一致,不允许添加')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (formData.value.orderYsDetails[i].cgType==4&&formData.value.fourFuKuan==null){
|
||||||
|
message.error('付款类型跟订单不一致,不允许添加')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (formData.value.orderYsDetails[i].cgType==5&&formData.value.fiveFuKuan==null){
|
||||||
|
message.error('付款类型跟订单不一致,不允许添加')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (formData.value.orderYsDetails[i].cgType==6&&formData.value.sixFuKuan==null){
|
||||||
|
message.error('付款类型跟订单不一致,不允许添加')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (formData.value.cgYishou>=formData.value.cgYs){
|
||||||
|
message.error('已收金额大于应收金额,请确认')
|
||||||
|
return false
|
||||||
|
}
|
||||||
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==1){
|
if (formData.value.cgYishou<formData.value.cgYs&&formData.value.cgTypee==1){
|
||||||
await message.confirm("已收金额小于应收金额,回款未全部完成,请确认")
|
await message.confirm("已收金额小于应收金额,回款未全部完成,请确认")
|
||||||
|
@ -86,7 +86,7 @@
|
|||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<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" />
|
<el-table-column label="项目名称" align="center" prop="projectName" width="180"/>
|
||||||
<!-- <el-table-column-->
|
<!-- <el-table-column-->
|
||||||
<!-- label="生成日期"-->
|
<!-- label="生成日期"-->
|
||||||
<!-- align="center"-->
|
<!-- align="center"-->
|
||||||
|
@ -134,7 +134,11 @@
|
|||||||
width="140"
|
width="140"
|
||||||
/>
|
/>
|
||||||
<el-table-column label="发票金额" align="center" prop="amount" />
|
<el-table-column label="发票金额" align="center" prop="amount" />
|
||||||
<el-table-column label="发票类型" align="center" prop="type" />
|
<el-table-column label="发票类型" align="center" prop="type" >
|
||||||
|
<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" />
|
<el-table-column label="税率(%)" align="center" prop="rate" />
|
||||||
<el-table-column label="订单" align="center" prop="orderCode" />
|
<el-table-column label="订单" align="center" prop="orderCode" />
|
||||||
<el-table-column label="备注" align="center" prop="remark" />
|
<el-table-column label="备注" align="center" prop="remark" />
|
||||||
@ -199,6 +203,8 @@ const currentId = toRef(commonStore.getStore('id'))
|
|||||||
const businessType = toRef(commonStore.getStore('businessType'))
|
const businessType = toRef(commonStore.getStore('businessType'))
|
||||||
|
|
||||||
const formLoading = ref(false)
|
const formLoading = ref(false)
|
||||||
|
const flag = ref(true)
|
||||||
|
|
||||||
const dialogTitle = ref('')
|
const dialogTitle = ref('')
|
||||||
const detailDisabled = ref(false)
|
const detailDisabled = ref(false)
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
@ -276,6 +282,7 @@ const getList = async (id) => {
|
|||||||
const data=await InvoiceApi.getInvoicePages(queryParams)
|
const data=await InvoiceApi.getInvoicePages(queryParams)
|
||||||
list.value = data.list
|
list.value = data.list
|
||||||
total.value = data.total
|
total.value = data.total
|
||||||
|
flag.value=true
|
||||||
} finally {
|
} finally {
|
||||||
loading1.value = false
|
loading1.value = false
|
||||||
}
|
}
|
||||||
@ -317,11 +324,13 @@ const submitForm = async () => {
|
|||||||
// 提交请求
|
// 提交请求
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
|
console.log(formData.value)
|
||||||
const data = formData.value as unknown as InvoiceApi.InvoiceVO
|
const data = formData.value as unknown as InvoiceApi.InvoiceVO
|
||||||
let dataId = await InvoiceApi.operateInvoice(data)
|
let dataId = await InvoiceApi.operateInvoice(data)
|
||||||
|
|
||||||
// 上传附件
|
// 上传附件
|
||||||
if (uploadFiles.value.length > 0) {
|
if (uploadFiles.value.length > 0) {
|
||||||
|
flag.value=false
|
||||||
uploadData.value.businessId = dataId
|
uploadData.value.businessId = dataId
|
||||||
await uploadRef.value!.submit()
|
await uploadRef.value!.submit()
|
||||||
message.success(t('common.operationSuccess'))
|
message.success(t('common.operationSuccess'))
|
||||||
@ -329,6 +338,7 @@ const submitForm = async () => {
|
|||||||
commonStore.setStore('id', dataId)
|
commonStore.setStore('id', dataId)
|
||||||
commonStore.setStore('active', jumpActive)
|
commonStore.setStore('active', jumpActive)
|
||||||
commonStore.setStore('businessType', "FINANCE_MAKE_INVOICE")
|
commonStore.setStore('businessType', "FINANCE_MAKE_INVOICE")
|
||||||
|
uploadFiles.value=[]
|
||||||
resetForm();
|
resetForm();
|
||||||
getList(detailId.value)
|
getList(detailId.value)
|
||||||
}else{
|
}else{
|
||||||
@ -364,13 +374,16 @@ const handleAvatarSuccess: UploadProps['onSuccess'] = async (
|
|||||||
let attParams = {
|
let attParams = {
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 99,
|
pageSize: 99,
|
||||||
businessId: currentId.value,
|
businessId: null,
|
||||||
businessType: "FINANCE_MAKE_INVOICE",
|
businessType: "FINANCE_MAKE_INVOICE",
|
||||||
businessFileType:"FINANCE_MAKE_INVOICE"
|
businessFileType:"FINANCE_MAKE_INVOICE"
|
||||||
}
|
}
|
||||||
uploading.value = true;
|
uploading.value = true;
|
||||||
formData.value.attachments = (await getFilePage(attParams)).list
|
// formData.value.attachments = (await getFilePage(attParams)).list
|
||||||
// await reload()
|
// await reload()
|
||||||
|
// formData.value.attachments=[]
|
||||||
|
console.log(111)
|
||||||
|
console.log(formData.value.attachments)
|
||||||
uploading.value = false;
|
uploading.value = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -397,6 +410,7 @@ const open = async (id?: number,projectId,projectCode) => {
|
|||||||
formData.value.orderId = projectId
|
formData.value.orderId = projectId
|
||||||
formData.value.orderCode = projectCode
|
formData.value.orderCode = projectCode
|
||||||
formData.value.cgOrderIdId=id
|
formData.value.cgOrderIdId=id
|
||||||
|
uploadFiles.value=[]
|
||||||
getList(id)
|
getList(id)
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -417,10 +431,10 @@ const handleDelete = async (id: number) => {
|
|||||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
|
||||||
const refreshAttachments = (files) => {
|
const refreshAttachments = (files) => {
|
||||||
|
if (flag.value){
|
||||||
formData.value.attachments = formData.value.attachments.filter((value, index, array) => {
|
formData.value.attachments = formData.value.attachments.filter((value, index, array) => {
|
||||||
return value.id
|
return value.id
|
||||||
})
|
})
|
||||||
|
|
||||||
for (let i = 0; i < files.length; i++) {
|
for (let i = 0; i < files.length; i++) {
|
||||||
let file = files[i]
|
let file = files[i]
|
||||||
file.createTime = new Date()
|
file.createTime = new Date()
|
||||||
@ -428,6 +442,7 @@ const refreshAttachments = (files) => {
|
|||||||
}
|
}
|
||||||
// 排序
|
// 排序
|
||||||
formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime)
|
formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除附件
|
// 删除附件
|
||||||
|
@ -104,12 +104,35 @@
|
|||||||
/>
|
/>
|
||||||
<el-table-column label="应收金额(元)" align="center" prop="cgYs" />
|
<el-table-column label="应收金额(元)" align="center" prop="cgYs" />
|
||||||
<el-table-column label="已收金额(元)" align="center" prop="cgYishou" />
|
<el-table-column label="已收金额(元)" align="center" prop="cgYishou" />
|
||||||
|
<el-table-column label="已收款比例" align="center" >
|
||||||
|
<template #default="scope">
|
||||||
|
{{
|
||||||
|
scope.row.cgYishou&&scope.row.cgYs
|
||||||
|
? (Number(scope.row.cgYishou) * 100 / Number(scope.row.cgYs)).toFixed(0)
|
||||||
|
: '0'
|
||||||
|
}}%
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="已开票金额(元)" align="center" prop="amount" />
|
<el-table-column label="已开票金额(元)" align="center" prop="amount" />
|
||||||
|
<el-table-column label="已开票比例" align="center" >
|
||||||
|
<template #default="scope">
|
||||||
|
{{
|
||||||
|
scope.row.cgYs&&scope.row.cgYs
|
||||||
|
? (Number(scope.row.amount) * 100 / Number(scope.row.cgYs)).toFixed(0)
|
||||||
|
: '0'
|
||||||
|
}}%
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="回款状态" align="center" prop="cgTypee" >
|
<el-table-column label="回款状态" align="center" prop="cgTypee" >
|
||||||
<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="deliveryStatus" width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.HELI_DELIVERY_STATUS" :value="scope.row.deliveryStatus" />
|
||||||
|
</template>
|
||||||
|
</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"/>
|
<el-table-column label="备注" align="center" prop="rem"/>
|
||||||
<!-- <el-table-column label="操作" align="center" width="180">-->
|
<!-- <el-table-column label="操作" align="center" width="180">-->
|
||||||
|
@ -87,44 +87,62 @@
|
|||||||
<el-table-column fixed label="项目名称" align="center" prop="projectName" min-width="180" />
|
<el-table-column fixed label="项目名称" align="center" prop="projectName" min-width="180" />
|
||||||
<el-table-column fixed label="子项目名称" align="center" prop="projectSubName" min-width="180" />
|
<el-table-column fixed label="子项目名称" align="center" prop="projectSubName" min-width="180" />
|
||||||
<el-table-column label="毛坯负责人" align="center" prop="blankOwnerName" width="120"/>
|
<el-table-column label="毛坯负责人" align="center" prop="blankOwnerName" width="120"/>
|
||||||
<el-table-column label="毛坯最新进度" align="center" prop="progressBlank" min-width="140" />
|
<el-table-column label="毛坯最新进度" align="center" prop="progressBlank" min-width="140" >
|
||||||
<!-- <template #default="scope">-->
|
<!-- 使用 scoped slots 自定义单元格渲染 -->
|
||||||
<!-- {{!scope.row.progressBlank ? '' : (parseFloat(scope.row.progressBlank) + '%')}}-->
|
<template #default="{ row }">
|
||||||
<!-- </template>-->
|
<div
|
||||||
<!-- </el-table-column>-->
|
:style="getCellStyle(row.progressBlank)"
|
||||||
|
>
|
||||||
|
{{ row.progressBlank }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="毛坯计划截止日期" align="center" prop="blankDate" :formatter="dateFormatter2" min-width="180"/>
|
<el-table-column label="毛坯计划截止日期" align="center" prop="blankDate" :formatter="dateFormatter2" min-width="180"/>
|
||||||
<el-table-column label="毛坯是否延期" align="center" prop="blankDeferred" min-width="140">
|
<el-table-column label="毛坯是否延期" align="center" prop="blankDeferred" min-width="140"/>
|
||||||
<template #default="scope">
|
<el-table-column label="延期备注" align="center" prop="blankDelayReason" min-width="140"/>
|
||||||
<span v-if="scope.row.blankDate && (new Date().getTime() - 86400000 - new Date(formatDate(scope.row.blankDate, 'YYYY-MM-DD')).getTime() >= 0 && (!scope.row.progressBlank || parseFloat(scope.row.progressBlank) < 100))" style="color: red;">是</span>
|
<!-- <template #default="scope">-->
|
||||||
<span v-else>否</span>
|
<!-- <span v-if="scope.row.blankDate && (new Date().getTime() - 86400000 - new Date(formatDate(scope.row.blankDate, 'YYYY-MM-DD')).getTime() >= 0 && (!scope.row.progressBlank || parseFloat(scope.row.progressBlank) < 100))" style="color: red;">是</span>-->
|
||||||
</template>
|
<!-- <span v-else>否</span>-->
|
||||||
</el-table-column>
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
<el-table-column label="3D负责人" align="center" prop="threeDimOwnerName" min-width="120"/>
|
<el-table-column label="3D负责人" align="center" prop="threeDimOwnerName" min-width="120"/>
|
||||||
<el-table-column label="3D最新进度" align="center" prop="progress3d" min-width="140" />
|
<el-table-column label="3D最新进度" align="center" prop="progress3d" min-width="140" >
|
||||||
<!-- <template #default="scope">-->
|
<!-- 使用 scoped slots 自定义单元格渲染 -->
|
||||||
<!-- {{!scope.row.progress3d ? '' : (parseFloat(scope.row.progress3d) + '%')}}-->
|
<template #default="{ row }">
|
||||||
<!-- </template>-->
|
<div
|
||||||
<!-- </el-table-column>-->
|
:style="getCellStyle(row.progress3d)"
|
||||||
|
>
|
||||||
|
{{ row.progress3d }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="3D计划截止日期" align="center" prop="threeDimDate" :formatter="dateFormatter2" width="180"/>
|
<el-table-column label="3D计划截止日期" align="center" prop="threeDimDate" :formatter="dateFormatter2" width="180"/>
|
||||||
<el-table-column label="3D是否延期" align="center" prop="3dDeferred" min-width="140">
|
<el-table-column label="3D是否延期" align="center" prop="deferred3d" min-width="140"/>
|
||||||
<template #default="scope">
|
<el-table-column label="延期备注" align="center" prop="delayReason3d" min-width="140"/>
|
||||||
<span v-if="scope.row.threeDimDate && (new Date().getTime() - 86400000 - new Date(formatDate(scope.row.threeDimDate, 'YYYY-MM-DD')).getTime() >= 0 && (!scope.row.progress3d || parseFloat(scope.row.progress3d) < 100))" style="color: red;">是</span>
|
|
||||||
<span v-else>否</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="2D负责人" align="center" prop="twoDimOwnerName" min-width="120"/>
|
|
||||||
<el-table-column label="2D最新进度" align="center" prop="progress2d" min-width="140"/> >
|
|
||||||
<!-- <template #default="scope">-->
|
<!-- <template #default="scope">-->
|
||||||
<!-- {{!scope.row.progress2d ? '' : (parseFloat(scope.row.progress2d) + '%')}}-->
|
<!-- <span v-if="scope.row.threeDimDate && (new Date().getTime() - 86400000 - new Date(formatDate(scope.row.threeDimDate, 'YYYY-MM-DD')).getTime() >= 0 && (!scope.row.progress3d || parseFloat(scope.row.progress3d) < 100))" style="color: red;">是</span>-->
|
||||||
|
<!-- <span v-else>否</span>-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
<!-- </el-table-column>-->
|
<!-- </el-table-column>-->
|
||||||
<el-table-column label="2D计划截止日期" align="center" prop="twoDimDate" :formatter="dateFormatter2" min-width="180"/>
|
<el-table-column label="2D负责人" align="center" prop="twoDimOwnerName" min-width="120"/>
|
||||||
<el-table-column label="2D是否延期" align="center" prop="2dDeferred" min-width="140">
|
<el-table-column label="2D最新进度" align="center" prop="progress2d" min-width="140">
|
||||||
<template #default="scope">
|
<!-- 使用 scoped slots 自定义单元格渲染 -->
|
||||||
<span v-if="scope.row.twoDimDate && (new Date().getTime() - 86400000 - new Date(formatDate(scope.row.twoDimDate, 'YYYY-MM-DD')).getTime() >= 0 && (!scope.row.progress2d || parseFloat(scope.row.progress2d) < 100))" style="color: red;">是</span>
|
<template #default="{ row }">
|
||||||
<span v-else>否</span>
|
<div
|
||||||
</template>
|
:style="getCellStyle(row.progress2d)"
|
||||||
|
>
|
||||||
|
{{ row.progress2d }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="2D计划截止日期" align="center" prop="twoDimDate" :formatter="dateFormatter2" min-width="180"/>
|
||||||
|
<el-table-column label="2D是否延期" align="center" prop="deferred2d" min-width="140"/>
|
||||||
|
<el-table-column label="延期备注" align="center" prop="delayReason2d" min-width="140"/>
|
||||||
|
<!-- <template #default="scope">-->
|
||||||
|
<!-- <span v-if="scope.row.twoDimDate && (new Date().getTime() - 86400000 - new Date(formatDate(scope.row.twoDimDate, 'YYYY-MM-DD')).getTime() >= 0 && (!scope.row.progress2d || parseFloat(scope.row.progress2d) < 100))" style="color: red;">是</span>-->
|
||||||
|
<!-- <span v-else>否</span>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
<Pagination
|
<Pagination
|
||||||
@ -229,7 +247,17 @@ const handleExport = async () => {
|
|||||||
exportLoading.value = false
|
exportLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 定义样式计算函数
|
||||||
|
const getCellStyle = (status) => {
|
||||||
|
switch (status) {
|
||||||
|
case '已完成':
|
||||||
|
return { backgroundColor: '#f2f2f2' } // 浅灰色
|
||||||
|
case '进行中':
|
||||||
|
return { backgroundColor: '#90EE90' } // 浅绿色
|
||||||
|
default:
|
||||||
|
return {} // 未开始保持透明背景
|
||||||
|
}
|
||||||
|
}
|
||||||
/** 初始化 **/
|
/** 初始化 **/
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
|
Loading…
Reference in New Issue
Block a user