<template>
  <div v-if="recruitData">
    <el-row>
      <el-col :span="12">
        <div class="title-wrapper">
          <div class="title">{{recruitData.title}}</div>
          <div class="status" :style="{color: recruitData.statusColor}">{{recruitData.statusName}}</div>
        </div>
        <div class="salary">薪酬范围：{{recruitData.salaryName}}</div>
        <div class="skill">
          技能：
          <span v-for="(item,index) in recruitData.skills" :key="index">
            <span v-if="index>0">,</span>
            <span>{{item.name}}</span>
          </span>
        </div>
        <div class="experience">经验：{{recruitData.experienceName}}</div>
        <div class="experience">申请审核时间：{{recruitData.submitAuditAtFormat}}</div>
      </el-col>
      <el-col :span="12">
        <div class="title-wrapper">
          <div class="title">企业信息</div>
        </div>
        <div class="company-info salary" @click="handleCompanyClick()">
          <div>
            <img class="owner-img" :src="recruitData.companyInfo.logo || ''" alt />
          </div>
          <div style="margin-left: 10px">
            <div
              style="font-weight: 700"
            >{{recruitData.companyInfo.shortName ? recruitData.companyInfo.shortName : (recruitData.companyInfo.name ? recruitData.companyInfo.name : '')}}</div>
            <div class="description">{{recruitData.companyInfo.description || ''}}</div>
          </div>
        </div>
        <div class="actions">
          <template v-if="recruitData.status==='2'">
            <el-button
              type="primary"
              class="btn"
              @click.stop="handleApproveClick(recruitData.id)"
            >通过</el-button>
            <el-button type="danger" class="btn" @click.stop="handleRejectClick(recruitData.id)">不通过</el-button>
          </template>
          <template v-if="recruitData.status==='3'">
            <el-button type="danger" class="btn" @click.stop="handleRejectClick(recruitData.id)">不通过</el-button>
          </template>
        </div>
      </el-col>
    </el-row>
    <el-row style="margin-top: 20px">
      <el-col :span="24">
        <div class="title-wrapper">
          <div class="title">发布者信息</div>
        </div>
        <div style="margin: 20px 0px 0px 20px" @click="handleOwnerClick()">
          <img
            class="owner-img"
            :src="recruitData.ownerInfo && recruitData.ownerInfo.iconUrl || ''"
            alt
          />
          <div class="owner-name">{{recruitData.ownerInfo && recruitData.ownerInfo.nickname || ''}}</div>
        </div>
      </el-col>
    </el-row>
    <el-row style="margin-top: 20px">
      <el-col :span="24">
        <div class="title-wrapper">
          <div class="title">工作描述</div>
        </div>
        <div style="padding: 10px">{{recruitData.description}}</div>
      </el-col>
    </el-row>
    <el-row style="margin-top: 20px">
      <el-col :span="24">
        <div class="title-wrapper">
          <div class="title">招聘评价</div>
        </div>
        <div style="padding: 10px">
          <p>
            <span>{{recruitData.companyCommentAtStr || ''}}</span>
            {{recruitData.problemsName || ''}}
          </p>
        </div>
      </el-col>
    </el-row>
    <el-row style="margin-top: 20px">
      <el-col :span="18">
        <div class="title-wrapper">
          <div class="title">
            招聘数据（已投递
            <span>{{recruitData.countApplied|| 0}}</span>人，沟通中
            <span>{{recruitData.countTalk || 0}}</span>
            人，浏览{{recruitData.pv || 0}}人）
          </div>
        </div>
        <div class="description-content">
          <el-table :data="recruitDataList">
            <el-table-column label="UID">
              <template slot-scope="scope">
                <el-link type="primary" target="_blank" @click="openUser(scope.row.uid)">
                  {{scope.row
                  .uid}}
                </el-link>
              </template>
            </el-table-column>
            <el-table-column label="已投递">
              <template
                slot-scope="scope"
              >{{Number(scope.row.applicationState) === 0 ? '否' : scope.row.applicationTime}}</template>
            </el-table-column>
            <el-table-column label="沟通中">
              <template
                slot-scope="scope"
              >{{Number(scope.row.talkState) === 0 ? '否' : scope.row.lastTalkTime}}</template>
            </el-table-column>
            <el-table-column label="聊天开始时间">
              <template slot-scope="scope">{{scope.row.startTime}}</template>
            </el-table-column>
          </el-table>
        </div>
        <div style="margin-top: 10px">
          <el-pagination
            background
            @current-change="changePagination"
            layout="total, prev, pager, next"
            :current-page.sync="page"
            :page-size="pageSize"
            :total="total"
          ></el-pagination>
        </div>
      </el-col>
    </el-row>

    <el-row style="margin-top: 20px">
      <el-col :span="18">
        <div class="title-wrapper">
          <div class="title">审核记录</div>
        </div>
        <div style="margin-top:5px" v-for="item in recruitData.auditList" :key="item.id">
          <el-card shadow="never">
            <el-row>
              <el-col :span="12">
                <div style="font-weight: 700">{{item.status_name}}--{{item.is_auto?'系统自动审核':'人工审核'}}</div>
              </el-col>
              <el-col :span="10" :offset="2">
                <div @click="openUser(item.audit_uid)">{{item.nickname}} {{item.audit_date}}</div>
              </el-col>
            </el-row>
            <el-row style="margin-top: 10px" v-if="item.status == '3'">
              <el-col :span="12">
                <div style="font-weight: 700">拒绝理由:</div>
                <div style="padding: 5px">&nbsp;&nbsp;{{item.audit_data.reason || ''}}</div>
              </el-col>
            </el-row>
          </el-card>
        </div>
      </el-col>
    </el-row>
    <el-dialog title="请输入审核不通过的原因" :visible.sync="isDialogShow">
      <el-form :model="form">
        <el-form-item label>
          <el-input v-model="form.reason"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="handleCancleClick()">取 消</el-button>
        <el-button type="primary" @click="handleComfirmClick()">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isDialogShow: false,
      recruitId: "",
      recruitData: {
        developers: [],
        companyInfo: {},
        auditList: [],
      },
      form: {
        reason: "",
      },
      recruitDataList: [],
      total: 0,
      pageSize: 20,
      page: 1,
    };
  },
  mounted() {
    this.recruitId = this.$route.query.id;
    this.getRecruit();
    this.getRecruitData();
  },
  methods: {
    async getRecruit() {
      const recruitId = this.recruitId;
      const data = {
        recruitId,
      };
      let res = await this.$post("/api/admin/recruit/getRecruit", data);
      if (res && res.status === 1) {
        this.recruitData = res.data;
        console.log(this.recruitData);
      }
    },
    async getRecruitData() {
      const recruitId = this.recruitId;
      let res = await this.$post("/api/admin/recruit/getRecruitData", {
        recruitId: recruitId,
        page: this.page,
      });
      this.recruitDataList = res.data.list;
      this.pageSize = res.data.size * 1;
      this.total = res.data.total * 1;
    },
    changePagination(page) {
      this.page = page;
      this.getRecruitData();
    },
    handleOwnerClick() {
      const recruitData = this.recruitData;
      // 前往老的后台
      window.open(
        this.$store.state.domainConfig.siteUrl +
          `/rooter/user/${recruitData.uid}`
      );
    },
    handleCompanyClick() {
      const recruitData = this.recruitData;
      window.open(
        this.$store.state.domainConfig.siteUrl + `/company/${recruitData.uid}`
      );
    },
    openUser(uid) {
      let url = window.location.href;
      let jumpUrl = "";
      jumpUrl = this.$store.state.domainConfig.siteUrl + `/wo/${uid}`;
      window.open(jumpUrl, "_black");
    },
    async handleApproveClick(recruitId) {
      const action = "approve";
      const data = {
        recruitId,
        action,
      };
      let res = await this.$post("/api/admin/recruit/audit", data);
      if (res && res.status === 1) {
        console.log(res);
        this.$message({
          message: res.info,
          type: "success",
        });
        await this.getRecruit();
      }
    },
    async handleRejectClick(recruitId) {
      this.recruitId = recruitId;
      this.isDialogShow = true;
    },
    handleCancleClick() {
      this.form = {
        reason: "",
      };
      this.isDialogShow = false;
    },
    async handleComfirmClick() {
      const recruitId = this.recruitId;
      const action = "reject";
      const reason = this.form.reason;
      const data = {
        recruitId,
        action,
        reason,
      };
      let res = await this.$post("/api/admin/recruit/audit", data);
      if (res && res.status === 1) {
        console.log(res);
        this.$message({
          message: res.info,
          type: "success",
        });
        await this.getRecruit();
      }
      this.form = {
        reason: "",
      };
      this.isDialogShow = false;
    },
  },
};
</script>

<style lang="scss" scoped>
.header {
  display: flex;
}
.title-wrapper {
  display: flex;
  align-items: center;
}
.title {
  line-height: 27px;
  font-weight: bold;
  font-size: 18px;
  color: #101010;
}
.status {
  margin-left: 6px;
  line-height: 20px;
  font-size: 14px;
}
.salary {
  margin-top: 13px;
  line-height: 24px;
  font-size: 16px;
  color: #101010;
}
.skill {
  margin-top: 8px;
  line-height: 24px;
  font-size: 16px;
  color: #101010;
}
.experience {
  margin-top: 8px;
  line-height: 24px;
  font-size: 16px;
  color: #101010;
}
.owner-wrapper {
  margin-left: 100px;
  text-align: center;
}
.owner-img {
  width: 53px;
  height: 53px;
  border-radius: 50%;
}
.owner-name {
  margin-top: 8px;
  line-height: 20px;
  font-size: 14px;
  color: #3f51b5;
}
.description-wrapper {
  margin-top: 50px;
}
.description-title {
  line-height: 27px;
  font-weight: bold;
  font-size: 18px;
  color: #101010;
}
.description-content {
  margin-top: 16px;
  line-height: 24px;
  font-size: 16px;
  color: #101010;
}
.company-info {
  display: flex;
  flex: 2;
  line-height: 2;
}
.company-info .description {
  overflow: hidden;
  height: 30px;
  max-width: 300px;
  word-wrap: normal;
  text-overflow: ellipsis;
  white-space: nowrap;
  word-break: keep-all;
}
.actions {
  display: flex;
  width: 180px;
  align-items: center;
  text-align: center;
}
</style>
