lvmax 2 months ago
parent
commit
3fc1366b8f

+ 3 - 3
.env.development

@@ -6,10 +6,10 @@ VITE_PUBLIC_PATH = /
 
 
 
 
 # 跨域代理,您可以配置多个 ,请注意,没有换行符
 # 跨域代理,您可以配置多个 ,请注意,没有换行符
-VITE_PROXY = [["/exam-boot","http://10.11.12.101:8080/exam-boot"],["/upload","http://10.11.12.101:3300/upload"]]
+VITE_PROXY = [["/exam-boot","http://10.11.12.100:8080/exam-boot"],["/upload","http://10.11.12.100:3300/upload"]]
 
 
 #后台接口全路径地址(必填)
 #后台接口全路径地址(必填)
-VITE_GLOB_DOMAIN_URL=http://10.11.12.101:8080/exam-boot
+VITE_GLOB_DOMAIN_URL=http://10.11.12.100:8080/exam-boot
 
 
 #后台接口父地址(必填)
 #后台接口父地址(必填)
 VITE_GLOB_API_URL=/exam-boot
 VITE_GLOB_API_URL=/exam-boot
@@ -18,4 +18,4 @@ VITE_GLOB_API_URL=/exam-boot
 VITE_GLOB_API_URL_PREFIX=
 VITE_GLOB_API_URL_PREFIX=
 
 
 #微前端qiankun应用,命名必须以VITE_APP_SUB_开头,jeecg-app-1为子应用的项目名称,也是子应用的路由父路径
 #微前端qiankun应用,命名必须以VITE_APP_SUB_开头,jeecg-app-1为子应用的项目名称,也是子应用的路由父路径
-VITE_APP_SUB_jeecg-app-1 = '//10.11.12.101:8092'
+VITE_APP_SUB_jeecg-app-1 = '//10.11.12.100:8092'

+ 7 - 7
README.md

@@ -76,11 +76,11 @@ pnpm install
 - 配置接口地址 `.env.development`
 - 配置接口地址 `.env.development`
 
 
 ```bash
 ```bash
-VITE_PROXY = [["/jeecgboot","http://10.11.12.101:8080/jeecg-boot"],["/upload","http://10.11.12.101:3300/upload"]]
-VITE_GLOB_DOMAIN_URL=http://10.11.12.101:8080/jeecg-boot
+VITE_PROXY = [["/jeecgboot","http://10.11.12.100:8080/jeecg-boot"],["/upload","http://10.11.12.100:3300/upload"]]
+VITE_GLOB_DOMAIN_URL=http://10.11.12.100:8080/jeecg-boot
 ```
 ```
 
 
-> 说明:把`http://10.11.12.101:8080/jeecg-boot` 换成自己地址,其他不用改。
+> 说明:把`http://10.11.12.100:8080/jeecg-boot` 换成自己地址,其他不用改。
 
 
 
 
 - run
 - run
@@ -101,11 +101,11 @@ pnpm build
 
 
 - host设置
 - host设置
 
 
->注意: 需要把`10.11.12.101`替换成真实IP 比如`192.`开头,不然后端不通。
+>注意: 需要把`10.11.12.100`替换成真实IP 比如`192.`开头,不然后端不通。
 
 
 ```bash
 ```bash
-10.11.12.101 jeecg-boot-system
-10.11.12.101 jeecg-boot-gateway
+10.11.12.100 jeecg-boot-system
+10.11.12.100 jeecg-boot-gateway
 ```
 ```
 
 
 
 
@@ -141,7 +141,7 @@ docker run --name jeecgboot-vue3-nginx -p 80:80 -d jeecgboot-vue3
 
 
 - 访问前台
 - 访问前台
 
 
-http://10.11.12.101
+http://10.11.12.100
 
 
 ## Docker镜像启动前端(微服务模式)
 ## Docker镜像启动前端(微服务模式)
 > 这里只写与单体的区别步骤
 > 这里只写与单体的区别步骤

+ 2 - 2
src/components/jeecg/comment/useComment.ts

@@ -374,8 +374,8 @@ export function useFileList() {
         //数据库中地址
         //数据库中地址
         let url = getFileAccessHttpUrl(file.url);
         let url = getFileAccessHttpUrl(file.url);
         await initViewDomain();
         await initViewDomain();
-        //本地测试需要将文件地址的10.11.12.101/10.11.12.101替换成IP, 或是直接修改全局domain
-        //url = url.replace('10.11.12.101', '192.168.1.100')
+        //本地测试需要将文件地址的10.11.12.100/10.11.12.100替换成IP, 或是直接修改全局domain
+        //url = url.replace('10.11.12.100', '192.168.1.100')
         //如果集成的KkFileview-v3.3.0+ 需要对url再做一层base64编码 encodeURIComponent(encryptByBase64(url))
         //如果集成的KkFileview-v3.3.0+ 需要对url再做一层base64编码 encodeURIComponent(encryptByBase64(url))
         window.open(onlinePreviewDomain+'?officePreviewType=pdf&url='+encodeURIComponent(url));
         window.open(onlinePreviewDomain+'?officePreviewType=pdf&url='+encodeURIComponent(url));
       }
       }

+ 4 - 0
src/views/buss/exam/examreview/ExamReview.api.ts

@@ -12,6 +12,7 @@ enum Api {
   importExcel = '/examReview/importExcel',
   importExcel = '/examReview/importExcel',
   exportXls = '/examReview/exportXls',
   exportXls = '/examReview/exportXls',
   submitPreview = '/examReview/submitPreview',
   submitPreview = '/examReview/submitPreview',
+  userExamResultDetails = '/exam/userExamResultDetails',
 }
 }
 /**
 /**
  * 导出api
  * 导出api
@@ -67,3 +68,6 @@ export const saveOrUpdate = (params, isUpdate) => {
 export const submitPreview = (params) => {
 export const submitPreview = (params) => {
   return defHttp.post({url: Api.submitPreview, params});
   return defHttp.post({url: Api.submitPreview, params});
 }
 }
+export const userExamResultDetails = (params) => {
+  return defHttp.get({url: Api.userExamResultDetails, params});
+}

+ 71 - 52
src/views/buss/exam/examreview/Review.vue

@@ -2,17 +2,22 @@
   <div class="fix">
   <div class="fix">
     <div class="all-box-left">
     <div class="all-box-left">
       <div class="a-card is-always-shadow left-box left-box-normal">
       <div class="a-card is-always-shadow left-box left-box-normal">
-        <a-card>
-          <div class="score-card">
-            <div class="score-box">
-              <div>考试名称:{{ form.examTitle }}</div>
-              <div>考生姓名:{{ form.realName }}</div>
-              <div>及格分数:<span class="numberClass">{{ form.qualifyScore }} 分</span></div>
-              <div>客观题得分:<span class="numberClass">{{ form.objectiveScore || 0 }} 分</span>
-              </div>
-            </div>
-          </div>
-        </a-card>
+        <div style="text-align: center">
+          <a-button type="primary" style="width: 100px;margin-top: 20px" @click="commitPreview">
+            提交批阅
+          </a-button>
+        </div>
+<!--        <a-card>-->
+<!--          <div class="score-card">-->
+<!--            <div class="score-box">-->
+<!--              <div>考试名称:{{ form.examTitle }}</div>-->
+<!--              <div>考生姓名:{{ form.realName }}</div>-->
+<!--              <div>及格分数:<span class="numberClass">{{ form.qualifyScore }} 分</span></div>-->
+<!--              <div>客观题得分:<span class="numberClass">{{ form.objectiveScore || 0 }} 分</span>-->
+<!--              </div>-->
+<!--            </div>-->
+<!--          </div>-->
+<!--        </a-card>-->
         <a-card>
         <a-card>
           <a-row :gutter="8" style="font-size: 12px;margin-bottom: 20px">
           <a-row :gutter="8" style="font-size: 12px;margin-bottom: 20px">
             <a-col :span="3">
             <a-col :span="3">
@@ -43,7 +48,7 @@
           <div class="group-card" v-for="(item,index) in form.answerCardList" :key="index">
           <div class="group-card" v-for="(item,index) in form.answerCardList" :key="index">
             <template v-for="(mapItem,key) in item" :key="key">
             <template v-for="(mapItem,key) in item" :key="key">
               <a :href="'#anchor'+mapItem.indexList[0]" class="typeClass" :title="key">{{ key }}</a>
               <a :href="'#anchor'+mapItem.indexList[0]" class="typeClass" :title="key">{{ key }}</a>
-              <a-divider />
+              <a-divider/>
               <div class="group-card-body">
               <div class="group-card-body">
                 共 <span class="numberClass">{{ mapItem.questionCount }}</span> 题,共 <span
                 共 <span class="numberClass">{{ mapItem.questionCount }}</span> 题,共 <span
                 class="numberClass">{{ mapItem.questionScore }}</span> 分
                 class="numberClass">{{ mapItem.questionScore }}</span> 分
@@ -80,7 +85,7 @@
                 </div>
                 </div>
                 <template v-if="userExamQuestion.questionType != 6">
                 <template v-if="userExamQuestion.questionType != 6">
                   <div v-if="userExamQuestion.questionType == 4">
                   <div v-if="userExamQuestion.questionType == 4">
-                    <Tinymce v-model="userExamQuestion.answer" :disabled="true" />
+                    <Tinymce v-model="userExamQuestion.answer" :disabled="true"/>
                   </div>
                   </div>
                   <div class="qu-answer" v-else>
                   <div class="qu-answer" v-else>
                     <div class="item"
                     <div class="item"
@@ -93,7 +98,7 @@
                                v-if="userExamQuestion.questionType!=5 && answerItem.isRight"
                                v-if="userExamQuestion.questionType!=5 && answerItem.isRight"
                                :style="{float:'right'}">
                                :style="{float:'right'}">
                           <template #icon>
                           <template #icon>
-                            <check-circle-outlined />
+                            <check-circle-outlined/>
                           </template>
                           </template>
                           正确
                           正确
                         </a-tag>
                         </a-tag>
@@ -106,10 +111,10 @@
                         <template v-if="userExamQuestion.isRight!=null">
                         <template v-if="userExamQuestion.isRight!=null">
                           <template v-if="userExamQuestion.isRight">
                           <template v-if="userExamQuestion.isRight">
                             <a-alert message="部分答对了" type="warning" show-icon
                             <a-alert message="部分答对了" type="warning" show-icon
-                                     v-if="userExamQuestion.actualScore < userExamQuestion.questionScore && userExamQuestion.actualScore > 0" />
-                            <a-alert message="答对了" type="success" show-icon v-else />
+                                     v-if="userExamQuestion.actualScore < userExamQuestion.questionScore && userExamQuestion.actualScore > 0"/>
+                            <a-alert message="答对了" type="success" show-icon v-else/>
                           </template>
                           </template>
-                          <a-alert message="答错了" type="error" show-icon v-else />
+                          <a-alert message="答错了" type="error" show-icon v-else/>
                         </template>
                         </template>
                       </div>
                       </div>
                     </div>
                     </div>
@@ -158,7 +163,7 @@
                             </div>
                             </div>
                           </div>
                           </div>
                           <div v-if="subQuestion.questionType == 4">
                           <div v-if="subQuestion.questionType == 4">
-                            <Tinymce v-model="subQuestion.answer" :disabled="true" />
+                            <Tinymce v-model="subQuestion.answer" :disabled="true"/>
                           </div>
                           </div>
                           <div class="qu-answer">
                           <div class="qu-answer">
                             <div class="item"
                             <div class="item"
@@ -171,7 +176,7 @@
                                        v-if="subQuestion.questionType!=5 && subQuestionAnswer.isRight"
                                        v-if="subQuestion.questionType!=5 && subQuestionAnswer.isRight"
                                        :style="{float:'right'}">
                                        :style="{float:'right'}">
                                   <template #icon>
                                   <template #icon>
-                                    <check-circle-outlined />
+                                    <check-circle-outlined/>
                                   </template>
                                   </template>
                                 </a-tag>
                                 </a-tag>
                               </div>
                               </div>
@@ -183,10 +188,10 @@
                                 <template v-if="subQuestion.isRight!=null">
                                 <template v-if="subQuestion.isRight!=null">
                                   <template v-if="subQuestion.isRight">
                                   <template v-if="subQuestion.isRight">
                                     <a-alert message="部分答对了" type="warning" show-icon
                                     <a-alert message="部分答对了" type="warning" show-icon
-                                             v-if="subQuestion.actualScore < subQuestion.questionScore" />
-                                    <a-alert message="答对了" type="success" show-icon v-else />
+                                             v-if="subQuestion.actualScore < subQuestion.questionScore"/>
+                                    <a-alert message="答对了" type="success" show-icon v-else/>
                                   </template>
                                   </template>
-                                  <a-alert message="答错了" type="error" show-icon v-else />
+                                  <a-alert message="答错了" type="error" show-icon v-else/>
                                 </template>
                                 </template>
                               </div>
                               </div>
                             </div>
                             </div>
@@ -229,10 +234,10 @@
                                 判题:
                                 判题:
                                 <CheckCircleFilled
                                 <CheckCircleFilled
                                   :style="{color: buttonColorClass(subQuestion.isRight,'rightButton'),fontSize:'24px'}"
                                   :style="{color: buttonColorClass(subQuestion.isRight,'rightButton'),fontSize:'24px'}"
-                                  @click="buttonSubSubmit(userExamQuestion.questionIndex,subQuestion.questionIndex,true)" />
+                                  @click="buttonSubSubmit(userExamQuestion.questionIndex,subQuestion.questionIndex,true)"/>
                                 <CloseCircleFilled
                                 <CloseCircleFilled
                                   :style="{color: buttonColorClass(subQuestion.isRight,'errorButton'),fontSize:'24px',marginLeft:'16px'}"
                                   :style="{color: buttonColorClass(subQuestion.isRight,'errorButton'),fontSize:'24px',marginLeft:'16px'}"
-                                  @click="buttonSubSubmit(userExamQuestion.questionIndex,subQuestion.questionIndex,false)" />
+                                  @click="buttonSubSubmit(userExamQuestion.questionIndex,subQuestion.questionIndex,false)"/>
                               </div>
                               </div>
                               <div class="item">
                               <div class="item">
                                 得分:
                                 得分:
@@ -270,10 +275,10 @@
                   判题:
                   判题:
                   <CheckCircleFilled
                   <CheckCircleFilled
                     :style="{color: buttonColorClass(userExamQuestion.isRight,'rightButton'),fontSize:'24px'}"
                     :style="{color: buttonColorClass(userExamQuestion.isRight,'rightButton'),fontSize:'24px'}"
-                    @click="buttonSubmit(userExamQuestion.questionIndex,true)" />
+                    @click="buttonSubmit(userExamQuestion.questionIndex,true)"/>
                   <CloseCircleFilled
                   <CloseCircleFilled
                     :style="{color: buttonColorClass(userExamQuestion.isRight,'errorButton'),fontSize:'24px',marginLeft:'16px'}"
                     :style="{color: buttonColorClass(userExamQuestion.isRight,'errorButton'),fontSize:'24px',marginLeft:'16px'}"
-                    @click="buttonSubmit(userExamQuestion.questionIndex,false)" />
+                    @click="buttonSubmit(userExamQuestion.questionIndex,false)"/>
                 </div>
                 </div>
                 <div class="item">
                 <div class="item">
                   得分:
                   得分:
@@ -292,27 +297,23 @@
         </a-card>
         </a-card>
       </div>
       </div>
     </div>
     </div>
-    <div style="text-align: center">
-      <a-button type="primary" style="width: 100px;margin-top: 20px" @click="commitPreview">
-        提交批阅
-      </a-button>
-    </div>
+
   </div>
   </div>
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { ref } from "vue";
-import { userExamResultDetail } from "/@/views/buss/exam/exam/Exam.api";
-import { submitPreview } from "/@/views/buss/exam/examreview/ExamReview.api";
-import { useMessage } from "/@/hooks/web/useMessage";
-import { Anchor, AnchorLink } from "ant-design-vue";
-import { CheckCircleFilled, CheckCircleOutlined, CloseCircleFilled } from "@ant-design/icons-vue";
-import { useRoute, useRouter } from "vue-router";
-import { Tinymce } from "/@/components/Tinymce";
-
-const { createMessage } = useMessage();
+import {ref} from "vue";
+import {userExamResultDetail} from "/@/views/buss/exam/exam/Exam.api";
+import {submitPreview, userExamResultDetails} from "/@/views/buss/exam/examreview/ExamReview.api";
+import {useMessage} from "/@/hooks/web/useMessage";
+import {Anchor, AnchorLink} from "ant-design-vue";
+import {CheckCircleFilled, CheckCircleOutlined, CloseCircleFilled} from "@ant-design/icons-vue";
+import {useRoute, useRouter} from "vue-router";
+import {Tinymce} from "/@/components/Tinymce";
+
+const {createMessage} = useMessage();
 const route = useRoute();
 const route = useRoute();
-const userExamId = route.params?.id ?? -1;
+let userExamId = route.params?.id ?? -1;
 const paperId = route.params?.paperId ?? -1;
 const paperId = route.params?.paperId ?? -1;
 const form: any = ref<any>({
 const form: any = ref<any>({
   userExamQuestionList: []
   userExamQuestionList: []
@@ -322,9 +323,10 @@ const router = useRouter();
 initFormData();
 initFormData();
 
 
 async function initFormData() {
 async function initFormData() {
-  let params = { userExamId: userExamId,'paperId':paperId };
+  let params = {userExamId: userExamId, 'paperId': paperId};
   const data = await userExamResultDetail(params);
   const data = await userExamResultDetail(params);
-  form.value = { ...data };
+  console.log(data)
+  form.value = {...data};
 }
 }
 
 
 //改变分值触发,如果已经判为错题,则不给分
 //改变分值触发,如果已经判为错题,则不给分
@@ -490,18 +492,35 @@ function commitPreview() {
     examPreviews: examPreviews
     examPreviews: examPreviews
   };
   };
   submitPreview(params).then(() => {
   submitPreview(params).then(() => {
-    setTimeout(function() {
-      //关闭当前窗口
-      window.close();
-      //打开考试结果详情页
-      let url = router.resolve({
-        path: `/exam/userexamresult/examDetail/` + userExamId+"/"+paperId
-      });
-      window.open(url.href, "_blank");
+    setTimeout(function () {
+      nextPaper(paperId);
+      // //关闭当前窗口
+      // window.close();
+      // //打开考试结果详情页
+      // let url = router.resolve({
+      //   path: `/exam/userexamresult/examDetail/` + userExamId+"/"+paperId
+      // });
+      // window.open(url.href, "_blank");
     }, 1000);
     }, 1000);
   });
   });
 }
 }
 
 
+async function nextPaper(id) {
+  // userExamResultDetails({'paperId':id}).then(data=>{
+  //   console.log(data)
+  // })
+  let params = {'paperId': id};
+  const data = await userExamResultDetails(params);
+  userExamId = data.id
+  form.value = {...data};
+  let url = router.resolve({
+    path: `/exam/examReview/${userExamId}/${paperId}`,
+  })
+  window.open(url.href, '_blank')
+  setTimeout(()=>{
+    window.close();
+  },500)
+}
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>

+ 35 - 24
src/views/buss/exam/question/QuestionFormPage.vue

@@ -32,12 +32,18 @@
           <a-row>
           <a-row>
             <a-col :span="24">
             <a-col :span="24">
               <a-form-item label="题目内容" name="content">
               <a-form-item label="题目内容" name="content">
-                <Tinymce v-if="currentQuestionType !== 7&&currentQuestionType !== 8"
-                         v-model="formData.content" @change="handleChange" :height="250"/>
+                <Tinymce v-if="currentQuestionType === 7||currentQuestionType === 8" v-model="con" @change="handleChange" :height="250"/>
+                <Tinymce v-if="currentQuestionType !== 7&&currentQuestionType !== 8" v-model="formData.content" @change="handleChange" :height="250"/>
+
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row>
+            <a-col v-if="currentQuestionType === 7||currentQuestionType === 8" :span="24">
+              <a-form-item label="题目内容" name="content">
                 <div v-if="currentQuestionType === 7" style="width: 700px">
                 <div v-if="currentQuestionType === 7" style="width: 700px">
                   <div ref="ssaawcBody"
                   <div ref="ssaawcBody"
                        style="background-color: #aaaaaa;height: 500px;width: 700px">
                        style="background-color: #aaaaaa;height: 500px;width: 700px">
-
                   </div>
                   </div>
                   <a-drawer
                   <a-drawer
                     title="父级Drawer"
                     title="父级Drawer"
@@ -69,17 +75,15 @@
                   <!--                  <a-upload @change="addOption(2)" style="border-radius: 5px;width: 75px;margin: auto"-->
                   <!--                  <a-upload @change="addOption(2)" style="border-radius: 5px;width: 75px;margin: auto"-->
                   <!--                            multiple="multiple">添加背景图片-->
                   <!--                            multiple="multiple">添加背景图片-->
                   <!--                  </a-upload>-->
                   <!--                  </a-upload>-->
-                  <button @click="subOneType7">保存当前</button>
                   <button @click="clean">清理</button>
                   <button @click="clean">清理</button>
                 </div>
                 </div>
-                <div v-if="currentQuestionType ===8" style="width: 800px">
-                  <div ref="ssaawcBody" style="background-color: #aaaaaa;height: 500px;width:800px">
+                <div v-if="currentQuestionType ===8" style="width: 700px">
+                  <div ref="ssaawcBody" style="background-color: #aaaaaa;height: 500px;width:700px">
 
 
                   </div>
                   </div>
                   <button @click="addConnectionRow">添加一列</button>
                   <button @click="addConnectionRow">添加一列</button>
                   <button @click="walert">删除最后一列</button>
                   <button @click="walert">删除最后一列</button>
-                  <button @click="subOneType7">保存当前</button>
-                  <button @click="walert">清理</button>
+                  <button @click="clean">清理</button>
                 </div>
                 </div>
               </a-form-item>
               </a-form-item>
             </a-col>
             </a-col>
@@ -257,7 +261,7 @@ const validatorRules = {
   type: [{required: true, message: "请选择题目类型", trigger: "blur"}],
   type: [{required: true, message: "请选择题目类型", trigger: "blur"}],
   repositoryId: [{required: true, message: "请选择所属题库", trigger: "blur"}],
   repositoryId: [{required: true, message: "请选择所属题库", trigger: "blur"}],
   level: [{required: true, message: "请选择难度等级", trigger: "blur"}],
   level: [{required: true, message: "请选择难度等级", trigger: "blur"}],
-  content: [{required: true, message: "请输入题目内容", trigger: "blur"}]
+  // content: [{required: true, message: "请输入题目内容", trigger: "blur"}]
 };
 };
 const formData: any = ref<any>({});
 const formData: any = ref<any>({});
 const formRef = ref();
 const formRef = ref();
@@ -478,6 +482,7 @@ function dragAnw() {
 }
 }
 
 
 let bodyIndex = 0;
 let bodyIndex = 0;
+const con = ref();
 let ansIndex = 0;
 let ansIndex = 0;
 let Connection = 0;
 let Connection = 0;
 let arrBodyIndex = [];
 let arrBodyIndex = [];
@@ -499,15 +504,15 @@ function walert(value) {
 
 
 
 
 function addItem() {
 function addItem() {
-  let index = bodyIndex+1
+  let index = bodyIndex + 1
   ssaawcBody.value.innerHTML += `<div id='option${index}'` +
   ssaawcBody.value.innerHTML += `<div id='option${index}'` +
     `                         style="position: absolute;display: inline-block;background-color: red; width: ${tzSize.value.sizeWidth}px;height: ${tzSize.value.sizeHeight}px;cursor: move;top: 10px">` +
     `                         style="position: absolute;display: inline-block;background-color: red; width: ${tzSize.value.sizeWidth}px;height: ${tzSize.value.sizeHeight}px;cursor: move;top: 10px">` +
-    `            <img style="width: ${tzSize.value.sizeWidth}px;height: ${tzSize.value.sizeHeight}px;" src="${tzSize.value.sizeUrl}" alt="">         ` +
+    `            <img style="width: ${tzSize.value.sizeWidth}px;height: ${tzSize.value.sizeHeight}px;" src="${tzSize.value.sizeUrl}" alt="option${index}" title="option${index}">         ` +
     `                    </div>`
     `                    </div>`
   bodyIndex++
   bodyIndex++
   setTimeout(() => {
   setTimeout(() => {
     var children = ssaawcBody.value.children;
     var children = ssaawcBody.value.children;
-    for (let i = 0; i < bodyIndex; i++) {
+    for (let i = 1; i < bodyIndex + 1; i++) {
       var elementId = `option${i}`;
       var elementId = `option${i}`;
       let elementById = document.getElementById(elementId);
       let elementById = document.getElementById(elementId);
       console.log(elementById)
       console.log(elementById)
@@ -565,7 +570,7 @@ function addConnectionRow(value) {
         formData.append('file', file); // 将文件添加到FormData对象中
         formData.append('file', file); // 将文件添加到FormData对象中
 
 
         var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象
         var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象
-        xhr.open('POST', 'http://10.11.12.101:8080/exam-boot/sys/common/upload', true); // 初始化请求,这里的'/upload'是服务器上处理上传文件的路径
+        xhr.open('POST', 'http://10.11.12.100:8080/exam-boot/sys/common/upload', true); // 初始化请求,这里的'/upload'是服务器上处理上传文件的路径
         xhr.setRequestHeader("x-access-token", getToken())
         xhr.setRequestHeader("x-access-token", getToken())
 
 
         xhr.onload = function (date) {
         xhr.onload = function (date) {
@@ -577,7 +582,7 @@ function addConnectionRow(value) {
           //
           //
           var message = JSON.parse(date.target.response).message;
           var message = JSON.parse(date.target.response).message;
           console.log(JSON.parse(date.target.response))
           console.log(JSON.parse(date.target.response))
-          url = "http://10.11.12.101:8080/exam-boot/sys/common/static/" + message
+          url = "http://10.11.12.100:8080/exam-boot/sys/common/static/" + message
           console.log(file)
           console.log(file)
           if (file.type.includes('image')) {
           if (file.type.includes('image')) {
             option.innerHTML += `<div id="option${index + "-" + (option.children.length + 1)}" style="width: 90px;height: 90px;background-color: #0a9fe5;margin: auto;margin-bottom: 10px">
             option.innerHTML += `<div id="option${index + "-" + (option.children.length + 1)}" style="width: 90px;height: 90px;background-color: #0a9fe5;margin: auto;margin-bottom: 10px">
@@ -585,9 +590,9 @@ function addConnectionRow(value) {
 </div>`
 </div>`
           } else if (file.type === 'audio/mpeg') {
           } else if (file.type === 'audio/mpeg') {
             option.innerHTML += `<div id="option${index + "-" + (option.children.length + 1)}" style="width: 90px;height: 90px;overflow: hidden;background-color: #0a9fe5;margin: auto;margin-bottom: 10px">
             option.innerHTML += `<div id="option${index + "-" + (option.children.length + 1)}" style="width: 90px;height: 90px;overflow: hidden;background-color: #0a9fe5;margin: auto;margin-bottom: 10px">
-<audio id="option${index + "-" + (option.children.length + 1)+'1'}" style="width: 320px;height:50px;position: relative;left: -130px" src="${url}"  controls="false"></audio>
-        <button onclick="document.getElementById('option${index + "-" + (option.children.length + 1)+'1'}').play();">开始</button>
-        <button onclick="document.getElementById('option${index + "-" + (option.children.length + 1)+'1'}').pause();">暂停</button>
+<audio id="option${index + "-" + (option.children.length + 1) + '1'}" style="width: 320px;height:50px;position: relative;left: -130px" src="${url}"  controls="false"></audio>
+        <button onclick="document.getElementById('option${index + "-" + (option.children.length + 1) + '1'}').play();">开始</button>
+        <button onclick="document.getElementById('option${index + "-" + (option.children.length + 1) + '1'}').pause();">暂停</button>
 </div>`
 </div>`
           }
           }
 
 
@@ -664,7 +669,7 @@ function addItemImg() {
     formData.append('file', file); // 将文件添加到FormData对象中
     formData.append('file', file); // 将文件添加到FormData对象中
 
 
     var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象
     var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象
-    xhr.open('POST', 'http://10.11.12.101:8080/exam-boot/sys/common/upload', true); // 初始化请求,这里的'/upload'是服务器上处理上传文件的路径
+    xhr.open('POST', 'http://10.11.12.100:8080/exam-boot/sys/common/upload', true); // 初始化请求,这里的'/upload'是服务器上处理上传文件的路径
     xhr.setRequestHeader("x-access-token", getToken())
     xhr.setRequestHeader("x-access-token", getToken())
 
 
     xhr.onload = function (date) {
     xhr.onload = function (date) {
@@ -676,7 +681,7 @@ function addItemImg() {
       //
       //
       var message = JSON.parse(date.target.response).message;
       var message = JSON.parse(date.target.response).message;
       console.log(message)
       console.log(message)
-      url = "http://10.11.12.101:8080/exam-boot/sys/common/static/" + message
+      url = "http://10.11.12.100:8080/exam-boot/sys/common/static/" + message
       tzSize.value.sizeUrl = url
       tzSize.value.sizeUrl = url
       console.log(tzSize.value.sizeUrl)
       console.log(tzSize.value.sizeUrl)
     };
     };
@@ -687,10 +692,11 @@ function addItemImg() {
 }
 }
 
 
 function subOneType7() {
 function subOneType7() {
-
-  formData.value.content = ssaawcBody.value.innerHTML
-
-
+  if (con.value === undefined) {
+    window.alert('题目内容不能为空')
+    return
+  }
+  formData.value.content = con.value + '%||||||||%' + ssaawcBody.value.innerHTML
 }
 }
 
 
 function clean() {
 function clean() {
@@ -831,9 +837,11 @@ async function initFormData() {
       answer.dataSource = formData.value.answerList;
       answer.dataSource = formData.value.answerList;
       answer.columns = blankColumns;
       answer.columns = blankColumns;
     } else if (formData.value.type == 7) {//拖拽
     } else if (formData.value.type == 7) {//拖拽
+      var splitElement = formData.value.content.split("%||||||||%");
+      con.value = splitElement[0]
       console.log(formData.value.content)
       console.log(formData.value.content)
       setTimeout(() => {
       setTimeout(() => {
-        ssaawcBody.value.innerHTML = formData.value.content
+        ssaawcBody.value.innerHTML = splitElement[1]
         var children = ssaawcBody.value.children;
         var children = ssaawcBody.value.children;
         for (let i = 0; i < children.length; i++) {
         for (let i = 0; i < children.length; i++) {
           console.log(children[i].id)
           console.log(children[i].id)
@@ -918,6 +926,9 @@ async function initFormData() {
 initFormData();
 initFormData();
 
 
 async function submitForm(data) {
 async function submitForm(data) {
+  if (currentQuestionType.value==7||currentQuestionType.value==8){
+    subOneType7()
+  }
   let params = Object.assign({}, formData.value, data);
   let params = Object.assign({}, formData.value, data);
   await saveOrUpdate(params);
   await saveOrUpdate(params);
 }
 }

+ 1 - 1
src/views/demo/feat/ws/index.vue

@@ -61,7 +61,7 @@
     },
     },
     setup() {
     setup() {
       const state = reactive({
       const state = reactive({
-        server: 'ws://10.11.12.101:3300/test',
+        server: 'ws://10.11.12.100:3300/test',
         sendValue: '',
         sendValue: '',
         recordList: [] as { id: number; time: number; res: string }[],
         recordList: [] as { id: number; time: number; res: string }[],
       });
       });

+ 12 - 12
src/views/monitor/datasource/datasource.data.ts

@@ -34,36 +34,36 @@ const dbDriverMap = {
 };
 };
 const dbUrlMap = {
 const dbUrlMap = {
   // MySQL 数据库
   // MySQL 数据库
-  '1': { dbUrl: 'jdbc:mysql://10.11.12.101:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false' },
+  '1': { dbUrl: 'jdbc:mysql://10.11.12.100:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false' },
   //MySQL5.7+ 数据库
   //MySQL5.7+ 数据库
   '4': {
   '4': {
     dbUrl:
     dbUrl:
-      'jdbc:mysql://10.11.12.101:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai',
+      'jdbc:mysql://10.11.12.100:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai',
   },
   },
   // Oracle
   // Oracle
-  '2': { dbUrl: 'jdbc:oracle:thin:@10.11.12.101:1521:ORCL' },
+  '2': { dbUrl: 'jdbc:oracle:thin:@10.11.12.100:1521:ORCL' },
   // SQLServer 数据库
   // SQLServer 数据库
-  '3': { dbUrl: 'jdbc:sqlserver://10.11.12.101:1433;SelectMethod=cursor;DatabaseName=jeecgboot' },
+  '3': { dbUrl: 'jdbc:sqlserver://10.11.12.100:1433;SelectMethod=cursor;DatabaseName=jeecgboot' },
   // Mariadb 数据库
   // Mariadb 数据库
-  '5': { dbUrl: 'jdbc:mariadb://10.11.12.101:3306/jeecg-boot?characterEncoding=UTF-8&useSSL=false' },
+  '5': { dbUrl: 'jdbc:mariadb://10.11.12.100:3306/jeecg-boot?characterEncoding=UTF-8&useSSL=false' },
   // Postgresql 数据库
   // Postgresql 数据库
-  '6': { dbUrl: 'jdbc:postgresql://10.11.12.101:5432/jeecg-boot' },
+  '6': { dbUrl: 'jdbc:postgresql://10.11.12.100:5432/jeecg-boot' },
   // 达梦 数据库
   // 达梦 数据库
-  '7': { dbUrl: 'jdbc:dm://10.11.12.101:5236/?jeecg-boot&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8' },
+  '7': { dbUrl: 'jdbc:dm://10.11.12.100:5236/?jeecg-boot&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8' },
   // 人大金仓 数据库
   // 人大金仓 数据库
-  '8': { dbUrl: 'jdbc:kingbase8://10.11.12.101:54321/jeecg-boot' },
+  '8': { dbUrl: 'jdbc:kingbase8://10.11.12.100:54321/jeecg-boot' },
   // 神通 数据库
   // 神通 数据库
   '9': { dbUrl: 'jdbc:oscar://192.168.1.125:2003/jeecg-boot' },
   '9': { dbUrl: 'jdbc:oscar://192.168.1.125:2003/jeecg-boot' },
   // SQLite 数据库
   // SQLite 数据库
   '10': { dbUrl: 'jdbc:sqlite://opt/test.db' },
   '10': { dbUrl: 'jdbc:sqlite://opt/test.db' },
   // DB2 数据库
   // DB2 数据库
-  '11': { dbUrl: 'jdbc:db2://10.11.12.101:50000/jeecg-boot' },
+  '11': { dbUrl: 'jdbc:db2://10.11.12.100:50000/jeecg-boot' },
   // Hsqldb 数据库
   // Hsqldb 数据库
-  '12': { dbUrl: 'jdbc:hsqldb:hsql://10.11.12.101/jeecg-boot' },
+  '12': { dbUrl: 'jdbc:hsqldb:hsql://10.11.12.100/jeecg-boot' },
   // Derby 数据库
   // Derby 数据库
-  '13': { dbUrl: 'jdbc:derby://10.11.12.101:1527/jeecg-boot' },
+  '13': { dbUrl: 'jdbc:derby://10.11.12.100:1527/jeecg-boot' },
   // H2 数据库
   // H2 数据库
-  '14': { dbUrl: 'jdbc:h2:tcp://10.11.12.101:8082/jeecg-boot' },
+  '14': { dbUrl: 'jdbc:h2:tcp://10.11.12.100:8082/jeecg-boot' },
   // 其他数据库
   // 其他数据库
   '15': { dbUrl: '' },
   '15': { dbUrl: '' },
 };
 };

+ 1 - 1
tests/server/index.ts

@@ -59,5 +59,5 @@ app.use(router.allowedMethods());
 app.use(koaStatic(path.join(__dirname)));
 app.use(koaStatic(path.join(__dirname)));
 
 
 app.listen(PORT, () => {
 app.listen(PORT, () => {
-  console.log(`Application started successfully: http://10.11.12.101:${PORT}`);
+  console.log(`Application started successfully: http://10.11.12.100:${PORT}`);
 });
 });

+ 1 - 1
tests/server/service/FileService.ts

@@ -1,7 +1,7 @@
 import path from 'path';
 import path from 'path';
 import fs from 'fs-extra';
 import fs from 'fs-extra';
 
 
-const uploadUrl = 'http://10.11.12.101:3300/static/upload';
+const uploadUrl = 'http://10.11.12.100:3300/static/upload';
 const filePath = path.join(__dirname, '../static/upload/');
 const filePath = path.join(__dirname, '../static/upload/');
 
 
 fs.ensureDir(filePath);
 fs.ensureDir(filePath);