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:'white',
      strokeWidth:1,
    })
    //group.add(indexRect)

    const indexText=new Konva.Text({
      x:0,
      y:0,
      width:40,
      height:40,
      fill:'white',
      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:'white',
        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:'white',
      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
