zhangjie пре 2 месеци
родитељ
комит
d5ed07e207

+ 2 - 2
src/modules/admin/api.js

@@ -185,10 +185,10 @@ export const schoolSetRobotUpdate = (datas) => {
 
 // AI智能评卷配置
 export const schoolSetAiInfo = (schoolId) => {
-  return $postParam("/api/admin/set/ai/select", { schoolId });
+  return $postParam("/api/admin/set/ai/mark/set/select", { schoolId });
 };
 export const schoolSetAiUpdate = (datas) => {
-  return $post("/api/admin/set/ai/save", datas);
+  return $post("/api/admin/set/ai/mark/set/save", datas);
 };
 
 // 字体配置

+ 27 - 18
src/modules/admin/components/school/SchoolSetAi.vue

@@ -7,8 +7,8 @@
       label-width="240px"
     >
       <!-- 是否开启AI智能评卷 -->
-      <el-form-item prop="enableAI" label="是否开启AI智能评卷:">
-        <el-radio-group v-model="formData.enableAI">
+      <el-form-item prop="enable" label="是否开启AI智能评卷:">
+        <el-radio-group v-model="formData.enable">
           <el-radio
             v-for="item in OPEN_STATUS"
             :key="item.value"
@@ -35,12 +35,12 @@
 
       <!-- 本地大模型地址 -->
       <el-form-item
-        v-if="formData.modelType === 'local'"
-        prop="modelUrl"
+        v-if="formData.modelType === 'LOCAL'"
+        prop="url"
         label="大模型地址:"
       >
         <el-input
-          v-model.trim="formData.modelUrl"
+          v-model.trim="formData.url"
           placeholder="请输入大模型地址"
           clearable
         >
@@ -49,7 +49,7 @@
 
       <!-- OCR识别地址 -->
       <el-form-item
-        v-if="formData.modelType === 'local'"
+        v-if="formData.modelType === 'LOCAL'"
         prop="ocrUrl"
         label="OCR识别地址:"
       >
@@ -74,6 +74,13 @@
 import { OPEN_STATUS } from "../../../../constants/enumerate";
 import { schoolSetAiInfo, schoolSetAiUpdate } from "../../api";
 
+const initFormData = {
+  enable: false,
+  modelType: "CLOUD",
+  url: "",
+  ocrUrl: "",
+};
+
 export default {
   name: "school-set-ai",
   props: {
@@ -89,18 +96,16 @@ export default {
       loading: false,
       OPEN_STATUS,
       MODEL_TYPES: [
-        { value: "cloud", label: "云端大模型" },
-        { value: "local", label: "本地大模型" },
+        { value: "CLOUD", label: "云端大模型" },
+        { value: "LOCAL", label: "本地大模型" },
       ],
+      fields: [],
       formData: {
-        enableAI: false,
-        modelType: "cloud",
-        modelUrl: "",
-        ocrUrl: "",
+        ...initFormData,
       },
       cachedFormData: null,
       rules: {
-        enableAI: [
+        enable: [
           {
             required: true,
             message: "请选择是否开启AI智能评卷",
@@ -114,7 +119,7 @@ export default {
             trigger: "change",
           },
         ],
-        modelUrl: [
+        url: [
           {
             required: true,
             message: "请输入大模型地址",
@@ -147,7 +152,10 @@ export default {
     async initData() {
       const data = await schoolSetAiInfo(this.school.id);
       if (data && data.result) {
-        this.formData = data.result;
+        this.fields = data.result || [];
+        this.formData = data.result[0].value
+          ? JSON.parse(data.result[0].value)
+          : { ...initFormData };
       }
       this.cachedFormData = JSON.parse(JSON.stringify(this.formData));
     },
@@ -158,8 +166,8 @@ export default {
       );
     },
     handleModelTypeChange(val) {
-      if (val === "cloud") {
-        this.formData.modelUrl = "";
+      if (val === "CLOUD") {
+        this.formData.url = "";
         this.formData.ocrUrl = "";
       }
     },
@@ -170,8 +178,9 @@ export default {
       if (this.loading) return;
       this.loading = true;
       try {
+        this.fields[0].value = JSON.stringify(this.formData);
         await schoolSetAiUpdate({
-          ...this.formData,
+          param: this.fields,
           schoolId: this.school.id,
         });
         this.cachedFormData = JSON.parse(JSON.stringify(this.formData));

+ 1 - 1
src/modules/mark/api.js

@@ -100,7 +100,7 @@ export const markManageListExport = (datas) => {
 
 // 评卷管理导出AI统计数据
 export const markManageAiStatsExport = (datas) => {
-  return $postParam("/api/admin/mark/manage/ai_stats/export", datas, {
+  return $postParam("/api/admin/mark/setting/ai/mark/export", datas, {
     responseType: "blob",
   });
 };

+ 9 - 1
src/modules/mark/views/MarkManage.vue

@@ -280,12 +280,20 @@ export default {
       this.$message.success("下载成功!");
     },
     async toExportAIStats() {
+      if (!this.filter.examId) {
+        this.$message.error("请选择考试");
+        return;
+      }
+
       if (this.downloading) return;
       this.downloading = true;
 
       const res = await downloadByApi(() => {
         return markManageAiStatsExport({
-          ...this.filter,
+          examId: this.filter.examId,
+          semesterId: this.filter.semesterId,
+          paperNumber: this.filter.paperNumber || undefined,
+          courseId: this.filter.courseId || undefined,
         });
       }).catch((e) => {
         this.$message.error(e || "下载失败,请重新尝试!");