<template>
  <div class="app-container">
    <div class="operation">
      <el-button
        v-if="isRoleEdit"
        class="success"
        icon="el-icon-plus"
        style="float: left"
        @click="handleCreate"
        >{{ $t('premixedPlan.xzcc') }}</el-button
      >
      <el-button
        v-if="isRoleEdit"
        class="danger"
        icon="el-icon-delete"
        style="float: left"
        @click="form_delete"
        >{{ $t('premixedPlan.jscc') }}</el-button
      >
      <el-button
        v-if="isOrder && isRoleEdit"
        icon="el-icon-sort"
        style="float: left"
        class="success"
        @click="handleChangeOrder"
        >{{ $t('formulationEvaluation.ggsx') }}</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"
          >{{ $t('formulationEvaluation.save') }}</el-button
        >
        <el-button
          v-if="isRoleEdit"
          icon="el-icon-close"
          class="sortCancel"
          @click="cancelChangeOrder"
          >{{ $t('formulationEvaluation.cancel') }}</el-button
        >
      </div>
      <el-button
        v-if="isRoleEdit"
        class="success"
        icon="el-icon-open"
        style="float: left"
        @click="handleTakeEffect"
        >{{ $t('premixedPlan.sx') }}</el-button
      >
      <el-button
        v-if="isRoleEdit"
        class="danger"
        icon="el-icon-turn-off"
        style="float: left"
        @click="handleDisable"
        >{{ $t('premixedPlan.jy') }}</el-button
      >
      <el-button
        class="import"
        style="float: right"
        @click="handleHistoryRecords"
        >{{ $t('dhedFormula.lsjl') }}</el-button
      >
    </div>
    <div class="search" />
    <div class="table">
      <el-table
        id="table"
        :key="table.tableKey"
        v-loading="table.listLoading"
        :element-loading-text="$t('common.tableMsg')"
        :data="table.list"
        border
        fit
        highlight-current-row
        style="width: 100%"
        :row-style="rowStyle"
        :cell-style="cellStyle"
        class="elTable table-fixed"
        row-key="id"
        @selection-change="handleSelect"
      >
        <el-table-column type="selection" min-width="50" />
        <el-table-column
          :label="$t('errorAnalysis.projname')"
          min-width="110px"
          align="center"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.NoEdit">{{ scope.row.sort }}</span>
            <el-input
              v-if="scope.row.Edit"
              v-model.trim="scope.row.sort"
              type="number"
              style="width: 80%; padding: 10px 0"
            />
          </template>
        </el-table-column>
        <el-table-column
          :label="$t('errorAnalysis.feedName')"
          min-width="130px"
          align="center"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.NoEdit">{{ scope.row.ftname }}</span>
            <el-select
              v-if="scope.row.Edit"
              v-model="scope.row.ftid"
              filterable
              placeholder=""
              class="filter-item"
              style="width: 80%; padding: 10px 0"
              @change="
                (value) => {
                  changeformulaName(value, scope.row)
                }
              "
            >
              <el-option
                v-for="item in formulaNameList"
                :key="item.id"
                :label="item.tname"
                :value="item.id"
              />
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          :label="$t('premixedPlan.tmrbh')"
          prop="weight"
          min-width="130px"
          align="center"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.NoEdit">{{ scope.row.tmrcode }}</span>
            <el-select
              v-if="scope.row.Edit"
              v-model="scope.row.tmrid"
              filterable
              placeholder=""
              class="filter-item"
              style="width: 80%; padding: 10px 0"
              @change="
                (value) => {
                  changeTMRNumber(value, scope.row)
                }
              "
            >
              <el-option
                v-for="item in TMRNumberList"
                :key="item.id"
                :label="item.eqcode"
                :value="item.id"
              />
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          :label="$t('errorAnalysis.isTrainNumber')"
          min-width="130px"
          align="center"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.NoEdit">{{ scope.row.times }}</span>
            <el-select
              v-if="scope.row.Edit"
              v-model="scope.row.times"
              filterable
              placeholder=""
              class="filter-item"
              style="width: 80%; padding: 10px 0"
              @change="
                (value) => {
                  changeTimes(value, scope.row)
                }
              "
            >
              <el-option
                v-for="item in frequencyList"
                :key="item.id"
                :label="item.name"
                :value="item.id"
              />
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          :label="$t('premixedPlan.sljhccgs')"
          min-width="90px"
          align="center"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.NoEdit">{{ scope.row.lppcode }}</span>
            <el-select
              v-if="scope.row.Edit"
              ref="test"
              v-model="scope.row.lppid"
              filterable
              clearable
              placeholder=""
              class="filter-item"
              style="width: 80%; padding: 10px 0"
              @change="
                (value) => {
                  changeCarFollow(value, scope.row)
                }
              "
            >
              <el-option
                v-for="item in carFollowList"
                :key="item.id"
                :label="item.lppcode"
                :value="item.id"
              />
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          :label="$t('premixedPlan.sx')"
          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"
              @change="handleEnableChange(scope.$index, scope.row)"
            />
          </template>
        </el-table-column>
        <!-- <el-table-column :label="$t('premixedPlan.time')"   min-width="130px" align="center">
          <template slot-scope="scope">
            <span v-if="scope.row.NoEdit">{{ scope.row.ptime }}</span>
            <el-time-picker v-if="scope.row.Edit" v-model="scope.row.ptime" type="datetime" :placeholder="$t('dailyExecutionPlan.xzrq')" format="HH:mm" value-format="HH:mm" style="display: inline-block;width: 95%;" />
          </template>
        </el-table-column> -->
        <el-table-column
          :label="$t('premixedPlan.zdjbl')"
          min-width="110px"
          align="center"
        >
          <template slot-scope="scope">
            <span>{{ scope.row.maxweight }}</span>
          </template>
        </el-table-column>
        <el-table-column
          :label="$t('premixedPlan.hlzl')"
          min-width="110px"
          align="center"
        >
          <template slot-scope="scope">
            <span v-if="scope.row.NoEdit">{{ scope.row.operateweight }}</span>
            <el-input
              v-if="scope.row.Edit"
              v-model="scope.row.operateweight"
              type="number"
              style="width: 80%; padding: 10px 0"
            />
          </template>
        </el-table-column>
        <el-table-column
          :label="$t('errorAnalysis.cz')"
          align="center"
          width="80"
          class-name="small-padding fixed-width"
          fixed="right"
        >
          <template slot-scope="{ row }">
            <el-button
              v-if="row.isCreate && isRoleEdit"
              :disabled="isokDisable"
              icon="el-icon-folder-checked"
              class="miniSuccess"
              @click="createData(row)"
            />
            <span v-if="row.isCreate && isRoleEdit" class="centerSpan">|</span>
            <el-button
              v-if="row.isCreate && isRoleEdit"
              class="minCancel"
              icon="el-icon-close"
              @click="createCancel(row)"
            />
            <el-button
              v-if="row.isUpdate && isRoleEdit"
              class="miniSuccess"
              icon="el-icon-edit-outline"
              @click="handleUpdate(row)"
            />
            <span v-if="row.isUpdate && isRoleEdit" class="centerSpan">|</span>
            <el-button
              v-if="row.isUpdate && isRoleEdit"
              class="miniDanger"
              icon="el-icon-delete"
              @click="handleRowDelete(row)"
            />
            <el-button
              v-if="row.isUpdateSave && isRoleEdit"
              :disabled="isokDisable"
              icon="el-icon-folder-checked"
              class="miniSuccess"
              @click="updateData(row)"
            />
            <span v-if="row.isUpdateSave && isRoleEdit" class="centerSpan"
              >|</span
            >
            <el-button
              v-if="row.isUpdateSave && isRoleEdit"
              class="minCancel"
              icon="el-icon-close"
              @click="updateCancel(row)"
            />
          </template>
        </el-table-column>
      </el-table>
    </div>
    <span
      v-if="table.listLoading == false"
      style="margin-right: 30px; margin-top: 10px; font-size: 14px"
      >{{ $t('processAnalysis.total') }}{{ table.total
      }}{{ $t('processAnalysis.tiao') }}</span
    >
    <!-- 历史记录 -->
    <el-dialog
      :fullscreen="dialogFull"
      :destroy-on-close="true"
      :visible.sync="history.dialogFormVisible"
      :close-on-click-modal="false"
      width="90%"
    >
      <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[history.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-history">
        <div class="search">
          <el-date-picker
            v-model="history.getdataListParm.parammaps.date"
            type="date"
            :placeholder="$t('formulationEvaluation.lssjjl')"
            :clearable="false"
            style="width: 180px"
            format="yyyy-MM-dd"
            value-format="yyyy-MM-dd"
            @change="changeDate"
          />
          <!-- <el-button class="successBorder" @click="handleApplication">应用</el-button> -->
        </div>
        <div class="table">
          <el-table
            :key="history.tableKey"
            v-loading="history.listLoading"
            :element-loading-text="$t('common.tableMsg')"
            :data="history.list"
            border
            fit
            highlight-current-row
            style="width: 100%"
            :row-style="rowStyle"
            :cell-style="cellStyle"
            class="elTable table-fixed"
          >
            <el-table-column
              :label="$t('errorAnalysis.projname')"
              min-width="130px"
              align="center"
            >
              <template slot-scope="scope">
                <span>{{ scope.row.sort }}</span>
              </template>
            </el-table-column>
            <el-table-column
              :label="$t('errorAnalysis.feedName')"
              min-width="130px"
              align="center"
            >
              <template slot-scope="scope">
                <span>{{ scope.row.ftname }}</span>
              </template>
            </el-table-column>
            <el-table-column
              :label="$t('premixedPlan.tmrbh')"
              prop="weight"
              min-width="130px"
              align="center"
            >
              <template slot-scope="scope">
                <span>{{ scope.row.tmrcode }}</span>
              </template>
            </el-table-column>
            <el-table-column
              :label="$t('errorAnalysis.isTrainNumber')"
              min-width="130px"
              align="center"
            >
              <template slot-scope="scope">
                <span>{{ scope.row.times }}</span>
              </template>
            </el-table-column>
            <el-table-column
              :label="$t('premixedPlan.fljhcsgs')"
              min-width="130px"
              align="center"
            >
              <template slot-scope="scope">
                <span>{{ scope.row.lppcode }}</span>
              </template>
            </el-table-column>
            <el-table-column
              :label="$t('premixedPlan.sx')"
              min-width="130px"
              align="center"
            >
              <template slot-scope="scope">
                <el-switch
                  v-model="scope.row.enable"
                  disabled
                  active-color="#13ce66"
                  inactive-color="#ff4949"
                  :active-value="1"
                  :inactive-value="0"
                  @change="handleEnableChange(scope.$index, scope.row)"
                />
              </template>
            </el-table-column>
            <el-table-column
              :label="$t('premixedPlan.time')"
              min-width="180px"
              align="center"
            >
              <template slot-scope="scope">
                <span>{{ scope.row.ptime }}</span>
              </template>
            </el-table-column>
            <el-table-column
              :label="$t('premixedPlan.zdjbl')"
              min-width="130px"
              align="center"
            >
              <template slot-scope="scope">
                <span>{{ scope.row.maxweight }}</span>
              </template>
            </el-table-column>
            <el-table-column
              :label="$t('premixedPlan.hlzl')"
              min-width="130px"
              align="center"
            >
              <template slot-scope="scope">
                <span>{{ scope.row.operateweight }}</span>
              </template>
            </el-table-column>
          </el-table>
          <pagination
            v-show="history.total > 0"
            :total="history.total"
            :page.sync="history.getdataListParm.offset"
            :limit.sync="history.getdataListParm.pagecount"
            @pagination="getHistoryList"
          />
        </div>
        <div slot="footer" class="dialog-footer">
          <el-button
            class="cancelClose cancelClose1"
            @click="history.dialogFormVisible = false"
            >{{ $t('common.closed') }}</el-button
          >
        </div>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import {
  GetDataByName,
  GetDataByNames,
  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'
export default {
  name: 'PremixedPlan',
  components: { Pagination },
  data() {
    return {
      dialogFull: false,
      isRoleEdit: [],
      requestParams: [
        {
          name: 'getTMRYHList',
          offset: 0,
          pagecount: 0,
          parammaps: { pastureid: Cookies.get('pastureid') }
        },
        {
          name: 'getFTYHList',
          offset: 0,
          pagecount: 0,
          parammaps: { pastureid: Cookies.get('pastureid') }
        }
      ],
      formulaNameList: [], // 配方名称
      TMRNumberList: [], // TMR编号

      // 班次
      maxTime: {
        getMaxTimesParm: {
          name: 'getSysoptEnable',
          page: 1,
          offset: 1,
          pagecount: 1,
          returntype: 'Map',
          parammaps: {
            pastureid: Cookies.get('pastureid'),
            inforname: 'times'
          }
        }
      },
      frequencyList: [], // 班次
      getCarFollowParm: {
        name: 'getLPPCodeList',
        offset: 0,
        pagecount: 0,
        parammaps: {
          pastureid: Cookies.get('pastureid'),
          times: ''
        }
      },
      carFollowList: [], // 发料计划车次跟随

      table: {
        getdataListParm: {
          name: 'getPremixplanList',
          page: 1,
          offset: 1,
          pagecount: '',
          returntype: 'Map',
          parammaps: {
            pastureid: Cookies.get('pastureid')
          }
        },
        tableKey: 0,
        list: [],
        total: 0,
        listLoading: true
      },
      history: {
        dialogFormVisible: false,
        dialogStatus: '',
        temp: {},
        rules: {},
        tableKey: 0,
        list: [],
        total: 0,
        listLoading: true,

        getdataDateParm: {
          name: 'getPPMaxDate',
          page: 1,
          offset: 1,
          pagecount: 10,
          returntype: 'Map',
          parammaps: {
            pastureid: Cookies.get('pastureid')
          }
        },
        getdataListParm: {
          name: 'getPremixplanListDate',
          page: 1,
          offset: 1,
          pagecount: 10,
          returntype: 'Map',
          parammaps: {
            pastureid: Cookies.get('pastureid'),
            date: ''
          }
        }
      },
      textMap: {
        history: this.$t('message.msg34')
      },
      selectList: [],
      isokDisable: false,
      requestParam: {},
      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
      cellStyle: { padding: 0 + 'px' },
      dropState: false,
      isOrder: true
    }
  },
  created() {
    this.getButtons()
    this.getList()
    this.getDownList()
    this.getIsDisplay()
  },
  methods: {
    getButtons() {
      const Edit = 'PremixedPlan'
      const isRoleEdit = checkButtons(
        JSON.parse(sessionStorage.getItem('buttons')),
        Edit
      )
      this.isRoleEdit = isRoleEdit
    },
    getDownList() {
      GetDataByNames(this.requestParams).then((response) => {
        this.TMRNumberList = response.data.getTMRYHList.list
        this.formulaNameList = response.data.getFTYHList.list
      })
    },
    getIsDisplay() {
      GetDataByName(this.maxTime.getMaxTimesParm).then((response) => {
        if (response.data.list[0].inforvalue == 1) {
          this.frequencyList = [{ id: '1', name: this.$t('errorAnalysis.one') }]
        } else if (response.data.list[0].inforvalue == 2) {
          this.frequencyList = [
            { id: '1', name: this.$t('errorAnalysis.one') },
            { id: '2', name: this.$t('errorAnalysis.two') }
          ]
        } else if (response.data.list[0].inforvalue == 3) {
          this.frequencyList = [
            { id: '1', name: this.$t('errorAnalysis.one') },
            { id: '2', name: this.$t('errorAnalysis.two') },
            { id: '3', name: this.$t('errorAnalysis.three') }
          ]
        } else if (response.data.list[0].inforvalue == 4) {
          this.frequencyList = [
            { id: '1', name: this.$t('errorAnalysis.one') },
            { id: '2', name: this.$t('errorAnalysis.two') },
            { id: '3', name: this.$t('errorAnalysis.three') },
            { id: '4', name: this.$t('errorAnalysis.four') }
          ]
        } else if (response.data.list[0].inforvalue == 5) {
          this.frequencyList = [
            { id: '1', name: this.$t('errorAnalysis.one') },
            { id: '2', name: this.$t('errorAnalysis.two') },
            { id: '3', name: this.$t('errorAnalysis.three') },
            { id: '4', name: this.$t('errorAnalysis.four') },
            { id: '5', name: this.$t('errorAnalysis.five') }
          ]
        } else if (response.data.list[0].inforvalue == 6) {
          this.frequencyList = [
            { id: '1', name: this.$t('errorAnalysis.one') },
            { id: '2', name: this.$t('errorAnalysis.two') },
            { id: '3', name: this.$t('errorAnalysis.three') },
            { id: '4', name: this.$t('errorAnalysis.four') },
            { id: '5', name: this.$t('errorAnalysis.five') },
            { id: '6', name: this.$t('errorAnalysis.six') }
          ]
        }
      })
    },
    getList() {
      this.table.listLoading = true
      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) // 编辑保存
          }
          this.table.list = response.data.list
          this.table.pageNum = response.data.pageNum
          this.table.pageSize = response.data.pageSize
          this.table.total = response.data.total
        } else {
          this.table.list = []
        }

        setTimeout(() => {
          this.table.listLoading = false
        }, 100)
      })
    },
    // 配方名称
    changeformulaName(item, row) {
      row.ftname = this.formulaNameList.find((obj) => obj.id == item).tname
    },
    // TMR编号
    changeTMRNumber(item, row) {
      row.tmrcode = this.TMRNumberList.find((obj) => obj.id == item).tname
      row.maxweight = this.TMRNumberList.find(
        (obj) => obj.id == item
      ).maxstirfeed
    },
    // 撒料计划车次跟随列表
    changeCarFollow(item, row) {
      console.log(item, row)
      if (item == '') {
        row.lppcode = ''
      } else {
        row.lppcode = this.carFollowList.find((obj) => obj.id == item).lppcode
        this.$forceUpdate()
      }
    },
    // 班次
    changeTimes(item, row) {
      console.log(item, row)
      this.getCarFollowParm.parammaps.times = item
      this.getCarFollowList(row)
      this.$forceUpdate()
    },
    // 撒料计划车次跟随列表
    getCarFollowList(row) {
      GetDataByName(this.getCarFollowParm).then((response) => {
        console.log('撒料计划车次跟随列表数据', response.data.list)
        if (response.data.list !== null) {
          this.carFollowList = response.data.list
          row.lppid = this.carFollowList[0].id
          row.lppcode = this.carFollowList[0].lppcode
        } else {
          this.carFollowList = []
          row.lppid = ''
          row.lppcode = ''
        }
      })
    },
    handleEnableChange() {
      console.log('点击了生效')
    },
    handleChangeOrder() {
      this.isOrder = false
      this.rowDrop()
    },
    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)
      }
      console.log(sortArr, 'sortArr=====')
      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: 'updatePremixplanSort',
        type: 'e',
        parammaps: {
          id: '@insertSpotList.id',
          pastureid: '@insertSpotList.pastureid',
          sort: '@insertSpotList.sort'
        }
      }
      ExecDataByConfig(this.requestParam).then((response) => {
        console.log('顺序切换保存发送参数', this.requestParam)
        if (response.msg === 'fail') {
          this.$notify({
            title: this.$t('message.msg51'),
            message: response.data,
            type: 'warning',
            duration: 2000
          })
        } else {
          this.$notify({
            title: '',
            message: this.$t('message.msg50'),
            type: 'success',
            duration: 2000
          })
          this.getList()
          this.isOrder = true
        }
      })
    },
    cancelChangeOrder() {
      // 取消顺序
      this.getList()
      this.isOrder = true
    },
    // 行拖拽
    rowDrop() {
      console.log(
        document.querySelector('#table .el-table__body-wrapper tbody')
      )
      const tbody = document.querySelector(
        '#table .el-table__body-wrapper tbody'
      )
      const that = this
      var sortable = Sortable.create(tbody, {
        disabled: that.dropState,
        onChoose({ newIndex, oldIndex }) {
          if (that.dropState == true) {
            sortable.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])
        }
      })
    },

    // 模板新增
    handleCreate() {
      this.dropState = true
      console.log('点击了新增车次')
      // 编辑true/不可编辑false
      // 新增操true,编辑false，编辑保存false
      for (let i = 0; i < this.table.list.length; i++) {
        if (this.table.list[i].Edit === true) {
          console.log(123)
          this.$message({
            type: 'error',
            message: this.$t('driver.messageNote'),
            duration: 2000
          })
          return false
        }
      }
      var sort = 1
      if (this.table.list.length > 0) {
        sort = parseInt(this.table.list[this.table.list.length - 1].sort) + 1
      } else {
        sort = 1
      }
      this.table.list.unshift({
        myId: new Date().valueOf(),
        Edit: true,
        NoEdit: false,
        isCreate: true,
        isUpdate: false,
        isUpdateSave: false,
        enable: 1,
        sort: sort,
        ftid: '',
        ftname: '',
        tmrcode: '',
        tmrid: '',
        times: '',
        lppcode: '',
        lppid: '',
        ptime: '',
        maxweight: '',
        operateweight: ''
      })
    },
    createData(row) {
      console.log('点击了新增保存', row)
      if (row.ptime == null || row.ptime == null) {
        row.ptime = ''
      }
      if (
        row.sort == '' &&
        row.ftid == '' &&
        row.tmrid == '' &&
        row.times == '' &&
        row.operateweight == ''
      ) {
        this.$message({
          type: 'error',
          message: this.$t('message.msg142'),
          duration: 2000
        })
        return false
      } else if (
        row.ftid == '' &&
        row.tmrid == '' &&
        row.times == '' &&
        row.operateweight == ''
      ) {
        this.$message({
          type: 'error',
          message: this.$t('message.msg143'),
          duration: 2000
        })
        return false
      } else if (
        row.tmrid == '' &&
        row.times == '' &&
        row.operateweight == ''
      ) {
        this.$message({
          type: 'error',
          message: this.$t('message.msg144'),
          duration: 2000
        })
        return false
      } else if (row.times == '' && row.operateweight == '') {
        this.$message({
          type: 'error',
          message: this.$t('message.msg145'),
          duration: 2000
        })
        return false
      } else if (row.sort == '' || row.sort == 0) {
        this.$message({
          type: 'error',
          message: this.$t('message.msg146'),
          duration: 2000
        })
        return false
      } else if (row.ftid == '') {
        this.$message({
          type: 'error',
          message: this.$t('message.msg18'),
          duration: 2000
        })
        return false
      } else if (row.tmrid == '') {
        this.$message({
          type: 'error',
          message: this.$t('message.msg147'),
          duration: 2000
        })
        return false
      } else if (row.times == '') {
        this.$message({
          type: 'error',
          message: this.$t('message.msg148'),
          duration: 2000
        })
        return false
      } else if (row.operateweight == '') {
        this.$message({
          type: 'error',
          message: this.$t('message.msg149'),
          duration: 2000
        })
        return false
      }

      for (let i = 0; i < this.table.list.length; i++) {
        if (row.sort !== '') {
          if (row.sort == this.table.list[i].sort) {
            if (row.myId !== this.table.list[i].myId) {
              this.$message({
                type: 'error',
                message: this.$t('message.msg150'),
                duration: 2000
              })
              return false
            }
          }
        }
      }
      var isInteger = /^\d+$/
      if (row.sort !== '') {
        if (!isInteger.test(parseFloat(row.sort))) {
          this.$message({
            type: 'error',
            message: this.$t('message.msg151'),
            duration: 2000
          })
          return false
        }
      }
      this.isokDisable = true
      setTimeout(() => {
        this.isokDisable = false
      }, 1000)
      this.requestParam.name = 'insertPremixplan'
      this.requestParam.parammaps = row
      this.requestParam.parammaps.pastureid = Cookies.get('pastureid')
      PostDataByName(this.requestParam).then((response) => {
        console.log('新增保存发送参数', this.requestParam)
        if (response.msg !== 'fail') {
          this.$notify({
            title: this.$t('common.succes'),
            message: this.$t('driver.saveSuccess'),
            type: 'success',
            duration: 2000
          })
          this.getList()
          this.dropState = false
        } else {
          this.$notify({
            title: this.$t('driver.saveFail'),
            message: response.data,
            type: 'warning',
            duration: 2000
          })
        }
      })
    },
    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) {
      for (let i = 0; i < this.table.list.length; i++) {
        if (this.table.list[i].Edit == true) {
          this.$message({
            type: 'error',
            message: this.$t('driver.messageNote'),
            duration: 2000
          })
          return false
        }
      }
      // 编辑true,不可编辑false
      row.Edit = true
      row.NoEdit = false
      // 新增false,编辑false,编辑保存true
      row.isCreate = false
      row.isUpdate = false
      row.isUpdateSave = true
      // row.lppid = String(row.lppid)
      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'
      }

      GetDataByName(this.getCarFollowParm).then((response) => {
        console.log('撒料计划车次跟随列表数据', response.data.list)
        if (response.data.list !== null) {
          this.carFollowList = response.data.list
        }
      })
      if (row.lppcode == undefined) {
        this.$set(row, 'lppid', '')
      }
      this.dropState = true
    },
    updateData(row) {
      console.log('点击了编辑保存', row)
      if (row.ptime == null || row.ptime == 'null') {
        row.ptime = ''
      }
      if (
        row.ftid == '' &&
        row.tmrid == '' &&
        row.times == '' &&
        row.operateweight == ''
      ) {
        this.$message({
          type: 'error',
          message: this.$t('message.msg143'),
          duration: 2000
        })
        return false
      } else if (
        row.tmrid == '' &&
        row.times == '' &&
        row.operateweight == ''
      ) {
        this.$message({
          type: 'error',
          message: this.$t('message.msg144'),
          duration: 2000
        })
        return false
      } else if (row.times == '' && row.operateweight == '') {
        this.$message({
          type: 'error',
          message: this.$t('message.msg145'),
          duration: 2000
        })
        return false
      } else if (row.ftid == '') {
        this.$message({
          type: 'error',
          message: this.$t('message.msg18'),
          duration: 2000
        })
        return false
      } else if (row.tmrid == '') {
        this.$message({
          type: 'error',
          message: this.$t('message.msg147'),
          duration: 2000
        })
        return false
      } else if (row.times == '') {
        this.$message({
          type: 'error',
          message: this.$t('message.msg148'),
          duration: 2000
        })
        return false
      } else if (row.operateweight == '') {
        this.$message({
          type: 'error',
          message: this.$t('message.msg149'),
          duration: 2000
        })
        return false
      }
      for (let i = 0; i < this.table.list.length; i++) {
        if (row.sort == this.table.list[i].sort) {
          if (row.id !== this.table.list[i].id) {
            this.$message({
              type: 'error',
              message: this.$t('message.msg150'),
              duration: 2000
            })
            return false
          }
        }
      }
      var isInteger = /^\d+$/
      if (row.sort !== '') {
        if (!isInteger.test(parseFloat(row.sort))) {
          this.$message({
            type: 'error',
            message: this.$t('message.msg151'),
            duration: 2000
          })
          return false
        }
      }
      if (row.sort == '' || row.sort == 0) {
        this.$message({
          type: 'error',
          message: this.$t('message.msg146'),
          duration: 2000
        })
        return false
      }
      this.isokDisable = true
      setTimeout(() => {
        this.isokDisable = false
      }, 1000)
      this.requestParam.name = 'updatePremixplan'
      this.requestParam.parammaps = row
      PostDataByName(this.requestParam).then((response) => {
        console.log('新增保存发送参数', this.requestParam)
        if (response.msg !== 'fail') {
          this.$notify({
            title: this.$t('common.succes'),
            message: this.$t('driver.saveSuccess'),
            type: 'success',
            duration: 2000
          })
          this.getList()
          this.dropState = false
        } else {
          this.$notify({
            title: this.$t('driver.saveFail'),
            message: response.data,
            type: 'warning',
            duration: 2000
          })
        }
      })
    },
    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
    },

    // 历史记录
    handleHistoryRecords() {
      console.log('点击了历史记录')
      this.dialogFull = false
      this.history.dialogStatus = 'history'
      this.history.dialogFormVisible = true
      this.getDateList()
    },
    // 历史时间
    getDateList() {
      GetDataByName(this.history.getdataDateParm).then((response) => {
        console.log('table数据', response.data.list)
        if (response.data.list !== null) {
          this.history.getdataListParm.parammaps.date =
            response.data.list[0].maxdate
          this.getHistoryList()
        } else {
          this.history.getdataListParm.parammaps.date = ''
        }
      })
    },
    changeDate() {
      this.getHistoryList()
    },
    // 应用
    handleApplication() {
      console.log('点击了应用')
      MessageBox.confirm(
        this.$t('message.msg58') +
          this.history.getdataListParm.parammaps.date +
          this.$t('message.msg59'),
        {
          confirmButtonText: this.$t('common.confirm'),
          cancelButtonText: this.$t('common.cancel'),
          type: 'warning'
        }
      )
        .then(() => {
          this.requestParam.name = 'applyFPdate'
          this.requestParam.parammaps = {}
          this.requestParam.parammaps.pastureid = Cookies.get('pastureid')
          this.requestParam.parammaps.date =
            this.history.getdataListParm.parammaps.date
          PostDataByName(this.requestParam).then((response) => {
            if (response.msg === 'fail') {
              this.$notify({
                title: this.$t('driver.saveFail'),
                message: response.data,
                type: 'warning',
                duration: 2000
              })
            } else {
              this.$notify({
                title: this.$t('common.succes'),
                message: this.$t('driver.saveSuccess'),
                type: 'success',
                duration: 2000
              })
              this.getHistoryIsDisplay()
              this.getList()
            }
          })
        })
        .catch(() => {
          this.$message({ type: 'info', message: this.$t('message.msg41') })
        })
    },
    getHistoryList() {
      this.history.listLoading = true
      GetDataByName(this.history.getdataListParm).then((response) => {
        console.log('table数据', response.data.list)
        if (response.data.list !== null) {
          console.log('table数据', response.data.list)
          this.history.list = response.data.list
          this.history.pageNum = response.data.pageNum
          this.history.pageSize = response.data.pageSize
          this.history.total = response.data.total
        } else {
          this.history.list = []
        }
        setTimeout(() => {
          this.history.listLoading = false
        }, 100)
      })
    },
    // 行内删除
    handleRowDelete(row) {
      console.log(row, '点击了行删除')
      MessageBox.confirm(this.$t('common.delMsg'), {
        confirmButtonText: this.$t('common.confirm'),
        cancelButtonText: this.$t('common.cancel'),
        type: 'warning'
      })
        .then(() => {
          this.selectList = []
          this.requestParam = {}
          this.requestParam.name = 'deletePremixplan'
          this.requestParam.parammaps = {}
          this.requestParam.parammaps.pastureid = row.pastureid
          this.requestParam.parammaps.id = row.id
          PostDataByName(this.requestParam).then((response) => {
            if (response.msg === 'fail') {
              this.$notify({
                title: this.$t('common.delfail'),
                message: response.data,
                type: 'warning',
                duration: 2000
              })
            } else {
              this.$notify({
                title: this.$t('common.succes'),
                message: this.$t('common.delSuccess'),
                type: 'success',
                duration: 2000
              })
              this.getList()
            }
          })
        })
        .catch(() => {
          this.$message({ type: 'info', message: this.$t('common.cancelMsg') })
        })
    },
    // 减少车次
    form_delete() {
      if (this.selectList.length == 0) {
        this.$message({
          type: 'error',
          message: this.$t('message.msg12'),
          duration: 2000
        })
      } else {
        MessageBox.confirm(
          this.$t('message.msg29') +
            this.selectList.length +
            this.$t('message.msg31'),
          {
            confirmButtonText: this.$t('common.confirm'),
            cancelButtonText: this.$t('common.cancel'),
            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: 'deletePremixplan',
            type: 'e',
            parammaps: {
              id: '@insertSpotList.id',
              pastureid: '@insertSpotList.pastureid'
            }
          }
          ExecDataByConfig(this.requestParam).then((response) => {
            console.log('删除保存发送参数', this.requestParam)
            if (response.msg === 'fail') {
              this.$notify({
                title: this.$t('common.delfail'),
                message: response.data,
                type: 'warning',
                duration: 2000
              })
            } else {
              this.$notify({
                title: '',
                message: this.$t('common.delSuccess'),
                type: 'success',
                duration: 2000
              })
              this.getList()
            }
          })
        })
      }
    },
    handleTakeEffect() {
      if (this.selectList.length == 0) {
        this.$message({
          type: 'error',
          message: this.$t('message.msg12'),
          duration: 2000
        })
      } else {
        MessageBox.confirm(
          this.$t('message.msg29') +
            this.selectList.length +
            this.$t('message.msg141'),
          {
            confirmButtonText: this.$t('common.confirm'),
            cancelButtonText: this.$t('common.cancel'),
            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: 'updatePremixplanEnable',
            type: 'e',
            parammaps: {
              enable: '@insertSpotList.enable',
              id: '@insertSpotList.id',
              pastureid: '@insertSpotList.pastureid'
            }
          }
          ExecDataByConfig(this.requestParam).then((response) => {
            console.log('生效保存发送参数', this.requestParam)
            if (response.msg === 'fail') {
              this.$notify({
                title: this.$t('message.msg11'),
                message: response.data,
                type: 'warning',
                duration: 2000
              })
            } else {
              this.$notify({
                title: '',
                message: this.$t('message.msg10'),
                type: 'success',
                duration: 2000
              })
              this.getList()
            }
          })
        })
      }
    },
    handleDisable() {
      if (this.selectList.length == 0) {
        this.$message({
          type: 'error',
          message: this.$t('message.msg12'),
          duration: 2000
        })
      } else {
        MessageBox.confirm(
          this.$t('message.msg29') +
            this.selectList.length +
            this.$t('message.msg30'),
          {
            confirmButtonText: this.$t('common.confirm'),
            cancelButtonText: this.$t('common.cancel'),
            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: 'updatePremixplanEnable',
            type: 'e',
            parammaps: {
              enable: '@insertSpotList.enable',
              id: '@insertSpotList.id',
              pastureid: '@insertSpotList.pastureid'
            }
          }
          ExecDataByConfig(this.requestParam).then((response) => {
            console.log('禁用保存发送参数', this.requestParam)
            if (response.msg === 'fail') {
              this.$notify({
                title: this.$t('message.msg13'),
                message: response.data,
                type: 'warning',
                duration: 2000
              })
            } else {
              this.$notify({
                title: '',
                message: this.$t('message.msg15'),
                type: 'success',
                duration: 2000
              })
              this.getList()
            }
          })
        })
      }
    }
  }
}
</script>

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

/deep/ .el-time-panel__btn {
  height: 26px !important;
}
</style>
