<template>
  <div>
    <div class="operation">
      <el-button v-if="isRoleEdit" class="success" icon="el-icon-plus" style="float: left;" @click="handleCreate">新增车次
      </el-button>
      <el-button v-if="isRoleEdit" class="danger" icon="el-icon-delete" style="float: left;" @click="form_delete">减少车次
      </el-button>
      <el-button v-if="isRoleEdit" class="success" style="float: left;" @click="handleCheck">校验</el-button>
      <el-button v-if="isOrder && isRoleEdit" icon="el-icon-sort" style="float: left;" class="success"
        @click="handleChangeOrder">更改顺序</el-button>
      <div v-else style="float: left;margin-left: 10px;">
        <el-button v-if="isRoleEdit" icon="el-icon-folder-checked" class="success" @click="saveChangeOrder">保存
        </el-button>
        <el-button v-if="isRoleEdit" icon="el-icon-close" class="sortCancel" @click="cancelChangeOrder">取消</el-button>
      </div>
      <el-button v-if="isRoleEdit" class="success" icon="el-icon-open" style="float: left;" @click="handleTakeEffect">生效
      </el-button>
      <el-button v-if="isRoleEdit" class="danger" icon="el-icon-turn-off" style="float: left;" @click="handleDisable">禁用
      </el-button>
    </div>
    <div class="search" />
    <div class="table">
      <el-table
        id="table2"
        :key="table.tableKey"
        ref="table"
        v-loading="table.listLoading"
        element-loading-text="给我一点时间"
        :data="table.list"
        border
        highlight-current-row
        style="width: 100%;"
        :row-style="rowStyle"
        :cell-style="cellStyle"
        class="elTable"
        row-key="id"
        @selection-change="handleSelect"
      >
        <el-table-column type="selection" min-width="50" />
        <el-table-column label="车次" min-width="80px" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.sort }}</span>
          </template>
        </el-table-column>
        <el-table-column label="栏舍" min-width="110px" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.qstr }}</span>
          </template>
        </el-table-column>
        <el-table-column label="TMR编号" prop="weight" min-width="110px" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.tmrcode }}</span>
          </template>
        </el-table-column>
        <el-table-column label="生效" min-width="70px" align="center">
          <template slot-scope="scope">
            <el-switch v-model="scope.row.enable" :disabled="scope.row.NoEdit==true" active-color="#13ce66"
              inactive-color="#ff4949" :active-value="1" :inactive-value="0" />
          </template>
        </el-table-column>
        <el-table-column label="班次" min-width="120px" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.times }}</span>
          </template>
        </el-table-column>
        <el-table-column label="撒料计划车次跟随" min-width="90px" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.lppcode }}</span>
          </template>
        </el-table-column>

        <el-table-column label="剩料处理方式" min-width="130px" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.treatmethod }}</span>
          </template>
        </el-table-column>
        <el-table-column label="转投栏舍" min-width="130px" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.hstr }}</span>
          </template>
        </el-table-column>
        <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width" fixed="right">
          <template slot-scope="{row}">
            <el-button v-if="isRoleEdit" icon="el-icon-edit-outline" class="miniSuccess" @click="handleUpdate(row)" />
            <span v-if="isRoleEdit" class="centerSpan">|</span>
            <el-button v-if="isRoleEdit" icon="el-icon-delete" class="miniDanger" @click="handleRowDelete(row)" />
          </template>
        </el-table-column>
        </el-table>
      <span v-if="table.listLoading == false" style="margin-right: 30px;margin-top: 10px;font-size: 14px;">共{{ table.total }}条</span>
    </div>


    <!-- 新增/编辑 -->
    <el-dialog :fullscreen="dialogFull" :destroy-on-close="true" :visible.sync="create.dialogFormVisible" :before-close="close" :close-on-click-modal="false" width="90%" :modal-append-to-body="false" :append-to-body="true">
      <template slot="title">
        <div class="avue-crud__dialog__header">
          <span class="el-dialog__title">
            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px" />
            {{ textMap[create.dialogStatus] }}
          </span>
          <div class="avue-crud__dialog__menu" @click="dialogFull? dialogFull=false: dialogFull=true">
            <svg-icon v-if="dialogFull" icon-class="exit-fullscreen" />
            <svg-icon v-else icon-class="fullscreen" />
          </div>
        </div>
      </template>
      <div class="app-add">
        <el-form ref="temp" :rules="create.rules" :model="create.temp" label-position="right" label-width="155px" style="width: 100%;margin:0 auto 50px">
          <el-row>
            <el-col :span="6">
              <el-form-item label="车次：" prop="sort">
                <el-input ref="sort" v-model="create.temp.sort" class="filter-item" type="number" placeholder="车次" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="栏舍名称：" prop="barid">
                <el-select v-model="create.temp.barid" multiple filterable placeholder="栏舍名称" class="filter-item"
                  style="width:100%; " @change="changeBars">
                  <el-option v-for="item in barsList" :key="item.id" :label="item.bname" :value="item.id" />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="TMR编号：" prop="tmrid">
                <el-select v-model="create.temp.tmrid" filterable placeholder="TMR编号" class="filter-item"
                  style="width: 100%;" @change="changeTMRNumber">
                  <el-option v-for="item in TMRNumberList" :key="item.id" :label="item.eqcode" :value="item.id" />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="生效：" prop="sort">
                <el-switch ref="enable" v-model="create.temp.enable" active-color="#13ce66" inactive-color="#ff4949"
                  :active-value="1" :inactive-value="0" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="班次：" prop="times">
                <el-select v-model="create.temp.times" filterable placeholder="班次" class="filter-item"
                  style="width: 100%;" @change="changeTimes">
                  <el-option v-for="item in frequencyList" :key="item.id" :label="item.name" :value="item.id" />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="撒料计划车次跟随：" prop="lppid">
                <el-select v-model="create.temp.lppid" filterable placeholder="撒料计划车次跟随" class="filter-item"
                  style="width: 100%;" @change="changeCarFollow">
                  <el-option v-for="item in carFollowList" :key="item.id" :label="item.lppcode" :value="item.id" />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="时间：" prop="rtime">

                <el-time-picker v-model="create.temp.rtime" type="datetime" placeholder="选择时间" format="HH:mm"
                  value-format="HH:mm" style="display: inline-block;width: 95%;" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="剩料处理方式：" prop="treatmethod">
                <el-select v-model="create.temp.treatmethod" filterable placeholder="剩料处理方式" class="filter-item"
                  style="width: 100%;" @change="changeResidueDisposal">
                  <el-option v-for="item in residueDisposalList" :key="item.value" :label="item.label"
                    :value="item.label" />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="转投栏舍：" prop="useinbarid">
                <el-select v-model="create.temp.useinbarid" filterable placeholder="转投栏舍" class="filter-item"
                  style="width: 100%;" @change="changeTransferbars" :disabled='isDis'>
                  <el-option v-for="item in transferbarsList" :key="item.id" :label="item.bname" :value="item.id" />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <draggable v-model="barSortList" group="itxst" animation="300" :group="{name: 'dashboard',pull: true}"
              @start="onStart" @end="onEnd">
              <transition-group>
                <div
                  style="width:80px;height:30px;border:1px soild #333;display:inline-block;background: #2ed1f9;padding: 5px 5px;margin-right: 15px;margin-bottom: 15px;"
                  v-for="item in barSortList" key="1">{{item.bname}}</div>
              </transition-group>
            </draggable>
          </el-row>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button class="cancelClose" @click="close();">关闭</el-button>
          <el-button v-if="create.dialogStatus==='create' || create.dialogStatus==='update'" class="save"
            :disabled="isokDisable" @click="create.dialogStatus==='create'?createData():updateData()">确认</el-button>
        </div>
      </div>
    </el-dialog>
    <!-- 校验 -->
    <el-dialog :title="textMap[check.dialogStatus]" :destroy-on-close="true" :visible.sync="check.dialogFormVisible" :before-close="close" :close-on-click-modal="false" width="30%" :modal-append-to-body="false" :append-to-body="true">
      <div class="check">
        <p v-if="check.temp.isDistribution == '0'">当前有栏舍未分配，建议及时进行分配，未分配栏舍如下：</p>
        <p v-else>已分配完：当前栏舍已分配完善</p>
        {{ check.temp.bnames }}
      </div>
      <div slot="footer" class="dialog-footer" style="bottom: 10px;">
        <el-button class="save" @click="check.dialogFormVisible=false;">确认</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import { GetDataByName, GetDataByNames,postJson, PostDataByName, failproccess, ExecDataByConfig,checkButtons } from '@/api/common'
import Sortable from 'sortablejs'
import Pagination from '@/components/Pagination'
import Cookies from 'js-cookie'
import { MessageBox } from 'element-ui'
import draggable from 'vuedraggable'
export default {
  name: 'SurplusMaterialPlan',
  components: { Pagination,draggable },
  directives: {
    focus: {
      update: function(el, {
        value
      }) {
        if (value) {
          el.focus()
        }
      }
    }
  },
  props: {
    show: { type: Boolean, default: false }, // 弹框可见标志
    parentDate: { type: String, defalut: '' }
  },
  data() {
    return {
      date: '',
      barSortList: [],
      dialogFull: false,
      isDis: false,
      isRoleEdit: [],
      requestParams: [{
          name: 'getBarListEnable',
          offset: 0,
          pagecount: 0,
          parammaps: {
            pastureid: Cookies.get('pastureid')
          }
        },
        {
          name: 'getTMRYHList',
          offset: 0,
          pagecount: 0,
          parammaps: {
            pastureid: Cookies.get('pastureid')
          }
        }
      ],
      barsList: [], // 栏舍
      residueDisposalList: [{
        value: '0',
        label: '转投剩料'
      }, {
        value: '1',
        label: '继续饲喂'
      }], // 剩料处理方式
      TMRNumberList: [], // TMR编号
      barsNamesIdTempArr: [],
      useinbarNamesIdTempArr: [],
      // 班次
      maxTime: {
        getMaxTimesParm: {
          name: 'getSysoptEnable',
          page: 1,
          offset: 1,
          pagecount: 1,
          returntype: 'Map',
          parammaps: {
            pastureid: Cookies.get('pastureid'),
            inforname: 'times'
          }
        }
      },
      frequencyList: [], // 班次
      getCarFollowParm: {
        name: 'getLPPCodeListDate',
        offset: 0,
        pagecount: 0,
        parammaps: {
          pastureid: Cookies.get('pastureid'),
          times: '',
          date:''
        }
      },
      carFollowList: [], // 发料计划车次跟随
      getTransferbarsParm: {
        name: 'getBarListEnable',
        offset: 0,
        pagecount: 0,
        parammaps: {
          pastureid: Cookies.get('pastureid'),
          times: '',
          date:''
        }
      },
      transferbarsList: [], // 转头栏舍
      table: {
        getdataListParm: {
          name: 'getRemainplanListDate',
          page: 1,
          offset: 1,
          pagecount: '',
          returntype: 'Map',
          parammaps: {
            pastureid: Cookies.get('pastureid'),
            date:''
          }
        },
        tableKey: 0,
        list: [],
        total: 0,
        listLoading: true,
        temp: {},
        temp2: {}
      },

      // 新增/编辑
      create: {
        dialogFormVisible: false,
        dialogStatus: '',
        temp: {
          pastureid: Cookies.get('pastureid'),
          fname: '',
          fclassid: '',
          fclass: '',
          feedcode: '',
          source: '用户自定义',
          printgroupid: '1',
          printgroup: '无',
          unitweight: '',
          uprice: '',
          allowratio: '',
          autozone: '',
          autosecond: '0',
          autosecondname: '禁用',
          confirmstart: '0',
          confirmstartname: '禁用',
          enable: '1',
          trgaddress: '',
          backup1: '',
          backup2: '',
          backup3: '',
          sort: ''
        },
        rules: {
          // fname: [{ type: 'string', required: true, message: '必填', trigger: 'blur' }],
          // fclassid: [{ type: 'string', required: true, message: '必填', trigger: 'blur' }],
          // feedcode: [{ type: 'string', required: true, message: '必填', trigger: 'blur' }]
        }
      },
      check: {
        dialogFormVisible: false,
        dialogStatus: '',
        getCheckParm: {
          name: 'checkRemainplanDate',
          page: 1,
          offset: 1,
          pagecount: 10,
          returntype: 'Map',
          parammaps: {
            pastureid: Cookies.get('pastureid')
          }
        },
        temp: {
          bnames: '',
          isDistribution: ''
        }
      },
      textMap: {
        create: '新增',
        update: '编辑',
        check: '提示'
      },
      requestParam: {},
      selectList: [],
      isokDisable: false,
      rowStyle: {
        maxHeight: 30 + 'px',
        height: 30 + 'px'
      },
      cellStyle: {
        padding: 0 + 'px'
      },
      dropState: false,
      isOrder: true
    }
  },
  watch: {
    // 监听show,visible 随着show变化而变化
    show: {
      immediate: true,
      handler(newVal, oldVal) {
        console.log('newVal-show', newVal)
      }
    },
    parentDate: {
      immediate: true,
      handler(newVal, oldVal) {
        console.log('newVal-show', newVal)
        this.date = newVal
      }
    }
  },
  created() {
    // this.getButtons()
    this.getList()
    this.getDownList()
    this.getIsDisplay()
  },
  methods: {
    getButtons() {
      const Edit = 'SurplusMaterialPlan'
      const isRoleEdit = checkButtons(JSON.parse(sessionStorage.getItem('buttons')), Edit)
      this.isRoleEdit = isRoleEdit
    },
    getDownList() {
      GetDataByNames(this.requestParams).then(response => {
        this.barsList = response.data.getBarListEnable.list
        this.TMRNumberList = response.data.getTMRYHList.list
      })
    },
    getIsDisplay() {
      GetDataByName(this.maxTime.getMaxTimesParm).then(response => {
        if (response.data.list[0].inforvalue == 1) {
          this.frequencyList = [{
            id: '1',
            name: '第一班'
          }]
        } else if (response.data.list[0].inforvalue == 2) {
          this.frequencyList = [{
            id: '1',
            name: '第一班'
          }, {
            id: '2',
            name: '第二班'
          }]
        } else if (response.data.list[0].inforvalue == 3) {
          this.frequencyList = [{
            id: '1',
            name: '第一班'
          }, {
            id: '2',
            name: '第二班'
          }, {
            id: '3',
            name: '第三班'
          }]
        } else if (response.data.list[0].inforvalue == 4) {
          this.frequencyList = [{
            id: '1',
            name: '第一班'
          }, {
            id: '2',
            name: '第二班'
          }, {
            id: '3',
            name: '第三班'
          }, {
            id: '4',
            name: '第四班'
          }]
        }
      })
    },
    getList() {
      this.table.listLoading = true
      this.table.getdataListParm.parammaps.date = this.date
      GetDataByName(this.table.getdataListParm).then(response => {
        console.log('table数据', response.data.list)
        if (response.data.list !== null) {
          for (let i = 0; i < response.data.list.length; i++) {
            this.$set(response.data.list[i], 'Edit', false) // 编辑
            this.$set(response.data.list[i], 'NoEdit', true) // 不可编辑/输入
            this.$set(response.data.list[i], 'groupEdit', false) // 饲料组编辑
            this.$set(response.data.list[i], 'groupNoEdit', true) // 饲料组不可编辑
            this.$set(response.data.list[i], 'isCreate', false) // 新增操作
            this.$set(response.data.list[i], 'isUpdate', true) // 编辑操作
            this.$set(response.data.list[i], 'isUpdateSave', false) // 编辑保存
          }
          var arr = response.data.list

          arr.map(function(i, j) {
            // console.log(i, '====')
            if (i.qstrids) {
              return i.barid = i.qstrids.split(',')
            } else {
              return i.barid = []
            }
          })

          arr.map(function(i, j) {
            if (i.hstrids) {
              return i.useinbarid = i.hstrids
            } else {
              return i.useinbarid = ""
            }
          })

          this.table.list = arr
          // this.table.list = response.data.list
          this.table.pageNum = response.data.pageNum
          this.table.pageSize = response.data.pageSize
          // this.rowDrop()
          this.table.total = response.data.total
        } else {
          this.table.list = []
        }

        setTimeout(() => {
          this.table.listLoading = false
        }, 100)
      })
    },
    handleEnableChange() {
      console.log('点击了生效')
    },
    handleChangeOrder() {
      console.log('更改顺序')
      this.isOrder = false
      this.rowDrop()
    },
    rowDrop() {
      const tbody = document.querySelector('#table2 .el-table__body-wrapper tbody')
      const that = this
      var sortable2 = Sortable.create(tbody, {
        disabled: that.dropState,
        onChoose({
          newIndex,
          oldIndex
        }) {
          console.log(that.isOrder, 'that.isOrder == false')
          console.log(that.dropState, 'that.dropState')
          if (that.dropState == true || that.isOrder == true) {
            sortable2.destroy()
          }
        },
        onEnd({
          newIndex,
          oldIndex
        }) {
          const currRow = that.table.list.splice(oldIndex, 1)[0]
          that.table.list.splice(newIndex, 0, currRow)
          console.log('索引', newIndex)
          console.log('拖动数据', currRow)
          console.log('上', that.table.list[newIndex - 1])
          console.log('下', that.table.list[newIndex + 1])
        }
      })
    },
    saveChangeOrder() {
      // 保存顺序
      var sortArr = []
      for (let i = 0; i < this.table.list.length; i++) {
        var obj = {}
        obj.sort = i + 1
        obj.id = this.table.list[i].id
        obj.pastureid = this.table.list[i].pastureid
        sortArr.push(obj)
      }
      this.requestParam = {}
      this.requestParam.common = {
        'returnmap': '0'
      }
      this.requestParam.data = []
      this.requestParam.data[0] = {
        'name': 'insertSpotList',
        'resultmaps': {
          'list': sortArr
        }
      }
      this.requestParam.data[0].children = []
      this.requestParam.data[0].children[0] = {
        'name': 'updateRemainplanSortDate',
        'type': 'e',
        'parammaps': {
          id: '@insertSpotList.id',
          pastureid: '@insertSpotList.pastureid',
          sort: '@insertSpotList.sort',
          date:this.date
        }
      }
      ExecDataByConfig(this.requestParam).then(response => {
        console.log('顺序切换保存发送参数', this.requestParam)
        if (response.msg === 'fail') {
          this.$notify({
            title: '顺序切换失败',
            message: response.data,
            type: 'warning',
            duration: 2000
          })
        } else {
          this.$notify({
            title: '',
            message: '顺序切换成功',
            type: 'success',
            duration: 2000
          })
          this.getList()
          this.isOrder = true
        }
      })
    },
    cancelChangeOrder() {
      // 取消顺序
      this.getList()
      this.isOrder = true
    },

    // 新增
    handleCreate() {
      console.log('点击了新增')
      this.resetTemp()
      this.dialogFull = false
      this.create.dialogStatus = 'create'
      this.create.dialogFormVisible = true
    },

    resetTemp() {
      this.create.temp = {
        pastureid: Cookies.get('pastureid'),
        'myId': (new Date()).valueOf(),
        'Edit': true,
        'NoEdit': false,
        'isCreate': true,
        'isUpdate': false,
        'isUpdateSave': false,
        'enable': 1,
        'sort': "",
        'ftid': '',
        'ftname': '',
        'tmrcode': '',
        'tmrid': '',
        'times': '',
        'lppcode': '',
        'lppid': '',
        'rtime': '',
        'barid': '',
        'treatmethod': '',
        'useinbar': '',
        'useinbarid': ''
      }
      this.barSortList = []
      this.isDis = false
    },
    changeBars(val) {

      console.log(this.barsList)
      console.log('点击了栏舍1', val)
      var barSortList = []

      var barsList = this.barsList
      val.forEach(function(i) {
        barsList.forEach(function(j) {
          if (i == j.id) {
            barSortList.push(j)
          }
        })
      })
      this.barSortList = barSortList

      console.log('点击了栏舍1', barSortList)



      this.table.temp.barid = barSortList
      this.barsNamesIdTempArr = barSortList
      this.$forceUpdate()

    },

    onStart() {
      console.log(2222)
    },
    onEnd() {
      console.log(this.barSortList)

      this.table.temp.barid = this.barSortList
      this.barsNamesIdTempArr = this.barSortList
    },
    // // TMR编号
    changeTMRNumber(item) {
      this.create.temp.tmrcode = this.TMRNumberList.find(obj => obj.id === item).eqcode
    },
    changeCarFollow(item, row) {
      if (item == '') {
        this.create.temp.lppcode = ''
      } else {
        this.create.temp.lppcode = this.carFollowList.find(obj => obj.id == item).lppcode
      }
    },

    // 班次
    changeTimes(item) {
      console.log(item)
      this.getCarFollowParm.parammaps.times = item

      this.getCarFollowList()
    },
    // 撒料计划车次跟随列表
    getCarFollowList() {
      this.getCarFollowParm.parammaps.date = this.date
      GetDataByName(this.getCarFollowParm).then(response => {
        console.log('撒料计划车次跟随列表数据', response.data.list)
        if (response.data.list !== null) {
          this.carFollowList = response.data.list
          this.create.temp.lppid = this.carFollowList[0].id
          this.create.temp.lppcode = this.carFollowList[0].lppcode
        }
      })
    },
    changeResidueDisposal(item) {
      console.log(item)
      this.getCarFollowParm.parammaps.times = item
      this.getTransferbarsList()
      if (item == "继续饲喂") {
        this.isDis = true
      } else {
        this.isDis = false
      }
    },
    getTransferbarsList() {
      GetDataByName(this.getTransferbarsParm).then(response => {

        if (response.data.list !== null) {
          this.transferbarsList = response.data.list
        }
        console.log(this.transferbarsList)
      })
    },

    // 转头栏舍
    changeTransferbars(val) {
      console.log('点击了转头栏舍', val)
    },
    close(){
      this.create.dialogFormVisible = false;
      this.getList()
    },
    createData() {
      console.log('点击了新增保存')
      this.isokDisable = true
      setTimeout(() => {
        this.isokDisable = false
      }, 1000)
      this.$refs['temp'].validate(valid => {
        if (valid) {
          if (this.create.temp.rtime == null || this.create.temp.rtime == 'null') {
            this.create.temp.rtime = ''
          }
          if (this.create.temp.sort == '' && this.create.temp.barid == '' && this.create.temp.tmrid == '' && this
            .create.temp.times == '' && this.create.temp.treatmethod == '') {
            this.$message({
              type: 'error',
              message: '车次/栏舍/TMR编号/班次/剩料处理方式不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.barid == '' && this.create.temp.tmrid == '' && this.create.temp.times ==
            '' && this.create.temp.treatmethod == '') {
            this.$message({
              type: 'error',
              message: '栏舍/TMR编号/班次/剩料处理方式不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.tmrid == '' && this.create.temp.times == '' && this.create.temp
            .treatmethod == '') {
            this.$message({
              type: 'error',
              message: 'TMR编号/班次/剩料处理方式不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.times == '' && this.create.temp.treatmethod == '') {
            this.$message({
              type: 'error',
              message: '班次/剩料处理方式不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.sort == '' || this.create.temp.sort == 0) {
            this.$message({
              type: 'error',
              message: '车次不能为空且大于0',
              duration: 2000
            })
            return false
          } else if (this.create.temp.barid == '') {
            this.$message({
              type: 'error',
              message: '栏舍不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.tmrid == '') {
            this.$message({
              type: 'error',
              message: 'TMR编号不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.times == '') {
            this.$message({
              type: 'error',
              message: '班次不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.treatmethod == '') {
            this.$message({
              type: 'error',
              message: '剩料处理方式不能为空',
              duration: 2000
            })
            return false
          }
          if (this.create.temp.treatmethod !== '' && this.create.temp.treatmethod == '转投剩料') {
            if (this.create.temp.useinbarid == '') {
              this.$message({
                type: 'error',
                message: '转投栏舍不能为空',
                duration: 2000
              })
              return false
            }
          }
          if (this.create.temp.treatmethod !== '' && this.create.temp.treatmethod == '继续饲喂') {
            // this.create.temp.useinbarid = '0'
            this.create.temp.useinbarid = '0'
          }
          if (this.create.temp.rtime == '' || this.create.temp.rtime == null) {
            this.create.temp.rtime = ''
          }
          for (let i = 0; i < this.table.list.length; i++) {
            if (this.create.temp.sort == this.table.list[i].sort) {
              if (this.create.temp.myId !== this.table.list[i].myId) {
                this.$message({
                  type: 'error',
                  message: '车次不可重复',
                  duration: 2000
                })
                return false
              }
            }
          }

          var isInteger = /^\d+$/
          if (this.create.temp.sort !== '') {
            if (!isInteger.test(parseFloat(this.create.temp.sort))) {
              this.$message({
                type: 'error',
                message: '车次请输入整数',
                duration: 2000
              })
              return false
            }
          }



          this.isokDisable = true
          setTimeout(() => {
            this.isokDisable = false
          }, 1000)


          console.log(this.create.temp)


          var ztlasArr = [{
            "bname": "",
            "id": this.create.temp.useinbarid
          }]

          this.transferbarsList.forEach(function(item) {
            if (item.id == ztlasArr[0].id) {
              ztlasArr[0].bname = item.bname
            }
          })

          console.log("ztlasArr", ztlasArr)
          var ssss_data = {
            "common": {
              "returnmap": "0"
            },
            "data": [{
                "name": "insertRemainplanDate",
                "type": "e",
                "parammaps": {

                  pastureid: Cookies.get('pastureid'),
                  sort: this.create.temp.sort,
                  tmrid: this.create.temp.tmrid,
                  tmrcode: this.create.temp.tmrcode,
                  enable: this.create.temp.enable,
                  times: this.create.temp.times,
                  lppid: this.create.temp.lppid,
                  lppcode: this.create.temp.lppcode,
                  rtime: this.create.temp.rtime,
                  treatmethod: this.create.temp.treatmethod,
                  date:this.date
                }
              },
              {
                "name": "insertSpotList",
                "resultmaps": {
                  'list': this.barsNamesIdTempArr
                },
                "children": [{
                  "name": "insertRpdetailDate",
                  "type": "e",
                  "parammaps": {
                    "pastureid": Cookies.get('pastureid'),
                    "bigid": "@insertRemainplanDate.LastInsertId",
                    "barid": "@insertSpotList.id",
                    "bar": "@insertSpotList.bname",
                    "type": 0,
                    date:this.date
                  }
                }]
              },
              {
                "name": "insertRpdetailDate",
                "type": "e",
                "parammaps": {
                  "pastureid": "1647917519",
                  "bigid": "@insertRemainplanDate.LastInsertId",
                  "barid": ztlasArr[0].id,
                  "bar": ztlasArr[0].bname,
                  "type": 1,
                  date:this.date
                }
              }
            ]
          }
          ExecDataByConfig(ssss_data).then(response => {
            console.log('新增保存发送参数', this.requestParam)
            if (response.msg === 'fail') {
              this.$notify({
                title: '保存失败',
                message: response.data,
                type: 'warning',
                duration: 2000
              })
            } else {
              this.$notify({
                title: '成功',
                message: '保存成功',
                type: 'success',
                duration: 2000
              })
              this.create.dialogFormVisible = false
              this.getList()
              this.dropState = false
            }
          })


        }
      })
    },
    createCancel(row) {
      console.log('点击了新增取消')
      this.dropState = false
      for (let i = 0; i < this.table.list.length; i++) {
        if (row.myId === this.table.list[i].myId) {
          var listIndex = this.table.list.indexOf(this.table.list[i])
        }
        if (listIndex > -1) {
          this.table.list.splice(listIndex, 1)
          return
        }
      }
    },
    // 编辑
    handleUpdate(row) {
      console.log('点击了编辑', row)
      this.create.dialogStatus = 'update'
      this.dialogFull = false
      this.create.dialogFormVisible = true
      this.getCarFollowParm.parammaps.times = row.times
      this.getCarFollowList()

      row.temp = {}
      row.temp2 = {}


      if (row.treatmethod == "继续饲喂") {
        this.isDis = true
      } else {
        this.isDis = false
      }



      // if (row.useinbarid == '0') { row.useinbarid = "" }
      if (row.barid == undefined) {
        row.barid = []
      }
      if (row.tmrid == undefined) {
        row.tmrid = ''
      }
      if (row.times == undefined) {
        row.times = ''
      }

      if (row.treatmethod == undefined) {
        row.treatmethod = ''
      }
      // this.getCarFollowParm.parammaps.times = row.times
      if (row.times == '第一班') {
        this.getCarFollowParm.parammaps.times = 1
        row.times = '1'
      } else if (row.times == '第二班') {
        this.getCarFollowParm.parammaps.times = 2
        row.times = '2'
      } else if (row.times == '第三班') {
        this.getCarFollowParm.parammaps.times = 3
        row.times = '3'
      } else if (row.times == '第四班') {
        this.getCarFollowParm.parammaps.times = 4
        row.times = '4'
      } else if (row.times == '第五班') {
        this.getCarFollowParm.parammaps.times = 5
        row.times = '5'
      }
      GetDataByName(this.getCarFollowParm).then(response => {
        console.log('撒料计划车次跟随列表数据', response.data.list)
        if (response.data.list !== null) {
          this.carFollowList = response.data.list
        }
      })
      if(this.carFollowList.length>0){
        if(this.carFollowList.find(obj => obj.id == row.lppid).lppcode == undefined){
          this.$set(row, 'lppid', '')
        }
      }else{
        this.$set(row, 'lppid', '')
      }
      console.log(row, '====')
      if (row.lppcode == undefined) {
        this.$set(row, 'lppid', '')
      }

      this.getTransferbarsList()
      row.barid = row.qstrids.split(',')
      row.useinbarid = row.hstrids

      if (row.useinbarid == '0') {
        row.useinbarid = ""
      }

      var arr3 = []
      for (let i = 0; i < row.barid.length; i++) {
        arr3.push(this.barsList.find(obj => obj.id == row.barid[i]))
      }
      this.barsNamesIdTempArr = arr3
      this.barSortList = arr3
      var arr4 = []
      this.dropState = true
      this.create.temp = Object.assign({}, row)
    },
    updateData() {
      console.log('点击了编辑保存')
      this.isokDisable = true
      setTimeout(() => {
        this.isokDisable = false
      }, 1000)
      this.$refs['temp'].validate(valid => {
        if (valid) {
          if (this.create.temp.rtime == null || this.create.temp.rtime == 'null') {
            this.create.temp.rtime = ''
          }
          if (this.create.temp.barid == '' && this.create.temp.tmrid == '' && this.create.temp.times == '' && this
            .create.temp.treatmethod == '') {
            this.$message({
              type: 'error',
              message: '栏舍/TMR编号/班次/剩料处理方式不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.tmrid == '' && this.create.temp.times == '' && this.create.temp
            .treatmethod == '') {
            this.$message({
              type: 'error',
              message: 'TMR编号/班次/剩料处理方式不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.times == '' && this.create.temp.treatmethod == '') {
            this.$message({
              type: 'error',
              message: '班次/混剩料处理方式不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.barid == '') {
            this.$message({
              type: 'error',
              message: '栏舍不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.tmrid == '') {
            this.$message({
              type: 'error',
              message: 'TMR编号不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.times == '') {
            this.$message({
              type: 'error',
              message: '班次不能为空',
              duration: 2000
            })
            return false
          } else if (this.create.temp.treatmethod == '') {
            this.$message({
              type: 'error',
              message: '剩料处理方式不能为空',
              duration: 2000
            })
            return false
          }
          if (this.create.temp.treatmethod !== '' && this.create.temp.treatmethod == '转投剩料') {
            if (this.create.temp.useinbarid == '') {
              this.$message({
                type: 'error',
                message: '转投栏舍不能为空',
                duration: 2000
              })
              return false
            }
          }
          if (this.create.temp.treatmethod !== '' && this.create.temp.treatmethod == '继续饲喂') {
            this.create.temp.useinbarid = '0'
          }
          if (this.create.temp.rtime == '' || this.create.temp.rtime == null) {
            this.create.temp.rtime = ''
          }
          for (let i = 0; i < this.table.list.length; i++) {
            if (this.create.temp.sort == this.table.list[i].sort) {
              if (this.create.temp.id !== this.table.list[i].id) {
                this.$message({
                  type: 'error',
                  message: '车次不可重复',
                  duration: 2000
                })
                return false
              }
            }
          }
          var isInteger = /^\d+$/
          if (this.create.temp.sort !== '') {
            if (!isInteger.test(parseFloat(this.create.temp.sort))) {
              this.$message({
                type: 'error',
                message: '车次请输入整数',
                duration: 2000
              })
              return false
            }
          }
          if (this.create.temp.sort == '' || this.create.temp.sort == 0) {
            this.$message({
              type: 'error',
              message: '车次不能为空且大于0',
              duration: 2000
            })
            return false
          }
          if (this.create.temp.times == '第一班') {
            this.create.temp.times = 1
          } else if (this.create.temp.times == '第二班') {
            this.create.temp.times = 2
          } else if (this.create.temp.times == '第三班') {
            this.create.temp.times = 3
          } else if (this.create.temp.times == '第四班') {
            this.create.temp.times = 4
          } else if (this.create.temp.times == '第五班') {
            this.create.temp.times = 5
          }
          this.isokDisable = true
          setTimeout(() => {
            this.isokDisable = false
          }, 1000)


          var ztlasArr2 = [{
            "bname": "",
            "id": this.create.temp.useinbarid
          }]

          this.transferbarsList.forEach(function(item) {
            if (item.id == ztlasArr2[0].id) {
              ztlasArr2[0].bname = item.bname
            }
          })
          console.log("ztlasArr2", ztlasArr2)

          var ssss_data2 = {
            "common": {
              "returnmap": "0"
            },
            "data": [{
                "name": "updateRemainplanDate",
                "type": "e",
                "parammaps": {
                  pastureid: this.create.temp.pastureid,
                  id: this.create.temp.id,
                  sort: this.create.temp.sort,
                  tmrid: this.create.temp.tmrid,
                  tmrcode: this.create.temp.tmrcode,
                  enable: this.create.temp.enable,
                  times: this.create.temp.times,
                  lppid: this.create.temp.lppid,
                  lppcode: this.create.temp.lppcode,
                  rtime: this.create.temp.rtime,
                  treatmethod: this.create.temp.treatmethod,
                  date: this.date
                }
              },
              {
                "name": "deleteRpdetailDate",
                "type": "e",
                "parammaps": {
                  pastureid: this.create.temp.pastureid,
                  bigid: this.create.temp.id,
                  date: this.date
                }
              },
              {
                "name": "insertSpotList2",
                "resultmaps": {
                  "list": this.barsNamesIdTempArr

                },
                "children": [{
                  "name": "insertRpdetailDate",
                  "type": "e",
                  "parammaps": {
                    pastureid: this.create.temp.pastureid,
                    bigid: this.create.temp.id,
                    "date": this.date,
                    "barid": "@insertSpotList2.id",
                    "bar": "@insertSpotList2.bname",
                    "type": 0
                  }
                }]
              },
              {
                "name": "insertRpdetailDate",
                "type": "e",
                "parammaps": {
                  "pastureid": this.create.temp.pastureid,
                  "bigid": this.create.temp.id,
                  "barid": ztlasArr2[0].id,
                  "bar": ztlasArr2[0].bname,
                  "type": 1,
                  "date": this.date
                }
              }
            ]
          }
          ExecDataByConfig(ssss_data2).then(response => {
            console.log('保存发送参数', this.requestParam)
            if (response.msg === 'fail') {
              this.$notify({
                title: '保存失败',
                message: response.data,
                type: 'warning',
                duration: 2000
              })
            } else {
              this.$notify({
                title: '成功',
                message: '保存成功',
                type: 'success',
                duration: 2000
              })
              this.create.dialogFormVisible = false
              this.getList()
              this.dropState = false
            }
          })

        }
      })
    },

    updateCancel(row) {
      console.log('点击了编辑取消')
      // 编辑false,不可编辑true
      row.Edit = false
      row.NoEdit = true
      // 新增false,编辑true,编辑保存false
      row.isCreate = false
      row.isUpdate = true
      row.isUpdateSave = false
      this.getList()
      this.dropState = false
    },

    handleSelect(val) {
      console.log('勾选数据', val)
      this.selectList = val
    },
    // 行内删除
    handleRowDelete(row) {
      console.log(row, '点击了行删除')
      MessageBox.confirm('是否确认删除此信息?', {
        confirmButtonText: '确认',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.selectList = []
        this.requestParam = {}
        this.requestParam.name = 'deleteRemainplanDate'
        this.requestParam.parammaps = {}
        this.requestParam.parammaps.pastureid = row.pastureid
        this.requestParam.parammaps.id = row.id
        this.requestParam.parammaps.date = this.date
        PostDataByName(this.requestParam).then(response => {
          if (response.msg === 'fail') {
            this.$notify({
              title: '删除失败',
              message: response.data,
              type: 'warning',
              duration: 2000
            })
          } else {
            this.$notify({
              title: '成功',
              message: '删除成功',
              type: 'success',
              duration: 2000
            })
            this.getList()
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        })
      })
    },
    // 减少车次
    form_delete() {
      if (this.selectList.length == 0) {
        this.$message({
          type: 'error',
          message: '请选择车次信息',
          duration: 2000
        })
      } else {
        MessageBox.confirm('当前选中' + this.selectList.length + '条信息，是否删除?', {
          confirmButtonText: '确认',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          console.log(this.selectList)
          this.requestParam.common = {
            'returnmap': '0'
          }
          this.requestParam.data = []
          this.requestParam.data[0] = {
            'name': 'insertSpotList',
            'resultmaps': {
              'list': this.selectList
            }
          }
          this.requestParam.data[0].children = []
          this.requestParam.data[0].children[0] = {
            'name': 'deleteRemainplanDate',
            'type': 'e',
            'parammaps': {
              id: '@insertSpotList.id',
              pastureid: '@insertSpotList.pastureid',
              date:this.date
            }
          }
          ExecDataByConfig(this.requestParam).then(response => {
            console.log('删除保存发送参数', this.requestParam)
            if (response.msg === 'fail') {
              this.$notify({
                title: '删除失败',
                message: response.data,
                type: 'warning',
                duration: 2000
              })
            } else {
              this.$notify({
                title: '',
                message: '删除成功',
                type: 'success',
                duration: 2000
              })
              this.getList()
            }
          })
        })
      }
    },
    // 校验
    handleCheck() {
      console.log('点击了校验')
      this.check.dialogStatus = 'check'
      this.check.dialogFormVisible = true
      this.getCheckList()
    },
    getCheckList() {
      this.check.getCheckParm.parammaps.date = this.date
      GetDataByName(this.check.getCheckParm).then(response => {
        if (response.data.list[0].bnames !== undefined) {
          this.check.temp.isDistribution = 0
          this.check.temp.bnames = response.data.list[0].bnames
        } else {
          this.check.temp = {}
          this.check.temp.isDistribution = 1
        }
      })
    },
    handleTakeEffect() {
      if (this.selectList.length == 0) {
        this.$message({
          type: 'error',
          message: '请选择车次信息',
          duration: 2000
        })
      } else {
        MessageBox.confirm('当前选中' + this.selectList.length + '条信息，是否生效?', {
          confirmButtonText: '确认',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          for (let i = 0; i < this.selectList.length; i++) {
            // this.$set(this.selectList[i], 'enable', '1')
            this.selectList[i].enable = 1
          }
          console.log('生效', this.selectList)
          this.requestParam.common = {
            'returnmap': '0'
          }
          this.requestParam.data = []
          this.requestParam.data[0] = {
            'name': 'insertSpotList',
            'resultmaps': {
              'list': this.selectList
            }
          }
          this.requestParam.data[0].children = []
          this.requestParam.data[0].children[0] = {
            'name': 'updateRemainplanEnableDate',
            'type': 'e',
            'parammaps': {
              enable: '@insertSpotList.enable',
              id: '@insertSpotList.id',
              pastureid: '@insertSpotList.pastureid',
              date:this.date
            }
          }
          ExecDataByConfig(this.requestParam).then(response => {
            console.log('生效保存发送参数', this.requestParam)
            if (response.msg === 'fail') {
              this.$notify({
                title: '生效失败',
                message: response.data,
                type: 'warning',
                duration: 2000
              })
            } else {
              this.$notify({
                title: '',
                message: '生效成功',
                type: 'success',
                duration: 2000
              })
              this.getList()
            }
          })
        })
      }
    },
    handleDisable() {
      if (this.selectList.length == 0) {
        this.$message({
          type: 'error',
          message: '请选择车次信息',
          duration: 2000
        })
      } else {
        MessageBox.confirm('当前选中' + this.selectList.length + '条信息，是否禁用?', {
          confirmButtonText: '确认',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          for (let i = 0; i < this.selectList.length; i++) {
            // this.$set(this.selectList[i], 'enable', '1')
            this.selectList[i].enable = 0
          }
          console.log('禁用', this.selectList)
          this.requestParam.common = {
            'returnmap': '0'
          }
          this.requestParam.data = []
          this.requestParam.data[0] = {
            'name': 'insertSpotList',
            'resultmaps': {
              'list': this.selectList
            }
          }
          this.requestParam.data[0].children = []
          this.requestParam.data[0].children[0] = {
            'name': 'updateRemainplanEnableDate',
            'type': 'e',
            'parammaps': {
              enable: '@insertSpotList.enable',
              id: '@insertSpotList.id',
              pastureid: '@insertSpotList.pastureid',
              date:this.date
            }
          }
          ExecDataByConfig(this.requestParam).then(response => {
            console.log('禁用保存发送参数', this.requestParam)
            if (response.msg === 'fail') {
              this.$notify({
                title: '禁用失败',
                message: response.data,
                type: 'warning',
                duration: 2000
              })
            } else {
              this.$notify({
                title: '',
                message: '禁用成功',
                type: 'success',
                duration: 2000
              })
              this.getList()
            }
          })
        })
      }
    }

  }
}
</script>
<style lang="scss" scoped>
  .search {
    clear: both;
  }

  .table {
    margin-top: 10px;
  }
</style>
