<template>
  <div class="app-container">
    <div class="search">
      <el-date-picker
        v-model="table.getdataListParm.parammaps.inputDatetime"
        class="inputDatetime filter-item"
        type="daterange"
        range-separator="至"
        start-placeholder="开始日期"
        end-placeholder="结束日期"
        style="width: 250px"
      />
      <!-- <el-button class="el-icon-arrow-left elIconArrowLeft" @click="handleBefore" />
      <el-button class="el-icon-arrow-right elIconArrowRight" @click="handleNext" />
      <el-select v-model="table.getdataListParm.parammaps.ftid" filterable placeholder="栏舍名称" class="filter-item" style="width: 120px;" clearable>
        <el-option v-for="item in houseNameList" :key="item.id" :label="item.bname" :value="item.id" />
      </el-select>
      <el-select v-model="record" filterable placeholder="记录" class="filter-item" style="width: 150px;" @change="changeRecord">
        <el-option v-for="item in recordList" :key="item.id" :label="item.name" :value="item.id" />
      </el-select>
      <el-select v-if="record== '1'" v-model="table.getdataListParm.parammaps.eqcode" filterable placeholder="TMR编号" class="filter-item" style="width: 120px;" clearable>
        <el-option v-for="item in TMRNumberList" :key="item.id" :label="item.tname" :value="item.eqcode" />
      </el-select> -->
      <el-button class="successBorder" @click="form_search">查询</el-button>
      <!-- <el-button class="successBorder" @click="handleRefresh">重置</el-button> -->
    </div>
    <div class="operation" v-if="record == '0'">
      <el-button
        v-if="isRoleEdit"
        icon="el-icon-plus"
        class="success"
        @click="handleCreate"
        >新增</el-button
      >
      <el-button
        v-if="isRoleEdit"
        icon="el-icon-delete"
        class="danger"
        @click="form_delete"
        >删除</el-button
      >
      <el-button
        v-if="isRoleEdit"
        class="success"
        icon="el-icon-upload2"
        @click="handleSAPUpload"
        >SAP上传</el-button
      >
      <!-- <el-button v-if="dataSynchronization.isDataSynchronization && isRoleEdit" class="success" @click="handleDataUpload">数据上传</el-button>
      <el-upload v-if="isRoleEdit" style="float: right;" :headers="headers" :data="uploadData" :action="uploadExcelUrl" :show-file-list="false" :before-upload="beforeImport" :on-success="handleImportSuccess">
        <el-button class="import" icon="el-icon-download" style="float: right;">导入</el-button>
      </el-upload>
      <el-dropdown style="float: right;margin-right: 10px;">
        <el-button class="export" icon="el-icon-upload2">导出</el-button>
        <el-dropdown-menu slot="dropdown">
          <el-dropdown-item  @click.native="handleExport(1)">导出模板</el-dropdown-item>
          <el-dropdown-item @click.native="handleExport(2)">导出数据</el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown> -->
    </div>
    <div class="operation" v-else>
      <el-button
        v-if="dataSynchronization.isDataSynchronization && isRoleEdit"
        class="success"
        @click="handleDataUpload"
        >数据上传</el-button
      >
      <el-button
        style="float: right; margin-right: 10px"
        class="export"
        icon="el-icon-upload2"
        @click="handleExport(3)"
        >导出</el-button
      >
    </div>
    <!-- 剩料使用 table -->
    <div class="table">
      <el-table
        :key="table.tableKey"
        v-loading="table.listLoading"
        element-loading-text="给我一点时间"
        :data="table.list"
        border
        fit
        highlight-current-row
        style="width: 100%"
        :row-style="rowStyle"
        :cell-style="cellStyle"
        class="elTable table-fixed"
        :header-cell-style="{ 'text-align': 'center' }"
        @selection-change="handleSelectionChange"
        :max-height="myHeight"
      >
        <el-table-column type="selection" align="left" width="50" />
        <el-table-column label="序号" align="left" type="index" width="50px">
          <template slot-scope="scope">
            <span>{{
              scope.$index + (table.pageNum - 1) * table.pageSize + 1
            }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="栏舍名称"
          min-width="120px"
          align="left"
          prop="barname"
        />
        <el-table-column
          label="配方名称"
          min-width="120px"
          align="left"
          prop="ftname"
        />
        <el-table-column
          label="剩料使用时间"
          min-width="150px"
          align="left"
          prop="date"
        />
        <el-table-column
          label="班次"
          min-width="90px"
          align="left"
          prop="timesstr"
        />
        <el-table-column
          label="替代方案"
          min-width="100px"
          align="left"
          prop="surplus"
        />
        <el-table-column
          label="替代重量(Kg)"
          min-width="100px"
          align="left"
          prop="weight"
        />
        <el-table-column
          label="操作"
          align="left"
          width="100"
          class-name="small-padding fixed-width"
          fixed="right"
        >
          <template slot-scope="{ row }">
            <!-- <el-button v-if="isRoleEdit" :disabled="row.emp == '设备采集'" class="miniSuccess" icon="el-icon-edit-outline" @click="handleUpdate(row)" />
            <span v-if="isRoleEdit" class="centerSpan">|</span> -->
            <el-button
              v-if="isRoleEdit"
              :disabled="row.emp == '设备采集'"
              class="miniDanger"
              icon="el-icon-delete"
              @click="handleRowDelete(row)"
            />
          </template>
        </el-table-column>
      </el-table>
      <pagination
        v-show="table.total >= 0"
        :total="table.total"
        :page.sync="table.getdataListParm.offset"
        :limit.sync="table.getdataListParm.pagecount"
        @pagination="getList"
      />
    </div>

    <!-- 新增/编辑 -->
    <el-dialog
      :fullscreen="dialogFull"
      :visible.sync="create.dialogFormVisible"
      :close-on-click-modal="false"
      v-if="create.dialogFormVisible"
      width="40%"
    >
      <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="135px"
          style="width: 90%; margin: 0 auto 50px"
        >
          <el-row v-if="create.dialogStatus == 'create'">
            <el-col :span="20">
              <el-form-item label="栏舍名称：" prop="barid">
                <el-select
                  ref="ftid"
                  v-model="create.temp.barid"
                  :disabled="create.dialogStatus == 'update'"
                  filterable
                  placeholder="栏舍名称"
                  class="filter-item"
                  style="width: 100%"
                  @change="changeBar"
                >
                  <el-option
                    v-for="item in houseNameList"
                    :key="item.id"
                    :label="item.bname"
                    :value="item.id"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row v-else>
            <el-col :span="20">
              <el-form-item label="栏舍名称：" prop="barname">
                <el-input
                  ref="barname"
                  v-model="create.temp.barname"
                  disabled
                  class="filter-item"
                  placeholder=""
                />
              </el-form-item>
            </el-col>
          </el-row>
          <!-- TODO: -->
          <el-row>
            <el-col :span="20">
              <el-form-item label="配方名称：">
                <el-input
                  v-model="create.temp.ftname"
                  class="filter-item"
                  placeholder="配方名称"
                  disabled
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="20">
              <el-form-item label="剩料使用时间：" prop="date">
                <el-date-picker
                  v-model="create.temp.date"
                  type="date"
                  value-format="yyyy-MM-dd"
                  style="width: 100%"
                  :picker-options="pickerOptions"
                  placeholder="剩料使用时间"
                >
                </el-date-picker>
              </el-form-item>
            </el-col>

            <el-col :span="20">
              <el-form-item label="班次：">
                <el-select
                  ref="times"
                  v-model="create.temp.times"
                  filterable
                  placeholder="班次"
                  :disabled="create.dialogStatus == 'update'"
                  class="filter-item"
                  style="width: 100%"
                >
                  <el-option
                    v-for="item in frequencyList"
                    :key="item.id"
                    :label="item.name"
                    :value="item.id"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <!--  -->
          <el-row>
            <el-col :span="20">
              <el-form-item label="替代方案：" prop="surplus">
                <el-select
                  style="width: 100%"
                  v-model="create.temp.surplus"
                  filterable
                  clearable
                  placeholder="替代方案"
                  class="filter-item"
                  @change="handlegetSurplus"
                >
                  <el-option
                    v-for="item in tableData"
                    :key="item.id"
                    :label="item.surplus"
                    :value="item.surplus"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="20">
              <el-form-item label="替代重量(Kg)：" prop="weight">
                <el-input
                  ref="weight"
                  v-model="create.temp.weight"
                  class="filter-item"
                  placeholder="替代重量"
                  type="number"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button
            class="cancelClose"
            @click="
              create.dialogFormVisible = false;
              getList();
            "
            >关闭</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>

    <!-- sap上传 -->
    <el-dialog
      title="SAP上传"
      :destroy-on-close="true"
      :visible.sync="sapUpload.dialogFormVisible"
      :close-on-click-modal="false"
      width="40%"
    >
      <div class="sapUpload">
        <el-form
          ref="sapUpload"
          :rules="sapUpload.rules"
          :model="sapUpload.temp"
          label-position="right"
          label-width="100px"
          style="width: 100%; margin: 0 auto 50px"
        >
          <el-row>
            <el-col :span="24">
              <el-form-item label="时间：" prop="date">
                <el-date-picker
                  v-model="sapUpload.temp.date"
                  :clearable="false"
                  class="filter-item"
                  type="date"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
        <div slot="footer" class="dialog-footer" style="bottom: 20px">
          <el-button
            class="cancelClose"
            @click="
              sapUpload.dialogFormVisible = false;
              getList();
            "
            >取消</el-button
          >
          <el-button
            class="save"
            :disabled="isokDisable"
            @click="sapUploadData()"
            >确认</el-button
          >
        </div>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import {
  GetDataByName,
  PostDataByName,
  getSurplus,
  GetDataByNames,
  checkButtons,
  postJson2,
  postJson,
} from "@/api/common";
import Cookies from "js-cookie";
import { parseTime, json2excel } from "@/utils/index.js";
import Pagination from "@/components/Pagination";
import { MessageBox } from "element-ui";
import axios from "axios";
import { getToken } from "@/utils/auth";
export default {
  name: "MaterialRemainingRecord",
  components: { Pagination },
  data() {
    return {
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() > Date.now() - 8.64e6; //如果没有后面的-8.64e6就是不可以选择今天的
        },
      },
      enterTime: "",
      tableData: [],
      sapUpload: {
        dialogFormVisible: false,
        dialogStatus: "",
        temp: {
          date: parseTime(new Date(), "{y}-{m}-{d}"),
        },
        rules: {
          date: [
            { required: true, message: "原剩料所属时间必填", trigger: "blur" },
          ],
        },
        getdataListParm: {
          name: "getSysoptEnable",
          page: 1,
          offset: 1,
          pagecount: 1,
          returntype: "Map",
          parammaps: {
            pastureid: Cookies.get("pastureid"),
            inforname: "sapupload",
          },
        },
        isSap: false,
      },
      dialogFull: false,
      isRoleEdit: [],
      getParmas: {
        name: "getFPList",
        page: 1,
        offset: 1,
        pagecount: 0,
        returntype: "Map",
        parammaps: {
          pastureid: Cookies.get("pastureid"),
          ftname: "",
        },
      },
      requestParams: [
        {
          name: "getBarListEnable",
          offset: 0,
          pagecount: 0,
          parammaps: { pastureid: Cookies.get("pastureid") },
        },
        {
          name: "getSysoptEnable",
          offset: 0,
          pagecount: 0,
          parammaps: {
            pastureid: Cookies.get("pastureid"),
            inforname: "times",
          },
        },
        {
          name: "getTMRListEnableType",
          offset: 0,
          pagecount: 0,
          parammaps: { pastureid: Cookies.get("pastureid"), eqtype: "1" },
        },
      ],
      houseNameList: [], // 栏舍名称
      frequencyList: [], // 收集
      recordList: [
        { id: "0", name: "手动记录" },
        { id: "1", name: "TMR设备自动记录" },
      ],
      record: "0",
      table: {
        getdataListParm: {
          name: "getWasteuse",
          page: 1,
          offset: 1,
          pagecount: parseInt(Cookies.get("pageCount")),
          returntype: "Map",
          parammaps: {
            pastureId: Cookies.get("pastureid"),
            ftid: "",
            startdate: "",
            enddate: "",
            inputDatetime: "",
          },
        },
        tableKey: 0,
        list: [],
        total: 0,
        listLoading: true,
        temp: {},
        tableKey2: 0,
        listLoading2: false,
        list2: [],
      },

      // 新增/编辑
      create: {
        dialogFormVisible: false,
        dialogStatus: "",
        temp: {
          pastureId: Cookies.get("pastureid"),
          operatetime: parseTime(new Date(), "{y}-{m}-{d} {h}:{i}"),
          emp: Cookies.get("employename"),
          ftid: "",
          ftname: "",
          weight: "",
          times: "1",
          surplusId: "",
          surplus: "",
        },
        rules: {
          ftid: [
            {
              type: "string",
              required: true,
              message: "必填",
              trigger: "blur",
            },
          ],
          weight: [
            {
              type: "string",
              required: true,
              message: "必填",
              trigger: "blur",
            },
          ],
          times: [
            {
              type: "string",
              required: true,
              message: "必填",
              trigger: "blur",
            },
          ],
          ftname: [
            {
              type: "string",
              required: true,
              message: "必填",
              trigger: "blur",
            },
          ],
          surplus: [
            {
              type: "string",
              required: true,
              message: "必填",
              trigger: "blur",
            },
          ],
          date: [
            {
              type: "string",
              required: true,
              message: "必填",
              trigger: "blur",
            },
          ],
          barid: [
            {
              type: "string",
              required: true,
              message: "必填",
              trigger: "blur",
            },
          ],
        },
        getdataListParm: {
          name: "getBarfeedremainEmpHis",
          page: 1,
          offset: 1,
          pagecount: 10,
          returntype: "Map",
          parammaps: {
            pastureid: Cookies.get("pastureid"),
          },
        },
        noteTakerList: [], // 记录人
      },
      textMap: {
        create: "新增",
        update: "编辑",
      },

      requestParam: {},
      download: {
        getdataListParm: {
          name: "getBarfeedremainList",
          page: 1,
          offset: 1,
          pagecount: 0,
          returntype: "Map",
          parammaps: {
            pastureid: Cookies.get("pastureid"),
            ftid: "",
            startdate: "",
            enddate: "",
            inputDatetime: "",
          },
        },
        list: [],
      },
      dataSynchronization: {
        dialogFormVisible: false,
        dialogStatus: "",
        getdataListParm: {
          name: "getSysoptEnable",
          page: 1,
          offset: 1,
          pagecount: 1,
          returntype: "Map",
          parammaps: {
            pastureid: Cookies.get("pastureid"),
            inforname: "wgSap",
          },
        },
        isDataSynchronization: false,
      },
      isokDisable: false,
      selectList: [],
      rowStyle: { maxHeight: 30 + "px", height: 30 + "px" },
      cellStyle: { padding: 0 + "px" },
      myHeight: document.documentElement.clientHeight - 85 - 150 - 45,
      url: "authdata/ImportExcel",
    };
  },
  computed: {
    // 设置请求头
    headers() {
      return {
        token: getToken(),
      };
    },
    uploadData() {
      return {
        name: "checkbarname,checktimes,insertBarfeedremainUpload",
        importParams:
          "栏舍名称,配方名称,原剩料所属时间,剩料量（kg）,干物质,班次收集(一天/第一班/第二班/第三班),收集时间,操作人",
        sheetname: "Sheet1",
        // 登录牧场
        pastureid: Cookies.get("pastureid"),
        // 日期参数
        dateParams: "原剩料所属时间",
        // 必填参数
        requiredParams:
          "栏舍名称,剩料量（kg）,班次收集(一天/第一班/第二班/第三班)",
        // 为数值的参数
        numParams: "剩料量（kg）",
      };
    },
    // 设置上传地址
    uploadExcelUrl() {
      // return Cookies.get('url') + 'authdata/ImportExcel'
      return Cookies.get("url") + "authdata/ImportExcel";
    },
    // let url = 'authdata/ImportExcel';
  },
  created() {
    console.log(document.querySelector("html").getAttribute("domain"), "7777");
    this.getDataSynchronization();
    this.getList();
    this.getDownList();
    this.getButtons();
    this.getLeftTable();
  },
  mounted() {
    this.$nextTick(() => {
      this.enterTime = Date.now();
    });
  },
  beforeUnmount() {
    const stayTime = Math.round((Date.now() - this.enterTime) / 1000);
    window._hmt?.push([
      "_trackEvent",
      "PageStay",
      "Duration",
      this.$route.path,
      stayTime,
    ]);
  },
  methods: {
    // 获取剩料列表
    async getLeftTable() {
      const { data } = await getSurplus(Cookies.get("pastureid"));
      console.log(data, "table");
      this.tableData = data;
    },
    // 获取替代方案的名字
    handlegetSurplus(val) {
      const id = this.tableData.find((item) => {
        return item.surplus == val;
      }).id;
      this.create.temp.surplusId = id;
      console.log(id, "surplus");
    },
    // 点击sap上传
    handleSAPUpload() {
      this.sapUpload.dialogStatus = "sapUpload";
      this.sapUpload.dialogFormVisible = true;
    },
    sapUploadData() {
      this.$refs["sapUpload"].validate((valid) => {
        if (valid) {
          const url = "authdata/xdmy/sap/wasteuse";
          const data = {
            pastureId: Cookies.get("pastureid"),
            date: parseTime(this.sapUpload.temp.date, "{y}-{m}-{d}"),
          };
          const loading = this.$loading({
            lock: true,
            text: "Loading",
            spinner: "el-icon-loading",
            background: "rgba(0, 0, 0, 0.7)",
          });

          postJson(url, data).then((response) => {
            setTimeout(() => {
              loading.close();
            }, 1000);
            if (response.msg == "ok") {
              this.$notify({
                title: "",
                message: "成功",
                type: "success",
                duration: 2000,
              });
              this.sapUpload.dialogFormVisible = false;
              this.getList();
            } else {
              this.$notify({
                title: "失败",
                message: response.data,
                type: "warning",
                duration: 2000,
              });
            }
          });
        }
      });
    },

    getDataSynchronization() {
      GetDataByName(this.dataSynchronization.getdataListParm).then(
        (response) => {
          // console.log(response.data.list[0])
          if (response.data.list && response.data.list[0].inforvalue == 0) {
            this.dataSynchronization.isDataSynchronization = false;
          } else {
            this.dataSynchronization.isDataSynchronization = true;
          }
        }
      );
    },
    getButtons() {
      const Edit = "MaterialRemainingRecord";
      const isRoleEdit = checkButtons(
        JSON.parse(sessionStorage.getItem("buttons")),
        Edit
      );
      this.isRoleEdit = isRoleEdit;
    },
    getDownList() {
      GetDataByNames(this.requestParams).then((response) => {
        this.houseNameList = response.data.getBarListEnable.list;
        this.TMRNumberList = response.data.getTMRListEnableType.list;
        if (response.data.getSysoptEnable.list !== null) {
          for (
            let i = 1;
            i <= response.data.getSysoptEnable.list[0].inforvalue;
            i++
          ) {
            const obj = {};
            obj.id = String(i);
            if (i == 1) {
              obj.name = "第一班";
            } else if (i == 2) {
              obj.name = "第二班";
            } else if (i == 3) {
              obj.name = "第三班";
            } else if (i == 4) {
              obj.name = "第四班";
            } else if (i == 5) {
              obj.name = "第五班";
            } else if (i == 6) {
              obj.name = "第六班";
            }
            this.frequencyList.push(obj);
          }
          // this.frequencyList.unshift({id:'0',name:"一天"})
        } else {
          this.frequencyList = [];
        }
      });
    },
    handleBefore() {
      if (
        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
        this.table.getdataListParm.parammaps.inputDatetime !== null
      ) {
        var start = new Date(
          this.table.getdataListParm.parammaps.inputDatetime[0].setDate(
            this.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1
          )
        );
        var stop = new Date(
          this.table.getdataListParm.parammaps.inputDatetime[1].setDate(
            this.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1
          )
        );
        this.table.getdataListParm.parammaps.inputDatetime.length = 0;
        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop);
        this.$forceUpdate();
      }
    },
    handleNext() {
      if (
        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
        this.table.getdataListParm.parammaps.inputDatetime !== null
      ) {
        var start = new Date(
          this.table.getdataListParm.parammaps.inputDatetime[0].setDate(
            this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1
          )
        );
        var stop = new Date(
          this.table.getdataListParm.parammaps.inputDatetime[1].setDate(
            this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1
          )
        );
        this.table.getdataListParm.parammaps.inputDatetime.length = 0;
        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop);
        this.$forceUpdate();
      }
    },

    getList() {
      this.table.listLoading = true;
      if (
        this.table.getdataListParm.parammaps.inputDatetime !== "" &&
        this.table.getdataListParm.parammaps.inputDatetime !== null
      ) {
        this.table.getdataListParm.parammaps.startdate = parseTime(
          this.table.getdataListParm.parammaps.inputDatetime[0],
          "{y}-{m}-{d}"
        );
        this.table.getdataListParm.parammaps.enddate = parseTime(
          this.table.getdataListParm.parammaps.inputDatetime[1],
          "{y}-{m}-{d}"
        );
      } else {
        this.table.getdataListParm.parammaps.inputDatetime = "";
        this.table.getdataListParm.parammaps.startdate = "";
        this.table.getdataListParm.parammaps.enddate = "";
      }
      GetDataByName(this.table.getdataListParm).then((response) => {
        console.log("table数据", response.data.list);
        if (response.data.list !== null) {
          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);
      });
    },
    changeRecord(item) {
      if (item == "0") {
        this.table.getdataListParm.name = "getBarfeedremainList";
      } else {
        this.table.getdataListParm.name = "getRemainplanrecord";
      }
      this.table.getdataListParm.offset = 1;
      this.getList();
    },
    form_search() {
      console.log("点击了查询");
      this.table.getdataListParm.offset = 1;
      this.getList();
    },
    handleRefresh() {
      console.log("点击了重置");
      this.table.getdataListParm.parammaps.ftid = "";
      this.table.getdataListParm.parammaps.startdate = "";
      this.table.getdataListParm.parammaps.enddate = "";
      this.table.getdataListParm.parammaps.inputDatetime = "";
      this.table.getdataListParm.offset = 1;
      this.getList();
    },

    // 新增
    resetTemp() {
      this.create.temp = {
        pastureId: Cookies.get("pastureid"),
        operatetime: parseTime(new Date(), "{y}-{m}-{d} {h}:{i}"),
        emp: Cookies.get("employename"),
        ftid: "",
        ftname: "",
        weight: "",
        times: "1",
        date: "",
      };
    },
    blurEmp(item) {
      this.create.temp.emp = item.target.value;
    },
    // 栏舍名称
    changeBar(item) {
      this.create.temp.ftname = this.houseNameList.find(
        (obj) => obj.id === item
      ).bname;
      this.create.temp.ftid = item;
      this.getParmas.parammaps.barid = item;
      this.chooseftname();
    },
    // 根据栏舍选择配方名称
    chooseftname() {
      GetDataByName(this.getParmas).then((res) => {
        const { data } = res;
        const ftname = data.list.length && data.list[0].ftname;
        this.$set(this.create.temp, "ftname", ftname);
        // this.create.temp.ftname = ftname;
        console.log(this.create.temp.ftname, ftname, "配方名字");
      });
    },

    getNoteTakerList() {
      GetDataByName(this.create.getdataListParm).then((response) => {
        if (response.data.list !== null) {
          for (let i = 0; i < response.data.list.length; i++) {
            response.data.list[i].myId = i;
          }
          this.create.noteTakerList = response.data.list;
          console.log("记录人数据", response.data.list);
          console.log(this.create.noteTakerList);
        } else {
          this.create.noteTakerList = [];
        }
      });
    },
    handleCreate() {
      console.log("点击了新增", this.create);

      this.dialogFull = false;
      this.resetTemp();
      this.getNoteTakerList();
      this.create.dialogStatus = "create";
      this.create.dialogFormVisible = true;
    },
    createData() {
      console.log("点击了新增保存");
      console.log(this.create.temp, "发送数据");
      this.isokDisable = true;
      setTimeout(() => {
        this.isokDisable = false;
      }, 1000);
      this.$refs["temp"].validate((valid) => {
        if (valid) {
          this.isokDisable = true;
          setTimeout(() => {
            this.isokDisable = false;
          }, 1000);
          const weight = /^\d+(\.\d{1,2})?$/;
          // 剩料量
          if (!weight.test(parseFloat(this.create.temp.weight))) {
            this.$message({
              type: "error",
              message: "剩料量请输入自然数并保留两位小数",
              duration: 2000,
            });
            return false;
          }
          this.requestParam.name = "insertWasteuse";
          this.requestParam.parammaps = this.create.temp;

          if (this.create.temp.emp == "") {
            this.create.temp.emp = Cookies.get("employename");
          }
          console.log("新增保存发送参数", this.requestParam);
          PostDataByName(this.requestParam).then((response) => {
            if (response.msg !== "fail") {
              this.$notify({
                title: "成功",
                message: "保存成功",
                type: "success",
                duration: 2000,
              });
              this.create.dialogFormVisible = false;
              this.getList();
            } else {
              const ftid = new RegExp("key 'ftid'");
              if (ftid.test(response.data)) {
                this.$message({
                  type: "error",
                  message: "该栏舍该班次收集今日剩料量已存在，不可重复生成",
                  duration: 2000,
                });
              } else {
                this.$notify({
                  title: "保存失败",
                  message: response.data,
                  type: "warning",
                  duration: 2000,
                });
              }
            }
          });
        }
      });
    },

    // 编辑
    handleUpdate(row) {
      console.log("点击了编辑", row);
      console.log(this.frequencyList, "frequencyList");
      this.dialogFull = false;
      row.ftid = String(row.ftid);
      this.create.temp = Object.assign({}, row);
      this.create.temp.id = row.id;

      this.getNoteTakerList();
      this.create.dialogStatus = "update";
      this.create.dialogFormVisible = true;
    },
    updateData() {
      this.isokDisable = true;
      setTimeout(() => {
        this.isokDisable = false;
      }, 1000);
      this.$refs["temp"].validate((valid) => {
        if (valid) {
          this.isokDisable = true;
          setTimeout(() => {
            this.isokDisable = false;
          }, 1000);
          const weight = /^\d+(\.\d{1,2})?$/;
          // 剩料量
          if (!weight.test(parseFloat(this.create.temp.weight))) {
            this.$message({
              type: "error",
              message: "剩料量请输入自然数并保留两位小数",
              duration: 2000,
            });
            return false;
          }
          this.requestParam.name = "editWasteuse";
          this.requestParam.parammaps = this.create.temp;
          if (this.create.temp.emp == "") {
            this.create.temp.emp = Cookies.get("employename");
          }
          PostDataByName(this.requestParam).then((response) => {
            console.log("新增保存发送参数", this.requestParam);
            if (response.msg !== "fail") {
              this.$notify({
                title: "成功",
                message: "保存成功",
                type: "success",
                duration: 2000,
              });
              this.create.dialogFormVisible = false;
              this.getList();
            } else {
              this.$notify({
                title: "保存失败",
                message: response.data,
                type: "warning",
                duration: 2000,
              });
            }
          });
        }
      });
    },

    // 删除
    handleRowDelete(row, type) {
      console.log("点击了行内删除");
      MessageBox.confirm("是否确认删除此信息?", {
        confirmButtonText: "确认",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.selectList = [];
          this.requestParam.name = "delWasteuse";
          this.requestParam.parammaps = {};
          this.requestParam.parammaps.pastureId = row.pastureid;
          if (type == 1) {
            this.requestParam.parammaps.id = row;
          } else {
            this.requestParam.parammaps.id = row.id;
          }

          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: "已取消删除" });
        });
    },
    handleSelectionChange(val) {
      console.log("勾选数据", val);
      this.selectList = val;
    },
    form_delete(type) {
      console.log("点击了删除++++++++");
      if (this.selectList.length == 0) {
        this.$message({
          type: "error",
          message: "请选择栏舍剩料记录",
          duration: 2000,
        });
      } else {
        const ids = this.selectList.map((item) => {
          return item.id;
        });
        this.handleRowDelete(ids.toString(), 1);
      }
    },
    // 复制
    handleCopy() {
      console.log("点击了复制");
      if (this.selectList.length == 0) {
        this.$message({
          type: "error",
          message: "请选择栏舍剩料记录",
          duration: 2000,
        });
      } else if (this.selectList.length == 1) {
        MessageBox.confirm("是否确认复制此信息?", {
          confirmButtonText: "确认",
          cancelButtonText: "取消",
          type: "warning",
        })
          .then(() => {
            this.requestParam.name = "copybarfeedremain";
            this.requestParam.parammaps = {};
            this.requestParam.parammaps.pastureid =
              this.selectList[0].pastureid;
            this.requestParam.parammaps.id = this.selectList[0].id;
            PostDataByName(this.requestParam).then((response) => {
              if (response.msg === "fail") {
                const ftid = new RegExp("key 'ftid'");
                if (ftid.test(response.data)) {
                  this.$notify({
                    type: "warning",
                    message: "该栏舍该班次收集今日剩料量已存在，不可重复生成",
                    duration: 2000,
                  });
                  return;
                }
                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: "已取消复制" });
          });
      } else {
        this.$message({
          type: "error",
          message: "请选择一条栏舍剩料记录",
          duration: 2000,
        });
      }
    },
    // 导出
    handleExport(item) {
      if (item == 1) {
        console.log("点击了导出模板");
        console.log("点击了导出模板");
        const requestParam = this.requestParam;
        const url = Cookies.get("url") + "authdata/barfeedremain/excel"; // 请求下载文件的地址
        console.log(url);
        axios({
          method: "POST",
          url: url,
          data: requestParam,
          headers: { token: getToken(), optname: "insertcustomdoc" },
          responseType: "blob",
        }).then((res) => {
          if (!res) return;
          this.percentage = 99;
          setTimeout(() => {
            this.isPercentage = false;
          }, 2000);
          const blob = new Blob([res.data], {
            type: "application/octet-stream;charset=utf-8",
          });
          const url = window.URL.createObjectURL(blob);
          const aLink = document.createElement("a");
          aLink.style.display = "none";
          aLink.href = url;
          const docname = "栏舍剩料记录导入模板.xlsx";
          aLink.setAttribute("download", docname); // 下载的文件
          document.body.appendChild(aLink);
          aLink.click();
          document.body.removeChild(aLink);
          window.URL.revokeObjectURL(url);
        });
      } else {
        console.log("点击了导出数据", item, this.record);
        if (this.record == "0") {
          this.download.getdataListParm.name = "getBarfeedremainList";
        } else {
          this.download.getdataListParm.name = "getRemainplanrecord";
        }
        this.download.getdataListParm.parammaps =
          this.table.getdataListParm.parammaps;
        if (
          this.download.getdataListParm.parammaps.inputDatetime !== "" &&
          this.download.getdataListParm.parammaps.inputDatetime !== null
        ) {
          this.download.getdataListParm.parammaps.startdate = parseTime(
            this.download.getdataListParm.parammaps.inputDatetime[0],
            "{y}-{m}-{d}"
          );
          this.download.getdataListParm.parammaps.enddate = parseTime(
            this.download.getdataListParm.parammaps.inputDatetime[1],
            "{y}-{m}-{d}"
          );
        } else {
          this.download.getdataListParm.parammaps.inputDatetime = "";
          this.download.getdataListParm.parammaps.startdate = "";
          this.download.getdataListParm.parammaps.enddate = "";
        }
        GetDataByName(this.download.getdataListParm).then((response) => {
          if (response.data.list !== null) {
            this.download.list = response.data.list;
          } else {
            this.download.list = [];
          }
          if (item == 2) {
            var excelDatas1 = [
              {
                tHeader: [
                  "栏舍名称",
                  "配方名称",
                  "原剩料所属时间",
                  "剩料量（kg）",
                  "班次(收集)",
                  "收集时间",
                  "操作人",
                ],
                filterVal: [
                  "ftname",
                  "ftname",
                  "date",
                  "weight",
                  "timesstr",
                  "operatetime",
                  "emp",
                ],
                tableDatas: this.download.list,
                sheetName: "Sheet1",
              },
            ];
            json2excel(excelDatas1, "栏舍剩料记录-手动记录", true, "xlsx");
          } else {
            var excelDatas2 = [
              {
                tHeader: [
                  "TMR设备编号",
                  "TMR设备名称",
                  "TMR设备类型",
                  "栏舍名称",
                  "收集时间",
                  "剩料重量(kg)",
                  "开始重量(kg)",
                  "结束重量(kg)",
                  "驾驶员",
                ],
                filterVal: [
                  "eqcode",
                  "eqname",
                  "tclassname",
                  "ftname",
                  "createtime",
                  "weight",
                  "beginweight",
                  "endweight",
                  "driver",
                ],
                tableDatas: this.download.list,
                sheetName: "Sheet1",
              },
            ];
            json2excel(
              excelDatas2,
              "栏舍剩料记录-TMR设备自动记录",
              true,
              "xlsx"
            );
          }
        });
      }
    },

    beforeImport(file) {
      const isLt2M = file.size / 1024 / 1024 < 2;
      if (!isLt2M) {
        this.$message.error("上传文件大小不能超过 2MB!");
      }
      return isLt2M;
    },
    handleImportSuccess(res, file) {
      this.getList();
      if (res.msg === "ok") {
        this.$message({
          title: "成功",
          message: "导入成功:" + res.data.success + "条!",
          type: "success",
          duration: 2000,
        });
        if (res.data.err_count > 0) {
          this.$notify({
            title: "失败",
            message: "导入失败:" + res.data.err_count + "条!",
            type: "danger",
            duration: 2000,
          });
          import("@/vendor/Export2Excel").then((excel) => {
            const list1 = res.data.result;
            const tHeader = [
              "栏舍名称",
              "配方名称",
              "原剩料所属时间",
              "剩料量（kg）",
              "干物质",
              "班次(收集)",
              "收集时间",
              "操作人",
              "错误信息",
            ];
            const filterVal = [
              "栏舍名称",
              "配方名称",
              "原剩料所属时间",
              "剩料量（kg）",
              "干物质",
              "班次(收集)",
              "收集时间",
              "操作人",
              "error_msg",
            ];
            const data1 = this.formatJson(filterVal, list1);
            excel.export_json_to_excel({
              header: tHeader,
              data: data1,
              filename: "栏舍剩料记录导入报错信息",
              autoWidth: true,
              bookType: "xlsx",
            });
          });
        }
      } else {
        this.$notify({
          title: "失败",
          message: "上传失败",
          type: "danger",
          duration: 2000,
        });
      }
    },
    formatJson(filterVal, jsonData) {
      return jsonData.map((v) =>
        filterVal.map((j) => {
          if (j === "timestamp") {
            return parseTime(v[j]);
          } else {
            return v[j];
          }
        })
      );
    },
    handleDataUpload() {
      let a = Cookies.get("url");
      let b = a.search(8081);
      let c = a.substring(0, a.search(8081)) + "8082";
      let d = a.substring(0, a.lastIndexOf("/"));
      console.log(d);
      let url = "";
      if (b == -1) {
        url = d + ":8082";
      } else {
        url = c;
      }
      console.log(url, "url");
      let _url = url + "/authdata/surplus/push";
      let data = {
        date: parseTime(new Date(), "{y}-{m}-{d}"),
        pastureId: Cookies.get("pastureid"),
      };
      console.log(_url, "_url");
      postJson2(_url, data).then((response) => {
        if (response.msg == "ok") {
          this.$notify({
            title: "",
            message: response.data,
            type: "success",
            duration: 2000,
          });
        } else {
          this.$notify({
            title: "上传失败",
            message: response.data,
            type: "warning",
            duration: 2000,
          });
        }
      });
    },
  },
};
</script>
