零件进程管理页面
This commit is contained in:
		
							parent
							
								
									6100b0109a
								
							
						
					
					
						commit
						966573b942
					
				@ -1,6 +1,5 @@
 | 
			
		||||
package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo;
 | 
			
		||||
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@ -77,4 +77,6 @@ public class PartPurchaseOrderPageReqVO extends PageParam {
 | 
			
		||||
    private Integer goodsType;
 | 
			
		||||
    @Schema(description = "单据状态,0 待送审,1已送审,2已审核,3已打回 ,默认是1")
 | 
			
		||||
    private Integer documentStatus;
 | 
			
		||||
    @Schema(description = "图号")
 | 
			
		||||
    private String blueprintNo;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -178,4 +178,10 @@ public class PurchaseOrderNoDetailController {
 | 
			
		||||
    public CommonResult<Long> getReceivingGoodsMessage() {
 | 
			
		||||
        return success( purchaseOrderNoDetailService.getReceivingGoodsMessage());
 | 
			
		||||
    }
 | 
			
		||||
    @PostMapping("/updateFrom")
 | 
			
		||||
    @Operation(summary = "收货")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('heli:process-bom:create')")
 | 
			
		||||
    public CommonResult<Boolean> updateFrom(@Valid @RequestBody PurchaseOrderNoDetailDO detailDO) {
 | 
			
		||||
        return purchaseOrderNoDetailService.updateFrom(detailDO);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -95,6 +95,7 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
 | 
			
		||||
                .leftJoin(AdminUserDO.class,"c", AdminUserDO::getId,PurchaseOrderMakeDetailDO::getDuEmpId)
 | 
			
		||||
                .leftJoin(SupplierDO.class, "d", SupplierDO::getId,PurchaseOrderMakeDetailDO::getSupplierId)
 | 
			
		||||
                .leftJoin(ProcedureDO.class, "e", ProcedureDO::getId, PurchaseOrderMakeDetailDO::getProcedureId)
 | 
			
		||||
                .leftJoin(ProcessBomDetailDO.class, "f", ProcessBomDetailDO::getId,PurchaseOrderMakeDetailDO::getBoomDetailId)
 | 
			
		||||
                .disableLogicDel()
 | 
			
		||||
                .disableSubLogicDel()
 | 
			
		||||
                .eq(PurchaseOrderMakeDO::getGoodsType, 2)
 | 
			
		||||
@ -106,6 +107,7 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
 | 
			
		||||
                .like(StringUtils.isNotBlank(pageReqVO.getProjectName()), PurchaseOrderMakeDO::getProjectName, pageReqVO.getProjectName())
 | 
			
		||||
                .like(StringUtils.isNotBlank(pageReqVO.getProjectSubName()), PurchaseOrderMakeDetailDO::getName, pageReqVO.getProjectSubName())
 | 
			
		||||
                .like(StringUtils.isNotBlank(pageReqVO.getMaterialName()), PurchaseOrderMakeDetailDO::getBoomName, pageReqVO.getMaterialName())
 | 
			
		||||
                .like(ObjectUtil.isNotEmpty(pageReqVO.getBlueprintNo()), ProcessBomDetailDO::getBlueprintNo, pageReqVO.getBlueprintNo())
 | 
			
		||||
                .eq(Objects.nonNull(pageReqVO.getStatus()), PurchaseOrderMakeDetailDO::getOrderStatus, pageReqVO.getStatus())
 | 
			
		||||
                .eq(Objects.nonNull(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode())
 | 
			
		||||
                .like(Objects.nonNull(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName())
 | 
			
		||||
 | 
			
		||||
@ -229,6 +229,13 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
 | 
			
		||||
        }
 | 
			
		||||
        updateObj.setReReason(null);
 | 
			
		||||
        processDesignMapper.updateById(updateObj);
 | 
			
		||||
        ProcessDesignDO processDesignDO = processDesignMapper.selectById(updateReqVO.getId());
 | 
			
		||||
        LambdaUpdateWrapper<PlanSubDetailDO> wrapper = new LambdaUpdateWrapper<>();
 | 
			
		||||
        wrapper.eq(PlanSubDetailDO::getProjectId, processDesignDO.getProjectId());
 | 
			
		||||
        wrapper.eq(PlanSubDetailDO::getProjectSubId, processDesignDO.getProjectSubId());
 | 
			
		||||
        wrapper.eq(PlanSubDetailDO::getSubType, processDesignDO.getProcessDesignType());
 | 
			
		||||
        wrapper.set(PlanSubDetailDO::getIsOverProcess, 2);
 | 
			
		||||
        planSubDetailMapper.update(wrapper);
 | 
			
		||||
 | 
			
		||||
        // 更新子表
 | 
			
		||||
        updateProcessDesignProgressList(updateReqVO.getId(), updateReqVO.getProcessDesignProgressList());
 | 
			
		||||
@ -266,7 +273,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
 | 
			
		||||
        wrapper.eq(PlanSubDetailDO::getProjectId, processDesignDO.getProjectId());
 | 
			
		||||
        wrapper.eq(PlanSubDetailDO::getProjectSubId, processDesignDO.getProjectSubId());
 | 
			
		||||
        wrapper.eq(PlanSubDetailDO::getSubType, processDesignDO.getProcessDesignType());
 | 
			
		||||
        wrapper.set(PlanSubDetailDO::getIsOverProcess, 1);
 | 
			
		||||
        wrapper.set(PlanSubDetailDO::getIsOverProcess, 2);
 | 
			
		||||
        planSubDetailMapper.update(wrapper);
 | 
			
		||||
        return processDesignMapper.over(id);
 | 
			
		||||
    }
 | 
			
		||||
@ -587,7 +594,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
 | 
			
		||||
        wrapper.eq(PlanSubDetailDO::getProjectId, processDesignDO.getProjectId());
 | 
			
		||||
        wrapper.eq(PlanSubDetailDO::getProjectSubId, processDesignDO.getProjectSubId());
 | 
			
		||||
        wrapper.eq(PlanSubDetailDO::getSubType, processDesignDO.getProcessDesignType());
 | 
			
		||||
        wrapper.set(PlanSubDetailDO::getIsOverProcess, 0);
 | 
			
		||||
        wrapper.set(PlanSubDetailDO::getIsOverProcess, 2);
 | 
			
		||||
        planSubDetailMapper.update(wrapper);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -70,4 +70,6 @@ public interface PurchaseOrderNoDetailService {
 | 
			
		||||
    PageResult<PurchaseOrderNoDetailDO> getReceivingGoods(PurchaseOrderNoDetailPageReqVO pageReqVO);
 | 
			
		||||
 | 
			
		||||
    Long getReceivingGoodsMessage();
 | 
			
		||||
 | 
			
		||||
    CommonResult<Boolean> updateFrom(PurchaseOrderNoDetailDO detailDO);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.heli.service.purchaseordernodetail;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.util.ObjectUtil;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 | 
			
		||||
import com.chanko.yunxi.mes.framework.common.exception.ErrorCode;
 | 
			
		||||
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
 | 
			
		||||
import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils;
 | 
			
		||||
@ -550,4 +551,40 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
 | 
			
		||||
    public Long getReceivingGoodsMessage() {
 | 
			
		||||
        return purchaseOrderNoDetailMapper.getReceivingGoodsMessage();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public CommonResult<Boolean> updateFrom(PurchaseOrderNoDetailDO detailDO) {
 | 
			
		||||
        PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectById(detailDO.getId());
 | 
			
		||||
        if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDO)){
 | 
			
		||||
            purchaseOrderNoDetailDO.setEstimatedPrice(detailDO.getEstimatedPrice());
 | 
			
		||||
            purchaseOrderNoDetailMapper.updateById(purchaseOrderNoDetailDO);
 | 
			
		||||
            LambdaQueryWrapper<StorageInDetailDO> wrapper = new LambdaQueryWrapper<>();
 | 
			
		||||
            wrapper.eq(StorageInDetailDO::getPurchaseOrderNoDetailId,detailDO.getId());
 | 
			
		||||
            List<StorageInDetailDO> list = storageInDetailMapper.selectList(wrapper);
 | 
			
		||||
            BigDecimal result = BigDecimal.ZERO;
 | 
			
		||||
            BigDecimal estimatedPrice = detailDO.getEstimatedPrice();
 | 
			
		||||
            BigDecimal purchaseAmount = detailDO.getPurchaseAmount();
 | 
			
		||||
            // 检查两个值是否为null或0
 | 
			
		||||
            if (estimatedPrice != null &&
 | 
			
		||||
                    purchaseAmount != null &&
 | 
			
		||||
                    purchaseAmount.compareTo(BigDecimal.ZERO) != 0) {
 | 
			
		||||
                // 当两个值非空且除数非零时才进行计算
 | 
			
		||||
                result = estimatedPrice.divide(purchaseAmount, 10, RoundingMode.HALF_UP);
 | 
			
		||||
            }
 | 
			
		||||
            if (ObjectUtil.isNotEmpty(list)){
 | 
			
		||||
                for (StorageInDetailDO storageInDetailDO : list) {
 | 
			
		||||
                    if (result.compareTo(BigDecimal.ZERO)==0){
 | 
			
		||||
                        storageInDetailDO.setEstimatedPrice(BigDecimal.ZERO);
 | 
			
		||||
 | 
			
		||||
                    }else {
 | 
			
		||||
                        storageInDetailDO.setEstimatedPrice(storageInDetailDO.getStorageAmount().multiply(result).setScale(1, RoundingMode.HALF_UP));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                storageInDetailMapper.insertOrUpdateBatch( list);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        return CommonResult.success(true);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -88,3 +88,6 @@ export const getOutsourcingExpenses = async (params) => {
 | 
			
		||||
export const exportOutsourcing = async (params) => {
 | 
			
		||||
  return await request.download({ url: `/heli/purchase-order-no-detail/exportOutsourcing`, params })
 | 
			
		||||
}
 | 
			
		||||
export const  updateFrom= async (data) => {
 | 
			
		||||
  return await request.post({ url: `/heli/purchase-order-no-detail/updateFrom`, data })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -12,8 +12,11 @@
 | 
			
		||||
        <el-form-item label="子项目名称" prop="projectSubName">
 | 
			
		||||
          <el-input v-model="queryParams.projectSubName" placeholder="请输入子项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
        <el-form-item label="零件名称" prop="materialName">
 | 
			
		||||
          <el-input v-model="queryParams.materialName" placeholder="请输入零件名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
 | 
			
		||||
<!--        <el-form-item label="零件名称" prop="materialName">-->
 | 
			
		||||
<!--          <el-input v-model="queryParams.materialName" placeholder="请输入零件名称" clearable @keyup.enter="handleQuery" class="!w-240px" />-->
 | 
			
		||||
<!--        </el-form-item>-->
 | 
			
		||||
        <el-form-item label="图号" prop="blueprintNo">
 | 
			
		||||
          <el-input v-model="queryParams.blueprintNo" placeholder="请输入图号" clearable @keyup.enter="handleQuery" class="!w-240px" />
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
        <el-form-item label="项目编码" prop="projectCode">
 | 
			
		||||
          <el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery" class="!w-240px" />
 | 
			
		||||
@ -140,6 +143,7 @@ const queryParams = reactive({
 | 
			
		||||
  materialName:undefined,
 | 
			
		||||
  projectMaterialPlanNo:undefined,
 | 
			
		||||
  supplierName:undefined,
 | 
			
		||||
  blueprintNo:undefined
 | 
			
		||||
})
 | 
			
		||||
const queryFormRef = ref() // 搜索的表单
 | 
			
		||||
const exportLoading = ref(false) // 导出的加载中
 | 
			
		||||
 | 
			
		||||
@ -121,7 +121,7 @@
 | 
			
		||||
          <td> 设备型号 </td>
 | 
			
		||||
          <td> 数量 </td>
 | 
			
		||||
          <td> 主要材料 </td>
 | 
			
		||||
          <td style="width:110px"> 毛坯日期 </td>
 | 
			
		||||
          <td style="width:120px"> 毛坯日期 </td>
 | 
			
		||||
          <td> 2D/日期 </td>
 | 
			
		||||
          <td> 3D/日期 </td>
 | 
			
		||||
        </tr>
 | 
			
		||||
@ -412,7 +412,7 @@ style="
 | 
			
		||||
</tr>
 | 
			
		||||
          </tbody>
 | 
			
		||||
          <tbody>
 | 
			
		||||
          <tr v-for="item in formData.projectOrderSubs.length" :key="item">
 | 
			
		||||
          <tr v-for="item in num" :key="item">
 | 
			
		||||
            <td> {{item+(formData.projectOrderSubs.length)}}</td>
 | 
			
		||||
            <td colspan="3">  </td>
 | 
			
		||||
            <td>   </td>
 | 
			
		||||
@ -504,6 +504,7 @@ import { getOperateLogPage } from '@/api/system/operatelog'
 | 
			
		||||
import urlimg from '@/assets/imgs/exlogo.png'
 | 
			
		||||
const logoDataUrl = ref('') // 存储Logo的Base64编码数据URL
 | 
			
		||||
const dialogVisible = ref(false) // 弹窗的是否展示
 | 
			
		||||
const num = ref(0) // 存储Logo的Base64编码数据URL
 | 
			
		||||
 | 
			
		||||
const onPrint = () => {
 | 
			
		||||
  // 拿到打印页面dom节点
 | 
			
		||||
@ -538,7 +539,7 @@ const onPrint = () => {
 | 
			
		||||
 | 
			
		||||
    @page {
 | 
			
		||||
      size: A4;
 | 
			
		||||
      margin:1cm;
 | 
			
		||||
      margin:0.8cm 1cm 1.4cm 1cm;;
 | 
			
		||||
    }
 | 
			
		||||
    @media print {
 | 
			
		||||
      .page {
 | 
			
		||||
@ -552,6 +553,24 @@ const onPrint = () => {
 | 
			
		||||
        page-break-after: always;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    /* 注册页脚为运行元素 */
 | 
			
		||||
.footer {
 | 
			
		||||
  position: running(footer);
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  font-size: 10px;
 | 
			
		||||
  color: #666;
 | 
			
		||||
  border-top: 1px dashed #ccc;
 | 
			
		||||
  padding-top: 2px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* 定义页脚位置 */
 | 
			
		||||
@page {
 | 
			
		||||
  @bottom-right {
 | 
			
		||||
    content:   counter(page) "/" counter(pages);
 | 
			
		||||
    font-family: Arial; /* 防止继承奇怪字体 */
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    table {
 | 
			
		||||
      width: 100%; /* 让表格宽度100%占满其父元素宽度 */
 | 
			
		||||
      height: auto; /* 高度根据内容自适应 */
 | 
			
		||||
@ -587,6 +606,7 @@ const onPrint = () => {
 | 
			
		||||
    </style>
 | 
			
		||||
    <div>
 | 
			
		||||
      ${printNode.innerHTML}
 | 
			
		||||
 | 
			
		||||
    </div>`)
 | 
			
		||||
  doc.close()
 | 
			
		||||
  // 浏览器打印页面打开渲染
 | 
			
		||||
@ -596,12 +616,147 @@ const onPrint = () => {
 | 
			
		||||
    document.body.removeChild(newIframe) // 移除打印内框架,下次打印下次再挂载
 | 
			
		||||
    dialogVisible.value = false
 | 
			
		||||
  }, 100)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
// const onPrint = () => {
 | 
			
		||||
//   const printNode = document.querySelector('.print-wrap');
 | 
			
		||||
//   if (!printNode) return;
 | 
			
		||||
//
 | 
			
		||||
//   // 克隆节点避免污染原始DOM
 | 
			
		||||
//   const printClone = printNode.cloneNode(true) as HTMLElement;
 | 
			
		||||
//   const pages = printClone.querySelectorAll('.page');
 | 
			
		||||
//   const totalPages = pages.length;
 | 
			
		||||
//   console.log(totalPages)
 | 
			
		||||
//   // 动态添加页码元素
 | 
			
		||||
//   let currentPage = 1;
 | 
			
		||||
//   pages.forEach(page => {
 | 
			
		||||
//     const pageNum = document.createElement('div');
 | 
			
		||||
//     pageNum.className = 'page-footer';
 | 
			
		||||
//     pageNum.innerHTML = `<span class="page-number">${currentPage}/${totalPages}</span>`;
 | 
			
		||||
//
 | 
			
		||||
//     // 插入页码到页面底部
 | 
			
		||||
//     const footer = document.createElement('div');
 | 
			
		||||
//     footer.className = 'print-footer';
 | 
			
		||||
//     footer.appendChild(pageNum);
 | 
			
		||||
//     page.appendChild(footer);
 | 
			
		||||
//     currentPage++;
 | 
			
		||||
//   });
 | 
			
		||||
//   // 创建打印专用iframe
 | 
			
		||||
//   const newIframe = document.createElement('iframe');
 | 
			
		||||
//   Object.assign(newIframe.style, {
 | 
			
		||||
//     width: '0px',
 | 
			
		||||
//     height: '0px',
 | 
			
		||||
//     position: 'absolute',
 | 
			
		||||
//     left: '-9999px',
 | 
			
		||||
//     top: '-9999px'
 | 
			
		||||
//   });
 | 
			
		||||
//   document.body.appendChild(newIframe);
 | 
			
		||||
//
 | 
			
		||||
//   const doc = newIframe.contentWindow!.document!;
 | 
			
		||||
//   doc.write(`
 | 
			
		||||
//     <style>
 | 
			
		||||
//       /* 保留原有样式 */
 | 
			
		||||
//       .page {
 | 
			
		||||
//         width: 21cm;
 | 
			
		||||
//         min-height: 29.7cm;
 | 
			
		||||
//         padding: 10mm;
 | 
			
		||||
//         margin: 20px auto;
 | 
			
		||||
//         border: 1px #d3d3d3 solid;
 | 
			
		||||
//         border-radius: 5px;
 | 
			
		||||
//         background: white;
 | 
			
		||||
//         box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
 | 
			
		||||
//         position: relative;
 | 
			
		||||
//         font-size: 12px !important;
 | 
			
		||||
//       }
 | 
			
		||||
//
 | 
			
		||||
//       @page {
 | 
			
		||||
//         size: A4;
 | 
			
		||||
//         margin: 1cm;
 | 
			
		||||
//       }
 | 
			
		||||
//
 | 
			
		||||
//       @media print {
 | 
			
		||||
//         .page {
 | 
			
		||||
//           margin: 10mm;
 | 
			
		||||
//           border: initial;
 | 
			
		||||
//           border-radius: initial;
 | 
			
		||||
//           width: initial;
 | 
			
		||||
//           min-height: initial;
 | 
			
		||||
//           box-shadow: initial;
 | 
			
		||||
//           background: initial;
 | 
			
		||||
//           page-break-after: always;
 | 
			
		||||
//         }
 | 
			
		||||
//       }
 | 
			
		||||
//
 | 
			
		||||
//       /* 新增页码样式 */
 | 
			
		||||
//       .print-footer {
 | 
			
		||||
//         position: absolute;
 | 
			
		||||
//         bottom: 5mm;
 | 
			
		||||
//         right: 5mm;
 | 
			
		||||
//         font-size: 10px;
 | 
			
		||||
//         color: #666;
 | 
			
		||||
//       }
 | 
			
		||||
//
 | 
			
		||||
//       .page-number {
 | 
			
		||||
//         padding: 2px 6px;
 | 
			
		||||
//         border: 1px solid #ddd;
 | 
			
		||||
//         border-radius: 3px;
 | 
			
		||||
//         background: #f8f8f8;
 | 
			
		||||
//       }
 | 
			
		||||
//      table {
 | 
			
		||||
//        width: 100%; /* 让表格宽度100%占满其父元素宽度 */
 | 
			
		||||
//        height: auto; /* 高度根据内容自适应 */
 | 
			
		||||
//        font-size: 12px;
 | 
			
		||||
//        text-align: center;
 | 
			
		||||
//        border-collapse: collapse;
 | 
			
		||||
//        margin-top: 5mm; /* 添加顶部外边距,替代原先的页内边距 */
 | 
			
		||||
//        tr{
 | 
			
		||||
//          td {
 | 
			
		||||
//          padding: 5px 0;
 | 
			
		||||
//          border: 1px solid #333;
 | 
			
		||||
//        }
 | 
			
		||||
//        }
 | 
			
		||||
//      }
 | 
			
		||||
//      .masterClass {
 | 
			
		||||
//        height: 15px;
 | 
			
		||||
//      }
 | 
			
		||||
//      .xh {
 | 
			
		||||
//        width: 50px !important;
 | 
			
		||||
//      }
 | 
			
		||||
//      .xh {
 | 
			
		||||
//          height: 20px !important;
 | 
			
		||||
//  }
 | 
			
		||||
//      .checkbox {
 | 
			
		||||
//        border: 2px solid #999;
 | 
			
		||||
//        width: 10px;
 | 
			
		||||
//        height: 10px;
 | 
			
		||||
//        display: flex;
 | 
			
		||||
//        justify-content: center;
 | 
			
		||||
//        align-items: center;
 | 
			
		||||
//        margin-left:10px ;
 | 
			
		||||
//      }
 | 
			
		||||
//
 | 
			
		||||
//     </style>
 | 
			
		||||
//     <div>${printClone.innerHTML}</div>
 | 
			
		||||
//   `);
 | 
			
		||||
//   doc.close();
 | 
			
		||||
//
 | 
			
		||||
//   // 打印处理
 | 
			
		||||
//   setTimeout(() => {
 | 
			
		||||
//     newIframe.contentWindow!.focus();
 | 
			
		||||
//     newIframe.contentWindow!.print();
 | 
			
		||||
//
 | 
			
		||||
//     // 打印后清理
 | 
			
		||||
//     document.body.removeChild(newIframe);
 | 
			
		||||
//     dialogVisible.value = false;
 | 
			
		||||
//
 | 
			
		||||
//     // 恢复原始内容(可选)
 | 
			
		||||
//     // printNode.innerHTML = originalContent;
 | 
			
		||||
//   }, 300);
 | 
			
		||||
// };
 | 
			
		||||
const outopen = () => {
 | 
			
		||||
  dialogVisible.value = false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const formData = ref({
 | 
			
		||||
  id: undefined,
 | 
			
		||||
  code: undefined,
 | 
			
		||||
@ -725,6 +880,20 @@ const open = async (id: number) => {
 | 
			
		||||
    formData.value.auditTime = auditLog.startTime
 | 
			
		||||
    formData.value.auditUserName = auditLog.userNickname
 | 
			
		||||
  }
 | 
			
		||||
  if (formData.value.projectOrderSubs.length>6){
 | 
			
		||||
    if (formData.value.projectOrderSubs.length>33){
 | 
			
		||||
      var number = formData.value.projectOrderSubs.length-33;
 | 
			
		||||
      const remainder = number % 29;
 | 
			
		||||
      const emptyRows = remainder === 0 ? 0 : 29 - remainder;
 | 
			
		||||
      num.value=emptyRows
 | 
			
		||||
      console.log(num.value)
 | 
			
		||||
    }else {
 | 
			
		||||
      var number = formData.value.projectOrderSubs.length-6;
 | 
			
		||||
      const remainder = number % 27;
 | 
			
		||||
      const emptyRows = remainder === 0 ? 0 : 27 - remainder;
 | 
			
		||||
      num.value=emptyRows
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 | 
			
		||||
 | 
			
		||||
@ -859,6 +1028,22 @@ const resetForm = () => {
 | 
			
		||||
    page-break-after: always;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
.footer {
 | 
			
		||||
  position: running(footer);
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  font-size: 10px;
 | 
			
		||||
  color: #666;
 | 
			
		||||
  border-top: 1px dashed #ccc;
 | 
			
		||||
  padding-top: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* 定义页脚位置 */
 | 
			
		||||
@page {
 | 
			
		||||
  @bottom-right {
 | 
			
		||||
    content:   counter(page) "/" counter(pages);
 | 
			
		||||
    font-family: Arial; /* 防止继承奇怪字体 */
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
table {
 | 
			
		||||
  width: 100%; /* 让表格宽度100%占满其父元素宽度 */
 | 
			
		||||
  height: auto; /* 高度根据内容自适应 */
 | 
			
		||||
 | 
			
		||||
@ -76,7 +76,16 @@
 | 
			
		||||
                <el-table-column prop="arriveTime" min-width="150" label="预计到货日期" align="center" :formatter="dateFormatter1" />
 | 
			
		||||
                <el-table-column prop="description" min-width="150" label="技术要求" align="center"/>
 | 
			
		||||
                <el-table-column prop="theWeight" min-width="100" label="理论重量" align="center"/>
 | 
			
		||||
 | 
			
		||||
                <el-table-column label="操作" align="center" fixed="right" min-width="200">
 | 
			
		||||
                  <template #header>
 | 
			
		||||
                    <span style="margin-right: 30%">操作</span>
 | 
			
		||||
                  </template>
 | 
			
		||||
                  <template #default="scope">
 | 
			
		||||
                    <el-button link type="primary" @click="updateFrom(scope.row)" v-if="scope.row.receivingStatus==3">
 | 
			
		||||
                      总价修改
 | 
			
		||||
                    </el-button>
 | 
			
		||||
                  </template>
 | 
			
		||||
                </el-table-column>
 | 
			
		||||
              </el-table>
 | 
			
		||||
              </el-form>
 | 
			
		||||
<!--              <Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"-->
 | 
			
		||||
@ -217,6 +226,7 @@ const tagsViewStore = useTagsViewStore()
 | 
			
		||||
import * as PurchaseOrderNoApi from '@/api/heli/purchaseorderno'
 | 
			
		||||
import * as PurchaseOrderNoDetailApi from '@/api/heli/purchaseordernodetail'
 | 
			
		||||
import {ref} from "vue";
 | 
			
		||||
import {update} from "lodash-es";
 | 
			
		||||
 | 
			
		||||
const dialogVisible = ref(false) // 弹窗的是否展示
 | 
			
		||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
 | 
			
		||||
@ -300,6 +310,17 @@ const isPrint = async () => {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
const updateFrom = async (row) => {
 | 
			
		||||
  console.log(row)
 | 
			
		||||
 | 
			
		||||
  await PurchaseOrderNoDetailApi.updateFrom(row)
 | 
			
		||||
    loading.value = true;
 | 
			
		||||
 | 
			
		||||
  message.success("修改成功");
 | 
			
		||||
  getList(); // 确保刷新完成
 | 
			
		||||
  emit('success');
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function doPrint() {
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@
 | 
			
		||||
      <el-form-item label="项目名称" prop="projectName">
 | 
			
		||||
        <el-input
 | 
			
		||||
          v-model="queryParams.projectName"
 | 
			
		||||
          placeholder="请输入项目简码"
 | 
			
		||||
          placeholder="请输入项目名称"
 | 
			
		||||
          clearable
 | 
			
		||||
          @keyup.enter="handleQuery"
 | 
			
		||||
          class="!w-240px"
 | 
			
		||||
@ -49,7 +49,7 @@
 | 
			
		||||
      <el-form-item label="零件号" prop="blueprintNo">
 | 
			
		||||
        <el-input
 | 
			
		||||
          v-model="queryParams.blueprintNo"
 | 
			
		||||
          placeholder="请输入项目编号"
 | 
			
		||||
          placeholder="请输入零件号"
 | 
			
		||||
          clearable
 | 
			
		||||
          @keyup.enter="handleQuery"
 | 
			
		||||
          class="!w-240px"
 | 
			
		||||
@ -59,7 +59,7 @@
 | 
			
		||||
      <el-form-item label="工序" prop="procdureName">
 | 
			
		||||
        <el-input
 | 
			
		||||
          v-model="queryParams.procdureName"
 | 
			
		||||
          placeholder="请输入项目编号"
 | 
			
		||||
          placeholder="请输入工序"
 | 
			
		||||
          clearable
 | 
			
		||||
          @keyup.enter="handleQuery"
 | 
			
		||||
          class="!w-240px"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user