<!--
 * @Descripttion: 
 * @version: 
 * @Author: JC9527
 * @Date: 2023-09-04 10:20:06
 * @LastEditors: 张涛
 * @LastEditTime: 2023-10-20 09:25:30
-->
<template>
  <div class="plan-management">
    <div class="plan-topBox">
      <div class="drup-downs">
        <div class="year">
          <div class="year-span">年月:</div>
          <el-date-picker
            v-model="form.plannedYear"
            type="month"
            format="yyyy-MM"
            :clearable="false"
            value-format="yyyy-MM"
            placeholder="请选择年月"
          >
          </el-date-picker>
        </div>
        <div class="area">
          <div class="area-span" style="width: 85px">企业名称:</div>
          <el-input
            v-model="form.enterpriseName"
            size="small"
            placeholder="请输入企业名称"
          ></el-input>
        </div>
        <div class="area">
          <div class="area-span">行政区划:</div>
          <executive @quhua="quhua" @quhuadizhi="quhuadizhi" ref="executive" />
        </div>
        <div class="select-btn reset" @click="reset">重置</div>
      </div>
      <div class="btns">
        <div class="export" @click="exportFile">
          <img src="@/assets/images/export.png" alt="" />
          <span>导出excel</span>
        </div>
        <div class="newProject" @click="newProject">
          <img src="@/assets/images/newProject.png" alt="" />
          <span>新增计划</span>
        </div>
      </div>
    </div>
    <div class="plan-bottomBox">
      <div class="tables">
        <el-table
          :data="tableData"
          :border="false"
          :height="484"
          v-loading="loading"
          tooltip-effect="light"
          @selection-change="handleSelectionChange"
          row-key="id"
          :row-class-name="tableRowClassName"
        >
          <el-table-column
            prop="plannedYear"
            label="计划年月"
            width="180"
            header-align="center"
          />
          <el-table-column
            prop="district"
            label="行政区划"
            show-overflow-tooltip
            width="180"
            header-align="center"
          >
            <template slot-scope="scope">
              <span>{{ componendDistrict(scope.row.district) || "/" }}</span>
            </template>
          </el-table-column>
          <el-table-column
            prop="enterpriseName"
            label="企业名称"
            header-align="center"
          />
          <el-table-column
            prop="createTime"
            label="创建时间"
            header-align="center"
          >
            <template slot-scope="scope">
              <span>{{
                scope.row.createTime
                  ? scope.row.createTime.split(" ")[0]
                  : scope.row.createTime
              }}</span>
            </template>
          </el-table-column>
          <el-table-column label="操作" width="250" header-align="center">
            <template slot-scope="scope">
              <div class="tabs-btns">
                <div class="look" @click="look(scope.row)">
                  <img src="@/assets/images/look.png" alt="" />
                  <span>查看</span>
                </div>
                <div class="change" @click="change(scope.row)">
                  <img src="@/assets/images/change.png" alt="" />
                  <span>修改</span>
                </div>
                <div class="delete" @click="deleteItem(scope.row)">
                  <img src="@/assets/images/delete.png" alt="" />
                  <span>删除</span>
                </div>
              </div>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div class="pagination">
        <my-pagination
          :total="total"
          @pagesChange="pagesChange"
          ref="mypagination"
        ></my-pagination>
      </div>
    </div>
    <my-dialog ref="myDialog" v-on:close="padlockOne"></my-dialog>
    <my-dialogtwo ref="myDialogTwo"></my-dialogtwo>
    <temp-dialog ref="tempDialog" v-on:close="padlock"></temp-dialog>
  </div>
</template>
<script>
import myPagination from "@/views/components/myPagination/index.vue";
import myDialog from "@/views/components/AddDialog/index.vue";
import myDialogtwo from "@/views/components/dialogTwo/index.vue";
import tempDialog from "@/views/components/tempDialog/index.vue";
import { Loading } from "element-ui";
import { mapState } from "vuex";
import executive from "./echarts/executive.vue";

export default {
  components: { myPagination, myDialog, myDialogtwo, tempDialog, executive },
  data() {
    return {
      optionsyear: [],
      options: [],
      myDistrict: [],
      form: {
        district: [],
        plannedYear: "",
        enterpriseName: "",
      },
      district: [],
      mydistrict: "",
      props: {
        value: "subdistrict",
        label: "institutionName",
        checkStrictly: true,
      },
      tableData: [],
      pages: {
        pageSize: 10,
        pageNum: 1,
      },
      total: 0,
      loading: false,
      disabled: false,
      // 是否展开，默认全部展开
      isExpandAll: true,
      // 重新渲染表格状态
      refreshTable: true,
      county: false,
      multipleSelection: [],
    };
  },
  computed: {
    ...mapState({
      dept: (state) => state.user.dept,
    }),
  },
  watch: {
    form: {
      handler(newForm) {
        this.pages.pageNum = 1;
        this.pages.pageSize = 10;
        this.$refs.mypagination.defaultPages();
        let obj;
        // console.log(newForm, "newForm");
        // 如果是苏州市或者是某个区
        if (!this.disabled) {
          if (Array.isArray(newForm.district)) {
            if (newForm.district.length == 2) {
              this.district = this.form.district[1].slice(0, 10);
              obj = { ...this.pages, ...this.form, district: this.district };
            } else if (newForm.district.length == 1) {
              this.district = this.form.district[0].slice(0, 7);
              obj = { ...this.pages, ...this.form, district: this.district };
            } else {
              obj = { ...this.pages, ...this.form };
            }
            // 不是数组
          } else {
            // 判断是区县
            if (this.county) {
              this.district = this.form.district.slice(0, 7);
              obj = { ...this.pages, ...this.form, district: this.district };
            } else {
              this.district = this.form.district.slice(0, 10);
              obj = { ...this.pages, ...this.form, district: this.district };
            }
          }
        } else {
          // 不是苏州市是乡镇
          this.district = this.form.district;
          obj = { ...this.pages, ...this.form, district: this.district };
        }
        // console.log(obj,'obj')
        this.getList(obj);
      },
      deep: true,
    },
  },
  methods: {
    quhua(e) {
      this.form.district = e;
    },
    // 获取行政区划树
    quhuadizhi(district) {
      this.option = district;
    },
    // 匹配行政区划
    componendDistrict(district) {
      // console.log(district)
      // console.log(this.myDistrict)
      let name;
      this.myDistrict.map((item) => {
        if (item.county == district) {
          name = item.institutionName;
        } else {
          item.children.map((itemTwo) => {
            if (itemTwo.subdistrict == district) {
              name = item.institutionName + "-" + itemTwo.institutionName;
            }
          });
        }
      });
      return name;
    },
    // 页码，当前页切换事件
    pagesChange(pages) {
      // console.log('123123页码发生变化')
      this.pages = pages;
      let district;
      this.getList({ ...pages, ...this.form, district: this.district });
    },
    // 选中的数据
    handleSelectionChange(val) {
      // 选中的数组
      this.multipleSelection = val;
    },
    // 导出
    exportFile() {
      //  this.multipleSelection.length > 0 ? `确认导出选中的数据吗？` :
      this.$confirm(`确认根据您的搜索条件导出搜索之后的数据吗?`, "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.download(
            "/pharmaceuticals/bPlanEnterprise/exportplan",
            {
              ...this.form,
              district: this.district,
            },
            `计划管理.xlsx`
          );
        })
        .catch(() => {});
    },
    // 新增计划
    newProject() {
      this.$refs.myDialog.openDialog("newlyIncreased", this.dept);
    },
    // 重置筛选
    reset() {
      // let obj
      this.district = [];
      if (this.dept.ancestors.split(",").length == 1) {
        this.form = {
          plannedYear: "",
          district: "",
          enterpriseName: "",
        };
        // obj = this.pages
      } else {
        let { district } = this.form;
        this.form.plannedYear = "";
        this.form.enterpriseName = "";
        this.form.district = this.mydistrict;
        // obj = {...this.pages,district}
      }
      // this.getList(obj)
    },
    // 修改成功后关闭dialog事件触发
    padlock() {
      // let { district} = this.form;
      this.pages.pageNum = 1;
      this.pages.pageSize = 10;
      this.$refs.mypagination.defaultPages();
      let obj;
      if (!this.disabled) {
        if (Array.isArray(this.form.district)) {
          if (this.form.district.length == 2) {
            let district = this.form.district[1].slice(0, 10);
            obj = { ...this.pages, ...this.form, district };
          } else if (this.form.district.length == 1) {
            let district = this.form.district[0].slice(0, 7);
            obj = { ...this.pages, ...this.form, district };
          } else {
            obj = { ...this.pages, ...this.form };
          }
          // 不是数组
        } else {
          // 判断是区县
          if (this.county) {
            let district = this.form.district.slice(0, 7);
            obj = { ...this.pages, ...this.form, district };
          } else {
            let district = this.form.district.slice(0, 10);
            obj = { ...this.pages, ...this.form, district };
          }
        }
      } else {
        // 不是苏州市是乡镇
        let district = this.form.district;
        obj = { ...this.pages, ...this.form, district };
      }
      // console.log('obj',obj)
      this.getList(obj);
    },
    // 发布成功后关闭dialog事件触发
    padlockOne() {
      this.pages.pageNum = 1;
      this.pages.pageSize = 10;
      this.$refs.mypagination.defaultPages();
      let obj;
      if (!this.disabled) {
        if (Array.isArray(this.form.district)) {
          if (this.form.district.length == 2) {
            let district = this.form.district[1].slice(0, 10);
            obj = { ...this.pages, ...this.form, district };
          } else if (this.form.district.length == 1) {
            let district = this.form.district[0].slice(0, 7);
            obj = { ...this.pages, ...this.form, district };
          } else {
            obj = { ...this.pages, ...this.form };
          }
          // 不是数组
        } else {
          // 判断是区县
          if (this.county) {
            let district = this.form.district.slice(0, 7);
            obj = { ...this.pages, ...this.form, district };
          } else {
            let district = this.form.district.slice(0, 10);
            obj = { ...this.pages, ...this.form, district };
          }
        }
      } else {
        // 不是苏州市是乡镇
        let district = this.form.district;
        obj = { ...this.pages, ...this.form, district };
      }
      // console.log('obj',obj)
      this.getList(obj);

      // if (this.dept.ancestors.split(",").length == 1) {
      //   if (this.form.district.length == 0 || this.form.plannedYear == "") {
      //     this.getList(this.pages);
      //   } else {
      //     this.form.district = [];
      //     this.form.plannedYear = "";
      //   }
      // } else {
      //   if (
      //     this.form.district == this.mydistrict ||
      //     this.form.plannedYear == ""
      //   ) {
      //     this.getList(this.pages);
      //   } else {
      //     this.form.district = this.mydistrict;
      //     this.form.plannedYear = "";
      //   }
      // }
    },
    // 区划级联选择器选择触发
    handleChange(value) {},
    // 查看
    look(row) {
      this.$refs.tempDialog.open(row, 2);
    },
    // 修改
    change(row) {
      this.$refs.tempDialog.open(row, 1);
    },
    // 删除
    deleteItem(row) {
      let idList = [];
      idList.push(row.id);
      this.$modal
        .confirm("你确认要删除该条数据吗？", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
        })
        .then(async () => {
          this.loading = true;
          try {
            let downloadLoadingInstance = Loading.service({
              text: "正在删除计划，请稍候",
              spinner: "el-icon-loading",
              background: "rgba(0, 0, 0, 0.7)",
            });
            let data = await this.$api.yingji.bPlanEnterprise("delete", _, {
              idList: idList.join(","),
            });
            if (data.code == 200) {
              this.loading = false;
              downloadLoadingInstance.close();
              this.$message({
                message: "删除成功",
                type: "success",
              });
              // let { district} = this.form;
              let district;
              if (this.dept.ancestors.split(",").length == 2) {
                district = this.form.district.slice(0, 7);
              } else if (this.dept.ancestors.split(",").length == 3) {
                district = this.form.district;
              } else {
                if (this.form.district.length == 1) {
                  district = this.form.district.slice(0, 7);
                } else {
                  district = this.form.district;
                }
              }
              let obj = { ...this.pages, district };
              this.getList(obj);
            }
          } catch (error) {
            downloadLoadingInstance.close();
            console.log(error);
          }
        })
        .catch(() => {
          console.log("取消删除");
        });
    },
    tableRowClassName({ row, rowIndex }) {
      if (rowIndex % 2 !== 0) {
        return "success-row";
      }
      return "";
    },
    // 获取list表
    async getList(pages) {
      this.loading = true;
      let res = await this.$api.yingji.planmx(pages);
      if (res.code == 200) {
        this.loading = false;
        this.tableData = res.data.list;
        this.total = res.data.total;
      }
    },
    commentData(item, dept) {
      item.map((item) => {
        item.children.map((itemTwo) => {
          if (itemTwo.children.length == 0) {
            delete itemTwo.children;
          }
          itemTwo.county = itemTwo.subdistrict;
        });
      });
      // }
      this.options = item;
      if (dept.ancestors.split(",").length == 2) {
        this.options = this.options.filter((item) => {
          return item.institutionName == dept.deptName;
        });
        this.options.map((item) => {
          if (item.institutionName == dept.deptName) {
            this.form.district = item.subdistrict;
            this.mydistrict = item.subdistrict;
            this.county = true;
          }
        });
      } else if (dept.ancestors.split(",").length == 3) {
        this.options.map((item) => {
          item.children.map((itemTwo) => {
            if (itemTwo.institutionName == dept.deptName) {
              this.form.district = itemTwo.subdistrict;
              this.mydistrict = itemTwo.subdistrict;
              this.county = false;
            }
          });
        });
        this.disabled = true;
      }
    },
  },
  async created() {
    // let data = await this.$api.yingji.tree();
    // this.myDistrict = data.data;
    let treeData = JSON.parse(localStorage.getItem("TREE_DATA"));
    this.myDistrict = treeData;

    this.commentData(treeData, this.dept);
    if (this.dept.ancestors.split(",").length == 1) {
      this.getList(this.pages);
    }
  },
};
</script>
<style lang="scss" scoped>
.plan-management {
  padding: 0 20px;
  background-color: #fff;
  height: 100%;
  .plan-topBox {
    display: flex;
    justify-content: space-between;
    padding: 31px 0 12px 0;
    // background-color: yellow;
    .drup-downs {
      display: flex;
      align-items: center;
      flex: 1;
      .year {
        display: flex;
        align-items: center;
        // margin-right: 200px;
        .year-span {
          font-size: 14px;
          font-family: "Alibaba PuHuiTi";
          font-weight: 400;
          color: #525966;
          line-height: 40px;
          margin-right: 10px;
        }
      }
      .area {
        display: flex;
        align-items: center;
        // justify-content: center;
        // flex: 1;
        .area-span {
          margin-left: 10px;
          font-size: 14px;
          font-family: "Alibaba PuHuiTi";
          font-weight: 400;
          color: #525966;
          line-height: 40px;
          margin-right: 10px;
        }
        ::v-deep .el-cascader {
          background-color: transparent;
          width: 180px;
          .el-input__inner {
            height: 33px;
          }
          .el-input
            .el-input__suffix
            .el-input__suffix-inner
            .el-icon-arrow-down::before {
            content: "";
            background: url(../../assets/images/down2.png) center center
              no-repeat;
            background-size: cover;
            position: absolute;
            width: 10px;
            height: 7px;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
          }
        }
      }
      ::v-deep .el-select {
        background-color: transparent;
        width: 276px;
        .el-input__inner {
          height: 33px;
        }
        .el-input .el-input__suffix .el-input__suffix-inner .el-icon-arrow-up {
          display: flex;
          align-items: center;
          justify-content: center;
        }
        // border-radius: 2px;
        .el-input
          .el-input__suffix
          .el-input__suffix-inner
          .el-icon-arrow-up::before {
          content: "";
          background: url(../../assets/images/down2.png) center center no-repeat;
          background-size: cover;
          position: absolute;
          width: 10px;
          height: 7px;
          // top: 50%;
          // left: 50%;
          // transform: translate(-50%, -50%);
          transform: rotate(180deg);
        }
      }
      .select-btn {
        width: 120px;
        height: 34px;
        border-radius: 2px;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 15px;
        font-family: "Alibaba PuHuiTi";
        font-weight: 500;
        color: #ffffff;
        cursor: pointer;
        background: #fdab5b;
        margin-left: 20px;
      }
    }
    .btns {
      display: flex;
      align-items: center;
      .export,
      .newProject {
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 6px 19px;
        cursor: pointer;
        img {
          width: 22px;
          margin-right: 10px;
        }
        span {
          color: #ffffff;
          font-size: 14px;
          font-family: "Alibaba PuHuiTi";
          font-weight: 400;
        }
      }
      .export {
        background-color: #2378ec;
        margin-right: 30px;
      }
      .newProject {
        background-color: #28b384;
      }
    }
  }
  .plan-bottomBox {
    margin-top: 10px;
    .tables {
      ::v-deep .el-table {
        .success-row {
          background-color: rgba(234, 242, 253, 0.25);
        }
        td {
          height: 42px;
          box-sizing: border-box;
          text-align: center;
          font-size: 14px;
          font-family: "Alibaba PuHuiTi";
          font-weight: 400;
          color: #525966;
        }
        th {
          height: 45px;
          background-color: #eaf2fd;
          font-size: 15px;
          font-family: "Alibaba PuHuiTi";
          font-weight: bold;
          color: #525966;
          .el-checkbox {
            display: none;
          }
        }
      }
      ::v-deep .el-table::before {
        height: 0;
      }
      .tabs-btns {
        display: flex;
        align-items: center;
        justify-content: center;
        .look,
        .change,
        .delete {
          display: flex;
          align-items: center;
          margin-right: 30px;
          cursor: pointer;
          img {
            width: 20px;
            margin-right: 5px;
          }
          span {
            font-size: 15px;
            font-family: Alibaba PuHuiTi;
            font-weight: 400;
            color: #045ffd;
          }
        }
        .delete {
          margin-right: 0;
          span {
            color: #f71052;
          }
        }
      }
    }
    .pagination {
      margin-top: 40px;
    }
  }
}
</style>
