<template>
  <basic-container>
    <div>
      <div class="pd-b-20 border-grey-b header-box">
       <div>
        <span class="mg-r-10">选择项目名称</span>
        <el-select
          v-model="projectId"
          @change="projectChange"
          placeholder="请选择"
        >
          <el-option
            v-for="item in projectList"
            :key="item.id"
            :label="item.projectAlias"
            :value="item.id"
          ></el-option>
        </el-select>
       </div>

        <el-button type="primary" @click="syncLedger">同步台账</el-button>
      </div>
   
      <div class="pd-t-20">
        <el-row
          :gutter="20"
          style="height:calc(100vh - 290px)"
        >
          <el-col
            :span="6"
            v-for="(item,index) in projectPageList"
            :key="item.id"
            style="height:20%;"
            class="mg-b-20 box-size-bb"
          >
            <el-card
              @click.native="projectClick(item)"
              class="box-card h-100p flex flex-center project_name"
              :class="getBg(index)"
            >
              {{item.projectAlias}}
            </el-card>
          </el-col>
        </el-row>
      </div>
      <div>
        <el-pagination
          layout="prev, pager, next"
          class="text-align-c"
          @current-change="handleCurrentChange"
          :current-page.sync="page.currentPage"
          :total="page.total"
          :page-size="page.pageSize"
        >
        </el-pagination>
      </div>
    </div>

    <el-dialog
      title="项目信息"
      :visible.sync="projectVisible"
      width="900px"
      append-to-body
    >
      <div class="mg-b-10"><span class="flex1 mg-r-20">{{curProjiect.projectName}}</span></div>
      <div class="flex jc-sb pd-b-10">
        <span></span>
        <div>
          <el-button
            size="small"
            @click="measureTree"
            style="background-color: #626aef;color: white;"
          >计量管理</el-button>
          <el-button
            size="small"
            @click="splitTree"
            type="success"
          >征拆划分</el-button>
          <el-button
            size="small"
            @click="testTree"
            type="success"
          >试验划分</el-button>
          <el-button
            size="small"
            @click="editTree"
            type="success"
          >WBS树管理</el-button>
          <el-button
            size="small"
            @click="editLogTree"
            type="success"
          >日志WBS树管理</el-button>
          <el-button
            size="small"
            @click="editProject"
            type="primary"
          >编辑项目信息</el-button>
          <el-button
            size="small"
            @click="addContract"
            type="info"
          >创建新合同段</el-button>
          <el-button
            size="small"
            @click="dellProject"
            type="danger"
          >删除项目</el-button>
          <el-button
          style="margin-top: 10px;"
            size="small"
            @click="projectVisible = false"
          >返回</el-button>
        </div>
      </div>
      <div
        style="height:400px;overflow: auto;"
        v-if="contractList.length > 0"
      >
        <el-card
          shadow="never"
          v-for="(item,index) in contractList"
          :key="item.id"
        >
          <div class="flex jc-sb">
            <div class="flex jc-al-c flex1">
              <el-avatar
                :size="50"
                :class="getAvatarBg(item.contractType)"
              >{{getFont(item.contractType)}}</el-avatar>
              <span class="mg-l-10 flex1 mg-r-10">{{item.contractName}}</span>
            </div>
            <div class="flex jc-al-c">
              <el-link
                type="primary"
                @click="editContract(item)"
              >编辑合同段信息</el-link>
              <el-link
                type="primary"
                class="mg-l-10"
                v-if="item.contractType==1"
                @click="contractDetail(item,'2',item.contractType)"
              >分配WBS</el-link>
              <el-link
                type="primary"
                class="mg-l-10"
                @click="delContract(item,index)"
              >删除</el-link>
            </div>
          </div>
        </el-card>
      </div>
      <div
        class="text-align-c pd-t-20"
        v-else
      >
        暂无合同段，请先创建合同段
      </div>
    </el-dialog>
  </basic-container>
</template>

<script>
import { getProjectList, removeProject } from "@/api/manager/projectinfo";
import { findContractByProjectId, removeContractInfo } from "@/api/manager/contractinfo";
// import {getDictionary} from "@/api/system/dict";
import { mapGetters } from "vuex";
import { getStore, setStore } from "@/util/store";
export default {
  data () {
    return {
      projectId: '',
      curProjiect: {},
      projectList: [],
      projectPageList: [],

      projectVisible: false,
      contractList: [],

      page: {
        currentPage: 1,
        pageSize: 16,
        total: 0
      }
    }
  },
  computed: {
    ...mapGetters(["userInfo"]),
  },
  created () {
    this.init();
    //console.log(this.userInfo)
  },
  methods: {
    init () {
      this.getProjectList();
      this.getProjectPageList();
    },

    getProjectList () {
      getProjectList(1, 999).then((res) => {
        this.projectList = res.data.data.records;
      })
    },
    getProjectPageList () {
      getProjectList(this.page.currentPage, this.page.pageSize).then((res) => {
        this.projectPageList = res.data.data.records;
        this.page.total = res.data.data.total;
      })
    },

    projectClick (item) {
      this.curProjiect = item;
      findContractByProjectId(this.curProjiect.id).then((res) => {
        this.contractList = res.data.data;
      })
      this.projectVisible = true;
    },

    handleCurrentChange (val) {
      this.getProjectPageList();
      this.page.currentPage = val;
    },

    projectChange (id) {
      for (let i = 0; i < this.projectList.length; i++) {
        if (id == this.projectList[i].id) {
          this.curProjiect = this.projectList[i];
          findContractByProjectId(this.curProjiect.id).then((res) => {
            this.contractList = res.data.data;
          })
          this.projectVisible = true;
          return;
        }
      }
    },

    addContract () {
      this.$router.push({
        path: '/contract/detail',
        query: { pid: this.curProjiect.id }
      });
    },
    editContract (item) {
      this.$router.push({
        path: '/contract/detail1',
        query: {
          pid: item.pid,
          cid: item.id,
          contractType: item.contractType
        }
      });
    },
    editProject () {
      this.$router.push({
        path: '/manager/projectinfo/detail',
        query: {
          id: this.curProjiect.id
        }
      });
    },
    contractDetail (item, type, contractType) {
      this.$router.push({
        path: '/contract/detail',
        query: {
          pid: item.pid,
          cid: item.id,
          type,
          contractType
        }
      })
    },
    testTree () {
      this.$router.push({
        path: '/project/tree',
        query: {
          pid: this.curProjiect.id,
          wbsid: this.curProjiect.referenceWbsTemplateIdTrial,
          projectName:this.curProjiect.projectName,
          type: 2
        }
      });
    },
   splitTree () {
      this.$router.push({
        path: '/project/tree',
        query: {
          pid: this.curProjiect.id,
          wbsid: this.curProjiect.referenceWbsTemplateIdLar,
          projectName:this.curProjiect.projectName,
          type: 5
        }
      });
    },
    measureTree(){
      this.$router.push({
        path: '/project/tree',
        query: {
          pid: this.curProjiect.id,
          wbsid: this.curProjiect.referenceWbsTemplateIdMeter,
          projectName:this.curProjiect.projectName,
          type: 3
        }
      });
    },
    editTree () {
      this.$router.push({
        path: '/project/tree',
        query: {
          pid: this.curProjiect.id,
          wbsid: this.curProjiect.referenceWbsTemplateId,
          projectName:this.curProjiect.projectName
        }
      });
    },
    editLogTree () {
      this.$router.push({
        path: '/project/tree',
        query: {
          pid: this.curProjiect.id,
          wbsid: this.curProjiect.referenceLogWbsTemplateId,
          projectName:this.curProjiect.projectName,
          type: 4
        }
      });
    },

    delContract (item, index) {
      this.$confirm('是否删除【' + item.contractName + '】?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        removeContractInfo(item.id).then(() => {
          this.$message({
            type: "success",
            message: "删除成功!"
          });
          this.contractList.splice(index, 1);
        })
      })
    },
    dellProject () {
      if (this.contractList.length) {
        this.$message({
          type: "warning",
          message: "只能删除下面无合同段的项目!"
        });
        return;
      }

      this.$confirm('是否删除【' + this.curProjiect.projectName + '】?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        removeProject(this.curProjiect.id).then(() => {
          this.$message({
            type: "success",
            message: "删除成功!"
          });
          //删除后当前列表为空，且不是第一页，往前翻一页
          if(this.projectPageList.length == 1 && this.page.currentPage >1){
            this.page.currentPage--;
          }
          this.getProjectPageList();
          this.projectVisible = false;
        })
      })
    },

    getFont (type) {
      if (type == 1) {
        return '施';
      } else if (type == 2) {
        return '监';
      } else if (type == 3) {
        return '业';
      }
      return '';
    },
    getAvatarBg (type) {
      if (type == 1) {
        return { 'abg1': true };
      } else if (type == 2) {
        return { 'abg2': true };
      } else if (type == 3) {
        return { 'abg3': true };
      }
      return {};
    },
    getBg (index) {
      let num = Math.trunc(index / 4);
      if ((num % 2) === 0) {//判定条件余数为0时为偶数
        return {
          'bg1': true
        }
      } else {
        return {
          'bg2': true
        }
      }
    },
    wbsManage () {//wbs树管理按钮
      this.$router.push('/manager/privateWBS/' + 111)
    },
    //同步
    syncLedger () {
      this.$router.push('/manager/projectinfo/ledger' )
    }
  }
};
</script>

<style scoped lang="scss">
.project_name {
  font-size: 20px;
  cursor: pointer;
}
.bg1 {
  background-color: rgb(127, 164, 221);
  border-color: rgb(187, 187, 187);
  box-shadow: rgba(0, 0, 0, 0.4) 0px 2px 6px 0px;
}
.bg2 {
  background-color: rgb(239, 240, 229);
  border-color: rgb(187, 187, 187);
  box-shadow: rgba(0, 0, 0, 0.4) 0px 2px 6px 0px;
}
.abg1 {
  background-color: rgb(42, 155, 121);
}
.abg2 {
  background-color: rgb(155, 108, 42);
}
.abg3 {
  background-color: rgb(42, 53, 155);
}
.header-box{
  display: flex;
  justify-content: space-between;
  width: 100%;
}
</style>
