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.
201 lines
4.2 KiB
201 lines
4.2 KiB
import Konva from "konva";
|
|
import {zx} from "@/api/zyjh";
|
|
import { VXETable } from 'vxe-table'
|
|
|
|
const baifang=function (option={}) {
|
|
const width=option.width,height=option.height,slList=option.dw,image=require('@/assets/gb.png')
|
|
const _width=width*0.364,_height=height*0.712
|
|
const x=width*0.30+30,y=260
|
|
const bg=function (){
|
|
const group=new Konva.Group({
|
|
x:x,
|
|
y:y,
|
|
width:_width,
|
|
height:_height
|
|
})
|
|
|
|
const imageObj = new Image();
|
|
imageObj.src = require('@/assets/sliao/personbg.png');
|
|
imageObj.onload = function () {
|
|
const shape = new Konva.Image({
|
|
x: 0,
|
|
y: 0,
|
|
width: _width,
|
|
height:_height,
|
|
image: this,
|
|
});
|
|
bgGroup.add(shape)
|
|
shape.zIndex(0)
|
|
}
|
|
return group
|
|
}
|
|
|
|
const container=function (){
|
|
return new Konva.Group({
|
|
x:0,
|
|
y:0,
|
|
width:_width,
|
|
height:_height
|
|
})
|
|
}
|
|
|
|
const bgGroup=bg();
|
|
const slGroup=container()
|
|
bgGroup.add(slGroup)
|
|
slGroup.zIndex(1)
|
|
|
|
const thatHeight=height
|
|
const gangban=function (index,item){
|
|
const group=new Konva.Group({
|
|
x:0,
|
|
y:thatHeight-310-index*40,
|
|
// draggable:true
|
|
})
|
|
|
|
group.setAttr('index',index)
|
|
group.setAttr('item',item)
|
|
|
|
slGroup.add(group)
|
|
const {x}=group.absolutePosition()
|
|
group.dragBoundFunc(function (pos){
|
|
return {
|
|
x:x,
|
|
y:pos.y
|
|
}
|
|
})
|
|
let _index=0
|
|
let touchingFlag=false;
|
|
|
|
group.on('mouseup touchend',function (){
|
|
touchingFlag=false
|
|
this.stopDrag()
|
|
})
|
|
|
|
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(7)
|
|
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:`${item.wph||''},${item.wpgg}`,
|
|
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:`${item.czbh},${item.pl},${item.fd}\n上料:${item.bfrq||''},切割:${item.qgjhrq||''}`,
|
|
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)
|
|
}
|
|
}
|
|
|
|
return {
|
|
container,slGroup,handler,bgGroup
|
|
}
|
|
}
|
|
|
|
export default baifang
|