parent
							
								
									836fe2d928
								
							
						
					
					
						commit
						98a34bb014
					
				| @ -0,0 +1,3 @@ | ||||
| import request from "@/utils/request"; | ||||
| 
 | ||||
| export function openCzplBase(data) {return request({url: '/dmCzplpNew/openCzplBase', method: 'post', data})} | ||||
| @ -0,0 +1,162 @@ | ||||
| <template> | ||||
|   <el-tabs v-model="activeName" @tab-click="handleClick"> | ||||
|     <el-tab-pane label="月度计划" name="first"> | ||||
|       <div class="mytable"> | ||||
|         <el-button type="success" @click="symxhz">汇总</el-button> | ||||
|         <Ydjh /> | ||||
|       </div> | ||||
|     </el-tab-pane> | ||||
|     <el-tab-pane label="图纸信息" name="second"> | ||||
|       <div class="mytable"> | ||||
|         <vxe-grid | ||||
|           id="id2" | ||||
|           ref="xGrid2" | ||||
|           border | ||||
|           resizable | ||||
|           keep-source | ||||
|           :align="'center'" | ||||
|           :height="height" | ||||
|           :auto-resize="true" | ||||
|           :columns="tableColumn2" | ||||
|           :data="list2" | ||||
|           :custom-config="{ storage: true }" | ||||
|           highlight-current-row | ||||
|           highlight-hover-row | ||||
|           show-overflow | ||||
|           :scroll-y="{enabled: true}" | ||||
|         > | ||||
|         </vxe-grid> | ||||
|       </div> | ||||
|     </el-tab-pane> | ||||
|     <el-tab-pane label="到货信息" name="third"> | ||||
|       <div class="mytable"> | ||||
|         <vxe-grid | ||||
|           id="id3" | ||||
|           ref="xGrid3" | ||||
|           border | ||||
|           resizable | ||||
|           keep-source | ||||
|           :align="'center'" | ||||
|           :height="height" | ||||
|           :auto-resize="true" | ||||
|           :columns="tableColumn3" | ||||
|           highlight-current-row | ||||
|           :data="list3" | ||||
|           :custom-config="{ storage: true }" | ||||
|           highlight-current-row | ||||
|           highlight-hover-row | ||||
|           show-overflow | ||||
|           :scroll-y="{enabled: true}" | ||||
|         > | ||||
|         </vxe-grid> | ||||
|       </div> | ||||
|     </el-tab-pane> | ||||
|     <el-tab-pane label="上料信息" name="fourth"> | ||||
|       <div class="mytable"> | ||||
|         <vxe-grid | ||||
|           id="id4" | ||||
|           ref="xGrid4" | ||||
|           border | ||||
|           resizable | ||||
|           keep-source | ||||
|           :align="'center'" | ||||
|           :height="height" | ||||
|           :auto-resize="true" | ||||
|           :columns="tableColumn4" | ||||
|           highlight-current-row | ||||
|           :data="list4" | ||||
|           :custom-config="{ storage: true }" | ||||
|           highlight-hover-row | ||||
|           show-overflow | ||||
|           show-header-overflow | ||||
|           :scroll-y="{enabled: true}" | ||||
|         > | ||||
|         </vxe-grid> | ||||
|       </div> | ||||
|     </el-tab-pane> | ||||
|     <el-tab-pane label="抛丸信息" name="fifth"> | ||||
|       <div class="mytable"> | ||||
|         <vxe-grid | ||||
|           id="id5" | ||||
|           ref="xGrid5" | ||||
|           border | ||||
|           resizable | ||||
|           keep-source | ||||
|           :align="'center'" | ||||
|           :height="height" | ||||
|           :auto-resize="true" | ||||
|           :columns="tableColumn5" | ||||
|           highlight-current-row | ||||
|           :data="list5" | ||||
|           :custom-config="{ storage: true }" | ||||
|           highlight-hover-row | ||||
|           show-overflow | ||||
|           show-header-overflow | ||||
|           :scroll-y="{enabled: true}" | ||||
|         > | ||||
|         </vxe-grid> | ||||
|       </div> | ||||
|     </el-tab-pane> | ||||
|     <el-tab-pane label="切割信息" name="sixth"> | ||||
|       <div class="mytable"> | ||||
|         <vxe-grid | ||||
|           id="id6" | ||||
|           ref="xGrid6" | ||||
|           border | ||||
|           resizable | ||||
|           keep-source | ||||
|           :align="'center'" | ||||
|           :height="height" | ||||
|           :auto-resize="true" | ||||
|           :columns="tableColumn7" | ||||
|           highlight-current-row | ||||
|           :data="list6" | ||||
|           :custom-config="{ storage: true }" | ||||
|           highlight-hover-row | ||||
|           show-overflow | ||||
|           show-header-overflow | ||||
|           :scroll-y="{enabled: true}" | ||||
|         > | ||||
|         </vxe-grid> | ||||
|       </div> | ||||
|     </el-tab-pane> | ||||
|   </el-tabs> | ||||
| </template> | ||||
| <script> | ||||
| import Ydjh from "@/views/jhzx/components/ydjhzxgl/Ydjh.vue"; | ||||
| 
 | ||||
| export default { | ||||
|   name:'YdjhzxglTabs', | ||||
|   components: {Ydjh}, | ||||
|   data(){ | ||||
|     return { | ||||
|       activeName:'first', | ||||
|     } | ||||
|   }, | ||||
|   methods:{ | ||||
|     handleClick(tab, event) { | ||||
|       if(this.activeName==='second'){ | ||||
|         // alert('线表计划') | ||||
| 
 | ||||
|       } | ||||
|       if(this.activeName==='third'){ | ||||
|         // alert('批量表') | ||||
| 
 | ||||
|       } | ||||
|       if(this.activeName==='fourth'){ | ||||
|         // alert('图纸') | ||||
| 
 | ||||
|       } | ||||
|       if(this.activeName==='fifth'){ | ||||
|         // alert('到货') | ||||
|         if (this.list.length>0){ | ||||
| 
 | ||||
|         } | ||||
|       } | ||||
|       if(this.activeName==='sixth'){ | ||||
|         console.log(this.list5) | ||||
|       } | ||||
|     }, | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| @ -0,0 +1,54 @@ | ||||
| <template> | ||||
|     <div id="menu" ref="selectRef" v-show="selectShow"> | ||||
|       <template v-for="(item,index) in projectList"> | ||||
|         <button @click="projectSelect(item.dcch)">{{ item.dcch }}</button> | ||||
|       </template> | ||||
|     </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import initSearch from "@/views/sliao/comps/search"; | ||||
| import {openCzplBase} from "@/api/openapi"; | ||||
| 
 | ||||
| export default { | ||||
|   name:'SelectDemo', | ||||
|   data(){ | ||||
|     return{ | ||||
|       selectShow:false, | ||||
|       selectText:'', | ||||
|       projectList:[] | ||||
|     } | ||||
|   }, | ||||
|   methods:{ | ||||
|     initBase(){ | ||||
|       openCzplBase({}).then(res=>{ | ||||
|         const arr=[] | ||||
|         for (const item of res.data.cbbm) { | ||||
|           if (item.wgbs==='N'){ | ||||
|             const data={dcch:item.cbbm} | ||||
|             arr.push(data) | ||||
|           } | ||||
|         } | ||||
|         this.projectList=arr | ||||
|       }) | ||||
|     }, | ||||
|     initSearch(stage){ | ||||
|       const {group}=initSearch() | ||||
|       const selectNode=this.$refs.selectRef | ||||
|       group.on('click touchstart',function (){ | ||||
|         selectNode.style.display = 'initial'; | ||||
|         const containerRect = stage.container().getBoundingClientRect(); | ||||
|         selectNode.style.top = containerRect.top + stage.getPointerPosition().y + 4 + 'px'; | ||||
|         selectNode.style.left = containerRect.left + stage.getPointerPosition().x + 4 + 'px'; | ||||
|       }) | ||||
|     }, | ||||
|     projectSelect(dcch){ | ||||
|       this.queryParam.dcch=dcch | ||||
|       this.selectText.fill("black") | ||||
|       this.selectText.text(dcch) | ||||
|       const selectNode=this.$refs.selectRef | ||||
|       selectNode.style.display = 'none'; | ||||
|     }, | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| @ -0,0 +1,37 @@ | ||||
| <template> | ||||
|   <div id="searchPl" ref="searchPl"> | ||||
|     <ProjectSelect ref="projectSelectRef" :_style="{width:'115px'}"/> | ||||
|     <VxeInput v-model="queryParam.dcPl" placeholder="请输入批量"/> | ||||
|     <VxeInput v-model="queryParam.dcFd" placeholder="请输入分段"/> | ||||
|     <VxeInput type="date" value-format="yyyy/MM/dd" label-format="yyyy/MM/dd"  v-model="queryParam.sljhrq" placeholder="请选择上料日期"/> | ||||
|     <VxeButton status="primary" content="查询" @click="search" /> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| import ProjectSelect from "@/components/ProjectSelect/index.vue"; | ||||
| 
 | ||||
| export default { | ||||
|   name:'SliaoSearch', | ||||
|   components:{ProjectSelect}, | ||||
|   data(){ | ||||
|     return{ | ||||
|       queryParam:{ | ||||
|         dcCh:'', | ||||
|         dcPl:'', | ||||
|         dcFd:'', | ||||
|         sljhrq:'' | ||||
|       }, | ||||
|     } | ||||
|   }, | ||||
|   methods:{ | ||||
|     search(){ | ||||
|       this.queryParam.dcCh=this.$refs.projectSelectRef.getDcch() | ||||
|       this.$emit('search',this.queryParam) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| 
 | ||||
| </style> | ||||
| @ -0,0 +1,180 @@ | ||||
| import Konva from "konva"; | ||||
| 
 | ||||
| const baifang=function (option={}) { | ||||
|   const width=option.width,height=option.height,slList=option.dw,image=require('@/assets/gb.png') | ||||
|   const _width=width*0.4-50,_height=height*0.81 | ||||
|   const container=function (){ | ||||
|     const x=width*0.6+40,y=190 | ||||
| 
 | ||||
|     const group=new Konva.Group({ | ||||
|       x:x, | ||||
|       y:y, | ||||
|       width:_width, | ||||
|       height:_height | ||||
|     }) | ||||
| 
 | ||||
|     const rect=new Konva.Rect({ | ||||
|       x:0, | ||||
|       y:0, | ||||
|       width:_width, | ||||
|       height:_height, | ||||
|       stroke:'black', | ||||
|       strokeWidth:1, | ||||
|     }) | ||||
| 
 | ||||
|     group.add(rect) | ||||
| 
 | ||||
|     return group | ||||
|   } | ||||
| 
 | ||||
|   const slGroup=container() | ||||
| 
 | ||||
|   const thatHeight=height | ||||
|   const gangban=function (index,str){ | ||||
|     const group=new Konva.Group({ | ||||
|       x:0, | ||||
|       y:thatHeight-260-index*40, | ||||
|       draggable:true | ||||
|     }) | ||||
| 
 | ||||
|     group.setAttr('index',index) | ||||
| 
 | ||||
|     slGroup.add(group) | ||||
|     const {x}=group.absolutePosition() | ||||
|     group.dragBoundFunc(function (pos){ | ||||
|       return { | ||||
|         x:x, | ||||
|         y:pos.y | ||||
|       } | ||||
|     }) | ||||
|     let _index=0 | ||||
| 
 | ||||
|     group.on('dragstart',function (){ | ||||
|       const {x,y}=this.absolutePosition() | ||||
|       this.startPos={ | ||||
|         x:x, | ||||
|         y:y | ||||
|       } | ||||
|     }) | ||||
|     group.on('dragmove',function (){ | ||||
|       if(_index===0){ | ||||
|         _index=this.getAttr('index') | ||||
|       } | ||||
|       this.zIndex(999) | ||||
|       const {y:thisY}=this.absolutePosition() | ||||
| 
 | ||||
|       const dir=thisY-this.startPos.y>0?-40:40 | ||||
| 
 | ||||
|       const children=slGroup.children | ||||
| 
 | ||||
|       for (const child of children) { | ||||
|         if (child===this){ | ||||
|           return | ||||
|         } | ||||
| 
 | ||||
|         const {y:thatY}=child.absolutePosition() | ||||
|         const moveDir=child.getAttr('moveDir')||0 | ||||
|         if (thisY>=thatY&&thisY<=thatY+40&&moveDir!==dir){ | ||||
|           child.setAttr('moveDir',dir); | ||||
|           _index+=dir>0?1:-1 | ||||
|           child.move({ | ||||
|             y:dir | ||||
|           }) | ||||
|           this.startPos={ | ||||
|             x:x, | ||||
|             y:thisY | ||||
|           } | ||||
|         } | ||||
| 
 | ||||
|       } | ||||
|     }) | ||||
| 
 | ||||
|     group.on('dragend',function (){ | ||||
|       const index=this.getAttr('index') | ||||
|       const element = slList.splice(index-1, 1)[0]; | ||||
|       slList.splice(_index-1, 0, element); | ||||
|       this.setAttr('index',_index) | ||||
|       _index=0 | ||||
|       slGroup.destroyChildren() | ||||
|       handler(slList) | ||||
|     }) | ||||
| 
 | ||||
|     const indexRect=new Konva.Rect({ | ||||
|       x:0, | ||||
|       y:0, | ||||
|       width:40, | ||||
|       height:40, | ||||
|       stroke:'black', | ||||
|       strokeWidth:1, | ||||
|     }) | ||||
|     //group.add(indexRect)
 | ||||
| 
 | ||||
|     const indexText=new Konva.Text({ | ||||
|       x:0, | ||||
|       y:0, | ||||
|       width:40, | ||||
|       height:40, | ||||
|       fill:'black', | ||||
|       text:index, | ||||
|       align:'center', | ||||
|       verticalAlign:'middle', | ||||
|     }) | ||||
|     group.add(indexText) | ||||
| 
 | ||||
|     //层  规格,套料图 船号,上料日期,计划切割日期
 | ||||
|     const imageObj = new Image(); | ||||
|     const imgSize=200 | ||||
|     imageObj.src = image; | ||||
|     imageObj.onload = function () { | ||||
|       const shape = new Konva.Image({ | ||||
|         x: 60, | ||||
|         y: 0, | ||||
|         width: imgSize, | ||||
|         height:40, | ||||
|         image: imageObj, | ||||
|       }); | ||||
|       group.add(shape) | ||||
|       const gbText=new Konva.Text({ | ||||
|         x: 60, | ||||
|         y: 0, | ||||
|         width: imgSize, | ||||
|         height:40, | ||||
|         fill:'black', | ||||
|         text:str+',12*2830*13090', | ||||
|         align:'center', | ||||
|         verticalAlign:'middle', | ||||
|       }) | ||||
|       group.add(gbText) | ||||
|     } | ||||
| 
 | ||||
|     const concent=new Konva.Text({ | ||||
|       x: imgSize+60, | ||||
|       y: 0, | ||||
|       width: imgSize+40, | ||||
|       height:40, | ||||
|       fill:'black', | ||||
|       text:'G175K-4,001,2302\n上料:2024/07/01,切割:2024/07/04', | ||||
|       align:'center', | ||||
|       verticalAlign:'middle', | ||||
|     }) | ||||
|     group.add(concent) | ||||
| 
 | ||||
|     return group | ||||
|   } | ||||
| 
 | ||||
|   function handler(slList){ | ||||
|     for (let i = 1; i <= slList.length; i++) { | ||||
|       const item=slList[i-1] | ||||
|       const _group=gangban(i,item,item.length) | ||||
|       slGroup.add(_group) | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   handler(slList) | ||||
| 
 | ||||
|   return { | ||||
|     container,slGroup,handler | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export default baifang | ||||
| @ -0,0 +1,19 @@ | ||||
| import Konva from "konva"; | ||||
| 
 | ||||
| const container=function (width=0,height=0,container){ | ||||
|   const stage = new Konva.Stage({ | ||||
|     container: container, | ||||
|     width: width, | ||||
|     height: height, | ||||
|   }); | ||||
| 
 | ||||
|   const layer = new Konva.Layer(); | ||||
|   stage.add(layer) | ||||
|   layer.draw(); | ||||
| 
 | ||||
|   return { | ||||
|     stage,layer | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export default container | ||||
| @ -0,0 +1,82 @@ | ||||
| import Konva from "konva"; | ||||
| 
 | ||||
| const liliao=function (width,height,dw,callback) { | ||||
| 
 | ||||
|   const _width=width*0.4,_height=height*0.81 | ||||
|   const container=function (){ | ||||
|     const x=width*0.2+30,y=190 | ||||
| 
 | ||||
|     const group=new Konva.Group({ | ||||
|       x:x, | ||||
|       y:y, | ||||
|       width:_width, | ||||
|       height:_height | ||||
|     }) | ||||
| 
 | ||||
|     const rect=new Konva.Rect({ | ||||
|       x:0, | ||||
|       y:0, | ||||
|       width:_width, | ||||
|       height:_height, | ||||
|       stroke:'black', | ||||
|       strokeWidth:1, | ||||
|     }) | ||||
| 
 | ||||
|     group.add(rect) | ||||
| 
 | ||||
|     for (let i = 0; i < dw.length; i++) { | ||||
|       const item=dw[i] | ||||
|       const _group=duowei(i,item.name) | ||||
|       group.add(_group) | ||||
|     } | ||||
| 
 | ||||
|     return group | ||||
|   } | ||||
| 
 | ||||
|   const duowei=function (index,str){ | ||||
|     const alignSize=3 | ||||
|     const width=((_width-60)/alignSize),height=208 | ||||
|     const x=index%alignSize*width+index%alignSize*10+20,y=height*(Math.floor(index/alignSize))+(Math.floor(index/alignSize)+1)*10 | ||||
|     const group=new Konva.Group({ | ||||
|       x:x, | ||||
|       y:y, | ||||
|       width:width, | ||||
|       height:height | ||||
|     }) | ||||
|     group.on('click touchstart',function (){ | ||||
|       callback(index,dw[index].list) | ||||
|     }) | ||||
| 
 | ||||
|     const rect=new Konva.Rect({ | ||||
|       x:0, | ||||
|       y:0, | ||||
|       width:width, | ||||
|       height:height, | ||||
|       stroke:'black', | ||||
|       strokeWidth:1, | ||||
|     }) | ||||
| 
 | ||||
|     group.add(rect) | ||||
| 
 | ||||
|     const text=new Konva.Text({ | ||||
|       x:0, | ||||
|       y:0, | ||||
|       width: width, | ||||
|       height: height, | ||||
|       fill:'black', | ||||
|       text:str, | ||||
|       align:'center', | ||||
|       verticalAlign:'middle', | ||||
|       fontSize:20 | ||||
|     }) | ||||
|     group.add(text) | ||||
| 
 | ||||
|     return group | ||||
|   } | ||||
| 
 | ||||
|   return { | ||||
|     container,duowei | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export default liliao | ||||
| @ -0,0 +1,79 @@ | ||||
| import Konva from "konva"; | ||||
| 
 | ||||
| const workers=function (width,height,persons) { | ||||
| 
 | ||||
|   const _width=width*0.2,_height=height*0.81 | ||||
|   const container=function (){ | ||||
|     const x=20,y=190 | ||||
| 
 | ||||
|     const group=new Konva.Group({ | ||||
|       x:x, | ||||
|       y:y, | ||||
|       width:_width, | ||||
|       height:_height | ||||
|     }) | ||||
| 
 | ||||
|     const rect=new Konva.Rect({ | ||||
|       x:0, | ||||
|       y:0, | ||||
|       width:_width, | ||||
|       height:_height, | ||||
|       stroke:'black', | ||||
|       strokeWidth:1, | ||||
|     }) | ||||
| 
 | ||||
|     group.add(rect) | ||||
| 
 | ||||
|     for (let i = 0; i < persons.length; i++) { | ||||
|       const item=persons[i] | ||||
|       const _group=person(i,item.name,persons.length) | ||||
|       group.add(_group) | ||||
|     } | ||||
| 
 | ||||
|     return group | ||||
|   } | ||||
| 
 | ||||
|   const person=function (index,str,img,size){ | ||||
|     const alignSize=2 | ||||
|     const width=((_width-30)/alignSize),height=108 | ||||
|     const x=index%alignSize*width+(index%alignSize+1)*10,y=height*(Math.floor(index/alignSize))+(Math.floor(index/alignSize)+1)*10 | ||||
|     const group=new Konva.Group({ | ||||
|       x:x, | ||||
|       y:y, | ||||
|       width:width, | ||||
|       height:height | ||||
|     }) | ||||
| 
 | ||||
|     const rect=new Konva.Rect({ | ||||
|       x:0, | ||||
|       y:0, | ||||
|       width:width, | ||||
|       height:height, | ||||
|       stroke:'black', | ||||
|       strokeWidth:1, | ||||
|     }) | ||||
| 
 | ||||
|     group.add(rect) | ||||
| 
 | ||||
|     const text=new Konva.Text({ | ||||
|       x:0, | ||||
|       y:0, | ||||
|       width: width, | ||||
|       height: height, | ||||
|       fill:'black', | ||||
|       text:str, | ||||
|       align:'center', | ||||
|       verticalAlign:'middle', | ||||
|       fontSize:20 | ||||
|     }) | ||||
|     group.add(text) | ||||
| 
 | ||||
|     return group | ||||
|   } | ||||
| 
 | ||||
|   return { | ||||
|     container | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export default workers | ||||
| @ -0,0 +1,56 @@ | ||||
| import Konva from "konva"; | ||||
| 
 | ||||
| const search=function (){ | ||||
|   const group=new Konva.Group({ | ||||
|     x:20, | ||||
|     y:50 | ||||
|   }) | ||||
|   const selectRect=new Konva.Rect({ | ||||
|     x: 0, | ||||
|     y: 0, | ||||
|     fill:'#ffffff', | ||||
|     width: 110, | ||||
|     height:20, | ||||
|     stroke:'black', | ||||
|     strokeWidth:1, | ||||
|   }) | ||||
|   group.add(selectRect) | ||||
|   const plRect=new Konva.Rect({ | ||||
|     x: 115, | ||||
|     y: 0, | ||||
|     fill:'#ffffff', | ||||
|     width: 110, | ||||
|     height:20, | ||||
|     stroke:'black', | ||||
|     strokeWidth:1, | ||||
|   }) | ||||
|   group.add(plRect) | ||||
| 
 | ||||
|   const fdRect=new Konva.Rect({ | ||||
|     x: 230, | ||||
|     y: 0, | ||||
|     fill:'#ffffff', | ||||
|     width: 110, | ||||
|     height:20, | ||||
|     stroke:'black', | ||||
|     strokeWidth:1, | ||||
|   }) | ||||
|   group.add(fdRect) | ||||
| 
 | ||||
|   const sljhrqRect=new Konva.Rect({ | ||||
|     x: 345, | ||||
|     y: 0, | ||||
|     fill:'#ffffff', | ||||
|     width: 115, | ||||
|     height:20, | ||||
|     stroke:'black', | ||||
|     strokeWidth:1, | ||||
|   }) | ||||
|   group.add(sljhrqRect) | ||||
| 
 | ||||
|   return { | ||||
|     group | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export default search | ||||
| @ -0,0 +1,31 @@ | ||||
| import Konva from "konva"; | ||||
| 
 | ||||
| let _width=0,_height=0 | ||||
| export const sljh=function (width,height){ | ||||
| 
 | ||||
|   _width=width | ||||
|   _height=height | ||||
|   const layer=new Konva.Layer() | ||||
|   layer.draw() | ||||
| 
 | ||||
|   const group=new Konva.Group({ | ||||
|     x:15, | ||||
|     y:65, | ||||
|     width: width-30, | ||||
|     height: height*0.2-60, | ||||
|     stroke:'blue', | ||||
|     strokeWidth:1, | ||||
|     draggable: true, | ||||
|     dragBoundFunc:function (pos){ | ||||
|       return { | ||||
|         x:pos.x, | ||||
|         y:65 | ||||
|       } | ||||
|     }, | ||||
|   }); | ||||
|   layer.add(group) | ||||
| 
 | ||||
|   return { | ||||
|     layer,group | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| import Konva from "konva"; | ||||
| 
 | ||||
| const title=function (width,height,title) { | ||||
|   return new Konva.Text({ | ||||
|     x: 0, | ||||
|     y: 8, | ||||
|     width: width, | ||||
|     height: 20, | ||||
|     lineHeight: 1, | ||||
|     stroke: 'blue', | ||||
|     strokeWidth: 2, | ||||
|     text: title, | ||||
|     align: 'center', | ||||
|     fontSize: 32, | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| export default title | ||||
| @ -0,0 +1,658 @@ | ||||
| <template> | ||||
|   <div id="sliao" class="sliao" ref="sliao"></div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import Konva from "konva"; | ||||
| import sliao from "@/views/sliao/draw"; | ||||
| 
 | ||||
| export default { | ||||
|   name:'SLiao', | ||||
|   data(){ | ||||
|     return { | ||||
|       title:'上  料  作  业  区', | ||||
|       stage:null, | ||||
| 
 | ||||
|       layer:null, | ||||
|       width:'', | ||||
|       height:'', | ||||
|       gbImage:require('@/assets/gb.png'), | ||||
| 
 | ||||
|       mountGroup:null, | ||||
|       sljhStage:null, | ||||
|       sljhLayer:null, | ||||
|       sljhGroup:null, | ||||
|       sljhList:[],//上料计划 | ||||
| 
 | ||||
|       canSl:false, | ||||
| 
 | ||||
|       slGroup:'', | ||||
|       slList:'', | ||||
|       dwGroup:'', | ||||
|       qyList:[//区域,每个内部包含垛位信息 | ||||
|         { | ||||
|           name:'一区', | ||||
|           dw:[ | ||||
|             { | ||||
|               name:'一剁', | ||||
|               list:['板材1','板材2','板材3','板材4','板材5','板材6','板材7','板材8','板材9','板材10','板材11','板材12','板材13','板材14',] | ||||
|             }, | ||||
|             { | ||||
|               name:'二剁', | ||||
|               list:['板材1','板材2','板材3','板材4','板材5','板材6','板材7','板材8','板材9','板材10','板材11','板材12','板材13','板材14',] | ||||
|             } | ||||
|           ] | ||||
|         }, | ||||
|         { | ||||
|           name:'二区', | ||||
|           dw:[ | ||||
|             { | ||||
|               name:'一剁', | ||||
|               list:['板材1','板材2','板材3','板材4','板材5','板材6','板材7','板材8','板材9','板材10','板材11','板材12','板材13','板材14',] | ||||
|             } | ||||
|           ] | ||||
|         }, | ||||
|       ], | ||||
|       sljhItemList:[ | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX006',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX007',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX096',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX007',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX006',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B706N4PX077',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX098',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX998',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX008',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX098',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|         {czbh:'G175K-4',pl:'001',tzbh:'B006N4PX099',perQy:'一区',perDw:'一剁',perCeng:'三层'}, | ||||
|       ], | ||||
|       msg:'板材1放入一剁三层', | ||||
|       worker:null, | ||||
|       startMoveX:0, | ||||
|       startMoveTime:0, | ||||
|       isMoving:false, | ||||
|       currentQyIndex:-1, | ||||
|       currentDwIndex:-1, | ||||
|       removeSljhItemIndex:-1, | ||||
|     } | ||||
|   }, | ||||
|   created(){}, | ||||
|   mounted() { | ||||
|     this.initKonvaStage(); | ||||
|     //fixme 调试用 | ||||
|     this.drawMsg() | ||||
|     this.drawSljhItem(this.sljhItemList) | ||||
|   }, | ||||
|   methods: { | ||||
|     //料场垛位实际情况 | ||||
|     drawSlItem(slList={}){ | ||||
|       for (let i = 1; i <=slList.length; i++) { | ||||
|         const gb=slList[i-1] | ||||
|         const group=new Konva.Group({ | ||||
|           x:0, | ||||
|           y:this.height-260-i*40, | ||||
|           draggable:true | ||||
|         }) | ||||
| 
 | ||||
|         group.setAttr('index',i) | ||||
| 
 | ||||
|         const that=this | ||||
|         this.slGroup.add(group) | ||||
|         const {x}=group.absolutePosition() | ||||
|         group.dragBoundFunc(function (pos){ | ||||
|           return { | ||||
|             x:x, | ||||
|             y:pos.y | ||||
|           } | ||||
|         }) | ||||
|         let _index=0 | ||||
| 
 | ||||
|         group.on('dragstart',function (){ | ||||
|           const {x,y}=this.absolutePosition() | ||||
|           this.startPos={ | ||||
|             x:x, | ||||
|             y:y | ||||
|           } | ||||
|         }) | ||||
|         group.on('dragmove',function (){ | ||||
|           if(_index===0){ | ||||
|             _index=this.getAttr('index') | ||||
|           } | ||||
|           this.zIndex(999) | ||||
|           const {y:thisY}=this.absolutePosition() | ||||
| 
 | ||||
|           const dir=thisY-this.startPos.y>0?-40:40 | ||||
| 
 | ||||
|           const children=that.slGroup.children | ||||
| 
 | ||||
|           for (const child of children) { | ||||
|             if (child===this){ | ||||
|               return | ||||
|             } | ||||
| 
 | ||||
|             const {y:thatY}=child.absolutePosition() | ||||
|             const moveDir=child.getAttr('moveDir')||0 | ||||
|             if (thisY>=thatY&&thisY<=thatY+40&&moveDir!==dir){ | ||||
|               child.setAttr('moveDir',dir); | ||||
|               _index+=dir>0?1:-1 | ||||
|               child.move({ | ||||
|                 y:dir | ||||
|               }) | ||||
|               this.startPos={ | ||||
|                 x:x, | ||||
|                 y:thisY | ||||
|               } | ||||
|             } | ||||
| 
 | ||||
|           } | ||||
|         }) | ||||
| 
 | ||||
|         group.on('dragend',function (){ | ||||
|           console.log(_index) | ||||
|           const index=this.getAttr('index') | ||||
|           const element = slList.splice(index-1, 1)[0]; | ||||
|           slList.splice(_index-1, 0, element); | ||||
|           this.setAttr('index',_index) | ||||
|           _index=0 | ||||
|           that.slGroup.destroyChildren() | ||||
|           that.drawSlItem(slList) | ||||
|         }) | ||||
| 
 | ||||
|         const indexRect=new Konva.Rect({ | ||||
|           x:0, | ||||
|           y:0, | ||||
|           width:40, | ||||
|           height:40, | ||||
|           stroke:'black', | ||||
|           strokeWidth:1, | ||||
|         }) | ||||
|         //group.add(indexRect) | ||||
| 
 | ||||
|         const indexText=new Konva.Text({ | ||||
|           x:0, | ||||
|           y:0, | ||||
|           width:40, | ||||
|           height:40, | ||||
|           fill:'black', | ||||
|           text:i, | ||||
|           align:'center', | ||||
|           verticalAlign:'middle', | ||||
|         }) | ||||
|         group.add(indexText) | ||||
| 
 | ||||
|         //层  规格,套料图 船号,上料日期,计划切割日期 | ||||
|         const imageObj = new Image(); | ||||
|         const imgSize=300 | ||||
|         imageObj.src = this.gbImage; | ||||
|         imageObj.onload = function () { | ||||
|           const shape = new Konva.Image({ | ||||
|             x: 60, | ||||
|             y: 0, | ||||
|             width: imgSize, | ||||
|             height:40, | ||||
|             image: imageObj, | ||||
|           }); | ||||
|           group.add(shape) | ||||
|           const gbText=new Konva.Text({ | ||||
|             x: 60, | ||||
|             y: 0, | ||||
|             width: imgSize, | ||||
|             height:40, | ||||
|             fill:'black', | ||||
|             text:gb+',12*2830*13090', | ||||
|             align:'center', | ||||
|             verticalAlign:'middle', | ||||
|           }) | ||||
|           group.add(gbText) | ||||
|         } | ||||
| 
 | ||||
|         const concent=new Konva.Text({ | ||||
|           x: imgSize+40, | ||||
|           y: 0, | ||||
|           width: imgSize, | ||||
|           height:40, | ||||
|           fill:'black', | ||||
|           text:'G175K-4,上料:2024/07/01,切割:2024/07/04', | ||||
|           align:'center', | ||||
|           verticalAlign:'middle', | ||||
|         }) | ||||
|         group.add(concent) | ||||
|       } | ||||
|     }, | ||||
|     //绘制上料计划钢板信息 | ||||
|     drawSljhItem(list){ | ||||
|       const itemWith=80; | ||||
|       const itemHeight=108 | ||||
|       this.sljhList=[] | ||||
|       for (let i = 0; i < list.length; i++) { | ||||
|         const item=list[i]; | ||||
|         const x=(i+1)*5+i*itemWith; | ||||
|         const qyGroup=new Konva.Group({ | ||||
|           x:x, | ||||
|           y:10, | ||||
|           width:itemWith, | ||||
|           height:itemHeight, | ||||
|         }) | ||||
|         qyGroup.setAttr('index',i) | ||||
| 
 | ||||
|         const _layer=this.layer | ||||
|         const _sljhGroup=this.sljhGroup; | ||||
|         const _dwGroup=this.dwGroup | ||||
|         let touchingFlag=false; | ||||
|         const that=this | ||||
|         qyGroup.on('touchstart',function ({evt}){ | ||||
|           if (!that.canSl){ | ||||
|             return | ||||
|           } | ||||
| 
 | ||||
|           const {clientX:x,clientY:y}=evt.touches[0] | ||||
|           touchingFlag=true; | ||||
|           const _that=this | ||||
|           setTimeout(()=>{ | ||||
|             const movingFlag=_sljhGroup.isDragging() | ||||
|             if (!movingFlag){ | ||||
|               if (touchingFlag){ | ||||
|                 _sljhGroup.draggable(false) | ||||
|                 const tmpGroup=_that.clone(); | ||||
|                 tmpGroup.x(x-10) | ||||
|                 tmpGroup.y(y-10) | ||||
|                 _layer.add(tmpGroup) | ||||
|                 tmpGroup.draggable(true) | ||||
|                 tmpGroup.dragBoundFunc(function (pos){ | ||||
|                   const {x,y}=that.slGroup.absolutePosition() | ||||
|                   const maxX=x+that.width*0.4-20 | ||||
|                   const maxY=y+that.height*0.8-20 | ||||
|                   if(pos.x>=x&&pos.y>=y&&pos.x<=maxX&&pos.y<=maxY){ | ||||
| 
 | ||||
|                   } | ||||
|                   return{ | ||||
|                     x:pos.x, | ||||
|                     y:pos.y | ||||
|                   } | ||||
|                 }) | ||||
|                 tmpGroup.on('dragend',function (){ | ||||
|                   const {x:thisX,y:thisY}=this.absolutePosition() | ||||
|                   const {x,y}=that.slGroup.absolutePosition() | ||||
|                   const maxX=x+that.width*0.4-20 | ||||
|                   const maxY=y+that.height*0.8-20 | ||||
|                   if(thisX>=x&&thisY>=y&&thisX<=maxX&&thisY<=maxY){ | ||||
|                     that.qyList[that.currentQyIndex].dw[that.currentDwIndex].list.push('12123') | ||||
|                     that.slGroup.destroyChildren() | ||||
|                     that.drawSlItem(that.qyList[that.currentQyIndex].dw[that.currentDwIndex].list) | ||||
|                     this.remove() | ||||
|                     that.sljhItemList.splice(this.getAttr('index'),1) | ||||
|                     that.sljhGroup.destroyChildren() | ||||
|                     that.drawSljhItem(that.sljhItemList) | ||||
|                     _sljhGroup.draggable(true) | ||||
|                   }else{ | ||||
|                     this.remove() | ||||
|                     _that.visible(true) | ||||
|                   } | ||||
|                 }) | ||||
|                 tmpGroup.startDrag() | ||||
|                 _that.visible(false) | ||||
|               } | ||||
|             } | ||||
|             if (movingFlag){ | ||||
| 
 | ||||
|             } | ||||
|           },500) | ||||
|         }) | ||||
| 
 | ||||
|         qyGroup.on('touchend',function (){ | ||||
|           touchingFlag=false; | ||||
|           this.draggable(false) | ||||
|         }) | ||||
| 
 | ||||
|         const rect=new Konva.Rect({ | ||||
|           x:0, | ||||
|           y:0, | ||||
|           width:itemWith, | ||||
|           height:itemHeight, | ||||
|           stroke:'black', | ||||
|           strokeWidth:1, | ||||
|         }) | ||||
|         qyGroup.add(rect) | ||||
|         const text=new Konva.Text({ | ||||
|           x:0, | ||||
|           y:0, | ||||
|           width:itemWith, | ||||
|           height:itemHeight, | ||||
|           lineHeight:1, | ||||
|           stroke:'blue', | ||||
|           strokeWidth:0.1, | ||||
|           text:item.czbh+'\n'+item.pl+'\n'+item.tzbh+'\n建议位置\n'+item.perQy+'\n'+item.perDw+'\n'+item.perCeng, | ||||
|           align:'center', | ||||
|           verticalAlign:'middle', | ||||
|         }) | ||||
|         qyGroup.add(text) | ||||
| 
 | ||||
|         this.sljhList.push(qyGroup) | ||||
|         this.sljhGroup.add(qyGroup) | ||||
|         // this.mountGroup.add(qyGroup) | ||||
|       } | ||||
|     }, | ||||
| 
 | ||||
|     //绘制移垛记录区 | ||||
|     drawYd(){ | ||||
|       this.drawContainer({ | ||||
|         x:15+this.width*0.6-15+5, | ||||
|         y:this.height-this.height*0.8+10, | ||||
|         width: this.width*0.4-20, | ||||
|         height: this.height*0.8-20, | ||||
|         stroke:'blue', | ||||
|         strokeWidth:1, | ||||
|       }) | ||||
|     }, | ||||
|     //绘制上料功能区 | ||||
|     drawSl(){ | ||||
|       const {qyGroup}=this.drawContainer({ | ||||
|         x:15+this.width*0.2+5, | ||||
|         y:this.height-this.height*0.8+10, | ||||
|         width: this.width*0.4-20, | ||||
|         height: this.height*0.8-20, | ||||
|         stroke:'blue', | ||||
|         strokeWidth:1, | ||||
|       }) | ||||
|       this.slGroup=qyGroup | ||||
|     }, | ||||
|     drawDw(qyGroup,qy,size){ | ||||
|       if (this.dwGroup){ | ||||
|         this.dwGroup.destroyChildren() | ||||
|       } | ||||
|       const _group=this.dwGroup=new Konva.Group({ | ||||
|         x:54+size, | ||||
|         y:15, | ||||
|         width: size, | ||||
|         height: size, | ||||
|       }) | ||||
|       qyGroup.add(_group) | ||||
|       for (let i = 0; i < qy.dw.length; i++) { | ||||
|         const dw=qy.dw[i] | ||||
|         const group=new Konva.Group({ | ||||
|           x:0, | ||||
|           y:i*5+i*size, | ||||
|           width: size, | ||||
|           height: size, | ||||
|         }) | ||||
|         const rect=new Konva.Rect({ | ||||
|           x:0, | ||||
|           y:0, | ||||
|           width: size, | ||||
|           height: size, | ||||
|           stroke:'black', | ||||
|           strokeWidth:1, | ||||
|         }) | ||||
|         group.add(rect) | ||||
|         const text=new Konva.Text({ | ||||
|           x:0, | ||||
|           y:0, | ||||
|           width: size, | ||||
|           height: size, | ||||
|           fill:'black', | ||||
|           text:qy.name+'\n'+dw.name, | ||||
|           align:'center', | ||||
|           verticalAlign:'middle', | ||||
|           fontSize:20 | ||||
|         }) | ||||
|         group.add(text) | ||||
|         group.on('click touchstart',(evt)=>{ | ||||
|           this.slGroup.destroyChildren() | ||||
|           this.canSl=true | ||||
|           this.currentDwIndex=i | ||||
|           this.drawSlItem(dw.list) | ||||
|         }) | ||||
|         _group.add(group) | ||||
|       } | ||||
|     }, | ||||
|     //绘制垛位选择区 | ||||
|     drawQy(){ | ||||
|       const {quRet,qyGroup}=this.drawContainer({ | ||||
|         x:15, | ||||
|         y:this.height-this.height*0.8+10, | ||||
|         width: this.width*0.2, | ||||
|         height: this.height*0.8-20, | ||||
|         stroke:'blue', | ||||
|         strokeWidth:1, | ||||
|       }) | ||||
|       const size=120; | ||||
|       for (let i = 0; i < this.qyList.length; i++) { | ||||
|         const qy=this.qyList[i] | ||||
|         const group=new Konva.Group({ | ||||
|           x:23, | ||||
|           y:15+i*5+i*size, | ||||
|           width: size, | ||||
|           height: size, | ||||
|         }) | ||||
|         const rect=new Konva.Rect({ | ||||
|           x:0, | ||||
|           y:0, | ||||
|           width: size, | ||||
|           height: size, | ||||
|           stroke:'black', | ||||
|           strokeWidth:1, | ||||
|         }) | ||||
|         group.add(rect) | ||||
|         const text=new Konva.Text({ | ||||
|           x:0, | ||||
|           y:0, | ||||
|           width: size, | ||||
|           height: size, | ||||
|           fill:'black', | ||||
|           text:qy.name, | ||||
|           align:'center', | ||||
|           verticalAlign:'middle', | ||||
|           fontSize:20 | ||||
|         }) | ||||
|         group.add(text) | ||||
|         group.on('click touchstart',(evt)=>{ | ||||
|           this.currentQyIndex=i | ||||
|           this.drawDw(qyGroup,qy,size) | ||||
|         }) | ||||
|         qyGroup.add(group) | ||||
|       } | ||||
|     }, | ||||
|     //上料计划选择区 | ||||
|     drawSljh(){ | ||||
|       // this.sljhStage = new Konva.Stage({ | ||||
|       //   container: "sliao", | ||||
|       //   x:15, | ||||
|       //   y:65, | ||||
|       //   width: this.width-30, | ||||
|       //   height: this.height*0.2-60, | ||||
|       // }); | ||||
|       // this.sljhStage.container().style.cursor = "drag"; | ||||
| 
 | ||||
|       this.sljhLayer = new Konva.Layer(); | ||||
|       this.stage.add(this.sljhLayer) | ||||
|       this.sljhLayer.draw(); | ||||
| 
 | ||||
|       const qyGroup=new Konva.Group({ | ||||
|         x:15, | ||||
|         y:65, | ||||
|         width: this.width-30, | ||||
|         height: this.height*0.2-60, | ||||
|         stroke:'blue', | ||||
|         strokeWidth:1, | ||||
|         draggable: true, | ||||
|         dragBoundFunc:function (pos){ | ||||
|           return { | ||||
|             x:pos.x, | ||||
|             y:65 | ||||
|           } | ||||
|         }, | ||||
|       }); | ||||
| 
 | ||||
|       qyGroup.on('dragmove',function (){ | ||||
|         const itemWidth=80 | ||||
|         const itemHeight=108; | ||||
|         // this.getChildren((node)=>{ | ||||
|         //   const {x,y}=node.absolutePosition(); | ||||
|         //   if(x+itemWidth<20){ | ||||
|         //     node.visible(false) | ||||
|         //   }else if(x+15<20){ | ||||
|         //     node.clipFunc((ctx)=>{ | ||||
|         //       ctx.rect(itemWidth-20, 0, itemWidth, itemHeight) | ||||
|         //     }) | ||||
|         //   } | ||||
|         // | ||||
|         //   if (x+15>=this.width){ | ||||
|         //     node.visible(false) | ||||
|         //   } | ||||
|         // | ||||
|         //   if (x+15<this.width&&x+15+itemWidth>this.width&&node.visible()){ | ||||
|         //     node.clipFunc((ctx)=>{ | ||||
|         //       ctx.rect(0, 0, this.width-30-x, itemHeight) | ||||
|         //     }) | ||||
|         //   } | ||||
|         // }) | ||||
|       }) | ||||
| 
 | ||||
|       this.sljhLayer.add(qyGroup) | ||||
| 
 | ||||
|       // const {quRet,qyGroup}=this.drawContainer({ | ||||
|       //   x:15, | ||||
|       //   y:65, | ||||
|       //   width: this.width-30, | ||||
|       //   height: this.height*0.2-60, | ||||
|       //   stroke:'blue', | ||||
|       //   strokeWidth:1, | ||||
|       //   draggable: true, | ||||
|       // }) | ||||
|       // quRet.on('touchmove',({evt})=>{ | ||||
|       //   const speed=0.15 | ||||
|       //   const time=evt.timeStamp | ||||
|       //   const x=evt.targetTouches[0].clientX | ||||
|       //   if (this.startMoveTime===0){ | ||||
|       //     this.startMoveTime=time | ||||
|       //     this.startMoveX=x | ||||
|       //   } | ||||
|       // | ||||
|       //   const _time=time-this.startMoveTime | ||||
|       //   const dirX=x-this.startMoveX | ||||
|       // | ||||
|       //   if (!this.isMoving){ | ||||
|       //     this.isMoving=true | ||||
|       //     this.sljhList.forEach(item=>{ | ||||
|       //       item.move({ | ||||
|       //         x:speed*_time*(dirX>0?1:-1) | ||||
|       //       }) | ||||
|       //     }) | ||||
|       //     this.startMoveTime=0 | ||||
|       //     this.startMoveX=0 | ||||
|       //     this.isMoving=false | ||||
|       //   }else{ | ||||
|       //     this.startMoveTime=time | ||||
|       //     this.startMoveX=x | ||||
|       //     this.isMoving=false | ||||
|       //   } | ||||
|       // }) | ||||
| 
 | ||||
|       this.sljhGroup=qyGroup | ||||
|       // this.mountGroup=this.drawGroup({ | ||||
|       //   x:15, | ||||
|       //   y:this.height-this.height*0.8+10, | ||||
|       //   width: this.width*0.2, | ||||
|       //   height: this.height*0.8-20, | ||||
|       //   stroke:'blue', | ||||
|       //   strokeWidth:1, | ||||
|       // }) | ||||
|       // this.layer.add(this.mountGroup) | ||||
|     }, | ||||
|     drawMsg(){ | ||||
|       this.drawText({ | ||||
|         x:15, | ||||
|         y:50, | ||||
|         width:this.width-30, | ||||
|         height:20, | ||||
|         lineHeight:1, | ||||
|         stroke:'black', | ||||
|         strokeWidth:0.1, | ||||
|         text:this.msg, | ||||
|         align:'center', | ||||
|       }) | ||||
|     }, | ||||
| 
 | ||||
|     drawText(option){ | ||||
|       const text=new Konva.Text(option) | ||||
|       this.layer.add(text) | ||||
|       return text | ||||
|     }, | ||||
| 
 | ||||
|     initKonvaStage(){ | ||||
|       this.width=this.$refs.sliao.clientWidth | ||||
|       this.height=this.$refs.sliao.clientHeight | ||||
|       const options={ | ||||
|         width:this.width, | ||||
|         height:this.height | ||||
|       } | ||||
|       const {drawTitle}=sliao(options) | ||||
| 
 | ||||
|       this.stage = new Konva.Stage({ | ||||
|         container: "sliao", | ||||
|         width: this.width, | ||||
|         height: this.height, | ||||
|       }); | ||||
|       //this.stage.container().style.cursor = "sw-resize"; | ||||
| 
 | ||||
|       this.layer = new Konva.Layer(); | ||||
|       this.stage.add(this.layer) | ||||
|       this.layer.draw(); | ||||
| 
 | ||||
|       const title=drawTitle(this.width,0,this.title) | ||||
|       this.layer.add(title) | ||||
| 
 | ||||
|       //构建布局区域 | ||||
|       //上料计划显示区 | ||||
|       this.drawSljh() | ||||
|       //区域垛位选择区 | ||||
|       this.drawQy() | ||||
|       //上料功能区 | ||||
|       this.drawSl(); | ||||
|       //移垛记录区 | ||||
|       this.drawYd(); | ||||
|     }, | ||||
|     //绘制区域 | ||||
|     drawContainer(option){ | ||||
|       const quRet=this.drawRect(option) | ||||
|       const qyGroup=this.drawGroup(option) | ||||
|       return { | ||||
|         quRet,qyGroup | ||||
|       } | ||||
|     }, | ||||
|     drawGroup(option){ | ||||
|       const qyGroup=new Konva.Group(option); | ||||
|       this.layer.add(qyGroup) | ||||
|       return qyGroup | ||||
|     }, | ||||
|     drawRect(option){ | ||||
|       const quRet=new Konva.Rect(option); | ||||
|       this.layer.add(quRet) | ||||
|       return quRet | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <style> | ||||
| #sliao { | ||||
|   background: #ddd; | ||||
|   overflow: hidden; | ||||
|   width: 100%; | ||||
|   height: 100vh; | ||||
|   aspect-ratio: 16/9; | ||||
| } | ||||
| </style> | ||||
					Loading…
					
					
				
		Reference in new issue