严智鑫
2024-04-16 e208aa1ef8e861dba168e8d83ab3066fc9f1e02d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
<!--  物料资料  -->
 
 
<script setup>
import { ref } from "vue";
import { ArrowLeftBold, ArrowRight, Search } from "@element-plus/icons-vue";
import request from "@/utils/request";
import deepClone from "@/utils/deepClone";
import { ElMessage } from "element-plus";
import { useRouter } from "vue-router";
 
 
const router = useRouter()
let indexFlag = $ref(1)
function changeRouter(index) {
  indexFlag = index
}
 
 
</script>
 
<script>
export default {
  mounted() {
    //获取数据
    var data="ProcessId="+"P24032508";
    request.get("/TidyUpGlassModule/SelectTerritoryInfo?"+data).then((res) => {
      if (res.code == 200) {
        var StoveCount=0;
        var temperid;
        for(var i=0;i<res.data.length;i++){
          if (temperid != res.data[i].layoutid) {
            StoveCount++;
            temperid=res.data[i].layoutid;
          }
        }   
        // console.log(res.data);
        this.CanvaDraws("mycanvas",res.data,StoveCount);
        
      } else {
        ElMessage.warning(res.msg)
        router.push("/login")
      }
    });
    // request.get("/TidyUpGlassModule/CurrentCutTerritory").then((res) => {
    //   if (res.code == 200) {
    //     console.log(res.data);  
    //   } else {
    //     ElMessage.warning(res.msg)
    //     router.push("/login")
    //   }
    // });
 
    
 
  },
  methods: {
    //Canva(id,基础数据,页面长:实际长,显示行内版图数, )
    //基础数据:实际炉长,实际炉宽, 小片X轴, 小片y轴, 小片长, 小片宽,显示数据(尺寸,ID,流程卡号,版图号)
    CanvaDraws(id,Datas,StoveCount) {
        //var StoveCount=43;//炉数
        var ArrangementMode='linefeed';//排布方式:linefeed(换行) /Wholeline  整行
        var RowMaxCount=3;//每行最多显示的图数
        var StoveWidth=3000; //实际炉宽 2850
        var StoveLength=5500;//实际炉长 5000
        var StoveColor='#CFC8C5';//炉子背景颜色
        
 
        var StoveIntervalX=30; //页面每一炉之间的间距X  px
        var StoveIntervalY=50; //页面每一炉之间的间距Y  px
 
        var HtmlWidth=1800;   //页面横向
        //var actualWidth=12000;//页面横向所对应的实际长度
        var actualWidth=StoveWidth*RowMaxCount;//页面横向所对应的实际长度
 
        var Bli = actualWidth / (HtmlWidth-StoveIntervalX*RowMaxCount);//比例:实际长度mm/页面长度px
 
        var StoveCross=StoveWidth/Bli;   //页面炉子横向 像素
        var StoveVertical=StoveLength/Bli;//页面炉子纵向 像素
 
        var Font1=(StoveCross*0.05);
        var Font2=(StoveCross*0.028);
        // var TerritoryWidth=dataTempered.loadwidth; //实际版图宽
        //   var TerritoryLength=dataTempered.loadlength;//实际版图长
        //   var TerritoryColor='#0DB637';//版图背景颜色
 
        //   var TerritoryCross=TerritoryWidth/Bli;   //页面版图横向 像素
        //   var TerritoryVertical=TerritoryLength/Bli;//页面版图纵向 像素
        console.log(Font1);
        
        var canva = this.$refs[id];
        var content = canva.getContext('2d');
        canva.width = HtmlWidth;
        canva.height = StoveCount%RowMaxCount==0?((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount)):((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount+1));
        //console.log(StoveCount%RowMaxCount==0?((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount)):((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount+1)) );
        var temperid;//初始版图
        var Xlayout = 0; //炉子X轴起点
        var Ylayout = StoveIntervalY; //炉子Y轴起点
        var layoutCount = 0;//版图数
        var row=0;
        for (var i = 0; i < Datas.length; i++) {
          var dataTempered = Datas[i];
 
          var TerritoryWidth=dataTempered.loadwidth; //实际版图宽
          var TerritoryLength=dataTempered.loadlength;//实际版图长
          var TerritoryColor='#0DB637';//版图背景颜色
 
          var TerritoryCross=TerritoryWidth/Bli;   //页面版图横向 像素
          var TerritoryVertical=TerritoryLength/Bli;//页面版图纵向 像素
 
          if (temperid != dataTempered.layoutid) {
            //画版图  更改基础倍数
            if(layoutCount>0){
              Xlayout += StoveCross + StoveIntervalX;
              if (layoutCount %RowMaxCount== 0) {
                //换行
                Ylayout += StoveVertical+StoveIntervalY;
                Xlayout=0;
                row++;
              }
            }
            temperid=dataTempered.layoutid;
            layoutCount++;
            content.font ='bold '+Font1+'px Arial' ; //文字样式:加粗 16像素 字体Arial
            content.fillStyle = '#000000'; //字体颜色
            content.textAlign = 'center'; //文字居中
            content.fillText((dataTempered.layoutid), (StoveCross / 2+ Xlayout), 50/2+(StoveVertical+50)*row+10);
            //炉子
            content.fillStyle = StoveColor;
            content.fillRect(Xlayout, Ylayout, StoveCross, StoveVertical);
            //版图
            content.fillStyle = TerritoryColor;
            content.fillRect(Xlayout, Ylayout, TerritoryCross, TerritoryVertical);
          }
          
          var Rx = dataTempered.xaxis / Bli + Xlayout;
          var Ry = dataTempered.yaxis / Bli + Ylayout;
          var Rwidth = dataTempered.width / Bli;
          var Rheight = dataTempered.height / Bli;
          var Xwidth;
          var Xheight;
          content.fillStyle = '#5CADFE';
          if (dataTempered.rotateangle != 0) {
            Xwidth = Rwidth;
            Xheight = Rheight;
          } else {
            Xwidth = Rheight;
            Xheight = Rwidth;
          }
          content.fillRect(Rx, Ry, Xwidth, Xheight);
          content.font = 'bold '+Font2+'px Arial' ; //文字样式:加粗 16像素 字体Arial
          content.fillStyle = '#000000'; //字体颜色
          content.textAlign = 'center'; //文字居中
 
          content.fillText(('版图:'+dataTempered.layoutid+'-'+dataTempered.sort), (Xwidth / 2) + Rx, (Xheight) / 2 + Ry-Font2);
          content.fillText((dataTempered.width + '  *  ' + dataTempered.height), (Xwidth / 2) + Rx, (Xheight) / 2 + Ry); //fillText里面的可填写的值(文本内容, x坐标, y坐标, 文本最大宽度)
          content.fillText((dataTempered.processid), (Xwidth / 2) + Rx, (Xheight) / 2 + Ry+Font2);
          //content.rotate(30*Math.PI/180);
          content.stroke();
        }
    }
  }
}
 
 
</script>
 
 
 
<template>
  <div ref="content">
    <canvas ref="mycanvas"></canvas>
  </div>
</template>
 
<style scoped>
#main {
  width: 100%;
  height: 100%;
}
 
 
 
#div-title {
  height: 5%;
  width: 100%;
}
 
#searchButton {
  margin-top: -5px;
  margin-left: 1rem;
}
 
#searchButton1 {
  /* margin-left: 10rem; */
}
 
/*main-body样式*/
#main-body {
  width: 99%;
  height: 92%;
  margin-top: 1%;
}
 
#select {
  margin-left: 0.5rem;
}
 
:deep(.indexTag .el-breadcrumb__inner) {
  color: #5CADFE !important;
}
</style>