// 制定计划
<template>
  <div class="inwardPlan">
    <div class="sache">
      <el-input placeholder="请输入内容" v-model="inputText" clearable>
      </el-input>
      <el-button type="primary" class="btn">
        <i class="el-icon-search"></i>查询
      </el-button>
      <el-badge
        :value="addPlanCount"
        class="item"
        v-if="activeName == 'second'"
      >
        <el-button
          type="primary"
          class="btn"
          @click="toInsert"
          v-if="activeName == 'second'"
        >
          <i class="el-icon-plus"></i>制定计划
        </el-button>
      </el-badge>
      <!-- <audio 
       id="audioId"
       controls="controls"
       preload="auto"
       loop = "isloop"
       src="/static/music/y682.mp3">
      </audio> -->
      <el-button
        type="primary"
        class="btn"
        @click="Issue"
        v-if="activeName == 'second'"
      >
        <i class="el-icon-download"></i>下发
      </el-button>
    </div>
    <template>
      <div>
        <el-tabs v-model="activeName" @tab-click="handleClick">
          <el-tab-pane label="未下发" name="second">
            <dilTable
              v-bind.sync="second"
              @selection-change="selectionChange"
              ref="table1"
            >
              <el-table-column fixed="right" label="操作" width="180">
                <template slot-scope="scope">
                  <el-button
                    type="text"
                    size="mini"
                    @click="getRequirementMaterial1(scope.row)"
                  >
                    物资详情
                  </el-button>
                  <el-button type="text" size="mini" @click="updatePlan(scope)">
                    修改
                  </el-button>
                  <el-button type="text" size="mini" @click="deletePlan(scope)">
                    删除
                  </el-button>
                </template>
              </el-table-column>
              <!-- 物资详情抽屉 -->
              <el-table-column type="expand" width="1">
                <template slot-scope="props">
                  <el-form
                    label-position="center"
                    inline
                    class="demo-table-expand"
                  >
                    <div v-if="false">{{ props }}</div>
                    <div>
                      <el-table :data="tableData" border>
                        <el-table-column
                          v-for="(item, i) in tableHead"
                          :key="i"
                          :prop="item.prop"
                          :label="item.label"
                          :width="item.width"
                        ></el-table-column>
                      </el-table>
                    </div>
                  </el-form>
                </template>
              </el-table-column>
            </dilTable>
          </el-tab-pane>
          <el-tab-pane label="已下发" name="third">
            <mergeRowTable v-bind.sync="third" ref="table2">
              <el-table-column
                fixed="right"
                align="center"
                label="操作"
                width="180"
              >
                <template slot-scope="scope">
                  <el-button
                    type="text"
                    size="mini"
                    @click="getRequirementMaterial2(scope.row)"
                  >
                    物资详情
                  </el-button>
                  <el-button type="text" size="mini" @click="finishPlan(scope)">
                    确认完成
                  </el-button>
                </template>
              </el-table-column>
              <!-- 物资详情抽屉 -->
              <el-table-column type="expand" width="1">
                <template slot-scope="props">
                  <el-form
                    label-position="center"
                    inline
                    class="demo-table-expand"
                  >
                    <div v-if="false">{{ props }}</div>
                    <div>
                      <el-table :data="tableData" border>
                        <el-table-column
                          v-for="(item, i) in tableHead"
                          :key="i"
                          :prop="item.prop"
                          :label="item.label"
                          :width="item.width"
                        ></el-table-column>
                      </el-table>
                    </div>
                  </el-form>
                </template>
              </el-table-column>
            </mergeRowTable>
          </el-tab-pane>
          <!-- <el-tab-pane label="已完成" name="fourth">
            <dilTable
              v-bind.sync="fourth"
              @selection-change="selectionChange"
              ref="table3"
            >
              <el-table-column
                fixed="right"
                align="center"
                label="操作"
                width="100"
              >
                <template slot-scope="scope">
                  <el-button
                    type="text"
                    size="mini"
                    @click="getRequirementMaterial3(scope.row)"
                  >
                    物资详情
                  </el-button>
                </template>
              </el-table-column>
              <el-table-column type="expand" width="1">
                <template slot-scope="props">
                  <el-form
                    label-position="center"
                    inline
                    class="demo-table-expand"
                  >
                    <div v-if="false">{{ props }}</div>
                    <div>
                      <el-table :data="tableData" border>
                        <el-table-column
                          v-for="(item, i) in tableHead"
                          :key="i"
                          :prop="item.prop"
                          :label="item.label"
                          :width="item.width"
                        ></el-table-column>
                      </el-table>
                    </div>
                  </el-form>
                </template>
              </el-table-column>
            </dilTable>
          </el-tab-pane> -->
        </el-tabs>
      </div>
    </template>
  </div>
</template>
<script>
export default {
  data() {
    return {
      inputText: "",
      first: {
        // first请求数据的地址
        requestUrl: ""
      },
      second: {
        // second请求数据的地址
        requestUrl: "",
        selectionType: "select",
        mapList: []
      },
      third: {
        columnIndexs:[0,1,2,3,4,5,9,10,13,16,21,22],
        comparison: "requirementNumber",
        // second请求数据的地址
        requestUrl: ""
      },
      // fourth: {
      //   requestUrl: ""
      // },
      activeName: "second",
      //记录旧的row对象(未下发)
      oldRow: "",
      //记录上一个展开的点击次数，单数为展开状态，复数为闭合状态(未下发)
      oldRowCount: 1,
      //记录旧的row对象(已下发)
      oldRow1: "",
      //记录上一个展开的点击次数，单数为展开状态，复数为闭合状态(已下发)
      oldRowCount1: 1,
      oldRow2: "",
      //记录上一个展开的点击次数，单数为展开状态，复数为闭合状态(未下发)
      oldRowCount2: 1,
      oldRow3: "",
      //记录上一个展开的点击次数，单数为展开状态，复数为闭合状态(未下发)
      oldRowCount3: 1,
      tableHead: [
        {
          prop: "materialName",
          label: "物资名称",
          width: 150
        },
        {
          prop: "loadName",
          label: "装货点",
          width: 150
        },
        {
          prop: "unloadName",
          label: "卸货点",
          width: 150
        },
        {
          prop: "loadSequence",
          label: "装卸货次序",
          width: 150
        },
        {
          prop: "materialWeight",
          label: "物资重量",
          width: 150
        },
        {
          prop: "materialCount",
          label: "物资数量",
          width: 150
        }
      ],
      tableData: [],
      addPlanCount: 0,
      timer: ""
    };
  },
  created() {
    this.second.requestUrl =
      "/api/v1/ams/getTruckPlanList?apiId=257&planStatus=0";
    this.third.requestUrl =
      "/api/v1/ams/getTruckPlanList?apiId=258&planStatus=1";
    // this.fourth.requestUrl =
    //   "/api/v1/ams/getTruckPlanList?apiId=258&planStatus=4";
  },
  mounted() {
    this.getAddPlan();
    this.start();
  },
  beforeDestroy() {
    this.timer;
  },
  methods: {
    getAddPlan() {
      this.axios.post("/api/v1/uc/getPlanCount").then(res => {
        this.addPlanCount = res.data;
      });
    },
    start() {
      this.timer = setInterval(this.getAddPlan, 60000);
    },
    getRequirementMaterial(row) {
      // 记录重复点击次数
      if (this.oldRow === row) {
        this.oldRowCount += 1;
      }
      // 切换当前详情表
      this.$refs.table.toggleRowExpansion(row);
      // 打开前关闭上一个详情表
      if (this.oldRow != "") {
        if (this.oldRow != row) {
          if (this.oldRowCount % 2 === 1) {
            this.$refs.table.toggleRowExpansion(this.oldRow);
          } else {
            this.oldRowCount = 1;
          }
        } else {
          this.oldRow = null;
          return;
        }
      }
      // 重置上一个点击对象
      this.oldRow = row;
      this.getMaterial(row.requirementId);
    },
    getRequirementMaterial1(row) {
      // 记录重复点击次数
      if (this.oldRow1 === row) {
        this.oldRowCount1 += 1;
      }
      // 切换当前详情表
      this.$refs.table1.toggleRowExpansion(row);
      // 打开前关闭上一个详情表
      if (this.oldRow1 != "") {
        if (this.oldRow1 != row) {
          if (this.oldRowCount1 % 2 === 1) {
            this.$refs.table1.toggleRowExpansion(this.oldRow1);
          } else {
            this.oldRowCount1 = 1;
          }
        } else {
          this.oldRow1 = null;
          return;
        }
      }
      // 重置上一个点击对象
      this.oldRow1 = row;
      this.getMaterial(row.requirementId);
    },
    getRequirementMaterial2(row) {
      // 记录重复点击次数
      if (this.oldRow2 === row) {
        this.oldRowCount2 += 1;
      }
      // 切换当前详情表
      this.$refs.table2.toggleRowExpansion(row);
      // 打开前关闭上一个详情表
      if (this.oldRow2 != "") {
        if (this.oldRow2 != row) {
          if (this.oldRowCount2 % 2 === 1) {
            this.$refs.table2.toggleRowExpansion(this.oldRow2);
          } else {
            this.oldRowCount2 = 1;
          }
        } else {
          this.oldRow2 = null;
          return;
        }
      }
      // 重置上一个点击对象
      this.oldRow2 = row;
      this.getMaterial(row.requirementId);
    },
    getRequirementMaterial3(row) {
      // 记录重复点击次数
      if (this.oldRow3 === row) {
        this.oldRowCount3 += 1;
      }
      // 切换当前详情表
      this.$refs.table3.toggleRowExpansion(row);
      // 打开前关闭上一个详情表
      if (this.oldRow3 != "") {
        if (this.oldRow3 != row) {
          if (this.oldRowCount3 % 2 === 1) {
            this.$refs.table3.toggleRowExpansion(this.oldRow2);
          } else {
            this.oldRowCount3 = 1;
          }
        } else {
          this.oldRow3 = null;
          return;
        }
      }
      // 重置上一个点击对象
      this.oldRow3 = row;
      this.getMaterial(row.requirementId);
    },
    getMaterial(requirementId) {
      console.log(requirementId);
      this.axios
        .post("/api/v1/ams/getRequirementMaterial/" + requirementId)
        .then(res => {
          this.tableData = res.data.data;
          console.log(res.data.data);
        });
    },
    handleClick(tab, event) {
      this.getRequestUrl();
      this.getRequirementMaterial();
    },
    getRequestUrl() {
      // this.first.requestUrl =
      //   "/api/v1/ams/getTruckRequirementList?apiId=207&requirementStatus=1&i=" +
      //   new Date();
      this.second.requestUrl =
        "/api/v1/ams/getTruckPlanList?apiId=257&planStatus=0" +
        "&i=" +
        new Date();
      this.third.requestUrl =
        "/api/v1/ams/getTruckPlanList?apiId=258&planStatus=1" +
        "&i=" +
        new Date();
      // (this.fourth.requestUrl =
      //   "/api/v1/ams/getTruckPlanList?apiId=258&planStatus=4" +
      //   "&i=" +
      //   new Date());
    },
    selectionChange(selection) {
      this.second.mapList = selection;
    },
    toInsert() {
      console.log("---");
      this.$router.push("/addPlan");
    },
    updatePlan(scope) {
      this.$router.push("/updatePlan/" + scope.row.planId);
    },
    finishPlan(scope) {
      this.$confirm("是否完成该计划", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
        center: true
      })
        .then(() => {
          this.axios
            .post("/api/v1/ams/finishTruckPlan/" + scope.row.planId)
            .then(res => {
              if (res.data.code == "200") {
                this.$message({
                  type: "success",
                  message: "已完成该计划!"
                });
                this.getRequestUrl();
              } else {
                this.$message({
                  message: "操作失败",
                  type: "warning"
                });
              }
            });
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "操作已取消!"
          });
        });
    },
    deletePlan(scope) {
      this.$confirm("是否删除", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
        center: true
      })
        .then(() => {
          this.axios
            .post("/api/v1/ams/deleteTruckPlan/" + scope.row.planId)
            .then(res => {
              if (res.data.code == 200) {
                this.$message({
                  type: "success",
                  message: "删除成功!"
                });
                this.getRequestUrl();
                this.getAddPlan();
              } else {
                this.$message({
                  message: "删除失败",
                  type: "warning"
                });
              }
            });
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "删除操作已取消!"
          });
        });
    },
    Issue() {
      if (this.second.mapList.length == 0) {
        this.$message.error("选择计划后才能下发");
        return;
      }
      console.log(this.second.mapList);
      this.$confirm("是否下发", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
        center: true
      })
        .then(() => {
          this.axios
            .post("/api/v1/ams/downTruckPlan", this.second.mapList)
            .then(res => {
              if (res.data.code == 200) {
                this.$message({
                  type: "success",
                  message: "下发成功!"
                });
                this.getRequestUrl();
                this.getAddPlan();
                this.activeName = "third";
              } else {
                this.$message({
                  message: "下发失败",
                  type: "warning"
                });
              }
            });
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "取消下发!"
          });
        });
    }
  }
};
</script>
<style lang="scss">
.inwardPlan {
  margin-top: 20px;
  margin-left: 20px;
  .sache {
    padding: 1.25rem 0.375rem;
    .el-input {
      width: 20%;
      margin-right: 1.25rem;
    }
  }
}
</style>
