Przeglądaj źródła

Merge branch 'master' of http://gcls-git.helxsoft.cn/GCLS/eep_page

zq 4 dni temu
rodzic
commit
252b34a315
22 zmienionych plików z 161 dodań i 87 usunięć
  1. 9 55
      src/components/CommonPreview.vue
  2. 1 1
      src/components/SimAnswerPermissionControl.vue
  3. 5 6
      src/icons/svg/components/uploadPreview.svg
  4. 6 0
      src/icons/svg/components/uploadPreviews.svg
  5. 5 1
      src/views/book/courseware/create/components/CreateCanvas.vue
  6. 17 3
      src/views/book/courseware/create/components/base/common/UploadFile.vue
  7. 1 1
      src/views/book/courseware/data/bookType.js
  8. 1 6
      src/views/book/courseware/preview/common/PreviewOperation.vue
  9. 10 0
      src/views/book/courseware/preview/common/SoundRecord.vue
  10. 5 1
      src/views/book/courseware/preview/components/character/CharacterPreview.vue
  11. 5 1
      src/views/book/courseware/preview/components/character_structure/CharacterStructurePreview.vue
  12. 6 0
      src/views/book/courseware/preview/components/common/PreviewMixin.js
  13. 5 1
      src/views/book/courseware/preview/components/image_text/ImageTextPreview.vue
  14. 10 0
      src/views/book/courseware/preview/components/input/InputPreview.vue
  15. 18 1
      src/views/book/courseware/preview/components/newWord_template/NewWordTemplatePreview.vue
  16. 3 0
      src/views/book/courseware/preview/components/newWord_template/components/EditDiv.vue
  17. 8 1
      src/views/book/courseware/preview/components/pinyin_base/PinyinBasePreview.vue
  18. 7 1
      src/views/book/courseware/preview/components/record_input/RecordInputPreview.vue
  19. 11 0
      src/views/book/courseware/preview/components/record_input/SoundRecord.vue
  20. 23 1
      src/views/book/courseware/preview/components/table/TablePreview.vue
  21. 0 1
      src/views/book/courseware/preview/components/video_interaction/VideoInteractionPreview.vue
  22. 5 6
      src/views/login/index.vue

+ 9 - 55
src/components/CommonPreview.vue

@@ -8,8 +8,10 @@
         <span class="name-path">{{ courseware_info.name_path }}</span>
         <span class="flow-nodename">{{ courseware_info.cur_audit_flow_node_name }}</span>
         <slot name="middle" :courseware="courseware_info"></slot>
-        <i class="el-icon-setting" style="cursor: pointer" @click="openSimulateAnswerPermissionControl()"></i>
-        <span class="link" @click="createCoursewarePreviewURL()">生成课件预览链接</span>
+        <template v-if="type === 'edit_preview'">
+          <i class="el-icon-setting" style="cursor: pointer" @click="openSimulateAnswerPermissionControl()"></i>
+          <span class="link" @click="createCoursewarePreviewURL()">生成课件预览链接</span>
+        </template>
         <div class="group">
           <el-checkbox v-model="isShowGroup">显示分组</el-checkbox>
           <el-checkbox v-model="groupShowAll">分组显示全部</el-checkbox>
@@ -269,8 +271,8 @@
                         <span v-if="![1, 5].includes(parseInt(drawerType))" class="word">{{ item.file_name }}</span>
                         <div class="mark">
                           <el-checkbox
-                            :disabled="!item.is_can_edit"
                             v-model="item.is_hided"
+                            :disabled="!item.is_can_edit"
                             size="small"
                             @change="handleMediaShowChange(item)"
                           >
@@ -448,6 +450,7 @@ import * as OpenCC from 'opencc-js';
 import { isTrue } from '@/utils/validate';
 import { getConfig, getToken } from '@/utils/auth';
 import { CreateCoursewarePreviewURL } from '@/api/app';
+import { Base64 } from 'js-base64';
 
 export default {
   name: 'CommonPreview',
@@ -617,7 +620,7 @@ export default {
       title_list: [],
       visiblePermissionControl: false, // 模拟答题权限控制弹窗显示状态
       permissionControl: {
-        can_answer: false, // 可作答
+        can_answer: true, // 可作答
         can_judge_correct: false, // 可判断对错(客观题)
         can_show_answer: false, // 可查看答案
         can_correct: false, // 可批改
@@ -672,7 +675,7 @@ export default {
       }
     },
     multimediaIsAllShow(newVal) {
-      //切换显示全部,需清空所有数据,全部重新加载
+      // 切换显示全部,需清空所有数据,全部重新加载
       this.bookChapterList.forEach((x) => {
         this.$set(x, 'data', null);
       });
@@ -993,7 +996,6 @@ export default {
       this.drawerType = type;
       this.$nextTick(() => {
         // 确保DOM更新后触发加载
-        // this.loadMore();
         this.loadBookChapterStructExpandList();
       });
     },
@@ -1074,60 +1076,12 @@ export default {
     handleMediaShowChange(item) {
       const params = { id: item.id, is_hided: item.is_hided ? 'true' : 'false' };
       SetBookResourceHide(params).then((res) => {
-        //如果不是显示全部资源,则需要重新加载
+        // 如果不是显示全部资源,则需要重新加载
         if (!this.multimediaIsAllShow) {
           this.multimediaHandleChange();
         }
       });
     },
-    // 加载更多数据
-    //弃用
-    async loadMore() {
-      const now = Date.now();
-      // 只有当lastLoadTime不为0(不是第一次)且时间间隔太短时才return
-      if (this.lastLoadTime > 0 && now - this.lastLoadTime < this.minLoadInterval) {
-        return;
-      }
-
-      if (this.disabled || this.loading) {
-        if (this.lastLoadTime > 0) {
-          return;
-        }
-      }
-      this.loading = true;
-      const params = {
-        page_capacity: this.page_capacity,
-        cur_page: this.cur_page,
-        book_id: this.projectId,
-        book_chapter_node_id: this.activeBookChapterId,
-        type: parseInt(this.drawerType),
-      };
-      await PageQueryBookResourceList(params)
-        .then(({ total_count, resource_list }) => {
-          this.total_count = total_count;
-          // 记录加载前的滚动高度
-          const scrollContainer = this.$el.querySelector('.scroll-container');
-          const isAtBottom = this.isScrollAtBottom(scrollContainer);
-
-          this.file_list = this.cur_page === 1 ? resource_list : [...this.file_list, ...resource_list];
-          if (!resource_list || resource_list.length === 0) {
-            return;
-          }
-          this.cur_page += 1;
-
-          // 只有当前已经在底部时才微调滚动位置
-          if (isAtBottom) {
-            this.$nextTick(() => {
-              // 轻微向上滚动,创造滚动空间
-              scrollContainer.scrollTop -= 5;
-            });
-          }
-        })
-        .finally(() => {
-          this.loading = false;
-          this.lastLoadTime = now;
-        });
-    },
     isScrollAtBottom(container) {
       if (!container) return false;
       return container.scrollHeight - container.scrollTop <= container.clientHeight + 5;

+ 1 - 1
src/components/SimAnswerPermissionControl.vue

@@ -37,7 +37,7 @@ export default {
   data() {
     return {
       permission: {
-        can_answer: false, // 可作答
+        can_answer: true, // 可作答
         can_judge_correct: false, // 可判断对错
         can_show_answer: false, // 可查看答案
         can_correct: false, // 可批改

+ 5 - 6
src/icons/svg/components/uploadPreview.svg

@@ -1,6 +1,5 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="24" height="24" style="" filter="none">
-    
-    <g>
-    <path d="M16.552 6.667h11.448c0.736 0 1.333 0.597 1.333 1.333v0 18.667c0 0.736-0.597 1.333-1.333 1.333v0h-24c-0.736 0-1.333-0.597-1.333-1.333v0-21.333c0-0.736 0.597-1.333 1.333-1.333v0h9.885l2.667 2.667zM5.333 6.667v18.667h21.333v-16h-11.219l-2.667-2.667h-7.448zM17.333 17.333v5.333h-2.667v-5.333h-4l5.333-5.333 5.333 5.333h-4z" fill="rgba(16,16,16,1)"></path>
-    </g>
-  </svg>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+  <path
+    d="M8.00028 2C11.595 2 14.5857 4.58651 15.2127 8C14.5857 11.4135 11.595 14 8.00028 14C4.4055 14 1.41485 11.4135 0.787842 8C1.41485 4.58651 4.4055 2 8.00028 2ZM8.00028 12.6667C10.824 12.6667 13.2403 10.7013 13.8519 8C13.2403 5.29869 10.824 3.33333 8.00028 3.33333C5.17648 3.33333 2.76023 5.29869 2.1486 8C2.76023 10.7013 5.17648 12.6667 8.00028 12.6667ZM8.00028 11C6.3434 11 5.00026 9.65687 5.00026 8C5.00026 6.34315 6.3434 5 8.00028 5C9.65708 5 11.0003 6.34315 11.0003 8C11.0003 9.65687 9.65708 11 8.00028 11ZM8.00028 9.66667C8.92075 9.66667 9.66695 8.92047 9.66695 8C9.66695 7.07953 8.92075 6.33333 8.00028 6.33333C7.07982 6.33333 6.33359 7.07953 6.33359 8C6.33359 8.92047 7.07982 9.66667 8.00028 9.66667Z"
+    fill="#4E5969" />
+</svg>

+ 6 - 0
src/icons/svg/components/uploadPreviews.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="24" height="24" style="" filter="none">
+    
+    <g>
+    <path d="M16.552 6.667h11.448c0.736 0 1.333 0.597 1.333 1.333v0 18.667c0 0.736-0.597 1.333-1.333 1.333v0h-24c-0.736 0-1.333-0.597-1.333-1.333v0-21.333c0-0.736 0.597-1.333 1.333-1.333v0h9.885l2.667 2.667zM5.333 6.667v18.667h21.333v-16h-11.219l-2.667-2.667h-7.448zM17.333 17.333v5.333h-2.667v-5.333h-4l5.333-5.333 5.333 5.333h-4z" fill="rgba(16,16,16,1)"></path>
+    </g>
+  </svg>

+ 5 - 1
src/views/book/courseware/create/components/CreateCanvas.vue

@@ -158,6 +158,7 @@ export default {
     return {
       getBookUnifiedAttr: () => this.book_unified_attrib,
       getTitleList: () => this.title_list,
+      getProjectResourcePopedom: () => this.projectResourcePopedom,
     };
   },
   props: {
@@ -205,6 +206,7 @@ export default {
       book_unified_attrib: unified_attrib,
       title_list: [],
       curComponentId: '', // 当前选中组件 id
+      projectResourcePopedom: [], // 当前编辑人员的项目资源权限
     };
   },
   computed: {
@@ -339,7 +341,7 @@ export default {
       spinner: 'el-icon-loading',
     });
     ContentGetCoursewareContent({ id: this.courseware_id })
-      .then(({ content, content_group_row_list, title_list }) => {
+      .then(({ content, content_group_row_list, title_list, my_project_resource_popedom }) => {
         if (content) {
           let parsedContent = JSON.parse(content);
           if (
@@ -367,6 +369,8 @@ export default {
             deep: true,
           },
         );
+
+        this.projectResourcePopedom = my_project_resource_popedom || [];
       })
       .finally(() => {
         loading.close();

+ 17 - 3
src/views/book/courseware/create/components/base/common/UploadFile.vue

@@ -18,8 +18,17 @@
         >
           <el-button>{{ type === 'h5_games' ? '选择Zip压缩包或单个html文件' : '选取' + labelText + '文件' }}</el-button>
         </el-upload>
-        <el-button size="small" type="primary" @click="uploadFiles">上传</el-button>
-        <el-button size="small" type="primary" @click="useResource">使用资源</el-button>
+        <el-button
+          v-if="isEnable(projectResourcePopedom.is_can_upload)"
+          size="small"
+          type="primary"
+          @click="uploadFiles"
+        >
+          上传
+        </el-button>
+        <el-button v-if="isEnable(projectResourcePopedom.is_can_use)" size="small" type="primary" @click="useResource">
+          使用资源
+        </el-button>
       </div>
     </div>
     <el-divider v-if="showDivider" />
@@ -88,6 +97,7 @@
 <script>
 import { fileUpload } from '@/api/app';
 import { conversionSize } from '@/utils/common';
+import { isEnable } from '@/views/book/courseware/data/common';
 
 import FillDescribe from '../../common/FillDescribe.vue';
 import SelectResource from './SelectResource.vue';
@@ -98,7 +108,7 @@ export default {
     FillDescribe,
     SelectResource,
   },
-  inject: ['property', 'courseware_id', 'project_id'],
+  inject: ['property', 'courseware_id', 'project_id', 'getProjectResourcePopedom'],
   props: {
     // 课件id
     coursewareId: {
@@ -194,6 +204,7 @@ export default {
         file_info: this.fileInfo,
       },
       visibleResource: false,
+      isEnable,
     };
   },
   computed: {
@@ -212,6 +223,9 @@ export default {
       }
       return accept;
     },
+    projectResourcePopedom() {
+      return this.getProjectResourcePopedom();
+    },
   },
   watch: {
     content: {

+ 1 - 1
src/views/book/courseware/data/bookType.js

@@ -195,7 +195,7 @@ export const bookTypeOption = [
       {
         value: 'upload_preview',
         label: '上传',
-        icon: 'uploadPreview',
+        icon: 'uploadPreviews',
         component: UploadPreview,
         set: UploadRreviewSetting,
         preview: UploadPreviewPreview,

+ 1 - 6
src/views/book/courseware/preview/common/PreviewOperation.vue

@@ -6,11 +6,7 @@
       class="button correct"
       @click="openAnswerCorrect()"
     ></div>
-    <div
-      v-show="permissionControl.can_judge_correct || permissionControl.can_show_answer"
-      class="button answer"
-      @click="showAnswerAnalysis()"
-    ></div>
+    <div v-show="permissionControl.can_show_answer" class="button answer" @click="showAnswerAnalysis()"></div>
   </div>
 </template>
 
@@ -30,7 +26,6 @@ export default {
     showAnswerAnalysis() {
       this.$emit('showAnswerAnalysis');
     },
-
     // 重做
     retry() {
       this.$emit('retry');

+ 10 - 0
src/views/book/courseware/preview/common/SoundRecord.vue

@@ -447,6 +447,16 @@ export default {
         }
       }
     },
+    // 重置状态
+    handleReset() {
+      this.hasMicro = '';
+      this.recordtime = 0;
+      window.stopAudioSound = () => {
+        if (this.audio) {
+          this.audio.pause();
+        }
+      };
+    },
   },
 };
 </script>

+ 5 - 1
src/views/book/courseware/preview/components/character/CharacterPreview.vue

@@ -398,7 +398,7 @@
           </div>
         </div>
       </div>
-      <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" />
+      <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" @retry="retry" />
       <AnswerCorrect
         :answer-correct="data?.answer_correct"
         :visible.sync="visibleAnswerCorrect"
@@ -584,6 +584,10 @@ export default {
       this.writer.updateColor('strokeColor', color);
       this.writer.updateColor('drawingColor', color);
     },
+    // 重做
+    retry() {
+      this.handleData();
+    },
   },
 };
 </script>

+ 5 - 1
src/views/book/courseware/preview/components/character_structure/CharacterStructurePreview.vue

@@ -152,7 +152,7 @@
           </div>
         </div>
       </div>
-      <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" />
+      <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" @retry="retry" />
       <AnswerCorrect
         :answer-correct="data?.answer_correct"
         :visible.sync="visibleAnswerCorrect"
@@ -386,6 +386,10 @@ export default {
 
       return classname;
     },
+    // 重做
+    retry() {
+      this.handleData([]);
+    },
   },
 };
 </script>

+ 6 - 0
src/views/book/courseware/preview/components/common/PreviewMixin.js

@@ -70,6 +70,12 @@ const mixin = {
       },
       immediate: true,
     },
+    'permissionControl.can_answer': {
+      handler(newVal) {
+        this.disabled = !newVal;
+      },
+      immediate: true,
+    },
   },
   components: {
     SerialNumberPosition,

+ 5 - 1
src/views/book/courseware/preview/components/image_text/ImageTextPreview.vue

@@ -58,7 +58,7 @@
         />
       </div>
     </div>
-    <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" />
+    <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" @retry="retry" />
     <AnswerCorrect
       :answer-correct="data?.answer_correct"
       :visible.sync="visibleAnswerCorrect"
@@ -281,6 +281,10 @@ export default {
       if (theme !== '') this.sentenceTheme = theme;
       if (size) this.fontSize = size;
     },
+    // 重做
+    retry() {
+      this.initData();
+    },
   },
 };
 </script>

+ 10 - 0
src/views/book/courseware/preview/components/input/InputPreview.vue

@@ -10,10 +10,12 @@
         v-model="data.answer.text"
         type="text"
         :style="{
+          cursor: disabled ? 'not-allowed' : 'pointer',
           font: data.property.font,
           fontSize: data.property.font_size + 'px',
           color: data.property.text_color,
         }"
+        :disabled="disabled"
         :class="[
           'input',
           { 'input-horizontal': data.property.input_style === inputStyleList[0].value },
@@ -56,6 +58,14 @@ export default {
       inputStyleList,
     };
   },
+  watch: {
+    'data.answer.text'(newVal) {
+      this.answer.text = newVal;
+    },
+    answer(newVal) {
+      this.data.answer.text = newVal?.text || '';
+    },
+  },
   mounted() {
     this.$nextTick(() => {
       this.$refs.input.$el.querySelector('.el-input__inner').style.backgroundColor =

+ 18 - 1
src/views/book/courseware/preview/components/newWord_template/NewWordTemplatePreview.vue

@@ -43,6 +43,7 @@
           >
             <EditDiv
               :id="'b' + item.content + index"
+              ref="editDiv"
               v-model="userAnswer[index].answer_pinyin"
               :can-edit="!item.is_example && !disabled"
               :text-align="'center'"
@@ -87,6 +88,7 @@
               >
                 <EditDiv
                   :id="'c' + items.con + index + indexs"
+                  ref="editDiv"
                   v-model="userAnswer[index].item[indexs].answer_pinyin"
                   :can-edit="!items.is_example && !disabled"
                   :text-align="'center'"
@@ -169,6 +171,7 @@
                 <EditDiv
                   v-if="items && items.type === 'hanzi' && items.is_can_input_answer"
                   :id="'a' + items.con + index + indexs"
+                  ref="editDiv"
                   v-model="userAnswer[index].item[indexs].answer"
                   :can-edit="!items.is_example && !disabled"
                   :text-align="'center'"
@@ -189,6 +192,7 @@
           <div v-if="data.answer_type.indexOf('en') > -1 && data.property.model === 'input'" class="inputdv en-common">
             <EditDiv
               :id="'d' + item.content + index"
+              ref="editDiv"
               v-model="userAnswer[index].answer_en"
               :can-edit="!item.is_example && !disabled"
               :text-align="'center'"
@@ -208,7 +212,7 @@
         </div>
       </div>
     </div>
-    <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" />
+    <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" @retry="retry" />
     <AnswerCorrect
       :answer-correct="data?.answer_correct"
       :visible.sync="visibleAnswerCorrect"
@@ -540,6 +544,19 @@ export default {
 
       return classname;
     },
+    // 重做
+    retry() {
+      this.handleData();
+      if (this.$refs.editDiv) {
+        if (this.$refs.editDiv.length > 0) {
+          this.$refs.editDiv.forEach((item) => {
+            item.handleReset();
+          });
+        } else {
+          this.$refs.editDiv.handleReset();
+        }
+      }
+    },
   },
 };
 </script>

+ 3 - 0
src/views/book/courseware/preview/components/newWord_template/components/EditDiv.vue

@@ -279,6 +279,9 @@ export default {
       e.target.innerHTML = e.target.innerHTML.replace(/&nbsp;/gi, '').trim();
       this.$emit('input', e.target.innerHTML);
     },
+    handleReset() {
+      document.getElementById(this.id).innerHTML = '';
+    },
   },
 };
 </script>

+ 8 - 1
src/views/book/courseware/preview/components/pinyin_base/PinyinBasePreview.vue

@@ -150,7 +150,7 @@
           />
         </template>
       </div>
-      <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" />
+      <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" @retry="retry" />
       <AnswerCorrect
         :answer-correct="data?.answer_correct"
         :visible.sync="visibleAnswerCorrect"
@@ -660,6 +660,13 @@ export default {
         .join(' ');
       item.con = answer;
     },
+    // 重做
+    retry() {
+      this.handleData();
+      if (this.data.property.fun_type !== 'mark' && this.isEnable(this.data.property.is_enable_voice_answer)) {
+        this.$refs.record.handleReset();
+      }
+    },
   },
 };
 </script>

+ 7 - 1
src/views/book/courseware/preview/components/record_input/RecordInputPreview.vue

@@ -27,7 +27,7 @@
           @handleWav="handleWav"
         />
       </div>
-      <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" />
+      <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" @retry="retry" />
       <AnswerCorrect
         :answer-correct="data?.answer_correct"
         :visible.sync="visibleAnswerCorrect"
@@ -84,6 +84,12 @@ export default {
     handleWav(data) {
       this.data.answer.answer_list.answer_record_list = data;
     },
+    // 重做
+    retry() {
+      this.data.answer.answer_list.input = '';
+      this.data.answer.answer_list.answer_record_list = [];
+      this.$refs.record.handleReset();
+    },
   },
 };
 </script>

+ 11 - 0
src/views/book/courseware/preview/components/record_input/SoundRecord.vue

@@ -377,6 +377,17 @@ export default {
         }
       }
     },
+    // 重置状态
+    handleReset() {
+      this.hasMicro = '';
+
+      this.recordtime = 0;
+      window.stopAudioSound = () => {
+        if (this.audio) {
+          this.audio.pause();
+        }
+      };
+    },
   },
 };
 </script>

+ 23 - 1
src/views/book/courseware/preview/components/table/TablePreview.vue

@@ -222,7 +222,7 @@
           </tr>
         </table>
       </div>
-      <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" />
+      <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" @retry="retry" />
       <AnswerCorrect
         :answer-correct="data?.answer_correct"
         :visible.sync="visibleAnswerCorrect"
@@ -666,6 +666,28 @@ export default {
       }
       return {};
     },
+    // 重做
+    retry() {
+      this.data.option_list.forEach((item) => {
+        item.forEach((items) => {
+          items.model_essay.forEach((li) => {
+            if (li.type === 'input') {
+              li.value = '';
+              li.write_base64 = '';
+            }
+          });
+        });
+      });
+      if (this.$refs.record) {
+        if (this.$refs.record.length > 0) {
+          this.$refs.record.forEach((item) => {
+            item.handleReset();
+          });
+        } else {
+          this.$refs.record.handleReset();
+        }
+      }
+    },
   },
 };
 </script>

+ 0 - 1
src/views/book/courseware/preview/components/video_interaction/VideoInteractionPreview.vue

@@ -25,7 +25,6 @@
       @click="lookReport"
       >{{ convertText('查看答题报告') }}</el-button
     >
-    <PreviewOperation @showAnswerAnalysis="showAnswerAnalysis" />
     <AnswerCorrect
       :answer-correct="data?.answer_correct"
       :visible.sync="visibleAnswerCorrect"

+ 5 - 6
src/views/login/index.vue

@@ -13,8 +13,7 @@
           <el-input v-model="form.password" type="password" show-password />
         </el-form-item>
         <el-form-item prop="verification_code_image_text" class="verification-code" label="验证码">
-          <!-- @keyup.enter.native="signIn" -->
-          <el-input v-model="form.verification_code_image_text" />
+          <el-input v-model="form.verification_code_image_text" @keyup.enter.native="signIn" />
           <el-image
             v-if="image_content_base64.length > 0"
             :src="`data:image/jpg;base64,${image_content_base64}`"
@@ -40,9 +39,9 @@
                 >《用户协议》</span
               >
             </span>
-            <span style="color: #4d78ff; cursor: pointer" @click="forgotPwd"
-              >忘记密码?| <a @click="goRegister">注册</a></span
-            >
+            <span style="color: #4d78ff; cursor: pointer" @click="forgotPwd">
+              忘记密码?| <a @click="goRegister">注册</a>
+            </span>
           </div>
         </el-form-item>
       </el-form>
@@ -65,7 +64,7 @@
       :close-on-click-modal="false"
       class="login-userAgree"
     >
-      <forgot-pwd @cancelFot="cancelFot"></forgot-pwd>
+      <forgot-pwd @cancelFot="cancelFot" />
     </el-dialog>
   </div>
 </template>