<!--授权-->
<template>
  <div class="authorize">
    <div class="authorize-page" v-if="pageType == 1">
      <div class="title-box">
        <div>
          <p class="top-p-color">门禁授权</p>
          <p class="bottom-p-color"></p>
        </div>
        <div @click="titleClick">
          <p>授权申请</p>
          <p></p>
        </div>
      </div>
      <div class="authorize-min">
        <el-form :model="queryParamsData" ref="queryForm" :inline="true">
          <el-form-item label="关键字" prop="searchValue" label-width="68px">
            <el-input
              maxlength="20"
              v-model="queryParamsData.searchValue"
              placeholder="姓名/实验室"
              clearable
              size="small"/>
          </el-form-item>
          <el-form-item label="状态" prop="status" label-width="50px">
            <el-select v-model="queryParamsData.applyStatus" clearable placeholder="请选择状态">
              <el-option
                v-for="item in optionsListTwo"
                :key="item.id"
                :label="item.name"
                :value="item.id">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="申请时间" prop="subjectId" label-width="80px">
            <el-date-picker
              :clearable="false"
              v-model="dateRange"
              style="width: 240px;height:40px;"
              value-format="yyyy-MM-dd"
              type="daterange"
              range-separator="-"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
            ></el-date-picker>
          </el-form-item>
          <el-form-item>
            <p class="inquire-button-one" @click="handleQuery" style="margin-right:10px;">查询</p>
            <p class="reset-button-one" @click="resetQuery">重置</p>
          </el-form-item>
        </el-form>
        <el-table v-loading="loading" border :data="tableList">
          <el-table-column label="申请时间" align="center" prop="creatTime" show-overflow-tooltip/>
          <el-table-column label="申请人" align="center" prop="userName" show-overflow-tooltip/>
          <el-table-column label="共同申请人" align="center" prop="userName2" show-overflow-tooltip/>
          <el-table-column label="申请实验室" align="center" prop="subjectName" show-overflow-tooltip/>
          <el-table-column label="位置" align="center" prop="position" show-overflow-tooltip v-if="$store.state.settings.smartAlarmType == 1"/>
          <el-table-column label="所属学院" align="center" prop="college" show-overflow-tooltip/>
          <el-table-column label="授权人" align="center" prop="safeUserName"  width="160px" show-overflow-tooltip/>
          <el-table-column label="失效时间" align="center" prop="approvalTime" width="160px" show-overflow-tooltip>
            <template slot-scope="scope">
              <span>{{scope.row.loseTime!=1?scope.row.loseTime:''}}</span>
            </template>
          </el-table-column>
          <el-table-column label="状态" align="center" prop="applyStatus" width="180px" show-overflow-tooltip>
            <template slot-scope="scope">
              <span>{{scope.row.applyStatus==1?'已授权':(scope.row.applyStatus==2?'已失效':'')}}</span>
            </template>
          </el-table-column>
          <!--<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="140" v-if="tableButtonType">-->
            <!--<template slot-scope="scope">-->
              <!--<div class="button-box">-->
                <!--&lt;!&ndash;<p class="table-min-button"  @click="tableButtonClick(scope.row,1)">通过</p>&ndash;&gt;-->
                <!--&lt;!&ndash;<p class="table-min-button"  @click="tableButtonClick(scope.row,2)">拒绝</p>&ndash;&gt;-->
                <!--<p class="table-min-button" v-show="scope.row.applyStatus==1&&scope.row.safe" @click="tableButtonClick(scope.row,1)">通过</p>-->
                <!--<p class="table-min-button" v-show="scope.row.applyStatus==1&&scope.row.safe" @click="tableButtonClick(scope.row,2)">拒绝</p>-->
                <!--&lt;!&ndash;<p class="table-min-button" v-show="scope.row.applyStatus==2" @click="tableButtonClick(scope.row,3)">查看</p>&ndash;&gt;-->
              <!--</div>-->
            <!--</template>-->
          <!--</el-table-column>-->
        </el-table>
        <pagination :page-sizes="[20, 30, 40, 50]"
                    v-show="total>0"
                    :total="total"
                    :page.sync="queryParams.pageNum"
                    :limit.sync="queryParams.pageSize"
                    @pagination="getList"/>
      </div>
    </div>
    <infoPage v-if="pageType == 2" :infoData="infoData"></infoPage>
  </div>
</template>

<script>
  import { openDoorApplyList,postApproval,getOpenDoorApply } from "@/api/laboratory/subject";
  import infoPage from "./infoPage.vue";
  export default {
    name: "authorize",
    components: {
      infoPage
    },
    data(){
      return{
        pageType:1,
        // table操作按钮校验
        tableButtonType:this.hasPermiDom(['system:user_student:query','system:user_student:query']),
        loading:false,
        // 搜索数据
        queryParamsData:{
          pageNum:1,
          pageSize:20,
        },
        // 搜索实际发送数据
        queryParams:{
          pageNum:1,
          pageSize:20,
        },
        dateRange:[],
        //数据数量
        total:10,
        tableList:[],
        //审批状态
        optionsListTwo:[{id:'1',name:'已授权'},{id:'2',name:'已失效'}],
        //详情
        infoData:{},
      }
    },
    created() {

    },
    mounted(){
      this.getList();
    },
    methods:{
      //操作接口
      tableButtonClick(item,type){
        if(type == 1){
          this.$confirm('确认要通过审批吗?', "警告", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(() => {
            let obj = {
              applyId:item.id,
              approvaStatus:'1',
            }
            postApproval(obj).then((response) => {
              this.msgSuccess(response.msg)
              this.getList();
            });
          }).catch(function() {
            //  取消
          });
        }else if(type == 2){
          this.$confirm('确认要拒绝审批吗?', "警告", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(() => {
            let obj = {
              applyId:item.id,
              approvaStatus:'2',
            };
            postApproval(obj).then((response) => {
              this.msgSuccess(response.msg);
              this.getList();
            });
          }).catch(function() {
            //  取消
          });
        } else if(type == 3){
          getOpenDoorApply(item.id).then((response) => {
            this.infoData  = response.data;
            this.pageType = 2;
          });
        }
      },
      goPageButton(){
        this.pageType = 1;
      },
      titleClick(){
        this.$parent.titleClick(2);
      },
      /** 搜索按钮操作 */
      handleQuery() {
        this.queryParamsData.pageNum = 1;
        this.queryParamsData.pageSize = 20;
        this.queryParams = JSON.parse(JSON.stringify(this.queryParamsData));
        this.getList();
      },
      /** 重置按钮操作 */
      resetQuery() {
        this.$set(this,'queryParamsData',{});
        this.$set(this,'queryParams',{});
        this.$set(this,'dateRange',[]);
        this.handleQuery();
      },
      //获取数据列表
      getList(){
        this.queryParamsData = JSON.parse(JSON.stringify(this.queryParams));
        if(this.dateRange&&this.dateRange.length>0) {
          this.queryParamsData.startTime = this.dateRange[0];
          this.queryParamsData.endTime = this.dateRange[1];
        } else {
          this.queryParamsData.startTime = null;
          this.queryParamsData.endTime = null;
        }
        openDoorApplyList(this.queryParamsData).then(response => {
          this.tableList = response.rows;
          this.total = response.total
        });
      },
    }
  }
</script>

<style scoped lang="scss">
  .authorize{
    flex:1;
    display: flex;
    flex-direction: column;
    .authorize-page{
      flex:1;
      display: flex;
      flex-direction: column;
      overflow: hidden;
      .title-box{
        display: flex;
        border-bottom:1px solid #E0E0E0;
        margin-bottom:20px;
        div{
          height:80px;
          margin-right:20px;
          cursor: pointer;
          p:nth-child(1){
            font-size:18px;
            text-align: center;
            padding:0 20px;
            margin-top:26px;
          }
          p:nth-child(2){
            width:40px;
            height:4px;
            border-radius:40px;
            margin:12px auto;
          }
          .top-p-color{
            color: #0045AF;
          }
          .bottom-p-color{
            background: #0045AF;
          }
        }
        .buttonTitleColorA{
          color:#0045AF;
        }
        .buttonTitleColorB{
          color:#999999;
        }
      }
      .authorize-min{
        flex:1;
        display: flex;
        flex-direction: column;
        overflow: hidden;
        margin:0 20px!important;
        .button-box{
          display: flex;
        }
      }
    }
  }
</style>
