|
@@ -1,11 +1,11 @@
|
|
<template>
|
|
<template>
|
|
<div
|
|
<div
|
|
v-if="store.currentTask"
|
|
v-if="store.currentTask"
|
|
- class="mark-board-track-container"
|
|
|
|
|
|
+ class="mark-board-track is-key-board"
|
|
:class="[store.isScoreBoardCollapsed ? 'hide' : 'show']"
|
|
:class="[store.isScoreBoardCollapsed ? 'hide' : 'show']"
|
|
>
|
|
>
|
|
- <div class="tw-my-2 tw-flex">
|
|
|
|
- <a-dropdown class="tw-self-end">
|
|
|
|
|
|
+ <div class="board-mode">
|
|
|
|
+ <a-dropdown>
|
|
<template #overlay>
|
|
<template #overlay>
|
|
<a-menu>
|
|
<a-menu>
|
|
<a-menu-item key="1" @click="toggleKeyMouse">
|
|
<a-menu-item key="1" @click="toggleKeyMouse">
|
|
@@ -19,128 +19,76 @@
|
|
</a-button>
|
|
</a-button>
|
|
</a-dropdown>
|
|
</a-dropdown>
|
|
</div>
|
|
</div>
|
|
- <div
|
|
|
|
- class="tw-flex tw-rounded tw-justify-between tw-p-2 tw-pl-5 top-container tw-mb-4"
|
|
|
|
- >
|
|
|
|
- <div class="tw-flex tw-flex-col">
|
|
|
|
- <div class="tw-flex tw-items-center tw-gap-2">
|
|
|
|
- <img
|
|
|
|
- src="./images/totalscore.png"
|
|
|
|
- style="width: 13px; height: 16px"
|
|
|
|
- />
|
|
|
|
- 总分
|
|
|
|
- </div>
|
|
|
|
- <div class="total-score tw-ml-5 tw-font-bold">
|
|
|
|
- <transition-group name="score-number-animation" tag="span">
|
|
|
|
- <span
|
|
|
|
- :key="
|
|
|
|
- store.currentTaskEnsured.markResult
|
|
|
|
- ? store.currentTaskEnsured.markResult.markerScore + ''
|
|
|
|
- : '0'
|
|
|
|
- "
|
|
|
|
- class="tw-inline-block"
|
|
|
|
- >{{
|
|
|
|
- store.currentTaskEnsured.markResult
|
|
|
|
- ? store.currentTaskEnsured.markResult.markerScore
|
|
|
|
- : ""
|
|
|
|
- }}</span
|
|
|
|
- >
|
|
|
|
- </transition-group>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="board-header">
|
|
|
|
+ <div class="board-header-info">
|
|
|
|
+ <img src="@/assets/icons/icon-star.svg" /><span>总分</span>
|
|
</div>
|
|
</div>
|
|
-
|
|
|
|
- <div class="tw-flex tw-place-content-center tw-items-center tw-gap-2">
|
|
|
|
- <div class="tw-flex tw-flex-col tw-gap-1">
|
|
|
|
- <a-popconfirm
|
|
|
|
- v-if="store.setting.enableAllZero"
|
|
|
|
- title="确定给全零分?"
|
|
|
|
- :overlayStyle="{ width: '200px' }"
|
|
|
|
- @confirm="$emit('allZeroSubmit')"
|
|
|
|
- >
|
|
|
|
- <a-button
|
|
|
|
- type="primary"
|
|
|
|
- size="middle"
|
|
|
|
- class="all-zero-unselective-button"
|
|
|
|
- >
|
|
|
|
- <span>全零分</span>
|
|
|
|
- </a-button>
|
|
|
|
- </a-popconfirm>
|
|
|
|
- <a-popconfirm
|
|
|
|
- v-if="store.setting.selective"
|
|
|
|
- title="确定是未选做?"
|
|
|
|
- :overlayStyle="{ width: '200px' }"
|
|
|
|
- @confirm="$emit('unselectiveSubmit')"
|
|
|
|
- >
|
|
|
|
- <a-button
|
|
|
|
- type="primary"
|
|
|
|
- size="middle"
|
|
|
|
- class="all-zero-unselective-button"
|
|
|
|
- >
|
|
|
|
- <span>未选做</span>
|
|
|
|
- </a-button>
|
|
|
|
- </a-popconfirm>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
- <qm-button
|
|
|
|
- type="primary"
|
|
|
|
- shape="round"
|
|
|
|
- size="middle"
|
|
|
|
- style="height: 76px; border-radius: 10px; padding: 12px"
|
|
|
|
- @click="submit"
|
|
|
|
- >
|
|
|
|
- 提交
|
|
|
|
- </qm-button>
|
|
|
|
|
|
+ <div class="board-header-score">
|
|
|
|
+ <transition-group name="score-number-animation" tag="span">
|
|
|
|
+ <span :key="store.currentTask.markResult?.markerScore || 0">{{
|
|
|
|
+ store.currentTask.markResult?.markerScore
|
|
|
|
+ }}</span>
|
|
|
|
+ </transition-group>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+ <qm-button
|
|
|
|
+ class="board-submit"
|
|
|
|
+ size="medium"
|
|
|
|
+ type="primary"
|
|
|
|
+ @click="submit"
|
|
|
|
+ >
|
|
|
|
+ 提交
|
|
|
|
+ </qm-button>
|
|
|
|
|
|
- <div v-if="store.currentTaskEnsured.questionList">
|
|
|
|
|
|
+ <div
|
|
|
|
+ v-if="store.currentTaskEnsured.questionList"
|
|
|
|
+ class="board-questions"
|
|
|
|
+ :style="{
|
|
|
|
+ flexGrow: 2,
|
|
|
|
+ }"
|
|
|
|
+ >
|
|
<template
|
|
<template
|
|
v-for="(question, index) in store.currentTaskEnsured.questionList"
|
|
v-for="(question, index) in store.currentTaskEnsured.questionList"
|
|
:key="index"
|
|
:key="index"
|
|
>
|
|
>
|
|
- <div
|
|
|
|
- :id="'bq-' + question.mainNumber + '-' + question.subNumber"
|
|
|
|
- class="question tw-rounded tw-p-1 tw-mb-2 tw-cursor-pointer tw-relative"
|
|
|
|
- :class="isCurrentQuestion(question) && 'current-question'"
|
|
|
|
- @click="
|
|
|
|
- () => {
|
|
|
|
- chooseQuestion(question);
|
|
|
|
- scrollToQuestion(question);
|
|
|
|
- }
|
|
|
|
- "
|
|
|
|
- >
|
|
|
|
- <div class="tw-flex tw-justify-between">
|
|
|
|
- <div>
|
|
|
|
- <div v-if="!!question.questionName">
|
|
|
|
- {{ question.questionName }}
|
|
|
|
|
|
+ <div class="board-question-full-box">
|
|
|
|
+ <div
|
|
|
|
+ :id="'bq-' + question.mainNumber + '-' + question.subNumber"
|
|
|
|
+ :class="[
|
|
|
|
+ 'board-question',
|
|
|
|
+ { 'is-current': isCurrentQuestion(question) },
|
|
|
|
+ ]"
|
|
|
|
+ @click="
|
|
|
|
+ () => {
|
|
|
|
+ chooseQuestion(question);
|
|
|
|
+ scrollToQuestion(question);
|
|
|
|
+ }
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ <div class="question-info">
|
|
|
|
+ <div class="question-title" :title="question.title">
|
|
|
|
+ {{ question.title }}
|
|
</div>
|
|
</div>
|
|
- <div v-else>
|
|
|
|
- {{ question.title }} {{ question.mainNumber }}-{{
|
|
|
|
- question.subNumber
|
|
|
|
- }}
|
|
|
|
|
|
+ <div class="question-no">
|
|
|
|
+ 间隔{{ question.intervalScore }}分,给分区间{{
|
|
|
|
+ question.minScore
|
|
|
|
+ }}~{{ question.maxScore }}
|
|
</div>
|
|
</div>
|
|
- <div
|
|
|
|
- class="tw-text-center tw-text-3xl"
|
|
|
|
- :class="isCurrentQuestion(question) && 'current-score'"
|
|
|
|
- >
|
|
|
|
- {{
|
|
|
|
- isCurrentQuestion(question)
|
|
|
|
- ? scoreStr
|
|
|
|
- : store.currentTask.markResult?.scoreList[index]
|
|
|
|
- }}
|
|
|
|
|
|
+ <div class="question-no">
|
|
|
|
+ {{ question.mainNumber }}-{{ question.subNumber }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div>
|
|
|
|
- <div class="tw-text-center">
|
|
|
|
- 间隔{{ question.intervalScore }}分
|
|
|
|
- </div>
|
|
|
|
- <div class="tw-flex tw-text-3xl" style="width: 80px">
|
|
|
|
- <span class="tw-flex-1">{{ question.minScore }}</span>
|
|
|
|
- <span class="tw-flex-1">~</span>
|
|
|
|
- <span class="tw-flex-1 tw-text-center">{{
|
|
|
|
- question.maxScore
|
|
|
|
- }}</span>
|
|
|
|
- </div>
|
|
|
|
|
|
+
|
|
|
|
+ <div class="question-score">
|
|
|
|
+ <transition-group name="score-number-animation" tag="span">
|
|
|
|
+ <span
|
|
|
|
+ :key="store.currentTask?.markResult?.scoreList[index] || 0"
|
|
|
|
+ >
|
|
|
|
+ <!-- 特殊的空格符号 -->
|
|
|
|
+ <!-- eslint-disable-next-line no-irregular-whitespace -->
|
|
|
|
+ {{ store.currentTask?.markResult?.scoreList[index] ?? " " }}
|
|
|
|
+ </span>
|
|
|
|
+ </transition-group>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|