From a9ffa322f0cf794a7da8182e1be4ca34f5ea19b6 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期五, 25 七月 2025 13:34:36 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/components/sd/order/UpdateAlienEditor.vue |  149 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 128 insertions(+), 21 deletions(-)

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 9136cc3..83484b9 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
@@ -36,8 +36,8 @@
 
 const emits = defineEmits(['getUploadPicture'])
 
-
-
+let fileName=ref(null)
+let fileDate=ref(null)
 let dxfData=ref(null)
 let state=ref(false)
 let points=ref([])
@@ -105,8 +105,8 @@
 const getproject = () => {
   if (state.value){
     leafer = new Leafer({view: 'canvas'})
-    points.value = [datas1.value + (parseInt(data7.value) / big), datas2.value - (parseInt(data8.value) / big), datas3.value + (parseInt(data1.value) / big), datas4.value + (parseInt(data2.value) / big),
-      datas5.value - (parseInt(data3.value) / big), datas6.value + (parseInt(data4.value) / big), datas7.value - (parseInt(data5.value) / big), datas8.value - (parseInt(data6.value) / big)]
+    points.value = [datas1.value + (parseInt(data5.value) / big), datas2.value - (parseInt(data6.value) / big), datas3.value + (parseInt(data1.value) / big), datas4.value + (parseInt(data2.value) / big),
+      datas5.value - (parseInt(data3.value) / big), datas6.value + (parseInt(data4.value) / big), datas7.value - (parseInt(data7.value) / big), datas8.value - (parseInt(data8.value) / big)]
     const polygon = new Polygon({
       points: points.value,
       fill: '#32cd79',
@@ -154,7 +154,8 @@
   const blob = new Blob([dxf.toDxfString()], {type: 'text/plain;charset=utf-8'});
   const base64 = await fileToBase64(blob);
   if(value===1){
-    emits('getUploadPicture', "map.dxf",base64.replace(/^data:.+;base64,/, ""),)
+    fileName.value="map.dxf"
+    fileDate.value=base64.replace(/^data:.+;base64,/, "")
   }
   else if(value===2&&state.value){
     saveAs(blob, 'map.dxf');
@@ -183,6 +184,7 @@
   const main = document.getElementById('mains')
   const width = document.getElementById('width')
   const height = document.getElementById('height')
+  validate()
   if(leafer!==undefined){
     leafer.clear()
   }
@@ -198,7 +200,8 @@
         dxfData.value = parser.parseSync(text);
         handleFileUpload()
 
-        emits('getUploadPicture', file.name,base64.replace(/^data:.+;base64,/, ""))
+        fileName.value=file.name
+        fileDate.value=base64.replace(/^data:.+;base64,/, "")
       } catch (error) {
         console.error('瑙f瀽DXF鏂囦欢鏃跺嚭閿�:', error);
       }
@@ -282,24 +285,17 @@
           main.style.backgroundColor = "#8d9095"
           width.innerHTML = round(maxX - minX, 2)
           height.innerHTML = round(maxY - minY, 2)
-          if(entity.vertices.length==4){
-            state.value=true
-            datas1.value=0
-            datas2.value=(maxY - minY) / big
-            datas3.value=0
-            datas4.value=0
-            datas5.value=(maxX - minX) / big
-            datas6.value=0
-            datas7.value=(maxX - minX) / big
-            datas8.value=(maxY - minY) / big
 
-            points.value=[0, heightAgv, 0, 0, widthAgv, 0, widthAgv,heightAgv]
-
-          }
           let point = entity.vertices.map(v => [
             (v.x - minX) / big,
             toBottomOrigin((v.y - minY) / big, (maxY - minY) / big),
           ]).flat()
+
+
+          if(entity.vertices.length==4){
+            isQuadrilateral(maxY,minY,maxX,minX,point)
+          }
+
           const polygon = new Polygon({
             points: point,
             fill: '#32cd79',
@@ -416,12 +412,120 @@
   validate
 })
 
+const save =  () => {
+  emits('getUploadPicture', fileName.value,fileDate.value)
+}
+
+
+const isQuadrilateral =  (maxY,minY,maxX,minX,point) => {
+  state.value=true
+  datas1.value=0
+  datas2.value=(maxY - minY) / big
+  datas3.value=0
+  datas4.value=0
+  datas5.value=(maxX - minX) / big
+  datas6.value=0
+  datas7.value=(maxX - minX) / big
+  datas8.value=(maxY - minY) / big
+  //points.value=[0, heightAgv, 0, 0, widthAgv, 0, widthAgv,heightAgv]
+
+  let numbers = [point[0], point[2], point[4], point[6]]; // 绀轰緥鏁扮粍
+  let maxX1 = Math.max(...numbers); // 鎵惧埌鏈�澶х殑鏁�
+  let remaining = numbers.filter(num => num !== maxX1); // 绉婚櫎鏈�澶ф暟锛屽墿涓嬬殑鏁扮粍
+  let maxX2 = Math.max(...remaining); // 鍦ㄥ墿浣欑殑鏁颁腑鎵惧埌绗簩澶х殑鏁�
+
+  let arr=[]
+  for (let i=0;i<point.length;i++){
+    let a=[]
+    if(i % 2 === 0){
+      a.push(point[i])
+      a.push((point[i+1]))
+      arr.push(a)
+    }
+
+  }
+  let x=[]
+  let y=[]
+
+  let upperRight=null //鍙充笂
+  let lowerRight=null //鍙充笅
+  let topLeft=null //宸︿笂
+  let lowerLeft=null //宸︿笅
+
+  arr.forEach(item=>{
+    if(item[0]==maxX1||item[0]==maxX2){
+      x.push(item)
+    }else{
+      y.push(item)
+    }
+  })
+
+  if(x[0][1]>x[1][1]){
+    lowerRight=x[0]
+    upperRight=x[1]
+  }else{
+    upperRight=x[0]
+    lowerRight=x[1]
+  }
+
+  if(y[0][1]>y[1][1]){
+    lowerLeft=y[0]
+    topLeft=y[1]
+  }else {
+    topLeft=y[0]
+    lowerLeft=y[1]
+  }
+
+
+  if(lowerLeft[0]*big===0){
+    data5.value=0
+  }else{
+    data5.value=round(lowerLeft[0]*big,0)
+  }
+  if(lowerLeft[1]*big===0){
+    data6.value=0
+  }else{
+    data6.value=round(maxY-minY-lowerLeft[1]*big,0)
+  }
+  if(topLeft[0]*big===0){
+    data1.value=0
+  }else{
+    data1.value=round(topLeft[0]*big,0)
+  }
+  if(topLeft[1]*big===0){
+    data2.value=0
+  }else{
+    data2.value=round(topLeft[1]*big,0)
+  }
+  if(upperRight[0]*big===0){
+    data3.value=0
+  }else{
+    data3.value=round(maxX-minX-upperRight[0]*big,0)
+  }
+  if(upperRight[1]*big===0){
+    data4.value=0
+  }else{
+    data4.value=round(upperRight[1]*big,0)
+  }
+  if(lowerRight[0]*big===0){
+    data7.value=0
+  }else{
+    data7.value=round(maxX-minX-lowerRight[0]*big,0)
+  }
+  if(lowerRight[1]*big===0){
+    data8.value=0
+  }else{
+    data8.value=round(maxY-minY-lowerRight[1]*big,0)
+  }
+}
+
+
 
 </script>
 
 <template>
   <div style="width: 404px;height: 254px;border: 2px solid #000;float: left;
-      position: relative;display: flex;justify-content: center;align-content: center;margin-left: 100px">
+      position: relative;display: flex;justify-content: center;align-content: center;margin-left: 100px;margin-top: 25px;">
     <div id="mains" ref="parent"  >
       <canvas  id="canvas" ></canvas>
     </div>
@@ -445,9 +549,12 @@
   <div id="width" style="height: 20px;position: absolute;top: 322px;left: 320px;">妯�</div>
   <div id="width" style="height: 20px;position: absolute;top: 322px;left: 385px;">绔�</div>
   <div style="float: left;margin-top: 20px;margin-left: 80px;">
-    <input type="file" @change="handleFile" accept=".dxf" />
+    <input style="width: 180px;"  type="file" @change="handleFile" accept=".dxf" />
     <el-button type="primary" @click="exportToDXF(2)">瀵煎嚭DXF</el-button>
   </div>
+  <div style="float: left;margin-top: 20px;margin-left: 80px;">
+    <el-button type="primary" @click="save()">淇濆瓨</el-button>
+  </div>
 
 
 

--
Gitblit v1.8.0