// 排队开始
<template>
  <div class="sale">
    <div class="top">
      <el-form :inline="true" style="margin-top: 1rem;">
        <el-form-item>
          <el-input
            v-model.trim="capacityNo"
            style="width:250px"
            placeholder="输入车牌号查询"
            clearable
          >
          </el-input>
          <el-button
            type="primary"
            class="btn"
            @click="onclick"
            style="margin-left: 4px;"
            clearable
            ><i class="el-icon-search"></i>查询车辆</el-button
          >
        </el-form-item>
        <el-form-item>
          <el-button
            type="primary"
            class="btn"
            @click="onclickMaterial"
            style="margin-left: 4px;"
            clearable
            ><i class="el-icon-search"></i>查询物资</el-button
          >
        </el-form-item>
        <el-form-item>
          <el-badge :value="redDotNum" class="item">
            <el-button type="primary" class="btn" @click="refresh">
              <i class="el-icon-refresh"></i>刷新
            </el-button>
          </el-badge>
        </el-form-item>
        <el-form-item
          ><el-button type="primary" class="btn" @click="allow">
            <i class="el-icon-d-arrow-right"></i>放行
          </el-button></el-form-item
        >
        <el-form-item
          ><el-button type="primary" class="btn" disabled>
            厂内钢材车辆总数
          </el-button>
          <el-input disabled style="width:100px" v-model="steelOrderNum">
          </el-input>
        </el-form-item>
      </el-form>
    </div>
    <!-- 物资选择模态框 -->
    <el-drawer
      title="选择物资信息"
      :visible.sync="table1"
      direction="rtl"
      size="90%"
      :show-close="true"
    >
      <el-form :inline="true" style="margin-top: 0.5rem;">
        <el-form-item>
          <label class="el-form-item__label" style="width: auto;"
            >物资名称</label
          >
        </el-form-item>
        <el-form-item>
          <el-input
            placeholder="请输入内容"
            v-model="materialNameText"
            clearable
          ></el-input>
        </el-form-item>
        <el-form-item>
          <label class="el-form-item__label" style="width: auto;">规格</label>
        </el-form-item>
        <el-form-item>
          <el-input
            placeholder="请输入内容"
            v-model="materialSpecificationText"
            clearable
            ><template slot="prepend">Φ</template></el-input
          >
        </el-form-item>
        <el-button
          type="primary"
          class="btn"
          @click="onclickMaterial1"
          style="margin-left: 4px;"
          ><i class="el-icon-search"></i>查询</el-button
        >
        <el-button type="primary" @click="makeSureMaterial"
          ><i class="el-icon-check"></i>确定</el-button
        >
      </el-form>
      <div class="tablecls">
        <!-- 查询所有的物资 -->
        <dilTable
          v-bind.sync="optionMa"
          @selection-change="selectionChange2"
          @rowDbClick="rowDbClick"
        >
        </dilTable>
      </div>
    </el-drawer>
    <div class="tabs">
      <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
        <el-tab-pane label="单拼车辆排队链表" name="first">
          <el-table
            ref="mutiData"
            :data="tableData1"
            border
            :row-key="getRowKey"
            style="width: 100%; margin-top: 20px"
            @selection-change="handleSelectionChange"
            max-height="500px"
          >
            <el-table-column
              type="selection"
              width="55"
              :selectable="selectInit"
              reserve-selection
            ></el-table-column>
            <el-table-column type="index" width="50"> </el-table-column>
            <el-table-column prop="capacityNumber" label="车牌号" fit>
            </el-table-column>
            <el-table-column prop="consigneeName" label="客户" fit>
            </el-table-column>
            <el-table-column prop="materialName" label="物资名称">
            </el-table-column>
            <el-table-column prop="materialSpecification" label="规格型号">
            </el-table-column>
            <el-table-column prop="materialNumber" label="物资件数">
            </el-table-column>
            <el-table-column label="装货点" width="100">
              <template slot-scope="scope">
                <el-select size="mini" v-model="scope.row.id">
                  <el-option
                    v-for="item in option"
                    :key="item.id"
                    :label="item.value"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="resultStartTime" label="排队开始时间">
            </el-table-column>
            <el-table-column
              prop="listNodeOrder"
              label="序号"
            ></el-table-column>
            <el-table-column prop="driverTel" label="司机电话号码">
            </el-table-column>
            <el-table-column prop="sureTime" label="可进厂确认时间">
            </el-table-column>

            <el-table-column prop="gatepostName" label="进厂门岗">
            </el-table-column>
            <el-table-column fixed="right" label="操作" width="100">
              <template slot-scope="scope">
                <el-button type="text" size="mini" @click="updateBill(scope)">
                  修改提货单
                </el-button>
              </template>
            </el-table-column>
          </el-table>
        </el-tab-pane>
        <el-tab-pane label="多拼车辆排队链表" name="second">
          <el-table
            :data="tableData"
            :span-method="objectSpanMethod"
            border
            style="width: 100%; margin-top: 20px"
            @selection-change="handleSelectionChange"
            max-height="500px"
          >
            <el-table-column type="selection" width="55"></el-table-column>
            <el-table-column prop="capacityNumber" label="车牌号" fit>
            </el-table-column>
            <el-table-column prop="consigneeName" label="客户" fit>
            </el-table-column>
            <el-table-column prop="materialName" label="物资名称">
            </el-table-column>
            <el-table-column prop="materialSpecification" label="规格型号">
            </el-table-column>
            <el-table-column prop="materialNumber" label="物资件数">
            </el-table-column>
            <el-table-column label="装货点" width="100">
              <template slot-scope="scope">
                <el-select size="mini" v-model="scope.row.id">
                  <el-option
                    v-for="item in option"
                    :key="item.id"
                    :label="item.value"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="grid" label="拼数" fit> </el-table-column>
            <el-table-column prop="resultStartTime" label="排队开始时间">
            </el-table-column>
            <el-table-column
              prop="listNodeOrder"
              label="序号"
            ></el-table-column>
            <el-table-column prop="driverTel" label="司机电话号码">
            </el-table-column>
            <el-table-column prop="gatepostName" label="进厂门岗">
            </el-table-column>
            <el-table-column prop="sureTime" label="可进厂确认时间">
            </el-table-column>

            <el-table-column fixed="right" label="操作" width="100">
              <template slot-scope="scope">
                <el-button type="text" size="mini" @click="updateBill(scope)">
                  修改提货单
                </el-button>
              </template>
            </el-table-column>
          </el-table>
        </el-tab-pane>
      </el-tabs>
    </div>
  </div>
</template>
<script>
import { getCookie } from "@/utils/util.js";
export default {
  data() {
    return {
      capacityNo: "",
      inputText: "",
      option1: {
        // 表格请求数据的地址
        requestUrl: "",
        selectionType: "select"
      },
      optionMa: {
        // 表格请求数据的地址
        requestUrl: "",
        // 控制显示多选列
        selectionType: "select"
      },
      activeName: "first",
      tableData: [],
      tableData1: [],
      //存放每一行记录的合并数
      spanArr: [],
      maplist: [],
      id: null,
      option: [],
      filterArr1: [],
      table1: false,
      //物资选中表格
      materialList: [],
      //物资选中暂存
      materialList1: [],
      //物资信息查询内容
      materialNameText: null,
      materialSpecificationText: null,
      materialModelText: null,
      timer: null,
      totalQueueNum: null,
      redDotNum: null,
      i: 0,
      totalQueueNumFirst: null,
      //厂内钢材车辆总数
      steelOrderNum: 0
    };
  },
  mounted() {
    this.i = 0;
    this.infomation();
    this.getSpellingArray();
    this.getNoSpellingArray();
    this.getSteelOrderNum();
    this.wantEnfactory();
    this.start();
  },
  computed: {
    wantS() {
      return this.totalQueueNum;
    }
  },
  beforeDestroy() {
    this.timer;
  },
  watch: {
    wantS() {
      if (this.totalQueueNum - this.totalQueueNumFirst > 0) {
        this.redDotNum = this.totalQueueNum - this.totalQueueNumFirst;
      }
    }
  },
  methods: {
    wantEnfactory() {
      this.axios.get("/api/v1/uc/getQueueCount").then(res => {
        this.totalQueueNum = res.data.data;
        console.log(this.totalQueueNum, "totalQueueNum");
        if (this.i == 0) {
          this.totalQueueNumFirst = this.totalQueueNum;
        }
        this.i++;
      });
    },
    start() {
      this.timer = setInterval(this.wantEnfactory, 60000);
    },
    refresh() {
      this.getSpellingArray();
      this.getNoSpellingArray();
      this.getSteelOrderNum();
      this.redDotNum = null;
      this.totalQueueNum = null;
      this.totalQueueNumFirst = null;
      this.i = 0;
      clearInterval(this.timer);
      this.start();
    },
    getSteelOrderNum() {
      this.axios.get("/api/v1/uc/getSteelOrderNum").then(res => {
        this.steelOrderNum = res.data.data;
      });
    },
    getRowKey(row) {
      return row.ROW_ID;
    },
    selectInit(row) {
      if (this.maplist.length == 0) {
        if (row.ROW_ID == 1) {
          return true;
        } else {
          return false;
        }
      } else {
        if (
          this.maplist.some(e => {
            return e.ROW_ID == row.ROW_ID || e.ROW_ID + 1 == row.ROW_ID;
          })
        ) {
          return true;
        } else {
          return false;
        }
      }
    },
    rowDbClick(row) {
      this.materialList = [];
      this.materialList.push(row);
      this.makeSureMaterial();
    },
    //物资模态框查询
    onclickMaterial1() {
      this.optionMa.requestUrl =
        "/api/v1/uc/getSteelMaterial?apiId=244&materialNameText=" +
        this.materialNameText +
        "&materialSpecificationText=" +
        this.materialSpecificationText;
    },
    onclickMaterial() {
      this.table1 = true;
      this.optionMa.requestUrl =
        "/api/v1/uc/getSteelMaterial?apiId=244&i=" + new Date();
    },
    //返回选中的物资信息
    selectionChange2(selection) {
      this.materialList1 = [];
      this.materialList1 = selection;
      this.materialList = this.materialList.concat(this.materialList1);
    },
    makeSureMaterial() {
      console.log(this.materialList);
      var materialIdList = [];
      this.materialList.forEach(e => {
        if (materialIdList.indexOf(e.materialId) == -1) {
          materialIdList.push(e.materialId);
        }
      });
      let map = {
        materialList: materialIdList
      };
      this.materialList = [];
      this.materialList1 = [];
      if (this.activeName == "first") {
        this.axios
          .post("/api/v1/qms/getQueueListByQueueUp?isSpelling=0", map)
          .then(res => {
            this.tableData1 = res.data.data;
          });
      } else {
        this.axios
          .post("/api/v1/qms/getQueueListByQueueUp?apiId=473&isSpelling=1", map)
          .then(res => {
            this.tableData = res.data.data;
            this.getSpanArr(this.tableData);
          });
      }
      this.table1 = false;
    },
    infomation() {
      this.axios.get("/api/v1/uc/getSteelWarehouse").then(res => {
        console.log(res.data);
        this.option = res.data;
      });
    },
    //记录每一行的合并数
    getSpanArr(data) {
      //每次调用方法初始化
      this.spanArr = [];
      for (var i = 0; i < data.length; i++) {
        if (i === 0) {
          this.spanArr.push(1);
          this.pos = 0;
        } else {
          // 判断当前元素与上一个元素是否相同
          if (data[i].resultTotalId === data[i - 1].resultTotalId) {
            this.spanArr[this.pos] += 1;
            this.spanArr.push(0);
          } else {
            this.spanArr.push(1);
            this.pos = i;
          }
        }
      }
    },
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      if (
        columnIndex === 0 ||
        columnIndex === 1 ||
        columnIndex === 2 ||
        columnIndex === 7 ||
        columnIndex === 8 ||
        columnIndex === 9 ||
        columnIndex === 10 ||
        columnIndex === 11 ||
        columnIndex === 12 ||
        columnIndex === 13 ||
        columnIndex === 14
      ) {
        const _row = this.spanArr[rowIndex];
        const _col = _row > 0 ? 1 : 0;
        return {
          rowspan: _row,
          colspan: _col
        };
      }
    },
    handleClick() {
      this.redDotNum = null;
      this.totalQueueNum = null;
      this.totalQueueNumFirst = null;
      this.i = 0;
      if (this.activeName == "first") {
        this.getNoSpellingArray();
      } else {
        this.getSpellingArray();
      }
    },
    getNoSpellingArray() {
      this.axios
        .post("/api/v1/qms/getQueueListByQueueUp?isSpelling=0&i=" + new Date())
        .then(res => {
          this.tableData1 = res.data.data;
          console.log(this.tableData1);
        });
    },
    getSpellingArray() {
      this.axios
        .post(
          "/api/v1/qms/getQueueListByQueueUp?apiId=473&isSpelling=1&i=" +
            new Date()
        )
        .then(res => {
          this.tableData = res.data.data;
          console.log(this.tableData);
          this.getSpanArr(this.tableData);
        });
    },
    onclick() {
      if (this.activeName == "first") {
        this.axios
          .post(
            "/api/v1/qms/getQueueListByQueueUp?isSpelling=0&i=" +
              new Date() +
              "&capacityNumber=" +
              this.capacityNo
          )
          .then(res => {
            this.tableData1 = res.data.data;
          });
        console.log("wzxxx");
      } else {
        this.axios
          .post(
            "/api/v1/qms/getQueueListByQueueUp?apiId=473&isSpelling=1&i=" +
              new Date() +
              "&capacityNumber=" +
              this.capacityNo
          )
          .then(res => {
            this.tableData = res.data.data;
            this.getSpanArr(this.tableData);
          });
      }
    },
    handleSelectionChange(selection) {
      this.maplist = [];
      this.maplist = selection;
      for (let i = 0; i < this.maplist.length; i++) {
        if (i + 1 < this.maplist.length) {
          if (this.maplist[i].ROW_ID + 1 != this.maplist[i + 1].ROW_ID) {
            this.$refs.mutiData.clearSelection();
          }
        }
      }
      if (
        !this.maplist.some(e => {
          return e.ROW_ID == 1;
        })
      ) {
        this.$refs.mutiData.clearSelection();
      }
    },
    updateBill(scope) {
      console.log(scope.row.capacityId);
      this.$router.push(
        `/editBill/${scope.row.capacityId}/${scope.row.capacityNumber}`
      );
    },
    filterArr(resultId) {
      console.log("fdhjsaj");
      this.filterArr1 = this.filterArr1.concat(
        this.tableData.filter(ele => ele.resultId == resultId)
      );
    },
    allow() {
      if (this.maplist.length == 0) {
        this.$message.error("请选择需要放行的车辆");
        return;
      }
      for (let i = 0; i < this.maplist.length; i++) {
        console.log(typeof this.maplist[i].id);
        if (
          typeof this.maplist[i].id == "undefined" ||
          this.maplist[i].id == null ||
          this.maplist[i].id == "null"
        ) {
          this.$message.error("请选择装货点");
          return;
        }
        this.filterArr(this.maplist[i].resultId);
      }
      var filterArr2 = [];
      this.filterArr1.forEach(e => {
        if (filterArr2.indexOf(e) === -1) {
          filterArr2.push(e);
        }
      });
      let map = {
        ssoId: getCookie("userId"),
        mapList: filterArr2
      };
      if (this.activeName == "first") {
        map.mapList = this.maplist;
      }
      this.axios.post("/api/v1/qms/allowEnFactory", map).then(res => {
        if (res.data.code == "200") {
          this.$message.success("放行成功，等待进厂");
          this.maplist = [];
          this.$refs.mutiData.clearSelection();
          this.getNoSpellingArray();
          this.getSpellingArray();
          this.redDotNum = null;
          this.totalQueueNum = null;
          this.totalQueueNumFirst = null;
          this.i = 0;
          clearInterval(this.timer);
          this.start();
        } else {
          this.$message.error("请按顺序勾选");
          this.maplist = [];
          this.$refs.mutiData.clearSelection();
          this.getNoSpellingArray();
          this.getSpellingArray();
          this.redDotNum = null;
          this.totalQueueNum = null;
          this.totalQueueNumFirst = null;
          this.i = 0;
          clearInterval(this.timer);
          this.start();
        }
      });
    }
  }
};
</script>
<style lang="scss" scoped>
.sale {
  .top {
    width: 100%;
    height: 80px;
    display: flex;
    align-items: center;
    padding-left: 40px;
    .el-form {
      display: flex;
      justify-content: center;
      align-items: center;
      .el-form-item__label {
        align-items: center;
        line-height: 80px;
      }
    }
  }
  .input {
    width: 250px;
    margin-right: 20px;
  }
  .tabs {
    margin-left: 20px;
    margin-top: 10px;
    .tabs /deep/ .el-tabs__nav {
      font-size: 40px;
    }
  }
}
</style>
