<template>
  <div style="background: #fff; height: calc(100vh - 225px); overflow-y: auto; overflow-x: hidden; margin: 10px 0">
    <!--查询区域-->
    <!-- <div class="jeecg-basic-table-form-container">
      <a-form @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
        <a-row :gutter="24">
          <a-col :lg="8">
            <a-form-item label="作业名称">
              <j-input placeholder="请输入作业名称" v-model:value="queryParam.title"></j-input>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <span style="float: left; overflow: hidden" class="table-page-search-submitButtons">
              <a-col :lg="6">
                <a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
                <a-button type="primary" preIcon="ant-design:reload-outlined" @click="searchReset" style="margin-left: 8px">重置</a-button>
              </a-col>
            </span>
          </a-col>
        </a-row>
      </a-form>
    </div> -->
    <a-row>
      <a-col :span="12" v-for="(item, index) in tableData" :key="index" style="padding: 0px 0px 5px 5px; overflow: hidden">
        <div style="width: 100%; height: 20px; background-color: rgb(28, 132, 198)"></div>
        <a-card style="height: 330px; border: 1px solid rgb(28, 132, 198)">
          <div class="rotate" :style="classFun(item)">{{ callText(item) }}</div>
          <a-row style="top: -48px; position: relative">
            <a-col :span="24" style="margin-bottom: 10px; height: 53px; overflow: hidden" :title="item.title">
              <!-- <div style="font-size: 18px;font-weight: bold;" class="ellipsis">{{item.title}}</div> -->
              <div style="font-size: 18px; font-weight: bold">{{ item.title }}</div>
            </a-col>
            <a-col :span="24" class="zyCon">作业时间：{{ dayjs(item.startTime).format('YYYY.MM.DD HH:mm') }} ~ {{ dayjs(item.endTime).format('YYYY.MM.DD HH:mm') }}</a-col>
            <a-col :span="24" class="zyCon">互评时间：<span v-if="item.xshpkg == '1'">{{ dayjs(item.xshpkssj).format('YYYY.MM.DD HH:mm') }} ~ {{ dayjs(item.xshpjssj).format('YYYY.MM.DD HH:mm') }}</span><span v-else>未设置互评</span></a-col>
            <a-col :span="24" class="zyCon">
              <span style="text-align: left;width:50%;display: block;float:left;">作业得分：{{  item.stuscore ? item.stuscore : '未评' }}分</span>
              <span style="text-align: right;width:50%;display: block;float:left;" class="wpopen" v-if="handleSfkshp(item)" @click="handleHpfs(item)">互评分数:{{ item.xshpfs ? item.xshpfs : '未评' }}分</span>
              <span style="text-align: left;width:50%;display: block;float:left;" v-if="handleSfkshp(item)">互评奖励：{{  item.jxfs ? item.jxfs : '未评' }}分</span>
              <span style="text-align: right;width:50%;display: block;float:left;">总分:{{ item.zzdf ? item.zzdf : '未评' }}分</span>
            </a-col>
            <a-col :span="24" class="zyCon">
              <div style="float: left" class="wpopen" :title="item.wwsftg" @click="handleOpenCcjg(item, '0')">维普资源库查重:{{ getCctype(item, '1') }}</div>
              <div style="float: right" class="wpopen"  :title="item.nwsftg" @click="handleOpenCcjg(item, '1')">本次作业查重:{{ getCctype(item, '2') }}</div>
            </a-col>
            <a-col :span="24" class="zyCon">
              <div style="float: left" class="wpopen"  :title="item.xnsftg" @click="handleOpenCcjg(item, '3')">学校作业库查重:{{ getCctype(item, '4') }}</div>
              <div style="float: right" class="wpopen"  :title="item.aigcsftg" @click="handleOpenCcjg(item, '2')">Aigc查重:{{ getCctype(item, '3') }}</div>
            </a-col>
            <a-col :span="24" style="text-align: center; margin-top: 20px">
              <a-button type="primary" @click="handleDetail(item)" style="margin-left: 5px; background: rgb(28, 132, 198)">详情</a-button>
              <a-button
                type="primary"
                @click="handleShangchuan(item)"
                style="margin-left: 5px; background: rgb(28, 132, 198)"
                v-if="!item.stuFilePath"
                >上传</a-button
              >
              <a-button type="primary" @click="handleDownload(item)" style="margin-left: 5px; background: rgb(28, 132, 198)" v-if="item.stuFilePath"
                >下载</a-button
              >
              <a-button type="primary" @click="handlePreview(item)" style="margin-left: 5px; background: rgb(28, 132, 198)" v-if="item.stuFilePath"
                >预览</a-button
              >
              <a-button type="primary" @click="handleHuping(item)" style="margin-left: 5px; background: rgb(28, 132, 198)" v-if="handleSfkshp(item)"
                >互评</a-button
              >
            </a-col>
          </a-row>
        </a-card>
      </a-col>
      <a-col :span="24">
        <div v-show="tableData.length > 0">
          <a-pagination v-model="current" :total="total" @change="handlePageChange" :pageSize="pageSize" style="text-align: right" />
        </div>
        <div v-show="tableData.length == 0">
          <a-empty />
        </div>
      </a-col>
    </a-row>

    <ZyInfoDetailModal ref="registerModal" @success="handleSuccess"></ZyInfoDetailModal>
    <ZyInfoStudentListModal ref="ZyInfoStudentListModalPage"></ZyInfoStudentListModal>
    <ZyInfoStudentModal ref="ZyInfoStudentModalPage" @success="handleSuccess"></ZyInfoStudentModal>
    <XxhbbksListModal ref="XxhbbksListModalPage"></XxhbbksListModal>
  </div>
</template>

<script lang="ts" name="zyInfo-zyInfo" setup>
import { ref, reactive, onMounted, unref } from 'vue';
import { list, deleteOne } from './ZyInfo.api';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import { Input, Popover, Pagination, Empty } from 'ant-design-vue';
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
import { useRouter } from 'vue-router';
import { downloadFile } from '/@/utils/common/renderUtils';
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
import { useGlobSetting } from '/@/hooks/setting';
import dayjs from 'dayjs';
import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
import ZyInfoDetailModal from './components/ZyInfoDetailModal.vue';
import ZyInfoStudentListModal from '/@/views/zy/zyInfoStudent/ZyInfoStudentListModal.vue';
import ZyInfoStudentModal from '/@/views/zy/zyInfoStudent/components/ZyInfoStudentModal.vue';
import XxhbbksListModal from '/@/views/kc/xxhbbks/XxhbbksListModal.vue';
import { def } from '@vue/shared';

//当前路由信息
const { currentRoute } = useRouter();
const { query } = unref(currentRoute);
const { rwbh, xqxn, type, teano } = query; //获取传递参数
const APagination = Pagination;
const { createConfirm, createMessage } = useMessage();
const queryParam = ref<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const ZyInfoStudentListModalPage = ref();
const ZyInfoStudentModalPage = ref();
const XxhbbksListModalPage = ref();
const current = ref<number>(0);
const total = ref<number>(0);
const pageNo = ref<number>(0);
const pageSize = ref<number>(6);
const tableData = ref<any>([]);
const globSetting = useGlobSetting();
const baseApiUrl = globSetting.domainUrl;
let router = useRouter();

const labelCol = reactive({
  xs: { span: 24 },
  sm: { span: 7 },
});
const wrapperCol = reactive({
  xs: { span: 24 },
  sm: { span: 16 },
});

function handleHpfs(record){
  var href = '/stuzy/zyhpDetail';
  router.push({ path: href, query: { rwbh, xqxn, type, teano, zyStuId: record.stuId, mainId: record.id } });
}

function handleOpenCcjg(record, type) {
  var text = "0";
  if (type == '0') {
    if (record.wwcc == 'true') {
      text = '1';
    } else {
      text = '0';
    }
  } else if (type == '1') {
    if (record.nwcc == 'true') {
      text = '1';
    } else {
      text = '0';
    }
  } else if (type == '2') {
    if (record.aigccc == 'true') {
      text = '1';
    } else {
      text = '0';
    }
  } else if (type == '3') {
    if (record.xncc == 'true') {
      text = '1';
    } else {
      text = '0';
    }
  }
  if(text == '0'){
    createMessage.error("此项不查重，请更换查询");
    return;
  }
  defHttp.get({ url: '/zyCcjg/zyCcjg/getCcjg', params: { zyStuId: record.stuId, ccType: type } }).then((res) => {
    console.log('🧙‍♂️', res);
    var url = res.paperviewurl;
    if(url){
      window.open(url, '_blank');
    }else{
      createMessage.error("当前暂无结果");
    }
  });
}

function handleSfkshp(record) {
  var sfkshp = record.xshpkg;
  var xshpkssj = new Date(record.xshpkssj);
  var xshpjssj = new Date(record.xshpjssj);
  var nowTime = new Date();
  if (record.stuFilePath && sfkshp == '1' && nowTime.getTime() >= xshpkssj.getTime() && nowTime.getTime() <= xshpjssj.getTime()) {
    return true;
  }
  return false;
}

function handleHuping(record) {
  console.log('🧒', record);
  var href = '/stuzy/zyhp';
  router.push({ path: href, query: { rwbh, xqxn, type, teano, zyStuId: record.stuId, mainId: record.id } });
}

function getCctype(record, type) {
  var text = '-';
  if (type == '1') {
    if (record.wwcc == 'true') {
      if (record.wwxsl) {
        text = record.wwxsl + '%';
      } else if (record.wwsftg && record.wwsftg.indexOf('失败') != -1) {
        text = '失败';
      } else if (record.stuFilePath) {
        text = '检测中';
      } else {
        text = '待提交';
      }
    } else {
      text = '不查重';
    }
  } else if (type == '2') {
    if (record.nwcc == 'true') {
      if (record.nwxsl) {
        text = record.nwxsl + '%';
      } else if (record.nwsftg && record.nwsftg.indexOf('失败') != -1) {
        text = '失败';
      } else if (record.stuFilePath) {
        text = '检测中';
      } else {
        text = '待提交';
      }
    } else {
      text = '不查重';
    }
  } else if (type == '3') {
    if (record.aigccc == 'true') {
      if (record.aigcxsl) {
        text = record.aigcxsl + '%';
      } else if (record.aigcsftg && record.aigcsftg.indexOf('失败') != -1) {
        text = '失败';
      } else if (record.stuFilePath) {
        text = '检测中';
      } else {
        text = '待提交';
      }
    } else {
      text = '不查重';
    }
  } else if (type == '4') {
    if (record.xncc == 'true') {
      if (record.xnxsl) {
        text = record.xnxsl + '%';
      } else if (record.xnsftg && record.xnsftg.indexOf('失败') != -1) {
        text = '失败';
      } else if (record.stuFilePath) {
        text = '检测中';
      } else {
        text = '待提交';
      }
    } else {
      text = '不查重';
    }
  }
  return text;
}

function classFun(record) {
  if (record.stuscore) {
    return 'background: #18a689';
  } else if (record.stuFilePath) {
    return 'background: #c6c209';
  } else {
    return 'background: #fe1a1a';
  }
}
function callText(record) {
  if (record.stuscore) {
    return '已完成';
  } else if (record.stuFilePath) {
    return '待评分';
  } else {
    return '待提交';
  }
}
/**
 * 详情
 */
function handleDetail(record: Recordable) {
  registerModal.value.disableSubmit = true;
  registerModal.value.edit(record);
}

//上传作业附件
function handleShangchuan(record) {
  let timestamp = new Date().getTime();
  let startTimestamp = Date.parse(record.startTime);
  if (timestamp < startTimestamp) {
    createMessage.error('还未到提交作业时间！');
    return;
  }
  let endTimestamp = Date.parse(record.endTime);
  if (timestamp > endTimestamp) {
    createMessage.error('提交作业时间已过！');
    return;
  }

  ZyInfoStudentModalPage.value.disableSubmit = false;
  var param = { id: record.stuId, zyfj: record.filePath };
  ZyInfoStudentModalPage.value.edit(param);
  // createConfirm({
  //   iconType: 'warning',
  //   title: '确认上传',
  //   content: '作业上传后，不可修改，请仔细检查后提交',
  //   okText: '确认',
  //   cancelText: '取消',
  //   onOk: () => {
  //     ZyInfoStudentModalPage.value.disableSubmit = false;
  //     var param = {id:record.stuId,zyfj:record.filePath}
  //     ZyInfoStudentModalPage.value.edit(param);
  //   }
  // });
}

//预览
function handlePreview(record) {
  var url2 = getFileAccessHttpUrl(record.stuPdfPath);
  let url = baseApiUrl + '/generic/web/viewer.html?file=' + encodeURIComponent(url2);
  window.open(url, '_blank');
}

function handleDownload(record) {
  downloadFile(record.stuFilePath);
}

//获取选课人数
function openXkrs(record) {
  console.log(`🚀 ~ openXkrs ~ record:`, record);
  XxhbbksListModalPage.value.disableSubmit = false;
  XxhbbksListModalPage.value.init(record);
}

/**
 * 成功回调，用于增加、修改、发布和撤回
 */
function handleSuccess() {
  reload();
}

/**
 * 查询
 */
function searchQuery() {
  total.value = 1;
  handlePageChange(1);
}

/**
 * 重置
 */
function searchReset() {
  queryParam.value = {};
  //刷新数据
  total.value = 1;
  handlePageChange(1);
}

function reload() {
  queryParam.value.pageNo = current.value;
  queryParam.value.pageSize = pageSize.value;
  queryParam.value.rwbh = rwbh;
  queryParam.value.xqxn = xqxn;
  queryParam.value.teano = teano;
  queryParam.value.zyStatus = '1,2,3,4';
  queryParam.value.column = 'createTime';
  queryParam.value.order = 'desc';
  defHttp.get({ url: '/zyInfo/zyInfo/stuList', params: queryParam.value }).then((res) => {
    // console.log(`🚀 ~ defHttp.get ~ res:`, res)
    total.value = res.total;
    pageNo.value = res.pages;
    current.value = res.current;
    tableData.value = res.records;
  });
}

function handlePageChange(record) {
  current.value = record;
  reload();
}

onMounted(() => {
  searchQuery();
});
</script>

<style lang="less" scoped>
.jeecg-basic-table-form-container {
  padding: 0;
  width: 99%;
  .table-page-search-submitButtons {
    display: block;
    margin-bottom: 24px;
    white-space: nowrap;
  }
  .query-group-cust {
    width: calc(50% - 15px);
    min-width: 100px !important;
  }
  .query-group-split-cust {
    width: 30px;
    display: inline-block;
    text-align: center;
  }
}
.jeecg-basic-table-form-container .ant-form {
  padding: 12px 10px 0px 10px;
  margin-bottom: 0px;
  background-color: #fff;
  border-radius: 2px;
}
.ellipsis {
  overflow: hidden; /* 确保超出容器的内容被裁剪 */
  white-space: nowrap; /* 确保文本在一行内显示 */
  text-overflow: ellipsis; /* 超出部分显示省略号 */
}
.zyCon {
  line-height: 30px;
}
.rotate {
  transform: rotate(45deg);
  background: rgb(28, 132, 198);
  color: #fff;
  padding: 19px 10px 3px 10px;
  position: relative;
  top: -54px;
  right: -200px;
  text-align: center;
  font-size: 11px;
}
.wpopen:hover{
  cursor: pointer;
  color:#18a689;
}
</style>
