{"version":3,"file":"view.49ec1329.mjs","sources":["../../../../pages/paper/view.vue"],"sourcesContent":["<template>\n  <NuxtLayout>\n    <div class=\"app_container\">\n      <div class=\"paper_content\" v-if=\"map.info.id\">\n        <div class=\"navigation\">\n          <el-breadcrumb :separator-icon=\"ArrowRight\">\n            <el-breadcrumb-item :to=\"{ path: '/' }\">首页</el-breadcrumb-item>\n            <el-breadcrumb-item :to=\"{ path: '/paper/list' }\"\n              >试卷中心</el-breadcrumb-item\n            >\n            <el-breadcrumb-item>\n              <div class=\"now_title\">{{ map.info.paperName }}</div>\n            </el-breadcrumb-item>\n          </el-breadcrumb>\n        </div>\n        <div class=\"info_wrapper mgb20\">\n          <p class=\"font20 mgb20\">{{ map.info.paperName }}</p>\n          <div class=\"price_wrapper\">\n            <div class=\"flex_row\">\n              <div class=\"c_999\">价&nbsp;格&nbsp;：</div>\n              <div v-if=\"map.info.price > 0\" class=\"c_red1\">\n                <span class=\"font18\">¥</span>\n                <span class=\"current_price\">{{ map.info.price }}</span>\n                <template v-if=\"map.info.price < map.info.linePrice\">\n                  <span class=\"c_999 font12\">¥</span>\n                  <span class=\"c_999 line_price\">{{ map.info.linePrice }}</span>\n                </template>\n              </div>\n              <div v-else class=\"free\">免费</div>\n            </div>\n          </div>\n          <div class=\"count_wrapper\">\n            <paper-info-count\n              v-if=\"map.info.id\"\n              :info=\"map.info\"\n            ></paper-info-count>\n            <template v-if=\"checkValidate === 1\">\n              <div class=\"handle_btns\" v-if=\"map.info.price > 0 && !map.info.isPay\">\n                <div class=\"do_btn\" @click=\"handleBuy\">立即购买</div>\n              </div>\n              <div v-else class=\"handle_btns\">\n                <div class=\"do_btn\" @click=\"handleToExam\">\n                  {{map.info.practiceBol ? '再做一次' : '开始考试'}}\n                </div>\n              </div>\n            </template>\n            <div v-else class=\"view_other_btn\" @click=\"handleViewOther\">\n              查看其它考试\n            </div>\n          </div>\n        </div>\n        <div class=\"list_wrapper\">\n          <el-tabs v-model=\"map.activeName\" @tab-click=\"changeTab\">\n            <el-tab-pane label=\"用户学习\" name=\"user_study\"></el-tab-pane>\n            <el-tab-pane label=\"考试记录\" name=\"record_list\" v-if=\"token\"></el-tab-pane>\n          </el-tabs>\n          <div class=\"tab_content\">\n            <div\n              class=\"record_list\"\n              v-if=\"map.activeName === 'record_list'\"\n              v-loading=\"ctrl.loading\"\n            >\n              <el-table\n                class=\"border_table\"\n                :data=\"map.recordList\"\n                cell-class-name=\"cellName\"\n                header-cell-class-name=\"border_cell_name\"\n              >\n                <el-table-column type=\"index\" label=\"序号\" :width=\"100\"></el-table-column>\n                <el-table-column prop=\"submitTime\" label=\"交卷时间\" :width=\"220\">\n                  <template #default=\"scope\">{{\n                    scope.row.submitTime || scope.row.endTime\n                  }}</template>\n                </el-table-column>\n                <el-table-column label=\"答题用时\" :width=\"160\">\n                  <template #default=\"scope\">{{\n                    formatDuring(scope.row.answerTime * 1000)\n                  }}</template>\n                </el-table-column>\n                <el-table-column label=\"阅卷状态\" :width=\"160\">\n                  <template #default=\"scope\">\n                    <div\n                      class=\"bg_dog\"\n                      :class=\"{\n                        success: scope.row.examStatus !== 2,\n                        error: scope.row.examStatus === 2,\n                      }\"\n                    >\n                      <template v-if=\"scope.row.examStatus === 2\"\n                        >待阅卷</template\n                      >\n                      <template v-else-if=\"scope.row.examStatus === 3\"\n                        >批阅中</template\n                      >\n                      <template v-else>已阅卷</template>\n                    </div>\n                  </template>\n                </el-table-column>\n                <el-table-column label=\"考试结果\" :width=\"160\">\n                  <template #default=\"scope\">{{\n                    scope.row.passStatus == 1 ? \"及格\" : \"不及格\"\n                  }}</template>\n                </el-table-column>\n                <el-table-column\n                  label=\"考试成绩\"\n                  :width=\"160\"\n                  prop=\"userScore\"\n                ></el-table-column>\n                <el-table-column label=\"操作\" fixed=\"right\">\n                  <template #default=\"scope\">\n                    <el-button\n                      type=\"text\"\n                      v-if=\"scope.row.examStatus === 1\"\n                      @click=\"continuteExam(scope.row)\"\n                      >进入考试</el-button\n                    >\n                    <el-button\n                      type=\"text\"\n                      v-else\n                      @click=\"handleCheckReport(scope.row)\"\n                      >查看报告</el-button\n                    >\n                  </template>\n                </el-table-column>\n              </el-table>\n              <div class=\"pagination\" v-if=\"page.totalPage > 1\">\n              <el-pagination\n                layout=\"total, prev, pager, next, jumper\"\n                :total=\"page.totalCount\"\n                v-model:currentPage=\"page.pageCurrent\"\n                v-model:pageSize=\"page.pageSize\"\n                @current-change=\"handleCurrentChange\"\n              />\n              </div>\n            </div>\n            <div v-if=\"map.activeName === 'user_study'\">\n              <div\n                v-if=\"map.info.userList && map.info.userList.length > 0\"\n                class=\"user_study_list\"\n              >\n                <div\n                  v-for=\"(item, index) in map.info.userList\"\n                  :key=\"index\"\n                  class=\"user_item\"\n                >\n                  <img :src=\"item.headImg\" alt=\"\" />\n                  <div class=\"c_666 user_name\" :title=\"item.nickname\">\n                    {{ item.nickname }}\n                  </div>\n                </div>\n              </div>\n              <el-empty v-else></el-empty>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <course-sign ref=\"courseSign\" :courseInfo=\"signInfo\" :bizType=\"3\" :player=\"{}\" @succeed=\"map.info.faceRecognition = true\" />\n  </NuxtLayout>\n</template>\n<script setup>\nimport { ArrowRight } from \"@element-plus/icons-vue\";\nimport {\n  paperConfigView,\n  paperConfigAuthView,\n  paperRecordPage,\n  paperRecordCheck\n} from \"@/api/paper.js\";\nimport { forbidCopy } from \"@/utils\";\nimport cookie from \"@/utils/cookies\";\nimport { useUserStore } from \"@/stores/user\";\nimport { setStore } from \"@/utils/storage\";\nimport { formatDuring } from \"@/utils/index\";\nimport { ElMessage, ElMessageBox } from \"element-plus\";\nimport CourseSign from '@/components/course/sign.vue'\n\nconst store = useUserStore();\nconst { getToken } = store;\nconst route = useRoute();\nconst router = useRouter();\nlet cookieData = cookie.getShop();\nuseHead({\n  title: computed(() => `考试详情-${cookieData.shopName}`),\n  meta: [\n    {\n      hid: \"keywords\",\n      name: \"keywords\",\n      content: \"考试详情\",\n    },\n    {\n      hid: \"description\",\n      name: \"description\",\n      content: \"考试详情\",\n    },\n  ],\n});\nconst map = reactive({\n  info: {},\n  id: \"\",\n  activeName: \"user_study\",\n  recordList: [],\n});\nconst opts = reactive({\n});\nconst ctrl = reactive({\n  loading: false,\n  redoCtr: {\n    visible: false,\n    data: {},\n  },\n});\nconst page = reactive({\n  totalCount: 0,\n  pageCurrent: 1,\n  pageSize: 6,\n});\nconst token = computed(() => {\n  return getToken();\n});\nconst checkValidate = computed(() => {\n  if (map.info.paperPracticeStatus === 2) {\n    return 3; //已过期\n  } else if (map.info.paperPracticeStatus === 1) {\n    if (map.info.validityType === 2) {\n      const now = new Date().getTime();\n      const begin = new Date(map.info.beginTime).getTime();\n      if (now < begin) {\n        return 2; //未生效\n      } else {\n        return 1; //处于有效期\n      }\n    } else {\n      return 1;\n    }\n  } else {\n    return 1;\n  }\n});\n\nconst { data, pending } = await useAsyncData(\n  \"paperView\",\n  () => {\n    return new Promise(async (resolve) => {\n      let method = paperConfigView;\n      if (token.value) {\n        method = paperConfigAuthView;\n      }\n      Promise.allSettled([method(route.query.id)]).then(([info]) => {\n        let data = {};\n        if (info.status === \"fulfilled\") {\n          data.info = info;\n        } else {\n          data.info = {};\n        }\n        resolve(data);\n      });\n    });\n  },\n  { initialCache: false }\n);\nif (!pending.value && data.value) {\n  map.info = data.value.info.value;\n}\nconst handleViewOther = () => {\n  router.push({\n    path: \"/paper/list\",\n  });\n};\nconst changeTab = (v) => {\n  if (v.paneName === \"record_list\") {\n    getRecordList();\n  }\n};\nconst getRecordList = () => {\n  ctrl.loading = true;\n  const d = {\n    pageCurrent: page.pageCurrent,\n    pageSize: page.pageSize,\n    paperId: map.info.paperId,\n    examType: 5,\n    relationalId: map.info.paperId\n  };\n  paperRecordPage(d)\n    .then((res) => {\n      page.pageCurrent = res.pageCurrent;\n      page.totalPage = res.totalPage;\n      page.totalCount = res.totalCount;\n      map.recordList = res.list || [];\n      ctrl.loading = false;\n    })\n    .catch((e) => {\n      handleClose();\n      ctrl.loading = false;\n    });\n};\nconst handleCurrentChange = (v) => {\n  page.pageCurrent = v;\n  getRecordList();\n};\nconst continuteExam = () => {\n  if (!token.value) {\n    router.push({\n      path: \"/login\",\n      query: {\n        redirect: encodeURIComponent(route.fullPath),\n      },\n    });\n  } else {\n    setStore(\"examInfo\", map.info);\n    router.push({\n      path: \"/exam/startExam\",\n      query: {\n        controlShow: true,\n        examType: 5,\n      },\n    });\n  }\n};\nconst signInfo = reactive({\n  paperId: ''\n})\nconst courseSign = ref(null)\nconst handleToExam = async () => {\n  if (!token.value) {\n    router.push({\n      path: \"/login\",\n      query: {\n        redirect: encodeURIComponent(route.fullPath),\n      },\n    });\n  } else {\n    if (!map.info.startExam) {\n      ElMessage.error(\"考试次数已达到上限\");\n      return;\n    }\n    setStore(\"examInfoAndResult\", {\n      paperId: map.info.paperId,\n      correctWay: map.info.correctWay,\n      showAnswerRule: map.info.showAnswerRule,\n      showAnswerInfo: map.info.showAnswerInfo,\n      passScore: map.info.passScore,\n      endTime:map.info.endTime,\n      scoreRecordRule:map.info.scoreRecordRule,\n      maxSwitchScreenLimit:map.info.switchScreenLimitSet?map.info.switchScreenLimit:-1\n    });\n    setStore(\"examInfo\", Object.assign(map.info, {id: map.info.paperId}));\n    if(!map.info.faceRecognition) {\n      router.push({\n        path: \"/exam/startExam\",\n        query: {\n          controlShow: true,\n          examType: 5,\n        },\n      });\n    } else {\n      ElMessageBox.confirm(\"请先进行人脸识别\", \"提示\", {\n        cancelButtonText: \"取消\",\n        confirmButtonText: \"确定\",\n        type: \"warning\",\n      }).then(() => {\n        signInfo.paperId = map.info.paperId\n        if(courseSign.value) {\n          courseSign.value.init().then(() => {\n            router.push({\n              path: \"/exam/startExam\",\n              query: {\n                controlShow: true,\n                examType: 5,\n              },\n            });\n          })\n        }\n      })\n      .catch(() => {\n      });\n    }\n  }\n};\nconst handleCheckReport = (row) => {\n  setStore(\"examInfoAndResult\", {\n    paperId: map.info.paperId,\n    correctWay: map.info.correctWay,\n    showAnswerRule: map.info.showAnswerRule,\n    showAnswerInfo: map.info.showAnswerInfo,\n    passScore: map.info.passScore,\n    endTime:map.info.endTime,\n    scoreRecordRule:map.info.scoreRecordRule,\n    maxSwitchScreenLimit:map.info.switchScreenLimitSet?map.info.switchScreenLimit:-1\n  });\n  setStore(\"examInfo\", Object.assign(map.info, {id: map.info.paperId}));\n  router.push({\n    path: \"/exam/result\",\n    query: {\n      type: 3,\n      examType: 5,\n      recordId: row.id,\n    },\n  });\n};\nconst handleBuy = () => {\n  if (token.value) {\n    const d = {\n      paperId: map.info.paperId,\n      id: map.info.id\n    }\n    router.push({\n      path: '/pay/buy',\n      query: {\n        id: map.info.id,\n        examType: 5,\n        paperId: map.info.paperId\n      }\n    })\n  } else {\n    router.push({\n      path: \"/login\",\n      query: {\n        redirect: encodeURIComponent(route.fullPath),\n      },\n    });\n  }\n};\nonMounted(() => {\n  if (map.info.enableForbidContentCopy) {\n    forbidCopy(\".paper_content\");\n  }\n});\n</script>\n\n<style scoped lang=\"scss\">\n.c_red1 {\n  color: #f01414;\n}\n.paper_content {\n  width: 1200px;\n  margin: auto;\n  background: #f6f8fb;\n}\n\n.navigation {\n  margin: 20px 0;\n\n  :deep(.el-breadcrumb__inner) {\n    color: #999;\n  }\n\n  :deep(.el-breadcrumb__inner.is-link) {\n    font-weight: normal;\n  }\n\n  .now_title {\n    width: 113px;\n    text-overflow: ellipsis;\n    overflow: hidden;\n    white-space: nowrap;\n    cursor: pointer;\n  }\n}\n.info_wrapper {\n  padding: 30px;\n  background: #ffffff;\n}\n.price_wrapper {\n  padding: 13px 10px;\n  background: #f6f6f6;\n  .flex_row {\n    display: flex;\n    align-items: baseline;\n  }\n  .current_price {\n    font-size: 26px;\n  }\n  .line_price {\n    text-decoration: line-through;\n  }\n  .free {\n    color: #58b85c;\n    font-size: 26px;\n  }\n}\n.count_wrapper {\n  position: relative;\n}\n.handle_btns {\n  position: absolute;\n  right: 0px;\n  top: 0;\n  bottom: 0;\n  margin: auto;\n  display: flex;\n  align-items: center;\n  column-gap: 16px;\n  .do_btn {\n    width: 154px;\n    padding: 10px 0;\n    text-align: center;\n    background: #3d7fff;\n    border-radius: 5px;\n    color: #fff;\n    font-size: 16px;\n    cursor: pointer;\n  }\n  .default {\n    cursor: default;\n  }\n}\n.view_other_btn {\n  position: absolute;\n  right: 30px;\n  top: 0;\n  bottom: 0;\n  margin: auto;\n  width: 154px;\n  padding: 10px 0;\n  text-align: center;\n  background: #3d7fff;\n  border-radius: 5px;\n  color: #fff;\n  font-size: 16px;\n  height: fit-content;\n  cursor: pointer;\n}\n.list_wrapper {\n  padding-top: 10px;\n  background: #fff;\n  min-height: 300px;\n  :deep(.el-tabs__nav-scroll) {\n    padding-left: 30px;\n  }\n}\n.tab_content {\n  padding: 8px 30px 30px 30px;\n}\n\n.bg_dog {\n  font-style: normal;\n  font-weight: 400;\n  font-size: 14px;\n  color: #333333;\n  &.success:before {\n    color: #6fcf97;\n  }\n  &.error:before {\n    color: #f23c3c;\n  }\n  &:before {\n    content: \"●\";\n    padding-right: 6px;\n  }\n}\n.user_study_list {\n  display: flex;\n  flex-wrap: wrap;\n  column-gap: 30px;\n  .user_item {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    row-gap: 9px;\n    margin-bottom: 30px;\n    img {\n      width: 48px;\n      height: 48px;\n      border-radius: 50%;\n    }\n    .user_name {\n      width: 55px;\n      text-overflow: ellipsis;\n      overflow: hidden;\n      white-space: nowrap;\n    }\n  }\n}\n.pagination {\n  display: flex;\n  justify-content: center;\n}\n</style>\n"],"names":["store","useUserStore","getToken","route","useRoute","router","useRouter","cookieData","cookie","getShop","useHead","title","computed","shopName","meta","hid","name","content","map","reactive","info","id","activeName","recordList","ctrl","loading","redoCtr","visible","data","page","totalCount","pageCurrent","pageSize","token","checkValidate","paperPracticeStatus","validityType","Date","getTime","beginTime","pending","Promise","async","resolve","method","paperConfigView","value","paperConfigAuthView","allSettled","query","then","status","initialCache","handleViewOther","push","path","changeTab","v","paneName","getRecordList","d","paperId","examType","relationalId","paperRecordPage","res","totalPage","list","catch","e","handleCurrentChange","signInfo","courseSign","ref","handleToExam","startExam","ElMessage","error","setStore","correctWay","showAnswerRule","showAnswerInfo","passScore","endTime","scoreRecordRule","maxSwitchScreenLimit","switchScreenLimitSet","switchScreenLimit","Object","assign","faceRecognition","ElMessageBox","confirm","cancelButtonText","confirmButtonText","type","init","controlShow","redirect","encodeURIComponent","fullPath","handleBuy","onMounted","enableForbidContentCopy","forbidCopy","row","recordId"],"mappings":"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"}