浏览代码

接口调试

zhangjie 1 年之前
父节点
当前提交
5bbad99d31

+ 1 - 1
src/api/markPage.ts

@@ -108,7 +108,7 @@ export async function changeUserInfo(name: string, password?: string) {
 
 /** 评卷用户退出 */
 export function doLogout() {
-  window.location.href = "/api/mark/logout";
+  window.history.go(-1);
 }
 
 /** 评卷用户选择分组 */

+ 1 - 1
src/features/library/inspect/LibraryInspect.vue

@@ -6,7 +6,7 @@
         v-if="!isSingleStudent"
         :subjectCode="subjectCode"
         :groupNumber="groupNumber"
-        orderTimeField="inspectTime"
+        orderTimeField="inspect_time"
         :getHistory="getLibraryInspectedHistoryOfLibraryInspect"
       />
       <mark-body @error="renderError" />

+ 2 - 2
src/features/mark/Mark.vue

@@ -3,7 +3,7 @@
     <mark-header :showTotalScore="store.isMultiMedia" />
     <mark-tool @allZeroSubmit="allZeroSubmit" />
     <div class="mark-main">
-      <mark-history showSearch showOrder :getHistory="getHistoryTask" />
+      <mark-history showSearch :getHistory="getHistoryTask" />
       <mark-body @error="removeBrokenTask" />
       <mark-board-track
         v-if="store.isTrackMode"
@@ -153,7 +153,7 @@ async function updateTask() {
   const res = await getTask();
   if (res.data.taskId) {
     const newTask = res.data;
-    newTask.sheetUrls = newTask.sheetUrls || [];
+    // newTask.sheetUrls = newTask.sheetUrls || [];
     newTask.sheetUrls = ["/1-1.jpg", "/1-2.jpg"];
     try {
       preDrawing = true;

+ 19 - 79
src/features/mark/MarkHistory.vue

@@ -11,7 +11,6 @@
         ref="select"
         v-model:value="searchType"
         style="width: 75px; margin-right: 12px; font-size: 12px"
-        @change="searchTypeChange"
       >
         <a-select-option value="1">编号</a-select-option>
         <a-select-option value="2">分数</a-select-option>
@@ -40,13 +39,7 @@
       <div class="head-item">分数</div>
     </div>
     <div class="mark-history-table-body">
-      <a-spin
-        v-if="remarkCount !== 0"
-        :spinning="loading"
-        size="large"
-        tip="Loading..."
-        :delay="500"
-      >
+      <a-spin :spinning="loading" size="large" tip="Loading..." :delay="500">
         <div
           v-for="(task, index) of store.historyTasks"
           :key="index"
@@ -85,31 +78,18 @@ import type {
   MarkHistorySortField,
   Task,
 } from "@/types";
-import { watch, computed } from "vue";
+import { watch } from "vue";
 import { store } from "@/store/store";
-import { cloneDeep } from "lodash-es";
 import EventBus from "@/plugins/eventBus";
-import { addFileServerPrefixToTask, preDrawImageHistory } from "@/utils/utils";
+import { preDrawImageHistory } from "@/utils/utils";
 import { message } from "ant-design-vue";
-const remarkCount = computed(() => {
-  return store.setting?.remarkCount;
-});
-const limitPageSize = computed(() => {
-  // return typeof remarkCount.value == "number"
-  //     ? remarkCount.value
-  //     : 20
-  return 20;
-});
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-const hasLimit = computed(() => {
-  console.log("remarkCount.value:", remarkCount.value);
-  return typeof remarkCount.value == "number";
-});
+
+const limitPageSize = 20;
+
 const {
   title = "回评",
-  showOrder = false,
   showSearch = false,
-  orderTimeField = "markerTime",
+  orderTimeField = "marker_time",
   subjectCode = undefined,
   groupNumber = undefined,
   markerId = undefined,
@@ -117,9 +97,8 @@ const {
   getHistory,
 } = defineProps<{
   title?: string;
-  showOrder?: boolean;
   showSearch?: boolean;
-  orderTimeField?: "markerTime" | "inspectTime";
+  orderTimeField?: "marker_time" | "inspect_time";
   subjectCode?: string;
   groupNumber?: string;
   markerId?: string;
@@ -144,13 +123,11 @@ watch(
     format(val, preVal);
   }
 );
-const searchTypeChange = (val) => {
-  console.log(val);
-};
+
 let loading = $ref(false);
 let currentPage = $ref(1);
 let total = $ref(0);
-let order: MarkHistoryOrderBy = $ref("markerTime");
+let order: MarkHistoryOrderBy = $ref("marker_time");
 if (orderTimeField) {
   order = orderTimeField;
 }
@@ -179,7 +156,7 @@ const currentTaskChange = async () => {
     store.historyTasks.splice(0);
     secretNumberInput = "";
     currentPage = 1;
-    order = "markerTime";
+    order = "marker_time";
     sort = "DESC";
   }
 };
@@ -208,19 +185,11 @@ EventBus.on("should-reload-history", () => {
         groupNumber,
         markerId,
         markerScore,
-        pageSize: limitPageSize.value,
+        pageSize: limitPageSize,
       });
       if (res?.data) {
-        // let data = cloneDeep(res.data);
-        let data = remarkCount.value === 0 ? [] : cloneDeep(res.data);
-        if (
-          typeof remarkCount.value == "number" &&
-          remarkCount.value > 0 &&
-          (currentPage - 1) * 20 + data.length > remarkCount.value
-        ) {
-          data = data.slice(0, remarkCount.value % 20);
-        }
-        data = data.map(addFileServerPrefixToTask);
+        const data = res.data.records;
+        total = res.data.total;
         if (store.currentTask) {
           // 这种方式(对象被重新构造了)能查找到index,我也很惊讶
           const indexOfTasks = store.historyTasks.indexOf(store.currentTask);
@@ -247,16 +216,14 @@ EventBus.on("should-reload-history", () => {
 
 async function updateHistoryTask({
   pageNumber = 1,
-  // eslint-disable-next-line @typescript-eslint/no-unused-vars
-  pageSize = 20,
-  order = "markerTime",
+  order = "marker_time",
   sort = "DESC",
   secretNumber = null,
 }: HistoryQueryParams) {
   loading = true;
   let params = {
     pageNumber,
-    pageSize: limitPageSize.value,
+    pageSize: limitPageSize,
     order,
     sort,
     subjectCode,
@@ -265,32 +232,16 @@ async function updateHistoryTask({
     markerScore,
   };
   let key = searchType == "1" ? "secretNumber" : "markerScore";
-  params[key] = secretNumber;
+  params[key] = secretNumber || undefined;
   const res = await getHistory(params);
   loading = false;
   if (res?.data) {
-    // let data = cloneDeep(res.data);
-    let data = remarkCount.value === 0 ? [] : cloneDeep(res.data);
-    if (
-      typeof remarkCount.value == "number" &&
-      remarkCount.value > 0 &&
-      (currentPage - 1) * 20 + data.length > remarkCount.value
-    ) {
-      data = data.slice(0, remarkCount.value % 20);
-    }
-    data = data.map(addFileServerPrefixToTask);
-    store.historyTasks = data;
-    total = data.length;
+    store.historyTasks = res.data.records;
+    total = res.data.total;
     replaceCurrentTask(store.historyTasks[0]).catch((err) => {
       console.log(err);
       void message.error("切换至回评任务失败");
     });
-    if (!data.length) {
-      store.globalMask = false;
-    }
-  }
-  if (!res?.data || !res?.data.length || remarkCount.value === 0) {
-    store.globalMask = false;
   }
 }
 
@@ -307,17 +258,6 @@ function pageChange(page) {
   currentPage = page;
 }
 
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-function toggleOrderBy(toOrder: MarkHistoryOrderBy) {
-  if (showOrder) {
-    if (toOrder === order) {
-      sort = sort === "DESC" ? "ASC" : "DESC";
-    } else {
-      order = toOrder;
-    }
-  }
-}
-
 async function searchHistoryTask() {
   if (currentPage !== 1) {
     currentPage = 1;

+ 14 - 9
src/features/mark/MarkProblemDialog.vue

@@ -3,19 +3,19 @@
     v-model:visible="visible"
     title="选择试卷的问题类型"
     width="406px"
-    :zIndex="6000"
+    :zIndex="1000"
     wrapClassName="mark-dialog"
     @ok="handleOk"
     @cancel="handleCancel"
   >
     <a-form
       labelAlign="right"
-      :labelCol="{ span: 5 }"
+      :labelCol="{ span: 6 }"
       @keydown.stop=""
       @keypress.stop=""
     >
       <a-form-item class="tw-mb-2" :required="true" label="问题类型">
-        <a-select v-model:value="formModel.problemType" placeholder="姓名">
+        <a-select v-model:value="formModel.problemType" placeholder="类型">
           <a-select-option
             v-for="item in store.setting.problemTypes"
             :key="item.code"
@@ -29,12 +29,13 @@
         class="tw-mb-2"
         label="原因"
       >
-        <a-input v-model:value="formModel.problemRemark" placeholder="原因" />
+        <a-input
+          v-model:value="formModel.problemRemark"
+          :maxlength="32"
+          placeholder="原因"
+        />
       </a-form-item>
     </a-form>
-    <template #footer>
-      <a-button class="btn-cancel" @click="handleCancel">取消</a-button>
-    </template>
   </a-modal>
 </template>
 
@@ -79,7 +80,11 @@ const handleOk = async () => {
     return;
   }
   try {
-    const res = await doProblemType(formModel);
+    const res = await doProblemType({
+      problemType: formModel.problemType,
+      problemRemark:
+        formModel.problemType === "OTHER" ? formModel.problemRemark : undefined,
+    });
     if (res?.data.success) {
       void message.success({ content: "问题卷处理成功", duration: 3 });
       visible = false;
@@ -98,7 +103,7 @@ const handleOk = async () => {
     console.log("问题卷处理失败", error);
     void message.error({ content: "网络异常", duration: 5 });
     await new Promise((res) => setTimeout(res, 1500));
-    window.location.reload();
+    // window.location.reload();
   }
 };
 

+ 5 - 1
src/features/mark/MarkTool.vue

@@ -53,7 +53,11 @@
       </div>
     </div>
     <div>
-      <div class="mark-tool-item" @click="toAllZero">
+      <div
+        v-if="store.setting.enableAllZero && !store.setting.forceSpecialTag"
+        class="mark-tool-item"
+        @click="toAllZero"
+      >
         <img src="@/assets/icons/icon-all-zero.svg" />
         <p>全部零分</p>
       </div>

+ 1 - 1
src/features/student/studentInspect/StudentInspect.vue

@@ -5,7 +5,7 @@
       <mark-history
         v-if="!isSingleStudent"
         :subjectCode="subjectCode"
-        orderTimeField="inspectTime"
+        orderTimeField="inspect_time"
         :getHistory="getInspectedHistory"
       />
       <mark-body

+ 4 - 4
src/types/index.ts

@@ -381,10 +381,10 @@ export interface SliceImage {
 }
 
 export type MarkHistoryOrderBy =
-  | "markerTime"
-  | "inspectTime"
-  | "markerScore"
-  | "seceretNumber"
+  | "marker_time"
+  | "inspect_time"
+  | "marker_score"
+  | "seceret_number"
   | undefined;
 export type MarkHistorySortField = "ASC" | "DESC" | undefined;
 

+ 8 - 0
src/utils/utils.ts

@@ -154,6 +154,11 @@ export async function getDataUrlForCoverConfig(
   image: HTMLImageElement,
   configs: PictureSlice[]
 ) {
+  const key = `${image.src}`;
+  if (objectUrlMap.get(key)) {
+    return objectUrlMap.get(key);
+  }
+
   const canvas = document.createElement("canvas");
   canvas.width = image.naturalWidth;
   canvas.height = image.naturalHeight;
@@ -173,6 +178,7 @@ export async function getDataUrlForCoverConfig(
   });
   const dataurl = URL.createObjectURL(blob);
   cacheFIFO();
+  objectUrlMap.set(key, dataurl);
   return dataurl;
 }
 
@@ -299,6 +305,8 @@ export async function preDrawImageHistory(_currentTask: Task | undefined) {
 
   // const hasSliceConfig = store.currentTask?.sliceConfig?.length;
   const hasSliceConfig = _currentTask?.sliceConfig?.length;
+  _currentTask.sheetUrls = ["/1-1.jpg", "/1-2.jpg"];
+  _currentTask.sliceUrls = await processSliceUrls(_currentTask);
 
   const images = [];