|
@@ -5,10 +5,10 @@
|
|
|
>
|
|
|
<div class="tw-mt-1 tw-mb-1 tw-flex tw-place-items-center">
|
|
|
<div class="tw-text-lg main-text-color tw-mr-3 tw-font-bold">
|
|
|
- {{ props.title }}
|
|
|
+ {{ title }}
|
|
|
</div>
|
|
|
<input
|
|
|
- v-if="props.showSearch"
|
|
|
+ v-if="showSearch"
|
|
|
v-model="secretNumberInput"
|
|
|
type="text"
|
|
|
placeholder="查找试卷"
|
|
@@ -18,7 +18,7 @@
|
|
|
@keyup.enter="searchHistoryTask"
|
|
|
/>
|
|
|
<SearchOutlined
|
|
|
- v-if="props.showSearch"
|
|
|
+ v-if="showSearch"
|
|
|
style="margin-left: -24px; font-size: 18px; padding: 3px"
|
|
|
@click="searchHistoryTask"
|
|
|
/>
|
|
@@ -27,18 +27,14 @@
|
|
|
<div class="tw-cursor-pointer tw-flex">编号</div>
|
|
|
<div
|
|
|
class="tw-cursor-pointer tw-flex tw-items-center"
|
|
|
- @click="toggleOrderBy(props.orderTimeField)"
|
|
|
+ @click="toggleOrderBy(orderTimeField)"
|
|
|
>
|
|
|
时间
|
|
|
<CaretUpOutlined
|
|
|
- v-if="
|
|
|
- props.showOrder && order === props.orderTimeField && sort === 'ASC'
|
|
|
- "
|
|
|
+ v-if="showOrder && order === orderTimeField && sort === 'ASC'"
|
|
|
/>
|
|
|
<CaretDownOutlined
|
|
|
- v-if="
|
|
|
- props.showOrder && order === props.orderTimeField && sort === 'DESC'
|
|
|
- "
|
|
|
+ v-if="showOrder && order === orderTimeField && sort === 'DESC'"
|
|
|
/>
|
|
|
</div>
|
|
|
<div
|
|
@@ -47,10 +43,10 @@
|
|
|
>
|
|
|
分数
|
|
|
<CaretUpOutlined
|
|
|
- v-if="props.showOrder && order === 'markerScore' && sort === 'ASC'"
|
|
|
+ v-if="showOrder && order === 'markerScore' && sort === 'ASC'"
|
|
|
/>
|
|
|
<CaretDownOutlined
|
|
|
- v-if="props.showOrder && order === 'markerScore' && sort === 'DESC'"
|
|
|
+ v-if="showOrder && order === 'markerScore' && sort === 'DESC'"
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -58,15 +54,7 @@
|
|
|
<div style="margin-bottom: -40px; padding-bottom: 40px">
|
|
|
<div v-for="(task, index) of store.historyTasks" :key="index">
|
|
|
<div
|
|
|
- class="
|
|
|
- tw-flex
|
|
|
- tw-justify-between
|
|
|
- tw-place-items-center
|
|
|
- tw-rounded
|
|
|
- tw-cursor-pointer
|
|
|
- tw-font-bold
|
|
|
- tw-py-2
|
|
|
- "
|
|
|
+ class="tw-flex tw-justify-between tw-place-items-center tw-rounded tw-cursor-pointer tw-font-bold tw-py-2"
|
|
|
:class="store.currentTask === task && 'current-task'"
|
|
|
@click="replaceCurrentTask(task)"
|
|
|
>
|
|
@@ -84,10 +72,7 @@
|
|
|
</div>
|
|
|
</a-spin>
|
|
|
<div
|
|
|
- class="
|
|
|
- tw-flex tw-justify-between tw-place-content-center tw-mt-2
|
|
|
- pager-container
|
|
|
- "
|
|
|
+ class="tw-flex tw-justify-between tw-place-content-center tw-mt-2 pager-container"
|
|
|
>
|
|
|
<div class="tw-font-bold" style="line-height: 30px">
|
|
|
第{{ currentPage }}页
|
|
@@ -116,7 +101,7 @@
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import type {
|
|
|
- getHistory,
|
|
|
+ GetHistory,
|
|
|
HistoryQueryParams,
|
|
|
MarkHistoryOrderBy,
|
|
|
MarkHistorySortField,
|
|
@@ -133,37 +118,37 @@ import { cloneDeep } from "lodash-es";
|
|
|
import EventBus from "@/plugins/eventBus";
|
|
|
import { addFileServerPrefixToTask } from "@/utils/utils";
|
|
|
|
|
|
-const props = withDefaults(
|
|
|
- defineProps<{
|
|
|
- title?: string;
|
|
|
- showOrder?: boolean;
|
|
|
- showSearch?: boolean;
|
|
|
- orderTimeField?: "markerTime" | "inspectTime";
|
|
|
- subjectCode?: string;
|
|
|
- groupNumber?: string;
|
|
|
- markerId?: string;
|
|
|
- markerScore?: string;
|
|
|
- getHistory: getHistory;
|
|
|
- }>(),
|
|
|
- {
|
|
|
- title: "回评",
|
|
|
- showOrder: false,
|
|
|
- showSearch: false,
|
|
|
- orderTimeField: "markerTime",
|
|
|
- subjectCode: undefined,
|
|
|
- groupNumber: undefined,
|
|
|
- markerId: undefined,
|
|
|
- markerScore: undefined,
|
|
|
- }
|
|
|
-);
|
|
|
+// TODO: https://github.com/vuejs/rfcs/discussions/369 defineProps deconstructure retain reactivity
|
|
|
+// eslint-disable-next-line vue/no-setup-props-destructure
|
|
|
+const {
|
|
|
+ title = "回评",
|
|
|
+ showOrder = false,
|
|
|
+ showSearch = false,
|
|
|
+ orderTimeField = "markerTime",
|
|
|
+ subjectCode = undefined,
|
|
|
+ groupNumber = undefined,
|
|
|
+ markerId = undefined,
|
|
|
+ markerScore = undefined,
|
|
|
+ getHistory,
|
|
|
+} = defineProps<{
|
|
|
+ title?: string;
|
|
|
+ showOrder?: boolean;
|
|
|
+ showSearch?: boolean;
|
|
|
+ orderTimeField?: "markerTime" | "inspectTime";
|
|
|
+ subjectCode?: string;
|
|
|
+ groupNumber?: string;
|
|
|
+ markerId?: string;
|
|
|
+ markerScore?: string;
|
|
|
+ getHistory: GetHistory;
|
|
|
+}>();
|
|
|
|
|
|
let secretNumberInput = $ref("");
|
|
|
let loading = $ref(false);
|
|
|
let currentPage = $ref(1);
|
|
|
let order: MarkHistoryOrderBy = $ref("markerTime");
|
|
|
-if (props.orderTimeField) {
|
|
|
+if (orderTimeField) {
|
|
|
// eslint-disable-next-line vue/no-setup-props-destructure
|
|
|
- order = props.orderTimeField;
|
|
|
+ order = orderTimeField;
|
|
|
}
|
|
|
let sort: MarkHistorySortField = $ref("DESC");
|
|
|
|
|
@@ -210,15 +195,15 @@ EventBus.on("should-reload-history", () => {
|
|
|
(async () => {
|
|
|
store.globalMask = true;
|
|
|
try {
|
|
|
- const res = await props.getHistory({
|
|
|
+ const res = await getHistory({
|
|
|
secretNumber: store.currentTask?.secretNumber,
|
|
|
- order: order,
|
|
|
- sort: sort,
|
|
|
+ order,
|
|
|
+ sort,
|
|
|
pageNumber: currentPage,
|
|
|
- subjectCode: props.subjectCode,
|
|
|
- groupNumber: props.groupNumber,
|
|
|
- markerId: props.markerId,
|
|
|
- markerScore: props.markerScore,
|
|
|
+ subjectCode,
|
|
|
+ groupNumber,
|
|
|
+ markerId,
|
|
|
+ markerScore,
|
|
|
});
|
|
|
if (res.data) {
|
|
|
let data = cloneDeep(res.data) as Array<Task>;
|
|
@@ -255,16 +240,16 @@ async function updateHistoryTask({
|
|
|
secretNumber = null,
|
|
|
}: HistoryQueryParams) {
|
|
|
loading = true;
|
|
|
- const res = await props.getHistory({
|
|
|
+ const res = await getHistory({
|
|
|
pageNumber,
|
|
|
pageSize,
|
|
|
order,
|
|
|
sort,
|
|
|
secretNumber,
|
|
|
- subjectCode: props.subjectCode,
|
|
|
- groupNumber: props.groupNumber,
|
|
|
- markerId: props.markerId,
|
|
|
- markerScore: props.markerScore,
|
|
|
+ subjectCode,
|
|
|
+ groupNumber,
|
|
|
+ markerId,
|
|
|
+ markerScore,
|
|
|
});
|
|
|
loading = false;
|
|
|
if (res.data) {
|
|
@@ -291,7 +276,7 @@ function nextPage() {
|
|
|
}
|
|
|
|
|
|
function toggleOrderBy(toOrder: MarkHistoryOrderBy) {
|
|
|
- if (props.showOrder) {
|
|
|
+ if (showOrder) {
|
|
|
if (toOrder === order) {
|
|
|
sort = sort === "DESC" ? "ASC" : "DESC";
|
|
|
} else {
|