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