mjh пре 4 година
родитељ
комит
bc83450ee8
2 измењених фајлова са 51 додато и 34 уклоњено
  1. 12 0
      src/api/course/course.js
  2. 39 34
      src/views/ManagePage/ManagePage.vue

+ 12 - 0
src/api/course/course.js

@@ -71,6 +71,17 @@ function checkCourseCodeUnique(id, code) {
   });
 }
 
+function uploadCourseImage(name, image) {
+  let data = new FormData();
+  data.append("name", name);
+  data.append("file", image);
+  return axios.post(`${prefix}/uploadImage`, data, {
+    headers: {
+      "Content-Type": "multipart/form-data"
+    }
+  });
+}
+
 const courseAPIs = {
   createCourse,
   getAllCourses,
@@ -85,6 +96,7 @@ const courseAPIs = {
   checkCourseNameUnique,
   checkCourseCodeUnique,
   getCourseByEvalId,
+  uploadCourseImage,
 };
 
 export default courseAPIs;

+ 39 - 34
src/views/ManagePage/ManagePage.vue

@@ -48,7 +48,8 @@
           </div>
         </template>
         <div class="course-card-list-container">
-          <CourseCard v-for="(item,index) in filterCourses" :key="index" :ref="'courseCard'+item.id" :courseVO="item" @delete="deleteCourse(item)" @update="beforeUpdateCourse(item)"/>
+          <CourseCard v-for="(item,index) in filterCourses" :key="index" :ref="'courseCard'+item.id" :courseVO="item"
+                      @delete="deleteCourse(item)" @update="beforeUpdateCourse(item)"/>
         </div>
       </el-card>
 
@@ -60,16 +61,16 @@
           <span style="font-weight: bold; font-size: larger">
             全部测试
           </span>
-<!--            <div class="course-type-selector">-->
-<!--              <el-select v-model="examType" class="m-2" placeholder="测试类型">-->
-<!--                <el-option-->
-<!--                  v-for="item in examTypeOptions"-->
-<!--                  :key="item.value"-->
-<!--                  :label="item.label"-->
-<!--                  :value="item.value"-->
-<!--                />-->
-<!--              </el-select>-->
-<!--            </div>-->
+            <!--            <div class="course-type-selector">-->
+            <!--              <el-select v-model="examType" class="m-2" placeholder="测试类型">-->
+            <!--                <el-option-->
+            <!--                  v-for="item in examTypeOptions"-->
+            <!--                  :key="item.value"-->
+            <!--                  :label="item.label"-->
+            <!--                  :value="item.value"-->
+            <!--                />-->
+            <!--              </el-select>-->
+            <!--            </div>-->
           </div>
         </template>
         <el-tabs v-model="activeTestPaneName">
@@ -176,9 +177,9 @@
 
 <script>
 import CourseCard from "@/components/CourseCard";
-import { ElMessage, ElMessageBox } from "element-plus";
-import client from "@/utils/oss";
-import { Back, Document } from "@element-plus/icons-vue";
+import {ElMessage, ElMessageBox} from "element-plus";
+// import client from "@/utils/oss";
+import {Back, Document} from "@element-plus/icons-vue";
 import TestCard from "@/components/TestCard";
 
 export default {
@@ -278,19 +279,19 @@ export default {
       myCourseList: [],
       courseType: "all",
       courseTypeOptions: [
-        { value: "all", label: "全部课程" },
-        { value: "pending", label: "未开始" },
-        { value: "start", label: "正在进行" },
-        { value: "end", label: "已结束" },
+        {value: "all", label: "全部课程"},
+        {value: "pending", label: "未开始"},
+        {value: "start", label: "正在进行"},
+        {value: "end", label: "已结束"},
       ],
       evalExamList: [],
       coderExamList: [],
       examType: "all",
       examTypeOptions: [
-        { value: "all", label: "全部测试" },
-        { value: "pending", label: "未开始" },
-        { value: "start", label: "正在进行" },
-        { value: "end", label: "已结束" },
+        {value: "all", label: "全部测试"},
+        {value: "pending", label: "未开始"},
+        {value: "start", label: "正在进行"},
+        {value: "end", label: "已结束"},
       ],
     };
   },
@@ -330,10 +331,10 @@ export default {
         this.$router.push("portal");
       }
       if (index === "1") {
-        document.getElementById("app").scrollIntoView({ behavior: "smooth" });
+        document.getElementById("app").scrollIntoView({behavior: "smooth"});
       }
       if (index === "2") {
-        document.querySelector("#manage-page-divider").scrollIntoView({ behavior: "smooth" });
+        document.querySelector("#manage-page-divider").scrollIntoView({behavior: "smooth"});
       }
       this.activeIndex = index;
     },
@@ -347,15 +348,20 @@ export default {
             createOrUpdateCourse();
           } else {
             if (this.form.fileList[0].raw) {
-              client.put("/seecoder/image-" + this.form.name + ".jpg", this.form.fileList[0].raw)
-                .then(res => {
-                  this.form.imageUrl = res.res.requestUrls[0];
-                  createOrUpdateCourse();
-                })
-                .catch(err => {
-                  console.log(err);
-                  ElMessage.error(err);
-                });
+              console.log(2);
+              console.log(this.$apis);
+              this.$apis.uploadCourseImage(this.form.name, this.form.fileList[0].raw)
+                .then(res => console.log(res))
+                .catch();
+              // client.put("/seecoder/image-" + this.form.name + ".jpg", this.form.fileList[0].raw)
+              //   .then(res => {
+              //     this.form.imageUrl = res.res.requestUrls[0];
+              //     createOrUpdateCourse();
+              //   })
+              //   .catch(err => {
+              //     console.log(err);
+              //     ElMessage.error(err);
+              //   });
             } else {
               createOrUpdateCourse();
             }
@@ -364,7 +370,6 @@ export default {
       });
 
       function createOrUpdateCourse() {
-        console.log(_this.form);
         if (_this.form.id === null) {
           _this.$apis.createCourse({
             name: _this.form.name,