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