|
|
@@ -1,49 +1,36 @@
|
|
|
<template>
|
|
|
- <div v-if="hasPaper">
|
|
|
- <div class="flex justify-center items-center gap-5">
|
|
|
- <el-button type="primary" size="large" @click="handleSend">发送试卷</el-button>
|
|
|
- <el-button type="warning" size="large" plain @click="handleSendNew">重新生成</el-button>
|
|
|
- <el-button type="danger" size="large" plain @click="handleSendForce">全部重新生成</el-button>
|
|
|
- </div>
|
|
|
- <el-collapse class="mt-5">
|
|
|
- <el-collapse-item title="1">
|
|
|
- <template #title>
|
|
|
- <div slot="title" class="flex justify-between">
|
|
|
- <el-text>{{`已经存在试卷:${paper.paperName}`}}</el-text>
|
|
|
- <el-text type="primary">查看详情</el-text>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <el-card v-for="(group, idx) in groupedQuestions" shadow="never" class="mb-5">
|
|
|
- <div slot="header" class="clearfix">
|
|
|
- <el-text class="font-bold">
|
|
|
- {{ numberToChinese(idx + 1) }}、{{ group.title }}(共{{ group.num }}题;共{{ group.score }}分)
|
|
|
- </el-text>
|
|
|
- </div>
|
|
|
- <div v-for="(q, i) in group.list" class="mb-5">
|
|
|
- <div>
|
|
|
- {{ i + 1 }}.
|
|
|
- <span style="color: #1890ff">题号:{{ q.id }}({{ q.score }}分)</span><span
|
|
|
- v-html="q.title"></span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-card>
|
|
|
- </el-collapse-item>
|
|
|
- </el-collapse>
|
|
|
- </div>
|
|
|
+ <el-collapse-item title="1">
|
|
|
+ <template #title>
|
|
|
+ <div slot="title" class="flex justify-between">
|
|
|
+ <el-text>{{ `已经存在试卷:${paper.paperName}` }}</el-text>
|
|
|
+ <el-text type="primary">查看详情</el-text>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-card v-for="(group, idx) in groupedQuestions" shadow="never" class="mb-5">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <el-text class="font-bold">
|
|
|
+ {{ numberToChinese(idx + 1) }}、{{ group.title }}(共{{ group.num }}题;共{{ group.score }}分)
|
|
|
+ </el-text>
|
|
|
+ </div>
|
|
|
+ <div v-for="(q, i) in group.list" class="mb-5">
|
|
|
+ <div>
|
|
|
+ {{ i + 1 }}.
|
|
|
+ <span style="color: #1890ff">题号:{{ q.id }}({{ q.score }}分)</span><span
|
|
|
+ v-html="q.title"></span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-collapse-item>
|
|
|
</template>
|
|
|
|
|
|
<script setup name="BuiltPaper">
|
|
|
-import {useInjectGlobalLoading} from "@/views/hooks/useGlobalLoading.js";
|
|
|
-import {getBuiltPaper} from "@/api/dz/papers.js";
|
|
|
import {numberToChinese} from "@/utils/paper-helper.js";
|
|
|
-import {ElMessage} from "element-plus";
|
|
|
|
|
|
-const emits = defineEmits(['send', 'send-new', 'send-force'])
|
|
|
+const props = defineProps({
|
|
|
+ paper: Object
|
|
|
+})
|
|
|
|
|
|
-const {loading} = useInjectGlobalLoading()
|
|
|
-const paper = ref({})
|
|
|
-const questions = computed(() => paper.value?.questions || [])
|
|
|
-const hasPaper = computed(() => paper.value?.paperId || paper.value?.id)
|
|
|
+const questions = computed(() => props.paper?.questions || [])
|
|
|
|
|
|
const groupedQuestions = computed(() => {
|
|
|
const results = {}
|
|
|
@@ -58,27 +45,6 @@ const groupedQuestions = computed(() => {
|
|
|
score: results[g].reduce((acc, current) => acc + current.score, 0)
|
|
|
}))
|
|
|
})
|
|
|
-
|
|
|
-const loadBuiltPaper = async function (payload) {
|
|
|
- const res = await getBuiltPaper(payload)
|
|
|
- paper.value = res.data
|
|
|
-}
|
|
|
-
|
|
|
-const reset = function () {
|
|
|
- paper.value = {}
|
|
|
-}
|
|
|
-
|
|
|
-const handleSend = function () {
|
|
|
- emits('send')
|
|
|
-}
|
|
|
-const handleSendNew = function () {
|
|
|
- return ElMessage.info('开发中,敬请期待...')
|
|
|
-}
|
|
|
-const handleSendForce = function () {
|
|
|
- return ElMessage.info('开发中,敬请期待...')
|
|
|
-}
|
|
|
-
|
|
|
-defineExpose({hasPaper, loadBuiltPaper, reset})
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|