<template>
  <el-dialog
    :visible.sync="dialogVisible"
    :show-close="false"
    :destroy-on-close="true"
    :close-on-click-modal="false"
    append-to-body
    custom-class="dialog-boxed"
    width="80%"
  >
    <div class="dialog-slot">
      <div class="closeClick">
        <div class="newplan">
          <div class="line"></div>
          <div class="span">新增计划</div>
        </div>
        <img src="@/assets/images/close.png" alt="" @click="Close" />
      </div>
      <div class="content">
        <div class="module">
          <div class="select" :class="nextStep ? '' : 'nextStepSelect'">
            <span class="span-one">Ⅰ</span>
            <span>选择企业</span>
          </div>
          <div class="issue" :class="nextStep ? 'nextStepIssue' : ''">
            <span class="span-one">Ⅱ</span>
            <span>发布计划</span>
          </div>
        </div>
        <div v-if="!nextStep">
          <div class="filtrate">
            <div class="select-input">
              <div class="select-span">行政区划:</div>
              
              <el-cascader
                v-model="form.subdistrict"
                placeholder="请选择"
                :options="listOne"
                :props="props"
                @change="handleChange">
              </el-cascader>
            </div>
            <!-- <div class="select-input">
              <div class="select-span">企业类型:</div>
              <el-select v-model="form.frimType" placeholder="请选择">
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </div> -->
            <div class="select-input">
              <div class="select-span">经济类型:</div>
              <el-select v-model="form.economicsType" placeholder="请选择">
                <el-option
                  v-for="item in listTwo"
                  :key="item.dictValue"
                  :label="item.dictLabel"
                  :value="item.dictValue"
                >
                </el-option>
              </el-select>
            </div>
            <div class="select-input">
              <div class="select-span">行业类型:</div>
              <el-select v-model="form.indusTypeClass" placeholder="请选择">
                <el-option
                  v-for="item in listThree"
                  :key="item.dictValue"
                  :label="item.dictLabel"
                  :value="item.dictValue"
                >
                </el-option>
              </el-select>
            </div>
            <div class="select-input">
              <div class="select-span">是否重点:</div>
              <el-select v-model="form.isPoint" placeholder="请选择">
                <el-option label="是" value="1"></el-option>
                <el-option label="否" value="0"></el-option>
              </el-select>
            </div>
            <div class="select-input">
              <div class="select-span">重大危险源等级:</div>
              <el-select v-model="form.majorHazardLevel" placeholder="请选择">
                <el-option
                  v-for="item in listFour"
                  :key="item.dictValue"
                  :label="item.dictLabel"
                  :value="item.dictValue"
                >
                </el-option>
              </el-select>
            </div>
            <div class="select-input">
              <div class="select-span">企业分色:</div>
              <el-select v-model="form.entprColor" placeholder="请选择">
                <el-option
                  v-for="item in listFive"
                  :key="item.dictValue"
                  :label="item.dictLabel"
                  :value="item.dictValue"
                >
                </el-option>
              </el-select>
            </div>
            <!-- <div class="bottom"> -->
              <div class="input-input">
                <el-input
                  v-model="form.uscCode"
                  placeholder="请输入企业名称/统一信用代码"
                ></el-input>
              </div>
              <div class="btns">
                <div class="select-btn" @click="filtrate">搜索</div>
                <div class="select-btn reset" @click="reset">重置</div>
              </div>
            <!-- </div> -->
          </div>
          <div class="tables" v-loading="loading">
            <el-table
              :data="tableData"
              style="width: 100%"
              :border="false"
              ref="multipleTable"
              tooltip-effect="light"
              @selection-change="handleSelectionChange"
              row-key="uscCode"
              :row-class-name="tableRowClassName"
            >
              <el-table-column
                type="selection"
                reserve-selection
                :selectable="checkSelectable"
                width="55"
                header-align="center"
              >
              </el-table-column>
              <el-table-column
                prop="entprName"
                label="企业名称"
                show-overflow-tooltip
                header-align="center"
              >
              </el-table-column>
              <!-- <el-table-column
                prop="subdistrict"
                label="行政区划"
                show-overflow-tooltip
                width="180"
                header-align="center"
              >
              </el-table-column> -->
              <!-- <el-table-column
                prop="address"
                label="企业类型"
                show-overflow-tooltip
                header-align="center"
              >
              </el-table-column> -->
              <el-table-column
                prop="uscCode"
                label="统一社会信用代码"
                show-overflow-tooltip
                header-align="center"
              >
              </el-table-column>
              <el-table-column prop="isPoint" label="是否重点" header-align="center">
                <template slot-scope="scope">
                  <div
                    style="font-family: 'Alibaba PuHuiTi'"
                    :class="scope.row.isPoint == '1' ? 'isStyle' : ''"
                  >
                    <span v-if="scope.row.isPoint == '1'">是</span>
                    <span v-if="scope.row.isPoint == '0'">否</span>
                  </div>
                </template>
              </el-table-column>
            </el-table>
          </div>
          <div class="pagination">
            <my-pagination
              :total="total"
              @pagesChange="pagesChange"
            >
              <div>重点企业数:<span :class="count == unCount ? 'selectedNumber' : 'unselectedNumber' ">{{ unCount }}</span>/<span class="sum">{{ count }}</span></div>
            </my-pagination>
          </div>
        </div>
        <div v-else class="release-planning">
          <div class="inputs centered">
            <div class="inputs-span">计划年份:</div>
            <el-date-picker
              v-model="form2.plannedYear"
              type="month"
              format="yyyy-MM"
              :clearable="false"
              value-format="yyyy-MM"
              placeholder="请选择年份">
            </el-date-picker>
          </div>
          <div class="inputs centered">
            <div class="inputs-span">计划标题:</div>
            <div class="input">
              <el-input
                v-model="form2.planName"
                :maxlength="50"
                placeholder="请输入计划标题"
              ></el-input>
            </div>
          </div>
          <div class="inputs">
            <div class="inputs-span">计划内容:</div>
            <div class="input">
              <el-input
                v-model="form2.planContent"
                type="textarea"
                resize="none"
                placeholder="请输入计划内容"
              ></el-input>
            </div>
          </div>
          <div class="inputs">
            <div class="inputs-span">备注:</div>
            <div class="input">
              <el-input
                v-model="form2.remark"
                type="textarea"
                resize="none"
                placeholder="请输入备注"
              ></el-input>
            </div>
          </div>
        </div>
        <div class="next">
          <div class="selected">
            已选择<span>{{ selected }}</span
            >家企业
          </div>
          <div
            class="btn"
            :class="nextStep ? 'selectBtn' : ''"
            @click="next"
            ref="next"
          >
            {{ nextText }}
          </div>
        </div>
      </div>
    </div>
  </el-dialog>
</template>
<script>
import myPagination from "@/views/components/myPagination/index.vue";
import { Loading } from "element-ui";
import { mapState } from "vuex";
export default {
  components: { myPagination },
  data() {
    return {
      dialogVisible: false,
      tableData: [],
      listOne:[],
      listTwo:[],
      listThree:[],
      listFour:[],
      listFive:[],
      props:{
        value:'county',
        label:'institutionName'
      },
      multipleSelection: [],
      selected: 0,
      nextStep: false,
      nextText: "下一步",
      form: {
        subdistrict: "",
        frimType: "",
        indusTypeClass: "",
        isPoint: "",
        majorHazardLevel: "",
        entprColor: "",
        uscCode: "",
      },
      form2: {
        plannedYear: "",
        planName: "",
        planContent: "",
        remark: "",
      },
      total:0,
      pages:{
        pageNum:1,
        pageSize:10,
      },
      loading:false,
      isamend:false,
      amendId:'',
      count:0,
      unCount:0,
      unselected:0,
      selectList:[],
    };
  },
  computed:{
    ...mapState({
      dept: (state) => state.user.dept,
    }),
  },
  methods: {
    // 搜索
    filtrate(){
      if(this.form.subdistrict) {
        this.form.subdistrict = this.form.subdistrict[1]
      }
      let obj = {...this.pages,...this.form}
      this.getTable(obj);
    },
    // 重置
    reset(){
      Object.keys(this.form).forEach(key=>this.form[key]='');
      this.pages.pageNum = 1;
      this.pages.pageSize = 10;
      this.getTable(this.pages);
    },
    // 当前行的checkBox是否可以勾选
    checkSelectable(row){
      row['unselected'] = true;
      this.selectList.map((item)=>{
        if(item.enterpriseId == row.uscCode) {
          row['unselected'] = false;
        }
      })
      // console.log(row)
      return row.unselected
    },
    // 选中企业的获取
    async bPlanEnterprise(){
      let count = 0
      let data = await this.$api.yingji.bPlanEnterprise();
      this.selectList = data.data;
      data.data.map((item)=>{
        item['uscCode'] = item.enterpriseId
        this.$nextTick(()=>{
          this.$refs.multipleTable.toggleRowSelection(item,false)
        })
        if(item.isPoint == 1) {
          count += 1
        }
      })
      // console.log(count,'count')
      this.unselected = count;
    },
    // 打开
    async open(item) {
      this.dialogVisible = true;
      if(item == 'newlyIncreased') {
        if(this.dept.deptName !== '市局') {
          this.bPlanEnterprise();
        }
        this.getTable(this.pages);
      } else {
        this.amendId = item.id;
        this.isamend = true;
        this.getList(item);
        this.getTable(this.pages);
      }
    },
    // 关闭
    Close(item) {
      this.dialogVisible = false;
      this.tableData = [];
      this.multipleSelection = [];
      this.isamend = false;
      this.nextStep = false;
      this.nextText = "下一步";
      Object.keys(this.form).forEach(key=>this.form[key]='');
      Object.keys(this.form2).forEach(key=>this.form2[key]='');
      this.unCount = 0;
      this.pages.pageNum = 1;
      this.pages.pageSize = 10;
      this.selected = 0;
      this.unselected = 0;
      this.count = 0;
      if(item == 'newsuccess') {
        this.$emit('close')
      }
    },
    // 点击修改进入的请求
    async getList(item){
      let data = await this.$api.yingji.bPlanManageTwo(item.id)
      this.selected = data.data.list.length;
      let { plannedYear, planName, planContent, remark } = data.data;
      this.form2.plannedYear = plannedYear;
      this.form2.planName = planName;
      this.form2.planContent = planContent;
      this.form2.remark = remark;
      let arr = data.data.list
      this.multipleSelection = data.data.list;
      arr.forEach((list)=>{
        this.$nextTick(()=>{
          this.$refs.multipleTable.toggleRowSelection(list)
        })
      })
    },
    // 查看/切换页码时的网络请求
    async getTable(pages){
      this.loading = true;
      let data = await this.$api.yingji.basicList(pages);
      // console.log(data.data.count, '重点企业总数');
      this.count = data.data.count;
      this.unCount = data.data.count - this.unselected;
      this.total = data.data.total;
      if(data.code == 200) {
        this.loading = false;
      }
      this.tableData = data.data.list;
    },
    // 页码,当前页切换事件
    pagesChange(pages) {
      this.getTable(pages);
      this.pages = pages;
    },
    // 选中的数据
    handleSelectionChange(val) {
      this.multipleSelection = val;
      this.selected = this.multipleSelection.length;
    },
    // 计算当前时间
    getData(){
      var myDate = new Date;
      var year = myDate.getFullYear(); //获取当前年var mon = myDate.getMonth() + 1; //获取当前月
      var mon = myDate.getMonth() + 1 < 10 ? '0' + (myDate.getMonth() + 1) : myDate.getMonth() + 1 == 0 ? '00' : myDate.getMonth() + 1;
      var date = myDate.getDate() < 10 ? '0' + myDate.getDate() : myDate.getDate(); //获取当前日
      var hours = myDate.getHours() < 10 ? '0' + myDate.getHours() : myDate.getHours(); //获取当前小时
      var minutes = myDate.getMinutes() < 10 ? '0' + myDate.getMinutes() : myDate.getMinutes(); //获取当前分钟
      var seconds = myDate.getSeconds() < 10 ? '0' + myDate.getSeconds() : myDate.getSeconds(); //获取当前秒var now = year + "_" + mon + "_" + date + " "+ hours + ":" + minutes + ":" + seconds;
      var now = year + "-" + mon + "-" + date + " "+ hours + ":" + minutes + ":" + seconds;
      return now;
    },
    // 下一步
    async next() {
      let arr = [];
      let arr2 = [];
      let keyCount = 0;
      this.multipleSelection.map((item)=>{
        arr.push(item.subdistrict);
        arr2.push(item.uscCode);
        if(item.isPoint == '1') {
          keyCount++;
        }
      })
      if (this.$refs.next.innerText == "下一步") {
        if(this.multipleSelection.length == 0) {
          this.$message.error('请至少选择一家企业');
          return
        }
        if(this.dept.deptName == '乡镇'){
          if(this.count == (this.unselected + keyCount)) {
            this.nextStep = true;
            this.nextText = "发布计划";
          } else {
            this.$message.error('请将重点企业全选');
          }
        } else {
          this.nextStep = true;
          this.nextText = "发布计划";
        }
      } else {
        let downloadLoadingInstance = Loading.service({
          text: this.isamend ? "正在修改计划,请稍后" : "正在发布计划,请稍后",
          spinner: "el-icon-loading",
          background: "rgba(0, 0, 0, 0.7)",
        });
        // console.log(this.form2);
        // console.log(this.multipleSelection);
        
        let district = arr.join(',');
        let enterpriseId = arr2.join(',');
        let createTime = this.getData();
        let planNumb = this.multipleSelection.length
        let obj = {...this.form2,district,enterpriseId,createTime,keyCount,planNumb}
        let data
        if(this.isamend) {
          obj = {...obj,id:this.amendId}
          data = await this.$api.yingji.bPlanManage('put',obj)
          if(data.code == 200){
            downloadLoadingInstance.close();
            this.$message({
              message: '修改成功',
              type: 'success'
            });
            this.Close('newsuccess');
          }
        } else {
          data = await this.$api.yingji.bPlanManage('post',obj)
          if(data.code == 200){
            downloadLoadingInstance.close();
            this.$message({
              message: '新增成功',
              type: 'success'
            });
            this.Close('newsuccess');
          }
        }
      }
    },
    // 区划级联选择器选择触发
    handleChange(value){
      console.log(value)
    },
    tableRowClassName({ row, rowIndex }) {
      if (rowIndex % 2 !== 0) {
        return "success-row";
      }
      return "";
    },
    commentData(item){
      if(item instanceof Array) {
        item.map((item)=>{
          if(item.children instanceof Array && item.children.length == 0){
            delete item.children;
          } else {
            this.props.value = 'subdistrict'
            this.commentData(item.children)
          }
        })
      }
      this.listOne = item
    },
  },
  async mounted(){
    let data = await this.$api.yingji.tree();                                                  // 行政区划
    this.commentData(data.data)
    let listTwo = await this.$api.yingji.dictdata({list:'economic_categories'});               // 经济类型大类
    let listThree = await this.$api.yingji.dictdata({list:'category'});                        // 行业类型
    let listFour = await this.$api.yingji.dictdata({list:'major_hazard_level'});               // 重大危险源等级
    let listFive = await this.$api.yingji.dictdata({list:'entpr_color'});                      // 企业分色
    this.listTwo = listTwo.data.economic_categories;
    this.listThree = listThree.data.category;
    this.listFour = listFour.data.major_hazard_level;
    this.listFive = listFive.data.entpr_color;
  }
};
</script>
<style lang="scss" scoped>
.isStyle {
  color: #f71052;
}
.dialog-slot {
  .closeClick {
    position: absolute;
    top: 0;
    right: 0;
    padding: 10px 20px;
    width: 100%;
    z-index: 1000;
    display: flex;
    justify-content: space-between;
    align-items: center;
    text-align: center;
    background: #f8f9fa;
    box-shadow: 0px 1px 0px 0px #dbe0e8;
    background-color: #e0eaf8;
    img {
      width: 18px;
      height: 18px;
      cursor: pointer;
    }
    .newplan {
      display: flex;
      align-items: center;
      .line {
        margin-right: 10px;
        width: 5px;
        height: 16px;
        background-color: #1e70de;
      }
      .span {
        font-size: 16px;
        font-family: "Alibaba PuHuiTi";
        font-weight: bold;
        color: #1e70de;
      }
    }
  }
  .content {
    // padding: 15px 10px;
    .module {
      padding-bottom: 15px;
      display: flex;
      border-bottom: 1px solid #e8ecf0;
      .select,
      .issue {
        width: 150px;
        height: 30px;
        display: flex;
        align-items: center;
        justify-content: center;
        cursor: pointer;
        color: #525966;
        span {
          font-size: 15px;
          font-family: "Alibaba PuHuiTi";
          font-weight: 400;
        }
        .span-one {
          margin-right: 10px;
        }
      }
      .select {
        background-image: url("../../../assets/images/select2.png");
        background-size: 100% 100%;
        margin-right: 10px;
      }
      .issue {
        background-image: url("../../../assets/images/issue2.png");
        background-size: 100% 100%;
      }
      .nextStepSelect {
        background-image: url("../../../assets/images/select1.png");
        span {
          color: #2378ec;
        }
      }
      .nextStepIssue {
        background-image: url("../../../assets/images/issue1.png");
        span {
          color: #2378ec;
        }
      }
    }
    .filtrate {
      display: flex;
      align-items: center;
      justify-content: space-between;
      flex-wrap: wrap;
      padding-bottom: 10px;
      .select-input {
        // margin-right: 10px;
        margin-top: 20px;
        display: flex;
        align-items: center;
        .select-span {
          font-size: 13px;
          font-family: "Alibaba PuHuiTi";
          font-weight: 400;
          color: #525966;
          line-height: 40px;
          margin-right: 10px;
        }
        ::v-deep .el-select {
          background-color: transparent;
          width: 180px;
          .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);
          }
        }
        ::v-deep .el-cascader {
          background-color: transparent;
          width: 180px;
          .el-input__inner {
            height: 33px;
          }
          // border-radius: 2px;
          .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%);
          }
        }
      }
      // .bottom {
      //   display: flex;
      //   justify-content: space-between;
      //   width: 100%;
      //   
      // }
      .input-input {
        margin: 20px 40px 0 0;
        width: 250px;
        ::v-deep .el-input {
          .el-input__inner {
            height: 33px;
          }
        }
      }
      .btns {
        display: flex;
        align-items: center;
      }
      .select-btn {
        margin: 20px 0 0 0;
        width: 80px;
        height: 33px;
        background: #2378ec;
        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;
      }
      .reset {
        background: #FDAB5B;
        margin-left: 20px;
      }
      // .select-btn1 {
      //   background: #28b384;
      //   margin-left: 20px;
      // }
    }
    .tables {
      // background-color: #eaf2fd;
      ::v-deep .el-table {
        .success-row {
          background-color: rgba(234, 242, 253, 0.25);
        }
        td {
          height: 30px;
          text-align: center;
          font-size: 15px;
          font-family: "Alibaba PuHuiTi";
          font-weight: 400;
          color: #525966;
        }
        th {
          height: 30px;
          background-color: #eaf2fd;
          font-size: 16px;
          font-family: "Alibaba PuHuiTi";
          font-weight: bold;
          color: #525966;
          .el-checkbox {
            display: none;
          }
        }
        .el-table__body-wrapper {
          height: 448px !important;
          overflow-y: auto;
        }
      }
      ::v-deep .el-table::before {
        height: 0;
      }
    }
    .pagination {
      margin-top: 10px;
      .unselectedNumber {
        color: #F71052;
      }
      .selectedNumber {
        color: #48E1BB;
      }
      .sum {
        color: #48E1BB;
      }
    }
    .release-planning {
      padding: 0 10px 0 0;
      .inputs {
        display: flex;
        margin-top: 20px;
        .inputs-span {
          width: 80px;
          text-align: right;
          margin-right: 10px;
          font-size: 15px;
          font-family: "Alibaba PuHuiTi";
          font-weight: 400;
          color: #525966;
        }
        ::v-deep .el-select {
          background-color: transparent;
          width: 190px;
          .el-input__inner {
            height: 33px;
          }
          // border-radius: 2px;
        }
        .input {
          flex: 1;
          ::v-deep .el-textarea {
            height: 180px;
            .el-textarea__inner {
              height: 100%;
            }
          }
        }
      }
      .centered {
        align-items: center;
        // position: relative;
        // .data_icon {
        //   width: 10px;
        //   height: 7px;
        //   position: absolute;
        //   top: 50%;
        //   left: 280px;
        //   z-index: 9;
        //   color: #c0c4cc;
        //   font-size: 14px;
        //   transform: translateY(-50%);
        // }
        // ::v-deep .el-input__prefix {
        //   display: none;
        // }
      }
    }
    .next {
      display: flex;
      justify-content: center;
      align-items: center;
      margin-top: 10px;
      .selected {
        display: flex;
        align-items: center;
        font-size: 15px;
        font-family: "Alibaba PuHuiTi";
        font-weight: 400;
        color: #525966;
        margin-right: 15px;
        span {
          color: #2378ec;
        }
      }
      .btn {
        width: 150px;
        height: 30px;
        border: 1px solid #2378ec;
        border-radius: 2px;
        background-color: #eff6ff;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 15px;
        font-family: "Alibaba PuHuiTi";
        font-weight: 400;
        color: #2378ec;
        cursor: pointer;
      }
      .selectBtn {
        background-color: #2378ec;
        color: #ffffff;
      }
    }
  }
}
::v-deep .el-dialog__body {
  padding: 30px 15px;
}
</style>