فهرست منبع

Merge branch 'master' of http://git.qmth.com.cn/themis/frontend-admin

zhangjie 4 سال پیش
والد
کامیت
ddb8eaed2f

+ 2 - 1
.env.development

@@ -1,2 +1,3 @@
 VUE_APP_SELF_DEFINE_DOMAIN=true
-VUE_APP_ENABLE_VUE_RENDER_LOGS=false
+VUE_APP_ENABLE_VUE_RENDER_LOGS=false
+VUE_APP_ROUTER_PATH=/admin/

+ 1 - 0
.env.production

@@ -1 +1,2 @@
 VUE_APP_GIT_REPO_VERSION=TO_BE_OVERRIDED
+VUE_APP_ROUTER_PATH=/admin/

+ 1 - 1
http-test/user.http

@@ -1,5 +1,5 @@
 ### login
-POST http://192.168.10.36:6001/api/admin/user/login/account
+POST http://192.168.10.26:6001/api/admin/user/login/account
 Content-Type: application/json;charset=UTF-8
 platform: web
 deviceId: 1

+ 11 - 2
src/components/VEditor/VEditor.vue

@@ -36,13 +36,22 @@ export default {
   },
   mounted() {
     renderRichText(JSON.parse(this.value), this.$refs.editor);
+
+    this.$refs.editor.addEventListener("paste", (event) => {
+      event.preventDefault();
+      let pasteText = (event.clipboardData || window.clipboardData).getData(
+        "text"
+      );
+      document.execCommand("insertText", false, pasteText);
+    });
   },
   methods: {
     emitJSON() {
       if (this.$refs.editor.contentEditable) {
         const json = toJSON(this.$refs.editor);
-        this.$emit("input", json);
-        this.$emit("change", json);
+        // this.$emit("input", json);
+        // this.$emit("change", json);
+        this.$emit("result", json);
       }
     },
   },

+ 12 - 6
src/components/VEditor/components/VMenu.vue

@@ -1,27 +1,33 @@
 <template>
   <div class="edit-menus" style="display: flex; gap: 10px;">
     <!-- 由于v-model会re-render,这里无法redo了 -->
-    <!-- <img
+    <img
       class="intLink"
-      title="Undo"
+      title="撤销"
       @click="execCommand('undo')"
       src="data:image/gif;base64,R0lGODlhFgAWAOMKADljwliE33mOrpGjuYKl8aezxqPD+7/I19DV3NHa7P///////////////////////yH5BAEKAA8ALAAAAAAWABYAAARR8MlJq7046807TkaYeJJBnES4EeUJvIGapWYAC0CsocQ7SDlWJkAkCA6ToMYWIARGQF3mRQVIEjkkSVLIbSfEwhdRIH4fh/DZMICe3/C4nBQBADs="
-    /> -->
+    />
+    <img
+      class="intLink"
+      title="取消撤销"
+      onclick="execCommand('redo');"
+      src="data:image/gif;base64,R0lGODlhFgAWAMIHAB1ChDljwl9vj1iE34Kl8aPD+7/I1////yH5BAEKAAcALAAAAAAWABYAAANKeLrc/jDKSesyphi7SiEgsVXZEATDICqBVJjpqWZt9NaEDNbQK1wCQsxlYnxMAImhyDoFAElJasRRvAZVRqqQXUy7Cgx4TC6bswkAOw=="
+    />
     <img
       class="intLink"
-      title="Bold"
+      title="加粗"
       @click="execCommand('bold')"
       src="data:image/gif;base64,R0lGODlhFgAWAID/AMDAwAAAACH5BAEAAAAALAAAAAAWABYAQAInhI+pa+H9mJy0LhdgtrxzDG5WGFVk6aXqyk6Y9kXvKKNuLbb6zgMFADs="
     />
     <img
       class="intLink"
-      title="Italic"
+      title="斜体"
       @click="execCommand('italic')"
       src="data:image/gif;base64,R0lGODlhFgAWAKEDAAAAAF9vj5WIbf///yH5BAEAAAMALAAAAAAWABYAAAIjnI+py+0Po5x0gXvruEKHrF2BB1YiCWgbMFIYpsbyTNd2UwAAOw=="
     />
     <img
       class="intLink"
-      title="Underline"
+      title="下划线"
       @click="execCommand('underline')"
       src="data:image/gif;base64,R0lGODlhFgAWAKECAAAAAF9vj////////yH5BAEAAAIALAAAAAAWABYAAAIrlI+py+0Po5zUgAsEzvEeL4Ea15EiJJ5PSqJmuwKBEKgxVuXWtun+DwxCCgA7"
     />

+ 1 - 1
src/features/examwork/CourseManagement/CoursePaperDialog.vue

@@ -45,7 +45,7 @@
               >
             </span>
           </el-table-column>
-          <el-table-column width="170" label="音频播放次数">
+          <el-table-column width="170" :min="1" label="音频播放次数">
             <span slot-scope="scope">
               <el-input-number
                 v-model.trim="scope.row.audioPlayCount"

+ 4 - 1
src/features/examwork/CourseManagement/PaperImportDialog.vue

@@ -26,7 +26,10 @@
       </el-row>
       <el-row>
         <el-form-item label="音频播放次数">
-          <el-input-number v-model.trim="form.audioPlayCount"></el-input-number>
+          <el-input-number
+            :min="1"
+            v-model.trim="form.audioPlayCount"
+          ></el-input-number>
         </el-form-item>
       </el-row>
       <el-row>

+ 13 - 3
src/features/examwork/ExamManagement/ExamEdit.vue

@@ -314,7 +314,7 @@
                 <el-checkbox label="CLIENT_CAMERA"
                   >电脑摄像头为主机位</el-checkbox
                 >
-                <el-checkbox label="CLIENT_SCREEN">电脑开启录</el-checkbox>
+                <el-checkbox label="CLIENT_SCREEN">电脑开启录</el-checkbox>
                 <el-checkbox label="MOBILE_FIRST">手机主机位</el-checkbox>
                 <el-checkbox
                   :disabled="!form.monitorVideoSource.includes('MOBILE_FIRST')"
@@ -332,7 +332,11 @@
         <el-form :model="form" label-width="170px" inline>
           <el-row>
             <el-form-item label="考试须知">
-              <VEditor v-model="form.preNotice" style="width: 300px;" />
+              <VEditor
+                :value="form.preNoticeClone"
+                style="width: 300px;"
+                @result="(v) => (form.preNotice = v)"
+              />
             </el-form-item>
           </el-row>
           <el-row>
@@ -344,7 +348,11 @@
           </el-row>
           <el-row>
             <el-form-item label="考后说明">
-              <VEditor v-model="form.postNotice" style="width: 300px;" />
+              <VEditor
+                :value="form.postNoticeClone"
+                style="width: 300px;"
+                @result="(v) => (form.postNotice = v)"
+              />
             </el-form-item>
           </el-row>
           <el-row>
@@ -465,6 +473,8 @@ export default {
       }
       this.form.startEndTimeProxy = [this.form.startTime, this.form.endTime];
       this.form.monitorProxy = !!this.form.monitorVideoSource;
+      this.form.preNoticeClone = this.form.preNotice;
+      this.form.postNoticeClone = this.form.postNotice;
     }
   },
   data() {

+ 0 - 5
src/filters/index.js

@@ -17,11 +17,6 @@ Vue.filter("booleanPassFilter", function (val) {
   return { true: "通过", false: "不通过" }[val];
 });
 
-Vue.filter("booleanEnableDisableFilter", function (val) {
-  if (val === null) return "无";
-  return { true: "启用", false: "禁用" }[val];
-});
-
 Vue.filter("zeroOneYesNoFilter", function (val) {
   if (val === null) return "无";
   return { 1: "是", 0: "否" }[val];

+ 3 - 2
src/router/index.js

@@ -32,8 +32,9 @@ Vue.use(VueRouter);
 //   });
 //   return props;
 // }
-
+/** @type {import("vue-router").RouteConfig[]} */
 const routes = [
+  { path: "/", redirect: { name: "Login" } },
   {
     path: "/",
     name: "Index",
@@ -188,7 +189,7 @@ const routes = [
 
 const router = new VueRouter({
   mode: "history",
-  base: process.env.BASE_URL,
+  base: process.env.VUE_APP_ROUTER_PATH,
   routes,
 });