You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
3.6 KiB
181 lines
3.6 KiB
9 months ago
|
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.25,_height=height*0.67
|
||
|
const container=function (){
|
||
|
const x=width*0.30+30,y=300
|
||
|
|
||
|
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-310-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: 40,
|
||
|
y: 0,
|
||
|
width: imgSize,
|
||
|
height:40,
|
||
|
image: imageObj,
|
||
|
});
|
||
|
group.add(shape)
|
||
|
const gbText=new Konva.Text({
|
||
|
x: 40,
|
||
|
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-20,
|
||
|
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
|