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.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 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, }); group.add(shape) shape.zIndex(0) } const selectObj = new Image(); selectObj.src = require('@/assets/pwan/gbSelectBg.png'); selectObj.onload = function () { const shape = new Konva.Image({ x: 0, y: 0, width: _width, height:_height, image: this, visible:false }); group.add(shape) shape.zIndex(0) } return group } const slGroup=container() 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('mousedown touchstart',function (evt){ const layer=evt.currentTarget.parent.parent touchingFlag=true const {x,y}=evt.evt setTimeout(()=>{ const moving=this.isDragging() if (!moving){ if (touchingFlag){ this.draggable(false) const tmpGroup=this.clone() tmpGroup.x(x-10) tmpGroup.y(y-10) layer.add(tmpGroup) tmpGroup.draggable(true) tmpGroup.dragBoundFunc(function (pos){ return{...pos} }) tmpGroup.startDrag() const that=this tmpGroup.on('dragend',function (){ const {x:thisX,y:thisY}=this.absolutePosition() for (const item of layer.children) { if(item.attrs.id==='csd'){ const {x,y}=item.absolutePosition() const worker=JSON.parse(window.localStorage.getItem('worker')) if ((thisX>=x&&thisY>=y)&&!!worker){ const info=this.getAttr('item') const zyjh=JSON.parse(window.localStorage.getItem('zyjh')) if (!zyjh){ VXETable.modal.message({content: '请先选择待反馈的派工单', status: 'warning'}) this.remove() that.visible(true) return } zx({ field:'pwfkrq', zxZtName:'PWFK', list:[{ id:zyjh.id, pwfkry: worker.userCode }], ycldwInfo:info }).then(res=>{ if (res.success){ window.localStorage.removeItem('zyjh') } }) this.scaleX(0.7) const image=this.find('Image')[0] image.x(5) image.y(800) image.scaleX(0.90) image.moveTo(item.children[0].children[0]) // this.moveTo(item.children[0].children[0]) image.zIndex(2) image.setAttr('_ad','sdf') this.remove() that.remove() }else{ this.remove() that.visible(true) } } } }) this.visible(false) } } },500) }) group.on('mouseup touchend',function (){ touchingFlag=false }) 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) } } handler(slList) return { container,slGroup,handler } } export default baifang