From 285af7c086a4764740bd676493ec8d6e74722fea Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期五, 22 八月 2025 16:44:43 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/components/mm/PrintPackingListLuoyang.vue                |    2 
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                           |    2 
 north-glass-erp/northglass-erp/src/components/sd/order/UpdateAlienEditor.vue                |  129 +++++++++++++++++---------------
 north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java |   13 +--
 north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml                     |    4 
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizationRectPrint.vue         |   66 ++++++++++------
 6 files changed, 116 insertions(+), 100 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/components/mm/PrintPackingListLuoyang.vue b/north-glass-erp/northglass-erp/src/components/mm/PrintPackingListLuoyang.vue
index 2122bbd..2a55eb2 100644
--- a/north-glass-erp/northglass-erp/src/components/mm/PrintPackingListLuoyang.vue
+++ b/north-glass-erp/northglass-erp/src/components/mm/PrintPackingListLuoyang.vue
@@ -157,7 +157,6 @@
       customer.value = produceList.value[0].detail[0]
       let height = 0
       let index = 0
-      console.log(res.data.data)
       for(let i=0;i<produceList.value.length;i++){
         //鎹骇鍝佸氨鎹㈤〉
         if(i>0){
@@ -222,7 +221,6 @@
           type:'sum',
           sum:sum
         })
-        console.log(page)
 
       })
     } else {
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/UpdateAlienEditor.vue b/north-glass-erp/northglass-erp/src/components/sd/order/UpdateAlienEditor.vue
index 0db5eeb..da6470a 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/UpdateAlienEditor.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/UpdateAlienEditor.vue
@@ -71,13 +71,18 @@
 let data1=ref(0);let data2=ref(0);let data3=ref(0);let data4=ref(0)
 let data5=ref(0);let data6=ref(0);let data7=ref(0);let data8=ref(0)
 
+//涓婁笅妯珫杈撳叆鐨勫叓涓弬鏁�
 let datas1=ref(0);let datas2=ref(0);let datas3=ref(0);let datas4=ref(0)
 let datas5=ref(0);let datas6=ref(0);let datas7=ref(0);let datas8=ref(0)
 
+//鐢ㄤ簬璁$畻鐨勫叓涓弬鏁�
 let a1=ref(0);let a2=ref(0);let b1=ref(0);let b2=ref(0)
 let c1=ref(0);let c2=ref(0);let d1=ref(0);let d2=ref(0)
+
+//涓嬫媺妗嗕笅杈撳叆鐨勫洓涓弬鏁�
 let aValue=ref("0");let bValue=ref("0");let cValue=ref("0");let dValue=ref("0")
 
+//涓嬫媺妗嗙殑鍥涗釜鍙傛暟
 let select1=ref("2");let select2=ref("2");let select3=ref("2");let select4=ref("2");let select5=ref("1")
 let big=0
 let leafer;
@@ -90,6 +95,7 @@
 const ongetproject = (row) =>  {
 
   if(row.fileName==null||row.fileName==""){
+
     orderDetailWidth.value=row.width
     orderDetailHeight.value=row.height
     const main =document.getElementById('mains')
@@ -147,6 +153,7 @@
 }
 
 
+//缁樺埗鑷敱澶氳竟褰�
 const getproject = () => {
     validate1()
     if(leafer!==undefined){
@@ -172,6 +179,7 @@
 
 }
 
+//娣诲姞鍦�
 const add = () => {
   if (state.value){
     const height = document.getElementById('height')
@@ -204,6 +212,7 @@
   }
 }
 
+//娣诲姞鐭╁舰
 const addRect = () => {
   if (state.value){
     const height = document.getElementById('height')
@@ -239,7 +248,7 @@
   }
 }
 
-
+//娣诲姞鐭╁舰鐨勬寲缂�
 const addDrilling = () => {
   if (state.value){
     const width = parseInt(document.getElementById('width').innerHTML)
@@ -315,19 +324,13 @@
       load()
       exportToDXF(1)
     }else{
-      ElMessage.warning("璇疯緭鍏ュぇ浜�0鐨勬湁鏁堝弬鏁�")
+      //ElMessage.warning("璇疯緭鍏ュぇ浜�0鐨勬湁鏁堝弬鏁�")
     }
 
   }
 }
 
-function getDistance(p1, p2) {
-  const dx = p2[0] - p1[0];
-  const dy = p1[1] - p2[1];
-  return Math.sqrt(dx * dx + dy * dy);
-}
-
-
+//鑾峰彇鍧愭爣鏈�杩戠殑鏂规硶
 function getDistancess(list,xy, fx) {
   if (list == null  || xy == null || xy.length != 3) {
     return null;
@@ -448,6 +451,7 @@
 
 }
 
+//缁樺埗鐭╁舰鐨勫垏瑙掓寲瑙掑姬搴�
 const getproject2 = () => {
   states.value=true
   if (states.value){
@@ -458,31 +462,6 @@
     leafer=new Leafer({ view: 'canvas' })
     substringData()
     points.value=[]
-
-
-    /*const radius = 50
-    const cornerPoints = []
-    const startX = 0 + radius  // 宸︿笂瑙掑彸绉�
-    const startY = 0
-    const endX = 0
-    const endY = 0 + radius    // 宸︿笂瑙掍笅绉�
-    const segments = 8 // 鍦嗗姬鍒嗘鏁帮紝瓒婂瓒婂钩婊�
-    for (let i = 0; i <= segments; i++) {
-      const angle = (Math.PI / 2) * (i / segments) // 90搴﹁鍒嗘
-      const x = radius - radius * Math.cos(angle)
-      const y = radius - radius * Math.sin(angle)
-      cornerPoints.push(x, y)
-    }
-    points.value = [
-      0, 100,
-      ...cornerPoints,  // 宸︿笂瑙掑渾寮х偣
-      radius, 0,        // 鍥炲埌鍦嗗姬璧峰鐐�
-      100, 0,          // 鍙充笂瑙�
-      100, 100        // 鍙充笅瑙�
-                // 宸︿笅瑙�
-
-    ]*/
-
 
     let state=0
 
@@ -573,25 +552,9 @@
     })
     leafer.add(polygon)
 
-    /*if((select1.value=="1"&&bValue.value!=="0")||(select2.value=="1"&&cValue.value!=="0")||(select3.value=="1"&&aValue.value!=="0")||(select4.value=="1"&&dValue.value!=="0")){
-      const polygon = new Polygon({
-        points: points.value,
-        stroke: '#f00',
-        zIndex:2,
-        cornerRadius: state/big
-      })
-      leafer.add(polygon)
-    }else{
-      const polygon = new Polygon({
-        points: points.value,
-        stroke: '#f00',
-        zIndex:2,
-      })
-      leafer.add(polygon)
-    }*/
 
     fileJson.value.polygon=[parseInt(a1.value),parseInt(a2.value),parseInt(b1.value),parseInt(b2.value),
-      parseInt(c1.value),parseInt(c2.value),parseInt(d1.value),parseInt(d2.value)]
+      parseInt(c1.value),parseInt(c2.value),parseInt(d1.value),parseInt(d2.value),select1.value,select2.value,select3.value,select4.value]
 
 
     load()
@@ -600,7 +563,7 @@
 }
 
 
-
+//缁樺埗鍚庣殑鏁版嵁澶勭悊
 const exportToDXF = async (value) => {
   const dxf = new DXFWriter();
 
@@ -685,7 +648,7 @@
 }
 
 
-
+//瑙f瀽dxf鏂囦欢
 const fileToBase64 = (file) => {
   return new Promise((resolve, reject) => {
     const reader = new FileReader();
@@ -695,10 +658,13 @@
   });
 };
 
+//鍙嶅悜y鍧愭爣璁$畻
 function toBottomOrigin(y, canvasHeight) {
   return canvasHeight - y; // 灏嗗乏涓婅Y鍧愭爣杞崲涓哄乏涓嬭鍧愭爣绯�
 }
 
+
+//瀵煎叆鏂囦欢鏂规硶
 const handleFile =  async (event) => {
   state.value=false
   const main = document.getElementById('mains')
@@ -732,6 +698,8 @@
   }
 }
 
+
+//瑙f瀽dxf鏂囦欢骞舵樉绀烘柟娉�
 const handleFileUpload =  () => {
   const main =document.getElementById('mains')
   const width =document.getElementById('width')
@@ -956,6 +924,8 @@
   }
 
 };
+
+//鐣岄潰杈撳叆妗嗕笅鎷夋璧嬪��
 const selectData =  (item) => {
   if(item.quadrilateral!=null){
     state.value=true
@@ -977,10 +947,36 @@
     c2.value=item.polygon[5]
     d1.value=item.polygon[6]
     d2.value=item.polygon[7]
+    if(item.polygon[0]==item.polygon[1]){
+      aValue.value=item.polygon[0]+""
+    }else{
+      aValue.value=item.polygon[0]+"/"+item.polygon[1]
+    }
+    if(item.polygon[2]==item.polygon[3]){
+      bValue.value=item.polygon[2]+""
+    }else{
+      bValue.value=item.polygon[2]+"/"+item.polygon[3]
+    }
+    if(item.polygon[4]==item.polygon[5]){
+      cValue.value=item.polygon[4]+""
+    }else{
+      cValue.value=item.polygon[4]+"/"+item.polygon[5]
+    }
+    if(item.polygon[6]==item.polygon[7]){
+      dValue.value=item.polygon[6]+""
+    }else{
+      dValue.value=item.polygon[6]+"/"+item.polygon[7]
+    }
+    select1.value=item.polygon[8]
+    select2.value=item.polygon[9]
+    select3.value=item.polygon[10]
+    select4.value=item.polygon[11]
+
   }
 
 }
 
+//娓呯┖杈撳叆妗�
 const validate = async () => {
   data1.value=0
   data2.value=0
@@ -994,6 +990,7 @@
   return true
 }
 
+//娓呯┖杈撳叆妗�
 const validate1 = async () => {
   a1.value=0
   a2.value=0
@@ -1008,6 +1005,7 @@
   cValue.value="0"
   dValue.value="0"
 }
+//娓呯┖杈撳叆妗�
 const validate2 = async () => {
   data1.value=0
   data2.value=0
@@ -1018,11 +1016,14 @@
   data7.value=0
   data8.value=0
 }
+//杩斿洖鐖剁骇鐣岄潰鏂规硶
 defineExpose({
   validate,
   ongetproject
 })
 
+
+//淇濆瓨鏂规硶
 const save =  () => {
   if(fileName.value!=null&&fileDate.value!=null){
     fileJson.value.quadrilateral=[parseInt(data5.value),parseInt(data6.value),parseInt(data1.value),parseInt(data2.value),
@@ -1033,10 +1034,11 @@
     emits('getUploadPicture', fileName.value,fileDate.value,fileJson.value)
   }else{
     ElMessage.warning("鏈弬涓庝慨鏀�")
+
   }
 
 }
-
+//閲嶇疆鏂规硶
 const reset =  () => {
 
   validate1()
@@ -1120,6 +1122,7 @@
   circle.value.r = val;
 }
 
+//涓嬫媺妗嗚Е鍙�
 const handleChange=(value)=> {
   getproject2()
   /*if(value=="1"){
@@ -1131,6 +1134,8 @@
   }*/
 }
 
+
+//閫氳繃/鎴彇杈撳叆妗嗙殑鍊�
 const  substringData = () =>{
   const indexA = aValue.value.indexOf("/");
   if(indexA==-1){
@@ -1166,6 +1171,7 @@
   }
 }
 
+
 const isQuadrilateral =  (maxY,minY,maxX,minX,point) => {
   state.value=true
   datas1.value=0
@@ -1196,6 +1202,7 @@
   ]
 })
 
+//琛ㄦ牸鍒犻櫎
 const getTableRow = (row,type) =>{
   switch (type) {
     case 'delete':{
@@ -1224,6 +1231,8 @@
   }
 }
 
+
+//閲嶆柊鍔犺浇淇濆瓨鐨勫瓧鍏稿璞℃暟鎹�
 const load= () =>{
   if (pointsRect.value.length > 0) {
 
@@ -1286,12 +1295,12 @@
     <el-input class="contactNumber" @blur="getproject" type="text" v-model="data7"  />
     <el-input class="contactNumber" @blur="getproject" type="text" v-model="data8"  /><br>
   </div>
-  <div id="width" style="height: 20px;position: absolute;top: 342px;left: 725px;">{{$t('order.upper')}}</div>
-  <div id="width" style="height: 20px;position: absolute;top: 364px;left: 725px;">{{$t('order.down')}}</div>
-  <div id="width" style="height: 20px;position: absolute;top: 322px;left: 767px;">{{$t('order.horizontal')}}</div>
-  <div id="width" style="height: 20px;position: absolute;top: 322px;left: 825px;">{{$t('order.vertical')}}</div>
-  <div id="width" style="height: 20px;position: absolute;top: 322px;left: 900px;">{{$t('order.horizontal')}}</div>
-  <div id="width" style="height: 20px;position: absolute;top: 322px;left: 965px;">{{$t('order.vertical')}}</div>
+  <div  style="height: 20px;position: absolute;top: 342px;left: 725px;">{{$t('order.upper')}}</div>
+  <div  style="height: 20px;position: absolute;top: 364px;left: 725px;">{{$t('order.down')}}</div>
+  <div  style="height: 20px;position: absolute;top: 322px;left: 767px;">{{$t('order.horizontal')}}</div>
+  <div  style="height: 20px;position: absolute;top: 322px;left: 825px;">{{$t('order.vertical')}}</div>
+  <div  style="height: 20px;position: absolute;top: 322px;left: 900px;">{{$t('order.horizontal')}}</div>
+  <div  style="height: 20px;position: absolute;top: 322px;left: 965px;">{{$t('order.vertical')}}</div>
   <div style="float: left;margin-top: 30px;margin-left: 690px;">
     <label for="file-upload" class="custom-file-upload">
       {{$t('order.selectFile')}}
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizationRectPrint.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizationRectPrint.vue
index 5d2970e..9ce1126 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizationRectPrint.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizationRectPrint.vue
@@ -3,7 +3,23 @@
     <el-button id="button" type="primary" @click="handlePrint" style="position: fixed; top: 90px; right: 20px; padding: 20px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer;">
       鎵撳嵃
     </el-button>
-    
+
+    <div style="display: flex; align-items: center; gap: 20px; margin-bottom: 20px;">
+      <span>宸ョ▼缂栧彿锛�</span>
+      <el-input readonly placeholder="" style="width: 150px" v-model="processId"></el-input>&nbsp;
+      <el-checkbox v-model="config.plain">
+        鍒囨潗鐜�
+      </el-checkbox>
+      <div style="margin-right: 30px;"></div>
+      <span>甯冨眬閫夋嫨锛�</span>
+      <el-select v-model="config.type"  style="width: 120px;">
+        <el-option v-for="type in linkTypes" :key="type" :value="type" />
+      </el-select>
+      <el-button id="button" type="primary" @click="handlePrint" style="background: #4CAF50; color: white; border: none; cursor: pointer;">
+        棰勮
+      </el-button>
+    </div>
+
     <div ref="printContainer" style="position: relative;">
       <RectRenderer 
         ref="rectRenderer"
@@ -21,29 +37,11 @@
       />
     </div>
   </div>
-  <div style="width: 400px;margin: auto;">
-    <h1 style="margin: auto;text-align: center;">涓婃捣鍖楃幓鑷姩鍖�</h1>
-    <h2 style="margin: auto;text-align: center;">浼樺寲鎶ュ憡</h2>
-    浼樺寲鎶ュ伐
-    <el-table :data="layoutDetails">
-      <el-table-column prop="avgCutRate" label="鍒囪鐜�"></el-table-column>
-      <el-table-column prop="validCutRate" label="鏈夋晥鍒囧壊"></el-table-column>
-      <el-table-column prop="lastCutRate" label="灏剧墖"></el-table-column>
-      <el-table-column prop="" label="鍘熺墖绫诲瀷"></el-table-column>
-      <el-table-column prop="totalQuantity" label="鐗堥潰鏁伴噺"></el-table-column>
-    </el-table>
-    <br>
-    鐗╂枡淇℃伅
-    <el-table :data="materialDetails">
-      <el-table-column prop="width" label="鍘熺墖瀹�"></el-table-column>
-      <el-table-column prop="height" label="鍘熺墖楂�"></el-table-column>
-      <el-table-column prop="processingQuantity" label="鏁伴噺"></el-table-column>
-    </el-table>
-  </div>
+
 </template>
 
 <script setup>
-import { ref, onMounted, watch } from 'vue';
+import { ref, onMounted, watch, reactive, inject } from 'vue';
 import RectRenderer from './page/RectRenderer.vue';
 import request from "@/utils/request";
 
@@ -54,11 +52,14 @@
 const printLayout = ref('2rows-2cols');
 const rectRenderer = ref(null);
 const savedProjectNo = localStorage.getItem('projectNo');
-let processId = null;
+const processId = ref('');
 const layoutData = ref();
 const dataLoaded = ref(false);
 const materialDetails = ref();
+const injectedProjectNo = inject('projectNo', null);
 const state = ref();
+const linkTypes = ['涓�鍒�', '涓ゅ垪', '涓夊垪']
+
 // 瀹氫箟涓嶅悓甯冨眬瀵瑰簲鐨勫昂瀵�
 const layoutDimensions = {
   '4rows-2cols': { width: 1000, height: 1000 },
@@ -74,7 +75,7 @@
 const currentPrintHeight = ref(layoutDimensions[printLayout.value].height);
 
 const selectLayout = () => {
-  request.post(`/glassOptimize/selectOptimizeResult/${processId}`)
+  request.post(`/glassOptimize/selectOptimizeResult/${processId.value}`)
     .then((res) => {
       if (res.code == 200) {
         try {
@@ -93,10 +94,23 @@
     });
 };
 
+const config = reactive({
+  type: '涓ゅ垪',
+  plain: true,
+})
+
 onMounted(() => {
-  if (props.project) {
-    processId=props.project.projectNumber;
-    state.value=props.state;
+  // 浼樺厛浣跨敤娉ㄥ叆鐨� projectNo锛屽叾娆′娇鐢� props锛屾渶鍚庝娇鐢� localStorage
+  if (injectedProjectNo) {
+    processId.value = injectedProjectNo.value || injectedProjectNo;
+  } else if (props.project) {
+    processId.value = props.project.projectNumber || '';
+    state.value = props.state;
+  } else if (savedProjectNo) {
+    processId.value = savedProjectNo;
+  }
+
+  if (processId.value) {
     selectLayout();
   }
 });
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
index 4158621..cbea3b8 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -1938,7 +1938,7 @@
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                destroy-on-close
-               style="width: 614px;height:470px ">
+               style="width: 1114px;height:600px ">
       <update-alien-editor
           ref="refAlienEditor"
           :rowIndex="rowIndex"
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java b/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
index e06de5e..058789a 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
@@ -1183,12 +1183,14 @@
                 }
 
                 Map<String, Object> itemmap = new HashMap<>();
-                itemmap.put("detail",finishedGoodsInventoryMapper.getPrintTitleByBox(
+                List<Map<String, String>> detail = finishedGoodsInventoryMapper.getPrintTitleByBox(
                         finishedGoodsInventory.getOrder().getCustomerId(),
                         finishedGoodsInventory.getOrder().getProject(),
                         boxNo,
                         orderId
-                ) );
+                );
+
+                itemmap.put("detail",detail);
                 //鑾峰彇搴撳瓨閲岄潰姝よ鍗曟绠卞彿鐨勬墍鏈変骇鍝佷俊鎭�
                 List<Map<String, Object>> detailList = finishedGoodsInventoryMapper
                         .getorderProductByBoxNo(orderId,boxNo);
@@ -1198,13 +1200,6 @@
                 for(Map<String, Object> details:detailList){
                     Map<String, Object> detailsmap = new HashMap<>();
                     detailsmap.put("product_name",details.get("product_name").toString());
-                    /*finishedOperateLogMapper
-                            .getDetailLists(
-                                    finishedOperateLog.getOrderId(),
-                                    finishedOperateLog.getRemarks(),
-                                    Integer.valueOf(details.get("product_id").toString()),
-                                    details.get("thickness").toString()
-                            );*/
                     //鑾峰彇鏄庣粏鏁版嵁
                     List<Map<String, Object>> orderDetailList = finishedGoodsInventoryMapper
                             .getPrintDetail(
diff --git a/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml b/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
index a95d7d4..54ff11c 100644
--- a/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
+++ b/north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
@@ -1074,11 +1074,11 @@
     <select id="getPrintTitleByBox">
         select kkk.*,
                rw.teams_groups_name as teams_groups_name2
-        from(select  o.order_id,
+        from(select #{orderId} as order_id,
                  o.customer_name,
                  o.customer_id,
                  o.project,
-                 (select p.batch from sd.`order` p where p.order_id =#{orderId}) as batch,
+                 (select batch from sd.`order` pp1 where pp1.order_id =#{orderId} ) as batch,
                  fol.box_no as 'remarks',
                  SUM(fol.quantity_available) as quantity,
                  ROUND( sum(od.width * od.height * fol.quantity_available) / 1000000, 2 ) as area,

--
Gitblit v1.8.0