零件进程管理页面
This commit is contained in:
parent
6100b0109a
commit
966573b942
@ -1,6 +1,5 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo;
|
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 com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -77,4 +77,6 @@ public class PartPurchaseOrderPageReqVO extends PageParam {
|
|||||||
private Integer goodsType;
|
private Integer goodsType;
|
||||||
@Schema(description = "单据状态,0 待送审,1已送审,2已审核,3已打回 ,默认是1")
|
@Schema(description = "单据状态,0 待送审,1已送审,2已审核,3已打回 ,默认是1")
|
||||||
private Integer documentStatus;
|
private Integer documentStatus;
|
||||||
|
@Schema(description = "图号")
|
||||||
|
private String blueprintNo;
|
||||||
}
|
}
|
||||||
|
@ -178,4 +178,10 @@ public class PurchaseOrderNoDetailController {
|
|||||||
public CommonResult<Long> getReceivingGoodsMessage() {
|
public CommonResult<Long> getReceivingGoodsMessage() {
|
||||||
return success( purchaseOrderNoDetailService.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(AdminUserDO.class,"c", AdminUserDO::getId,PurchaseOrderMakeDetailDO::getDuEmpId)
|
||||||
.leftJoin(SupplierDO.class, "d", SupplierDO::getId,PurchaseOrderMakeDetailDO::getSupplierId)
|
.leftJoin(SupplierDO.class, "d", SupplierDO::getId,PurchaseOrderMakeDetailDO::getSupplierId)
|
||||||
.leftJoin(ProcedureDO.class, "e", ProcedureDO::getId, PurchaseOrderMakeDetailDO::getProcedureId)
|
.leftJoin(ProcedureDO.class, "e", ProcedureDO::getId, PurchaseOrderMakeDetailDO::getProcedureId)
|
||||||
|
.leftJoin(ProcessBomDetailDO.class, "f", ProcessBomDetailDO::getId,PurchaseOrderMakeDetailDO::getBoomDetailId)
|
||||||
.disableLogicDel()
|
.disableLogicDel()
|
||||||
.disableSubLogicDel()
|
.disableSubLogicDel()
|
||||||
.eq(PurchaseOrderMakeDO::getGoodsType, 2)
|
.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.getProjectName()), PurchaseOrderMakeDO::getProjectName, pageReqVO.getProjectName())
|
||||||
.like(StringUtils.isNotBlank(pageReqVO.getProjectSubName()), PurchaseOrderMakeDetailDO::getName, pageReqVO.getProjectSubName())
|
.like(StringUtils.isNotBlank(pageReqVO.getProjectSubName()), PurchaseOrderMakeDetailDO::getName, pageReqVO.getProjectSubName())
|
||||||
.like(StringUtils.isNotBlank(pageReqVO.getMaterialName()), PurchaseOrderMakeDetailDO::getBoomName, pageReqVO.getMaterialName())
|
.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.getStatus()), PurchaseOrderMakeDetailDO::getOrderStatus, pageReqVO.getStatus())
|
||||||
.eq(Objects.nonNull(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode())
|
.eq(Objects.nonNull(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode())
|
||||||
.like(Objects.nonNull(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName())
|
.like(Objects.nonNull(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName())
|
||||||
|
@ -229,6 +229,13 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
|
|||||||
}
|
}
|
||||||
updateObj.setReReason(null);
|
updateObj.setReReason(null);
|
||||||
processDesignMapper.updateById(updateObj);
|
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());
|
updateProcessDesignProgressList(updateReqVO.getId(), updateReqVO.getProcessDesignProgressList());
|
||||||
@ -266,7 +273,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
|
|||||||
wrapper.eq(PlanSubDetailDO::getProjectId, processDesignDO.getProjectId());
|
wrapper.eq(PlanSubDetailDO::getProjectId, processDesignDO.getProjectId());
|
||||||
wrapper.eq(PlanSubDetailDO::getProjectSubId, processDesignDO.getProjectSubId());
|
wrapper.eq(PlanSubDetailDO::getProjectSubId, processDesignDO.getProjectSubId());
|
||||||
wrapper.eq(PlanSubDetailDO::getSubType, processDesignDO.getProcessDesignType());
|
wrapper.eq(PlanSubDetailDO::getSubType, processDesignDO.getProcessDesignType());
|
||||||
wrapper.set(PlanSubDetailDO::getIsOverProcess, 1);
|
wrapper.set(PlanSubDetailDO::getIsOverProcess, 2);
|
||||||
planSubDetailMapper.update(wrapper);
|
planSubDetailMapper.update(wrapper);
|
||||||
return processDesignMapper.over(id);
|
return processDesignMapper.over(id);
|
||||||
}
|
}
|
||||||
@ -587,7 +594,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
|
|||||||
wrapper.eq(PlanSubDetailDO::getProjectId, processDesignDO.getProjectId());
|
wrapper.eq(PlanSubDetailDO::getProjectId, processDesignDO.getProjectId());
|
||||||
wrapper.eq(PlanSubDetailDO::getProjectSubId, processDesignDO.getProjectSubId());
|
wrapper.eq(PlanSubDetailDO::getProjectSubId, processDesignDO.getProjectSubId());
|
||||||
wrapper.eq(PlanSubDetailDO::getSubType, processDesignDO.getProcessDesignType());
|
wrapper.eq(PlanSubDetailDO::getSubType, processDesignDO.getProcessDesignType());
|
||||||
wrapper.set(PlanSubDetailDO::getIsOverProcess, 0);
|
wrapper.set(PlanSubDetailDO::getIsOverProcess, 2);
|
||||||
planSubDetailMapper.update(wrapper);
|
planSubDetailMapper.update(wrapper);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -70,4 +70,6 @@ public interface PurchaseOrderNoDetailService {
|
|||||||
PageResult<PurchaseOrderNoDetailDO> getReceivingGoods(PurchaseOrderNoDetailPageReqVO pageReqVO);
|
PageResult<PurchaseOrderNoDetailDO> getReceivingGoods(PurchaseOrderNoDetailPageReqVO pageReqVO);
|
||||||
|
|
||||||
Long getReceivingGoodsMessage();
|
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 cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.exception.ErrorCode;
|
||||||
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
|
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
|
||||||
import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils;
|
import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
@ -550,4 +551,40 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
public Long getReceivingGoodsMessage() {
|
public Long getReceivingGoodsMessage() {
|
||||||
return purchaseOrderNoDetailMapper.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) => {
|
export const exportOutsourcing = async (params) => {
|
||||||
return await request.download({ url: `/heli/purchase-order-no-detail/exportOutsourcing`, 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-form-item label="子项目名称" prop="projectSubName">
|
||||||
<el-input v-model="queryParams.projectSubName" placeholder="请输入子项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
<el-input v-model="queryParams.projectSubName" placeholder="请输入子项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="零件名称" prop="materialName">
|
<!-- <el-form-item label="零件名称" prop="materialName">-->
|
||||||
<el-input v-model="queryParams.materialName" placeholder="请输入零件名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
<!-- <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>
|
||||||
<el-form-item label="项目编码" prop="projectCode">
|
<el-form-item label="项目编码" prop="projectCode">
|
||||||
<el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
<el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||||
@ -140,6 +143,7 @@ const queryParams = reactive({
|
|||||||
materialName:undefined,
|
materialName:undefined,
|
||||||
projectMaterialPlanNo:undefined,
|
projectMaterialPlanNo:undefined,
|
||||||
supplierName:undefined,
|
supplierName:undefined,
|
||||||
|
blueprintNo:undefined
|
||||||
})
|
})
|
||||||
const queryFormRef = ref() // 搜索的表单
|
const queryFormRef = ref() // 搜索的表单
|
||||||
const exportLoading = ref(false) // 导出的加载中
|
const exportLoading = ref(false) // 导出的加载中
|
||||||
|
@ -121,7 +121,7 @@
|
|||||||
<td> 设备型号 </td>
|
<td> 设备型号 </td>
|
||||||
<td> 数量 </td>
|
<td> 数量 </td>
|
||||||
<td> 主要材料 </td>
|
<td> 主要材料 </td>
|
||||||
<td style="width:110px"> 毛坯日期 </td>
|
<td style="width:120px"> 毛坯日期 </td>
|
||||||
<td> 2D/日期 </td>
|
<td> 2D/日期 </td>
|
||||||
<td> 3D/日期 </td>
|
<td> 3D/日期 </td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -412,7 +412,7 @@ style="
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<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> {{item+(formData.projectOrderSubs.length)}}</td>
|
||||||
<td colspan="3"> </td>
|
<td colspan="3"> </td>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
@ -504,6 +504,7 @@ import { getOperateLogPage } from '@/api/system/operatelog'
|
|||||||
import urlimg from '@/assets/imgs/exlogo.png'
|
import urlimg from '@/assets/imgs/exlogo.png'
|
||||||
const logoDataUrl = ref('') // 存储Logo的Base64编码数据URL
|
const logoDataUrl = ref('') // 存储Logo的Base64编码数据URL
|
||||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
|
const num = ref(0) // 存储Logo的Base64编码数据URL
|
||||||
|
|
||||||
const onPrint = () => {
|
const onPrint = () => {
|
||||||
// 拿到打印页面dom节点
|
// 拿到打印页面dom节点
|
||||||
@ -538,7 +539,7 @@ const onPrint = () => {
|
|||||||
|
|
||||||
@page {
|
@page {
|
||||||
size: A4;
|
size: A4;
|
||||||
margin:1cm;
|
margin:0.8cm 1cm 1.4cm 1cm;;
|
||||||
}
|
}
|
||||||
@media print {
|
@media print {
|
||||||
.page {
|
.page {
|
||||||
@ -552,6 +553,24 @@ const onPrint = () => {
|
|||||||
page-break-after: always;
|
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 {
|
table {
|
||||||
width: 100%; /* 让表格宽度100%占满其父元素宽度 */
|
width: 100%; /* 让表格宽度100%占满其父元素宽度 */
|
||||||
height: auto; /* 高度根据内容自适应 */
|
height: auto; /* 高度根据内容自适应 */
|
||||||
@ -587,6 +606,7 @@ const onPrint = () => {
|
|||||||
</style>
|
</style>
|
||||||
<div>
|
<div>
|
||||||
${printNode.innerHTML}
|
${printNode.innerHTML}
|
||||||
|
|
||||||
</div>`)
|
</div>`)
|
||||||
doc.close()
|
doc.close()
|
||||||
// 浏览器打印页面打开渲染
|
// 浏览器打印页面打开渲染
|
||||||
@ -596,12 +616,147 @@ const onPrint = () => {
|
|||||||
document.body.removeChild(newIframe) // 移除打印内框架,下次打印下次再挂载
|
document.body.removeChild(newIframe) // 移除打印内框架,下次打印下次再挂载
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
}, 100)
|
}, 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 = () => {
|
const outopen = () => {
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
code: undefined,
|
code: undefined,
|
||||||
@ -725,6 +880,20 @@ const open = async (id: number) => {
|
|||||||
formData.value.auditTime = auditLog.startTime
|
formData.value.auditTime = auditLog.startTime
|
||||||
formData.value.auditUserName = auditLog.userNickname
|
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 方法,用于打开弹窗
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
|
||||||
@ -859,6 +1028,22 @@ const resetForm = () => {
|
|||||||
page-break-after: always;
|
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 {
|
table {
|
||||||
width: 100%; /* 让表格宽度100%占满其父元素宽度 */
|
width: 100%; /* 让表格宽度100%占满其父元素宽度 */
|
||||||
height: auto; /* 高度根据内容自适应 */
|
height: auto; /* 高度根据内容自适应 */
|
||||||
|
@ -76,7 +76,16 @@
|
|||||||
<el-table-column prop="arriveTime" min-width="150" label="预计到货日期" align="center" :formatter="dateFormatter1" />
|
<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="description" min-width="150" label="技术要求" align="center"/>
|
||||||
<el-table-column prop="theWeight" min-width="100" 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-table>
|
||||||
</el-form>
|
</el-form>
|
||||||
<!-- <Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"-->
|
<!-- <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 PurchaseOrderNoApi from '@/api/heli/purchaseorderno'
|
||||||
import * as PurchaseOrderNoDetailApi from '@/api/heli/purchaseordernodetail'
|
import * as PurchaseOrderNoDetailApi from '@/api/heli/purchaseordernodetail'
|
||||||
import {ref} from "vue";
|
import {ref} from "vue";
|
||||||
|
import {update} from "lodash-es";
|
||||||
|
|
||||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
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() {
|
function doPrint() {
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<el-form-item label="项目名称" prop="projectName">
|
<el-form-item label="项目名称" prop="projectName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.projectName"
|
v-model="queryParams.projectName"
|
||||||
placeholder="请输入项目简码"
|
placeholder="请输入项目名称"
|
||||||
clearable
|
clearable
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
@ -49,7 +49,7 @@
|
|||||||
<el-form-item label="零件号" prop="blueprintNo">
|
<el-form-item label="零件号" prop="blueprintNo">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.blueprintNo"
|
v-model="queryParams.blueprintNo"
|
||||||
placeholder="请输入项目编号"
|
placeholder="请输入零件号"
|
||||||
clearable
|
clearable
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
@ -59,7 +59,7 @@
|
|||||||
<el-form-item label="工序" prop="procdureName">
|
<el-form-item label="工序" prop="procdureName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.procdureName"
|
v-model="queryParams.procdureName"
|
||||||
placeholder="请输入项目编号"
|
placeholder="请输入工序"
|
||||||
clearable
|
clearable
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
|
Loading…
Reference in New Issue
Block a user